From 00536e444229297e8c94705843a5930b49aa8eb0 Mon Sep 17 00:00:00 2001 From: Jon Lane Date: Mon, 7 Feb 2022 11:56:14 -0800 Subject: [PATCH 001/327] Update instructions for external sites --- packages/js/e2e-environment/external.md | 18 ++++++++++++++---- plugins/woocommerce/tests/e2e/README.md | 2 ++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/js/e2e-environment/external.md b/packages/js/e2e-environment/external.md index a39ff5965bb..a265c0c7649 100644 --- a/packages/js/e2e-environment/external.md +++ b/packages/js/e2e-environment/external.md @@ -1,6 +1,6 @@ -# Using an External Container for End to End Testing +# Using an External Environment for End to End Testing -This document provides general instructions for using `@woocommerce/e2e-environment` with your hosting container. +This document provides general instructions for using `@woocommerce/e2e-environment` with your WooCommerce environment. Whether you're using a non-standard Docker configuration, a locally-hosted WC install, or a WC install hosted externally, these instructions should point you to what is needed for configuration. ## Prerequisites @@ -14,10 +14,11 @@ The test sequencer uses a `ready` page to determine that the testing environment wp post create --post_type=page --post_status=publish --post_title='Ready' --post_content='E2E-tests.' ``` +If you don't have shell access to your test site, simply create a Page with the title `Ready` and the content `E2E-tests.` through the WP Admin. + ### Project Initialization -Each project will have its own begin test state and initialization script. For example, a project might start testing expecting that the [sample products](https://github.com/woocommerce/woocommerce/tree/trunk/sample-data) have already been imported. Below is the WP CLI equivalent initialization script for WooCommerce Core E2E testing: - +Each project will have its own begin test state and initialization script. For example, a project might start testing expecting that the [sample products](https://github.com/woocommerce/woocommerce/tree/trunk/sample-data) have already been imported. Below is the WP CLI equivalent initialization script for WooCommerce Core E2E testing (which expects certain users to be present and that WC is installed and active): ``` wp core install --url=http://localhost:8084 --admin_user=admin --admin_password=password --admin_email=wooadmin@example.org @@ -30,6 +31,15 @@ wp user create customer customer@woocommercecoree2etestsuite.com \ --last_name='Smith' ``` +Again, if you don't have shell access to your test site, through WP Admin ensure that: + +1. WooCommerce is installed and activated. +2. TwentyNineteen is installed and the active theme. +3. You have an admin user set up (if their credentials differ from u/ `admin` and p/ `password` be sure to update `/plugins/woocommerce/tests/e2e/config/default.json`) +4. You have a customer user set up named 'Jane Smith'. This user should be a `subscriber` and again make sure their username and password are reflected in `/plugins/woocommerce/tests/e2e/config/default.json`. + +You should then be able to run the e2e tests by running `pnpm nx test-e2e woocommerce`. + ### Test Sequencer Setup The test sequencer needs to know the particulars of your test install to run the tests. The sequencer reads these settings from `/plugins/woocommerce/tests/e2e/config/default.json`. diff --git a/plugins/woocommerce/tests/e2e/README.md b/plugins/woocommerce/tests/e2e/README.md index 0f734809c01..b691b1d4ca2 100644 --- a/plugins/woocommerce/tests/e2e/README.md +++ b/plugins/woocommerce/tests/e2e/README.md @@ -87,6 +87,8 @@ The jest test sequencer uses the following test variables: If you need to modify the port for your local test environment (eg. port is already in use), edit `tests/e2e/config/default.json`. Only edit this file while your test container is `down`. +This is also what you'll need to edit if you want to run tests against an external (or non-Docker) environment. There are a few additional steps you'll have to take to ensure your environment is ready for testing. Complete [instructions are available here](https://github.com/woocommerce/woocommerce/blob/trunk/packages/js/e2e-environment/external.md). + ### Jest test sequencer [Jest](https://jestjs.io/) is being used to run e2e tests. Jest sequencer introduces tools that can be used to specify the order in which the tests are being run. In our case, they are being run in alphabetical order of the directories where tests are located. This way, tests in the directory `activate-and-setup` will run first. By default, jest runs tests ordered by the time it takes to run the test (the test that takes longer to run will be run first, the test that takes less time to run will run last). From ad99dda9105b2dc897406d61262e2dc906044406 Mon Sep 17 00:00:00 2001 From: Jon Lane Date: Mon, 7 Feb 2022 13:14:10 -0800 Subject: [PATCH 002/327] Added CHANGELOG entry --- packages/js/e2e-environment/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/js/e2e-environment/CHANGELOG.md b/packages/js/e2e-environment/CHANGELOG.md index 92147037877..03070024935 100644 --- a/packages/js/e2e-environment/CHANGELOG.md +++ b/packages/js/e2e-environment/CHANGELOG.md @@ -18,6 +18,7 @@ ## Changed +- Updated `external.md` with instructions to manually set up sites for e2e testing. - Updated `getLatestReleaseZipUrl()` to allow passing in an authorization token and simplified arguments to just the repository name - Updated `deleteDownloadedPluginFiles()` to also be able to delete directories. From 491a04b52ddde577bc6b1d54411b530a62f82539 Mon Sep 17 00:00:00 2001 From: Alex Florisca Date: Thu, 17 Feb 2022 15:43:28 +0000 Subject: [PATCH 003/327] Fix link click for shopper.searchForProduct --- packages/js/e2e-utils/src/flows/shopper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/e2e-utils/src/flows/shopper.js b/packages/js/e2e-utils/src/flows/shopper.js index 3f9e2cb43ff..55337b48caf 100644 --- a/packages/js/e2e-utils/src/flows/shopper.js +++ b/packages/js/e2e-utils/src/flows/shopper.js @@ -186,7 +186,7 @@ const shopper = { // Single search results may go directly to product page if ( await page.waitForSelector('h2.entry-title') ) { await expect(page).toMatchElement('h2.entry-title', {text: prouductName}); - await expect(page).toClick('h2.entry-title', {text: prouductName}); + await expect(page).toClick('h2.entry-title > a', {text: prouductName}); } await page.waitForSelector('h1.entry-title'); await expect(page.title()).resolves.toMatch(prouductName); From 5fbebe240ce28f01eb3c813c53488aae6cc28816 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Thu, 7 Apr 2022 15:43:10 +0200 Subject: [PATCH 004/327] Remove duplicate entry `verifyAndPublish` --- packages/js/e2e-utils/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/js/e2e-utils/README.md b/packages/js/e2e-utils/README.md index b8d34e6721d..fadce859f05 100644 --- a/packages/js/e2e-utils/README.md +++ b/packages/js/e2e-utils/README.md @@ -237,7 +237,6 @@ There is a general utilities object `utils` with the following functions: | `verifyValueOfInputField` | `selector, value` | Verify an input contains the passed value | | `clickFilter` | `selector` | Click on a list page filter | | `moveAllItemsToTrash` | | Moves all items in a list view to the Trash | -| `verifyAndPublish` | `noticeText` | Verify that an item can be published | | `selectOptionInSelect2` | `selector, value` | helper method that searchs for select2 type fields and select plus insert value inside | | `searchForOrder` | `value, orderId, customerName` | helper method that searchs for an order via many different terms | | `addShippingZoneAndMethod` | `zoneName, zoneLocation, zipCode, zoneMethod` | util helper method for adding shipping zones with shipping methods | From 1c162a14d2911774b3a06a178ad55002726318b5 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 7 Apr 2022 17:19:25 -0700 Subject: [PATCH 005/327] Updating all instances of pnpx to pnpm dlx/exec --- .github/workflows/pr-build-and-e2e-tests.yml | 18 +- .github/workflows/pr-smoke-test.yml | 198 +++++----- .github/workflows/smoke-test-daily.yml | 273 +++++++------- .github/workflows/smoke-test-release.yml | 354 +++++++++--------- .../js/api-core-tests/bin/wc-api-tests.sh | 2 +- packages/js/e2e-environment/README.md | 2 +- packages/js/e2e-environment/builtin.md | 2 +- plugins/woocommerce/legacy/project.json | 6 +- plugins/woocommerce/package.json | 216 +++++------ plugins/woocommerce/project.json | 2 +- plugins/woocommerce/tests/e2e/README.md | 4 +- 11 files changed, 537 insertions(+), 540 deletions(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 328549ec59a..de213e34671 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -68,7 +68,7 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -76,7 +76,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.E2E_SLACK_CHANNEL }} - run: pnpx wc-e2e test:e2e + run: pnpm exec wc-e2e test:e2e - name: Archive E2E test screenshots uses: actions/upload-artifact@v2 @@ -127,7 +127,7 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -135,15 +135,15 @@ jobs: BASE_URL: http://localhost:8084 USER_KEY: admin USER_SECRET: password - run: pnpx wc-api-tests test api + run: pnpm exec wc-api-tests test api - name: Upload API test report uses: actions/upload-artifact@v2 with: name: api-test-report---pr-${{ github.event.number }} path: | - package/woocommerce/packages/js/api-core-tests/allure-results - package/woocommerce/packages/js/api-core-tests/allure-report + package/woocommerce/packages/js/api-core-tests/allure-results + package/woocommerce/packages/js/api-core-tests/allure-report retention-days: 7 k6-tests-run: @@ -182,15 +182,15 @@ jobs: run: | npm install -g pnpm pnpm install - + - name: Workaround to use initialization file with prepopulated data. working-directory: package/woocommerce/plugins/woocommerce/tests/e2e/docker run: | cp init-sample-products.sh initialize.sh - + - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Install k6 run: | diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 18afd599b05..933038e8a59 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -1,110 +1,110 @@ name: Run smoke tests against pull request. on: - pull_request: - branches: - - trunk - types: - - labeled + pull_request: + branches: + - trunk + types: + - labeled jobs: - prcheck: - name: Smoke test a pull request. - if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" - runs-on: ubuntu-18.04 - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} + prcheck: + name: Smoke test a pull request. + if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" + runs-on: ubuntu-18.04 + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.7.0 + with: + access_token: ${{ github.token }} - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - id: installation - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + id: installation + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - if: always() - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + if: always() + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - - name: Post Smoke tests results comment on PR - if: always() - uses: actions/github-script@v5 - env: - TITLE: 'Smoke Test Results' - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) - await script({github, context}) + - name: Post Smoke tests results comment on PR + if: always() + uses: actions/github-script@v5 + env: + TITLE: 'Smoke Test Results' + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) + await script({github, context}) - - name: Run E2E tests. - working-directory: package/woocommerce/plugins/woocommerce - if: always() - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - run: | - pnpx wc-e2e test:e2e + - name: Run E2E tests. + working-directory: package/woocommerce/plugins/woocommerce + if: always() + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + run: | + pnpm exec wc-e2e test:e2e - - name: Post E2E tests results comment on PR - if: always() - uses: actions/github-script@v5 - env: - TITLE: 'E2E Test Results' - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) - await script({github, context}) + - name: Post E2E tests results comment on PR + if: always() + uses: actions/github-script@v5 + env: + TITLE: 'E2E Test Results' + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const script = require( './package/woocommerce/packages/js/e2e-environment/bin/post-results-to-github-pr.js' ) + await script({github, context}) - - name: Remove label from pull request. - if: | - always() - && contains( github.event.pull_request.labels.*.name, format('run{0} smoke tests', ':')) - uses: actions-ecosystem/action-remove-labels@v1 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - labels: 'run: smoke tests' + - name: Remove label from pull request. + if: | + always() + && contains( github.event.pull_request.labels.*.name, format('run{0} smoke tests', ':')) + uses: actions-ecosystem/action-remove-labels@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + labels: 'run: smoke tests' diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index e9126b249b2..bd6b2fd693e 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -1,154 +1,153 @@ name: Smoke test daily on: - schedule: - - cron: '25 3 * * *' + schedule: + - cron: '25 3 * * *' jobs: - login-run: - name: Daily smoke test on trunk. - runs-on: ubuntu-18.04 - steps: + login-run: + name: Daily smoke test on trunk. + runs-on: ubuntu-18.04 + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + ref: trunk - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - ref: trunk + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest - - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - env: - SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - BASE_URL: ${{ secrets.SMOKE_TEST_URL }} - USER_KEY: ${{ secrets.SMOKE_TEST_ADMIN_USER }} - USER_SECRET: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - pnpx wc-e2e test:e2e - pnpx wc-api-tests test api + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + env: + SMOKE_TEST_URL: ${{ secrets.SMOKE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.SMOKE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.SMOKE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.SMOKE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + BASE_URL: ${{ secrets.SMOKE_TEST_URL }} + USER_KEY: ${{ secrets.SMOKE_TEST_ADMIN_USER }} + USER_SECRET: ${{ secrets.SMOKE_TEST_ADMIN_PASSWORD }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + pnpm exec wc-e2e test:e2e + pnpm exec wc-api-tests test api - build: - name: Build zip for PR - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 + build: + name: Build zip for PR + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 - - name: Build - id: build - uses: woocommerce/action-build@trunk - env: - BUILD_ENV: e2e + - name: Build + id: build + uses: woocommerce/action-build@trunk + env: + BUILD_ENV: e2e - - name: Upload PR zip - uses: actions/upload-artifact@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - name: woocommerce - path: ${{ steps.build.outputs.zip_path }} - retention-days: 7 - - test-plugins: - name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 - needs: [build] - strategy: - fail-fast: false - matrix: - include: - - plugin: 'WooCommerce Payments' - repo: 'automattic/woocommerce-payments' - - plugin: 'WooCommerce PayPal Payments' - repo: 'woocommerce/woocommerce-paypal-payments' - - plugin: 'WooCommerce Shipping & Tax' - repo: 'automattic/woocommerce-services' - - plugin: 'WooCommerce Subscriptions' - repo: WC_SUBSCRIPTIONS_REPO - private: true - - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo - repo: 'Yoast/wordpress-seo' - - plugin: 'Contact Form 7' - repo: 'takayukister/contact-form-7' - steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Upload PR zip + uses: actions/upload-artifact@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + name: woocommerce + path: ${{ steps.build.outputs.zip_path }} + retention-days: 7 - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + needs: [build] + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'automattic/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + run: pnpm exec wc-e2e docker:up - - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 - with: - name: woocommerce - path: tmp + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Extract and replace WooCommerce zip. - working-directory: tmp - run: | - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Download WooCommerce ZIP. + uses: actions/download-artifact@v2 + with: + name: woocommerce + path: tmp - - name: Install dependencies again - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Extract and replace WooCommerce zip. + working-directory: tmp + run: | + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} - PLUGIN_NAME: ${{ matrix.plugin }} - GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js - pnpx wc-e2e test:e2e + - name: Install dependencies again + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install + + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm exec wc-e2e test:e2e diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 840cd4ab570..fafb41b704f 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -1,199 +1,197 @@ name: Smoke test release on: - workflow_dispatch: - inputs: - release_id: - description: 'WooCommerce Release Id' - required: true + workflow_dispatch: + inputs: + release_id: + description: 'WooCommerce Release Id' + required: true jobs: - login-run: - name: Daily smoke test on release. - runs-on: ubuntu-18.04 - steps: + login-run: + name: Daily smoke test on release. + runs-on: ubuntu-18.04 + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + ref: trunk - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - ref: trunk + - name: Install prerequisites. + working-directory: package/woocommerce/plugins/woocommerce + run: | + npm install -g pnpm + pnpm install + pnpm nx composer-install-no-dev woocommerce + pnpm nx build-assets woocommerce + pnpm install jest - - name: Install prerequisites. - working-directory: package/woocommerce/plugins/woocommerce - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce - pnpm nx build-assets woocommerce - pnpm install jest - - - name: Run smoke test. - working-directory: package/woocommerce/plugins/woocommerce - env: - SMOKE_TEST_URL: ${{ secrets.RELEASE_TEST_URL }} - SMOKE_TEST_ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} - SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} - SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.RELEASE_TEST_ADMIN_USER_EMAIL }} - SMOKE_TEST_CUSTOMER_USER: ${{ secrets.RELEASE_TEST_CUSTOMER_USER }} - SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.RELEASE_TEST_CUSTOMER_PASSWORD }} - WC_E2E_SCREENSHOTS: 1 - E2E_RETEST: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - TEST_RELEASE: 1 - UPDATE_WC: 1 - DEFAULT_TIMEOUT_OVERRIDE: 120000 - BASE_URL: ${{ secrets.RELEASE_TEST_URL }} - USER_KEY: ${{ secrets.RELEASE_TEST_ADMIN_USER }} - USER_SECRET: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js - pnpx wc-e2e test:e2e - pnpx wc-api-tests test api - test-wp-version: - name: Smoke test on L-${{ matrix.wp }} WordPress version - runs-on: ubuntu-18.04 - strategy: - matrix: - wp: [ '1', '2' ] - steps: + - name: Run smoke test. + working-directory: package/woocommerce/plugins/woocommerce + env: + SMOKE_TEST_URL: ${{ secrets.RELEASE_TEST_URL }} + SMOKE_TEST_ADMIN_USER: ${{ secrets.RELEASE_TEST_ADMIN_USER }} + SMOKE_TEST_ADMIN_PASSWORD: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} + SMOKE_TEST_ADMIN_USER_EMAIL: ${{ secrets.RELEASE_TEST_ADMIN_USER_EMAIL }} + SMOKE_TEST_CUSTOMER_USER: ${{ secrets.RELEASE_TEST_CUSTOMER_USER }} + SMOKE_TEST_CUSTOMER_PASSWORD: ${{ secrets.RELEASE_TEST_CUSTOMER_PASSWORD }} + WC_E2E_SCREENSHOTS: 1 + E2E_RETEST: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + TEST_RELEASE: 1 + UPDATE_WC: 1 + DEFAULT_TIMEOUT_OVERRIDE: 120000 + BASE_URL: ${{ secrets.RELEASE_TEST_URL }} + USER_KEY: ${{ secrets.RELEASE_TEST_ADMIN_USER }} + USER_SECRET: ${{ secrets.RELEASE_TEST_ADMIN_PASSWORD }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/update-woocommerce.js + pnpm exec wc-e2e test:e2e + pnpm exec wc-api-tests test api + test-wp-version: + name: Smoke test on L-${{ matrix.wp }} WordPress version + runs-on: ubuntu-18.04 + strategy: + matrix: + wp: ['1', '2'] + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + - name: Fetch Asset ID + id: fetch_asset_id + uses: actions/github-script@v5 + env: + RELEASE_ID: ${{ github.event.inputs.release_id }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + with: + script: | + const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) + await script({github, context, core}) - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - - name: Fetch Asset ID - id: fetch_asset_id - uses: actions/github-script@v5 - env: - RELEASE_ID: ${{ github.event.inputs.release_id }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - with: - script: | - const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) - await script({github, context, core}) + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + env: + LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} + run: pnpm nx docker-up woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - env: - LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} - run: pnpm nx docker-up woocommerce + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Download WooCommerce release zip + working-directory: tmp + run: | + curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' - - name: Download WooCommerce release zip - working-directory: tmp - run: | - curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + run: pnpm nx test-e2e woocommerce - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - run: pnpm nx test-e2e woocommerce + test-plugins: + name: Smoke tests with ${{ matrix.plugin }} plugin installed + runs-on: ubuntu-18.04 + strategy: + fail-fast: false + matrix: + include: + - plugin: 'WooCommerce Payments' + repo: 'automattic/woocommerce-payments' + - plugin: 'WooCommerce PayPal Payments' + repo: 'woocommerce/woocommerce-paypal-payments' + - plugin: 'WooCommerce Shipping & Tax' + repo: 'automattic/woocommerce-services' + - plugin: 'WooCommerce Subscriptions' + repo: WC_SUBSCRIPTIONS_REPO + private: true + - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo + repo: 'Yoast/wordpress-seo' + - plugin: 'Contact Form 7' + repo: 'takayukister/contact-form-7' + steps: + - name: Create dirs. + run: | + mkdir -p code/woocommerce + mkdir -p package/woocommerce + mkdir -p tmp/woocommerce + mkdir -p node_modules - test-plugins: - name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 - strategy: - fail-fast: false - matrix: - include: - - plugin: 'WooCommerce Payments' - repo: 'automattic/woocommerce-payments' - - plugin: 'WooCommerce PayPal Payments' - repo: 'woocommerce/woocommerce-paypal-payments' - - plugin: 'WooCommerce Shipping & Tax' - repo: 'automattic/woocommerce-services' - - plugin: 'WooCommerce Subscriptions' - repo: WC_SUBSCRIPTIONS_REPO - private: true - - plugin: 'WordPress SEO' # Yoast SEO in the UI, but the slug is wordpress-seo - repo: 'Yoast/wordpress-seo' - - plugin: 'Contact Form 7' - repo: 'takayukister/contact-form-7' - steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. + uses: actions/checkout@v2 + with: + path: package/woocommerce + - name: Fetch Asset ID + id: fetch_asset_id + uses: actions/github-script@v5 + env: + RELEASE_ID: ${{ github.event.inputs.release_id }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + with: + script: | + const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) + await script({github, context, core}) - - name: Checkout code. - uses: actions/checkout@v2 - with: - path: package/woocommerce - - name: Fetch Asset ID - id: fetch_asset_id - uses: actions/github-script@v5 - env: - RELEASE_ID: ${{ github.event.inputs.release_id }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - with: - script: | - const script = require( './package/woocommerce/.github/workflows/scripts/fetch-asset-id.js' ) - await script({github, context, core}) + - name: Install PNPM and install dependencies + working-directory: package/woocommerce + run: | + npm install -g pnpm + pnpm install - - name: Install PNPM and install dependencies - working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + - name: Load docker images and start containers. + working-directory: package/woocommerce/plugins/woocommerce + env: + LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} + run: pnpm nx docker-up woocommerce - - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce - env: - LATEST_WP_VERSION_MINUS: ${{ matrix.wp }} - run: pnpm nx docker-up woocommerce + - name: Move current directory to code. We will install zip file in this dir later. + run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce + - name: Download WooCommerce release zip + working-directory: tmp + run: | + curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' - - name: Download WooCommerce release zip - working-directory: tmp - run: | - curl https://api.github.com/repos/${{ github.repository }}/releases/assets/${{ steps.fetch_asset_id.outputs.asset_id }} -LJOH 'Accept: application/octet-stream' + unzip woocommerce.zip -d woocommerce + mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - - - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce - env: - WC_E2E_SCREENSHOTS: 1 - E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} - PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} - PLUGIN_NAME: ${{ matrix.plugin }} - GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} - run: | - pnpx wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js - pnpx wc-e2e test:e2e + - name: Run tests command. + working-directory: package/woocommerce/plugins/woocommerce + env: + WC_E2E_SCREENSHOTS: 1 + E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + PLUGIN_REPOSITORY: ${{ matrix.private && secrets[matrix.repo] || matrix.repo }} + PLUGIN_NAME: ${{ matrix.plugin }} + GITHUB_TOKEN: ${{ secrets.E2E_GH_TOKEN }} + run: | + pnpm exec wc-e2e test:e2e tests/e2e/specs/smoke-tests/upload-plugin.js + pnpm exec wc-e2e test:e2e diff --git a/packages/js/api-core-tests/bin/wc-api-tests.sh b/packages/js/api-core-tests/bin/wc-api-tests.sh index fdbcd78bc70..24054b1bc2b 100755 --- a/packages/js/api-core-tests/bin/wc-api-tests.sh +++ b/packages/js/api-core-tests/bin/wc-api-tests.sh @@ -38,7 +38,7 @@ report() { if [[ $REPORT_EXIT_CODE -eq 0 && $GITHUB_ACTIONS != "true" ]]; then echo "To view the report on your browser, run:" echo "" - echo "pnpx allure open \"$ALLURE_REPORT_DIR\"" + echo "pnpm dlx allure open \"$ALLURE_REPORT_DIR\"" echo "" fi } diff --git a/packages/js/e2e-environment/README.md b/packages/js/e2e-environment/README.md index ae8a3df1506..7093a98bd53 100644 --- a/packages/js/e2e-environment/README.md +++ b/packages/js/e2e-environment/README.md @@ -95,7 +95,7 @@ The E2E environment has the following methods to let us control Jest's overall b **NOTE:** The amount of times failed tests are retried can also be set using the `E2E_RETRY_TIMES` environment variable when executing tests. This can be done using the command below: ``` -E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +E2E_RETRY_TIMES=2 pnpm exec wc-e2e test:e2e ``` #### Test Screenshots diff --git a/packages/js/e2e-environment/builtin.md b/packages/js/e2e-environment/builtin.md index 683e4269001..3f76a8a8332 100644 --- a/packages/js/e2e-environment/builtin.md +++ b/packages/js/e2e-environment/builtin.md @@ -52,7 +52,7 @@ wp plugin install wp-mail-logging --activate The container build script supports an initialization script parameter ```shell script -pnpx wc-e2e docker:up plugins/woocommerce/tests/e2e/docker/init-wp-beta.sh +pnpm exec wc-e2e docker:up plugins/woocommerce/tests/e2e/docker/init-wp-beta.sh ``` This script updates WordPress to the latest nightly point release diff --git a/plugins/woocommerce/legacy/project.json b/plugins/woocommerce/legacy/project.json index 7043c74e3f2..9538e820d22 100644 --- a/plugins/woocommerce/legacy/project.json +++ b/plugins/woocommerce/legacy/project.json @@ -9,7 +9,7 @@ "options": { "commands": [ { - "command": "pnpx grunt assets", + "command": "pnpm dlx grunt assets", "forwardAllArgs": false } ], @@ -25,11 +25,11 @@ "options": { "commands": [ { - "command": "pnpx grunt eslint", + "command": "pnpm dlx grunt eslint", "forwardAllArgs": false }, { - "command": "pnpx grunt stylelint", + "command": "pnpm dlx grunt stylelint", "forwardAllArgs": false } ], diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 544ac1b7efa..f24441429ae 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -1,110 +1,110 @@ { - "name": "woocommerce", - "title": "WooCommerce", - "version": "6.4.0", - "homepage": "https://woocommerce.com/", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "config": { - "wp_org_slug": "woocommerce" - }, - "scripts": { - "preinstall": "npx only-allow pnpm", - "build": "./bin/build-zip.sh", - "build:feature-config": "php bin/generate-feature-config.php", - "build:core": "pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", - "build:zip": "pnpm run build", - "lint:js": "eslint assets/js --ext=js", - "docker:down": "pnpx wc-e2e docker:down", - "docker:ssh": "pnpx wc-e2e docker:ssh", - "docker:up": "pnpx wc-e2e docker:up", - "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpx wc-api-tests test api", - "make:collection": "pnpx wc-api-tests make:collection", - "test:e2e": "pnpx wc-e2e test:e2e", - "test:e2e-debug": "pnpx wc-e2e test:e2e-debug", - "test:e2e-dev": "pnpx wc-e2e test:e2e-dev", - "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", - "makepot": "composer run-script makepot", - "packages:fix:textdomain": "node ./bin/package-update-textdomain.js", - "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && node ./node_modules/husky/husky.js install" - }, - "devDependencies": { - "@babel/cli": "7.12.8", - "@babel/core": "7.12.9", - "@babel/preset-env": "7.12.7", - "@babel/register": "7.12.1", - "@typescript-eslint/eslint-plugin": "3.10.1", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/parser": "3.10.1", - "@woocommerce/admin-e2e-tests": "workspace:*", - "@woocommerce/api": "workspace:*", - "@woocommerce/api-core-tests": "workspace:*", - "@woocommerce/e2e-core-tests": "workspace:*", - "@woocommerce/e2e-environment": "workspace:*", - "@woocommerce/e2e-utils": "workspace:*", - "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", - "@wordpress/babel-preset-default": "3.0.2", - "@wordpress/eslint-plugin": "7.3.0", - "@wordpress/stylelint-config": "19.1.0", - "allure-commandline": "^2.17.2", - "autoprefixer": "9.8.6", - "babel-eslint": "10.1.0", - "chai": "4.2.0", - "chai-as-promised": "7.1.1", - "config": "3.3.3", - "cross-env": "6.0.3", - "deasync": "0.1.21", - "eslint": "6.8.0", - "eslint-config-wpcalypso": "5.0.0", - "eslint-plugin-jest": "23.20.0", - "github-contributors-list": "https://github.com/woocommerce/github-contributors-list/tarball/master", - "husky": "4.3.0", - "istanbul": "1.0.0-alpha.2", - "jest": "^25.1.0", - "lint-staged": "9.5.0", - "mocha": "7.2.0", - "prettier": "npm:wp-prettier@2.0.5", - "stylelint": "^13.8.0", - "typescript": "3.9.7", - "webpack": "4.44.2", - "webpack-cli": "3.3.12", - "wp-textdomain": "1.0.1" - }, - "engines": { - "node": "^16.13.1", - "pnpm": "^6.24.2" - }, - "husky": { - "hooks": { - "post-merge": "./bin/post-merge.sh", - "pre-commit": "lint-staged", - "pre-push": "./bin/pre-push.sh" - } - }, - "lint-staged": { - "*.php": [ - "php -d display_errors=1 -l", - "composer run-script phpcs-pre-commit" - ], - "*.scss": [ - "stylelint --syntax=scss --fix", - "git add" - ], - "*.js": [ - "eslint --fix", - "git add" - ], - "*.ts": [ - "eslint --fix", - "git add" - ] - }, - "browserslist": [ - "> 0.1%", - "ie 8", - "ie 9" - ] + "name": "woocommerce", + "title": "WooCommerce", + "version": "6.4.0", + "homepage": "https://woocommerce.com/", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "config": { + "wp_org_slug": "woocommerce" + }, + "scripts": { + "preinstall": "npx only-allow pnpm", + "build": "./bin/build-zip.sh", + "build:feature-config": "php bin/generate-feature-config.php", + "build:core": "pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", + "build:zip": "pnpm run build", + "lint:js": "eslint assets/js --ext=js", + "docker:down": "pnpm exec wc-e2e docker:down", + "docker:ssh": "pnpm exec wc-e2e docker:ssh", + "docker:up": "pnpm exec wc-e2e docker:up", + "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api", + "make:collection": "pnpm exec wc-api-tests make:collection", + "test:e2e": "pnpm exec wc-e2e test:e2e", + "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", + "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", + "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", + "makepot": "composer run-script makepot", + "packages:fix:textdomain": "node ./bin/package-update-textdomain.js", + "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && node ./node_modules/husky/husky.js install" + }, + "devDependencies": { + "@babel/cli": "7.12.8", + "@babel/core": "7.12.9", + "@babel/preset-env": "7.12.7", + "@babel/register": "7.12.1", + "@typescript-eslint/eslint-plugin": "3.10.1", + "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/parser": "3.10.1", + "@woocommerce/admin-e2e-tests": "workspace:*", + "@woocommerce/api": "workspace:*", + "@woocommerce/api-core-tests": "workspace:*", + "@woocommerce/e2e-core-tests": "workspace:*", + "@woocommerce/e2e-environment": "workspace:*", + "@woocommerce/e2e-utils": "workspace:*", + "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", + "@wordpress/babel-preset-default": "3.0.2", + "@wordpress/eslint-plugin": "7.3.0", + "@wordpress/stylelint-config": "19.1.0", + "allure-commandline": "^2.17.2", + "autoprefixer": "9.8.6", + "babel-eslint": "10.1.0", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "config": "3.3.3", + "cross-env": "6.0.3", + "deasync": "0.1.21", + "eslint": "6.8.0", + "eslint-config-wpcalypso": "5.0.0", + "eslint-plugin-jest": "23.20.0", + "github-contributors-list": "https://github.com/woocommerce/github-contributors-list/tarball/master", + "husky": "4.3.0", + "istanbul": "1.0.0-alpha.2", + "jest": "^25.1.0", + "lint-staged": "9.5.0", + "mocha": "7.2.0", + "prettier": "npm:wp-prettier@2.0.5", + "stylelint": "^13.8.0", + "typescript": "3.9.7", + "webpack": "4.44.2", + "webpack-cli": "3.3.12", + "wp-textdomain": "1.0.1" + }, + "engines": { + "node": "^16.13.1", + "pnpm": "^6.24.2" + }, + "husky": { + "hooks": { + "post-merge": "./bin/post-merge.sh", + "pre-commit": "lint-staged", + "pre-push": "./bin/pre-push.sh" + } + }, + "lint-staged": { + "*.php": [ + "php -d display_errors=1 -l", + "composer run-script phpcs-pre-commit" + ], + "*.scss": [ + "stylelint --syntax=scss --fix", + "git add" + ], + "*.js": [ + "eslint --fix", + "git add" + ], + "*.ts": [ + "eslint --fix", + "git add" + ] + }, + "browserslist": [ + "> 0.1%", + "ie 8", + "ie 9" + ] } diff --git a/plugins/woocommerce/project.json b/plugins/woocommerce/project.json index bc0737df1d6..8bdfd0fb71f 100644 --- a/plugins/woocommerce/project.json +++ b/plugins/woocommerce/project.json @@ -65,7 +65,7 @@ "watch-assets": { "executor": "@nrwl/workspace:run-commands", "options": { - "command": "pnpx grunt watch", + "command": "pnpm dlx grunt watch", "cwd": "plugins/woocommerce/legacy" } }, diff --git a/plugins/woocommerce/tests/e2e/README.md b/plugins/woocommerce/tests/e2e/README.md index 4ecb3d44d54..f9161e3df56 100644 --- a/plugins/woocommerce/tests/e2e/README.md +++ b/plugins/woocommerce/tests/e2e/README.md @@ -193,7 +193,7 @@ Sometimes tests may fail for different reasons such as network issues, or lost c ``` cd plugins/woocommerce -E2E_RETRY_TIMES=2 pnpx wc-e2e test:e2e +E2E_RETRY_TIMES=2 pnpm exec wc-e2e test:e2e ``` ### How to run tests in debug mode @@ -212,7 +212,7 @@ To run an individual test, use the direct path to the spec. For example: ```bash cd plugins/woocommerce -pnpx wc-e2e test:e2e ./tests/e2e/specs/wp-admin/create-order.test.js +pnpm exec wc-e2e test:e2e ./tests/e2e/specs/wp-admin/create-order.test.js ``` ### How to skip tests From cdc79019823f37f6593acb5847831d96f2732b38 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 7 Apr 2022 17:20:40 -0700 Subject: [PATCH 006/327] Adding changelog --- plugins/woocommerce/changelog/update-32508_pnpx_deprecated | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-32508_pnpx_deprecated diff --git a/plugins/woocommerce/changelog/update-32508_pnpx_deprecated b/plugins/woocommerce/changelog/update-32508_pnpx_deprecated new file mode 100644 index 00000000000..e8010152980 --- /dev/null +++ b/plugins/woocommerce/changelog/update-32508_pnpx_deprecated @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Updating instance of now-deprecated pnpx to pnpm dlx/exec From 0acf54ab257e17b70e78da7447869c110d5d6e33 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 8 Apr 2022 13:20:34 -0700 Subject: [PATCH 007/327] Reduce risk of prematurely dropping meta box error messages. --- .../admin/class-wc-admin-meta-boxes.php | 32 +++++++- .../woocommerce/includes/class-wc-ajax.php | 2 +- .../admin/class-wc-admin-meta-boxes-test.php | 73 +++++++++++++++++++ 3 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 plugins/woocommerce/tests/php/includes/admin/class-wc-admin-meta-boxes-test.php diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-meta-boxes.php b/plugins/woocommerce/includes/admin/class-wc-admin-meta-boxes.php index b8c39253cf3..1929298decb 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-meta-boxes.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-meta-boxes.php @@ -15,6 +15,12 @@ defined( 'ABSPATH' ) || exit; * WC_Admin_Meta_Boxes. */ class WC_Admin_Meta_Boxes { + /** + * Name of the option used to store errors to be displayed at the next suitable opportunity. + * + * @since 6.5.0 + */ + public const ERROR_STORE = 'woocommerce_meta_box_errors'; /** * Is meta boxes saved once? @@ -66,7 +72,7 @@ class WC_Admin_Meta_Boxes { // Error handling (for showing errors from meta boxes on next page load). add_action( 'admin_notices', array( $this, 'output_errors' ) ); - add_action( 'shutdown', array( $this, 'save_errors' ) ); + add_action( 'shutdown', array( $this, 'append_to_error_store' ) ); add_filter( 'theme_product_templates', array( $this, 'remove_block_templates' ), 10, 1 ); } @@ -82,16 +88,34 @@ class WC_Admin_Meta_Boxes { /** * Save errors to an option. + * + * Note that calling this will overwrite any errors that have already been stored via the Options API. + * Unless you are sure you want this, consider using the append_to_error_store() method instead. */ public function save_errors() { - update_option( 'woocommerce_meta_box_errors', self::$meta_box_errors ); + update_option( self::ERROR_STORE, self::$meta_box_errors ); + } + + /** + * If additional errors have been added in the current request (ie, via the add_error() method) then they + * will be added to the persistent error store via the Options API. + * + * @since 6.5.0 + */ + public function append_to_error_store() { + if ( empty( self::$meta_box_errors ) ) { + return; + } + + $existing_errors = get_option( self::ERROR_STORE, array() ); + update_option( self::ERROR_STORE, array_unique( array_merge( $existing_errors, self::$meta_box_errors ) ) ); } /** * Show any stored error messages. */ public function output_errors() { - $errors = array_filter( (array) get_option( 'woocommerce_meta_box_errors' ) ); + $errors = array_filter( (array) get_option( self::ERROR_STORE ) ); if ( ! empty( $errors ) ) { @@ -104,7 +128,7 @@ class WC_Admin_Meta_Boxes { echo ''; // Clear. - delete_option( 'woocommerce_meta_box_errors' ); + delete_option( self::ERROR_STORE ); } } diff --git a/plugins/woocommerce/includes/class-wc-ajax.php b/plugins/woocommerce/includes/class-wc-ajax.php index 5b8229faef5..615fc902f95 100644 --- a/plugins/woocommerce/includes/class-wc-ajax.php +++ b/plugins/woocommerce/includes/class-wc-ajax.php @@ -2226,7 +2226,7 @@ class WC_AJAX { echo ''; echo ''; - delete_option( 'woocommerce_meta_box_errors' ); + delete_option( WC_Admin_Meta_Boxes::ERROR_STORE ); } wp_die(); diff --git a/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-meta-boxes-test.php b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-meta-boxes-test.php new file mode 100644 index 00000000000..eb1f278bb43 --- /dev/null +++ b/plugins/woocommerce/tests/php/includes/admin/class-wc-admin-meta-boxes-test.php @@ -0,0 +1,73 @@ +sut = new WC_Admin_Meta_Boxes(); + parent::set_up(); + } + + /** + * @testdox Test that meta box errors can be stored and retrieved as expected. + */ + public function test_persistence_of_meta_box_errors() { + WC_Admin_Meta_Boxes::add_error( 'Oh no!' ); + WC_Admin_Meta_Boxes::add_error( 'Crikey!' ); + + $error_output = $this->get_meta_box_error_output(); + $this->assertEmpty( $error_output, 'If the errors have not first been saved to the database, they cannot be retrieved for display.' ); + + $this->simulate_shutdown(); + $error_output = $this->get_meta_box_error_output(); + $this->assertStringContainsString( 'Oh no!', $error_output, 'The error output contains the expected error string (test #1).' ); + $this->assertStringContainsString( 'Crikey!', $error_output, 'The error output contains the expected error string (test #2).' ); + + $error_output = $this->get_meta_box_error_output(); + $this->assertEmpty( $error_output, 'The error store is cleared after errors have been output.' ); + } + + /** + * @testdox Test that the stored meta box errors are not accidentally cleared by concurrent requests before they are rendered. + */ + public function test_meta_box_errors_are_not_accidentally_cleared_during_shutdown() { + WC_Admin_Meta_Boxes::add_error( 'Yikes!' ); + + $this->simulate_shutdown(); + $this->simulate_shutdown(); + + $error_output = $this->get_meta_box_error_output(); + $this->assertStringContainsString( 'Yikes!', $error_output, 'The stored error persisted across requests.' ); + } + + /** + * Calls the WC_Admin_Meta_Boxes::output_errors() method, capturing and returning the output. + * + * @return string + */ + private function get_meta_box_error_output(): string { + ob_start(); + $this->sut->output_errors(); + return ob_get_clean(); + } + + /** + * Simulates what normally happens when `shutdown` occurs, in relation to the WC_Admin_Meta_Boxes class. + * We avoid actually calling `do_action( 'shutdown' )` because we do not have perfect isolation between tests, and + * wish to avoid unwanted side-effects unrelated to this set of tests. + */ + private function simulate_shutdown() { + // Previously (prior to 6.5.0), $this->sut->save_errors() would have been called during shutdown. + $this->sut->append_to_error_store(); + WC_Admin_Meta_Boxes::$meta_box_errors = array(); + } +} From 1d0c35d226997a76ce027b39ab6a54413c776a10 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 8 Apr 2022 15:51:24 -0700 Subject: [PATCH 008/327] Changelog. --- plugins/woocommerce/changelog/fix-errors-flash-messaging | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-errors-flash-messaging diff --git a/plugins/woocommerce/changelog/fix-errors-flash-messaging b/plugins/woocommerce/changelog/fix-errors-flash-messaging new file mode 100644 index 00000000000..71fb72d560c --- /dev/null +++ b/plugins/woocommerce/changelog/fix-errors-flash-messaging @@ -0,0 +1,4 @@ +Significance: minor +Type: tweak + +Changes to reduce the risk of admin error messages being discarded prematurely. From ac446e851f5e357312f20c18d807196951eee594 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 11 Apr 2022 08:16:21 -0700 Subject: [PATCH 009/327] Satisfy linter action and use trailing comma in multi-line array. --- plugins/woocommerce/includes/class-wc-ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-ajax.php b/plugins/woocommerce/includes/class-wc-ajax.php index 615fc902f95..4a602d08336 100644 --- a/plugins/woocommerce/includes/class-wc-ajax.php +++ b/plugins/woocommerce/includes/class-wc-ajax.php @@ -3095,7 +3095,7 @@ class WC_AJAX { } $enabled = $gateway->get_option( 'enabled', 'no' ); $option = array( - 'id' => $gateway->get_option_key() + 'id' => $gateway->get_option_key(), ); if ( ! wc_string_to_bool( $enabled ) ) { From 7cd7e0538f0defd751101a302ddc2b755ecb25ec Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:21:46 +0530 Subject: [PATCH 010/327] Enable meta migrations. --- .../Migrations/CustomOrderTable/WPPostToCOTMigrator.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php index 6e94d9106e4..81f5f1e97c9 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php @@ -148,8 +148,7 @@ class WPPostToCOTMigrator { $this->billing_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->shipping_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->operation_data_table_migrator->process_migration_batch_for_ids( $order_post_ids ); - // TODO: Add resilience for meta migrations. - // $this->process_meta_migration( $order_post_ids ); + $this->process_meta_migration( $order_post_ids ); // TODO: Return merged error array. } From 19b3f1a7d1bc79f6f32a913e5f86f5088b61e8cc Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:22:20 +0530 Subject: [PATCH 011/327] Add source table name to prevent ambigious column names. --- .../Migrations/CustomOrderTable/MetaToMetaTableMigrator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index f043b70ffe2..7a1335c43b8 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -117,7 +117,7 @@ class MetaToMetaTableMigrator { /** * Helper method to build query used to fetch data from source meta table. * - * @param string $entity_ids List of entity IDs to build meta query for. + * @param array $entity_ids List of entity IDs to build meta query for. * * @return string Query that can be used to fetch data. */ @@ -127,9 +127,9 @@ class MetaToMetaTableMigrator { $source_meta_key_column = $this->schema_config['source']['meta']['meta_key_column']; $source_meta_value_column = $this->schema_config['source']['meta']['meta_value_column']; $source_entity_id_column = $this->schema_config['source']['meta']['entity_id_column']; - $order_by = "$source_entity_id_column ASC"; + $order_by = "source.$source_entity_id_column ASC"; - $where_clause = "$source_entity_id_column IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; + $where_clause = "source.`$source_entity_id_column` IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; $destination_entity_table = $this->schema_config['destination']['entity']['table_name']; $destination_entity_id_column = $this->schema_config['destination']['entity']['id_column']; From f063d40c95b50357794fff48cfc4229d0caefbb8 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:22:39 +0530 Subject: [PATCH 012/327] Add test for migrations. --- .../WPPostToCOTMigratorTest.php | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index e9e9c2e1034..52e1d6fd9b2 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -51,6 +51,7 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { $this->assert_core_data_is_migrated( $order ); $this->assert_order_addresses_are_migrated( $order ); $this->assert_order_op_data_is_migrated( $order ); + $this->assert_metadata_is_migrated( $order ); } /** @@ -149,7 +150,7 @@ WHERE order_id = {$order_id} /** * Helper method to get address details from DB. * - * @param int $order_id Order ID. + * @param int $order_id Order ID. * @param string $address_type Address Type. * * @return array|object|void|null DB object. @@ -177,6 +178,13 @@ WHERE order_id = {$order_id} return $wpdb->get_row( "SELECT * FROM $operational_data_table WHERE order_id = $order_id;" ); } + private function get_meta_data_from_cot( $order_id ) { + global $wpdb; + $metadata_table = $this->data_store::get_meta_table_name(); + + return $wpdb->get_results( "SELECT * FROM $metadata_table WHERE order_id = $order_id;" ); + } + /** * Helper method to create complex wp_post based order. * @@ -244,6 +252,9 @@ WHERE order_id = {$order_id} $order->set_date_completed( time() ); $order->calculate_shipping(); + $order->add_meta_data( 'unique_key_1', 'unique_value_1', true ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_1', false ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_2', false ); $order->save(); $order->save_meta_data(); @@ -352,6 +363,27 @@ WHERE order_id = {$order_id} $this->assertEquals( (float) $order->get_discount_total(), (float) $db_order_op_data->discount_total_amount ); } + private function assert_metadata_is_migrated( $order ) { + $db_order = $this->get_order_from_cot( $order ); + $meta_data = $this->get_meta_data_from_cot( $db_order->id ); + + $unique_row = array_filter( $meta_data, function ( $meta_row ) { + return 'unique_key_1' === $meta_row->meta_key; + } ); + + $this->assertEquals( 1, count( $unique_row ) ); + $this->assertEquals( 'unique_value_1', array_values( $unique_row)[0]->meta_value ); + + $non_unique_rows = array_filter( $meta_data, function ( $meta_row ) { + return 'non_unique_key_1' === $meta_row->meta_key; + } ); + $this->assertEquals( 2, count( $non_unique_rows ) ); + $this->assertEquals( array( + 'non_unique_value_1', + 'non_unique_value_2' + ), array_column( $non_unique_rows, 'meta_value' ) ); + } + /** * Helper method to clear checkout and truncate order tables. */ From f7bd63784593c29a186b29a49d1ae9e29d5c24d9 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:32:30 +0530 Subject: [PATCH 013/327] Add tests to check for duplicated meta records. --- .../WPPostToCOTMigratorTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 52e1d6fd9b2..d51eeb36633 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -104,6 +104,25 @@ WHERE order_id = {$order_id} AND address_type = 'shipping' " SELECT COUNT(*) FROM {$this->data_store::get_operational_data_table_name()} WHERE order_id = {$order_id} +" + ) + ); + + $this->assertEquals( + 1, + $wpdb->get_var( + " +SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} +WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' +" + ) + ); + $this->assertEquals( + 2, + $wpdb->get_var( + " +SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} +WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' " ) ); From c9c930cfcb3be192a131ebca8d3c65414973f831 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 16:41:58 +0530 Subject: [PATCH 014/327] Refactor meta migrator to follow pattern in meta to custom migrator. --- .../MetaToMetaTableMigrator.php | 29 ++++++-- .../WPPostMetaToOrderMetaMigrator.php | 55 +++++++++++++++ .../CustomOrderTable/WPPostToCOTMigrator.php | 69 ++----------------- 3 files changed, 81 insertions(+), 72 deletions(-) create mode 100644 plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 7a1335c43b8..a41578fc288 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -14,7 +14,7 @@ use Automattic\WooCommerce\Database\Migrations\MigrationHelper; * * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable */ -class MetaToMetaTableMigrator { +abstract class MetaToMetaTableMigrator { /** * Schema config, see __construct for more details. @@ -24,14 +24,29 @@ class MetaToMetaTableMigrator { private $schema_config; /** - * MetaToMetaTableMigrator constructor. + * Store errors along with entity IDs from migrations. * - * @param array $schema_config This parameters provides general but essential information about tables under migrations. Must be of the form- - * TODO: Add structure. + * @var array */ - public function __construct( $schema_config ) { - // TODO: Validate params. - $this->schema_config = $schema_config; + protected $errors; + + public abstract function get_meta_config(); + + public function __construct() { + $this->schema_config = $this->get_meta_config(); + $this->errors = array(); + } + + public function process_migration_batch_for_ids( $entity_ids ) { + global $wpdb; + $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); + $insert_queries = $this->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. + $result = $wpdb->query( $insert_queries ); + if ( count( $data_to_migrate['data'] ) !== $result ) { + // TODO: Find and log entity ids that were not inserted. + echo 'error'; + } } /** diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php new file mode 100644 index 00000000000..e155a93009f --- /dev/null +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -0,0 +1,55 @@ +excluded_columns = $excluded_columns; + parent::__construct(); + } + + /** + * Generate config for meta data migration. + * + * @return array Meta data migration config. + */ + public function get_meta_config() { + global $wpdb; + // TODO: Remove hardcoding. + $this->table_names = array( + 'orders' => $wpdb->prefix . 'wc_orders', + 'addresses' => $wpdb->prefix . 'wc_order_addresses', + 'op_data' => $wpdb->prefix . 'wc_order_operational_data', + 'meta' => $wpdb->prefix . 'wc_orders_meta', + ); + + return array( + 'source' => array( + 'meta' => array( + 'table_name' => $wpdb->postmeta, + 'entity_id_column' => 'post_id', + 'meta_key_column' => 'meta_key', + 'meta_value_column' => 'meta_value', + ), + 'excluded_keys' => $this->excluded_columns, + ), + 'destination' => array( + 'meta' => array( + 'table_name' => $this->table_names['meta'], + 'entity_id_column' => 'order_id', + 'meta_key_column' => 'meta_key', + 'meta_value_column' => 'meta_value', + 'entity_id_type' => 'int', + ), + 'entity' => array( + 'table_name' => $this->table_names['orders'], + 'source_id_column' => 'post_id', + 'id_column' => 'id', + ), + ), + ); + } +} diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php index 81f5f1e97c9..a2d7a463054 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php @@ -66,58 +66,13 @@ class WPPostToCOTMigrator { $this->shipping_address_table_migrator = new WPPostToOrderAddressTableMigrator( 'shipping' ); $this->operation_data_table_migrator = new WPPostToOrderOpTableMigrator(); - $meta_data_config = $this->get_config_for_meta_table(); - - $this->meta_table_migrator = new MetaToMetaTableMigrator( $meta_data_config ); - - $this->error_logger = new MigrationErrorLogger(); - } - - /** - * Generate config for meta data migration. - * - * @return array Meta data migration config. - */ - private function get_config_for_meta_table() { - global $wpdb; - // TODO: Remove hardcoding. - $this->table_names = array( - 'orders' => $wpdb->prefix . 'wc_orders', - 'addresses' => $wpdb->prefix . 'wc_order_addresses', - 'op_data' => $wpdb->prefix . 'wc_order_operational_data', - 'meta' => $wpdb->prefix . 'wc_orders_meta', - ); - $excluded_columns = array_keys( $this->order_table_migrator->get_meta_column_config() ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->billing_address_table_migrator->get_meta_column_config() ) ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->shipping_address_table_migrator->get_meta_column_config() ) ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->operation_data_table_migrator->get_meta_column_config() ) ); - return array( - 'source' => array( - 'meta' => array( - 'table_name' => $wpdb->postmeta, - 'entity_id_column' => 'post_id', - 'meta_key_column' => 'meta_key', - 'meta_value_column' => 'meta_value', - ), - 'excluded_keys' => $excluded_columns, - ), - 'destination' => array( - 'meta' => array( - 'table_name' => $this->table_names['meta'], - 'entity_id_column' => 'order_id', - 'meta_key_column' => 'meta_key', - 'meta_value_column' => 'meta_value', - 'entity_id_type' => 'int', - ), - 'entity' => array( - 'table_name' => $this->table_names['orders'], - 'source_id_column' => 'post_id', - 'id_column' => 'id', - ), - ), - ); + $this->meta_table_migrator = new WPPostMetaToOrderMetaMigrator( $excluded_columns ); + $this->error_logger = new MigrationErrorLogger(); } /** @@ -135,6 +90,7 @@ class WPPostToCOTMigrator { $this->process_migration_for_ids( $order_post_ids ); $last_post_migrated = max( $order_post_ids ); $this->update_checkpoint( $last_post_migrated ); + return false; } @@ -148,27 +104,10 @@ class WPPostToCOTMigrator { $this->billing_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->shipping_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->operation_data_table_migrator->process_migration_batch_for_ids( $order_post_ids ); - $this->process_meta_migration( $order_post_ids ); + $this->meta_table_migrator->process_migration_batch_for_ids( $order_post_ids ); // TODO: Return merged error array. } - /** - * Process migration for metadata for given post ids. - * - * @param array $order_post_ids Post IDs. - */ - private function process_meta_migration( $order_post_ids ) { - global $wpdb; - $data_to_migrate = $this->meta_table_migrator->fetch_data_for_migration_for_ids( $order_post_ids ); - $insert_queries = $this->meta_table_migrator->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. - $result = $wpdb->query( $insert_queries ); - if ( count( $data_to_migrate['data'] ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - echo 'error'; - } - } - /** * Method to migrate single record. * From 8d840c4ea006fda0700635e15368f04079f352e4 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Wed, 13 Apr 2022 09:20:47 -0700 Subject: [PATCH 015/327] Display but do not require Street Address 2 for Vietnam. --- plugins/woocommerce/changelog/fix-32600-vietnam | 4 ++++ plugins/woocommerce/includes/class-wc-countries.php | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce/changelog/fix-32600-vietnam diff --git a/plugins/woocommerce/changelog/fix-32600-vietnam b/plugins/woocommerce/changelog/fix-32600-vietnam new file mode 100644 index 00000000000..b6fa4972010 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32600-vietnam @@ -0,0 +1,4 @@ +Significance: patch +Type: tweak + +For Vietnam, the second street address line should be displayed but not required. diff --git a/plugins/woocommerce/includes/class-wc-countries.php b/plugins/woocommerce/includes/class-wc-countries.php index fd2a1b96a2b..58bc5e6e335 100644 --- a/plugins/woocommerce/includes/class-wc-countries.php +++ b/plugins/woocommerce/includes/class-wc-countries.php @@ -1498,7 +1498,7 @@ class WC_Countries { ), 'address_2' => array( 'required' => false, - 'hidden' => true, + 'hidden' => false, ), ), 'WS' => array( From 40c6ae32ff13e278492420c20c668fe6d9e25837 Mon Sep 17 00:00:00 2001 From: Joel T Date: Wed, 13 Apr 2022 12:31:36 -0700 Subject: [PATCH 016/327] Changing dlx to exec for grunt package --- plugins/woocommerce/legacy/project.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/legacy/project.json b/plugins/woocommerce/legacy/project.json index 9538e820d22..2ba33de33d6 100644 --- a/plugins/woocommerce/legacy/project.json +++ b/plugins/woocommerce/legacy/project.json @@ -9,7 +9,7 @@ "options": { "commands": [ { - "command": "pnpm dlx grunt assets", + "command": "pnpm exec grunt assets", "forwardAllArgs": false } ], @@ -25,11 +25,11 @@ "options": { "commands": [ { - "command": "pnpm dlx grunt eslint", + "command": "pnpm exec grunt eslint", "forwardAllArgs": false }, { - "command": "pnpm dlx grunt stylelint", + "command": "pnpm exec grunt stylelint", "forwardAllArgs": false } ], From 5ebfa3e5365efaf5738cf1df51719d16f60a0a53 Mon Sep 17 00:00:00 2001 From: Jacob Sewell Date: Wed, 13 Apr 2022 15:18:14 -0500 Subject: [PATCH 017/327] Sanitize order and orderby args for get_notes() and lookup_notes(). --- plugins/woocommerce/src/Admin/Notes/DataStore.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/src/Admin/Notes/DataStore.php b/plugins/woocommerce/src/Admin/Notes/DataStore.php index 49b14e500b3..d0f6d035cd0 100644 --- a/plugins/woocommerce/src/Admin/Notes/DataStore.php +++ b/plugins/woocommerce/src/Admin/Notes/DataStore.php @@ -344,9 +344,13 @@ class DataStore extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Inter $offset = $args['per_page'] * ( $args['page'] - 1 ); $where_clauses = $this->get_notes_where_clauses( $args, $context ); + // sanitize order and orderby. + $order_by = '`' . str_replace( '`', '', $args['orderby'] ) . '`'; + $order_dir = 'asc' === strtolower( $args['order'] ) ? 'ASC' : 'DESC'; + $query = $wpdb->prepare( // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT * FROM {$wpdb->prefix}wc_admin_notes WHERE 1=1{$where_clauses} ORDER BY {$args['orderby']} {$args['order']} LIMIT %d, %d", + "SELECT * FROM {$wpdb->prefix}wc_admin_notes WHERE 1=1{$where_clauses} ORDER BY {$order_by} {$order_dir} LIMIT %d, %d", $offset, $args['per_page'] ); @@ -372,7 +376,11 @@ class DataStore extends \WC_Data_Store_WP implements \WC_Object_Data_Store_Inter $where_clauses = $this->args_to_where_clauses( $args ); - $query = "SELECT * FROM {$wpdb->prefix}wc_admin_notes WHERE 1=1{$where_clauses} ORDER BY {$args['orderby']} {$args['order']}"; + // sanitize order and orderby. + $order_by = '`' . str_replace( '`', '', $args['orderby'] ) . '`'; + $order_dir = 'asc' === strtolower( $args['order'] ) ? 'ASC' : 'DESC'; + + $query = "SELECT * FROM {$wpdb->prefix}wc_admin_notes WHERE 1=1{$where_clauses} ORDER BY {$order_by} {$order_dir}"; return $wpdb->get_results( $query ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared } From bc700e3735f98a7946645ab42cf786181014eb2f Mon Sep 17 00:00:00 2001 From: Jacob Sewell Date: Wed, 13 Apr 2022 15:35:23 -0500 Subject: [PATCH 018/327] Add unit tests for get_notes and lookup_notes order and orderby sanitization. --- .../notes/class-wc-tests-notes-data-store.php | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/notes/class-wc-tests-notes-data-store.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/notes/class-wc-tests-notes-data-store.php index b4445dab708..3e48f0ca350 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/notes/class-wc-tests-notes-data-store.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/notes/class-wc-tests-notes-data-store.php @@ -248,6 +248,78 @@ class WC_Admin_Tests_Notes_Data_Store extends WC_Unit_Test_Case { $this->assertEquals( 1, did_action( 'woocommerce_caught_exception' ) ); } + /** + * Test order and orderby sanitization in get_notes() + */ + public function test_get_notes_order_args_sanitized() { + global $wpdb; + + $data_store = WC_Data_Store::load( 'admin-note' ); + + // Attempt to pass a nonstandard direction. + // It should be replaced with the default: DESC. + $data_store->get_notes( array( 'order' => 'increasing' ) ); + $this->assertFalse( stripos( 'increasing', $wpdb->last_query ) ); + $this->assertTrue( stripos( 'DESC', $wpdb->last_query ) >= 0 ); + + // Attempt to pass a standard direction in lowercase. + // It should be replaced with the all-caps equivalent. + $data_store->get_notes( array( 'order' => 'asc' ) ); + $this->assertFalse( strpos( 'asc', $wpdb->last_query ) ); + $this->assertTrue( strpos( 'ASC', $wpdb->last_query ) >= 0 ); + + // Attempt to pass a suspicious string for orderby. + // It should have backticks stripped from it and get wrapped in backticks, thus causing an error. + $log_file = ini_set( 'error_log', '/dev/null' ); + $wpdb->hide_errors(); + $this->assertTrue( '' === $wpdb->last_error ); + + $data_store->get_notes( array( 'orderby' => '`name`;select 1;' ) ); + + $this->assertFalse( stripos( '`name`;select', $wpdb->last_query ) ); + $this->assertTrue( stripos( '`name;select 1;`', $wpdb->last_query ) >= 0 ); + $this->assertFalse( '' === $wpdb->last_error ); + + ini_set( 'error_log', $log_file ); + $wpdb->show_errors(); + } + + /** + * Test order and orderby sanitization in lookup_notes() + */ + public function test_lookup_notes_order_args_sanitized() { + global $wpdb; + + $data_store = WC_Data_Store::load( 'admin-note' ); + + // Attempt to pass a nonstandard direction. + // It should be replaced with the default: DESC. + $data_store->lookup_notes( array( 'order' => 'increasing' ) ); + $this->assertFalse( stripos( 'increasing', $wpdb->last_query ) ); + $this->assertTrue( stripos( 'DESC', $wpdb->last_query ) >= 0 ); + + // Attempt to pass a standard direction in lowercase. + // It should be replaced with the all-caps equivalent. + $data_store->lookup_notes( array( 'order' => 'asc' ) ); + $this->assertFalse( strpos( 'asc', $wpdb->last_query ) ); + $this->assertTrue( strpos( 'ASC', $wpdb->last_query ) >= 0 ); + + // Attempt to pass a suspicious string for orderby. + // It should have backticks stripped from it and get wrapped in backticks, thus causing an error. + $log_file = ini_set( 'error_log', '/dev/null' ); + $wpdb->hide_errors(); + $this->assertTrue( '' === $wpdb->last_error ); + + $data_store->lookup_notes( array( 'orderby' => '`name`;select 1;' ) ); + + $this->assertFalse( stripos( '`name`;select', $wpdb->last_query ) ); + $this->assertTrue( stripos( '`name;select 1;`', $wpdb->last_query ) >= 0 ); + $this->assertFalse( '' === $wpdb->last_error ); + + ini_set( 'error_log', $log_file ); + $wpdb->show_errors(); + } + /** * Test that sources are correctly added to where clause. */ From 6ad7729fb37ff33ce926c459a48c13475339031f Mon Sep 17 00:00:00 2001 From: Jacob Sewell Date: Wed, 13 Apr 2022 15:41:44 -0500 Subject: [PATCH 019/327] Changelog for 32614. --- plugins/woocommerce/changelog/fix-sanitize-notes-order-by | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-sanitize-notes-order-by diff --git a/plugins/woocommerce/changelog/fix-sanitize-notes-order-by b/plugins/woocommerce/changelog/fix-sanitize-notes-order-by new file mode 100644 index 00000000000..584264d8b5f --- /dev/null +++ b/plugins/woocommerce/changelog/fix-sanitize-notes-order-by @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Sanitize order and orderby args in get_notes and lookup_notes. #32614 From aec1344d03fe215ff04776c4006355cb41e2228d Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:07:01 +0530 Subject: [PATCH 020/327] Add support for multi-value migrations. --- .../MetaToCustomTableMigrator.php | 19 +- .../MetaToMetaTableMigrator.php | 199 +++++++++++++++--- .../WPPostMetaToOrderMetaMigrator.php | 11 +- .../Database/Migrations/MigrationHelper.php | 17 ++ 4 files changed, 196 insertions(+), 50 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php index f69d9dd3e32..4a8401c1b4e 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php @@ -163,7 +163,7 @@ abstract class MetaToCustomTableMigrator { $batch ); - $duplicate_update_key_statement = $this->generate_on_duplicate_statement_clause( $columns ); + $duplicate_update_key_statement = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); return "INSERT INTO $table (`$column_sql`) VALUES $value_sql $duplicate_update_key_statement;"; } @@ -219,23 +219,6 @@ abstract class MetaToCustomTableMigrator { return array( $value_sql, $column_sql, $columns ); } - /** - * Generates ON DUPLICATE KEY UPDATE clause to be used in migration. - * - * @param array $columns List of column names. - * - * @return string SQL clause for INSERT...ON DUPLICATE KEY UPDATE - */ - private function generate_on_duplicate_statement_clause( $columns ) { - $update_value_statements = array(); - foreach ( $columns as $column ) { - $update_value_statements[] = "$column = VALUES( $column )"; - } - $update_value_clause = implode( ', ', $update_value_statements ); - - return "ON DUPLICATE KEY UPDATE $update_value_clause"; - } - /** * Process next migration batch, uses option `wc_cot_migration` to checkpoints of what have been processed so far. * diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index a41578fc288..9a266445400 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -34,63 +34,108 @@ abstract class MetaToMetaTableMigrator { public function __construct() { $this->schema_config = $this->get_meta_config(); - $this->errors = array(); + $this->errors = array(); } public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); - $insert_queries = $this->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); + + $data_already_migrated = $this->get_already_migrated_records( $entity_ids ); + + list( $to_insert, $to_update ) = $this->classify_update_insert_records( $data_to_migrate['data'], $data_already_migrated, $entity_ids ); + + $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. $result = $wpdb->query( $insert_queries ); - if ( count( $data_to_migrate['data'] ) !== $result ) { + $wpdb->query( 'COMMIT;' ); + if ( count( $to_insert ) !== $result ) { // TODO: Find and log entity ids that were not inserted. echo 'error'; } + + if ( empty( $to_update ) ) { + return; + } + $update_queries = $this->generate_update_sql_for_batch( $to_update ); + $result = $wpdb->query( $update_queries ); + $wpdb->query( 'COMMIT;' ); + // TODO: Find and log error updates. + } + + public function generate_update_sql_for_batch( $batch ) { + global $wpdb; + + $table = $this->schema_config['destination']['meta']['table_name']; + $meta_id_column = $this->schema_config['destination']['meta']['meta_id_column']; + $meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; + $meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; + $entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; + $columns = array( $meta_id_column, $entity_id_column, $meta_key_column, $meta_value_column ); + $columns_sql = implode( '`, `', $columns ); + + $entity_id_column_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); + $placeholder_string = "%d, $entity_id_column_placeholder, %s, %s"; + $values = array(); + foreach ( $batch as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_details ) { + $values[] = $wpdb->prepare( + "( $placeholder_string )", + array( $meta_details['id'], $entity_id, $meta_key, $meta_details['meta_value'] ) + ); + } + } + $value_sql = implode( ',', $values ); + + $on_duplicate_key_clause = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); + + return "INSERT INTO $table ( `$columns_sql` ) VALUES ( $value_sql ) $on_duplicate_key_clause"; } /** * Generate insert sql queries for batches. * - * @param array $batch Data to generate queries for. + * @param array $batch Data to generate queries for. * @param string $insert_switch Insert switch to use. * * @return string */ - public function generate_insert_sql_for_batch( $batch, $insert_switch ) { + public function generate_insert_sql_for_batch( $batch ) { global $wpdb; - $insert_query = MigrationHelper::get_insert_switch( $insert_switch ); - + $table = $this->schema_config['destination']['meta']['table_name']; $meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; $meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; $entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; $column_sql = "(`$entity_id_column`, `$meta_key_column`, `$meta_value_column`)"; - $table = $this->schema_config['destination']['meta']['table_name']; $entity_id_column_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $placeholder_string = "$entity_id_column_placeholder, %s, %s"; $values = array(); - foreach ( array_values( $batch ) as $row ) { - $query_params = array( - $row->destination_entity_id, - $row->meta_key, - $row->meta_value, - ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. - $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); - $values[] = $value_sql; + foreach ( $batch as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_values ) { + foreach ( $meta_values as $meta_value ) { + $query_params = array( + $entity_id, + $meta_key, + $meta_value + ); + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. + $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); + $values[] = $value_sql; + } + } } $values_sql = implode( '), (', $values ); - return "$insert_query INTO $table $column_sql VALUES ($values_sql)"; + return "INSERT IGNORE INTO $table $column_sql VALUES ($values_sql)"; } /** * Fetch data for migration. * - * @param array $order_post_ids Array of IDs to fetch data for. + * @param array $entity_ids Array of IDs to fetch data for. * * @return array[] Data along with errors (if any), will of the form: * array( @@ -103,16 +148,16 @@ abstract class MetaToMetaTableMigrator { * ..., * ) */ - public function fetch_data_for_migration_for_ids( $order_post_ids ) { + public function fetch_data_for_migration_for_ids( $entity_ids ) { global $wpdb; - if ( empty( $order_post_ids ) ) { + if ( empty( $entity_ids ) ) { return array( 'data' => array(), 'errors' => array(), ); } - $meta_query = $this->build_meta_table_query( $order_post_ids ); + $meta_query = $this->build_meta_table_query( $entity_ids ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Meta query has interpolated variables, but they should all be escaped for backticks. $meta_data_rows = $wpdb->get_results( $meta_query ); @@ -129,6 +174,106 @@ abstract class MetaToMetaTableMigrator { ); } + private function get_already_migrated_records( $entity_ids ) { + global $wpdb; + + $destination_table_name = $this->schema_config['destination']['meta']['table_name']; + $destination_id_column = $this->schema_config['destination']['meta']['meta_id_column']; + $destination_entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; + $destination_meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; + $destination_meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; + + $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); + $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); + + return $wpdb->get_results( + $wpdb->prepare( + " +SELECT + $destination_id_column meta_id, + $destination_entity_id_column entity_id, + $destination_meta_key_column meta_key, + $destination_meta_value_column meta_value +FROM $destination_table_name destination +WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) ORDER BY destination.$destination_entity_id_column +", + $entity_ids + ) + ); + } + + private function classify_update_insert_records( $data_to_migrate, $data_already_migrated ) { + // All data is ordered by entity_ids, which means we can optimize our processing a bit. + $to_migrate = array(); + $already_migrated = array(); + foreach ( $data_to_migrate as $migrate_row ) { + if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { + $to_migrate[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; + } + + foreach ( $data_already_migrated as $migrate_row ) { + if ( ! isset( $already_migrated[ $migrate_row->entity_id ] ) ) { + $already_migrated[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = array( + 'id' => $migrate_row->meta_id, + 'meta_value' => $migrate_row->meta_value + ); + } + + $to_update = array(); + $to_insert = array(); + + foreach ( $to_migrate as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_values ) { + // If there is no corresponding record in the destination table then insert. + // If there is single value in both already migrated and current then update. + // If there are multiple values in either already_migrated records or in to_migrate_records, then insert instead of updating. + if ( ! isset( $already_migrated[ $entity_id ][ $meta_key ] ) ) { + if ( ! isset( $to_insert[ $entity_id ] ) ) { + $to_insert[ $entity_id ] = array(); + } + $to_insert[ $entity_id ][ $meta_key ] = $meta_values; + } else { + if ( 1 === count( $to_migrate[ $entity_id ][ $meta_key ] ) && 1 === count( $already_migrated[ $entity_id ][ $meta_key ] ) ) { + if ( ! isset( $to_update[ $entity_id ] ) ) { + $to_update[ $entity_id ] = array(); + } + $to_update[ $entity_id ][ $meta_key ] = array( + 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], + 'meta_value' => $meta_values + ); + continue; + } + + // There are multiple meta entries, let's find the unique entries and insert. + $unique_meta_values = array_diff( $to_migrate[ $entity_id ][ $meta_key ], $already_migrated[ $entity_id ][ $meta_key ] ); + if ( 0 === count( $unique_meta_values ) ) { + continue; + } + if ( ! isset( $to_insert[ $entity_id ] ) ) { + $to_insert[ $entity_id ] = array(); + } + $to_insert[ $entity_id ][ $meta_key ] = $unique_meta_values; + } + } + } + + return array( $to_insert, $to_update ); + } + /** * Helper method to build query used to fetch data from source meta table. * @@ -146,9 +291,9 @@ abstract class MetaToMetaTableMigrator { $where_clause = "source.`$source_entity_id_column` IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; - $destination_entity_table = $this->schema_config['destination']['entity']['table_name']; - $destination_entity_id_column = $this->schema_config['destination']['entity']['id_column']; - $destination_source_id_mapping_column = $this->schema_config['destination']['entity']['source_id_column']; + $entity_table = $this->schema_config['source']['entity']['table_name']; + $entity_id_column = $this->schema_config['source']['entity']['id_column']; + $entity_meta_id_mapping_column = $this->schema_config['source']['entity']['source_id_column']; if ( $this->schema_config['source']['excluded_keys'] ) { $key_placeholder = implode( ',', array_fill( 0, count( $this->schema_config['source']['excluded_keys'] ), '%s' ) ); @@ -162,11 +307,11 @@ abstract class MetaToMetaTableMigrator { " SELECT source.`$source_entity_id_column` as source_entity_id, - destination.`$destination_entity_id_column` as destination_entity_id, + entity.`$entity_id_column` as entity_id, source.`$source_meta_key_column` as meta_key, source.`$source_meta_value_column` as meta_value FROM `$source_meta_table` source -JOIN `$destination_entity_table` destination ON destination.`$destination_source_id_mapping_column` = source.`$source_entity_id_column` +JOIN `$entity_table` entity ON entity.`$entity_meta_id_mapping_column` = source.`$source_entity_id_column` WHERE $where_clause ORDER BY $order_by ", $entity_ids diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php index e155a93009f..ec464f06ca2 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -34,6 +34,11 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', ), + 'entity' => array( + 'table_name' => $this->table_names['orders'], + 'source_id_column' => 'post_id', + 'id_column' => 'id', + ), 'excluded_keys' => $this->excluded_columns, ), 'destination' => array( @@ -43,11 +48,7 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', 'entity_id_type' => 'int', - ), - 'entity' => array( - 'table_name' => $this->table_names['orders'], - 'source_id_column' => 'post_id', - 'id_column' => 'id', + 'meta_id_column' => 'id' ), ), ); diff --git a/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php b/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php index 4aba17b86e5..60a8f05f83d 100644 --- a/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php +++ b/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php @@ -89,4 +89,21 @@ class MigrationHelper { return self::$wpdb_placeholder_for_type[ $type ]; } + /** + * Generates ON DUPLICATE KEY UPDATE clause to be used in migration. + * + * @param array $columns List of column names. + * + * @return string SQL clause for INSERT...ON DUPLICATE KEY UPDATE + */ + public static function generate_on_duplicate_statement_clause( $columns ) { + $update_value_statements = array(); + foreach ( $columns as $column ) { + $update_value_statements[] = "$column = VALUES( $column )"; + } + $update_value_clause = implode( ', ', $update_value_statements ); + + return "ON DUPLICATE KEY UPDATE $update_value_clause"; + } + } From 309a005ee8032f8a443a0c5aa397b8b1b302472e Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:42:08 +0530 Subject: [PATCH 021/327] Fixups for duplicate meta entries. --- .../MetaToMetaTableMigrator.php | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 9a266445400..92b14c4512b 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -39,19 +39,20 @@ abstract class MetaToMetaTableMigrator { public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; - $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); + $to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); - $data_already_migrated = $this->get_already_migrated_records( $entity_ids ); + $already_migrated = $this->get_already_migrated_records( array_keys( $to_migrate['data'] ) ); - list( $to_insert, $to_update ) = $this->classify_update_insert_records( $data_to_migrate['data'], $data_already_migrated, $entity_ids ); + list( $to_insert, $to_update ) = $this->classify_update_insert_records( $to_migrate['data'], $already_migrated ); - $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. - $result = $wpdb->query( $insert_queries ); - $wpdb->query( 'COMMIT;' ); - if ( count( $to_insert ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - echo 'error'; + if ( ! empty( $to_insert ) ) { + $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. + $result = $wpdb->query( $insert_queries ); + $wpdb->query( 'COMMIT;' ); + if ( count( $to_insert ) !== $result ) { + // TODO: Find and log entity ids that were not inserted. + } } if ( empty( $to_update ) ) { @@ -89,7 +90,7 @@ abstract class MetaToMetaTableMigrator { $on_duplicate_key_clause = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); - return "INSERT INTO $table ( `$columns_sql` ) VALUES ( $value_sql ) $on_duplicate_key_clause"; + return "INSERT INTO $table ( `$columns_sql` ) VALUES $value_sql $on_duplicate_key_clause"; } /** @@ -168,8 +169,20 @@ abstract class MetaToMetaTableMigrator { ); } + foreach ( $meta_data_rows as $migrate_row ) { + if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { + $to_migrate[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; + } + return array( - 'data' => $meta_data_rows, + 'data' => $to_migrate, 'errors' => array(), ); } @@ -186,7 +199,7 @@ abstract class MetaToMetaTableMigrator { $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); - return $wpdb->get_results( + $data_already_migrated = $wpdb->get_results( $wpdb->prepare( " SELECT @@ -200,23 +213,8 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $entity_ids ) ); - } - private function classify_update_insert_records( $data_to_migrate, $data_already_migrated ) { - // All data is ordered by entity_ids, which means we can optimize our processing a bit. - $to_migrate = array(); $already_migrated = array(); - foreach ( $data_to_migrate as $migrate_row ) { - if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { - $to_migrate[ $migrate_row->entity_id ] = array(); - } - - if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { - $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); - } - - $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; - } foreach ( $data_already_migrated as $migrate_row ) { if ( ! isset( $already_migrated[ $migrate_row->entity_id ] ) ) { @@ -232,7 +230,10 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O 'meta_value' => $migrate_row->meta_value ); } + return $already_migrated; + } + private function classify_update_insert_records( $to_migrate, $already_migrated ) { $to_update = array(); $to_insert = array(); @@ -253,13 +254,13 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O } $to_update[ $entity_id ][ $meta_key ] = array( 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], - 'meta_value' => $meta_values + 'meta_value' => $meta_values[0] ); continue; } // There are multiple meta entries, let's find the unique entries and insert. - $unique_meta_values = array_diff( $to_migrate[ $entity_id ][ $meta_key ], $already_migrated[ $entity_id ][ $meta_key ] ); + $unique_meta_values = array_diff( $meta_values, array_column( $already_migrated[ $entity_id ][ $meta_key ], 'meta_value' ) ); if ( 0 === count( $unique_meta_values ) ) { continue; } From 0a7ff525d623b60a2f739f0f014bfb78d043d759 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:43:45 +0530 Subject: [PATCH 022/327] Add value clause for better testing. --- .../Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index d51eeb36633..eba74dc151d 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -113,7 +113,7 @@ WHERE order_id = {$order_id} $wpdb->get_var( " SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} -WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' +WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' AND meta_value = 'unique_value_1' " ) ); @@ -122,7 +122,7 @@ WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' $wpdb->get_var( " SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} -WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' +WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in ( 'non_unique_value_1', 'non_unique_value_2' ) " ) ); From 492490c7f3e0b7ffa854f61888fc504a2e9b4e6f Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:29:52 +0530 Subject: [PATCH 023/327] Applied coding standards. --- .../MetaToMetaTableMigrator.php | 85 ++++++++++++++++--- 1 file changed, 74 insertions(+), 11 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 92b14c4512b..00d7a62ed1a 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -30,13 +30,52 @@ abstract class MetaToMetaTableMigrator { */ protected $errors; - public abstract function get_meta_config(); + /** + * Returns config for the migration. + * + * @return array Meta config, must be in following format: + * array( + * 'source' => array( + * 'meta' => array( + * 'table_name' => source_meta_table_name, + * 'entity_id_column' => entity_id column name in source meta table, + * 'meta_key_column' => meta_key column', + * 'meta_value_column' => meta_value column', + * ), + * 'entity' => array( + * 'table_name' => entity table name for the meta table, + * 'source_id_column' => column name in entity table which maps to meta table, + * 'id_column' => id column in entity table, + * ), + * 'excluded_keys' => array of keys to exclude, + * ), + * 'destination' => array( + * 'meta' => array( + * 'table_name' => destination meta table name, + * 'entity_id_column' => entity_id column in meta table, + * 'meta_key_column' => meta key column, + * 'meta_value_column' => meta_value column, + * 'entity_id_type' => data type of entity id, + * 'meta_id_column' => id column in meta table, + * ), + * ), + * ) + */ + abstract public function get_meta_config(); + /** + * MetaToMetaTableMigrator constructor. + */ public function __construct() { $this->schema_config = $this->get_meta_config(); $this->errors = array(); } + /** + * Process migration for provided entity ids. + * + * @param array $entity_ids Entity IDs to process migration for. + */ public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; $to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); @@ -50,20 +89,26 @@ abstract class MetaToMetaTableMigrator { // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. $result = $wpdb->query( $insert_queries ); $wpdb->query( 'COMMIT;' ); - if ( count( $to_insert ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - } + // TODO: Find and log entity ids that were not inserted. } if ( empty( $to_update ) ) { return; } $update_queries = $this->generate_update_sql_for_batch( $to_update ); - $result = $wpdb->query( $update_queries ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- update queries are autogenerated and should already be prepared. + $result = $wpdb->query( $update_queries ); $wpdb->query( 'COMMIT;' ); // TODO: Find and log error updates. } + /** + * Generate update SQL for given batch. + * + * @param array $batch List of data to generate update SQL for. Should be in same format as output of $this->fetch_data_for_migration_for_ids. + * + * @return string Query to update batch records. + */ public function generate_update_sql_for_batch( $batch ) { global $wpdb; @@ -80,7 +125,9 @@ abstract class MetaToMetaTableMigrator { $values = array(); foreach ( $batch as $entity_id => $rows ) { foreach ( $rows as $meta_key => $meta_details ) { + $values[] = $wpdb->prepare( + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Placeholder string is already being prepared. "( $placeholder_string )", array( $meta_details['id'], $entity_id, $meta_key, $meta_details['meta_value'] ) ); @@ -97,9 +144,8 @@ abstract class MetaToMetaTableMigrator { * Generate insert sql queries for batches. * * @param array $batch Data to generate queries for. - * @param string $insert_switch Insert switch to use. * - * @return string + * @return string Insert SQL query. */ public function generate_insert_sql_for_batch( $batch ) { global $wpdb; @@ -119,7 +165,7 @@ abstract class MetaToMetaTableMigrator { $query_params = array( $entity_id, $meta_key, - $meta_value + $meta_value, ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); @@ -145,7 +191,6 @@ abstract class MetaToMetaTableMigrator { * ..., * ), * 'errors' => array( - * 'id_1' => array( 'column1' => error1, 'column2' => value2, ...), * ..., * ) */ @@ -187,6 +232,13 @@ abstract class MetaToMetaTableMigrator { ); } + /** + * Helper method to get already migrated records. Will be used to find prevent migration of already migrated records. + * + * @param array $entity_ids List of entity ids to check for. + * + * @return array Already migrated records. + */ private function get_already_migrated_records( $entity_ids ) { global $wpdb; @@ -199,6 +251,7 @@ abstract class MetaToMetaTableMigrator { $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- All columns are hardcoded. $data_already_migrated = $wpdb->get_results( $wpdb->prepare( " @@ -213,6 +266,7 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $entity_ids ) ); + // phpcs:enable $already_migrated = array(); @@ -227,12 +281,21 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = array( 'id' => $migrate_row->meta_id, - 'meta_value' => $migrate_row->meta_value + 'meta_value' => $migrate_row->meta_value, ); } + return $already_migrated; } + /** + * Classify each record on whether to migrate or update. + * + * @param array $to_migrate Records to migrate. + * @param array $already_migrated Records already migrated. + * + * @return array[] Returns two arrays, first for records to migrate, and second for records to upgrade. + */ private function classify_update_insert_records( $to_migrate, $already_migrated ) { $to_update = array(); $to_insert = array(); @@ -254,7 +317,7 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O } $to_update[ $entity_id ][ $meta_key ] = array( 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], - 'meta_value' => $meta_values[0] + 'meta_value' => $meta_values[0], ); continue; } From f6427edd040e2b548e8f9b5e0e28f640a5a33430 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:32:42 +0530 Subject: [PATCH 024/327] Applied coding standards. --- .../WPPostMetaToOrderMetaMigrator.php | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php index ec464f06ca2..e8dd2a55ecd 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -1,11 +1,29 @@ excluded_columns = $excluded_columns; parent::__construct(); @@ -34,7 +52,7 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', ), - 'entity' => array( + 'entity' => array( 'table_name' => $this->table_names['orders'], 'source_id_column' => 'post_id', 'id_column' => 'id', @@ -42,13 +60,13 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'excluded_keys' => $this->excluded_columns, ), 'destination' => array( - 'meta' => array( + 'meta' => array( 'table_name' => $this->table_names['meta'], 'entity_id_column' => 'order_id', 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', 'entity_id_type' => 'int', - 'meta_id_column' => 'id' + 'meta_id_column' => 'id', ), ), ); From 467506074bb0c0add5c8c846d7ffa91380ea1eba Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:37:53 +0530 Subject: [PATCH 025/327] Add changelog. --- plugins/woocommerce/changelog/cot-meta_migrations | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/cot-meta_migrations diff --git a/plugins/woocommerce/changelog/cot-meta_migrations b/plugins/woocommerce/changelog/cot-meta_migrations new file mode 100644 index 00000000000..b3ca16c0344 --- /dev/null +++ b/plugins/woocommerce/changelog/cot-meta_migrations @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Enable meta table to meta table migrations towards custom table project. From b0c78b995b0894b9af4e3f418261d261d09aa3f0 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 15:41:06 +0530 Subject: [PATCH 026/327] Applied coding standards. --- .../WPPostToCOTMigratorTest.php | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index eba74dc151d..314ef8c9772 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -169,7 +169,7 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in /** * Helper method to get address details from DB. * - * @param int $order_id Order ID. + * @param int $order_id Order ID. * @param string $address_type Address Type. * * @return array|object|void|null DB object. @@ -197,10 +197,18 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in return $wpdb->get_row( "SELECT * FROM $operational_data_table WHERE order_id = $order_id;" ); } + /** + * Helper method to get meta data from custom order tables for given order id. + * + * @param int $order_id Order ID. + * + * @return array Meta data for an order ID. + */ private function get_meta_data_from_cot( $order_id ) { global $wpdb; $metadata_table = $this->data_store::get_meta_table_name(); + // phpcs:ignore return $wpdb->get_results( "SELECT * FROM $metadata_table WHERE order_id = $order_id;" ); } @@ -382,25 +390,39 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in $this->assertEquals( (float) $order->get_discount_total(), (float) $db_order_op_data->discount_total_amount ); } + /** + * Helper method to assert that metadata is migrated for an order. + * + * @param WP_Post $order WP_Post order object. + */ private function assert_metadata_is_migrated( $order ) { $db_order = $this->get_order_from_cot( $order ); $meta_data = $this->get_meta_data_from_cot( $db_order->id ); - $unique_row = array_filter( $meta_data, function ( $meta_row ) { - return 'unique_key_1' === $meta_row->meta_key; - } ); + $unique_row = array_filter( + $meta_data, + function ( $meta_row ) { + return 'unique_key_1' === $meta_row->meta_key; + } + ); $this->assertEquals( 1, count( $unique_row ) ); - $this->assertEquals( 'unique_value_1', array_values( $unique_row)[0]->meta_value ); + $this->assertEquals( 'unique_value_1', array_values( $unique_row )[0]->meta_value ); - $non_unique_rows = array_filter( $meta_data, function ( $meta_row ) { - return 'non_unique_key_1' === $meta_row->meta_key; - } ); + $non_unique_rows = array_filter( + $meta_data, + function ( $meta_row ) { + return 'non_unique_key_1' === $meta_row->meta_key; + } + ); $this->assertEquals( 2, count( $non_unique_rows ) ); - $this->assertEquals( array( - 'non_unique_value_1', - 'non_unique_value_2' - ), array_column( $non_unique_rows, 'meta_value' ) ); + $this->assertEquals( + array( + 'non_unique_value_1', + 'non_unique_value_2', + ), + array_column( $non_unique_rows, 'meta_value' ) + ); } /** From c7c8775a490194712c4c5fe3d0631e4492b0fa7b Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Mon, 18 Apr 2022 19:30:06 +0100 Subject: [PATCH 027/327] Adding workflow to check status of site used for daily smoke tests. --- .../workflows/smoke-test-daily-site-check.yml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/smoke-test-daily-site-check.yml diff --git a/.github/workflows/smoke-test-daily-site-check.yml b/.github/workflows/smoke-test-daily-site-check.yml new file mode 100644 index 00000000000..dcd1277f7bb --- /dev/null +++ b/.github/workflows/smoke-test-daily-site-check.yml @@ -0,0 +1,23 @@ +name: Check daily smoke test site status. +on: + push: + +jobs: + ping_site: + runs-on: ubuntu-latest + name: Check site and notify if not found + steps: + - name: Check site status + id: sitecheck + uses: srt32/uptime@958231f4d95c117f08eb0fc70907e80d0dfedf2b + with: + url-to-hit: "${{ secrets.SMOKE_TEST_URL }}ready/" + expected-statuses: "200,301" + - name: Send message to Slack API + if: failure() + uses: archive/github-actions-slack@deecc2edc496dc642d643de1d7cf3a47f51fb27a + id: notify + with: + slack-bot-user-oauth-access-token: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} + slack-channel: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + slack-text: ':warning: FYI the URL ${{ secrets.SMOKE_TEST_URL }}ready/ appears to be returning `404 not found` :x:' From 4e700a35caf99bd62d51396752aa10759e5062e5 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Tue, 19 Apr 2022 14:59:46 +1200 Subject: [PATCH 028/327] Create a private package to house e2e build logic --- packages/js/{bin => e2e-builds}/build.js | 6 +++--- .../{bin => e2e-builds}/get-babel-config.js | 0 packages/js/e2e-builds/package.json | 19 +++++++++++++++++++ packages/js/e2e-core-tests/package.json | 3 ++- packages/js/e2e-environment/package.json | 3 ++- packages/js/e2e-utils/package.json | 3 ++- pnpm-lock.yaml | 10 +++++++++- workspace.json | 1 + 8 files changed, 38 insertions(+), 7 deletions(-) rename packages/js/{bin => e2e-builds}/build.js (96%) rename packages/js/{bin => e2e-builds}/get-babel-config.js (100%) create mode 100644 packages/js/e2e-builds/package.json diff --git a/packages/js/bin/build.js b/packages/js/e2e-builds/build.js similarity index 96% rename from packages/js/bin/build.js rename to packages/js/e2e-builds/build.js index 7b5ba705009..e0928272e45 100755 --- a/packages/js/bin/build.js +++ b/packages/js/e2e-builds/build.js @@ -38,8 +38,8 @@ const isJsFile = ( filepath ) => { /** * Get Build Path for a specified file * - * @param {string} file File to build - * @param {string} buildFolder Output folder + * @param {string} file File to build + * @param {string} buildFolder Output folder * @return {string} Build path */ function getBuildPath( file, buildFolder ) { @@ -72,7 +72,7 @@ function buildFiles( files ) { /** * Build a javaScript file for the required environments (node and ES5) * - * @param {string} file File path to build + * @param {string} file File path to build * @param {boolean} silent Show logs */ function buildJsFile( file, silent ) { diff --git a/packages/js/bin/get-babel-config.js b/packages/js/e2e-builds/get-babel-config.js similarity index 100% rename from packages/js/bin/get-babel-config.js rename to packages/js/e2e-builds/get-babel-config.js diff --git a/packages/js/e2e-builds/package.json b/packages/js/e2e-builds/package.json new file mode 100644 index 00000000000..d95ed68541e --- /dev/null +++ b/packages/js/e2e-builds/package.json @@ -0,0 +1,19 @@ +{ + "name": "@woocommerce/e2e-builds", + "version": "0.1.0", + "description": "Utility build files for e2e packages", + "private": "true", + "main": "build.js", + "bin": { + "e2e-builds": "./build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "homepage": "https://github.com/woocommerce/woocommerce#readme" +} diff --git a/packages/js/e2e-core-tests/package.json b/packages/js/e2e-core-tests/package.json index 475cb1aa8fe..ee3708d3cae 100644 --- a/packages/js/e2e-core-tests/package.json +++ b/packages/js/e2e-core-tests/package.json @@ -32,6 +32,7 @@ "@babel/plugin-transform-runtime": "^7.16.4", "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", + "@woocommerce/e2e-builds": "workspace:*", "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/browserslist-config": "^4.1.0" @@ -46,7 +47,7 @@ "scripts": { "prepare": "pnpm run build", "clean": "rm -rf ./build ./build-module", - "compile": "node ./../bin/build.js", + "compile": "e2e-builds", "build": "./bin/build.sh && pnpm run clean && pnpm run compile" }, "lint-staged": { diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index f30f3a535c2..1ecb668744b 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -49,6 +49,7 @@ "@babel/plugin-transform-runtime": "^7.16.4", "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", + "@woocommerce/e2e-builds": "workspace:*", "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/browserslist-config": "^4.1.0", @@ -62,7 +63,7 @@ }, "scripts": { "clean": "rm -rf ./build ./build-module", - "compile": "node ./../bin/build.js", + "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", "prepare": "pnpm run build", "docker:up": "./bin/docker-compose.sh up", diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index f83dd1c01cb..ea70d42e7c3 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -28,6 +28,7 @@ "@babel/preset-env": "7.12.7", "@typescript-eslint/eslint-plugin": "^5.3.0", "@typescript-eslint/parser": "^5.3.0", + "@woocommerce/e2e-builds": "workspace:*", "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/browserslist-config": "^4.1.0", @@ -41,7 +42,7 @@ }, "scripts": { "clean": "rm -rf ./build ./build-module", - "compile": "node ./../bin/build.js", + "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", "prepare": "pnpm run build", "lint": "eslint src" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1ac8e52afa..c8a17134f68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -534,6 +534,9 @@ importers: webpack: 5.70.0_webpack-cli@3.3.12 webpack-cli: 3.3.12_webpack@5.70.0 + packages/js/e2e-builds: + specifiers: {} + packages/js/e2e-core-tests: specifiers: '@babel/cli': 7.12.8 @@ -545,6 +548,7 @@ importers: '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7 '@jest/globals': ^26.4.2 + '@woocommerce/e2e-builds': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': ^4.1.0 @@ -563,6 +567,7 @@ importers: '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.12.9 '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 + '@woocommerce/e2e-builds': link:../e2e-builds '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': 4.1.0 @@ -581,6 +586,7 @@ importers: '@jest/test-sequencer': ^25.5.4 '@slack/web-api': ^6.1.0 '@woocommerce/api': ^0.2.0 + '@woocommerce/e2e-builds': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': ^4.1.0 @@ -630,6 +636,7 @@ importers: '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.12.9 '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 + '@woocommerce/e2e-builds': link:../e2e-builds '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': 4.1.0 @@ -651,6 +658,7 @@ importers: '@babel/preset-env': 7.12.7 '@typescript-eslint/eslint-plugin': ^5.3.0 '@typescript-eslint/parser': ^5.3.0 + '@woocommerce/e2e-builds': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': ^4.1.0 @@ -676,6 +684,7 @@ importers: '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@typescript-eslint/eslint-plugin': 5.3.0_ef742ec0d85d332d26b421951e243e75 '@typescript-eslint/parser': 5.3.0_eslint@8.1.0+typescript@4.2.4 + '@woocommerce/e2e-builds': link:../e2e-builds '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': 4.1.0 @@ -12485,7 +12494,6 @@ packages: re-resizable: 4.11.0 transitivePeerDependencies: - react - - react-dom dev: true /@types/wordpress__data-controls/2.2.0: diff --git a/workspace.json b/workspace.json index 56dbc106feb..858a8b8a264 100644 --- a/workspace.json +++ b/workspace.json @@ -3,6 +3,7 @@ "projects": { "@woocommerce/api": "packages/js/api", "@woocommerce/api-core-tests": "packages/js/api-core-tests", + "@woocommerce/e2e-builds": "packages/js/e2e-builds", "@woocommerce/e2e-core-tests": "packages/js/e2e-core-tests", "@woocommerce/e2e-environment": "packages/js/e2e-environment", "@woocommerce/e2e-utils": "packages/js/e2e-utils", From 1c838e5bb09e881fca9429c1aa9dc572d3fcc027 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Tue, 19 Apr 2022 15:20:50 +1200 Subject: [PATCH 029/327] declare deps --- packages/js/e2e-builds/package.json | 9 +++++++- pnpm-lock.yaml | 33 +++++++++++++++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/packages/js/e2e-builds/package.json b/packages/js/e2e-builds/package.json index d95ed68541e..bc9ea6362e4 100644 --- a/packages/js/e2e-builds/package.json +++ b/packages/js/e2e-builds/package.json @@ -15,5 +15,12 @@ "bugs": { "url": "https://github.com/woocommerce/woocommerce/issues" }, - "homepage": "https://github.com/woocommerce/woocommerce#readme" + "homepage": "https://github.com/woocommerce/woocommerce#readme", + "devDependencies": { + "@babel/core": "7.12.9", + "chalk": "^4.1.2", + "glob": "^7.2.0", + "mkdirp": "^1.0.4", + "lodash": "^4.17.21" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8a17134f68..e4dee40d34e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -535,7 +535,18 @@ importers: webpack-cli: 3.3.12_webpack@5.70.0 packages/js/e2e-builds: - specifiers: {} + specifiers: + '@babel/core': 7.12.9 + chalk: ^4.1.2 + glob: ^7.2.0 + lodash: ^4.17.21 + mkdirp: ^1.0.4 + devDependencies: + '@babel/core': 7.12.9 + chalk: 4.1.2 + glob: 7.2.0 + lodash: 4.17.21 + mkdirp: 1.0.4 packages/js/e2e-core-tests: specifiers: @@ -1733,16 +1744,16 @@ packages: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.0 - '@babel/helper-module-transforms': 7.16.0 - '@babel/helpers': 7.16.3 - '@babel/parser': 7.16.4 - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.3 - '@babel/types': 7.16.0 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.7 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helpers': 7.17.8 + '@babel/parser': 7.17.8 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.2 + debug: 4.3.3 gensync: 1.0.0-beta.2 json5: 2.2.0 lodash: 4.17.21 @@ -23143,7 +23154,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 From 8be1d9f7bed853aa4ba794de53bcca475877cca3 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Tue, 19 Apr 2022 15:23:52 +1200 Subject: [PATCH 030/327] package boilerplate --- packages/js/e2e-builds/.eslintrc.js | 4 ++++ packages/js/e2e-builds/.npmrc | 1 + packages/js/e2e-builds/CHANGELOG.md | 5 +++++ packages/js/e2e-builds/project.json | 14 ++++++++++++++ 4 files changed, 24 insertions(+) create mode 100644 packages/js/e2e-builds/.eslintrc.js create mode 100644 packages/js/e2e-builds/.npmrc create mode 100644 packages/js/e2e-builds/CHANGELOG.md create mode 100644 packages/js/e2e-builds/project.json diff --git a/packages/js/e2e-builds/.eslintrc.js b/packages/js/e2e-builds/.eslintrc.js new file mode 100644 index 00000000000..e4d185d8cd1 --- /dev/null +++ b/packages/js/e2e-builds/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], + root: true, +}; diff --git a/packages/js/e2e-builds/.npmrc b/packages/js/e2e-builds/.npmrc new file mode 100644 index 00000000000..9cf9495031e --- /dev/null +++ b/packages/js/e2e-builds/.npmrc @@ -0,0 +1 @@ +package-lock=false \ No newline at end of file diff --git a/packages/js/e2e-builds/CHANGELOG.md b/packages/js/e2e-builds/CHANGELOG.md new file mode 100644 index 00000000000..8e8631b9da0 --- /dev/null +++ b/packages/js/e2e-builds/CHANGELOG.md @@ -0,0 +1,5 @@ +# Unreleased + +# 0.1.0 + +- Released package diff --git a/packages/js/e2e-builds/project.json b/packages/js/e2e-builds/project.json new file mode 100644 index 00000000000..09d71fc99fa --- /dev/null +++ b/packages/js/e2e-builds/project.json @@ -0,0 +1,14 @@ +{ + "root": "packages/js/e2e-builds", + "sourceRoot": "packages/js/e2e-builds", + "projectType": "library", + "targets": { + "changelog": { + "executor": "./tools/executors/changelogger:changelog", + "options": { + "action": "add", + "cwd": "packages/js/e2e-builds" + } + } + } + } \ No newline at end of file From 87cc903b3a3ac7621564ac86be11012f7adbef53 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Tue, 19 Apr 2022 15:30:35 +1200 Subject: [PATCH 031/327] changelof --- .../e2e-core-tests/changelog/fix-e2e-builds-private-package | 4 ++++ .../e2e-environment/changelog/fix-e2e-builds-private-package | 4 ++++ .../js/e2e-utils/changelog/fix-e2e-builds-private-package | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 packages/js/e2e-core-tests/changelog/fix-e2e-builds-private-package create mode 100644 packages/js/e2e-environment/changelog/fix-e2e-builds-private-package create mode 100644 packages/js/e2e-utils/changelog/fix-e2e-builds-private-package diff --git a/packages/js/e2e-core-tests/changelog/fix-e2e-builds-private-package b/packages/js/e2e-core-tests/changelog/fix-e2e-builds-private-package new file mode 100644 index 00000000000..ea5be2b5fdb --- /dev/null +++ b/packages/js/e2e-core-tests/changelog/fix-e2e-builds-private-package @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Create dependency for new private e2e-builds package diff --git a/packages/js/e2e-environment/changelog/fix-e2e-builds-private-package b/packages/js/e2e-environment/changelog/fix-e2e-builds-private-package new file mode 100644 index 00000000000..ea5be2b5fdb --- /dev/null +++ b/packages/js/e2e-environment/changelog/fix-e2e-builds-private-package @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Create dependency for new private e2e-builds package diff --git a/packages/js/e2e-utils/changelog/fix-e2e-builds-private-package b/packages/js/e2e-utils/changelog/fix-e2e-builds-private-package new file mode 100644 index 00000000000..ea5be2b5fdb --- /dev/null +++ b/packages/js/e2e-utils/changelog/fix-e2e-builds-private-package @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Create dependency for new private e2e-builds package From 28de46f9ef4128acf3c5703e8a656bc073d8dbca Mon Sep 17 00:00:00 2001 From: Tam Mullen Date: Tue, 19 Apr 2022 11:03:13 +0100 Subject: [PATCH 032/327] Updated site check trigger to be daily on cron after smoke tests have finished --- .github/workflows/smoke-test-daily-site-check.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/smoke-test-daily-site-check.yml b/.github/workflows/smoke-test-daily-site-check.yml index dcd1277f7bb..5fdb80f819b 100644 --- a/.github/workflows/smoke-test-daily-site-check.yml +++ b/.github/workflows/smoke-test-daily-site-check.yml @@ -1,6 +1,7 @@ name: Check daily smoke test site status. on: - push: + schedule: + - cron: '25 7 * * *' jobs: ping_site: From fd57c5409a21cdd1efdb82a17f18fd7041d02996 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Tue, 19 Apr 2022 11:22:04 -0300 Subject: [PATCH 033/327] Prevent possible fatal error during install --- plugins/woocommerce/includes/class-wc-install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index d19c54df066..d4d6803285c 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -700,7 +700,7 @@ class WC_Install { $settings = WC_Admin_Settings::get_settings_pages(); foreach ( $settings as $section ) { - if ( ! method_exists( $section, 'get_settings' ) ) { + if ( ! is_a( $section, 'WC_Settings_Page' ) || ! method_exists( $section, 'get_settings' ) ) { continue; } $subsections = array_unique( array_merge( array( '' ), array_keys( $section->get_sections() ) ) ); From 41ae67f7b9f0a6851100ef279436acf9b29c2633 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Tue, 19 Apr 2022 11:23:12 -0300 Subject: [PATCH 034/327] Add changelog --- .../changelog/fix-32028-settings-method-exists-fatal | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32028-settings-method-exists-fatal diff --git a/plugins/woocommerce/changelog/fix-32028-settings-method-exists-fatal b/plugins/woocommerce/changelog/fix-32028-settings-method-exists-fatal new file mode 100644 index 00000000000..f18bf62def0 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32028-settings-method-exists-fatal @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix possible fatal error during install on PHP 8.x From 8e131e91f7bcac97730f858e4fb2bb233cda7434 Mon Sep 17 00:00:00 2001 From: Josh Betz Date: Tue, 19 Apr 2022 12:25:42 -0500 Subject: [PATCH 035/327] Add dropins to WC Tracker data Knowing which dropins are active will give us some idea about the capabilities of the hosting environment, like whether they have an external object cache, load balanced databases (like HyperDB), or multisite. --- plugins/woocommerce/includes/class-wc-tracker.php | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce/includes/class-wc-tracker.php b/plugins/woocommerce/includes/class-wc-tracker.php index bda59973044..dbae0b03978 100644 --- a/plugins/woocommerce/includes/class-wc-tracker.php +++ b/plugins/woocommerce/includes/class-wc-tracker.php @@ -223,6 +223,7 @@ class WC_Tracker { $wp_data['version'] = get_bloginfo( 'version' ); $wp_data['multisite'] = is_multisite() ? 'Yes' : 'No'; $wp_data['env_type'] = $environment_type; + $wp_data['dropins'] = array_keys( get_dropins() ); return $wp_data; } From 42d369ecdeaa0aff4fc2a86a5c0159ef269694ca Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:35:20 -0700 Subject: [PATCH 036/327] Add pre-req checks to tests suite installation script. --- .../woocommerce/changelog/fix-29705-tests-install | 4 ++++ plugins/woocommerce/tests/bin/install.sh | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-29705-tests-install diff --git a/plugins/woocommerce/changelog/fix-29705-tests-install b/plugins/woocommerce/changelog/fix-29705-tests-install new file mode 100644 index 00000000000..58bfebea831 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-29705-tests-install @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Add basic pre-requisite checking to the test suite installation script. diff --git a/plugins/woocommerce/tests/bin/install.sh b/plugins/woocommerce/tests/bin/install.sh index 0864ac1987e..7bcc72190ea 100755 --- a/plugins/woocommerce/tests/bin/install.sh +++ b/plugins/woocommerce/tests/bin/install.sh @@ -6,6 +6,18 @@ if [ $# -lt 3 ]; then exit 1 fi +function check_command_exists { + if ! which "$1" > /dev/null; then + echo "It looks as if $1 is not installed. Please ensure it is installed and on the path." + exit 1 + fi +} + +# Basic pre-requisite checks +check_command_exists "mysqladmin" +check_command_exists "php" +check_command_exists "svn" + DB_NAME=$1 DB_USER=$2 DB_PASS=$3 @@ -107,6 +119,8 @@ install_test_suite() { mkdir -p $WP_TESTS_DIR svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data + else + echo -e "\nTest suite already installed at:\n\n\t$WP_TESTS_DIR\n\n(If you experience difficulties running the tests, consider removing it then re-running this script.)\n" fi if [ ! -f wp-tests-config.php ]; then From 01ed9e2c9bf69ca7abfe251558cba3ad85cf0c7f Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 20 Apr 2022 08:25:23 +1200 Subject: [PATCH 037/327] Make core build scripts more intuitive. 'build' only builds and 'build:zip' builds and creates a zip. This now makes 'build:core' redundant. --- plugins/woocommerce/bin/build-zip.sh | 2 +- plugins/woocommerce/package.json | 8 ++++---- plugins/woocommerce/project.json | 6 ------ 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/plugins/woocommerce/bin/build-zip.sh b/plugins/woocommerce/bin/build-zip.sh index 0dae45443fe..53d0348a0ad 100755 --- a/plugins/woocommerce/bin/build-zip.sh +++ b/plugins/woocommerce/bin/build-zip.sh @@ -13,7 +13,7 @@ echo "Installing PHP and JS dependencies..." pnpm install composer install || exit "$?" echo "Running JS Build..." -pnpm run build:core || exit "$?" +pnpm run build || exit "$?" echo "Cleaning up PHP dependencies..." composer install --no-dev || exit "$?" diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index ac076b7e508..f670240212f 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -9,14 +9,14 @@ }, "license": "GPL-3.0+", "config": { - "wp_org_slug": "woocommerce" + "wp_org_slug": "woocommerce", + "build_step": "pnpm run build:zip" }, "scripts": { "preinstall": "npx only-allow pnpm", - "build": "./bin/build-zip.sh", + "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", "build:feature-config": "php bin/generate-feature-config.php", - "build:core": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", - "build:zip": "pnpm run build", + "build:zip": "./bin/build-zip.sh", "lint:js": "eslint assets/js --ext=js", "docker:down": "pnpx wc-e2e docker:down", "docker:ssh": "pnpx wc-e2e docker:ssh", diff --git a/plugins/woocommerce/project.json b/plugins/woocommerce/project.json index 89df485f665..0c81800e7b2 100644 --- a/plugins/woocommerce/project.json +++ b/plugins/woocommerce/project.json @@ -41,12 +41,6 @@ "script": "build" } }, - "build-core": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "build:core" - } - }, "build-zip": { "executor": "@nrwl/workspace:run-script", "options": { From 79c17ad3cc6a89fc908e1ac9fdcb0645858f4e54 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 20 Apr 2022 11:40:28 +1200 Subject: [PATCH 038/327] changelog --- plugins/woocommerce/changelog/fix-core-build-scripts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-core-build-scripts diff --git a/plugins/woocommerce/changelog/fix-core-build-scripts b/plugins/woocommerce/changelog/fix-core-build-scripts new file mode 100644 index 00000000000..c5e5b19f105 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-core-build-scripts @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Standardize WooCommerce build scripts From c458b13fdeede2978624aa460aef69cdc04570db Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 20 Apr 2022 12:14:11 +1200 Subject: [PATCH 039/327] move changelog.txt --- changelog.txt => plugins/woocommerce/changelog.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog.txt => plugins/woocommerce/changelog.txt (100%) diff --git a/changelog.txt b/plugins/woocommerce/changelog.txt similarity index 100% rename from changelog.txt rename to plugins/woocommerce/changelog.txt From a2312bc54786cfa7d3e6b0cc59458180cfb36568 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 20 Apr 2022 12:40:25 +1200 Subject: [PATCH 040/327] Revert "move changelog.txt" This reverts commit c458b13fdeede2978624aa460aef69cdc04570db. --- plugins/woocommerce/changelog.txt => changelog.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename plugins/woocommerce/changelog.txt => changelog.txt (100%) diff --git a/plugins/woocommerce/changelog.txt b/changelog.txt similarity index 100% rename from plugins/woocommerce/changelog.txt rename to changelog.txt From bce4b8df0497de52bb53146739d3348bc1d817f1 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 20 Apr 2022 12:55:07 +1200 Subject: [PATCH 041/327] reference the updated Github Action --- .github/workflows/pr-build-and-e2e-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 328549ec59a..9fc3a961c21 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -15,7 +15,7 @@ jobs: - name: Build id: build - uses: woocommerce/action-build@trunk + uses: woocommerce/action-build@fix/build-core-reference env: BUILD_ENV: e2e From db4bf85ecf5500abb8ee2515657055b54fedd402 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 20 Apr 2022 17:30:07 +0530 Subject: [PATCH 042/327] Refactor utility method to common file so it can be reused. --- .../rest-api/Helpers/OrderHelper.php | 78 ++++++++++++++++++ .../WPPostToCOTMigratorTest.php | 80 +------------------ .../Orders/OrdersTableDataStoreTests.php | 9 +++ 3 files changed, 89 insertions(+), 78 deletions(-) create mode 100644 plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php index 59f72d1dcb2..e86bc32a6cc 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php @@ -7,6 +7,7 @@ namespace Automattic\WooCommerce\RestApi\UnitTests\Helpers; defined( 'ABSPATH' ) || exit; +use WC_Mock_Payment_Gateway; use \WC_Tax; use \WC_Shipping_Rate; use \WC_Order_Item_Shipping; @@ -126,4 +127,81 @@ class OrderHelper { return $order; } + + /** + * Helper method to create complex wp_post based order. + * + * @return int Order ID + */ + public static function create_complex_wp_post_order() { + update_option( 'woocommerce_prices_include_tax', 'yes' ); + update_option( 'woocommerce_calc_taxes', 'yes' ); + $uniq_cust_id = wp_generate_password( 10, false ); + $customer = CustomerHelper::create_customer( "user$uniq_cust_id", $uniq_cust_id, "user$uniq_cust_id@example.com" ); + $tax_rate = array( + 'tax_rate_country' => '', + 'tax_rate_state' => '', + 'tax_rate' => '15.0000', + 'tax_rate_name' => 'tax', + 'tax_rate_priority' => '1', + 'tax_rate_order' => '1', + 'tax_rate_shipping' => '1', + ); + WC_Tax::_insert_tax_rate( $tax_rate ); + + ShippingHelper::create_simple_flat_rate(); + + $order = OrderHelper::create_order(); + // Make sure this is a wp_post order. + $post = get_post( $order->get_id() ); + assert( isset( $post ) ); + assert( 'shop_order' === $post->post_type ); + + $order->save(); + + $order->set_status( 'completed' ); + $order->set_currency( 'INR' ); + $order->set_customer_id( $customer->get_id() ); + $order->set_billing_email( $customer->get_billing_email() ); + + $payment_gateway = new WC_Mock_Payment_Gateway(); + $order->set_payment_method( 'mock' ); + $order->set_transaction_id( 'mock1' ); + + $order->set_customer_ip_address( '1.1.1.1' ); + $order->set_customer_user_agent( 'wc_unit_tests' ); + + $order->save(); + + $order->set_shipping_first_name( 'Albert' ); + $order->set_shipping_last_name( 'Einstein' ); + $order->set_shipping_company( 'The Olympia Academy' ); + $order->set_shipping_address_1( '112 Mercer Street' ); + $order->set_shipping_address_2( 'Princeton' ); + $order->set_shipping_city( 'New Jersey' ); + $order->set_shipping_postcode( '08544' ); + $order->set_shipping_phone( '299792458' ); + $order->set_shipping_country( 'US' ); + + $order->set_created_via( 'unit_tests' ); + $order->set_version( '0.0.2' ); + $order->set_prices_include_tax( true ); + wc_update_coupon_usage_counts( $order->get_id() ); + $order->get_data_store()->set_download_permissions_granted( $order, true ); + $order->set_cart_hash( '1234' ); + $order->update_meta_data( '_new_order_email_sent', 'true' ); + $order->update_meta_data( '_order_stock_reduced', 'true' ); + $order->set_date_paid( time() ); + $order->set_date_completed( time() ); + $order->calculate_shipping(); + + $order->add_meta_data( 'unique_key_1', 'unique_value_1', true ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_1', false ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_2', false ); + $order->save(); + $order->save_meta_data(); + + return $order->get_id(); + } + } diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 314ef8c9772..65803762c92 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -44,7 +44,7 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { * Test that migration for a normal order happens as expected. */ public function test_process_next_migration_batch_normal_order() { - $order = wc_get_order( $this->create_complex_wp_post_order() ); + $order = wc_get_order( OrderHelper::create_complex_wp_post_order() ); $this->clear_all_orders_and_reset_checkpoint(); $this->sut->process_next_migration_batch( 100 ); @@ -59,7 +59,7 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { */ public function test_process_next_migration_batch_already_migrated_order() { global $wpdb; - $order = wc_get_order( $this->create_complex_wp_post_order() ); + $order = wc_get_order( OrderHelper::create_complex_wp_post_order() ); $this->clear_all_orders_and_reset_checkpoint(); // Run the migration once. @@ -212,82 +212,6 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in return $wpdb->get_results( "SELECT * FROM $metadata_table WHERE order_id = $order_id;" ); } - /** - * Helper method to create complex wp_post based order. - * - * @return int Order ID - */ - private function create_complex_wp_post_order() { - update_option( 'woocommerce_prices_include_tax', 'yes' ); - update_option( 'woocommerce_calc_taxes', 'yes' ); - $uniq_cust_id = wp_generate_password( 10, false ); - $customer = CustomerHelper::create_customer( "user$uniq_cust_id", $uniq_cust_id, "user$uniq_cust_id@example.com" ); - $tax_rate = array( - 'tax_rate_country' => '', - 'tax_rate_state' => '', - 'tax_rate' => '15.0000', - 'tax_rate_name' => 'tax', - 'tax_rate_priority' => '1', - 'tax_rate_order' => '1', - 'tax_rate_shipping' => '1', - ); - WC_Tax::_insert_tax_rate( $tax_rate ); - - ShippingHelper::create_simple_flat_rate(); - - $order = OrderHelper::create_order(); - // Make sure this is a wp_post order. - $post = get_post( $order->get_id() ); - $this->assertNotNull( $post, 'Order is not created in wp_post table.' ); - $this->assertEquals( 'shop_order', $post->post_type, 'Order is not created in wp_post table.' ); - - $order->save(); - - $order->set_status( 'completed' ); - $order->set_currency( 'INR' ); - $order->set_customer_id( $customer->get_id() ); - $order->set_billing_email( $customer->get_billing_email() ); - - $payment_gateway = new WC_Mock_Payment_Gateway(); - $order->set_payment_method( 'mock' ); - $order->set_transaction_id( 'mock1' ); - - $order->set_customer_ip_address( '1.1.1.1' ); - $order->set_customer_user_agent( 'wc_unit_tests' ); - - $order->save(); - - $order->set_shipping_first_name( 'Albert' ); - $order->set_shipping_last_name( 'Einstein' ); - $order->set_shipping_company( 'The Olympia Academy' ); - $order->set_shipping_address_1( '112 Mercer Street' ); - $order->set_shipping_address_2( 'Princeton' ); - $order->set_shipping_city( 'New Jersey' ); - $order->set_shipping_postcode( '08544' ); - $order->set_shipping_phone( '299792458' ); - $order->set_shipping_country( 'US' ); - - $order->set_created_via( 'unit_tests' ); - $order->set_version( '0.0.2' ); - $order->set_prices_include_tax( true ); - wc_update_coupon_usage_counts( $order->get_id() ); - $order->get_data_store()->set_download_permissions_granted( $order, true ); - $order->set_cart_hash( '1234' ); - $order->update_meta_data( '_new_order_email_sent', 'true' ); - $order->update_meta_data( '_order_stock_reduced', 'true' ); - $order->set_date_paid( time() ); - $order->set_date_completed( time() ); - $order->calculate_shipping(); - - $order->add_meta_data( 'unique_key_1', 'unique_value_1', true ); - $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_1', false ); - $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_2', false ); - $order->save(); - $order->save_meta_data(); - - return $order->get_id(); - } - /** * Helper method to assert core data is migrated. * diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php new file mode 100644 index 00000000000..595f93d38f9 --- /dev/null +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -0,0 +1,9 @@ + Date: Wed, 20 Apr 2022 18:05:10 +0530 Subject: [PATCH 043/327] Adjust migration to make cot.id === post.id. --- .../MetaToCustomTableMigrator.php | 3 +++ .../WPPostMetaToOrderMetaMigrator.php | 2 +- .../WPPostToOrderAddressTableMigrator.php | 4 ++-- .../WPPostToOrderOpTableMigrator.php | 4 ++-- .../WPPostToOrderTableMigrator.php | 4 ++-- .../rest-api/Helpers/OrderHelper.php | 15 ++++++++++++ .../WPPostToCOTMigratorTest.php | 24 ++++--------------- 7 files changed, 30 insertions(+), 26 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php index 4a8401c1b4e..75c758ec2ef 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php @@ -196,6 +196,9 @@ abstract class MetaToCustomTableMigrator { $columns = array(); $placeholders = array(); foreach ( $columns_schema as $prev_column => $schema ) { + if ( in_array( $schema['destination'], $columns ) ) { + continue; + } $columns[] = $schema['destination']; $placeholders[] = MigrationHelper::get_wpdb_placeholder_for_type( $schema['type'] ); } diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php index e8dd2a55ecd..fe61dea5cf1 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -54,7 +54,7 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { ), 'entity' => array( 'table_name' => $this->table_names['orders'], - 'source_id_column' => 'post_id', + 'source_id_column' => 'id', 'id_column' => 'id', ), 'excluded_keys' => $this->excluded_columns, diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderAddressTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderAddressTableMigrator.php index bbb2be8dda2..46b05d05c28 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderAddressTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderAddressTableMigrator.php @@ -47,9 +47,9 @@ class WPPostToOrderAddressTableMigrator extends MetaToCustomTableMigrator { 'source' => array( 'entity' => array( 'table_name' => $this->table_names['orders'], - 'meta_rel_column' => 'post_id', + 'meta_rel_column' => 'id', 'destination_rel_column' => 'id', - 'primary_key' => 'post_id', + 'primary_key' => 'id', ), 'meta' => array( 'table_name' => $wpdb->postmeta, diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderOpTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderOpTableMigrator.php index 54217a421c4..fdf696f9caa 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderOpTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderOpTableMigrator.php @@ -31,9 +31,9 @@ class WPPostToOrderOpTableMigrator extends MetaToCustomTableMigrator { 'source' => array( 'entity' => array( 'table_name' => $this->table_names['orders'], - 'meta_rel_column' => 'post_id', + 'meta_rel_column' => 'id', 'destination_rel_column' => 'id', - 'primary_key' => 'post_id', + 'primary_key' => 'id', ), 'meta' => array( 'table_name' => $wpdb->postmeta, diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderTableMigrator.php index e18b3876dfe..42c5dd67aa6 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToOrderTableMigrator.php @@ -43,7 +43,7 @@ class WPPostToOrderTableMigrator extends MetaToCustomTableMigrator { ), 'destination' => array( 'table_name' => $this->table_names['orders'], - 'source_rel_column' => 'post_id', + 'source_rel_column' => 'id', 'primary_key' => 'id', 'primary_key_type' => 'int', ), @@ -59,7 +59,7 @@ class WPPostToOrderTableMigrator extends MetaToCustomTableMigrator { return array( 'ID' => array( 'type' => 'int', - 'destination' => 'post_id', + 'destination' => 'id', ), 'post_status' => array( 'type' => 'string', diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php index e86bc32a6cc..70c652b9a69 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php @@ -7,6 +7,7 @@ namespace Automattic\WooCommerce\RestApi\UnitTests\Helpers; defined( 'ABSPATH' ) || exit; +use Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer; use WC_Mock_Payment_Gateway; use \WC_Tax; use \WC_Shipping_Rate; @@ -128,6 +129,20 @@ class OrderHelper { return $order; } + /** + * Helper method to create custom tables if not present. + */ + public static function create_order_custom_table_if_not_exist() { + $order_table_controller = wc_get_container() + ->get( 'Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController' ); + $order_table_controller->show_feature(); + $synchronizer = wc_get_container() + ->get( DataSynchronizer::class ); + if ( ! $synchronizer->check_orders_table_exists() ) { + $synchronizer->create_database_tables(); + } + } + /** * Helper method to create complex wp_post based order. * diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 65803762c92..b11d3cdbacd 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -35,7 +35,7 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { */ public function setUp(): void { parent::setUp(); - $this->create_order_custom_table_if_not_exist(); + OrderHelper::create_order_custom_table_if_not_exist(); $this->data_store = wc_get_container()->get( OrdersTableDataStore::class ); $this->sut = wc_get_container()->get( WPPostToCOTMigrator::class ); } @@ -75,11 +75,11 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { $wpdb->get_var( " SELECT COUNT(*) FROM {$this->data_store::get_orders_table_name()} -WHERE post_id = {$order->get_id()}" +WHERE id = {$order->get_id()}" ), 'Order record is duplicated.' ); - $order_id = $wpdb->get_var( "SELECT id FROM {$this->data_store::get_orders_table_name()} WHERE post_id = {$order->get_id()}" ); + $order_id = $wpdb->get_var( "SELECT id FROM {$this->data_store::get_orders_table_name()} WHERE id = {$order->get_id()}" ); $this->assertEquals( 1, $wpdb->get_var( @@ -160,7 +160,7 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in private function get_order_from_cot( $post_order ) { global $wpdb; $order_table = $this->data_store::get_orders_table_name(); - $query = "SELECT * FROM $order_table WHERE post_id = {$post_order->get_id()};"; + $query = "SELECT * FROM $order_table WHERE id = {$post_order->get_id()};"; // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared return $wpdb->get_row( $query ); @@ -221,7 +221,7 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in $db_order = $this->get_order_from_cot( $order ); // Verify core data. - $this->assertEquals( $order->get_id(), $db_order->post_id ); + $this->assertEquals( $order->get_id(), $db_order->id ); $this->assertEquals( 'wc-' . $order->get_status(), $db_order->status ); $this->assertEquals( 'INR', $db_order->currency ); $this->assertEquals( $order->get_customer_id(), $db_order->customer_id ); @@ -361,18 +361,4 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in } $this->sut->delete_checkpoint(); } - - /** - * Helper method to create custom tables if not present. - */ - private function create_order_custom_table_if_not_exist() { - $order_table_controller = wc_get_container() - ->get( 'Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController' ); - $order_table_controller->show_feature(); - $this->synchronizer = wc_get_container() - ->get( DataSynchronizer::class ); - if ( ! $this->synchronizer->check_orders_table_exists() ) { - $this->synchronizer->create_database_tables(); - } - } } From 0198fb736c96597e74904a7b05043c7d9d93887b Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 20 Apr 2022 18:10:19 +0530 Subject: [PATCH 044/327] Add changelog file. --- plugins/woocommerce/changelog/cot-32663 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/cot-32663 diff --git a/plugins/woocommerce/changelog/cot-32663 b/plugins/woocommerce/changelog/cot-32663 new file mode 100644 index 00000000000..c1a719f97e0 --- /dev/null +++ b/plugins/woocommerce/changelog/cot-32663 @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Modify migration to make cot.id === posts.id. From 5dbc39478423ce64130e66c6c0612b8cb440aa6c Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Wed, 20 Apr 2022 10:12:08 -0300 Subject: [PATCH 045/327] Fix task list style conflict --- packages/js/experimental/src/experimental-list/style.scss | 2 +- .../src/experimental-list/task-item/index.tsx | 2 +- .../src/experimental-list/task-item/style.scss | 4 ++-- plugins/woocommerce-admin/client/tasks/tasks.scss | 2 +- .../client/two-column-tasks/sectioned-task-list.scss | 4 ++-- .../client/two-column-tasks/sectioned-task-list.tsx | 3 +-- .../woocommerce-admin/client/two-column-tasks/style.scss | 8 ++++---- .../client/two-column-tasks/task-list.tsx | 2 +- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/js/experimental/src/experimental-list/style.scss b/packages/js/experimental/src/experimental-list/style.scss index b8e5ea3886d..638a22174ef 100644 --- a/packages/js/experimental/src/experimental-list/style.scss +++ b/packages/js/experimental/src/experimental-list/style.scss @@ -134,7 +134,7 @@ a.woocommerce-experimental-list__item { fill: $chevron-color; } - &.is-complete { + &.complete { .woocommerce-task__icon { background-color: var(--wp-admin-theme-color); } diff --git a/packages/js/experimental/src/experimental-list/task-item/index.tsx b/packages/js/experimental/src/experimental-list/task-item/index.tsx index 59b8ecd2ffd..8aa2864d296 100644 --- a/packages/js/experimental/src/experimental-list/task-item/index.tsx +++ b/packages/js/experimental/src/experimental-list/task-item/index.tsx @@ -130,7 +130,7 @@ export const TaskItem: React.FC< TaskItemProps > = ( { }, [ expanded ] ); const className = classnames( 'woocommerce-task-list__item', { - 'is-complete': completed, + complete: completed, expanded: isTaskExpanded, 'level-2': level === 2 && ! completed, 'level-1': level === 1 && ! completed, diff --git a/packages/js/experimental/src/experimental-list/task-item/style.scss b/packages/js/experimental/src/experimental-list/task-item/style.scss index 7a95dc775f0..f7fb5eb81df 100644 --- a/packages/js/experimental/src/experimental-list/task-item/style.scss +++ b/packages/js/experimental/src/experimental-list/task-item/style.scss @@ -121,7 +121,7 @@ $task-alert-yellow: #f0b849; left: 5px; } - &.is-complete { + &.complete { .woocommerce-task__icon { background-color: var(--wp-admin-theme-color); } @@ -136,7 +136,7 @@ $task-alert-yellow: #f0b849; } } - &:not(.is-complete) { + &:not(.complete) { .woocommerce-task__icon { border: 1px solid $gray-100; background: $white; diff --git a/plugins/woocommerce-admin/client/tasks/tasks.scss b/plugins/woocommerce-admin/client/tasks/tasks.scss index 1ba8c76f427..07719e15b8a 100644 --- a/plugins/woocommerce-admin/client/tasks/tasks.scss +++ b/plugins/woocommerce-admin/client/tasks/tasks.scss @@ -236,7 +236,7 @@ } .woocommerce-task-list__setup_experiment_1 { - .woocommerce-experimental-list .woocommerce-experimental-list__item.is-complete { + .woocommerce-experimental-list .woocommerce-experimental-list__item.complete { text-decoration: line-through; .woocommerce-task-list__item-title { diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss index d9e379ad043..a52ee0bdbfc 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss @@ -63,14 +63,14 @@ pointer-events: none; } - &:not(.is-complete) + &:not(.complete) .woocommerce-task-list__item-before .woocommerce-task__icon { border-color: $gray-300; } } - .woocommerce-task-list__item.is-complete .woocommerce-task__icon { + .woocommerce-task-list__item.complete .woocommerce-task__icon { background-color: $alert-green; } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx index 2703c84d0cf..ca00ac65c2c 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx @@ -220,8 +220,7 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { const className = classnames( 'woocommerce-task-list__item', { - 'is-complete': - task.isComplete, + complete: task.isComplete, 'is-disabled': task.isDisabled, } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/style.scss b/plugins/woocommerce-admin/client/two-column-tasks/style.scss index 16aa121bdcd..b0f3420fd3e 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/style.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/style.scss @@ -103,7 +103,7 @@ margin: 0 auto; justify-content: space-between; - ul li.is-complete .woocommerce-task-list__item-title { + ul li.complete .woocommerce-task-list__item-title { font-weight: 600; color: $gray-600; } @@ -178,11 +178,11 @@ height: 100%; } } - .woocommerce-task-list__item:not(.is-complete) .woocommerce-task__icon { + .woocommerce-task-list__item:not(.complete) .woocommerce-task__icon { border: 1px solid var(--wp-admin-theme-color); background: transparent; } - .woocommerce-task-list__item.is-complete:not(.complete) .woocommerce-task__icon { + .woocommerce-task-list__item.complete:not(.complete) .woocommerce-task__icon { border: none; } @@ -206,7 +206,7 @@ } @for $i from 1 through 10 { - .woocommerce-task-list__item:not(.is-complete).index-#{$i} .woocommerce-task__icon::after { + .woocommerce-task-list__item:not(.complete).index-#{$i} .woocommerce-task__icon::after { content: '#{$i}'; @extend .numbered-circle; color: var(--wp-admin-theme-color); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx index 9f9c4f468e2..a0ed8cdd85d 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx @@ -291,7 +291,7 @@ export const TaskList: React.FC< TaskListProps > = ( { const className = classnames( 'woocommerce-task-list__item index-' + index, { - 'is-complete': task.isComplete, + complete: task.isComplete, 'is-active': task.id === activeTaskId, } ); From 43b120bce78f99a1294c98bf722f6b8baa30e34d Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Wed, 20 Apr 2022 11:14:15 -0300 Subject: [PATCH 046/327] Add changelogs --- packages/js/experimental/CHANGELOG.md | 3 +++ plugins/woocommerce/changelog/fix-task-list-style-conflict | 4 ++++ 2 files changed, 7 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-task-list-style-conflict diff --git a/packages/js/experimental/CHANGELOG.md b/packages/js/experimental/CHANGELOG.md index d2c45b911ae..824278ada63 100644 --- a/packages/js/experimental/CHANGELOG.md +++ b/packages/js/experimental/CHANGELOG.md @@ -1,7 +1,9 @@ # Unreleased +- Fix setup task list style conflict #32704 - Update dependency `@wordpress/icons` to ^8.1.0 - Added Typescript type declarations. #32615 + # 3.0.1 - Update all js packages with minor/patch version changes. #8392 @@ -14,6 +16,7 @@ - Drop support for IE11. #8305 # 2.2.0 + - Make the Inbox note title clickable. #7975 - Fix incorrectly displayed note created date. #8179 - Fix inbox note css #7983 diff --git a/plugins/woocommerce/changelog/fix-task-list-style-conflict b/plugins/woocommerce/changelog/fix-task-list-style-conflict new file mode 100644 index 00000000000..0090fac46be --- /dev/null +++ b/plugins/woocommerce/changelog/fix-task-list-style-conflict @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix setup task list style conflict #32704 From 665bb46d53734bbc7339f26ce4e9d70ef5619216 Mon Sep 17 00:00:00 2001 From: Josh Betz Date: Wed, 20 Apr 2022 10:25:13 -0500 Subject: [PATCH 047/327] Changelog --- plugins/woocommerce/changelog/add-wctracker-dropins | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-wctracker-dropins diff --git a/plugins/woocommerce/changelog/add-wctracker-dropins b/plugins/woocommerce/changelog/add-wctracker-dropins new file mode 100644 index 00000000000..ef5b3fd34e3 --- /dev/null +++ b/plugins/woocommerce/changelog/add-wctracker-dropins @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add dropins to WCTracker From dab7e609712a2e42e2ab4defd776f9766fa1053e Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 21 Apr 2022 11:17:59 +1200 Subject: [PATCH 048/327] Standardize Beta Tester build scripts --- plugins/woocommerce-beta-tester/bin/build-zip.sh | 4 ++-- plugins/woocommerce-beta-tester/package.json | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce-beta-tester/bin/build-zip.sh b/plugins/woocommerce-beta-tester/bin/build-zip.sh index 8a06aa9a8da..f05c0a366d0 100755 --- a/plugins/woocommerce-beta-tester/bin/build-zip.sh +++ b/plugins/woocommerce-beta-tester/bin/build-zip.sh @@ -10,9 +10,9 @@ rm -rf "$BUILD_PATH" mkdir -p "$DEST_PATH" echo "Installing PHP and JS dependencies..." -npm install +pnpm install echo "Running JS Build..." -npm run uglify +pnpm run uglify echo "Syncing files..." rsync -rc --exclude-from="$PROJECT_PATH/.distignore" "$PROJECT_PATH/" "$DEST_PATH/" --delete --delete-excluded diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index c9044a0682f..fd75976a133 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -9,6 +9,9 @@ "title": "WooCommerce Beta Tester", "version": "2.0.5", "homepage": "http://github.com/woocommerce/woocommerce-beta-tester", + "config": { + "build_step": "pnpm run build:zip" + }, "devDependencies": { "eslint": "5.16.0", "uglify-js": "^3.5.3" @@ -20,8 +23,9 @@ } }, "scripts": { - "build": "./bin/build-zip.sh", - "build:dev": "npm run lint:js && npm run uglify", + "build": "pnpm run uglify", + "build:zip": "./bin/build-zip.sh", + "build:dev": "pnpm run lint:js && pnpm run uglify", "preuglify": "rm -f $npm_package_assets_js_min", "uglify": "for f in $npm_package_assets_js_js; do file=${f%.js}; node_modules/.bin/uglifyjs $f -c -m > $file.min.js; done", "lint:js": "eslint assets/js --ext=js" From 1be4162466dfa318a957b369ff43651d73580f87 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 21 Apr 2022 11:39:41 +1200 Subject: [PATCH 049/327] add changelogger and changelog entry --- .../changelog/.gitkeep | 0 .../changelog/fix-beta-tester-build-scripts | 4 + plugins/woocommerce-beta-tester/composer.json | 21 +- plugins/woocommerce-beta-tester/composer.lock | 945 +++++++++++++++++- 4 files changed, 957 insertions(+), 13 deletions(-) create mode 100644 plugins/woocommerce-beta-tester/changelog/.gitkeep create mode 100644 plugins/woocommerce-beta-tester/changelog/fix-beta-tester-build-scripts diff --git a/plugins/woocommerce-beta-tester/changelog/.gitkeep b/plugins/woocommerce-beta-tester/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/plugins/woocommerce-beta-tester/changelog/fix-beta-tester-build-scripts b/plugins/woocommerce-beta-tester/changelog/fix-beta-tester-build-scripts new file mode 100644 index 00000000000..6f868f14932 --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/fix-beta-tester-build-scripts @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Standardize build scripts and create a build:zip script diff --git a/plugins/woocommerce-beta-tester/composer.json b/plugins/woocommerce-beta-tester/composer.json index d3fac5fd2e1..3e0f870d65e 100644 --- a/plugins/woocommerce-beta-tester/composer.json +++ b/plugins/woocommerce-beta-tester/composer.json @@ -11,7 +11,8 @@ }, "require-dev": { "phpunit/phpunit": "6.5.14", - "woocommerce/woocommerce-sniffs": "^0.1.2" + "woocommerce/woocommerce-sniffs": "^0.1.2", + "automattic/jetpack-changelogger": "3.0.2" }, "scripts": { "test": [ @@ -32,7 +33,23 @@ "test": "Run unit tests", "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" - } + }, + "changelogger": { + "formatter": { + "filename": "../../tools/changelogger/PluginFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "versioning": "wordpress", + "changelog": "NEXT_CHANGELOG.md" + } }, "config": { "allow-plugins": { diff --git a/plugins/woocommerce-beta-tester/composer.lock b/plugins/woocommerce-beta-tester/composer.lock index 49c41986b8c..ab564f5f477 100644 --- a/plugins/woocommerce-beta-tester/composer.lock +++ b/plugins/woocommerce-beta-tester/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "27f51f47336e5ff79aba0d11f044853f", + "content-hash": "5d67ce680e077bcd75b6d052c32f9bf1", "packages": [ { "name": "composer/installers", @@ -159,6 +159,60 @@ } ], "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.2", @@ -757,16 +811,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { @@ -799,11 +853,7 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", @@ -1295,6 +1345,50 @@ "abandoned": true, "time": "2018-08-09T05:50:03+00:00" }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.2", @@ -1984,6 +2078,166 @@ }, "time": "2021-12-12T21:44:58+00:00" }, + { + "name": "symfony/console", + "version": "v5.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/900275254f0a1a2afff1ab0e11abd5587a10e1d6", + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-31T17:09:19+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, { "name": "symfony/polyfill-ctype", "version": "v1.25.0", @@ -2066,6 +2320,623 @@ ], "time": "2021-10-20T20:35:02+00:00" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/38a44b2517b470a436e1c944bf9b9ba3961137fb", + "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-18T16:18:52+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", + "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.1", @@ -2174,6 +3045,58 @@ }, "time": "2021-03-09T10:59:23+00:00" }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + }, { "name": "woocommerce/woocommerce-sniffs", "version": "0.1.2", @@ -2277,5 +3200,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "1.1.0" } From 03beccc5f2cdb4fd8a93c51bc9b9cd0f9c7dbb6f Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 21 Apr 2022 11:47:49 +1200 Subject: [PATCH 050/327] add build to project.json --- plugins/woocommerce-beta-tester/.gitignore | 3 +++ plugins/woocommerce-beta-tester/project.json | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/plugins/woocommerce-beta-tester/.gitignore b/plugins/woocommerce-beta-tester/.gitignore index 2adc1b6ef8d..06b64f2a4c3 100644 --- a/plugins/woocommerce-beta-tester/.gitignore +++ b/plugins/woocommerce-beta-tester/.gitignore @@ -13,7 +13,10 @@ project.properties *.sublime-workspace .sublimelinterrc +# Dependencies vendor/ node_modules/ + +# Built assets build/ woocommerce-beta-tester.zip diff --git a/plugins/woocommerce-beta-tester/project.json b/plugins/woocommerce-beta-tester/project.json index 044247162f8..3d6ce0a9c21 100644 --- a/plugins/woocommerce-beta-tester/project.json +++ b/plugins/woocommerce-beta-tester/project.json @@ -3,6 +3,12 @@ "sourceRoot": "plugins/woocommerce-beta-tester", "projectType": "application", "targets": { + "build": { + "executor": "@nrwl/workspace:run-script", + "options": { + "script": "build" + } + }, "changelog": { "executor": "./tools/executors/changelogger:changelog", "options": { From 3ff4b2f3098a58e9c14ca74d396c0690148f3216 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 21 Apr 2022 12:56:11 +1200 Subject: [PATCH 051/327] whitespace --- packages/js/e2e-builds/.npmrc | 2 +- packages/js/e2e-builds/project.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/js/e2e-builds/.npmrc b/packages/js/e2e-builds/.npmrc index 9cf9495031e..43c97e719a5 100644 --- a/packages/js/e2e-builds/.npmrc +++ b/packages/js/e2e-builds/.npmrc @@ -1 +1 @@ -package-lock=false \ No newline at end of file +package-lock=false diff --git a/packages/js/e2e-builds/project.json b/packages/js/e2e-builds/project.json index 09d71fc99fa..02b9146de79 100644 --- a/packages/js/e2e-builds/project.json +++ b/packages/js/e2e-builds/project.json @@ -11,4 +11,5 @@ } } } - } \ No newline at end of file + } + \ No newline at end of file From 8ec07913ba5ce099e1197fb83887ccb26cc970c9 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 20 Apr 2022 16:48:08 +0800 Subject: [PATCH 052/327] Export woo data getTaskLists type --- packages/js/data/src/onboarding/selectors.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index 8f754e7c4ed..d0f4bdefe81 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -102,6 +102,7 @@ export type OnboardingSelectors = { getTaskListsByIds: ( ids: string[] ) => ReturnType< typeof getTaskListsByIds >; + getTaskLists: () => ReturnType< typeof getTaskLists >; } & WPDataSelectors; export type OnboardingState = { From 1a0c940bddca2040f13ff957a32e933c59b9f8db Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 20 Apr 2022 16:48:36 +0800 Subject: [PATCH 053/327] Convert admin ./client/header/utils to TS --- .../client/header/{utils.js => utils.tsx} | 70 +++++++++++++------ 1 file changed, 48 insertions(+), 22 deletions(-) rename plugins/woocommerce-admin/client/header/{utils.js => utils.tsx} (61%) diff --git a/plugins/woocommerce-admin/client/header/utils.js b/plugins/woocommerce-admin/client/header/utils.tsx similarity index 61% rename from plugins/woocommerce-admin/client/header/utils.js rename to plugins/woocommerce-admin/client/header/utils.tsx index 10d2bae283c..96a368d1e4b 100644 --- a/plugins/woocommerce-admin/client/header/utils.js +++ b/plugins/woocommerce-admin/client/header/utils.tsx @@ -1,6 +1,7 @@ /** * External dependencies */ +import { isValidElement } from 'react'; import { Slot, Fill } from '@wordpress/components'; import { cloneElement } from '@wordpress/element'; @@ -12,10 +13,34 @@ import { cloneElement } from '@wordpress/element'; * @param {Array} props - Fill props. * @return {Node} Node. */ -const createOrderedChildren = ( children, order, props ) => { - return typeof children === 'function' - ? cloneElement( children( props ), { order } ) - : cloneElement( children, { ...props, order } ); +const createOrderedChildren = ( + children: React.ReactNode, + order: number, + props: Fill.Props +) => { + if ( typeof children === 'function' ) { + return cloneElement( children( props ), { order } ); + } else if ( isValidElement( children ) ) { + return cloneElement( children, { ...props, order } ); + } + throw Error( 'Invalid children type' ); +}; + +/** + * Sort fills by order for slot children. + * + * @param {Array} fills - slot's `Fill`s. + * @return {Node} Node. + */ +const sortFillsByOrder: Slot.Props[ 'children' ] = ( fills ) => { + // Copy fills array here because its type is readonly array that doesn't have .sort method in Typescript definition. + const sortedFills = [ ...fills ].sort( ( a, b ) => { + return a[ 0 ].props.order - b[ 0 ].props.order; + } ); + if ( isValidElement( sortedFills ) ) { + return sortedFills; + } + return null; }; /** @@ -36,10 +61,12 @@ const createOrderedChildren = ( children, order, props ) => { * @param {Array} param0.children - Node children. * @param {Array} param0.order - Node order. */ -export const WooHeaderItem = ( { children, order = 1 } ) => { +export const WooHeaderItem: React.FC< { order?: number } > & { + Slot: React.FC< Slot.Props >; +} = ( { children, order = 1 } ) => { return ( - { ( fillProps ) => { + { ( fillProps: Fill.Props ) => { return createOrderedChildren( children, order, fillProps ); } } @@ -48,11 +75,7 @@ export const WooHeaderItem = ( { children, order = 1 } ) => { WooHeaderItem.Slot = ( { fillProps } ) => ( - { ( fills ) => { - return fills.sort( ( a, b ) => { - return a[ 0 ].props.order - b[ 0 ].props.order; - } ); - } } + { sortFillsByOrder } ); @@ -75,23 +98,21 @@ WooHeaderItem.Slot = ( { fillProps } ) => ( * @param {Array} param0.children - Node children. * @param {Array} param0.order - Node order. */ -export const WooHeaderNavigationItem = ( { children, order = 1 } ) => { +export const WooHeaderNavigationItem: React.FC< { order?: number } > & { + Slot: React.FC< Slot.Props >; +} = ( { children, order = 1 } ) => { return ( - { ( fillProps ) => { + { ( fillProps: Fill.Props ) => { return createOrderedChildren( children, order, fillProps ); } } ); }; -WooHeaderNavigationItem.Slot = ( { fillProps } ) => ( +WooHeaderNavigationItem.Slot = ( { fillProps }: Slot.Props ) => ( - { ( fills ) => { - return fills.sort( ( a, b ) => { - return a[ 0 ].props.order - b[ 0 ].props.order; - } ); - } } + { sortFillsByOrder } ); @@ -112,15 +133,20 @@ WooHeaderNavigationItem.Slot = ( { fillProps } ) => ( * @param {Object} param0 * @param {Array} param0.children - Node children. */ -export const WooHeaderPageTitle = ( { children } ) => { +export const WooHeaderPageTitle: React.FC & { + Slot: React.FC< Slot.Props >; +} = ( { children } ) => { return { children }; }; WooHeaderPageTitle.Slot = ( { fillProps } ) => ( { ( fills ) => { - const last = fills.pop(); - return [ last ]; + const last = [ [ ...fills ].pop() ]; + if ( isValidElement( last ) ) { + return last; + } + return null; } } ); From c5c1cf438afb54ca96a2ac7d88b7f2557f88a89a Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 20 Apr 2022 16:48:53 +0800 Subject: [PATCH 054/327] Fix task types --- .../client/tasks/task-list-item.tsx | 9 +- .../client/tasks/task-list.tsx | 54 ++++--- .../woocommerce-admin/client/tasks/task.tsx | 9 +- .../woocommerce-admin/client/tasks/tasks.tsx | 46 +++--- .../client/tasks/test/task-list-item.test.tsx | 19 ++- .../client/tasks/test/task-list.test.tsx | 142 +++++++++++++++--- .../client/tasks/test/task.test.tsx | 27 +++- .../client/tasks/test/tasks.test.tsx | 15 +- 8 files changed, 236 insertions(+), 85 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/tasks/task-list-item.tsx index 42397da3df3..031754f8d4e 100644 --- a/plugins/woocommerce-admin/client/tasks/task-list-item.tsx +++ b/plugins/woocommerce-admin/client/tasks/task-list-item.tsx @@ -17,6 +17,7 @@ import { TaskItem, useSlot } from '@woocommerce/experimental'; import { useCallback } from '@wordpress/element'; import { useDispatch } from '@wordpress/data'; import { WooOnboardingTaskListItem } from '@woocommerce/onboarding'; +import { History } from 'history'; /** * Internal dependencies @@ -27,7 +28,9 @@ export type TaskListItemProps = { isExpandable: boolean; isExpanded: boolean; setExpandedTask: ( id: string ) => void; - task: TaskType; + task: TaskType & { + onClick?: () => void; + }; }; export const TaskListItem: React.FC< TaskListItemProps > = ( { @@ -131,7 +134,9 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( { if ( actionUrl.startsWith( 'http' ) ) { window.location.href = actionUrl; } else { - getHistory().push( getNewPath( {}, actionUrl, {} ) ); + ( getHistory() as History ).push( + getNewPath( {}, actionUrl, {} ) + ); } return; } diff --git a/plugins/woocommerce-admin/client/tasks/task-list.tsx b/plugins/woocommerce-admin/client/tasks/task-list.tsx index 25168c76142..eeb139438dd 100644 --- a/plugins/woocommerce-admin/client/tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/tasks/task-list.tsx @@ -10,6 +10,7 @@ import { getVisibleTasks, ONBOARDING_STORE_NAME, TaskListType, + WCDataSelector, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { Text, List, CollapsibleList } from '@woocommerce/experimental'; @@ -26,9 +27,6 @@ export type TaskListProps = TaskListType & { query: { task?: string; }; - eventName?: string; - twoColumns?: boolean; - keepCompletedTaskList?: boolean; }; export const TaskList: React.FC< TaskListProps > = ( { @@ -41,7 +39,7 @@ export const TaskList: React.FC< TaskListProps > = ( { displayProgressHeader = false, query, } ) => { - const { profileItems } = useSelect( ( select ) => { + const { profileItems } = useSelect( ( select: WCDataSelector ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { @@ -95,17 +93,16 @@ export const TaskList: React.FC< TaskListProps > = ( { visibleTasks.length - 2 ); const collapseLabel = __( 'Show less', 'woocommerce' ); - const ListComp = isCollapsible ? CollapsibleList : List; - const listProps = isCollapsible - ? { - collapseLabel, - expandLabel, - show: 2, - onCollapse: () => recordEvent( eventPrefix + 'collapse', {} ), - onExpand: () => recordEvent( eventPrefix + 'expand', {} ), - } - : {}; + const taskListItems = visibleTasks.map( ( task ) => ( + + ) ); return ( <> @@ -135,17 +132,24 @@ export const TaskList: React.FC< TaskListProps > = ( { - - { visibleTasks.map( ( task ) => ( - - ) ) } - + { isCollapsible ? ( + + recordEvent( eventPrefix + 'collapse', {} ) + } + onExpand={ () => + recordEvent( eventPrefix + 'expand', {} ) + } + > + { taskListItems } + + ) : ( + { taskListItems } + ) } diff --git a/plugins/woocommerce-admin/client/tasks/task.tsx b/plugins/woocommerce-admin/client/tasks/task.tsx index 5d57bd6b20f..3be70a57293 100644 --- a/plugins/woocommerce-admin/client/tasks/task.tsx +++ b/plugins/woocommerce-admin/client/tasks/task.tsx @@ -1,13 +1,12 @@ /** * External dependencies */ -import { addFilter } from '@wordpress/hooks'; import { WooOnboardingTask } from '@woocommerce/onboarding'; import { getHistory, getNewPath } from '@woocommerce/navigation'; import { ONBOARDING_STORE_NAME, TaskType } from '@woocommerce/data'; import { useCallback } from '@wordpress/element'; import { useDispatch } from '@wordpress/data'; - +import { History } from 'history'; /** * Internal dependencies */ @@ -15,8 +14,8 @@ import { WooHeaderNavigationItem, WooHeaderPageTitle } from '~/header/utils'; import { BackButton } from './back-button'; export type TaskProps = { - query: { task: string }; - task?: TaskType; + query: { task?: string }; + task: TaskType; }; export const Task: React.FC< TaskProps > = ( { query, task } ) => { @@ -29,7 +28,7 @@ export const Task: React.FC< TaskProps > = ( { query, task } ) => { const onComplete = useCallback( ( options ) => { optimisticallyCompleteTask( id ); - getHistory().push( + ( getHistory() as History ).push( options && options.redirectPath ? options.redirectPath : getNewPath( {}, '/', {} ) diff --git a/plugins/woocommerce-admin/client/tasks/tasks.tsx b/plugins/woocommerce-admin/client/tasks/tasks.tsx index 552693006c0..60cf139abdf 100644 --- a/plugins/woocommerce-admin/client/tasks/tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/tasks.tsx @@ -6,7 +6,13 @@ import { MenuGroup, MenuItem } from '@wordpress/components'; import { check } from '@wordpress/icons'; import { Fragment, useEffect } from '@wordpress/element'; import { useDispatch, useSelect } from '@wordpress/data'; -import { ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME } from '@woocommerce/data'; +import { + ONBOARDING_STORE_NAME, + OPTIONS_STORE_NAME, + WCDataSelector, + TaskListType, + TaskType, +} from '@woocommerce/data'; import { useExperiment } from '@woocommerce/explat'; import { recordEvent } from '@woocommerce/tracks'; @@ -17,7 +23,7 @@ import { DisplayOption } from '~/activity-panel/display-options'; import { Task } from './task'; import { TasksPlaceholder, TasksPlaceholderProps } from './placeholder'; import './tasks.scss'; -import { TaskListProps, TaskList } from './task-list'; +import { TaskList } from './task-list'; import { TaskList as TwoColumnTaskList } from '../two-column-tasks/task-list'; import { SectionedTaskList } from '../two-column-tasks/sectioned-task-list'; import TwoColumnTaskListPlaceholder from '../two-column-tasks/placeholder'; @@ -29,7 +35,7 @@ export type TasksProps = { query: { task?: string }; }; -function getTaskListComponent( taskListId: string ): React.FC< TaskListProps > { +function getTaskListComponent( taskListId: string ) { switch ( taskListId ) { case 'setup_experiment_1': return TwoColumnTaskList; @@ -61,14 +67,16 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { 'woocommerce_tasklist_progression' ); - const { isResolving, taskLists } = useSelect( ( select ) => { - return { - isResolving: ! select( - ONBOARDING_STORE_NAME - ).hasFinishedResolution( 'getTaskLists' ), - taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), - }; - } ); + const { isResolving, taskLists } = useSelect( + ( select: WCDataSelector ) => { + return { + isResolving: ! select( + ONBOARDING_STORE_NAME + ).hasFinishedResolution( 'getTaskLists' ), + taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), + }; + } + ); const getCurrentTask = () => { if ( ! task ) { @@ -76,11 +84,14 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { } const tasks = taskLists.reduce( - ( acc, taskList ) => [ ...acc, ...taskList.tasks ], + ( acc: TaskType[], taskList: TaskListType ) => [ + ...acc, + ...taskList.tasks, + ], [] ); - const currentTask = tasks.find( ( t ) => t.id === task ); + const currentTask = tasks.find( ( t: TaskType ) => t.id === task ); if ( ! currentTask ) { return null; @@ -89,7 +100,7 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { return currentTask; }; - const toggleTaskList = ( taskList ) => { + const toggleTaskList = ( taskList: TaskListType ) => { const { id, eventPrefix, isHidden } = taskList; const newValue = ! isHidden; @@ -137,12 +148,12 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { } return taskLists - .filter( ( { id } ) => + .filter( ( { id }: TaskListType ) => experimentAssignment?.variationName === 'treatment' ? id.endsWith( 'two_column' ) : ! id.endsWith( 'two_column' ) ) - .map( ( taskList ) => { + .map( ( taskList: TaskListType ) => { const { id, isHidden, isVisible, isToggleable } = taskList; if ( ! isVisible ) { @@ -150,7 +161,6 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { } const TaskListComponent = getTaskListComponent( id ); - return ( = ( { query } ) => { > toggleTaskList( taskList ) } diff --git a/plugins/woocommerce-admin/client/tasks/test/task-list-item.test.tsx b/plugins/woocommerce-admin/client/tasks/test/task-list-item.test.tsx index ef9d34d7e18..2e3c06ef642 100644 --- a/plugins/woocommerce-admin/client/tasks/test/task-list-item.test.tsx +++ b/plugins/woocommerce-admin/client/tasks/test/task-list-item.test.tsx @@ -6,6 +6,7 @@ import userEvent from '@testing-library/user-event'; import { SlotFillProvider } from '@wordpress/components'; import { useDispatch } from '@wordpress/data'; import { useSlot } from '@woocommerce/experimental'; +import { TaskType } from '@woocommerce/data'; /** * Internal dependencies @@ -64,20 +65,26 @@ jest.mock( '@woocommerce/experimental', () => { }; } ); -const task = { +const task: TaskType = { id: 'optional', title: 'This task is optional', isComplete: false, - visible: true, time: '1 minute', isDismissable: true, isSnoozeable: true, - type: 'setup', - action: 'CTA (optional)', content: 'This is the optional task content', additionalInfo: 'This is the task additional info', - expandable: true, - expanded: true, + parentId: '', + isDismissed: false, + isSnoozed: false, + isVisible: true, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, }; describe( 'TaskListItem', () => { diff --git a/plugins/woocommerce-admin/client/tasks/test/task-list.test.tsx b/plugins/woocommerce-admin/client/tasks/test/task-list.test.tsx index 7b0937898fa..4f5516b67d0 100644 --- a/plugins/woocommerce-admin/client/tasks/test/task-list.test.tsx +++ b/plugins/woocommerce-admin/client/tasks/test/task-list.test.tsx @@ -3,17 +3,21 @@ */ import { render } from '@testing-library/react'; import { recordEvent } from '@woocommerce/tracks'; +import { TaskType } from '@woocommerce/data'; /** * Internal dependencies */ import { TaskList } from '../task-list'; +import { TaskListItemProps } from '../task-list-item'; jest.mock( '@woocommerce/tracks', () => ( { recordEvent: jest.fn(), } ) ); jest.mock( '../task-list-item', () => ( { - TaskListItem: ( props ) =>
{ props.task.title }
, + TaskListItem: ( props: TaskListItemProps ) => ( +
{ props.task.title }
+ ), } ) ); jest.mock( '../task-list-menu', () => ( { TaskListMenu: jest @@ -26,59 +30,94 @@ jest.mock( '@woocommerce/components', () => ( { .mockImplementation( ( { count } ) =>
Count:{ count }
), } ) ); -const tasks = { +const tasks: { [ key: string ]: TaskType[] } = { setup: [ { id: 'optional', title: 'This task is optional', isComplete: false, - visible: true, + isVisible: true, time: '1 minute', isDismissable: true, - type: 'setup', - action: 'CTA (optional)', content: 'This is the optional task content', - additionalInfo: 'This is the task additional info', - expandable: true, - expanded: true, + isDismissed: false, + isSnoozed: false, + isSnoozeable: false, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + parentId: '', + additionalInfo: '', + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, }, { id: 'required', title: 'This task is required', - container: null, isComplete: false, - visible: true, + isVisible: true, time: '1 minute', isDismissable: false, - type: 'setup', - action: 'CTA (required)', actionLabel: 'This is the action label', content: 'This is the required task content', - expandable: false, + isDismissed: false, + isSnoozed: false, + isSnoozeable: false, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + parentId: '', + additionalInfo: '', + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, }, { id: 'completed', title: 'This task is completed', - container: null, isComplete: true, - visible: true, + isVisible: true, time: '1 minute', isDismissable: true, - type: 'setup', + isDismissed: false, + isSnoozed: false, + isSnoozeable: false, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + content: '', + parentId: '', + additionalInfo: '', + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, }, ], extension: [ { id: 'extension', title: 'This task is an extension', - container: null, isComplete: false, - visible: true, + isVisible: true, time: '1 minute', isDismissable: true, - type: 'extension', - action: 'CTA (extension)', content: 'This is the extension task content', + isDismissed: false, + isSnoozed: false, + isSnoozeable: false, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + parentId: '', + additionalInfo: '', + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, }, ], }; @@ -96,6 +135,11 @@ describe( 'TaskList', () => { tasks={ [] } title="List title" query={ {} } + isVisible={ true } + isHidden={ false } + isComplete={ false } + displayProgressHeader={ false } + keepCompletedTaskList="no" /> ); expect( recordEvent ).toHaveBeenCalledTimes( 1 ); @@ -113,6 +157,11 @@ describe( 'TaskList', () => { tasks={ [] } title="List title" query={ {} } + isVisible={ true } + isHidden={ false } + isComplete={ false } + displayProgressHeader={ false } + keepCompletedTaskList="no" /> ); expect( recordEvent ).toHaveBeenCalledTimes( 1 ); @@ -125,9 +174,16 @@ describe( 'TaskList', () => { it( 'should render the task title and incomplete task number', () => { const { queryByText } = render( ); const incompleteCount = tasks.setup.filter( @@ -140,9 +196,16 @@ describe( 'TaskList', () => { it( 'should render all tasks', () => { const { queryByText } = render( ); for ( const task of tasks.setup ) { @@ -153,7 +216,18 @@ describe( 'TaskList', () => { it( 'should not display isDismissed tasks', () => { const dismissedTask = [ { ...tasks.setup[ 0 ], isDismissed: true } ]; const { queryByText } = render( - + ); expect( queryByText( dismissedTask[ 0 ].title ) @@ -169,7 +243,18 @@ describe( 'TaskList', () => { }, ]; const { queryByText } = render( - + ); expect( queryByText( dismissedTask[ 0 ].title ) @@ -185,7 +270,18 @@ describe( 'TaskList', () => { }, ]; const { queryByText } = render( - + ); expect( queryByText( dismissedTask[ 0 ].title ) ).toBeInTheDocument(); } ); diff --git a/plugins/woocommerce-admin/client/tasks/test/task.test.tsx b/plugins/woocommerce-admin/client/tasks/test/task.test.tsx index 118f2591c98..e3d5c085659 100644 --- a/plugins/woocommerce-admin/client/tasks/test/task.test.tsx +++ b/plugins/woocommerce-admin/client/tasks/test/task.test.tsx @@ -6,6 +6,29 @@ import { useDispatch } from '@wordpress/data'; import userEvent from '@testing-library/user-event'; import { getHistory } from '@woocommerce/navigation'; import { WooOnboardingTask } from '@woocommerce/onboarding'; +import { TaskType } from '@woocommerce/data'; + +const task: TaskType = { + id: 'optional', + title: 'Test', + isComplete: false, + time: '1 minute', + isDismissable: true, + isSnoozeable: true, + content: 'This is the optional task content', + additionalInfo: 'This is the task additional info', + parentId: '', + isDismissed: false, + isSnoozed: false, + isVisible: true, + isDisabled: false, + snoozedUntil: 0, + isVisited: false, + canView: true, + isActioned: false, + eventPrefix: '', + level: 0, +}; /** * Internal dependencies @@ -66,7 +89,7 @@ describe( 'Task', () => { it( 'should pass the task name as id to the OnboardingTask.Slot', () => { const { queryByText } = render(
- +
); expect( queryByText( 'test' ) ).toBeInTheDocument(); @@ -81,7 +104,7 @@ describe( 'Task', () => { } ); const { getByRole } = render(
- +
); act( () => { diff --git a/plugins/woocommerce-admin/client/tasks/test/tasks.test.tsx b/plugins/woocommerce-admin/client/tasks/test/tasks.test.tsx index fde05515354..dd598de40f2 100644 --- a/plugins/woocommerce-admin/client/tasks/test/tasks.test.tsx +++ b/plugins/woocommerce-admin/client/tasks/test/tasks.test.tsx @@ -11,6 +11,9 @@ import userEvent from '@testing-library/user-event'; * Internal dependencies */ import { Tasks } from '../tasks'; +import { TaskProps } from '../task'; +import { TaskListProps } from '../task-list'; +import { TaskListProps as TwoColumnTaskListProps } from '../../two-column-tasks/task-list'; jest.mock( '@wordpress/data', () => { // Require the original module to not be mocked... @@ -28,15 +31,17 @@ jest.mock( '@woocommerce/explat' ); jest.mock( '@woocommerce/tracks' ); jest.mock( '../task-list', () => ( { - TaskList: ( { id } ) =>
task-list:{ id }
, + TaskList: ( { id }: TaskListProps ) =>
task-list:{ id }
, } ) ); jest.mock( '../../two-column-tasks/task-list', () => ( { - TaskList: ( { id } ) =>
two-column-list:{ id }
, + TaskList: ( { id }: TwoColumnTaskListProps ) => ( +
two-column-list:{ id }
+ ), } ) ); jest.mock( '../task', () => ( { - Task: ( { query } ) =>
task:{ query.task }
, + Task: ( { query }: TaskProps ) =>
task:{ query.task }
, } ) ); jest.mock( '../placeholder', () => ( { @@ -44,7 +49,9 @@ jest.mock( '../placeholder', () => ( { } ) ); jest.mock( '~/activity-panel/display-options', () => ( { - DisplayOption: ( { children } ) =>
{ children }
, + DisplayOption: ( { children }: { children: React.ReactNode } ) => ( +
{ children }
+ ), } ) ); describe( 'Task', () => { From 4747d9af14ab899e8bbad67e5ceeca8101a203fe Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 20 Apr 2022 17:20:31 +0800 Subject: [PATCH 055/327] Add changelog --- plugins/woocommerce/changelog/fix-admin-task-types | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-admin-task-types diff --git a/plugins/woocommerce/changelog/fix-admin-task-types b/plugins/woocommerce/changelog/fix-admin-task-types new file mode 100644 index 00000000000..cc6c28334c6 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-admin-task-types @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Fix typescript type errors in react admin ./client/tasks/task & ./client/tasks/tests From e3f7ab99e06f1cb8994d42fed2414c8b63424aa2 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 20 Apr 2022 17:27:35 +0800 Subject: [PATCH 056/327] Add woo data changelog --- packages/js/data/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/data/CHANGELOG.md b/packages/js/data/CHANGELOG.md index 1dc2a2798ec..fc460ef6b4c 100644 --- a/packages/js/data/CHANGELOG.md +++ b/packages/js/data/CHANGELOG.md @@ -3,11 +3,11 @@ - Update dependency `@wordpress/hooks` to ^3.5.0 - Add `is_offline` attribute for `Plugin` type. #32467 - Added Typescript type declarations. #32615 -- Update type definitions. #32683, #32695 +- Update type definitions. #32683, #32695, #32698 - Make `isResolving` param `args` optional. - Update `Plugin` type to reflect the latest changes. - Maps "raw" payment `ActionDispatchers` to the registered actions. - - Add `getTaskListsByIds` selector type + - Add `getTaskListsByIds`, `getTaskLists` selector type - Update `TaskType` & `TaskListType` types - Convert `use-user-preferences.js` to TS. #32695 From 8aca258df8bddd0b61acbae398f37f129ed885f1 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 11:07:25 +0800 Subject: [PATCH 057/327] Fix header utils --- plugins/woocommerce-admin/client/header/utils.tsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce-admin/client/header/utils.tsx b/plugins/woocommerce-admin/client/header/utils.tsx index 96a368d1e4b..e41f599efc4 100644 --- a/plugins/woocommerce-admin/client/header/utils.tsx +++ b/plugins/woocommerce-admin/client/header/utils.tsx @@ -37,10 +37,7 @@ const sortFillsByOrder: Slot.Props[ 'children' ] = ( fills ) => { const sortedFills = [ ...fills ].sort( ( a, b ) => { return a[ 0 ].props.order - b[ 0 ].props.order; } ); - if ( isValidElement( sortedFills ) ) { - return sortedFills; - } - return null; + return <>{ sortedFills }; }; /** @@ -142,11 +139,7 @@ export const WooHeaderPageTitle: React.FC & { WooHeaderPageTitle.Slot = ( { fillProps } ) => ( { ( fills ) => { - const last = [ [ ...fills ].pop() ]; - if ( isValidElement( last ) ) { - return last; - } - return null; + return <>{ [ ...fills ].pop() }; } } ); From ab3a015850dc5371e4cbebfe68f59a4880e53241 Mon Sep 17 00:00:00 2001 From: RJChow Date: Mon, 4 Apr 2022 15:40:08 +0800 Subject: [PATCH 058/327] add slotfill mount point --- .../admin/settings/class-wc-settings-payment-gateways.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php index f3a798954f6..19c2d45bea4 100644 --- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php +++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php @@ -25,6 +25,7 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { $this->id = 'checkout'; // @todo In future versions this may make more sense as 'payment' however to avoid breakage lets leave this alone until we refactor settings APIs in general. $this->label = _x( 'Payments', 'Settings tab label', 'woocommerce' ); + add_action( 'woocommerce_admin_field_payment_gateways_banner', array( $this, 'payment_gateways_banner' ) ); add_action( 'woocommerce_admin_field_payment_gateways', array( $this, 'payment_gateways_setting' ) ); parent::__construct(); } @@ -54,6 +55,7 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { 'type' => 'title', 'id' => 'payment_gateways_options', ), + array('type' => 'payment_gateways_banner'), array( 'type' => 'payment_gateways', ), @@ -105,6 +107,11 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { protected function run_gateway_admin_options( $gateway ) { $gateway->admin_options(); } + public function payment_gateways_banner() { + ?> +
+ Date: Mon, 4 Apr 2022 15:46:21 +0800 Subject: [PATCH 059/327] insert react --- plugins/woocommerce-admin/client/index.js | 5 +++++ .../admin/settings/class-wc-settings-payment-gateways.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index 0e58be01f9f..4a6d514d3eb 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -64,12 +64,17 @@ if ( appRoot ) { // Render notices just above the WP content div. const wpBody = document.getElementById( 'wpbody-content' ); + console.log( 'mainform', mainform ); const wrap = wpBody.querySelector( '.wrap.woocommerce' ) || wpBody.querySelector( '.wrap' ); const noticeContainer = document.createElement( 'div' ); + render( +
HOOKED
, + mainform + ) render(
diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php index 19c2d45bea4..e690d453bb3 100644 --- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php +++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php @@ -109,7 +109,7 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { } public function payment_gateways_banner() { ?> -
+
Date: Tue, 5 Apr 2022 12:34:24 +0800 Subject: [PATCH 060/327] design banner --- plugins/woocommerce-admin/client/index.js | 40 ++++++++++++-- .../payments-recommendations-banner.tsx | 54 +++++++++++++++++++ .../payments/payment-recommendations.scss | 2 +- .../class-wc-settings-payment-gateways.php | 13 ++--- 4 files changed, 97 insertions(+), 12 deletions(-) create mode 100644 plugins/woocommerce-admin/client/payments-recommendations-banner.tsx diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index 4a6d514d3eb..92f88f654e6 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -16,6 +16,7 @@ import { getAdminSetting } from '~/utils/admin-settings'; import { PageLayout, EmbedLayout, PrimaryLayout as NoticeArea } from './layout'; import { CustomerEffortScoreTracksContainer } from './customer-effort-score-tracks'; import { EmbeddedBodyLayout } from './embedded-body-layout'; +import { PaymentsRecommendationsBanner } from './payments-recommendations-banner'; // Modify webpack pubilcPath at runtime based on location of WordPress Plugin. // eslint-disable-next-line no-undef,camelcase @@ -26,6 +27,34 @@ const embeddedRoot = document.getElementById( 'woocommerce-embedded-root' ); const settingsGroup = 'wc_admin'; const hydrateUser = getAdminSetting( 'currentUserData' ); +// TODO: move this to another module +const Banner = () => { + // if feature flag is enabled + // show banned + // else show existing h2 description and stuff + const featureFlag = true; + + if ( featureFlag ) { + return (<> + + + ) + } else { + return ( + <> +

Payment Methods

+
+

+ Installed payment methods are listed below and can be + sorted to control their display order on the frontend. +

+
+ + ); + } +}; + + if ( appRoot ) { let HydratedPageLayout = withSettingsHydration( settingsGroup, @@ -64,17 +93,17 @@ if ( appRoot ) { // Render notices just above the WP content div. const wpBody = document.getElementById( 'wpbody-content' ); - console.log( 'mainform', mainform ); + const mainform = document.getElementById( 'wc_payment_gateways_banner_slotfill' ); const wrap = wpBody.querySelector( '.wrap.woocommerce' ) || wpBody.querySelector( '.wrap' ); const noticeContainer = document.createElement( 'div' ); + // always insert the slotfill -> problem because mainform element does not always exist + // note this slotfill is not part of the form + // how do we know which page we are on? + render( Banner(), mainform ); - render( -
HOOKED
, - mainform - ) render(
@@ -104,3 +133,4 @@ if ( ); } )(); } + diff --git a/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx new file mode 100644 index 00000000000..962e1aafee0 --- /dev/null +++ b/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx @@ -0,0 +1,54 @@ +import { Card, CardHeader, CardFooter, Button } from '@wordpress/components'; +import { Text } from '@woocommerce/experimental'; +import { EllipsisMenu, List, Pill } from '@woocommerce/components'; +import { __ } from '@wordpress/i18n'; + + +export const PaymentsRecommendationsBanner = () => { + return ( + + +
+ + { __( 'Additional ways to get paid', 'woocommerce' ) } + + + { __( + 'We recommend adding one of the following payment extensions to your store. The extension will be installed and activated for you when you click "Get started".', + 'woocommerce' + ) } + +
+
+ ( +
+ +
+ ) } + /> +
+
+ + {/* TODO fix font colour and add icons */} + { __( 'Accepted payment methods include:', 'woocommerce' ) } + +
+ ); +}; diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss index 8a7ce28c9ed..3244c2c9ecd 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss @@ -1,5 +1,5 @@ .woocommerce-recommended-payments-card { - margin: 0 15px 10px 0; + margin: 0 0 10px 0; animation: isLoaded; animation-duration: 250ms; diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php index e690d453bb3..09dd7e22723 100644 --- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php +++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php @@ -49,12 +49,13 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { protected function get_settings_for_default_section() { $settings = array( - array( - 'title' => __( 'Payment methods', 'woocommerce' ), - 'desc' => __( 'Installed payment methods are listed below and can be sorted to control their display order on the frontend.', 'woocommerce' ), - 'type' => 'title', - 'id' => 'payment_gateways_options', - ), + // array( + // 'title' => __( 'Payment methods', 'woocommerce' ), + // 'desc' => __( 'Installed payment methods are listed below and can be sorted to control their display order on the frontend.', 'woocommerce' ), + // 'type' => 'title', + // 'id' => 'payment_gateways_options', + // ), + // TODO: write unit test to assert that mount point has been inserted array('type' => 'payment_gateways_banner'), array( 'type' => 'payment_gateways', From 9a95dc028fd8d51af6b6c2d3774cb77fb9de2719 Mon Sep 17 00:00:00 2001 From: RJChow Date: Thu, 7 Apr 2022 00:38:38 +0800 Subject: [PATCH 061/327] implement slotfill --- plugins/woocommerce-admin/client/index.js | 77 +++++---- .../payments-recommendations-banner.tsx | 54 ------ .../client/payments-welcome/index.tsx | 2 +- .../client/payments/banner.js | 156 ++++++++++++++++++ .../payment-recommendations-banner.tsx | 73 ++++++++ .../payments/payment-recommendations.scss | 38 ++++- .../class-wc-settings-payment-gateways.php | 12 +- 7 files changed, 320 insertions(+), 92 deletions(-) delete mode 100644 plugins/woocommerce-admin/client/payments-recommendations-banner.tsx create mode 100644 plugins/woocommerce-admin/client/payments/banner.js create mode 100644 plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index 92f88f654e6..6b34a981b37 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -16,7 +16,10 @@ import { getAdminSetting } from '~/utils/admin-settings'; import { PageLayout, EmbedLayout, PrimaryLayout as NoticeArea } from './layout'; import { CustomerEffortScoreTracksContainer } from './customer-effort-score-tracks'; import { EmbeddedBodyLayout } from './embedded-body-layout'; -import { PaymentsRecommendationsBanner } from './payments-recommendations-banner'; +import { PaymentsRecommendationsBanner } from './payments/payment-recommendations-banner'; + +import { createSlotFill, SlotFillProvider } from '@wordpress/components'; +import { registerPlugin, PluginArea } from '@wordpress/plugins'; // Modify webpack pubilcPath at runtime based on location of WordPress Plugin. // eslint-disable-next-line no-undef,camelcase @@ -27,33 +30,47 @@ const embeddedRoot = document.getElementById( 'woocommerce-embedded-root' ); const settingsGroup = 'wc_admin'; const hydrateUser = getAdminSetting( 'currentUserData' ); -// TODO: move this to another module -const Banner = () => { - // if feature flag is enabled - // show banned - // else show existing h2 description and stuff - const featureFlag = true; +const { Fill, Slot } = createSlotFill( 'banner' ); +// Fill.slot = Slot; - if ( featureFlag ) { - return (<> - - - ) - } else { - return ( - <> -

Payment Methods

-
-

- Installed payment methods are listed below and can be - sorted to control their display order on the frontend. -

-
- - ); - } +const PaymentsBannerFill = () => { + return ( + + + + ); }; +const PaymentsGatewaysOptionsDescroption = () => { + return ( + +

Payment Methods

+
+

+ Installed payment methods are listed below and can be sorted + to control their display order on the frontend. +

+
+
+ ); +}; + +registerPlugin( 'banner', { scope: 'my-scope', render: PaymentsBannerFill } ); +registerPlugin( 'banner2', { scope: 'my-scope', render: PaymentsGatewaysOptionsDescroption } ); + +// TODO: move this to another module +const Banner = () => { + return ( + <> + +
+ +
+ +
+ + ); +}; if ( appRoot ) { let HydratedPageLayout = withSettingsHydration( @@ -94,14 +111,15 @@ if ( appRoot ) { // Render notices just above the WP content div. const wpBody = document.getElementById( 'wpbody-content' ); - const mainform = document.getElementById( 'wc_payment_gateways_banner_slotfill' ); + const mainform = document.getElementById( + 'wc_payment_gateways_banner_slotfill' + ); const wrap = wpBody.querySelector( '.wrap.woocommerce' ) || wpBody.querySelector( '.wrap' ); const noticeContainer = document.createElement( 'div' ); - // always insert the slotfill -> problem because mainform element does not always exist - // note this slotfill is not part of the form - // how do we know which page we are on? + + // TODO: note this slotfill is not part of the form render( Banner(), mainform ); render( @@ -133,4 +151,3 @@ if ( ); } )(); } - diff --git a/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx deleted file mode 100644 index 962e1aafee0..00000000000 --- a/plugins/woocommerce-admin/client/payments-recommendations-banner.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { Card, CardHeader, CardFooter, Button } from '@wordpress/components'; -import { Text } from '@woocommerce/experimental'; -import { EllipsisMenu, List, Pill } from '@woocommerce/components'; -import { __ } from '@wordpress/i18n'; - - -export const PaymentsRecommendationsBanner = () => { - return ( - - -
- - { __( 'Additional ways to get paid', 'woocommerce' ) } - - - { __( - 'We recommend adding one of the following payment extensions to your store. The extension will be installed and activated for you when you click "Get started".', - 'woocommerce' - ) } - -
-
- ( -
- -
- ) } - /> -
-
- - {/* TODO fix font colour and add icons */} - { __( 'Accepted payment methods include:', 'woocommerce' ) } - -
- ); -}; diff --git a/plugins/woocommerce-admin/client/payments-welcome/index.tsx b/plugins/woocommerce-admin/client/payments-welcome/index.tsx index df9877dc57b..7470896a035 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/index.tsx +++ b/plugins/woocommerce-admin/client/payments-welcome/index.tsx @@ -72,7 +72,7 @@ const LearnMore = () => { ); }; -const PaymentMethods = () => ( +export const PaymentMethods = () => (
diff --git a/plugins/woocommerce-admin/client/payments/banner.js b/plugins/woocommerce-admin/client/payments/banner.js new file mode 100644 index 00000000000..d22078ddd9d --- /dev/null +++ b/plugins/woocommerce-admin/client/payments/banner.js @@ -0,0 +1,156 @@ +/** + * External dependencies + */ +import { createElement } from '@wordpress/element'; + +export default () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx new file mode 100644 index 00000000000..1be58e17761 --- /dev/null +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx @@ -0,0 +1,73 @@ +import { Card, CardHeader, CardFooter, Button } from '@wordpress/components'; +import { Text } from '@woocommerce/experimental'; +import { EllipsisMenu, List, Pill } from '@woocommerce/components'; +import { __ } from '@wordpress/i18n'; +import Banner from './banner'; +import { PaymentMethods } from '../payments-welcome'; + +/** + * Internal dependencies + */ +import './payment-recommendations.scss'; +import { CardBody } from '@wordpress/components'; + +export const PaymentsRecommendationsBanner = () => { + return ( + + +
+ +
+
+ + { __( + 'Accept Payments and manage your business.', + 'woocommerce' + ) } + + + { __( + 'By using WooCommerce Payments you agree to be bound by our Terms of Service and acknowledge that you have read our Privacy Policy', + 'woocommerce' + ) } + + +
+
+ +
+ + { __( + 'Accepted payment methods include:', + 'woocommerce' + ) } + +
+
+ +
+
+ + { __( '& more.', 'woocommerce' ) } + +
+
+
+ ); +}; diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss index 3244c2c9ecd..43c7363d0b8 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss @@ -1,5 +1,41 @@ +.woocommerce-recommended-payments-banner { + margin: 0 15px 10px 0; + animation: isLoaded; + animation-duration: 250ms; + + .woocommerce-recommended-payments-banner__body { + display: flex; + align-items: center; + justify-content: center; + padding-bottom: 0px; + } + + .woocommerce-recommended-payments-banner__text_container { + width: 40%; + margin-inline: 24px; + + * { + margin-block: 1rem + } + } + + .woocommerce-recommended-payments-banner__image_container { + + } + + .woocommerce-recommended-payments-banner__footer { + display: flex; + align-items: center; + justify-content: center; + } + + .wcpay-connect-account-page-payment-methods > svg { + height: 28px + } +} + .woocommerce-recommended-payments-card { - margin: 0 0 10px 0; + margin: 0 15px 10px 0; animation: isLoaded; animation-duration: 250ms; diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php index 09dd7e22723..572c030636f 100644 --- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php +++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php @@ -49,12 +49,12 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { protected function get_settings_for_default_section() { $settings = array( - // array( - // 'title' => __( 'Payment methods', 'woocommerce' ), - // 'desc' => __( 'Installed payment methods are listed below and can be sorted to control their display order on the frontend.', 'woocommerce' ), - // 'type' => 'title', - // 'id' => 'payment_gateways_options', - // ), + array( + // 'title' => __( 'Payment methods', 'woocommerce' ), + // 'desc' => __( 'Installed payment methods are listed below and can be sorted to control their display order on the frontend.', 'woocommerce' ), + 'type' => 'title', // this is needed as tag is generated by this element, even if it has no other content + // 'id' => 'payment_gateways_options', + ), // TODO: write unit test to assert that mount point has been inserted array('type' => 'payment_gateways_banner'), array( From aaf5c9ff5aaed71f6ce1eed83f05e765f797d2d3 Mon Sep 17 00:00:00 2001 From: RJChow Date: Tue, 19 Apr 2022 16:02:23 +0800 Subject: [PATCH 062/327] Refactored and added new payment icons --- .../client/payments-welcome/cards/amex.js | 2 +- .../client/payments-welcome/cards/applepay.js | 2 +- .../client/payments-welcome/cards/cb.js | 2 +- .../client/payments-welcome/cards/diners.js | 2 +- .../client/payments-welcome/cards/discover.js | 2 +- .../client/payments-welcome/cards/giropay.js | 47 +++++++++++++++++++ .../client/payments-welcome/cards/gpay.js | 2 +- .../client/payments-welcome/cards/index.js | 13 +++++ .../client/payments-welcome/cards/jcb.js | 2 +- .../client/payments-welcome/cards/maestro.js | 2 +- .../payments-welcome/cards/mastercard.js | 2 +- .../client/payments-welcome/cards/sofort.js | 30 ++++++++++++ .../client/payments-welcome/cards/unionpay.js | 2 +- .../client/payments-welcome/cards/visa.js | 2 +- .../client/payments-welcome/index.tsx | 22 +++++---- .../client/payments/banner.js | 16 +++---- 16 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 plugins/woocommerce-admin/client/payments-welcome/cards/giropay.js create mode 100644 plugins/woocommerce-admin/client/payments-welcome/cards/index.js create mode 100644 plugins/woocommerce-admin/client/payments-welcome/cards/sofort.js diff --git a/plugins/woocommerce-admin/client/payments-welcome/cards/amex.js b/plugins/woocommerce-admin/client/payments-welcome/cards/amex.js index 1ebef0bdda9..82f0b26434d 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/cards/amex.js +++ b/plugins/woocommerce-admin/client/payments-welcome/cards/amex.js @@ -1,4 +1,4 @@ -export default () => ( +export const Amex = () => ( /* eslint-disable */ ( +export const ApplePay = () => ( /* eslint-disable */ ( +export const CB = () => ( /* eslint-disable */ ( +export const DinersClub = () => ( /* eslint-disable */ ( +export const Discover = () => ( /* eslint-disable */ ( + /* eslint-disable */ + + + + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/payments-welcome/cards/gpay.js b/plugins/woocommerce-admin/client/payments-welcome/cards/gpay.js index 3497bd0f691..7bd90317ab9 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/cards/gpay.js +++ b/plugins/woocommerce-admin/client/payments-welcome/cards/gpay.js @@ -1,4 +1,4 @@ -export default () => ( +export const GooglePay = () => ( /* eslint-disable */ ( +export const JCB = () => ( /* eslint-disable */ ( +export const Maestro = () => ( /* eslint-disable */ ( +export const MasterCard = () => ( /* eslint-disable */ ( + + + + + + + +); diff --git a/plugins/woocommerce-admin/client/payments-welcome/cards/unionpay.js b/plugins/woocommerce-admin/client/payments-welcome/cards/unionpay.js index 3f364be6948..de3fbc06d5e 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/cards/unionpay.js +++ b/plugins/woocommerce-admin/client/payments-welcome/cards/unionpay.js @@ -1,4 +1,4 @@ -export default () => ( +export const UnionPay = () => ( /* eslint-disable */ ( +export const Visa = () => ( /* eslint-disable */ ( fill="none" xmlns="http://www.w3.org/2000/svg" > - + ( d="M145.879 223.856C146.143 223.856 146.403 223.847 146.658 223.829C146.913 223.806 147.13 223.774 147.308 223.733V222.072C147.139 222.104 146.927 222.129 146.672 222.147C146.417 222.161 146.177 222.168 145.954 222.168C145.444 222.168 144.983 222.106 144.573 221.983C144.168 221.856 143.819 221.664 143.527 221.409C143.24 221.149 143.019 220.826 142.864 220.438C142.709 220.051 142.632 219.595 142.632 219.071V219.064C142.632 218.545 142.707 218.091 142.857 217.704C143.012 217.317 143.233 216.995 143.521 216.74C143.812 216.48 144.159 216.287 144.56 216.159C144.961 216.027 145.41 215.961 145.906 215.961C146.148 215.961 146.392 215.972 146.638 215.995C146.884 216.018 147.098 216.048 147.28 216.084V214.437C147.103 214.386 146.879 214.348 146.61 214.32C146.341 214.293 146.082 214.279 145.831 214.279C145.065 214.279 144.364 214.38 143.726 214.58C143.092 214.781 142.543 215.081 142.078 215.482C141.613 215.883 141.253 216.382 140.998 216.979C140.747 217.576 140.622 218.269 140.622 219.058V219.064C140.622 219.857 140.747 220.555 140.998 221.156C141.253 221.753 141.613 222.252 142.078 222.653C142.548 223.05 143.104 223.351 143.746 223.556C144.389 223.756 145.1 223.856 145.879 223.856ZM139.46 220.425H146.542V219.639H139.46V220.425ZM139.46 218.531H146.542V217.745H139.46V218.531Z" fill="#C3C4C7" /> - + @@ -125,8 +125,8 @@ export default () => ( fill="white" /> From 07a20ce378fca5be22d02510362fc53913feb0c6 Mon Sep 17 00:00:00 2001 From: RJChow Date: Tue, 19 Apr 2022 16:07:07 +0800 Subject: [PATCH 063/327] added conditions for rendering --- plugins/woocommerce-admin/client/index.js | 10 +- .../payment-recommendations-banner.tsx | 119 ++++++++++++++++-- 2 files changed, 116 insertions(+), 13 deletions(-) diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index 6b34a981b37..eecff1bcb1c 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -56,9 +56,6 @@ const PaymentsGatewaysOptionsDescroption = () => { }; registerPlugin( 'banner', { scope: 'my-scope', render: PaymentsBannerFill } ); -registerPlugin( 'banner2', { scope: 'my-scope', render: PaymentsGatewaysOptionsDescroption } ); - -// TODO: move this to another module const Banner = () => { return ( <> @@ -111,16 +108,17 @@ if ( appRoot ) { // Render notices just above the WP content div. const wpBody = document.getElementById( 'wpbody-content' ); - const mainform = document.getElementById( + const isWcAdminSettingsPaymentPage = document.getElementById( 'wc_payment_gateways_banner_slotfill' ); + + isWcAdminSettingsPaymentPage ? render( Banner(), isWcAdminSettingsPaymentPage ) : null; + const wrap = wpBody.querySelector( '.wrap.woocommerce' ) || wpBody.querySelector( '.wrap' ); const noticeContainer = document.createElement( 'div' ); - // TODO: note this slotfill is not part of the form - render( Banner(), mainform ); render(
diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx index 1be58e17761..6b28b5a7df4 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx @@ -1,17 +1,53 @@ -import { Card, CardHeader, CardFooter, Button } from '@wordpress/components'; +import { Card, CardFooter, Button } from '@wordpress/components'; import { Text } from '@woocommerce/experimental'; -import { EllipsisMenu, List, Pill } from '@woocommerce/components'; import { __ } from '@wordpress/i18n'; import Banner from './banner'; -import { PaymentMethods } from '../payments-welcome'; +import { + Visa, + MasterCard, + Amex, + ApplePay, + Giropay, + GooglePay, + CB, + DinersClub, + Discover, + UnionPay, + JCB, + Sofort, +} from '../payments-welcome/cards'; +import { CardBody } from '@wordpress/components'; +import { + ONBOARDING_STORE_NAME, + PAYMENT_GATEWAYS_STORE_NAME, +} from '@woocommerce/data'; +import { useSelect } from '@wordpress/data'; /** * Internal dependencies */ import './payment-recommendations.scss'; -import { CardBody } from '@wordpress/components'; -export const PaymentsRecommendationsBanner = () => { +export const PaymentMethods = () => ( +
+ + + + + + + + + + + + +
+); + +const WcPayBanner = () => { + const WC_PAY_SETUP_URL = + './admin.php?page=wc-settings&tab=checkout§ion=woocommerce_payments'; return ( @@ -45,7 +81,7 @@ export const PaymentsRecommendationsBanner = () => { 'woocommerce' ) } -
@@ -60,7 +96,7 @@ export const PaymentsRecommendationsBanner = () => {
- +
@@ -71,3 +107,72 @@ export const PaymentsRecommendationsBanner = () => { ); }; + +export const PaymentsRecommendationsBanner = () => { + const boop = useSelect( ( select ) => { + return { + installedPaymentGateways: select( + PAYMENT_GATEWAYS_STORE_NAME + ).getPaymentGateways(), + isResolving: select( ONBOARDING_STORE_NAME ).isResolving( + 'getPaymentGatewaySuggestions' + ), + paymentGatewaySuggestions: select( + ONBOARDING_STORE_NAME + ).getPaymentGatewaySuggestions(), + }; + } ); + + const { + installedPaymentGateways, + paymentGatewaySuggestions, + isResolving, + } = boop; + + const supportsWCPayments = + paymentGatewaySuggestions && + paymentGatewaySuggestions.filter( ( paymentGatewaySuggestion ) => { + return ( + paymentGatewaySuggestion.id.indexOf( + 'woocommerce_payments' + ) === 0 + ); + } ).length === 1; + + console.log( boop ); + console.log( 'supports', supportsWCPayments ); + const isWcPayInstalled = installedPaymentGateways.some( ( gateway ) => { + return gateway.id === 'woocommerce_payments'; + } ); + + const isWcPayEnabled = installedPaymentGateways.find( ( gateway ) => { + gateway.id === 'woocommerce_payments' && gateway.enabled === true; + } ); + + const isWcPayBannerExplat = true; + if ( ! isResolving ) { + if ( + supportsWCPayments && + isWcPayInstalled && + ! isWcPayEnabled && + isWcPayBannerExplat + ) { + return ; + } else { + return ( + <> +

Payment Methods

+
+

+ Installed payment methods are listed below and can + be sorted to control their display order on the + frontend. +

+
+ + ); + } + } else { + return null; + } +}; From 60885707f1b3673646ffd54efad3ac2fa9ffd10c Mon Sep 17 00:00:00 2001 From: RJChow Date: Wed, 20 Apr 2022 12:28:31 +0800 Subject: [PATCH 064/327] types and lint --- packages/js/data/src/index.ts | 1 + .../payment-recommendations-banner.tsx | 96 +++++++++---------- 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/packages/js/data/src/index.ts b/packages/js/data/src/index.ts index d58bf7e7300..2f1844575c8 100644 --- a/packages/js/data/src/index.ts +++ b/packages/js/data/src/index.ts @@ -65,6 +65,7 @@ export { NAVIGATION_STORE_NAME } from './navigation'; export { withNavigationHydration } from './navigation/with-navigation-hydration'; export { PAYMENT_GATEWAYS_STORE_NAME } from './payment-gateways'; +export { PaymentGateway } from './payment-gateways/types'; export { getFilterQuery, diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx index 6b28b5a7df4..ab705c1f630 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx @@ -1,7 +1,21 @@ -import { Card, CardFooter, Button } from '@wordpress/components'; +/** + * External dependencies + */ +import { Card, CardFooter, CardBody, Button } from '@wordpress/components'; import { Text } from '@woocommerce/experimental'; import { __ } from '@wordpress/i18n'; -import Banner from './banner'; +import { + ONBOARDING_STORE_NAME, + PAYMENT_GATEWAYS_STORE_NAME, + Plugin, + PaymentGateway, + WCDataSelector, +} from '@woocommerce/data'; +import { useSelect } from '@wordpress/data'; + +/** + * Internal dependencies + */ import { Visa, MasterCard, @@ -16,16 +30,7 @@ import { JCB, Sofort, } from '../payments-welcome/cards'; -import { CardBody } from '@wordpress/components'; -import { - ONBOARDING_STORE_NAME, - PAYMENT_GATEWAYS_STORE_NAME, -} from '@woocommerce/data'; -import { useSelect } from '@wordpress/data'; - -/** - * Internal dependencies - */ +import Banner from './banner'; import './payment-recommendations.scss'; export const PaymentMethods = () => ( @@ -109,7 +114,11 @@ const WcPayBanner = () => { }; export const PaymentsRecommendationsBanner = () => { - const boop = useSelect( ( select ) => { + const { + installedPaymentGateways, + paymentGatewaySuggestions, + isResolving, + } = useSelect( ( select: WCDataSelector ) => { return { installedPaymentGateways: select( PAYMENT_GATEWAYS_STORE_NAME @@ -123,31 +132,32 @@ export const PaymentsRecommendationsBanner = () => { }; } ); - const { - installedPaymentGateways, - paymentGatewaySuggestions, - isResolving, - } = boop; - const supportsWCPayments = paymentGatewaySuggestions && - paymentGatewaySuggestions.filter( ( paymentGatewaySuggestion ) => { + paymentGatewaySuggestions.filter( + ( paymentGatewaySuggestion: Plugin ) => { + return ( + paymentGatewaySuggestion.id.indexOf( + 'woocommerce_payments' + ) === 0 + ); + } + ).length === 1; + + const isWcPayInstalled = installedPaymentGateways.some( + ( gateway: PaymentGateway ) => { + return gateway.id === 'woocommerce_payments'; + } + ); + + const isWcPayEnabled = installedPaymentGateways.find( + ( gateway: PaymentGateway ) => { return ( - paymentGatewaySuggestion.id.indexOf( - 'woocommerce_payments' - ) === 0 + gateway.id === 'woocommerce_payments' && + gateway.enabled === true ); - } ).length === 1; - - console.log( boop ); - console.log( 'supports', supportsWCPayments ); - const isWcPayInstalled = installedPaymentGateways.some( ( gateway ) => { - return gateway.id === 'woocommerce_payments'; - } ); - - const isWcPayEnabled = installedPaymentGateways.find( ( gateway ) => { - gateway.id === 'woocommerce_payments' && gateway.enabled === true; - } ); + } + ); const isWcPayBannerExplat = true; if ( ! isResolving ) { @@ -157,22 +167,10 @@ export const PaymentsRecommendationsBanner = () => { ! isWcPayEnabled && isWcPayBannerExplat ) { + // add tracks event here return ; - } else { - return ( - <> -

Payment Methods

-
-

- Installed payment methods are listed below and can - be sorted to control their display order on the - frontend. -

-
- - ); } - } else { - return null; + // add tracks event here because we want to know when the control is shown } + return null; }; From 73634d63d8076fda6bfe724e767f47773ec6ce19 Mon Sep 17 00:00:00 2001 From: RJChow Date: Wed, 20 Apr 2022 15:29:29 +0800 Subject: [PATCH 065/327] cleanup --- plugins/woocommerce-admin/client/index.js | 54 ++--------- .../client/payments-welcome/cards/giropay.js | 12 +-- .../payments/payment-recommendations.scss | 18 ++-- ...banner.tsx => payment-settings-banner.tsx} | 27 +++--- .../payments-settings-banner-slotfill.js | 37 ++++++++ .../test/payment-settings-banner.test.tsx | 91 +++++++++++++++++++ .../{banner.js => wcpay-banner-image.js} | 0 .../class-wc-settings-payment-gateways.php | 12 +-- 8 files changed, 172 insertions(+), 79 deletions(-) rename plugins/woocommerce-admin/client/payments/{payment-recommendations-banner.tsx => payment-settings-banner.tsx} (86%) create mode 100644 plugins/woocommerce-admin/client/payments/payments-settings-banner-slotfill.js create mode 100644 plugins/woocommerce-admin/client/payments/test/payment-settings-banner.test.tsx rename plugins/woocommerce-admin/client/payments/{banner.js => wcpay-banner-image.js} (100%) diff --git a/plugins/woocommerce-admin/client/index.js b/plugins/woocommerce-admin/client/index.js index eecff1bcb1c..65401097cb0 100644 --- a/plugins/woocommerce-admin/client/index.js +++ b/plugins/woocommerce-admin/client/index.js @@ -16,10 +16,7 @@ import { getAdminSetting } from '~/utils/admin-settings'; import { PageLayout, EmbedLayout, PrimaryLayout as NoticeArea } from './layout'; import { CustomerEffortScoreTracksContainer } from './customer-effort-score-tracks'; import { EmbeddedBodyLayout } from './embedded-body-layout'; -import { PaymentsRecommendationsBanner } from './payments/payment-recommendations-banner'; - -import { createSlotFill, SlotFillProvider } from '@wordpress/components'; -import { registerPlugin, PluginArea } from '@wordpress/plugins'; +import { WcAdminPaymentsGatewaysBannerSlot } from './payments/payments-settings-banner-slotfill'; // Modify webpack pubilcPath at runtime based on location of WordPress Plugin. // eslint-disable-next-line no-undef,camelcase @@ -30,45 +27,6 @@ const embeddedRoot = document.getElementById( 'woocommerce-embedded-root' ); const settingsGroup = 'wc_admin'; const hydrateUser = getAdminSetting( 'currentUserData' ); -const { Fill, Slot } = createSlotFill( 'banner' ); -// Fill.slot = Slot; - -const PaymentsBannerFill = () => { - return ( - - - - ); -}; - -const PaymentsGatewaysOptionsDescroption = () => { - return ( - -

Payment Methods

-
-

- Installed payment methods are listed below and can be sorted - to control their display order on the frontend. -

-
-
- ); -}; - -registerPlugin( 'banner', { scope: 'my-scope', render: PaymentsBannerFill } ); -const Banner = () => { - return ( - <> - -
- -
- -
- - ); -}; - if ( appRoot ) { let HydratedPageLayout = withSettingsHydration( settingsGroup, @@ -112,14 +70,18 @@ if ( appRoot ) { 'wc_payment_gateways_banner_slotfill' ); - isWcAdminSettingsPaymentPage ? render( Banner(), isWcAdminSettingsPaymentPage ) : null; - + if ( isWcAdminSettingsPaymentPage ) { + render( + WcAdminPaymentsGatewaysBannerSlot(), + isWcAdminSettingsPaymentPage + ); + } + const wrap = wpBody.querySelector( '.wrap.woocommerce' ) || wpBody.querySelector( '.wrap' ); const noticeContainer = document.createElement( 'div' ); - render(
diff --git a/plugins/woocommerce-admin/client/payments-welcome/cards/giropay.js b/plugins/woocommerce-admin/client/payments-welcome/cards/giropay.js index 355f6af4c40..0aee187ab4d 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/cards/giropay.js +++ b/plugins/woocommerce-admin/client/payments-welcome/cards/giropay.js @@ -16,8 +16,8 @@ export const Giropay = () => ( fill="white" /> @@ -26,14 +26,14 @@ export const Giropay = () => ( fill="#0F3365" /> diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss index 43c7363d0b8..c79033d9f5c 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.scss +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.scss @@ -1,5 +1,6 @@ .woocommerce-recommended-payments-banner { margin: 0 15px 10px 0; + min-width: 750px; animation: isLoaded; animation-duration: 250ms; @@ -7,7 +8,7 @@ display: flex; align-items: center; justify-content: center; - padding-bottom: 0px; + padding-bottom: 0; } .woocommerce-recommended-payments-banner__text_container { @@ -15,22 +16,23 @@ margin-inline: 24px; * { - margin-block: 1rem + margin-block: 1rem; } } - .woocommerce-recommended-payments-banner__image_container { - - } - .woocommerce-recommended-payments-banner__footer { display: flex; align-items: center; justify-content: center; } - .wcpay-connect-account-page-payment-methods > svg { - height: 28px + .woocommerce-recommended-payments-banner__footer_icon_container { + display: flex; + align-items: center; + } + + .woocommerce-recommended-payments-banner__footer_icon_container > svg { + height: 28px; } } diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx similarity index 86% rename from plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx rename to plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx index ab705c1f630..0904f5cf6bd 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx @@ -12,6 +12,7 @@ import { WCDataSelector, } from '@woocommerce/data'; import { useSelect } from '@wordpress/data'; +import { useExperiment } from '@woocommerce/explat'; /** * Internal dependencies @@ -30,10 +31,10 @@ import { JCB, Sofort, } from '../payments-welcome/cards'; -import Banner from './banner'; +import WCPayBannerImage from './wcpay-banner-image'; import './payment-recommendations.scss'; -export const PaymentMethods = () => ( +export const PaymentMethodsIcons = () => (
@@ -57,7 +58,7 @@ const WcPayBanner = () => {
- +
{
- +
@@ -113,7 +114,7 @@ const WcPayBanner = () => { ); }; -export const PaymentsRecommendationsBanner = () => { +export const PaymentsBannerWrapper = () => { const { installedPaymentGateways, paymentGatewaySuggestions, @@ -150,27 +151,27 @@ export const PaymentsRecommendationsBanner = () => { } ); - const isWcPayEnabled = installedPaymentGateways.find( + const isWcPayDisabled = installedPaymentGateways.find( ( gateway: PaymentGateway ) => { return ( gateway.id === 'woocommerce_payments' && - gateway.enabled === true + gateway.enabled === false ); } ); - const isWcPayBannerExplat = true; - if ( ! isResolving ) { + const [ isLoadingExperiment, experimentAssignment ] = useExperiment( + 'woocommerce_payments_settings_banner_2022_04' + ); + if ( ! isResolving && ! isLoadingExperiment ) { if ( supportsWCPayments && isWcPayInstalled && - ! isWcPayEnabled && - isWcPayBannerExplat + isWcPayDisabled && + experimentAssignment?.variationName === 'treatment' ) { - // add tracks event here return ; } - // add tracks event here because we want to know when the control is shown } return null; }; diff --git a/plugins/woocommerce-admin/client/payments/payments-settings-banner-slotfill.js b/plugins/woocommerce-admin/client/payments/payments-settings-banner-slotfill.js new file mode 100644 index 00000000000..e2cf1ee5c30 --- /dev/null +++ b/plugins/woocommerce-admin/client/payments/payments-settings-banner-slotfill.js @@ -0,0 +1,37 @@ +/** + * External dependencies + */ +import { createSlotFill, SlotFillProvider } from '@wordpress/components'; +import { registerPlugin, PluginArea } from '@wordpress/plugins'; + +/** + * Internal dependencies + */ +import { PaymentsBannerWrapper } from './payment-settings-banner'; + +const { Fill, Slot } = createSlotFill( + '__EXPERIMENTAL__WcAdminPaymentsGatewaysSettingsBanner' +); +const PaymentsBannerFill = () => { + return ( + + + + ); +}; + +export const WcAdminPaymentsGatewaysBannerSlot = () => { + return ( + <> + + + + + + ); +}; + +registerPlugin( 'woocommerce-admin-paymentsgateways-settings-banner', { + scope: 'woocommerce-settings', + render: PaymentsBannerFill, +} ); diff --git a/plugins/woocommerce-admin/client/payments/test/payment-settings-banner.test.tsx b/plugins/woocommerce-admin/client/payments/test/payment-settings-banner.test.tsx new file mode 100644 index 00000000000..c8ed7294ebe --- /dev/null +++ b/plugins/woocommerce-admin/client/payments/test/payment-settings-banner.test.tsx @@ -0,0 +1,91 @@ +/** + * External dependencies + */ +import { render } from '@testing-library/react'; +import { useSelect } from '@wordpress/data'; +import { useExperiment } from '@woocommerce/explat'; + +/** + * Internal dependencies + */ +import { PaymentsBannerWrapper } from '../payment-settings-banner'; + +jest.mock( '@wordpress/data', () => ( { + ...jest.requireActual( '@wordpress/data' ), + useSelect: jest.fn(), +} ) ); +jest.mock( '@woocommerce/explat' ); + +describe( 'Payment Settings Banner', () => { + it( 'should render the banner if woocommerce payments is supported but setup not completed', () => { + ( useSelect as jest.Mock ).mockReturnValue( { + installedPaymentGateways: [ + { id: 'woocommerce_payments', enabled: false }, + ], + paymentGatewaySuggestions: [ { id: 'woocommerce_payments:us' } ], + } ); + + ( useExperiment as jest.Mock ).mockImplementation( () => [ + false, + { variationName: 'treatment' }, + ] ); + + const { container } = render( ); + expect( + container.querySelector( + '.woocommerce-recommended-payments-banner' + ) + ).toBeInTheDocument(); + } ); + + it( 'should not render the banner if treatment is control', () => { + ( useSelect as jest.Mock ).mockReturnValue( { + installedPaymentGateways: [ + { id: 'woocommerce_payments', enabled: false }, + ], + paymentGatewaySuggestions: [ { id: 'woocommerce_payments:us' } ], + } ); + + ( useExperiment as jest.Mock ).mockImplementation( () => [ + false, + { variationName: 'control' }, + ] ); + + const { container } = render( ); + expect( + container.querySelector( + '.woocommerce-recommended-payments-banner' + ) + ).not.toBeInTheDocument(); + } ); + + it( 'should not render anything if woocommerce payments is not supported', () => { + ( useSelect as jest.Mock ).mockReturnValue( { + installedPaymentGateways: [], + paymentGatewaySuggestions: [], + } ); + + const { container } = render( ); + expect( + container.querySelector( + '.woocommerce-recommended-payments-banner' + ) + ).not.toBeInTheDocument(); + } ); + + it( 'should not render anything if woocommerce payments is setup', () => { + ( useSelect as jest.Mock ).mockReturnValue( { + installedPaymentGateways: [ + { id: 'woocommerce_payments', enabled: true }, + ], + paymentGatewaySuggestions: [ { id: 'woocommerce_payments:us' } ], + } ); + + const { container } = render( ); + expect( + container.querySelector( + '.woocommerce-recommended-payments-banner' + ) + ).not.toBeInTheDocument(); + } ); +} ); diff --git a/plugins/woocommerce-admin/client/payments/banner.js b/plugins/woocommerce-admin/client/payments/wcpay-banner-image.js similarity index 100% rename from plugins/woocommerce-admin/client/payments/banner.js rename to plugins/woocommerce-admin/client/payments/wcpay-banner-image.js diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php index 572c030636f..25afc5be84b 100644 --- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php +++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-payment-gateways.php @@ -50,13 +50,9 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { $settings = array( array( - // 'title' => __( 'Payment methods', 'woocommerce' ), - // 'desc' => __( 'Installed payment methods are listed below and can be sorted to control their display order on the frontend.', 'woocommerce' ), - 'type' => 'title', // this is needed as
tag is generated by this element, even if it has no other content - // 'id' => 'payment_gateways_options', + 'type' => 'title', // this is needed as
tag is generated by this element, even if it has no other content. ), - // TODO: write unit test to assert that mount point has been inserted - array('type' => 'payment_gateways_banner'), + array( 'type' => 'payment_gateways_banner' ), // React mount point for embedded banner slotfill. array( 'type' => 'payment_gateways', ), @@ -108,6 +104,10 @@ class WC_Settings_Payment_Gateways extends WC_Settings_Page { protected function run_gateway_admin_options( $gateway ) { $gateway->admin_options(); } + + /** + * Creates the React mount point for the embedded banner. + */ public function payment_gateways_banner() { ?>
From bbb1af478bdd6b20b3f9596820c9b2491b8d0f7f Mon Sep 17 00:00:00 2001 From: RJChow Date: Wed, 20 Apr 2022 15:41:41 +0800 Subject: [PATCH 066/327] changelogs --- packages/js/data/CHANGELOG.md | 1 + .../changelogs/feature-32697_wc_payment_gateways_banner | 6 ++++++ .../woocommerce/changelog/add-wc-payment-gateways-banner | 4 ++++ 3 files changed, 11 insertions(+) create mode 100644 plugins/woocommerce-admin/changelogs/feature-32697_wc_payment_gateways_banner create mode 100644 plugins/woocommerce/changelog/add-wc-payment-gateways-banner diff --git a/packages/js/data/CHANGELOG.md b/packages/js/data/CHANGELOG.md index 1dc2a2798ec..c350fcd32fa 100644 --- a/packages/js/data/CHANGELOG.md +++ b/packages/js/data/CHANGELOG.md @@ -10,6 +10,7 @@ - Add `getTaskListsByIds` selector type - Update `TaskType` & `TaskListType` types - Convert `use-user-preferences.js` to TS. #32695 +- Added PaymentGateway type to exports #32697 ## Breaking change diff --git a/plugins/woocommerce-admin/changelogs/feature-32697_wc_payment_gateways_banner b/plugins/woocommerce-admin/changelogs/feature-32697_wc_payment_gateways_banner new file mode 100644 index 00000000000..7ad0b8cf34d --- /dev/null +++ b/plugins/woocommerce-admin/changelogs/feature-32697_wc_payment_gateways_banner @@ -0,0 +1,6 @@ +Significance: minor +Type: feature + +Added slotfill for payment gateway banner in settings page +Refactored payment methods icons in payments-welcome +Added experiment for showing payment banner in payment settings page #32697 \ No newline at end of file diff --git a/plugins/woocommerce/changelog/add-wc-payment-gateways-banner b/plugins/woocommerce/changelog/add-wc-payment-gateways-banner new file mode 100644 index 00000000000..b80464619b9 --- /dev/null +++ b/plugins/woocommerce/changelog/add-wc-payment-gateways-banner @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Added react mount point in payment settings page for banner slotfill #32697 From 71e9073c0b4befcf62a4a278a1b0e70344850f49 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 12:44:19 +0800 Subject: [PATCH 067/327] Fix remaining task type errors --- .../dismissable-list.tsx | 8 ++- .../recommendations-eligibility-wrapper.tsx | 26 +++++----- .../progress-header/progress-header.tsx | 12 ++--- .../client/tasks/back-button.tsx | 7 ++- .../client/tasks/deprecated-tasks.tsx | 35 ++++++++----- .../client/tasks/fills/Marketing/index.tsx | 6 ++- .../tasks/fills/Marketing/test/index.tsx | 5 +- .../client/tasks/fills/tax/avalara/card.tsx | 7 +-- .../fills/tax/components/partner-card.tsx | 4 +- .../fills/tax/components/store-location.tsx | 33 +++++++------ .../client/tasks/fills/tax/index.tsx | 44 +++++++++++------ .../fills/tax/manual-configuration/index.tsx | 1 - .../client/tasks/fills/tax/utils.ts | 6 ++- .../tasks/fills/tax/woocommerce-tax/card.tsx | 8 ++- .../fills/tax/woocommerce-tax/plugins.tsx | 49 +++++++++++-------- .../tasks/fills/tax/woocommerce-tax/setup.tsx | 48 +++++++++--------- .../tasks/reminder-bar/reminder-bar.tsx | 12 +++-- 17 files changed, 192 insertions(+), 119 deletions(-) diff --git a/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx b/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx index e23cadda3ec..ed5cecdcf79 100644 --- a/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx +++ b/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx @@ -1,7 +1,11 @@ /** * External dependencies */ -import { useDispatch, useSelect } from '@wordpress/data'; +import { + useDispatch, + useSelect, + select as wpDataSelect, +} from '@wordpress/data'; import { Button, Card, CardHeader } from '@wordpress/components'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; import { EllipsisMenu } from '@woocommerce/components'; @@ -55,7 +59,7 @@ export const DismissableList: React.FC< { dismissOptionName: string; className?: string; } > = ( { children, className, dismissOptionName } ) => { - const isVisible = useSelect( ( select ) => { + const isVisible = useSelect( ( select: typeof wpDataSelect ) => { const { getOption, hasFinishedResolution } = select( OPTIONS_STORE_NAME ); diff --git a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx index d9bd2775664..49754b9fe11 100644 --- a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx +++ b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx @@ -1,7 +1,7 @@ /** * External dependencies */ -import { useSelect } from '@wordpress/data'; +import { useSelect, select as wpDataSelect } from '@wordpress/data'; import { useUser, OPTIONS_STORE_NAME } from '@woocommerce/data'; const SHOW_MARKETPLACE_SUGGESTION_OPTION = @@ -10,19 +10,21 @@ const SHOW_MARKETPLACE_SUGGESTION_OPTION = const RecommendationsEligibilityWrapper: React.FC = ( { children } ) => { const { currentUserCan } = useUser(); - const isMarketplaceSuggestionsEnabled = useSelect( ( select ) => { - const { getOption, hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ); + const isMarketplaceSuggestionsEnabled = useSelect( + ( select: typeof wpDataSelect ) => { + const { getOption, hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ); - const hasFinishedResolving = hasFinishedResolution( 'getOption', [ - SHOW_MARKETPLACE_SUGGESTION_OPTION, - ] ); - const canShowMarketplaceSuggestions = - getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) !== 'no'; + const hasFinishedResolving = hasFinishedResolution( 'getOption', [ + SHOW_MARKETPLACE_SUGGESTION_OPTION, + ] ); + const canShowMarketplaceSuggestions = + getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) !== 'no'; - return hasFinishedResolving && canShowMarketplaceSuggestions; - } ); + return hasFinishedResolving && canShowMarketplaceSuggestions; + } + ); if ( ! currentUserCan( 'install_plugins' ) ) { return null; diff --git a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx index 46264572b75..6e576a8986e 100644 --- a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx +++ b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx @@ -7,7 +7,7 @@ import { useSelect } from '@wordpress/data'; import { getVisibleTasks, ONBOARDING_STORE_NAME, - TaskListType, + WCDataSelector, } from '@woocommerce/data'; import { getSetting } from '@woocommerce/settings'; @@ -30,14 +30,14 @@ export const ProgressHeader: React.FC< ProgressHeaderProps > = ( { completedCount, hasVisitedTasks, disabledCompletedCount, - } = useSelect( ( select ) => { - const taskList: TaskListType = select( - ONBOARDING_STORE_NAME - ).getTaskList( taskListId ); + } = useSelect( ( select: WCDataSelector ) => { + const taskList = select( ONBOARDING_STORE_NAME ).getTaskList( + taskListId + ); const finishedResolution = select( ONBOARDING_STORE_NAME ).hasFinishedResolution( 'getTaskList', [ taskListId ] ); - const visibleTasks = getVisibleTasks( taskList?.tasks ); + const visibleTasks = getVisibleTasks( taskList?.tasks || [] ); return { loading: ! finishedResolution, diff --git a/plugins/woocommerce-admin/client/tasks/back-button.tsx b/plugins/woocommerce-admin/client/tasks/back-button.tsx index 0ab6ec5bb30..68dc9b394fd 100644 --- a/plugins/woocommerce-admin/client/tasks/back-button.tsx +++ b/plugins/woocommerce-admin/client/tasks/back-button.tsx @@ -7,6 +7,7 @@ import { Icon, chevronLeft } from '@wordpress/icons'; import { getHistory, updateQueryString } from '@woocommerce/navigation'; import { ENTER, SPACE } from '@wordpress/keycodes'; import { recordEvent } from '@woocommerce/tracks'; +import { History } from 'history'; /** * Internal dependencies @@ -24,7 +25,11 @@ export const BackButton: React.FC< BackButtonProps > = ( { title } ) => { recordEvent( 'topbar_back_button', { page_name: title, } ); - updateQueryString( {}, getHistory().location.pathname, {} ); + updateQueryString( + {}, + ( getHistory() as History ).location.pathname, + {} + ); }; // if it's a task list page, render a back button to the homescreen diff --git a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx index ce58c213a3c..c136a0d328d 100644 --- a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx @@ -4,19 +4,31 @@ import { registerPlugin } from '@wordpress/plugins'; import { WooOnboardingTask } from '@woocommerce/onboarding'; import { useSelect } from '@wordpress/data'; -import { ONBOARDING_STORE_NAME } from '@woocommerce/data'; +import { + ONBOARDING_STORE_NAME, + TaskType, + WCDataSelector, +} from '@woocommerce/data'; import { useEffect, useState } from '@wordpress/element'; +type DeprecatedTask = TaskType & { + container: React.ReactNode; +}; + const DeprecatedWooOnboardingTaskFills = () => { - const [ deprecatedTasks, setDeprecatedTasks ] = useState( [] ); - const { isResolving, taskLists } = useSelect( ( select ) => { - return { - isResolving: select( ONBOARDING_STORE_NAME ).isResolving( - 'getTaskLists' - ), - taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), - }; - } ); + const [ deprecatedTasks, setDeprecatedTasks ] = useState< + DeprecatedTask[] + >( [] ); + const { isResolving, taskLists } = useSelect( + ( select: WCDataSelector ) => { + return { + isResolving: select( ONBOARDING_STORE_NAME ).isResolving( + 'getTaskLists' + ), + taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), + }; + } + ); useEffect( () => { if ( taskLists && taskLists.length > 0 ) { @@ -39,7 +51,7 @@ const DeprecatedWooOnboardingTaskFills = () => { <> { deprecatedTasks.map( ( task ) => ( - { ( { onComplete } ) => task.container } + { () => task.container } ) ) } @@ -47,6 +59,7 @@ const DeprecatedWooOnboardingTaskFills = () => { }; registerPlugin( 'wc-admin-deprecated-task-container', { + // @ts-expect-error @types/wordpress__plugins need to be updated scope: 'woocommerce-tasks', render: () => , } ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx index 359f04ae507..80895f31f7b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx @@ -108,7 +108,7 @@ export const getMarketingExtensionLists = ( }; export type MarketingProps = { - onComplete: ( bool: boolean ) => void; + onComplete: ( bool?: boolean ) => void; }; const Marketing: React.FC< MarketingProps > = ( { onComplete } ) => { @@ -236,10 +236,12 @@ const Marketing: React.FC< MarketingProps > = ( { onComplete } ) => { }; registerPlugin( 'wc-admin-onboarding-task-marketing', { + // @ts-expect-error @types/wordpress__plugins need to be updated scope: 'woocommerce-tasks', render: () => ( + // @ts-expect-error WooOnboardingTask is still a pure JS file - { ( { onComplete } ) => { + { ( { onComplete }: MarketingProps ) => { return ; } } diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx index 6ea3da1ee2e..b0896b1dce3 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx @@ -25,6 +25,7 @@ const reachPlugins: Extension[] = [ description: 'Reach plugin description', manage_url: '#', image_url: 'reach.jpeg', + is_built_by_wc: false, }, ]; @@ -35,6 +36,7 @@ const growPlugins: Extension[] = [ description: 'Grow plugin description', manage_url: '#', image_url: 'grow.jpeg', + is_built_by_wc: false, }, { key: 'grow-plugin-two:extra', @@ -42,6 +44,7 @@ const growPlugins: Extension[] = [ description: 'Grow plugin 2 description', manage_url: '#', image_url: 'grow2.jpeg', + is_built_by_wc: false, }, ]; @@ -133,7 +136,7 @@ describe( 'getMarketingExtensionLists', () => { [ 'grow-plugin' ] ); - expect( lists[ 1 ].plugins.length ).toBe( 1 ); + expect( lists[ 1 ].plugins?.length ).toBe( 1 ); } ); test( 'should only include allowed list plugins in the installed list', () => { diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx index 0a51f1a460f..8fbe8c16c95 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx @@ -10,10 +10,11 @@ import { recordEvent } from '@woocommerce/tracks'; * Internal dependencies */ import { PartnerCard } from '../components/partner-card'; +import { TaxProps } from '../'; import logo from './logo.png'; -export const Card = ( { task } ) => { - const { avalaraActivated } = task.additionalData; +export const Card: React.FC< TaxProps > = ( { task } ) => { + const { additionalData: { avalaraActivated } = {} } = task; return ( { window.open( new URL( 'https://woocommerce.com/products/woocommerce-avatax/' - ), + ).toString(), '_blank' ); } } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/components/partner-card.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/components/partner-card.tsx index d54241644b4..0a2d05be69c 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/components/partner-card.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/components/partner-card.tsx @@ -14,8 +14,8 @@ export const PartnerCard: React.FC< { name: string; logo: string; description: string; - benefits: string[]; - terms: string; + benefits: ( string | JSX.Element )[]; + terms: string | JSX.Element; actionText: string; onClick: () => void; isBusy?: boolean; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx index 79af7ec147a..3aefbdaf1f2 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { SETTINGS_STORE_NAME } from '@woocommerce/data'; +import { SETTINGS_STORE_NAME, WCDataSelector } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { useEffect } from '@wordpress/element'; import { useSelect, useDispatch } from '@wordpress/data'; @@ -11,27 +11,30 @@ import { useSelect, useDispatch } from '@wordpress/data'; * Internal dependencies */ import { getCountryCode } from '~/dashboard/utils'; -import { hasCompleteAddress, SettingsSelector, TaxChildProps } from '../utils'; +import { hasCompleteAddress, SettingsSelector } from '../utils'; import { default as StoreLocationForm } from '~/tasks/fills/steps/location'; export const StoreLocation: React.FC< { nextStep: () => void; } > = ( { nextStep } ) => { + const { createNotice } = useDispatch( 'core/notices' ); const { updateAndPersistSettingsForGroup } = useDispatch( SETTINGS_STORE_NAME ); - const { generalSettings, isResolving } = useSelect( ( select ) => { - const { getSettings, hasFinishedResolution } = select( - SETTINGS_STORE_NAME - ) as SettingsSelector; + const { generalSettings, isResolving } = useSelect( + ( select: WCDataSelector ) => { + const { getSettings, hasFinishedResolution } = select( + SETTINGS_STORE_NAME + ) as SettingsSelector; - return { - generalSettings: getSettings( 'general' )?.general, - isResolving: ! hasFinishedResolution( 'getSettings', [ - 'general', - ] ), - }; - } ); + return { + generalSettings: getSettings( 'general' )?.general, + isResolving: ! hasFinishedResolution( 'getSettings', [ + 'general', + ] ), + }; + } + ); useEffect( () => { if ( isResolving || ! hasCompleteAddress( generalSettings ) ) { @@ -46,7 +49,7 @@ export const StoreLocation: React.FC< { return ( { + onComplete={ ( values: { [ key: string ]: string } ) => { const country = getCountryCode( values.countryState ); recordEvent( 'tasklist_tax_set_location', { country, @@ -58,6 +61,8 @@ export const StoreLocation: React.FC< { updateAndPersistSettingsForGroup={ updateAndPersistSettingsForGroup } + createNotice={ createNotice } + isSettingsError={ false } /> ); }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx index 6db806b2d4e..e77429e360d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx @@ -6,9 +6,10 @@ import { Card, CardBody, Spinner } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import { getAdminLink } from '@woocommerce/settings'; import { - ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME, SETTINGS_STORE_NAME, + WCDataSelector, + TaskType, } from '@woocommerce/data'; import { queueRecordEvent, recordEvent } from '@woocommerce/tracks'; import { registerPlugin } from '@wordpress/plugins'; @@ -37,7 +38,7 @@ import { ManualConfiguration } from './manual-configuration'; import { Partners } from './components/partners'; import { WooCommerceTax } from './woocommerce-tax'; -const TaskCard = ( { children } ) => { +const TaskCard: React.FC = ( { children } ) => { return ( { children } @@ -45,7 +46,13 @@ const TaskCard = ( { children } ) => { ); }; -const Tax = ( { onComplete, query, task } ) => { +export type TaxProps = { + onComplete: () => void; + query: Record< string, string >; + task: TaskType; +}; + +const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { const [ isPending, setIsPending ] = useState( false ); const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); const { createNotice } = useDispatch( 'core/notices' ); @@ -53,7 +60,7 @@ const Tax = ( { onComplete, query, task } ) => { SETTINGS_STORE_NAME ); const { generalSettings, isResolving, taxSettings } = useSelect( - ( select ) => { + ( select: WCDataSelector ) => { const { getSettings, hasFinishedResolution } = select( SETTINGS_STORE_NAME ) as SettingsSelector; @@ -84,7 +91,7 @@ const Tax = ( { onComplete, query, task } ) => { }, } ) .then( () => redirectToTaxSettings() ) - .catch( ( error ) => { + .catch( ( error: unknown ) => { setIsPending( false ); createNoticesFromResponse( error ); } ); @@ -138,9 +145,11 @@ const Tax = ( { onComplete, query, task } ) => { generalSettings?.woocommerce_default_country ); const { - woocommerceTaxCountries = [], - taxJarActivated, - } = task.additionalData; + additionalData: { + woocommerceTaxCountries = [], + taxJarActivated, + } = {}, + } = task; const partners = [ { @@ -232,28 +241,33 @@ const Tax = ( { onComplete, query, task } ) => { if ( currentPartner ) { return ( - { createElement( currentPartner.component, childProps ) } + { currentPartner.component && + createElement( currentPartner.component, childProps ) } ); } return ( - { partners.map( ( partner ) => - createElement( partner.card, { - key: partner.id, - ...childProps, - } ) + { partners.map( + ( partner ) => + partner.card && + createElement( partner.card, { + key: partner.id, + ...childProps, + } ) ) } ); }; registerPlugin( 'wc-admin-onboarding-task-tax', { + // @ts-expect-error @types/wordpress__plugins need to be updated scope: 'woocommerce-tasks', render: () => ( + // @ts-expect-error WooOnboardingTask is still a pure JS file - { ( { onComplete, query, task } ) => ( + { ( { onComplete, query, task }: TaxProps ) => ( ) } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/index.tsx index bd763f484b1..7c560a4b78d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/index.tsx @@ -2,7 +2,6 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { filter } from 'lodash'; import { useState } from '@wordpress/element'; import { Stepper } from '@woocommerce/components'; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts index 060b6395ca8..a173e0184fe 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts @@ -45,13 +45,17 @@ export const redirectToTaxSettings = (): void => { export type SettingsSelector = WPDataSelectors & { getSettings: ( type: string - ) => { general: { woocommerce_default_country?: string } }; + ) => { + general: { woocommerce_default_country?: string }; + tax: { [ key: string ]: string }; + }; getOption: ( type: string ) => { wc_connect_options: { tos_accepted: string; }; + tos_accepted?: boolean; }; }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/card.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/card.tsx index bbb8de9525c..174952c6490 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/card.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/card.tsx @@ -42,7 +42,9 @@ export const Card: React.FC< TaxChildProps > = () => { type="external" href="https://woocommerce.com/products/jetpack/?utm_medium=product" target="_blank" - /> + > + <> + ), }, } ), @@ -60,7 +62,9 @@ export const Card: React.FC< TaxChildProps > = () => { href={ 'https://wordpress.com/tos/' } target="_blank" type="external" - /> + > + <> + ), }, } ) } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx index 89ecec7c1f9..f2014b84124 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx @@ -4,10 +4,14 @@ import { __ } from '@wordpress/i18n'; import interpolateComponents from '@automattic/interpolate-components'; import { Link, Plugins as PluginInstaller } from '@woocommerce/components'; -import { OPTIONS_STORE_NAME, PLUGINS_STORE_NAME } from '@woocommerce/data'; +import { OPTIONS_STORE_NAME } from '@woocommerce/data'; import { recordEvent, queueRecordEvent } from '@woocommerce/tracks'; import { Text } from '@woocommerce/experimental'; -import { useDispatch, useSelect } from '@wordpress/data'; +import { + useDispatch, + useSelect, + select as wpDataSelect, +} from '@wordpress/data'; import { useEffect } from '@wordpress/element'; /** @@ -15,7 +19,6 @@ import { useEffect } from '@wordpress/element'; */ import { createNoticesFromResponse } from '~/lib/notices'; import { SetupStepProps } from './setup'; -import { SettingsSelector } from '../utils'; export const Plugins: React.FC< SetupStepProps > = ( { nextStep, @@ -24,24 +27,26 @@ export const Plugins: React.FC< SetupStepProps > = ( { pluginsToActivate, } ) => { const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); - const { isResolving, tosAccepted } = useSelect( ( select ) => { - const { getOption, hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ) as SettingsSelector; + const { isResolving, tosAccepted } = useSelect( + ( select: typeof wpDataSelect ) => { + const { getOption, hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ); - return { - isResolving: - ! hasFinishedResolution( 'getOption', [ - 'woocommerce_setup_jetpack_opted_in', - ] ) || - ! hasFinishedResolution( 'getOption', [ - 'wc_connect_options', - ] ), - tosAccepted: - getOption( 'wc_connect_options' )?.tos_accepted || - getOption( 'woocommerce_setup_jetpack_opted_in' ) === '1', - }; - } ); + return { + isResolving: + ! hasFinishedResolution( 'getOption', [ + 'woocommerce_setup_jetpack_opted_in', + ] ) || + ! hasFinishedResolution( 'getOption', [ + 'wc_connect_options', + ] ), + tosAccepted: + getOption( 'wc_connect_options' )?.tos_accepted || + getOption( 'woocommerce_setup_jetpack_opted_in' ) === '1', + }; + } + ); useEffect( () => { if ( ! tosAccepted || pluginsToActivate.length ) { @@ -106,7 +111,9 @@ export const Plugins: React.FC< SetupStepProps > = ( { href={ 'https://wordpress.com/tos/' } target="_blank" type="external" - /> + > + <> + ), }, } ) } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx index ee4464543ec..dee6836c9a7 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx @@ -10,7 +10,7 @@ import { PLUGINS_STORE_NAME, SETTINGS_STORE_NAME, } from '@woocommerce/data'; -import { useSelect } from '@wordpress/data'; +import { useSelect, select as wpDataSelect } from '@wordpress/data'; /** * Internal dependencies @@ -44,28 +44,32 @@ export const Setup: React.FC< SetupProps > = ( { onAutomate, onManual, } ) => { - const [ pluginsToActivate, setPluginsToActivate ] = useState( [] ); - const { activePlugins, isResolving } = useSelect( ( select ) => { - const { getSettings } = select( - SETTINGS_STORE_NAME - ) as SettingsSelector; - const { hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ) as SettingsSelector; - const { getActivePlugins } = select( PLUGINS_STORE_NAME ); + const [ pluginsToActivate, setPluginsToActivate ] = useState< string[] >( + [] + ); + const { activePlugins, isResolving } = useSelect( + ( select: typeof wpDataSelect ) => { + const { getSettings } = select( + SETTINGS_STORE_NAME + ) as SettingsSelector; + const { hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ) as SettingsSelector; + const { getActivePlugins } = select( PLUGINS_STORE_NAME ); - return { - activePlugins: getActivePlugins(), - generalSettings: getSettings( 'general' )?.general, - isResolving: - ! hasFinishedResolution( 'getOption', [ - 'woocommerce_setup_jetpack_opted_in', - ] ) || - ! hasFinishedResolution( 'getOption', [ - 'wc_connect_options', - ] ), - }; - } ); + return { + activePlugins: getActivePlugins(), + generalSettings: getSettings( 'general' )?.general, + isResolving: + ! hasFinishedResolution( 'getOption', [ + 'woocommerce_setup_jetpack_opted_in', + ] ) || + ! hasFinishedResolution( 'getOption', [ + 'wc_connect_options', + ] ), + }; + } + ); const [ stepIndex, setStepIndex ] = useState( 0 ); useEffect( () => { diff --git a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx index ea8ccd4c771..9e1ab50e56c 100644 --- a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx +++ b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx @@ -2,7 +2,11 @@ * External dependencies */ import { __, sprintf } from '@wordpress/i18n'; -import { useSelect, useDispatch } from '@wordpress/data'; +import { + useSelect, + useDispatch, + select as wpDataSelect, +} from '@wordpress/data'; import { ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME, @@ -57,7 +61,9 @@ const ReminderText: React.FC< ReminderTextProps > = ( { remainingCount } ) => { + > + <> + ), }, } ) } @@ -77,7 +83,7 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { taskListComplete, reminderBarHidden, completedTasksCount, - } = useSelect( ( select ) => { + } = useSelect( ( select: typeof wpDataSelect ) => { const { getTaskList, hasFinishedResolution: onboardingHasFinishedResolution, From 8a1c684f558223617e693c42d58642580689ffe0 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 12:44:35 +0800 Subject: [PATCH 068/327] Update data onboarding selector types --- packages/js/data/src/onboarding/selectors.ts | 2 ++ packages/js/data/src/onboarding/types.ts | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index d0f4bdefe81..2d8f2253cee 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -103,6 +103,8 @@ export type OnboardingSelectors = { ids: string[] ) => ReturnType< typeof getTaskListsByIds >; getTaskLists: () => ReturnType< typeof getTaskLists >; + getTaskList: ( id: string ) => ReturnType< typeof getTaskList >; + getFreeExtensions: () => ReturnType< typeof getFreeExtensions >; } & WPDataSelectors; export type OnboardingState = { diff --git a/packages/js/data/src/onboarding/types.ts b/packages/js/data/src/onboarding/types.ts index d51101ba40f..0f51b826452 100644 --- a/packages/js/data/src/onboarding/types.ts +++ b/packages/js/data/src/onboarding/types.ts @@ -20,6 +20,11 @@ export type TaskType = { isActioned: boolean; eventPrefix: string; level: number; + additionalData?: { + woocommerceTaxCountries?: string[]; + taxJarActivated?: boolean; + avalaraActivated?: boolean; + }; }; export type TaskListSection = { From fbc1cf0e615deb4144345d5f899b91728575f65a Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 12:45:02 +0800 Subject: [PATCH 069/327] Correct stepper component props types --- packages/js/components/src/stepper/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/components/src/stepper/index.tsx b/packages/js/components/src/stepper/index.tsx index e80b2288552..0e068becfae 100644 --- a/packages/js/components/src/stepper/index.tsx +++ b/packages/js/components/src/stepper/index.tsx @@ -32,9 +32,9 @@ interface StepperProps { onClick?: ( key: string ) => void; } >; /** If the stepper is vertical instead of horizontal. */ - isVertical: boolean; + isVertical?: boolean; /** Optionally mark the current step as pending to show a spinner. */ - isPending: boolean; + isPending?: boolean; } /** From 7085ed7d96be79cecbc48bfb23c4d90a165f9c98 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 13:10:40 +0800 Subject: [PATCH 070/327] Export InstallPluginsResponse data type from woo.data --- packages/js/data/src/index.ts | 1 + packages/js/data/src/plugins/actions.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/js/data/src/index.ts b/packages/js/data/src/index.ts index d58bf7e7300..1d9fbe86d29 100644 --- a/packages/js/data/src/index.ts +++ b/packages/js/data/src/index.ts @@ -30,6 +30,7 @@ export { useSettings } from './settings/use-settings'; export { PLUGINS_STORE_NAME } from './plugins'; export type { Plugin } from './plugins/types'; +export type { InstallPluginsResponse } from './plugins/actions'; export { ActionDispatchers as PluginsStoreActions } from './plugins/actions'; export { pluginNames } from './plugins/constants'; export { withPluginsHydration } from './plugins/with-plugins-hydration'; diff --git a/packages/js/data/src/plugins/actions.ts b/packages/js/data/src/plugins/actions.ts index e1a2a7b3534..d0708da2259 100644 --- a/packages/js/data/src/plugins/actions.ts +++ b/packages/js/data/src/plugins/actions.ts @@ -37,7 +37,7 @@ type PluginsResponse< PluginData > = { message: string; } & Response; -type InstallPluginsResponse = PluginsResponse< { +export type InstallPluginsResponse = PluginsResponse< { installed: string[]; results: Record< string, boolean >; install_time?: Record< string, number >; From 66deb864abef3e2e5f442005c61269716581ce8e Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 13:10:56 +0800 Subject: [PATCH 071/327] Fix reamining type errors --- .../client/tasks/deprecated-tasks.tsx | 1 + .../client/tasks/fills/Marketing/PluginList.tsx | 2 +- .../client/tasks/fills/tax/avalara/card.tsx | 4 ++-- .../client/tasks/fills/tax/index.tsx | 1 - .../fills/tax/manual-configuration/configure.tsx | 15 ++++++++------- .../client/tasks/fills/tax/utils.ts | 3 ++- .../fills/tax/woocommerce-tax/automated-taxes.tsx | 12 ++++++------ .../tasks/fills/tax/woocommerce-tax/index.tsx | 8 ++++++-- .../tasks/fills/tax/woocommerce-tax/plugins.tsx | 9 ++++++--- .../client/tasks/reminder-bar/reminder-bar.tsx | 5 +++-- 10 files changed, 35 insertions(+), 25 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx index c136a0d328d..0d9bd6f0bbc 100644 --- a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx @@ -50,6 +50,7 @@ const DeprecatedWooOnboardingTaskFills = () => { return ( <> { deprecatedTasks.map( ( task ) => ( + // @ts-expect-error WooOnboardingTask is still a pure JS file { () => task.container } diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/PluginList.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/PluginList.tsx index aa95781c34f..ed81df2bf61 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/PluginList.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/PluginList.tsx @@ -12,7 +12,7 @@ import './PluginList.scss'; export type PluginListProps = { currentPlugin?: string | null; key?: string; - installAndActivate: ( slug: string ) => void; + installAndActivate?: ( slug: string ) => void; plugins?: PluginProps[]; title?: string; }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx index 8fbe8c16c95..0f4218b0da5 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/avalara/card.tsx @@ -10,10 +10,10 @@ import { recordEvent } from '@woocommerce/tracks'; * Internal dependencies */ import { PartnerCard } from '../components/partner-card'; -import { TaxProps } from '../'; +import { TaxChildProps } from '../utils'; import logo from './logo.png'; -export const Card: React.FC< TaxProps > = ( { task } ) => { +export const Card: React.FC< TaxChildProps > = ( { task } ) => { const { additionalData: { avalaraActivated } = {} } = task; return ( diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx index e77429e360d..864978bea9b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx @@ -246,7 +246,6 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { ); } - return ( { partners.map( diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx index a448c52622f..a5a8e99d0dc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx @@ -6,7 +6,7 @@ import { Button } from '@wordpress/components'; import interpolateComponents from '@automattic/interpolate-components'; import { Link } from '@woocommerce/components'; import { recordEvent } from '@woocommerce/tracks'; -import { SETTINGS_STORE_NAME } from '@woocommerce/data'; +import { SETTINGS_STORE_NAME, WCDataSelector } from '@woocommerce/data'; import { useSelect } from '@wordpress/data'; /** @@ -14,11 +14,10 @@ import { useSelect } from '@wordpress/data'; */ import { SettingsSelector, TaxChildProps } from '../utils'; -export const Configure: React.FC< TaxChildProps > = ( { - isPending, - onManual, -} ) => { - const { generalSettings } = useSelect( ( select ) => { +export const Configure: React.FC< + Pick< TaxChildProps, 'isPending' | 'onManual' > +> = ( { isPending, onManual } ) => { + const { generalSettings } = useSelect( ( select: WCDataSelector ) => { const { getSettings } = select( SETTINGS_STORE_NAME ) as SettingsSelector; @@ -55,7 +54,9 @@ export const Configure: React.FC< TaxChildProps > = ( { href="https://woocommerce.com/document/setting-up-taxes-in-woocommerce/?utm_medium=product#section-1" target="_blank" type="external" - /> + > + <> + ), }, } ) } diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts index a173e0184fe..f702493ca25 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts @@ -2,7 +2,7 @@ * External dependencies */ import { getAdminLink } from '@woocommerce/settings'; -import { WPDataSelectors } from '@woocommerce/data'; +import { WPDataSelectors, TaskType } from '@woocommerce/data'; /** * Plugins required to automate taxes. @@ -67,6 +67,7 @@ export type TaxChildProps = { onAutomate: () => void; onManual: () => void; onDisable: () => void; + task: TaskType; }; /** diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/automated-taxes.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/automated-taxes.tsx index 85591bca9b5..9d7f2fc55c4 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/automated-taxes.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/automated-taxes.tsx @@ -12,12 +12,12 @@ import { recordEvent } from '@woocommerce/tracks'; */ import { SetupStepProps } from './setup'; -export const AutomatedTaxes: React.FC< SetupStepProps > = ( { - isPending, - onAutomate, - onManual, - onDisable, -} ) => { +export const AutomatedTaxes: React.FC< + Pick< + SetupStepProps, + 'isPending' | 'onAutomate' | 'onManual' | 'onDisable' + > +> = ( { isPending, onAutomate, onManual, onDisable } ) => { return (
= ( { isJetpackConnected, isResolving, pluginsToActivate, - } = useSelect( ( select ) => { + } = useSelect( ( select: WCDataSelector ) => { const { getSettings } = select( SETTINGS_STORE_NAME ) as SettingsSelector; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx index f2014b84124..4f8b3fa5a25 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import interpolateComponents from '@automattic/interpolate-components'; import { Link, Plugins as PluginInstaller } from '@woocommerce/components'; -import { OPTIONS_STORE_NAME } from '@woocommerce/data'; +import { OPTIONS_STORE_NAME, InstallPluginsResponse } from '@woocommerce/data'; import { recordEvent, queueRecordEvent } from '@woocommerce/tracks'; import { Text } from '@woocommerce/experimental'; import { @@ -73,7 +73,10 @@ export const Plugins: React.FC< SetupStepProps > = ( { return ( <> { + onComplete={ ( + activatedPlugins: string[], + response: InstallPluginsResponse + ) => { createNoticesFromResponse( response ); recordEvent( 'tasklist_tax_install_extensions', { install_extensions: true, @@ -83,7 +86,7 @@ export const Plugins: React.FC< SetupStepProps > = ( { } ); nextStep(); } } - onError={ ( errors, response ) => + onError={ ( errors: unknown, response: unknown ) => createNoticesFromResponse( response ) } onSkip={ () => { diff --git a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx index 9e1ab50e56c..ca0a41485e0 100644 --- a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx +++ b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx @@ -125,9 +125,10 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { }; } ); + const query = getQuery() as { [ key: string ]: string }; const isHomescreen = - getQuery().page && getQuery().page === 'wc-admin' && ! getQuery().path; - const isActiveTaskPage = Boolean( getQuery().wc_onboarding_active_task ); + query.page && query.page === 'wc-admin' && ! query.path; + const isActiveTaskPage = Boolean( query.wc_onboarding_active_task ); const hideReminderBar = loading || From 1a7c40316e18a77da0bf76e2d136693e8118bdc1 Mon Sep 17 00:00:00 2001 From: RJChow Date: Thu, 21 Apr 2022 13:14:28 +0800 Subject: [PATCH 072/327] Changed e2e payment settings page detection --- packages/js/admin-e2e-tests/CHANGELOG.md | 2 ++ packages/js/admin-e2e-tests/src/pages/WcSettings.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/js/admin-e2e-tests/CHANGELOG.md b/packages/js/admin-e2e-tests/CHANGELOG.md index 5836c843674..a28e2e3be2e 100644 --- a/packages/js/admin-e2e-tests/CHANGELOG.md +++ b/packages/js/admin-e2e-tests/CHANGELOG.md @@ -6,6 +6,8 @@ - Increase timeout threshold for payment task. #32605 +- Changed page detection to use table header instead of h2 header for payment settings page #32697 + # 1.0.0 - Add returned type annotations and remove unused vars. #8020 diff --git a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts index 0b5f78cf0a7..302e2445862 100644 --- a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts +++ b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts @@ -44,7 +44,7 @@ export class WcSettings extends BasePage { async paymentMethodIsEnabled( method = '' ): Promise< boolean > { await this.navigate( 'checkout' ); - await waitForElementByText( 'h2', 'Payment methods' ); + await waitForElementByText( 'th', 'Method' ); const className = await getAttribute( `tr[data-gateway_id=${ method }] .woocommerce-input-toggle`, 'className' From 841692d14da0d6d8701669050bb1703b6ebb4b44 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 13:16:54 +0800 Subject: [PATCH 073/327] Add changelogs --- packages/js/components/CHANGELOG.md | 1 + packages/js/data/CHANGELOG.md | 5 +++-- plugins/woocommerce/changelog/fix-admin-remaining-task-types | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-admin-remaining-task-types diff --git a/packages/js/components/CHANGELOG.md b/packages/js/components/CHANGELOG.md index e7782c11e57..065094f6063 100644 --- a/packages/js/components/CHANGELOG.md +++ b/packages/js/components/CHANGELOG.md @@ -4,6 +4,7 @@ - Update dependency `@wordpress/hooks` to ^3.5.0 - Update dependency `@wordpress/icons` to ^8.1.0 - Add `className` prop for Pill component. #32605 +- Update `StepperProps` prop types. #32712 # 10.0.0 - Replace deprecated wp.compose.withState with wp.element.useState. #8338 diff --git a/packages/js/data/CHANGELOG.md b/packages/js/data/CHANGELOG.md index fc460ef6b4c..80703cd633a 100644 --- a/packages/js/data/CHANGELOG.md +++ b/packages/js/data/CHANGELOG.md @@ -3,12 +3,13 @@ - Update dependency `@wordpress/hooks` to ^3.5.0 - Add `is_offline` attribute for `Plugin` type. #32467 - Added Typescript type declarations. #32615 -- Update type definitions. #32683, #32695, #32698 +- Update type definitions. #32683, #32695, #32698, #32712 - Make `isResolving` param `args` optional. - Update `Plugin` type to reflect the latest changes. - Maps "raw" payment `ActionDispatchers` to the registered actions. - - Add `getTaskListsByIds`, `getTaskLists` selector type + - Export `getTaskListsByIds`, `getTaskLists`, `getTaskList`, `getFreeExtensions` onboarding selector types - Update `TaskType` & `TaskListType` types + - Export `InstallPluginsResponse` type - Convert `use-user-preferences.js` to TS. #32695 ## Breaking change diff --git a/plugins/woocommerce/changelog/fix-admin-remaining-task-types b/plugins/woocommerce/changelog/fix-admin-remaining-task-types new file mode 100644 index 00000000000..9c5636c729a --- /dev/null +++ b/plugins/woocommerce/changelog/fix-admin-remaining-task-types @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Fix remaining typescript type errors in react admin From 0308873d7967685902e0102966e62c09c589df8a Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 21 Apr 2022 13:18:24 +0800 Subject: [PATCH 074/327] Turn on ForkTsCheckerWebpackPlugin in react admin --- plugins/woocommerce-admin/webpack.config.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce-admin/webpack.config.js b/plugins/woocommerce-admin/webpack.config.js index d8e3e4e6228..1a2a4536a00 100644 --- a/plugins/woocommerce-admin/webpack.config.js +++ b/plugins/woocommerce-admin/webpack.config.js @@ -8,7 +8,7 @@ const CustomTemplatedPathPlugin = require( '@wordpress/custom-templated-path-web const BundleAnalyzerPlugin = require( 'webpack-bundle-analyzer' ) .BundleAnalyzerPlugin; const MomentTimezoneDataPlugin = require( 'moment-timezone-data-webpack-plugin' ); -// const ForkTsCheckerWebpackPlugin = require( 'fork-ts-checker-webpack-plugin' ); +const ForkTsCheckerWebpackPlugin = require( 'fork-ts-checker-webpack-plugin' ); /** * Internal dependencies @@ -140,8 +140,7 @@ const webpackConfig = { plugins: [ ...styleConfig.plugins, // Runs TypeScript type checker on a separate process. - // Disable TS checker for now as it will block all development until all type inconsistencies are fixed - // new ForkTsCheckerWebpackPlugin(), + new ForkTsCheckerWebpackPlugin(), new CustomTemplatedPathPlugin( { modulename( outputPath, data ) { const entryName = get( data, [ 'chunk', 'name' ] ); From c796406a40822e8edf1e32d9dd0619b28192c5ef Mon Sep 17 00:00:00 2001 From: RJChow Date: Thu, 21 Apr 2022 13:51:29 +0800 Subject: [PATCH 075/327] fixed phpunit tests --- .../settings/class-wc-settings-payment-gateways-test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-payment-gateways-test.php b/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-payment-gateways-test.php index aceca0bdec6..24bfd6a754e 100644 --- a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-payment-gateways-test.php +++ b/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-payment-gateways-test.php @@ -71,8 +71,8 @@ class WC_Settings_Payment_Gateways_Test extends WC_Settings_Unit_Test_Case { $settings_ids_and_types = $this->get_ids_and_types( $settings ); $expected = array( - 'payment_gateways_options' => array( 'title', 'sectionend' ), - '' => 'payment_gateways', + 'payment_gateways_options' => 'sectionend', + '' => array( 'title', 'payment_gateways_banner', 'payment_gateways' ), ); $this->assertEquals( $expected, $settings_ids_and_types ); From 6151f4021c7b0beb9b2effcb41fdb6b18350655b Mon Sep 17 00:00:00 2001 From: RJChow Date: Thu, 21 Apr 2022 13:14:28 +0800 Subject: [PATCH 076/327] Revert "Changed e2e payment settings page detection" This reverts commit 1a7c40316e18a77da0bf76e2d136693e8118bdc1. --- packages/js/admin-e2e-tests/CHANGELOG.md | 2 -- .../js/admin-e2e-tests/src/pages/WcSettings.ts | 2 +- .../client/payments/payment-settings-banner.tsx | 15 ++++++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/js/admin-e2e-tests/CHANGELOG.md b/packages/js/admin-e2e-tests/CHANGELOG.md index a28e2e3be2e..5836c843674 100644 --- a/packages/js/admin-e2e-tests/CHANGELOG.md +++ b/packages/js/admin-e2e-tests/CHANGELOG.md @@ -6,8 +6,6 @@ - Increase timeout threshold for payment task. #32605 -- Changed page detection to use table header instead of h2 header for payment settings page #32697 - # 1.0.0 - Add returned type annotations and remove unused vars. #8020 diff --git a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts index 302e2445862..0b5f78cf0a7 100644 --- a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts +++ b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts @@ -44,7 +44,7 @@ export class WcSettings extends BasePage { async paymentMethodIsEnabled( method = '' ): Promise< boolean > { await this.navigate( 'checkout' ); - await waitForElementByText( 'th', 'Method' ); + await waitForElementByText( 'h2', 'Payment methods' ); const className = await getAttribute( `tr[data-gateway_id=${ method }] .woocommerce-input-toggle`, 'className' diff --git a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx index 0904f5cf6bd..32b5e2e535b 100644 --- a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx @@ -114,6 +114,18 @@ const WcPayBanner = () => { ); }; +const DefaultPaymentMethodsHeaderText = () => ( + <> +

Payment Methods

+
+

+ Installed payment methods are listed below and can be sorted to + control their display order on the frontend. +

+
+ +); + export const PaymentsBannerWrapper = () => { const { installedPaymentGateways, @@ -172,6 +184,7 @@ export const PaymentsBannerWrapper = () => { ) { return ; } + return ; } - return null; + return ; }; From d94bc5e78ac8c7c1a62cbc99b63342d136b30012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=B3pez?= Date: Thu, 21 Apr 2022 09:33:45 +0200 Subject: [PATCH 077/327] Fixed e2e-utils eslint config so that it depends on the package config file only. --- packages/js/e2e-utils/.eslintrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/js/e2e-utils/.eslintrc.js b/packages/js/e2e-utils/.eslintrc.js index 75d467c88d1..fcf93fdd047 100644 --- a/packages/js/e2e-utils/.eslintrc.js +++ b/packages/js/e2e-utils/.eslintrc.js @@ -1,4 +1,5 @@ module.exports = { + root: true, parser: '@typescript-eslint/parser', env: { 'jest/globals': true, From ad57fcf89a3c1648f8754b7bae2dbca8a8579425 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Wed, 20 Apr 2022 16:28:06 +0200 Subject: [PATCH 078/327] Remove the post_id column from the orders table. Note: column is just removed from the schema. No migration is added to remove the column on existing instances, since the feature is still in early stages of development. --- .../src/Internal/DataStores/Orders/OrdersTableDataStore.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index ed6b2b4a957..f3dd7a3c60e 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -201,7 +201,6 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements $sql = " CREATE TABLE $orders_table_name ( id bigint(20) unsigned auto_increment, - post_id bigint(20) unsigned null, status varchar(20) null, currency varchar(10) null, tax_amount decimal(26,8) null, @@ -217,7 +216,6 @@ CREATE TABLE $orders_table_name ( ip_address varchar(100) null, user_agent text null, PRIMARY KEY (id), - KEY post_id (post_id), KEY status (status), KEY date_created (date_created_gmt), KEY customer_id_billing_email (customer_id, billing_email) From 2301903a31a04294c9866e7072e05b06dfd60270 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Wed, 20 Apr 2022 16:30:08 +0200 Subject: [PATCH 079/327] Register the new shop_order_placehold post type. This post type will be used for placeholder entries for orders that are created in the orders table when orders->posts sync is off (placeholder entries are created to reserve a proper order id) --- .../Orders/CustomOrdersTableController.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php index acb13482d9d..336f94746fc 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php @@ -124,6 +124,13 @@ class CustomOrdersTableController { $this->process_options_updated(); } ); + + add_action( + 'woocommerce_after_register_post_type', + function() { + $this->register_post_type_for_order_placeholders(); + } + ); } /** @@ -469,4 +476,35 @@ class CustomOrdersTableController { $this->data_synchronizer->start_synchronizing_pending_orders(); } } + + /** + * Handler for the woocommerce_after_register_post_type post, + * registers the post type for placeholder orders. + * + * @return void + */ + private function register_post_type_for_order_placeholders(): void { + wc_register_order_type( + DataSynchronizer::PLACEHOLDER_ORDER_POST_TYPE, + array( + 'public' => false, + 'exclude_from_search' => true, + 'publicly_queryable' => false, + 'show_ui' => false, + 'show_in_menu' => false, + 'show_in_nav_menus' => false, + 'show_in_admin_bar' => false, + 'show_in_rest' => false, + 'rewrite' => false, + 'query_var' => false, + 'can_export' => false, + 'supports' => array(), + 'capabilities' => array(), + 'exclude_from_order_count' => true, + 'exclude_from_order_views' => true, + 'exclude_from_order_reports' => true, + 'exclude_from_order_sales_reports' => true, + ) + ); + } } From 72db69f6786602298b1a6770db1b91e29e32fb0b Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Wed, 20 Apr 2022 16:55:46 +0200 Subject: [PATCH 080/327] Adjust the queries for finding out of sync orders. Change the queries from relying on the now removed orders.post_id column to relying on the existence of placeholder records in the posts table. --- .../Orders/CustomOrdersTableController.php | 2 +- .../DataStores/Orders/DataSynchronizer.php | 53 ++++++++++++------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php index 336f94746fc..3555168314b 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/CustomOrdersTableController.php @@ -21,7 +21,7 @@ class CustomOrdersTableController { /** * The name of the option for enabling the usage of the custom orders tables */ - private const CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION = 'woocommerce_custom_orders_table_enabled'; + public const CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION = 'woocommerce_custom_orders_table_enabled'; /** * The data store object to use. diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php index 09bc4bf589c..032901e7dac 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php @@ -23,6 +23,7 @@ class DataSynchronizer { const PENDING_SYNC_IS_IN_PROGRESS_OPTION = 'woocommerce_custom_orders_table_pending_sync_in_progress'; const ORDERS_SYNC_SCHEDULED_ACTION_CALLBACK = 'woocommerce_run_orders_sync_callback'; const PENDING_SYNCHRONIZATION_FINISHED_ACTION = 'woocommerce_orders_sync_finished'; + public const PLACEHOLDER_ORDER_POST_TYPE = 'shop_order_placehold'; // Allowed values for $type in get_ids_of_orders_pending_sync method. const ID_TYPE_MISSING_IN_ORDERS_TABLE = 0; @@ -156,13 +157,18 @@ class DataSynchronizer { $orders_table = $wpdb->prefix . 'wc_orders'; if ( 'yes' === get_option( CustomOrdersTableController::CUSTOM_ORDERS_TABLE_USAGE_ENABLED_OPTION ) ) { - $missing_orders_count_sql = "SELECT COUNT(1) FROM $orders_table WHERE post_id IS NULL"; + $missing_orders_count_sql = " +SELECT COUNT(1) FROM $wpdb->posts posts +INNER JOIN $orders_table orders ON posts.id=orders.id +WHERE posts.post_type = '" . self::PLACEHOLDER_ORDER_POST_TYPE . "'"; } else { $missing_orders_count_sql = " -SELECT COUNT( posts.ID ) FROM $wpdb->posts posts -LEFT JOIN $orders_table orders ON posts.ID = orders.post_id -WHERE posts.post_type='shop_order' AND orders.post_id IS NULL -AND posts.post_status != 'auto-draft'"; +SELECT COUNT(1) FROM $wpdb->posts posts +LEFT JOIN $orders_table orders ON posts.id=orders.id +WHERE + posts.post_type = 'shop_order' + AND posts.post_status != 'auto-draft' + AND orders.id IS NULL"; } $sql = " @@ -170,14 +176,16 @@ SELECT( ($missing_orders_count_sql) + (SELECT COUNT(1) FROM ( - SELECT orders.post_id FROM $orders_table orders - JOIN $wpdb->posts posts on posts.ID = orders.post_id - WHERE orders.date_updated_gmt != posts.post_modified_gmt + SELECT orders.id FROM $orders_table orders + JOIN $wpdb->posts posts on posts.ID = orders.id + WHERE + posts.post_type = 'shop_order' + AND orders.date_updated_gmt != posts.post_modified_gmt ) x) ) count"; // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - return (int) $wpdb->get_var( $wpdb->prepare( $sql ) ); + return (int) $wpdb->get_var( $sql ); } /** @@ -185,13 +193,13 @@ SELECT( * * Valid values for $type are: * - * ID_TYPE_MISSING_IN_ORDERS_TABLE: orders that exist in posts table but not in orders table. Returns post ids. - * ID_TYPE_MISSING_IN_POSTS_TABLE: orders that exist in orders table but not in posts table. Returns ids from orders table. - * ID_TYPE_DIFFERENT_UPDATE_DATE: orders that exist in both tables but have different last update dates. Returns ids from orders table. + * ID_TYPE_MISSING_IN_ORDERS_TABLE: orders that exist in posts table but not in orders table. + * ID_TYPE_MISSING_IN_POSTS_TABLE: orders that exist in orders table but not in posts table (the corresponding post entries are placeholders). + * ID_TYPE_DIFFERENT_UPDATE_DATE: orders that exist in both tables but have different last update dates. * * @param int $type One of ID_TYPE_MISSING_IN_ORDERS_TABLE, ID_TYPE_MISSING_IN_POSTS_TABLE, ID_TYPE_DIFFERENT_UPDATE_DATE. * @param int $limit Maximum number of ids to return. - * @return array An array of order or post ids. + * @return array An array of order ids. * @throws \Exception Invalid parameter. */ private function get_ids_of_orders_pending_sync( int $type, int $limit ) { @@ -207,18 +215,25 @@ SELECT( case self::ID_TYPE_MISSING_IN_ORDERS_TABLE: $sql = " SELECT posts.ID FROM $wpdb->posts posts -LEFT JOIN $orders_table orders ON posts.ID = orders.post_id -WHERE posts.post_type='shop_order' AND orders.post_id IS NULL -AND posts.post_status != 'auto-draft'"; +LEFT JOIN $orders_table orders ON posts.ID = orders.id +WHERE + posts.post_type='shop_order' + AND posts.post_status != 'auto-draft' + AND orders.id IS NULL"; break; case self::ID_TYPE_MISSING_IN_POSTS_TABLE: - $sql = "SELECT id FROM $orders_table WHERE post_id IS NULL"; + $sql = " +SELECT posts.ID FROM $wpdb->posts posts +INNER JOIN $orders_table orders ON posts.id=orders.id +WHERE posts.post_type = '" . self::PLACEHOLDER_ORDER_POST_TYPE . "'"; break; case self::ID_TYPE_DIFFERENT_UPDATE_DATE: $sql = " SELECT orders.id FROM $orders_table orders -JOIN $wpdb->posts posts on posts.ID = orders.post_id -WHERE orders.date_updated_gmt != posts.post_modified_gmt"; +JOIN $wpdb->posts posts on posts.ID = orders.id +WHERE + posts.post_type = 'shop_order' + AND orders.date_updated_gmt != posts.post_modified_gmt"; break; default: throw new \Exception( 'Invalid $type, must be one of the ID_TYPE_... constants.' ); From 87172da204a595a0ee345a18753a0c60f028c704 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Wed, 20 Apr 2022 16:58:00 +0200 Subject: [PATCH 081/327] Add visibility modifiers to constants in DataSyncrhonizer. --- .../DataStores/Orders/DataSynchronizer.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php index 032901e7dac..4fd930e7139 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/DataSynchronizer.php @@ -17,18 +17,18 @@ defined( 'ABSPATH' ) || exit; */ class DataSynchronizer { - const ORDERS_DATA_SYNC_ENABLED_OPTION = 'woocommerce_custom_orders_table_data_sync_enabled'; - const INITIAL_ORDERS_PENDING_SYNC_COUNT_OPTION = 'woocommerce_initial_orders_pending_sync_count'; - const AUTO_FLIP_AUTHORITATIVE_TABLE_ROLES_OPTION = 'woocommerce_auto_flip_authoritative_table_roles'; - const PENDING_SYNC_IS_IN_PROGRESS_OPTION = 'woocommerce_custom_orders_table_pending_sync_in_progress'; - const ORDERS_SYNC_SCHEDULED_ACTION_CALLBACK = 'woocommerce_run_orders_sync_callback'; - const PENDING_SYNCHRONIZATION_FINISHED_ACTION = 'woocommerce_orders_sync_finished'; + public const ORDERS_DATA_SYNC_ENABLED_OPTION = 'woocommerce_custom_orders_table_data_sync_enabled'; + private const INITIAL_ORDERS_PENDING_SYNC_COUNT_OPTION = 'woocommerce_initial_orders_pending_sync_count'; + public const AUTO_FLIP_AUTHORITATIVE_TABLE_ROLES_OPTION = 'woocommerce_auto_flip_authoritative_table_roles'; + private const PENDING_SYNC_IS_IN_PROGRESS_OPTION = 'woocommerce_custom_orders_table_pending_sync_in_progress'; + private const ORDERS_SYNC_SCHEDULED_ACTION_CALLBACK = 'woocommerce_run_orders_sync_callback'; + public const PENDING_SYNCHRONIZATION_FINISHED_ACTION = 'woocommerce_orders_sync_finished'; public const PLACEHOLDER_ORDER_POST_TYPE = 'shop_order_placehold'; // Allowed values for $type in get_ids_of_orders_pending_sync method. - const ID_TYPE_MISSING_IN_ORDERS_TABLE = 0; - const ID_TYPE_MISSING_IN_POSTS_TABLE = 1; - const ID_TYPE_DIFFERENT_UPDATE_DATE = 2; + public const ID_TYPE_MISSING_IN_ORDERS_TABLE = 0; + public const ID_TYPE_MISSING_IN_POSTS_TABLE = 1; + public const ID_TYPE_DIFFERENT_UPDATE_DATE = 2; // TODO: Remove the usage of the fake pending orders count once development of the feature is complete. const FAKE_ORDERS_PENDING_SYNC_COUNT_OPTION = 'woocommerce_fake_orders_pending_sync_count'; From 0fffa6cba9d31705ca7283d46eb4d0b472a722c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=B3pez?= Date: Thu, 21 Apr 2022 09:49:07 +0200 Subject: [PATCH 082/327] Disabled eslint task for staged files in e2e-utils until lint issues are addressed. --- packages/js/e2e-utils/package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index ea70d42e7c3..2e0d9763070 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -46,10 +46,5 @@ "build": "pnpm run clean && pnpm run compile", "prepare": "pnpm run build", "lint": "eslint src" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] } } From a16a4deee70a200e0168b7064cea11be22c97b34 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Thu, 21 Apr 2022 10:24:15 +0200 Subject: [PATCH 083/327] Temporarily skip all the tests in WPPostToCOTMigratorTest These tests fail because the code that migrates orders is still not adapted to the removal of the post_id column in the orders table. --- .../Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index e9e9c2e1034..9f2063077fd 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -34,6 +34,11 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { * Setup data_store and sut. */ public function setUp(): void { + + // TODO: Remove this once the migrations have been adapted to the removal of the post_id column. + $this->markTestSkipped( 'Temporarily skipping until the migrations have been adapted to the removal of the post_id column.' ); + return; + parent::setUp(); $this->create_order_custom_table_if_not_exist(); $this->data_store = wc_get_container()->get( OrdersTableDataStore::class ); From 137ccbe7d1565b02ae6c14915820116f2e17274e Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Thu, 21 Apr 2022 10:42:49 +0200 Subject: [PATCH 084/327] Add changelog file --- .../woocommerce/changelog/remove-post_id-from-orders-table | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/remove-post_id-from-orders-table diff --git a/plugins/woocommerce/changelog/remove-post_id-from-orders-table b/plugins/woocommerce/changelog/remove-post_id-from-orders-table new file mode 100644 index 00000000000..f3c4ee19ab2 --- /dev/null +++ b/plugins/woocommerce/changelog/remove-post_id-from-orders-table @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Remove the post_id column from the orders table, and adjust the SQL queries that count/get out of sync orders accordingly. From 4c243ddbc5f9e899013e835786486835b8d11bef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20L=C3=B3pez?= Date: Thu, 21 Apr 2022 12:26:37 +0200 Subject: [PATCH 085/327] Updated e2e-utils changelog. --- packages/js/e2e-utils/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/js/e2e-utils/CHANGELOG.md b/packages/js/e2e-utils/CHANGELOG.md index ba1454ea212..fe86f80c6c1 100644 --- a/packages/js/e2e-utils/CHANGELOG.md +++ b/packages/js/e2e-utils/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +## Fixed + +- Added the `root: true` flag to `e2e-utils` ESLint config file so that ESLint ignores other ancestor config files when checking that package. This solves a version conflict when running ESLint. + ## Added - `createSimpleDownloadableProduct` component which creates a simple downloadable product, containing four parameters for title, price, download name and download limit. From fd0d3e05ddb3763742e0a3d58e20a42c0707e482 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Thu, 21 Apr 2022 16:37:13 +0530 Subject: [PATCH 086/327] Applied PR feedback. --- .../rest-api/Helpers/OrderHelper.php | 29 ++++++++++--------- .../Orders/OrdersTableDataStoreTests.php | 9 ------ 2 files changed, 16 insertions(+), 22 deletions(-) delete mode 100644 plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php index 70c652b9a69..5d88a610ecf 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Helpers/OrderHelper.php @@ -1,12 +1,15 @@ - '', ); - $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; // Required, else wc_create_order throws an exception + $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; // Required, else wc_create_order throws an exception. $order = wc_create_order( $order_data ); - // Add order products + // Add order products. $item = new WC_Order_Item_Product(); $item->set_props( array( @@ -83,7 +86,7 @@ class OrderHelper { $item->save(); $order->add_item( $item ); - // Set billing address + // Set billing address. $order->set_billing_first_name( 'Jeroen' ); $order->set_billing_last_name( 'Sormani' ); $order->set_billing_company( 'WooCompany' ); @@ -96,7 +99,7 @@ class OrderHelper { $order->set_billing_email( 'admin@example.org' ); $order->set_billing_phone( '555-32123' ); - // Add shipping costs + // Add shipping costs. $shipping_taxes = WC_Tax::calc_shipping_tax( '10', WC_Tax::get_shipping_tax_rates() ); $rate = new WC_Shipping_Rate( 'flat_rate_shipping', 'Flat rate shipping', '10', $shipping_taxes, 'flat_rate' ); $item = new WC_Order_Item_Shipping(); @@ -113,17 +116,17 @@ class OrderHelper { } $order->add_item( $item ); - // Set payment gateway + // Set payment gateway. $payment_gateways = WC()->payment_gateways->payment_gateways(); $order->set_payment_method( $payment_gateways['bacs'] ); - // Set totals + // Set totals. $order->set_shipping_total( 10 ); $order->set_discount_total( 0 ); $order->set_discount_tax( 0 ); $order->set_cart_tax( 0 ); $order->set_shipping_tax( 0 ); - $order->set_total( 50 ); // 4 x $10 simple helper product + $order->set_total( 50 ); // 4 x $10 simple helper product. $order->save(); return $order; @@ -134,7 +137,7 @@ class OrderHelper { */ public static function create_order_custom_table_if_not_exist() { $order_table_controller = wc_get_container() - ->get( 'Automattic\WooCommerce\Internal\DataStores\Orders\CustomOrdersTableController' ); + ->get( CustomOrdersTableController::class ); $order_table_controller->show_feature(); $synchronizer = wc_get_container() ->get( DataSynchronizer::class ); @@ -166,7 +169,7 @@ class OrderHelper { ShippingHelper::create_simple_flat_rate(); - $order = OrderHelper::create_order(); + $order = self::create_order(); // Make sure this is a wp_post order. $post = get_post( $order->get_id() ); assert( isset( $post ) ); diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php deleted file mode 100644 index 595f93d38f9..00000000000 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ /dev/null @@ -1,9 +0,0 @@ - Date: Thu, 21 Apr 2022 16:20:48 +0200 Subject: [PATCH 087/327] Fix indentation in one line of WC_Countries::get_country_locale --- plugins/woocommerce/includes/class-wc-countries.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-countries.php b/plugins/woocommerce/includes/class-wc-countries.php index 58bc5e6e335..1089753c623 100644 --- a/plugins/woocommerce/includes/class-wc-countries.php +++ b/plugins/woocommerce/includes/class-wc-countries.php @@ -996,7 +996,7 @@ class WC_Countries { 'label' => __( 'Province', 'woocommerce' ), ), ), - 'EC' => array( + 'EC' => array( 'state' => array( 'label' => __( 'Province', 'woocommerce' ), ), From 1ad61780fe7a0607136357d9bd2ce1d6a75afd3b Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 21 Apr 2022 09:35:01 -0700 Subject: [PATCH 088/327] Adding support for actionUrl to sectioned task list --- .../two-column-tasks/sectioned-task-list.tsx | 23 +++++++++++++------ .../client/two-column-tasks/task-list.tsx | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx index 2703c84d0cf..f830cb6e5cd 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx @@ -5,7 +5,11 @@ import { __ } from '@wordpress/i18n'; import { useEffect, useRef, useState } from '@wordpress/element'; import { Panel, PanelBody, PanelRow } from '@wordpress/components'; import { useSelect, useDispatch } from '@wordpress/data'; -import { updateQueryString } from '@woocommerce/navigation'; +import { + updateQueryString, + getHistory, + getNewPath, +} from '@woocommerce/navigation'; import { OPTIONS_STORE_NAME, ONBOARDING_STORE_NAME, @@ -127,13 +131,18 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { } ); }; - const goToTask = ( task: TaskType ) => { - trackClick( task ); - updateQueryString( { task: task.id } ); - }; - const onTaskSelected = ( task: TaskType ) => { - goToTask( task ); + trackClick( task ); + if ( task.actionUrl ) { + if ( task.actionUrl.startsWith( 'http' ) ) { + window.location.href = task.actionUrl; + } else { + getHistory().push( getNewPath( {}, task.actionUrl, {} ) ); + } + return; + } + + updateQueryString( { task: task.id } ); }; const getSectionTasks = ( sectionTaskIds: string[] ) => { diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx index 9f9c4f468e2..53dcd0d34a8 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx @@ -202,7 +202,7 @@ export const TaskList: React.FC< TaskListProps > = ( { } if ( task.actionUrl ) { if ( task.actionUrl.startsWith( 'http' ) ) { - window.location.href = actionUrl; + window.location.href = task.actionUrl; } else { getHistory().push( getNewPath( {}, task.actionUrl, {} ) ); } From 24c55d628441c1595ae2460228db66046d15520f Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 21 Apr 2022 09:39:21 -0700 Subject: [PATCH 089/327] Adding changelog --- plugins/woocommerce/changelog/fix-32705 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32705 diff --git a/plugins/woocommerce/changelog/fix-32705 b/plugins/woocommerce/changelog/fix-32705 new file mode 100644 index 00000000000..d3025548d9e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32705 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fixing bug on sectioned task list for tasks with actionUrl property From bd23093c42df005559b24930afc6e52ea7244d3d Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 21 Apr 2022 09:45:12 -0700 Subject: [PATCH 090/327] Refactor caching for workflows --- .github/workflows/pr-build-and-e2e-tests.yml | 85 ++++++++++++-------- .github/workflows/pr-code-coverage.yml | 36 ++++----- .github/workflows/pr-code-sniff.yml | 37 +++++---- .github/workflows/pr-lint-test-js.yml | 24 ++++-- .github/workflows/pr-unit-tests.yml | 40 +++++---- 5 files changed, 130 insertions(+), 92 deletions(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 328549ec59a..155db6abc73 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -1,17 +1,16 @@ name: Build zip for PR on: pull_request +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build: name: Build zip for PR runs-on: ubuntu-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build id: build @@ -20,7 +19,7 @@ jobs: BUILD_ENV: e2e - name: Upload PR zip - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -38,10 +37,9 @@ jobs: mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce @@ -49,7 +47,7 @@ jobs: run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: woocommerce path: tmp @@ -60,15 +58,23 @@ jobs: unzip woocommerce.zip -d woocommerce mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Cache modules + uses: actions/cache@v3 + with: + path: | + ~/.pnpm-store + key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + - name: Install dependencies working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + run: pnpm install - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -76,10 +82,10 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }} E2E_SLACK_CHANNEL: ${{ secrets.E2E_SLACK_CHANNEL }} - run: pnpx wc-e2e test:e2e + run: pnpm exec wc-e2e test:e2e - name: Archive E2E test screenshots - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 if: always() with: name: E2E Screenshots @@ -97,10 +103,9 @@ jobs: mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce @@ -108,7 +113,7 @@ jobs: run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: woocommerce path: tmp @@ -119,15 +124,23 @@ jobs: unzip woocommerce.zip -d woocommerce mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Cache modules + uses: actions/cache@v3 + with: + path: | + ~/.pnpm-store + key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + - name: Install dependencies working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + run: pnpm install - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Run tests command. working-directory: package/woocommerce/plugins/woocommerce @@ -135,10 +148,10 @@ jobs: BASE_URL: http://localhost:8084 USER_KEY: admin USER_SECRET: password - run: pnpx wc-api-tests test api + run: pnpm exec wc-api-tests test api - name: Upload API test report - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: api-test-report---pr-${{ github.event.number }} path: | @@ -156,9 +169,9 @@ jobs: mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules + - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce @@ -166,7 +179,7 @@ jobs: run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: woocommerce path: tmp @@ -177,11 +190,19 @@ jobs: unzip woocommerce.zip -d woocommerce mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ + - name: Cache modules + uses: actions/cache@v3 + with: + path: | + ~/.pnpm-store + key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + - name: Install dependencies working-directory: package/woocommerce - run: | - npm install -g pnpm - pnpm install + run: pnpm install - name: Workaround to use initialization file with prepopulated data. working-directory: package/woocommerce/plugins/woocommerce/tests/e2e/docker @@ -190,7 +211,7 @@ jobs: - name: Load docker images and start containers. working-directory: package/woocommerce/plugins/woocommerce - run: pnpx wc-e2e docker:up + run: pnpm exec wc-e2e docker:up - name: Install k6 run: | diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index c32ef4a016a..a4c068e56f7 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -4,7 +4,9 @@ on: defaults: run: shell: bash - working-directory: plugins/woocommerce +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: name: Code coverage (PHP 7.4, WP Latest) @@ -19,13 +21,8 @@ jobs: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 100 @@ -42,24 +39,27 @@ jobs: php --version composer --version - - name: Get cached composer directories - uses: actions/cache@v2 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps with: path: | - ./packages - ./vendor - key: ${{ runner.os }}-${{ hashFiles('./composer.lock') }} + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - - name: Install PNPM and install dependencies - run: | - npm install -g pnpm - pnpm install + - name: Install PNPM + run: npm install -g pnpm - - name: Setup and install composer + - name: Install dependencies + run: pnpm install + + - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Build Admin feature config - working-directory: ./ run: | pnpm nx build:feature-config woocommerce diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index 895bf331f13..54213a6f277 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -4,20 +4,17 @@ on: defaults: run: shell: bash - working-directory: plugins/woocommerce +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: name: Code sniff (PHP 7.4, WP Latest) timeout-minutes: 15 runs-on: ubuntu-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 100 @@ -32,25 +29,31 @@ jobs: php --version composer --version - - name: Get cached composer directories - uses: actions/cache@v2 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps with: path: | - ./packages - ./vendor - key: ${{ runner.os }}-${{ hashFiles('./composer.lock') }} + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - - name: Install PNPM and install dependencies - run: | - npm install -g pnpm - pnpm install + - name: Install PNPM + run: npm install -g pnpm - - name: Setup and install composer + - name: Install dependencies + run: pnpm install + + - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Run code sniff continue-on-error: true + working-directory: plugins/woocommerce run: ./tests/bin/phpcs.sh "${{ github.event.pull_request.base.sha }}" "${{ github.event.after }}" - name: Show PHPCS results in PR + working-directory: plugins/woocommerce run: cs2pr ./phpcs-report.xml diff --git a/.github/workflows/pr-lint-test-js.yml b/.github/workflows/pr-lint-test-js.yml index d076ecf69c5..c2e6c1518d7 100644 --- a/.github/workflows/pr-lint-test-js.yml +++ b/.github/workflows/pr-lint-test-js.yml @@ -6,26 +6,34 @@ on: - 'packages/js/**/**' - 'plugins/woocommerce-admin/client/**' - '!**.md' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: lint-test-js: name: Lint and Test JS runs-on: ubuntu-18.04 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Check out repository code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - uses: actions/setup-node@v2 with: node-version: '16' - - name: Install PNPM and install dependencies - run: npm install -g pnpm && pnpm install + - name: Cache modules + uses: actions/cache@v3 + with: + path: | + ~/.pnpm-store + key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + + - name: Install dependencies + run: pnpm install - name: Lint run: | diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 9dcaedf3ee4..0af70f61310 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -4,7 +4,10 @@ on: defaults: run: shell: bash - working-directory: plugins/woocommerce +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: test: name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} @@ -32,11 +35,6 @@ jobs: - 3306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Checkout code uses: actions/checkout@v2 @@ -53,21 +51,27 @@ jobs: php --version composer --version - - name: Get cached composer directories - uses: actions/cache@v2 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps with: path: | - ./packages - ./vendor - key: ${{ runner.os }}-${{ hashFiles('./composer.lock') }} + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + + - name: Install dependencies + run: pnpm install + + - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' + run: pnpm nx composer-install woocommerce - - name: Install PNPM and install dependencies - run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install woocommerce - name: Build Admin feature config - working-directory: ./ run: | pnpm nx build:feature-config woocommerce @@ -76,6 +80,7 @@ jobs: if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip + cd plugins/woocommerce composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs @@ -84,6 +89,7 @@ jobs: fi - name: Init DB and WP + working-directory: plugins/woocommerce run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} - name: Run tests From c8d9be5baed66eea3b547315a1d9f9fe92b02fa6 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 21 Apr 2022 13:52:32 -0300 Subject: [PATCH 091/327] Prepare trunk for 6.6 --- plugins/woocommerce/includes/class-woocommerce.php | 2 +- plugins/woocommerce/package.json | 2 +- plugins/woocommerce/woocommerce.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/includes/class-woocommerce.php b/plugins/woocommerce/includes/class-woocommerce.php index 92a51a6bf57..00bdccc6ba8 100644 --- a/plugins/woocommerce/includes/class-woocommerce.php +++ b/plugins/woocommerce/includes/class-woocommerce.php @@ -29,7 +29,7 @@ final class WooCommerce { * * @var string */ - public $version = '6.5.0'; + public $version = '6.6.0'; /** * WooCommerce Schema version. diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index ac076b7e508..b61f388c5e8 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -1,7 +1,7 @@ { "name": "woocommerce", "title": "WooCommerce", - "version": "6.5.0", + "version": "6.6.0", "homepage": "https://woocommerce.com/", "repository": { "type": "git", diff --git a/plugins/woocommerce/woocommerce.php b/plugins/woocommerce/woocommerce.php index e80a3779ba3..11d86f2721f 100644 --- a/plugins/woocommerce/woocommerce.php +++ b/plugins/woocommerce/woocommerce.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce * Plugin URI: https://woocommerce.com/ * Description: An eCommerce toolkit that helps you sell anything. Beautifully. - * Version: 6.5.0-dev + * Version: 6.6.0-dev * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woocommerce From 6e5d61da0b4ee5095d8b1c9356b7541b113cd904 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 21 Apr 2022 11:29:53 -0700 Subject: [PATCH 092/327] Test pr smoke test workflow --- .github/workflows/build-release-zip-file.yml | 2 +- .github/workflows/build-release.yml | 2 +- .github/workflows/ci.yml | 33 ++++++++------ .github/workflows/mirrors.yml | 2 +- .github/workflows/nightly-builds.yml | 2 +- .github/workflows/pr-project-label.yml | 8 ++-- .github/workflows/pr-smoke-test.yml | 47 +++++++++++++------- .github/workflows/pr-unit-tests.yml | 2 +- 8 files changed, 59 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index 8c1a61a3dce..4d221f45cb0 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: ${{ github.event.inputs.ref || github.ref }} - name: Build the zip file diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 13ac20297bb..356ae9da4ce 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build id: build uses: woocommerce/action-build@trunk diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac8ab5115ce..5c5ddb4a4e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,9 @@ on: defaults: run: shell: bash - working-directory: plugins/woocommerce +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} @@ -36,7 +38,7 @@ jobs: options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5 steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -51,24 +53,27 @@ jobs: php --version composer --version - - name: Get cached composer directories - uses: actions/cache@v2 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps with: path: | - ./packages - ./vendor - key: ${{ runner.os }}-${{ hashFiles('./composer.lock') }} + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - - name: Install PNPM and install dependencies - run: | - npm install -g pnpm - pnpm install + - name: Install PNPM + run: npm install -g pnpm - - name: Setup and install composer + - name: Install dependencies + run: pnpm install + + - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Build Admin feature config - working-directory: ./ run: pnpm nx build:feature-config woocommerce - name: Add PHP8 Compatibility. @@ -76,6 +81,7 @@ jobs: if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip + cd plugins/woocommerce composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs @@ -84,6 +90,7 @@ jobs: fi - name: Init DB and WP + working-directory: plugins/woocommerce run: ./tests/bin/install.sh woo_test root root 127.0.0.1 ${{ matrix.wp }} - name: Run tests diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index 1712b7c39c5..514b14b179f 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build id: build uses: woocommerce/action-build@trunk diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index e174617c992..126d37523ac 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: ${{ matrix.build }} - name: Build diff --git a/.github/workflows/pr-project-label.yml b/.github/workflows/pr-project-label.yml index 11fc915ff68..cb679c00bc1 100644 --- a/.github/workflows/pr-project-label.yml +++ b/.github/workflows/pr-project-label.yml @@ -4,16 +4,14 @@ on: types: - opened - synchronize +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: label_project: runs-on: ubuntu-latest steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - uses: actions/labeler@v3 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 933038e8a59..7c50dbbfe39 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -1,40 +1,55 @@ name: Run smoke tests against pull request. -on: - pull_request: - branches: - - trunk - types: - - labeled +on: pull_request + # pull_request: + # branches: + # - trunk + # types: + # - labeled +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: prcheck: name: Smoke test a pull request. if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" runs-on: ubuntu-18.04 steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.7.0 - with: - access_token: ${{ github.token }} - - name: Create dirs. run: | mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + package/woocommerce/plugins/woocommerce/packages + package/woocommerce/plugins/woocommerce/vendor + key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + + - name: Install PNPM + run: npm install -g pnpm + + - name: Install dependencies + run: pnpm install + + - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' + run: pnpm nx composer-install-no-dev woocommerce + - name: Install prerequisites. working-directory: package/woocommerce/plugins/woocommerce id: installation run: | - npm install -g pnpm - pnpm install - pnpm nx composer-install-no-dev woocommerce pnpm nx build-assets woocommerce pnpm install jest diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 0af70f61310..6b3670e796e 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -85,7 +85,7 @@ jobs: composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs rm -rf ./vendor/phpunit/ - composer dump-autoload + pnpm nx composer-dump-autoload woocommerce fi - name: Init DB and WP From 3f4c2060dd0870a018c41106df0188096fdf781a Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 21 Apr 2022 11:46:30 -0700 Subject: [PATCH 093/327] Clean up and bump versions --- .github/workflows/pr-smoke-test.yml | 12 ++++++------ .github/workflows/smoke-test-daily.yml | 8 ++++---- .github/workflows/smoke-test-release.yml | 4 ++-- .github/workflows/stalebot.yml | 2 +- .github/workflows/triage-label.yml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 7c50dbbfe39..4c6ccaa89c4 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -1,10 +1,10 @@ name: Run smoke tests against pull request. -on: pull_request - # pull_request: - # branches: - # - trunk - # types: - # - labeled +on: + pull_request: + branches: + - trunk + types: + - labeled concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index bd6b2fd693e..587228e41d6 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -15,7 +15,7 @@ jobs: mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce ref: trunk @@ -57,7 +57,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build id: build @@ -66,7 +66,7 @@ jobs: BUILD_ENV: e2e - name: Upload PR zip - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -122,7 +122,7 @@ jobs: run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: woocommerce path: tmp diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index fafb41b704f..383bb6ebdba 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -18,7 +18,7 @@ jobs: mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce ref: trunk @@ -70,7 +70,7 @@ jobs: mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce - name: Fetch Asset ID diff --git a/.github/workflows/stalebot.yml b/.github/workflows/stalebot.yml index 988b490214a..f6bd4bcb592 100644 --- a/.github/workflows/stalebot.yml +++ b/.github/workflows/stalebot.yml @@ -12,7 +12,7 @@ jobs: - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: "As a part of this repository’s maintenance, this issue is being marked as stale due to inactivity. Please feel free to comment on it in case we missed something.\n\n###### After 7 days with no activity this issue will be automatically be closed." + stale-issue-message: "As a part of this repository's maintenance, this issue is being marked as stale due to inactivity. Please feel free to comment on it in case we missed something.\n\n###### After 7 days with no activity this issue will be automatically be closed." close-issue-message: 'This issue was closed because it has been 14 days with no activity.' days-before-issue-stale: 7 days-before-issue-close: 7 diff --git a/.github/workflows/triage-label.yml b/.github/workflows/triage-label.yml index 88e4d2fa92e..992ccea1258 100644 --- a/.github/workflows/triage-label.yml +++ b/.github/workflows/triage-label.yml @@ -8,7 +8,7 @@ jobs: add_label: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: actions-ecosystem/action-add-labels@v1 if: github.event.issue.labels[0] == null with: From 835b1e73a14df7d40d72034e80a5953232c27453 Mon Sep 17 00:00:00 2001 From: Joshua Flowers Date: Thu, 21 Apr 2022 12:01:56 -0700 Subject: [PATCH 094/327] Add tracks to task list reminder bar --- .../tasks/reminder-bar/reminder-bar.tsx | 57 ++++++++++++++----- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx index ea8ccd4c771..ba8932a46e9 100644 --- a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx +++ b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx @@ -15,6 +15,7 @@ import { close as closeIcon } from '@wordpress/icons'; import interpolateComponents from '@automattic/interpolate-components'; import { useEffect } from '@wordpress/element'; import { getQuery } from '@woocommerce/navigation'; +import { recordEvent } from '@woocommerce/tracks'; /** * Internal dependencies @@ -29,11 +30,19 @@ type ReminderBarProps = { type ReminderTextProps = { remainingCount: number | null; + tracksProps: { + completed: number; + is_homescreen: boolean; + is_active_task_page: boolean; + }; }; const REMINDER_BAR_HIDDEN_OPTION = 'woocommerce_task_list_reminder_bar_hidden'; -const ReminderText: React.FC< ReminderTextProps > = ( { remainingCount } ) => { +const ReminderText: React.FC< ReminderTextProps > = ( { + remainingCount, + tracksProps, +} ) => { const translationText = remainingCount === 1 ? /* translators: 1: remaining tasks count */ @@ -56,6 +65,12 @@ const ReminderText: React.FC< ReminderTextProps > = ( { remainingCount } ) => { setupLink: ( + recordEvent( + 'tasklist_reminder_bar_continue', + tracksProps + ) + } type="wp-admin" /> ), @@ -123,7 +138,7 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { getQuery().page && getQuery().page === 'wc-admin' && ! getQuery().path; const isActiveTaskPage = Boolean( getQuery().wc_onboarding_active_task ); - const hideReminderBar = + const isHidden = loading || taskListHidden || taskListComplete || @@ -134,24 +149,40 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { useEffect( () => { updateBodyMargin(); - }, [ hideReminderBar, updateBodyMargin ] ); + }, [ isHidden, updateBodyMargin ] ); - if ( hideReminderBar ) { + const tracksProps = { + completed: completedTasksCount, + is_homescreen: isHomescreen, + is_active_task_page: isActiveTaskPage, + }; + + useEffect( () => { + if ( loading || isHidden ) { + return; + } + + recordEvent( 'tasklist_reminder_bar_view', tracksProps ); + }, [ isHidden, loading ] ); + + const onClose = () => { + updateOptions( { + [ REMINDER_BAR_HIDDEN_OPTION ]: 'yes', + } ); + recordEvent( 'tasklist_reminder_bar_close', tracksProps ); + }; + + if ( isHidden ) { return null; } return (
- -
); }; From 14b5261f93f1944fa491f3807551e79e0dad6db4 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 21 Apr 2022 12:43:38 -0700 Subject: [PATCH 095/327] Test busting cache --- plugins/woocommerce/package.json | 2 +- pnpm-lock.yaml | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index a5a6d8f1909..1254ad783ec 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -31,7 +31,7 @@ "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" }, "devDependencies": { - "@babel/cli": "7.12.8", + "@babel/cli": "7.17.6", "@babel/core": "7.12.9", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 66e706c2970..c1fb32d0b21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1097,7 +1097,7 @@ importers: plugins/woocommerce: specifiers: - '@babel/cli': 7.12.8 + '@babel/cli': 7.17.6 '@babel/core': 7.12.9 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 @@ -1136,7 +1136,7 @@ importers: webpack-cli: 3.3.12 wp-textdomain: 1.0.1 devDependencies: - '@babel/cli': 7.12.8_@babel+core@7.12.9 + '@babel/cli': 7.17.6_@babel+core@7.12.9 '@babel/core': 7.12.9 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@babel/register': 7.12.1_@babel+core@7.12.9 @@ -1738,6 +1738,27 @@ packages: chokidar: 3.5.3 dev: true + /@babel/cli/7.17.6_@babel+core@7.12.9: + resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@jridgewell/trace-mapping': 0.3.4 + commander: 4.1.1 + convert-source-map: 1.8.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.0 + make-dir: 2.1.0 + slash: 2.0.0 + source-map: 0.5.7 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 + dev: true + /@babel/cli/7.17.6_@babel+core@7.17.8: resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==} engines: {node: '>=6.9.0'} @@ -12553,6 +12574,7 @@ packages: re-resizable: 4.11.0 transitivePeerDependencies: - react + - react-dom dev: true /@types/wordpress__compose/4.0.1: From 20befd32d776942c4283618bd342b9742efcb004 Mon Sep 17 00:00:00 2001 From: Jon Lane Date: Thu, 21 Apr 2022 13:04:31 -0700 Subject: [PATCH 096/327] Update Slack Channel IDs for workflows --- .github/workflows/smoke-test-daily.yml | 2 +- .github/workflows/smoke-test-release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index bd6b2fd693e..f184b5e7cdc 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -41,7 +41,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_RETEST: 1 E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.SMOKE_TEST_SLACK_CHANNEL }} + E2E_SLACK_CHANNEL: 'C01U0H617MY' UPDATE_WC: 1 DEFAULT_TIMEOUT_OVERRIDE: 120000 BASE_URL: ${{ secrets.SMOKE_TEST_URL }} diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index fafb41b704f..b66823de512 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -44,7 +44,7 @@ jobs: WC_E2E_SCREENSHOTS: 1 E2E_RETEST: 1 E2E_SLACK_TOKEN: ${{ secrets.SMOKE_TEST_SLACK_TOKEN }} - E2E_SLACK_CHANNEL: ${{ secrets.RELEASE_TEST_SLACK_CHANNEL }} + E2E_SLACK_CHANNEL: 'C02DS4NE72S' TEST_RELEASE: 1 UPDATE_WC: 1 DEFAULT_TIMEOUT_OVERRIDE: 120000 From f6d8a56baa676792f80a1c865ab63ae2a0a032a9 Mon Sep 17 00:00:00 2001 From: roykho Date: Thu, 21 Apr 2022 13:32:13 -0700 Subject: [PATCH 097/327] Revert test --- plugins/woocommerce/package.json | 2 +- pnpm-lock.yaml | 39 ++++++++------------------------ 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 1254ad783ec..a5a6d8f1909 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -31,7 +31,7 @@ "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" }, "devDependencies": { - "@babel/cli": "7.17.6", + "@babel/cli": "7.12.8", "@babel/core": "7.12.9", "@babel/preset-env": "7.12.7", "@babel/register": "7.12.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1fb32d0b21..641a5525d60 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1097,7 +1097,7 @@ importers: plugins/woocommerce: specifiers: - '@babel/cli': 7.17.6 + '@babel/cli': 7.12.8 '@babel/core': 7.12.9 '@babel/preset-env': 7.12.7 '@babel/register': 7.12.1 @@ -1136,7 +1136,7 @@ importers: webpack-cli: 3.3.12 wp-textdomain: 1.0.1 devDependencies: - '@babel/cli': 7.17.6_@babel+core@7.12.9 + '@babel/cli': 7.12.8_@babel+core@7.12.9 '@babel/core': 7.12.9 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@babel/register': 7.12.1_@babel+core@7.12.9 @@ -1738,27 +1738,6 @@ packages: chokidar: 3.5.3 dev: true - /@babel/cli/7.17.6_@babel+core@7.12.9: - resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.12.9 - '@jridgewell/trace-mapping': 0.3.4 - commander: 4.1.1 - convert-source-map: 1.8.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.0 - make-dir: 2.1.0 - slash: 2.0.0 - source-map: 0.5.7 - optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 - dev: true - /@babel/cli/7.17.6_@babel+core@7.17.8: resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==} engines: {node: '>=6.9.0'} @@ -13216,7 +13195,7 @@ packages: typescript: optional: true dependencies: - debug: 4.3.2 + debug: 4.3.3 eslint-visitor-keys: 1.3.0 glob: 7.2.0 is-glob: 4.0.3 @@ -13237,7 +13216,7 @@ packages: typescript: optional: true dependencies: - debug: 4.3.2 + debug: 4.3.3 eslint-visitor-keys: 1.3.0 glob: 7.2.0 is-glob: 4.0.3 @@ -13258,7 +13237,7 @@ packages: typescript: optional: true dependencies: - debug: 4.3.2 + debug: 4.3.3 eslint-visitor-keys: 1.3.0 glob: 7.2.0 is-glob: 4.0.3 @@ -13281,7 +13260,7 @@ packages: dependencies: '@typescript-eslint/types': 3.10.1 '@typescript-eslint/visitor-keys': 3.10.1 - debug: 4.3.2 + debug: 4.3.3 glob: 7.2.0 is-glob: 4.0.3 lodash: 4.17.21 @@ -20817,7 +20796,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.2 + debug: 4.3.3 eslint: 6.8.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -20835,7 +20814,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.2 + debug: 4.3.3 eslint: 7.32.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -20853,7 +20832,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.2 + debug: 4.3.3 eslint: 8.2.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 From d24992f04d6365cdf64ec425d631992300eb3042 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Fri, 22 Apr 2022 08:41:42 +1200 Subject: [PATCH 098/327] reference trunk in GH action --- .github/workflows/pr-build-and-e2e-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 9fc3a961c21..328549ec59a 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -15,7 +15,7 @@ jobs: - name: Build id: build - uses: woocommerce/action-build@fix/build-core-reference + uses: woocommerce/action-build@trunk env: BUILD_ENV: e2e From 2ff94f538819ae61fcd5e1ba31d859b995725a6e Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Fri, 22 Apr 2022 16:47:31 +0800 Subject: [PATCH 099/327] Fix history type error --- .../client/two-column-tasks/sectioned-task-list.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx index 17f87f49a6d..e00a78c8e2c 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx @@ -20,6 +20,7 @@ import { import { recordEvent } from '@woocommerce/tracks'; import { List, TaskItem } from '@woocommerce/experimental'; import classnames from 'classnames'; +import { History } from 'history'; /** * Internal dependencies @@ -138,7 +139,9 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { if ( task.actionUrl.startsWith( 'http' ) ) { window.location.href = task.actionUrl; } else { - getHistory().push( getNewPath( {}, task.actionUrl, {} ) ); + ( getHistory() as History ).push( + getNewPath( {}, task.actionUrl, {} ) + ); } return; } From 21923f863096d87cc5a17e7c76fff546475f9c6c Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:21:46 +0530 Subject: [PATCH 100/327] Enable meta migrations. --- .../Migrations/CustomOrderTable/WPPostToCOTMigrator.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php index 6e94d9106e4..81f5f1e97c9 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php @@ -148,8 +148,7 @@ class WPPostToCOTMigrator { $this->billing_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->shipping_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->operation_data_table_migrator->process_migration_batch_for_ids( $order_post_ids ); - // TODO: Add resilience for meta migrations. - // $this->process_meta_migration( $order_post_ids ); + $this->process_meta_migration( $order_post_ids ); // TODO: Return merged error array. } From af2b7dd97269617d88005ed32b4e467526e4a80e Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:22:20 +0530 Subject: [PATCH 101/327] Add source table name to prevent ambigious column names. --- .../Migrations/CustomOrderTable/MetaToMetaTableMigrator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index f043b70ffe2..7a1335c43b8 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -117,7 +117,7 @@ class MetaToMetaTableMigrator { /** * Helper method to build query used to fetch data from source meta table. * - * @param string $entity_ids List of entity IDs to build meta query for. + * @param array $entity_ids List of entity IDs to build meta query for. * * @return string Query that can be used to fetch data. */ @@ -127,9 +127,9 @@ class MetaToMetaTableMigrator { $source_meta_key_column = $this->schema_config['source']['meta']['meta_key_column']; $source_meta_value_column = $this->schema_config['source']['meta']['meta_value_column']; $source_entity_id_column = $this->schema_config['source']['meta']['entity_id_column']; - $order_by = "$source_entity_id_column ASC"; + $order_by = "source.$source_entity_id_column ASC"; - $where_clause = "$source_entity_id_column IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; + $where_clause = "source.`$source_entity_id_column` IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; $destination_entity_table = $this->schema_config['destination']['entity']['table_name']; $destination_entity_id_column = $this->schema_config['destination']['entity']['id_column']; From 594d63f0fbbcd0b253dab9faee7e870d3f7bc3a4 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:22:39 +0530 Subject: [PATCH 102/327] Add test for migrations. --- .../WPPostToCOTMigratorTest.php | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 9f2063077fd..71a05261d62 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -56,6 +56,7 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { $this->assert_core_data_is_migrated( $order ); $this->assert_order_addresses_are_migrated( $order ); $this->assert_order_op_data_is_migrated( $order ); + $this->assert_metadata_is_migrated( $order ); } /** @@ -154,7 +155,7 @@ WHERE order_id = {$order_id} /** * Helper method to get address details from DB. * - * @param int $order_id Order ID. + * @param int $order_id Order ID. * @param string $address_type Address Type. * * @return array|object|void|null DB object. @@ -182,6 +183,13 @@ WHERE order_id = {$order_id} return $wpdb->get_row( "SELECT * FROM $operational_data_table WHERE order_id = $order_id;" ); } + private function get_meta_data_from_cot( $order_id ) { + global $wpdb; + $metadata_table = $this->data_store::get_meta_table_name(); + + return $wpdb->get_results( "SELECT * FROM $metadata_table WHERE order_id = $order_id;" ); + } + /** * Helper method to create complex wp_post based order. * @@ -249,6 +257,9 @@ WHERE order_id = {$order_id} $order->set_date_completed( time() ); $order->calculate_shipping(); + $order->add_meta_data( 'unique_key_1', 'unique_value_1', true ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_1', false ); + $order->add_meta_data( 'non_unique_key_1', 'non_unique_value_2', false ); $order->save(); $order->save_meta_data(); @@ -357,6 +368,27 @@ WHERE order_id = {$order_id} $this->assertEquals( (float) $order->get_discount_total(), (float) $db_order_op_data->discount_total_amount ); } + private function assert_metadata_is_migrated( $order ) { + $db_order = $this->get_order_from_cot( $order ); + $meta_data = $this->get_meta_data_from_cot( $db_order->id ); + + $unique_row = array_filter( $meta_data, function ( $meta_row ) { + return 'unique_key_1' === $meta_row->meta_key; + } ); + + $this->assertEquals( 1, count( $unique_row ) ); + $this->assertEquals( 'unique_value_1', array_values( $unique_row)[0]->meta_value ); + + $non_unique_rows = array_filter( $meta_data, function ( $meta_row ) { + return 'non_unique_key_1' === $meta_row->meta_key; + } ); + $this->assertEquals( 2, count( $non_unique_rows ) ); + $this->assertEquals( array( + 'non_unique_value_1', + 'non_unique_value_2' + ), array_column( $non_unique_rows, 'meta_value' ) ); + } + /** * Helper method to clear checkout and truncate order tables. */ From 594385690a2dc6753c480dd04253520757554377 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 15:32:30 +0530 Subject: [PATCH 103/327] Add tests to check for duplicated meta records. --- .../WPPostToCOTMigratorTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 71a05261d62..c1c49ca51a8 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -109,6 +109,25 @@ WHERE order_id = {$order_id} AND address_type = 'shipping' " SELECT COUNT(*) FROM {$this->data_store::get_operational_data_table_name()} WHERE order_id = {$order_id} +" + ) + ); + + $this->assertEquals( + 1, + $wpdb->get_var( + " +SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} +WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' +" + ) + ); + $this->assertEquals( + 2, + $wpdb->get_var( + " +SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} +WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' " ) ); From 91ca23588922ca469983f3e91c9b8b09249cab2e Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Tue, 12 Apr 2022 16:41:58 +0530 Subject: [PATCH 104/327] Refactor meta migrator to follow pattern in meta to custom migrator. --- .../MetaToMetaTableMigrator.php | 29 ++++++-- .../WPPostMetaToOrderMetaMigrator.php | 55 +++++++++++++++ .../CustomOrderTable/WPPostToCOTMigrator.php | 69 ++----------------- 3 files changed, 81 insertions(+), 72 deletions(-) create mode 100644 plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 7a1335c43b8..a41578fc288 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -14,7 +14,7 @@ use Automattic\WooCommerce\Database\Migrations\MigrationHelper; * * @package Automattic\WooCommerce\Database\Migrations\CustomOrderTable */ -class MetaToMetaTableMigrator { +abstract class MetaToMetaTableMigrator { /** * Schema config, see __construct for more details. @@ -24,14 +24,29 @@ class MetaToMetaTableMigrator { private $schema_config; /** - * MetaToMetaTableMigrator constructor. + * Store errors along with entity IDs from migrations. * - * @param array $schema_config This parameters provides general but essential information about tables under migrations. Must be of the form- - * TODO: Add structure. + * @var array */ - public function __construct( $schema_config ) { - // TODO: Validate params. - $this->schema_config = $schema_config; + protected $errors; + + public abstract function get_meta_config(); + + public function __construct() { + $this->schema_config = $this->get_meta_config(); + $this->errors = array(); + } + + public function process_migration_batch_for_ids( $entity_ids ) { + global $wpdb; + $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); + $insert_queries = $this->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. + $result = $wpdb->query( $insert_queries ); + if ( count( $data_to_migrate['data'] ) !== $result ) { + // TODO: Find and log entity ids that were not inserted. + echo 'error'; + } } /** diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php new file mode 100644 index 00000000000..e155a93009f --- /dev/null +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -0,0 +1,55 @@ +excluded_columns = $excluded_columns; + parent::__construct(); + } + + /** + * Generate config for meta data migration. + * + * @return array Meta data migration config. + */ + public function get_meta_config() { + global $wpdb; + // TODO: Remove hardcoding. + $this->table_names = array( + 'orders' => $wpdb->prefix . 'wc_orders', + 'addresses' => $wpdb->prefix . 'wc_order_addresses', + 'op_data' => $wpdb->prefix . 'wc_order_operational_data', + 'meta' => $wpdb->prefix . 'wc_orders_meta', + ); + + return array( + 'source' => array( + 'meta' => array( + 'table_name' => $wpdb->postmeta, + 'entity_id_column' => 'post_id', + 'meta_key_column' => 'meta_key', + 'meta_value_column' => 'meta_value', + ), + 'excluded_keys' => $this->excluded_columns, + ), + 'destination' => array( + 'meta' => array( + 'table_name' => $this->table_names['meta'], + 'entity_id_column' => 'order_id', + 'meta_key_column' => 'meta_key', + 'meta_value_column' => 'meta_value', + 'entity_id_type' => 'int', + ), + 'entity' => array( + 'table_name' => $this->table_names['orders'], + 'source_id_column' => 'post_id', + 'id_column' => 'id', + ), + ), + ); + } +} diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php index 81f5f1e97c9..a2d7a463054 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigrator.php @@ -66,58 +66,13 @@ class WPPostToCOTMigrator { $this->shipping_address_table_migrator = new WPPostToOrderAddressTableMigrator( 'shipping' ); $this->operation_data_table_migrator = new WPPostToOrderOpTableMigrator(); - $meta_data_config = $this->get_config_for_meta_table(); - - $this->meta_table_migrator = new MetaToMetaTableMigrator( $meta_data_config ); - - $this->error_logger = new MigrationErrorLogger(); - } - - /** - * Generate config for meta data migration. - * - * @return array Meta data migration config. - */ - private function get_config_for_meta_table() { - global $wpdb; - // TODO: Remove hardcoding. - $this->table_names = array( - 'orders' => $wpdb->prefix . 'wc_orders', - 'addresses' => $wpdb->prefix . 'wc_order_addresses', - 'op_data' => $wpdb->prefix . 'wc_order_operational_data', - 'meta' => $wpdb->prefix . 'wc_orders_meta', - ); - $excluded_columns = array_keys( $this->order_table_migrator->get_meta_column_config() ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->billing_address_table_migrator->get_meta_column_config() ) ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->shipping_address_table_migrator->get_meta_column_config() ) ); $excluded_columns = array_merge( $excluded_columns, array_keys( $this->operation_data_table_migrator->get_meta_column_config() ) ); - return array( - 'source' => array( - 'meta' => array( - 'table_name' => $wpdb->postmeta, - 'entity_id_column' => 'post_id', - 'meta_key_column' => 'meta_key', - 'meta_value_column' => 'meta_value', - ), - 'excluded_keys' => $excluded_columns, - ), - 'destination' => array( - 'meta' => array( - 'table_name' => $this->table_names['meta'], - 'entity_id_column' => 'order_id', - 'meta_key_column' => 'meta_key', - 'meta_value_column' => 'meta_value', - 'entity_id_type' => 'int', - ), - 'entity' => array( - 'table_name' => $this->table_names['orders'], - 'source_id_column' => 'post_id', - 'id_column' => 'id', - ), - ), - ); + $this->meta_table_migrator = new WPPostMetaToOrderMetaMigrator( $excluded_columns ); + $this->error_logger = new MigrationErrorLogger(); } /** @@ -135,6 +90,7 @@ class WPPostToCOTMigrator { $this->process_migration_for_ids( $order_post_ids ); $last_post_migrated = max( $order_post_ids ); $this->update_checkpoint( $last_post_migrated ); + return false; } @@ -148,27 +104,10 @@ class WPPostToCOTMigrator { $this->billing_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->shipping_address_table_migrator->process_migration_batch_for_ids( $order_post_ids ); $this->operation_data_table_migrator->process_migration_batch_for_ids( $order_post_ids ); - $this->process_meta_migration( $order_post_ids ); + $this->meta_table_migrator->process_migration_batch_for_ids( $order_post_ids ); // TODO: Return merged error array. } - /** - * Process migration for metadata for given post ids. - * - * @param array $order_post_ids Post IDs. - */ - private function process_meta_migration( $order_post_ids ) { - global $wpdb; - $data_to_migrate = $this->meta_table_migrator->fetch_data_for_migration_for_ids( $order_post_ids ); - $insert_queries = $this->meta_table_migrator->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. - $result = $wpdb->query( $insert_queries ); - if ( count( $data_to_migrate['data'] ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - echo 'error'; - } - } - /** * Method to migrate single record. * From cc512927a78b18370a7abd87640770f330f6e050 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:07:01 +0530 Subject: [PATCH 105/327] Add support for multi-value migrations. --- .../MetaToCustomTableMigrator.php | 19 +- .../MetaToMetaTableMigrator.php | 199 +++++++++++++++--- .../WPPostMetaToOrderMetaMigrator.php | 11 +- .../Database/Migrations/MigrationHelper.php | 17 ++ 4 files changed, 196 insertions(+), 50 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php index f69d9dd3e32..4a8401c1b4e 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToCustomTableMigrator.php @@ -163,7 +163,7 @@ abstract class MetaToCustomTableMigrator { $batch ); - $duplicate_update_key_statement = $this->generate_on_duplicate_statement_clause( $columns ); + $duplicate_update_key_statement = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); return "INSERT INTO $table (`$column_sql`) VALUES $value_sql $duplicate_update_key_statement;"; } @@ -219,23 +219,6 @@ abstract class MetaToCustomTableMigrator { return array( $value_sql, $column_sql, $columns ); } - /** - * Generates ON DUPLICATE KEY UPDATE clause to be used in migration. - * - * @param array $columns List of column names. - * - * @return string SQL clause for INSERT...ON DUPLICATE KEY UPDATE - */ - private function generate_on_duplicate_statement_clause( $columns ) { - $update_value_statements = array(); - foreach ( $columns as $column ) { - $update_value_statements[] = "$column = VALUES( $column )"; - } - $update_value_clause = implode( ', ', $update_value_statements ); - - return "ON DUPLICATE KEY UPDATE $update_value_clause"; - } - /** * Process next migration batch, uses option `wc_cot_migration` to checkpoints of what have been processed so far. * diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index a41578fc288..9a266445400 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -34,63 +34,108 @@ abstract class MetaToMetaTableMigrator { public function __construct() { $this->schema_config = $this->get_meta_config(); - $this->errors = array(); + $this->errors = array(); } public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); - $insert_queries = $this->generate_insert_sql_for_batch( $data_to_migrate['data'], 'insert' ); + + $data_already_migrated = $this->get_already_migrated_records( $entity_ids ); + + list( $to_insert, $to_update ) = $this->classify_update_insert_records( $data_to_migrate['data'], $data_already_migrated, $entity_ids ); + + $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. $result = $wpdb->query( $insert_queries ); - if ( count( $data_to_migrate['data'] ) !== $result ) { + $wpdb->query( 'COMMIT;' ); + if ( count( $to_insert ) !== $result ) { // TODO: Find and log entity ids that were not inserted. echo 'error'; } + + if ( empty( $to_update ) ) { + return; + } + $update_queries = $this->generate_update_sql_for_batch( $to_update ); + $result = $wpdb->query( $update_queries ); + $wpdb->query( 'COMMIT;' ); + // TODO: Find and log error updates. + } + + public function generate_update_sql_for_batch( $batch ) { + global $wpdb; + + $table = $this->schema_config['destination']['meta']['table_name']; + $meta_id_column = $this->schema_config['destination']['meta']['meta_id_column']; + $meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; + $meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; + $entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; + $columns = array( $meta_id_column, $entity_id_column, $meta_key_column, $meta_value_column ); + $columns_sql = implode( '`, `', $columns ); + + $entity_id_column_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); + $placeholder_string = "%d, $entity_id_column_placeholder, %s, %s"; + $values = array(); + foreach ( $batch as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_details ) { + $values[] = $wpdb->prepare( + "( $placeholder_string )", + array( $meta_details['id'], $entity_id, $meta_key, $meta_details['meta_value'] ) + ); + } + } + $value_sql = implode( ',', $values ); + + $on_duplicate_key_clause = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); + + return "INSERT INTO $table ( `$columns_sql` ) VALUES ( $value_sql ) $on_duplicate_key_clause"; } /** * Generate insert sql queries for batches. * - * @param array $batch Data to generate queries for. + * @param array $batch Data to generate queries for. * @param string $insert_switch Insert switch to use. * * @return string */ - public function generate_insert_sql_for_batch( $batch, $insert_switch ) { + public function generate_insert_sql_for_batch( $batch ) { global $wpdb; - $insert_query = MigrationHelper::get_insert_switch( $insert_switch ); - + $table = $this->schema_config['destination']['meta']['table_name']; $meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; $meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; $entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; $column_sql = "(`$entity_id_column`, `$meta_key_column`, `$meta_value_column`)"; - $table = $this->schema_config['destination']['meta']['table_name']; $entity_id_column_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $placeholder_string = "$entity_id_column_placeholder, %s, %s"; $values = array(); - foreach ( array_values( $batch ) as $row ) { - $query_params = array( - $row->destination_entity_id, - $row->meta_key, - $row->meta_value, - ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. - $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); - $values[] = $value_sql; + foreach ( $batch as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_values ) { + foreach ( $meta_values as $meta_value ) { + $query_params = array( + $entity_id, + $meta_key, + $meta_value + ); + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. + $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); + $values[] = $value_sql; + } + } } $values_sql = implode( '), (', $values ); - return "$insert_query INTO $table $column_sql VALUES ($values_sql)"; + return "INSERT IGNORE INTO $table $column_sql VALUES ($values_sql)"; } /** * Fetch data for migration. * - * @param array $order_post_ids Array of IDs to fetch data for. + * @param array $entity_ids Array of IDs to fetch data for. * * @return array[] Data along with errors (if any), will of the form: * array( @@ -103,16 +148,16 @@ abstract class MetaToMetaTableMigrator { * ..., * ) */ - public function fetch_data_for_migration_for_ids( $order_post_ids ) { + public function fetch_data_for_migration_for_ids( $entity_ids ) { global $wpdb; - if ( empty( $order_post_ids ) ) { + if ( empty( $entity_ids ) ) { return array( 'data' => array(), 'errors' => array(), ); } - $meta_query = $this->build_meta_table_query( $order_post_ids ); + $meta_query = $this->build_meta_table_query( $entity_ids ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Meta query has interpolated variables, but they should all be escaped for backticks. $meta_data_rows = $wpdb->get_results( $meta_query ); @@ -129,6 +174,106 @@ abstract class MetaToMetaTableMigrator { ); } + private function get_already_migrated_records( $entity_ids ) { + global $wpdb; + + $destination_table_name = $this->schema_config['destination']['meta']['table_name']; + $destination_id_column = $this->schema_config['destination']['meta']['meta_id_column']; + $destination_entity_id_column = $this->schema_config['destination']['meta']['entity_id_column']; + $destination_meta_key_column = $this->schema_config['destination']['meta']['meta_key_column']; + $destination_meta_value_column = $this->schema_config['destination']['meta']['meta_value_column']; + + $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); + $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); + + return $wpdb->get_results( + $wpdb->prepare( + " +SELECT + $destination_id_column meta_id, + $destination_entity_id_column entity_id, + $destination_meta_key_column meta_key, + $destination_meta_value_column meta_value +FROM $destination_table_name destination +WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) ORDER BY destination.$destination_entity_id_column +", + $entity_ids + ) + ); + } + + private function classify_update_insert_records( $data_to_migrate, $data_already_migrated ) { + // All data is ordered by entity_ids, which means we can optimize our processing a bit. + $to_migrate = array(); + $already_migrated = array(); + foreach ( $data_to_migrate as $migrate_row ) { + if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { + $to_migrate[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; + } + + foreach ( $data_already_migrated as $migrate_row ) { + if ( ! isset( $already_migrated[ $migrate_row->entity_id ] ) ) { + $already_migrated[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = array( + 'id' => $migrate_row->meta_id, + 'meta_value' => $migrate_row->meta_value + ); + } + + $to_update = array(); + $to_insert = array(); + + foreach ( $to_migrate as $entity_id => $rows ) { + foreach ( $rows as $meta_key => $meta_values ) { + // If there is no corresponding record in the destination table then insert. + // If there is single value in both already migrated and current then update. + // If there are multiple values in either already_migrated records or in to_migrate_records, then insert instead of updating. + if ( ! isset( $already_migrated[ $entity_id ][ $meta_key ] ) ) { + if ( ! isset( $to_insert[ $entity_id ] ) ) { + $to_insert[ $entity_id ] = array(); + } + $to_insert[ $entity_id ][ $meta_key ] = $meta_values; + } else { + if ( 1 === count( $to_migrate[ $entity_id ][ $meta_key ] ) && 1 === count( $already_migrated[ $entity_id ][ $meta_key ] ) ) { + if ( ! isset( $to_update[ $entity_id ] ) ) { + $to_update[ $entity_id ] = array(); + } + $to_update[ $entity_id ][ $meta_key ] = array( + 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], + 'meta_value' => $meta_values + ); + continue; + } + + // There are multiple meta entries, let's find the unique entries and insert. + $unique_meta_values = array_diff( $to_migrate[ $entity_id ][ $meta_key ], $already_migrated[ $entity_id ][ $meta_key ] ); + if ( 0 === count( $unique_meta_values ) ) { + continue; + } + if ( ! isset( $to_insert[ $entity_id ] ) ) { + $to_insert[ $entity_id ] = array(); + } + $to_insert[ $entity_id ][ $meta_key ] = $unique_meta_values; + } + } + } + + return array( $to_insert, $to_update ); + } + /** * Helper method to build query used to fetch data from source meta table. * @@ -146,9 +291,9 @@ abstract class MetaToMetaTableMigrator { $where_clause = "source.`$source_entity_id_column` IN (" . implode( ', ', array_fill( 0, count( $entity_ids ), '%d' ) ) . ')'; - $destination_entity_table = $this->schema_config['destination']['entity']['table_name']; - $destination_entity_id_column = $this->schema_config['destination']['entity']['id_column']; - $destination_source_id_mapping_column = $this->schema_config['destination']['entity']['source_id_column']; + $entity_table = $this->schema_config['source']['entity']['table_name']; + $entity_id_column = $this->schema_config['source']['entity']['id_column']; + $entity_meta_id_mapping_column = $this->schema_config['source']['entity']['source_id_column']; if ( $this->schema_config['source']['excluded_keys'] ) { $key_placeholder = implode( ',', array_fill( 0, count( $this->schema_config['source']['excluded_keys'] ), '%s' ) ); @@ -162,11 +307,11 @@ abstract class MetaToMetaTableMigrator { " SELECT source.`$source_entity_id_column` as source_entity_id, - destination.`$destination_entity_id_column` as destination_entity_id, + entity.`$entity_id_column` as entity_id, source.`$source_meta_key_column` as meta_key, source.`$source_meta_value_column` as meta_value FROM `$source_meta_table` source -JOIN `$destination_entity_table` destination ON destination.`$destination_source_id_mapping_column` = source.`$source_entity_id_column` +JOIN `$entity_table` entity ON entity.`$entity_meta_id_mapping_column` = source.`$source_entity_id_column` WHERE $where_clause ORDER BY $order_by ", $entity_ids diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php index e155a93009f..ec464f06ca2 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -34,6 +34,11 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', ), + 'entity' => array( + 'table_name' => $this->table_names['orders'], + 'source_id_column' => 'post_id', + 'id_column' => 'id', + ), 'excluded_keys' => $this->excluded_columns, ), 'destination' => array( @@ -43,11 +48,7 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', 'entity_id_type' => 'int', - ), - 'entity' => array( - 'table_name' => $this->table_names['orders'], - 'source_id_column' => 'post_id', - 'id_column' => 'id', + 'meta_id_column' => 'id' ), ), ); diff --git a/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php b/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php index 4aba17b86e5..60a8f05f83d 100644 --- a/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php +++ b/plugins/woocommerce/src/Database/Migrations/MigrationHelper.php @@ -89,4 +89,21 @@ class MigrationHelper { return self::$wpdb_placeholder_for_type[ $type ]; } + /** + * Generates ON DUPLICATE KEY UPDATE clause to be used in migration. + * + * @param array $columns List of column names. + * + * @return string SQL clause for INSERT...ON DUPLICATE KEY UPDATE + */ + public static function generate_on_duplicate_statement_clause( $columns ) { + $update_value_statements = array(); + foreach ( $columns as $column ) { + $update_value_statements[] = "$column = VALUES( $column )"; + } + $update_value_clause = implode( ', ', $update_value_statements ); + + return "ON DUPLICATE KEY UPDATE $update_value_clause"; + } + } From 1348215cfec5fa5229478e5240a48cf1ec9f8834 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:42:08 +0530 Subject: [PATCH 106/327] Fixups for duplicate meta entries. --- .../MetaToMetaTableMigrator.php | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 9a266445400..92b14c4512b 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -39,19 +39,20 @@ abstract class MetaToMetaTableMigrator { public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; - $data_to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); + $to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); - $data_already_migrated = $this->get_already_migrated_records( $entity_ids ); + $already_migrated = $this->get_already_migrated_records( array_keys( $to_migrate['data'] ) ); - list( $to_insert, $to_update ) = $this->classify_update_insert_records( $data_to_migrate['data'], $data_already_migrated, $entity_ids ); + list( $to_insert, $to_update ) = $this->classify_update_insert_records( $to_migrate['data'], $already_migrated ); - $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. - $result = $wpdb->query( $insert_queries ); - $wpdb->query( 'COMMIT;' ); - if ( count( $to_insert ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - echo 'error'; + if ( ! empty( $to_insert ) ) { + $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. + $result = $wpdb->query( $insert_queries ); + $wpdb->query( 'COMMIT;' ); + if ( count( $to_insert ) !== $result ) { + // TODO: Find and log entity ids that were not inserted. + } } if ( empty( $to_update ) ) { @@ -89,7 +90,7 @@ abstract class MetaToMetaTableMigrator { $on_duplicate_key_clause = MigrationHelper::generate_on_duplicate_statement_clause( $columns ); - return "INSERT INTO $table ( `$columns_sql` ) VALUES ( $value_sql ) $on_duplicate_key_clause"; + return "INSERT INTO $table ( `$columns_sql` ) VALUES $value_sql $on_duplicate_key_clause"; } /** @@ -168,8 +169,20 @@ abstract class MetaToMetaTableMigrator { ); } + foreach ( $meta_data_rows as $migrate_row ) { + if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { + $to_migrate[ $migrate_row->entity_id ] = array(); + } + + if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); + } + + $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; + } + return array( - 'data' => $meta_data_rows, + 'data' => $to_migrate, 'errors' => array(), ); } @@ -186,7 +199,7 @@ abstract class MetaToMetaTableMigrator { $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); - return $wpdb->get_results( + $data_already_migrated = $wpdb->get_results( $wpdb->prepare( " SELECT @@ -200,23 +213,8 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $entity_ids ) ); - } - private function classify_update_insert_records( $data_to_migrate, $data_already_migrated ) { - // All data is ordered by entity_ids, which means we can optimize our processing a bit. - $to_migrate = array(); $already_migrated = array(); - foreach ( $data_to_migrate as $migrate_row ) { - if ( ! isset( $to_migrate[ $migrate_row->entity_id ] ) ) { - $to_migrate[ $migrate_row->entity_id ] = array(); - } - - if ( ! isset( $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] ) ) { - $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ] = array(); - } - - $to_migrate[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = $migrate_row->meta_value; - } foreach ( $data_already_migrated as $migrate_row ) { if ( ! isset( $already_migrated[ $migrate_row->entity_id ] ) ) { @@ -232,7 +230,10 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O 'meta_value' => $migrate_row->meta_value ); } + return $already_migrated; + } + private function classify_update_insert_records( $to_migrate, $already_migrated ) { $to_update = array(); $to_insert = array(); @@ -253,13 +254,13 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O } $to_update[ $entity_id ][ $meta_key ] = array( 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], - 'meta_value' => $meta_values + 'meta_value' => $meta_values[0] ); continue; } // There are multiple meta entries, let's find the unique entries and insert. - $unique_meta_values = array_diff( $to_migrate[ $entity_id ][ $meta_key ], $already_migrated[ $entity_id ][ $meta_key ] ); + $unique_meta_values = array_diff( $meta_values, array_column( $already_migrated[ $entity_id ][ $meta_key ], 'meta_value' ) ); if ( 0 === count( $unique_meta_values ) ) { continue; } From c3de418298145523e311a1575a923c0d72253a50 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 15 Apr 2022 15:43:45 +0530 Subject: [PATCH 107/327] Add value clause for better testing. --- .../Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index c1c49ca51a8..0ce28630aff 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -118,7 +118,7 @@ WHERE order_id = {$order_id} $wpdb->get_var( " SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} -WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' +WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' AND meta_value = 'unique_value_1' " ) ); @@ -127,7 +127,7 @@ WHERE order_id = {$order_id} AND meta_key = 'unique_key_1' $wpdb->get_var( " SELECT COUNT(*) FROM {$this->data_store::get_meta_table_name()} -WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' +WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in ( 'non_unique_value_1', 'non_unique_value_2' ) " ) ); From 773508d6383bc3edd4e69bdd4a5f4c48a7f597cc Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:29:52 +0530 Subject: [PATCH 108/327] Applied coding standards. --- .../MetaToMetaTableMigrator.php | 85 ++++++++++++++++--- 1 file changed, 74 insertions(+), 11 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 92b14c4512b..00d7a62ed1a 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -30,13 +30,52 @@ abstract class MetaToMetaTableMigrator { */ protected $errors; - public abstract function get_meta_config(); + /** + * Returns config for the migration. + * + * @return array Meta config, must be in following format: + * array( + * 'source' => array( + * 'meta' => array( + * 'table_name' => source_meta_table_name, + * 'entity_id_column' => entity_id column name in source meta table, + * 'meta_key_column' => meta_key column', + * 'meta_value_column' => meta_value column', + * ), + * 'entity' => array( + * 'table_name' => entity table name for the meta table, + * 'source_id_column' => column name in entity table which maps to meta table, + * 'id_column' => id column in entity table, + * ), + * 'excluded_keys' => array of keys to exclude, + * ), + * 'destination' => array( + * 'meta' => array( + * 'table_name' => destination meta table name, + * 'entity_id_column' => entity_id column in meta table, + * 'meta_key_column' => meta key column, + * 'meta_value_column' => meta_value column, + * 'entity_id_type' => data type of entity id, + * 'meta_id_column' => id column in meta table, + * ), + * ), + * ) + */ + abstract public function get_meta_config(); + /** + * MetaToMetaTableMigrator constructor. + */ public function __construct() { $this->schema_config = $this->get_meta_config(); $this->errors = array(); } + /** + * Process migration for provided entity ids. + * + * @param array $entity_ids Entity IDs to process migration for. + */ public function process_migration_batch_for_ids( $entity_ids ) { global $wpdb; $to_migrate = $this->fetch_data_for_migration_for_ids( $entity_ids ); @@ -50,20 +89,26 @@ abstract class MetaToMetaTableMigrator { // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $insert_queries should already be escaped in the generating function. $result = $wpdb->query( $insert_queries ); $wpdb->query( 'COMMIT;' ); - if ( count( $to_insert ) !== $result ) { - // TODO: Find and log entity ids that were not inserted. - } + // TODO: Find and log entity ids that were not inserted. } if ( empty( $to_update ) ) { return; } $update_queries = $this->generate_update_sql_for_batch( $to_update ); - $result = $wpdb->query( $update_queries ); + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- update queries are autogenerated and should already be prepared. + $result = $wpdb->query( $update_queries ); $wpdb->query( 'COMMIT;' ); // TODO: Find and log error updates. } + /** + * Generate update SQL for given batch. + * + * @param array $batch List of data to generate update SQL for. Should be in same format as output of $this->fetch_data_for_migration_for_ids. + * + * @return string Query to update batch records. + */ public function generate_update_sql_for_batch( $batch ) { global $wpdb; @@ -80,7 +125,9 @@ abstract class MetaToMetaTableMigrator { $values = array(); foreach ( $batch as $entity_id => $rows ) { foreach ( $rows as $meta_key => $meta_details ) { + $values[] = $wpdb->prepare( + // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Placeholder string is already being prepared. "( $placeholder_string )", array( $meta_details['id'], $entity_id, $meta_key, $meta_details['meta_value'] ) ); @@ -97,9 +144,8 @@ abstract class MetaToMetaTableMigrator { * Generate insert sql queries for batches. * * @param array $batch Data to generate queries for. - * @param string $insert_switch Insert switch to use. * - * @return string + * @return string Insert SQL query. */ public function generate_insert_sql_for_batch( $batch ) { global $wpdb; @@ -119,7 +165,7 @@ abstract class MetaToMetaTableMigrator { $query_params = array( $entity_id, $meta_key, - $meta_value + $meta_value, ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $placeholder_string is hardcoded. $value_sql = $wpdb->prepare( "$placeholder_string", $query_params ); @@ -145,7 +191,6 @@ abstract class MetaToMetaTableMigrator { * ..., * ), * 'errors' => array( - * 'id_1' => array( 'column1' => error1, 'column2' => value2, ...), * ..., * ) */ @@ -187,6 +232,13 @@ abstract class MetaToMetaTableMigrator { ); } + /** + * Helper method to get already migrated records. Will be used to find prevent migration of already migrated records. + * + * @param array $entity_ids List of entity ids to check for. + * + * @return array Already migrated records. + */ private function get_already_migrated_records( $entity_ids ) { global $wpdb; @@ -199,6 +251,7 @@ abstract class MetaToMetaTableMigrator { $entity_id_type_placeholder = MigrationHelper::get_wpdb_placeholder_for_type( $this->schema_config['destination']['meta']['entity_id_type'] ); $entity_ids_placeholder = implode( ',', array_fill( 0, count( $entity_ids ), $entity_id_type_placeholder ) ); + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- All columns are hardcoded. $data_already_migrated = $wpdb->get_results( $wpdb->prepare( " @@ -213,6 +266,7 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $entity_ids ) ); + // phpcs:enable $already_migrated = array(); @@ -227,12 +281,21 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O $already_migrated[ $migrate_row->entity_id ][ $migrate_row->meta_key ][] = array( 'id' => $migrate_row->meta_id, - 'meta_value' => $migrate_row->meta_value + 'meta_value' => $migrate_row->meta_value, ); } + return $already_migrated; } + /** + * Classify each record on whether to migrate or update. + * + * @param array $to_migrate Records to migrate. + * @param array $already_migrated Records already migrated. + * + * @return array[] Returns two arrays, first for records to migrate, and second for records to upgrade. + */ private function classify_update_insert_records( $to_migrate, $already_migrated ) { $to_update = array(); $to_insert = array(); @@ -254,7 +317,7 @@ WHERE destination.$destination_entity_id_column in ( $entity_ids_placeholder ) O } $to_update[ $entity_id ][ $meta_key ] = array( 'id' => $already_migrated[ $entity_id ][ $meta_key ][0]['id'], - 'meta_value' => $meta_values[0] + 'meta_value' => $meta_values[0], ); continue; } From e042218135268df971569451357ec16b36174294 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:32:42 +0530 Subject: [PATCH 109/327] Applied coding standards. --- .../WPPostMetaToOrderMetaMigrator.php | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php index ec464f06ca2..e8dd2a55ecd 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/WPPostMetaToOrderMetaMigrator.php @@ -1,11 +1,29 @@ excluded_columns = $excluded_columns; parent::__construct(); @@ -34,7 +52,7 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', ), - 'entity' => array( + 'entity' => array( 'table_name' => $this->table_names['orders'], 'source_id_column' => 'post_id', 'id_column' => 'id', @@ -42,13 +60,13 @@ class WPPostMetaToOrderMetaMigrator extends MetaToMetaTableMigrator { 'excluded_keys' => $this->excluded_columns, ), 'destination' => array( - 'meta' => array( + 'meta' => array( 'table_name' => $this->table_names['meta'], 'entity_id_column' => 'order_id', 'meta_key_column' => 'meta_key', 'meta_value_column' => 'meta_value', 'entity_id_type' => 'int', - 'meta_id_column' => 'id' + 'meta_id_column' => 'id', ), ), ); From e71f949edbcb944c17aaa9bf49f2e58bcea0a370 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 14:37:53 +0530 Subject: [PATCH 110/327] Add changelog. --- plugins/woocommerce/changelog/cot-meta_migrations | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/cot-meta_migrations diff --git a/plugins/woocommerce/changelog/cot-meta_migrations b/plugins/woocommerce/changelog/cot-meta_migrations new file mode 100644 index 00000000000..b3ca16c0344 --- /dev/null +++ b/plugins/woocommerce/changelog/cot-meta_migrations @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Enable meta table to meta table migrations towards custom table project. From 39283ddc88a47181f1cc793cfcbb0cdfa880ea23 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 18 Apr 2022 15:41:06 +0530 Subject: [PATCH 111/327] Applied coding standards. --- .../WPPostToCOTMigratorTest.php | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index 0ce28630aff..bb81dfbc7fd 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -174,7 +174,7 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in /** * Helper method to get address details from DB. * - * @param int $order_id Order ID. + * @param int $order_id Order ID. * @param string $address_type Address Type. * * @return array|object|void|null DB object. @@ -202,10 +202,18 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in return $wpdb->get_row( "SELECT * FROM $operational_data_table WHERE order_id = $order_id;" ); } + /** + * Helper method to get meta data from custom order tables for given order id. + * + * @param int $order_id Order ID. + * + * @return array Meta data for an order ID. + */ private function get_meta_data_from_cot( $order_id ) { global $wpdb; $metadata_table = $this->data_store::get_meta_table_name(); + // phpcs:ignore return $wpdb->get_results( "SELECT * FROM $metadata_table WHERE order_id = $order_id;" ); } @@ -387,25 +395,39 @@ WHERE order_id = {$order_id} AND meta_key = 'non_unique_key_1' AND meta_value in $this->assertEquals( (float) $order->get_discount_total(), (float) $db_order_op_data->discount_total_amount ); } + /** + * Helper method to assert that metadata is migrated for an order. + * + * @param WP_Post $order WP_Post order object. + */ private function assert_metadata_is_migrated( $order ) { $db_order = $this->get_order_from_cot( $order ); $meta_data = $this->get_meta_data_from_cot( $db_order->id ); - $unique_row = array_filter( $meta_data, function ( $meta_row ) { - return 'unique_key_1' === $meta_row->meta_key; - } ); + $unique_row = array_filter( + $meta_data, + function ( $meta_row ) { + return 'unique_key_1' === $meta_row->meta_key; + } + ); $this->assertEquals( 1, count( $unique_row ) ); - $this->assertEquals( 'unique_value_1', array_values( $unique_row)[0]->meta_value ); + $this->assertEquals( 'unique_value_1', array_values( $unique_row )[0]->meta_value ); - $non_unique_rows = array_filter( $meta_data, function ( $meta_row ) { - return 'non_unique_key_1' === $meta_row->meta_key; - } ); + $non_unique_rows = array_filter( + $meta_data, + function ( $meta_row ) { + return 'non_unique_key_1' === $meta_row->meta_key; + } + ); $this->assertEquals( 2, count( $non_unique_rows ) ); - $this->assertEquals( array( - 'non_unique_value_1', - 'non_unique_value_2' - ), array_column( $non_unique_rows, 'meta_value' ) ); + $this->assertEquals( + array( + 'non_unique_value_1', + 'non_unique_value_2', + ), + array_column( $non_unique_rows, 'meta_value' ) + ); } /** From fa77484d59dd7f89b8e872b30f2180bde448d549 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 22 Apr 2022 14:28:30 +0530 Subject: [PATCH 112/327] Enable test back. --- .../Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php index bb81dfbc7fd..314ef8c9772 100644 --- a/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php +++ b/plugins/woocommerce/tests/php/src/Database/Migrations/CustomOrderTable/WPPostToCOTMigratorTest.php @@ -34,11 +34,6 @@ class WPPostToCOTMigratorTest extends WC_Unit_Test_Case { * Setup data_store and sut. */ public function setUp(): void { - - // TODO: Remove this once the migrations have been adapted to the removal of the post_id column. - $this->markTestSkipped( 'Temporarily skipping until the migrations have been adapted to the removal of the post_id column.' ); - return; - parent::setUp(); $this->create_order_custom_table_if_not_exist(); $this->data_store = wc_get_container()->get( OrdersTableDataStore::class ); From b060e1b1f0a10372930b7c58915ddf4993471c48 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 22 Apr 2022 14:28:55 +0530 Subject: [PATCH 113/327] Dont use `list` format for php compatibility. --- .../Migrations/CustomOrderTable/MetaToMetaTableMigrator.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php index 00d7a62ed1a..58614bd92fe 100644 --- a/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php +++ b/plugins/woocommerce/src/Database/Migrations/CustomOrderTable/MetaToMetaTableMigrator.php @@ -82,7 +82,9 @@ abstract class MetaToMetaTableMigrator { $already_migrated = $this->get_already_migrated_records( array_keys( $to_migrate['data'] ) ); - list( $to_insert, $to_update ) = $this->classify_update_insert_records( $to_migrate['data'], $already_migrated ); + $data = $this->classify_update_insert_records( $to_migrate['data'], $already_migrated ); + $to_insert = $data[0]; + $to_update = $data[1]; if ( ! empty( $to_insert ) ) { $insert_queries = $this->generate_insert_sql_for_batch( $to_insert ); From 6b23370edb12131e1e9c91481413a0ede88247b0 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 20 Apr 2022 19:02:25 +0530 Subject: [PATCH 114/327] Implement read method in custom order table datastore. --- .../Orders/OrdersTableDataStore.php | 465 +++++++++++++++++- .../Orders/OrdersTableDataStoreTests.php | 47 ++ 2 files changed, 510 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index f3dd7a3c60e..7cf0e046c4d 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -19,6 +19,7 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements */ public static function get_orders_table_name() { global $wpdb; + return $wpdb->prefix . 'wc_orders'; } @@ -29,6 +30,7 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements */ public static function get_addresses_table_name() { global $wpdb; + return $wpdb->prefix . 'wc_order_addresses'; } @@ -39,6 +41,7 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements */ public static function get_operational_data_table_name() { global $wpdb; + return $wpdb->prefix . 'wc_order_operational_data'; } @@ -49,6 +52,7 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements */ public static function get_meta_table_name() { global $wpdb; + return $wpdb->prefix . 'wc_orders_meta'; } @@ -66,10 +70,267 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements ); } - // TODO: Add methods for other table names as appropriate. + /** + * Table column to WC_Order mapping for wc_orders table. + * + * @var \string[][] + */ + protected $order_column_mapping = array( + 'id' => array( + 'type' => 'int', + 'name' => 'id', + ), + 'status' => array( + 'type' => 'string', + 'name' => 'status', + ), + 'currency' => array( + 'type' => 'string', + 'name' => 'currency', + ), + 'tax_amount' => array( + 'type' => 'decimal', + 'name' => 'cart_tax', + ), + 'total_amount' => array( + 'type' => 'decimal', + 'name' => 'total', + ), + 'customer_id' => array( + 'type' => 'int', + 'name' => 'customer_id', + ), + 'billing_email' => array( + 'type' => 'int', + 'name' => 'billing_email', + ), + 'date_created_gmt' => array( + 'type' => 'date', + 'name' => 'date_created', + ), + 'date_updated_gmt' => array( + 'type' => 'date', + 'name' => 'date_modified', + ), + 'parent_order_id' => array( + 'type' => 'int', + 'name' => 'parent_id', + ), + 'payment_method' => array( + 'type' => 'string', + 'name' => 'payment_method', + ), + 'payment_method_title' => array( + 'type' => 'string', + 'name' => 'payment_method_title', + ), + 'ip_address' => array( + 'type' => 'string', + 'name' => 'customer_ip_address', + ), + 'transaction_id' => array( + 'type' => 'string', + 'name' => 'transaction_id', + ), + 'user_agent' => array( + 'type' => 'string', + 'name' => 'customer_user_agent', + ), + ); + + /** + * Table column to WC_Order mapping for billing addresses in wc_address table. + * + * @var \string[][] + */ + protected $billing_address_column_mapping = array( + 'id' => array( 'type' => 'int' ), + 'order_id' => array( 'type' => 'int' ), + 'address_type' => array( 'type' => 'string' ), + 'first_name' => array( + 'type' => 'string', + 'name' => 'billing_first_name', + ), + 'last_name' => array( + 'type' => 'string', + 'name' => 'billing_last_name', + ), + 'company' => array( + 'type' => 'string', + 'name' => 'billing_company', + ), + 'address_1' => array( + 'type' => 'string', + 'name' => 'billing_address_1', + ), + 'address_2' => array( + 'type' => 'string', + 'name' => 'billing_address_2', + ), + 'city' => array( + 'type' => 'string', + 'name' => 'billing_city', + ), + 'state' => array( + 'type' => 'string', + 'name' => 'billing_state', + ), + 'postcode' => array( + 'type' => 'string', + 'name' => 'billing_postcode', + ), + 'country' => array( + 'type' => 'string', + 'name' => 'billing_country', + ), + 'email' => array( + 'type' => 'string', + 'name' => 'billing_email', + ), + 'phone' => array( + 'type' => 'string', + 'name' => 'billing_phone', + ), + ); + + /** + * Table column to WC_Order mapping for shipping addresses in wc_address table. + * + * @var \string[][] + */ + protected $shipping_address_column_mapping = array( + 'id' => array( 'type' => 'int' ), + 'order_id' => array( 'type' => 'int' ), + 'address_type' => array( 'type' => 'string' ), + 'first_name' => array( + 'type' => 'string', + 'name' => 'shipping_first_name', + ), + 'last_name' => array( + 'type' => 'string', + 'name' => 'shipping_last_name', + ), + 'company' => array( + 'type' => 'string', + 'name' => 'shipping_company', + ), + 'address_1' => array( + 'type' => 'string', + 'name' => 'shipping_address_1', + ), + 'address_2' => array( + 'type' => 'string', + 'name' => 'shipping_address_2', + ), + 'city' => array( + 'type' => 'string', + 'name' => 'shipping_city', + ), + 'state' => array( + 'type' => 'string', + 'name' => 'shipping_state', + ), + 'postcode' => array( + 'type' => 'string', + 'name' => 'shipping_postcode', + ), + 'country' => array( + 'type' => 'string', + 'name' => 'shipping_country', + ), + 'email' => array( 'type' => 'string' ), + 'phone' => array( + 'type' => 'string', + 'name' => 'shipping_phone', + ), + ); + + /** + * Table column to WC_Order mapping for wc_operational_data table. + * + * @var \string[][] + */ + protected $operational_data_column_mapping = array( + 'id' => array( 'type' => 'int' ), + 'order_id' => array( 'type' => 'int' ), + 'created_via' => array( + 'type' => 'string', + 'name' => 'created_via', + ), + 'woocommerce_version' => array( + 'type' => 'string', + 'name' => 'version', + ), + 'prices_include_tax' => array( + 'type' => 'string', + 'name' => 'prices_include_tax', + ), + 'coupon_usages_are_counted' => array( 'type' => 'bool' ), + 'download_permission_granted' => array( 'type' => 'bool' ), + 'cart_hash' => array( + 'type' => 'string', + 'name' => 'cart_hash', + ), + 'new_order_email_sent' => array( 'type' => 'string' ), + 'order_key' => array( + 'type' => 'string', + 'name' => 'order_key', + ), + 'order_stock_reduced' => array( 'type' => 'bool' ), + 'date_paid_gmt' => array( + 'type' => 'date', + 'name' => 'date_paid', + ), + 'date_completed_gmt' => array( + 'type' => 'date', + 'name' => 'date_completed', + ), + 'shipping_tax_amount' => array( + 'type' => 'decimal', + 'name' => 'shipping_tax', + ), + 'shipping_total_amount' => array( + 'type' => 'decimal', + 'name' => 'shipping_total', + ), + 'discount_tax_amount' => array( + 'type' => 'decimal', + 'name' => 'discount_tax', + ), + 'discount_total_amount' => array( + 'type' => 'decimal', + 'name' => 'discount_total_amount', + ), + ); + + /** + * Cache variable to store combined mapping. + * + * @var array[][][] + */ + private $all_order_column_mapping; + + /** + * Return combined mappings for all order tables. + * + * @return array|\array[][][] Return combined mapping. + */ + public function get_all_order_column_mappings() { + if ( ! isset( $this->all_order_column_mapping ) ) { + $this->all_order_column_mapping = array( + 'orders' => $this->order_column_mapping, + 'billing_address' => $this->billing_address_column_mapping, + 'shipping_address' => $this->shipping_address_column_mapping, + 'operational_data' => $this->operational_data_column_mapping, + ); + } + + return $this->all_order_column_mapping; + } //phpcs:disable Squiz.Commenting, Generic.Commenting + // TODO: Add methods for other table names as appropriate. public function get_total_refunded( $order ) { // TODO: Implement get_total_refunded() method. return 0; @@ -142,6 +403,205 @@ class OrdersTableDataStore extends \Abstract_WC_Order_Data_Store_CPT implements return 'shop_order'; } + //phpcs:enable Squiz.Commenting, Generic.Commenting + + /** + * Method to read an order from custom tables. + * + * @param \WC_Order $order Order object. + * + * @throws \Exception If passed order is invalid. + */ + public function read( &$order ) { + $order->set_defaults(); + if ( ! $order->get_id() ) { + throw new \Exception( __( 'ID must be set for an order to be read', 'woocommerce' ) ); + } + $order_data = $this->get_order_data_for_id( $order->get_id() ); + foreach ( $this->get_all_order_column_mappings() as $table_name => $column_mapping ) { + foreach ( $column_mapping as $column_name => $prop_details ) { + if ( ! isset( $prop_details['name'] ) ) { + continue; + } + $prop_setter_function_name = "set_{$prop_details['name']}"; + if ( is_callable( array( $order, $prop_setter_function_name ) ) ) { + $order->{$prop_setter_function_name}( $order_data->{$prop_details['name']} ); + } + } + } + + $order->set_object_read(); + } + + /** + * Return order data for a single order ID. + * + * @param int $id Order ID. + * + * @return object|\WP_Error DB order object or WP_Error. + */ + private function get_order_data_for_id( $id ) { + $results = $this->get_order_data_for_ids( array( $id ) ); + + return is_array( $results ) && count( $results ) > 0 ? $results[0] : $results; + } + + /** + * Return order data for multiple IDs. + * + * @param array $ids List of order IDs. + * + * @return array|object|null DB Order objects or error. + */ + private function get_order_data_for_ids( $ids ) { + global $wpdb; + $order_table_query = $this->get_order_table_select_statement(); + $id_placeholder = implode( ', ', array_fill( 0, count( $ids ), '%d' ) ); + + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare -- $order_table_query is autogenerated and should already be prepared. + return $wpdb->get_results( + $wpdb->prepare( + "$order_table_query WHERE wc_order.id in ( $id_placeholder )", + $ids + ) + ); + // phpcs:enable + } + + /** + * Helper method to generate combined select statement. + * + * @return string Select SQL statement to fetch order. + */ + private function get_order_table_select_statement() { + $order_table = $this::get_orders_table_name(); + $order_table_alias = 'wc_order'; + $select_clause = $this->generate_select_clause_for_props( $order_table_alias, $this->order_column_mapping ); + $billing_address_table_alias = 'address_billing'; + $shipping_address_table_alias = 'address_shipping'; + $op_data_table_alias = 'order_operational_data'; + $billing_address_clauses = $this->join_billing_address_table_to_order_query( $order_table_alias, $billing_address_table_alias ); + $shipping_address_clauses = $this->join_shipping_address_table_to_order_query( $order_table_alias, $shipping_address_table_alias ); + $operational_data_clauses = $this->join_operational_data_table_to_order_query( $order_table_alias, $op_data_table_alias ); + + return " +SELECT $select_clause, {$billing_address_clauses['select']}, {$shipping_address_clauses['select']}, {$operational_data_clauses['select']} +FROM $order_table $order_table_alias +LEFT JOIN {$billing_address_clauses['join']} +LEFT JOIN {$shipping_address_clauses['join']} +LEFT JOIN {$operational_data_clauses['join']} +"; + } + + /** + * Helper method to generate join query for billing addresses in wc_address table. + * + * @param string $order_table_alias Alias for order table to use in join. + * @param string $address_table_alias Alias for address table to use in join. + * + * @return array Select and join statements for billing address table. + */ + private function join_billing_address_table_to_order_query( $order_table_alias, $address_table_alias ) { + return $this->join_address_table_order_query( 'billing', $order_table_alias, $address_table_alias ); + } + + /** + * Helper method to generate join query for shipping addresses in wc_address table. + * + * @param string $order_table_alias Alias for order table to use in join. + * @param string $address_table_alias Alias for address table to use in join. + * + * @return array Select and join statements for shipping address table. + */ + private function join_shipping_address_table_to_order_query( $order_table_alias, $address_table_alias ) { + return $this->join_address_table_order_query( 'shipping', $order_table_alias, $address_table_alias ); + } + + /** + * Helper method to generate join and select query for address table. + * + * @param string $address_type Type of address. Typically will be `billing` or `shipping`. + * @param string $order_table_alias Alias of order table to use. + * @param string $address_table_alias Alias for address table to use. + * + * @return array Select and join statements for address table. + */ + private function join_address_table_order_query( $address_type, $order_table_alias, $address_table_alias ) { + global $wpdb; + $address_table = $this::get_addresses_table_name(); + $column_props_map = 'billing' === $address_type ? $this->billing_address_column_mapping : $this->shipping_address_column_mapping; + $clauses = $this->generate_select_and_join_clauses( $order_table_alias, $address_table, $address_table_alias, $column_props_map ); + // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- $clauses['join'] and $address_table_alias are hardcoded. + $clauses['join'] = $wpdb->prepare( + "{$clauses['join']} AND $address_table_alias.address_type = %s", + $address_type + ); + // phpcs:enable + return array( + 'select' => $clauses['select'], + 'join' => $clauses['join'], + ); + } + + /** + * Helper method to join order operational data table. + * + * @param string $order_table_alias Alias to use for order table. + * @param string $operational_table_alias Alias to use for operational data table. + * + * @return array Select and join queries for operational data table. + */ + private function join_operational_data_table_to_order_query( $order_table_alias, $operational_table_alias ) { + $operational_data_table = $this::get_operational_data_table_name(); + + return $this->generate_select_and_join_clauses( + $order_table_alias, + $operational_data_table, + $operational_table_alias, + $this->operational_data_column_mapping + ); + } + + /** + * Helper method to generate join and select clauses. + * + * @param string $order_table_alias Alias for order table. + * @param string $table Table to join. + * @param string $table_alias Alias for table to join. + * @param array[] $column_props_map Column to prop map for table to join. + * + * @return array Select and join queries. + */ + private function generate_select_and_join_clauses( $order_table_alias, $table, $table_alias, $column_props_map ) { + // Add aliases to column names so they will be unique when fetching. + $select_clause = $this->generate_select_clause_for_props( $table_alias, $column_props_map ); + $join_clause = "$table $table_alias ON $table_alias.order_id = $order_table_alias.id"; + + return array( + 'select' => $select_clause, + 'join' => $join_clause, + ); + } + + /** + * Helper method to generate select clause for props. + * + * @param string $table_alias Alias for table. + * @param array[] $props Props to column mapping for table. + * + * @return string Select clause. + */ + private function generate_select_clause_for_props( $table_alias, $props ) { + $select_clauses = array(); + foreach ( $props as $column_name => $prop_details ) { + $select_clauses[] = isset( $prop_details['name'] ) ? "$table_alias.$column_name as {$prop_details['name']}" : "$table_alias.$column_name as {$table_alias}_$column_name"; + } + + return implode( ', ', $select_clauses ); + } + + + //phpcs:disable Squiz.Commenting, Generic.Commenting /** * @param \WC_Order $order */ @@ -235,7 +695,8 @@ CREATE TABLE $addresses_table_name ( country text null, email varchar(320) null, phone varchar(100) null, - KEY order_id (order_id) + KEY order_id (order_id), + KEY address_type_order_id (address_type, order_id) ); CREATE TABLE $operational_data_table_name ( id bigint(20) unsigned auto_increment primary key, diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php new file mode 100644 index 00000000000..f5f8b406b7d --- /dev/null +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -0,0 +1,47 @@ +sut = wc_get_container()->get( OrdersTableDataStore::class ); + $this->migrator = wc_get_container()->get( WPPostToCOTMigrator::class ); + $this->cpt_data_store = new WC_Order_Data_Store_CPT(); + } + + public function test_read_from_migrated_order() { + $post_order_id = OrderHelper::create_complex_wp_post_order(); + $this->migrator->process_migration_for_ids( array( $post_order_id ) ); + + $cot_order = new WC_Order(); + $cot_order->set_id( $post_order_id ); + $this->sut->read( $cot_order ); + + $post_order = new WC_Order(); + $post_order->set_id( $post_order_id ); + $this->cpt_data_store->read( $post_order ); + + $this->assertEquals( $cot_order->get_status(), $post_order->get_status() ); + } + +} From 57f66ffa7a0e11008d824f75ce964caa599cc4c2 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 22 Apr 2022 14:07:43 +0530 Subject: [PATCH 115/327] Add test for read method in custom order table data store. --- .../Orders/OrdersTableDataStoreTests.php | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index f5f8b406b7d..356a51607ec 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -4,6 +4,11 @@ use Automattic\WooCommerce\Database\Migrations\CustomOrderTable\WPPostToCOTMigra use Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore; use Automattic\WooCommerce\RestApi\UnitTests\Helpers\OrderHelper; +/** + * Class OrdersTableDataStoreTests. + * + * Test or OrdersTableDataStore class. + */ class OrdersTableDataStoreTests extends WC_Unit_Test_Case { /** @@ -21,14 +26,20 @@ class OrdersTableDataStoreTests extends WC_Unit_Test_Case { */ private $cpt_data_store; + /** + * Initializes system under test. + */ public function setUp(): void { parent::setUp(); OrderHelper::create_order_custom_table_if_not_exist(); - $this->sut = wc_get_container()->get( OrdersTableDataStore::class ); - $this->migrator = wc_get_container()->get( WPPostToCOTMigrator::class ); + $this->sut = wc_get_container()->get( OrdersTableDataStore::class ); + $this->migrator = wc_get_container()->get( WPPostToCOTMigrator::class ); $this->cpt_data_store = new WC_Order_Data_Store_CPT(); } + /** + * Test reading from migrated post order. + */ public function test_read_from_migrated_order() { $post_order_id = OrderHelper::create_complex_wp_post_order(); $this->migrator->process_migration_for_ids( array( $post_order_id ) ); @@ -41,7 +52,18 @@ class OrdersTableDataStoreTests extends WC_Unit_Test_Case { $post_order->set_id( $post_order_id ); $this->cpt_data_store->read( $post_order ); - $this->assertEquals( $cot_order->get_status(), $post_order->get_status() ); + $post_order_data = $post_order->get_data(); + $string_to_num_keys = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'cart_tax' ); + array_walk( + $post_order_data, + function ( &$data, $key ) use ( $string_to_num_keys ) { + if ( in_array( $key, $string_to_num_keys, true ) ) { + $data = (float) $data; + } + } + ); + + $this->assertEquals( $post_order_data, $cot_order->get_data() ); } } From 5d18e52d4f7344b9e09e56ba31f7fdd9ec6c3829 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 22 Apr 2022 15:29:29 +0530 Subject: [PATCH 116/327] Remove temporary table hooks since they need to be referenced multiple times. --- .../DataStores/Orders/OrdersTableDataStoreTests.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php index 356a51607ec..6cd91e44dfd 100644 --- a/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php +++ b/plugins/woocommerce/tests/php/src/Internal/DataStores/Orders/OrdersTableDataStoreTests.php @@ -31,10 +31,16 @@ class OrdersTableDataStoreTests extends WC_Unit_Test_Case { */ public function setUp(): void { parent::setUp(); + // Remove the Test Suite’s use of temporary tables https://wordpress.stackexchange.com/a/220308. + remove_filter( 'query', array( $this, '_create_temporary_tables' ) ); + remove_filter( 'query', array( $this, '_drop_temporary_tables' ) ); OrderHelper::create_order_custom_table_if_not_exist(); $this->sut = wc_get_container()->get( OrdersTableDataStore::class ); $this->migrator = wc_get_container()->get( WPPostToCOTMigrator::class ); $this->cpt_data_store = new WC_Order_Data_Store_CPT(); + // Add back removed filter. + add_filter( 'query', array( $this, '_create_temporary_tables' ) ); + add_filter( 'query', array( $this, '_drop_temporary_tables' ) ); } /** From ebd4b8a676be39d154bd3e3bbc21defe4ac5eed5 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Fri, 22 Apr 2022 15:46:34 +0530 Subject: [PATCH 117/327] Add changelog. --- plugins/woocommerce/changelog/cot-32669 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/cot-32669 diff --git a/plugins/woocommerce/changelog/cot-32669 b/plugins/woocommerce/changelog/cot-32669 new file mode 100644 index 00000000000..1f09541fb3c --- /dev/null +++ b/plugins/woocommerce/changelog/cot-32669 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add `read` method to custom order table datastore. From 015c48c6ab8c9e3cff427530ff17cf736fbd091b Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 22 Apr 2022 10:08:35 -0300 Subject: [PATCH 118/327] Add preview store button --- .../client/activity-panel/activity-panel.js | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js index 587ca99b5c5..d192b225154 100644 --- a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js +++ b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js @@ -298,9 +298,27 @@ export const ActivityPanel = ( { isEmbedded, query } ) => { }, }; - return [ activity, setup, previewSite, displayOptions, help ].filter( - ( tab ) => tab.visible - ); + const previewStore = { + name: 'previewStore', + title: __( 'Preview store', 'woocommerce' ), + icon: , + visible: isHomescreen(), + onClick: () => { + window.open( getSetting( 'siteUrl' ) ); + recordEvent( 'wcadmin_previewstore_click' ); + + return null; + }, + }; + + return [ + activity, + setup, + previewSite, + previewStore, + displayOptions, + help, + ].filter( ( tab ) => tab.visible ); }; const getPanelContent = ( tab ) => { From 6fb0881d7b2bcb86acf457560ff96a4109538a6b Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 22 Apr 2022 10:09:32 -0300 Subject: [PATCH 119/327] Add test --- .../woocommerce-admin/client/activity-panel/test/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/woocommerce-admin/client/activity-panel/test/index.js b/plugins/woocommerce-admin/client/activity-panel/test/index.js index 7728d717cd4..1bb3d9645da 100644 --- a/plugins/woocommerce-admin/client/activity-panel/test/index.js +++ b/plugins/woocommerce-admin/client/activity-panel/test/index.js @@ -90,6 +90,12 @@ describe( 'Activity Panel', () => { expect( screen.queryByText( 'Inbox' ) ).toBeNull(); } ); + it( 'should render preview 2 tab on home screen', () => { + render( ); + + expect( screen.getByText( 'Preview store' ) ).toBeDefined(); + } ); + it( 'should not render help tab if not on home screen', () => { render( From 88bcc8d3e6a1d6786c468269012aa5e130525c81 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 22 Apr 2022 10:31:16 -0300 Subject: [PATCH 120/327] Add changelog --- plugins/woocommerce/changelog/add-32156_preview-store-button | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32156_preview-store-button diff --git a/plugins/woocommerce/changelog/add-32156_preview-store-button b/plugins/woocommerce/changelog/add-32156_preview-store-button new file mode 100644 index 00000000000..2b97fb24018 --- /dev/null +++ b/plugins/woocommerce/changelog/add-32156_preview-store-button @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Preview store button to Home screen #32739 From 3601109ac1534be6599128843e1348efeeecfdd9 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 22 Apr 2022 10:53:46 -0300 Subject: [PATCH 121/327] Fix test text --- plugins/woocommerce-admin/client/activity-panel/test/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/activity-panel/test/index.js b/plugins/woocommerce-admin/client/activity-panel/test/index.js index 1bb3d9645da..4e6225d814d 100644 --- a/plugins/woocommerce-admin/client/activity-panel/test/index.js +++ b/plugins/woocommerce-admin/client/activity-panel/test/index.js @@ -90,7 +90,7 @@ describe( 'Activity Panel', () => { expect( screen.queryByText( 'Inbox' ) ).toBeNull(); } ); - it( 'should render preview 2 tab on home screen', () => { + it( 'should render preview store tab on home screen', () => { render( ); expect( screen.getByText( 'Preview store' ) ).toBeDefined(); From 6ab9a9ae2ce1e6570ecd06ac719704419524704a Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 22 Apr 2022 12:04:51 -0300 Subject: [PATCH 122/327] Add task list slot fill support in the sectioned task list --- .../tasks/reminder-bar/reminder-bar.tsx | 2 +- .../two-column-tasks/sectioned-task-list.tsx | 101 ++--------- .../two-column-tasks/task-list-item.tsx | 157 ++++++++++++++++++ 3 files changed, 168 insertions(+), 92 deletions(-) create mode 100644 plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx diff --git a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx index f5965e1a6c3..021992095b9 100644 --- a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx +++ b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx @@ -160,7 +160,7 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { const tracksProps = { completed: completedTasksCount, - is_homescreen: isHomescreen, + is_homescreen: !! isHomescreen, is_active_task_page: isActiveTaskPage, }; diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx index 3063e03d773..bf349643805 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx @@ -5,22 +5,15 @@ import { __ } from '@wordpress/i18n'; import { useEffect, useRef, useState } from '@wordpress/element'; import { Panel, PanelBody, PanelRow } from '@wordpress/components'; import { useSelect, useDispatch } from '@wordpress/data'; -import { - updateQueryString, - getHistory, - getNewPath, -} from '@woocommerce/navigation'; import { OPTIONS_STORE_NAME, ONBOARDING_STORE_NAME, - TaskType, getVisibleTasks, WCDataSelector, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; -import { List, TaskItem } from '@woocommerce/experimental'; +import { List } from '@woocommerce/experimental'; import classnames from 'classnames'; -import { History } from 'history'; /** * Internal dependencies @@ -31,6 +24,7 @@ import TaskListCompleted from './completed'; import { TaskListProps } from '~/tasks/task-list'; import { ProgressHeader } from '~/task-lists/progress-header'; import { SectionPanelTitle } from './section-panel-title'; +import { TaskListItem } from './task-list-item'; type PanelBodyProps = Omit< PanelBody.Props, 'title' | 'onToggle' > & { title: string | React.ReactNode | undefined; @@ -48,10 +42,7 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { sections, displayProgressHeader, } ) => { - const { createNotice } = useDispatch( 'core/notices' ); - const { updateOptions, dismissTask, undoDismissTask } = useDispatch( - OPTIONS_STORE_NAME - ); + const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); const { profileItems } = useSelect( ( select: WCDataSelector ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { @@ -92,18 +83,6 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { } }, [ query ] ); - const onDismissTask = ( taskId: string ) => { - dismissTask( taskId ); - createNotice( 'success', __( 'Task dismissed' ), { - actions: [ - { - label: __( 'Undo', 'woocommerce-admin' ), - onClick: () => undoDismissTask( taskId ), - }, - ], - } ); - }; - const hideTasks = () => { hideTaskList( id ); }; @@ -127,28 +106,6 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { selectedHeaderCard = visibleTasks[ visibleTasks.length - 1 ]; } - const trackClick = ( task: TaskType ) => { - recordEvent( `${ eventPrefix }_click`, { - task_name: task.id, - } ); - }; - - const onTaskSelected = ( task: TaskType ) => { - trackClick( task ); - if ( task.actionUrl ) { - if ( task.actionUrl.startsWith( 'http' ) ) { - window.location.href = task.actionUrl; - } else { - ( getHistory() as History ).push( - getNewPath( {}, task.actionUrl, {} ) - ); - } - return; - } - - updateQueryString( { task: task.id } ); - }; - const getSectionTasks = ( sectionTaskIds: string[] ) => { return visibleTasks.filter( ( task ) => sectionTaskIds.includes( task.id ) @@ -229,51 +186,13 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { { getSectionTasks( section.tasks ).map( - ( task ) => { - const className = classnames( - 'woocommerce-task-list__item', - { - complete: task.isComplete, - 'is-disabled': - task.isDisabled, - } - ); - return ( - { - if ( - ! task.isDisabled - ) { - onTaskSelected( - task - ); - } - } } - onDismiss={ - task.isDismissable - ? () => - onDismissTask( - task.id - ) - : undefined - } - action={ () => {} } - actionLabel={ - task.actionLabel - } - /> - ); - } + ( task ) => ( + + ) ) } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx new file mode 100644 index 00000000000..21c86b2a935 --- /dev/null +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx @@ -0,0 +1,157 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { + getHistory, + getNewPath, + updateQueryString, +} from '@woocommerce/navigation'; +import { OPTIONS_STORE_NAME, TaskType } from '@woocommerce/data'; +import { recordEvent } from '@woocommerce/tracks'; +import { TaskItem, useSlot } from '@woocommerce/experimental'; +import { useCallback } from '@wordpress/element'; +import { useDispatch } from '@wordpress/data'; +import { WooOnboardingTaskListItem } from '@woocommerce/onboarding'; +import classnames from 'classnames'; +import { History } from 'history'; + +export type TaskListItemProps = { + task: TaskType; + eventPrefix?: string; +}; + +export const TaskListItem: React.FC< TaskListItemProps > = ( { + task, + eventPrefix, +} ) => { + const { createNotice } = useDispatch( 'core/notices' ); + const { + dismissTask, + undoDismissTask, + snoozeTask, + undoSnoozeTask, + } = useDispatch( OPTIONS_STORE_NAME ); + + const slot = useSlot( + `woocommerce_onboarding_task_list_item_${ task.id }` + ); + const hasFills = Boolean( slot?.fills?.length ); + + const trackClick = () => { + recordEvent( `${ eventPrefix }_click`, { + task_name: task.id, + } ); + }; + + const onTaskSelected = () => { + trackClick(); + + if ( task.actionUrl ) { + if ( task.actionUrl.startsWith( 'http' ) ) { + window.location.href = task.actionUrl; + } else { + ( getHistory() as History ).push( + getNewPath( {}, task.actionUrl, {} ) + ); + } + return; + } + + window.document.documentElement.scrollTop = 0; + updateQueryString( { task: task.id } ); + }; + + const onDismiss = useCallback( () => { + dismissTask( task.id ); + createNotice( 'success', __( 'Task dismissed' ), { + actions: [ + { + label: __( 'Undo', 'woocommerce' ), + onClick: () => undoDismissTask( task.id ), + }, + ], + } ); + }, [ task.id ] ); + + const onSnooze = useCallback( () => { + snoozeTask( task.id ); + createNotice( + 'success', + __( 'Task postponed until tomorrow', 'woocommerce' ), + { + actions: [ + { + label: __( 'Undo', 'woocommerce' ), + onClick: () => undoSnoozeTask( task.id ), + }, + ], + } + ); + }, [ task.id ] ); + + const className = classnames( 'woocommerce-task-list__item', { + complete: task.isComplete, + 'is-disabled': task.isDisabled, + } ); + + const taskItemProps = { + completed: task.isComplete, + onSnooze: task.isSnoozeable && onSnooze, + onDismiss: task.isDismissable && onDismiss, + }; + + const DefaultTaskItem = useCallback( + ( props ) => { + const onClickActions = () => { + if ( props.onClick ) { + trackClick(); + return props.onClick(); + } + return onTaskSelected(); + }; + return ( + {} } + actionLabel={ task.actionLabel } + { ...props } + onClick={ () => { + if ( task.isDisabled ) { + return; + } + onClickActions(); + } } + /> + ); + }, + [ + task.id, + task.title, + task.content, + task.time, + task.actionLabel, + task.isComplete, + ] + ); + + return hasFills ? ( + + ) : ( + + ); +}; From d5401cee3c1628c888da8c9d3fb892130f386be2 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 22 Apr 2022 12:15:22 -0300 Subject: [PATCH 123/327] Fix track format --- .../client/two-column-tasks/task-list-item.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx index 21c86b2a935..25a3d2bf56f 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx @@ -39,7 +39,7 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( { const hasFills = Boolean( slot?.fills?.length ); const trackClick = () => { - recordEvent( `${ eventPrefix }_click`, { + recordEvent( `${ eventPrefix }click`, { task_name: task.id, } ); }; From f379462885f817c8099fed0437fa6d83b0205a6b Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 22 Apr 2022 12:24:49 -0300 Subject: [PATCH 124/327] Add changelog --- plugins/woocommerce/changelog/fix-32714_wcpay_blank_page | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32714_wcpay_blank_page diff --git a/plugins/woocommerce/changelog/fix-32714_wcpay_blank_page b/plugins/woocommerce/changelog/fix-32714_wcpay_blank_page new file mode 100644 index 00000000000..0f672f00f29 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32714_wcpay_blank_page @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Addressing issues with certain tasks in task list experiment leading to blank page. #32742 From a8b68785ca4ba8b1596a74b482b7a64b7c5f8f1d Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 22 Apr 2022 09:45:37 -0700 Subject: [PATCH 125/327] Change Approved Directory update routine (pin to 6.5, prev was 6.4). --- .../changelog/fix-650-update-routines | 5 +++++ .../woocommerce/includes/class-wc-install.php | 4 +++- .../includes/wc-update-functions.php | 18 +++++++++--------- 3 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-650-update-routines diff --git a/plugins/woocommerce/changelog/fix-650-update-routines b/plugins/woocommerce/changelog/fix-650-update-routines new file mode 100644 index 00000000000..e45a7fb3faf --- /dev/null +++ b/plugins/woocommerce/changelog/fix-650-update-routines @@ -0,0 +1,5 @@ +Significance: patch +Type: tweak +Comment: Omitting a changelog entry, because we're correcting an unreleased oversight. + + diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index d19c54df066..152bdca82d9 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -200,10 +200,12 @@ class WC_Install { ), '6.4.0' => array( 'wc_update_640_add_primary_key_to_product_attributes_lookup_table', - 'wc_update_640_approved_download_directories', 'wc_admin_update_340_remove_is_primary_from_note_action', 'wc_update_640_db_version', ), + '6.5.0' => array( + 'wc_update_650_approved_download_directories', + ), ); /** diff --git a/plugins/woocommerce/includes/wc-update-functions.php b/plugins/woocommerce/includes/wc-update-functions.php index 10c1d0322ca..b40bc553991 100644 --- a/plugins/woocommerce/includes/wc-update-functions.php +++ b/plugins/woocommerce/includes/wc-update-functions.php @@ -2375,15 +2375,6 @@ function wc_update_630_db_version() { WC_Install::update_db_version( '6.3.0' ); } -/** - * Add the standard WooCommerce upload directories to the Approved Product Download Directories list - * and start populating it based on existing product download URLs, but do not enable the feature - * (for existing installations, a site admin should review and make a conscious decision to enable). - */ -function wc_update_640_approved_download_directories() { - wc_get_container()->get( Download_Directories_Sync::class )->init_feature( true, false ); -} - /** * Create the primary key for the product attributes lookup table if it doesn't exist already. * @@ -2402,3 +2393,12 @@ function wc_update_640_add_primary_key_to_product_attributes_lookup_table() { function wc_update_640_db_version() { WC_Install::update_db_version( '6.4.0' ); } + +/** + * Add the standard WooCommerce upload directories to the Approved Product Download Directories list + * and start populating it based on existing product download URLs, but do not enable the feature + * (for existing installations, a site admin should review and make a conscious decision to enable). + */ +function wc_update_650_approved_download_directories() { + wc_get_container()->get( Download_Directories_Sync::class )->init_feature( true, false ); +} From d951b218f25a7fd5f9135abf61ea482e15ea823e Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 22 Apr 2022 14:03:38 -0700 Subject: [PATCH 126/327] Ensure necessary hooks are initialized before triggering sync. --- plugins/woocommerce/includes/wc-update-functions.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/wc-update-functions.php b/plugins/woocommerce/includes/wc-update-functions.php index b40bc553991..2909d03fe28 100644 --- a/plugins/woocommerce/includes/wc-update-functions.php +++ b/plugins/woocommerce/includes/wc-update-functions.php @@ -2400,5 +2400,7 @@ function wc_update_640_db_version() { * (for existing installations, a site admin should review and make a conscious decision to enable). */ function wc_update_650_approved_download_directories() { - wc_get_container()->get( Download_Directories_Sync::class )->init_feature( true, false ); + $directory_sync = wc_get_container()->get( Download_Directories_Sync::class ); + $directory_sync->init_hooks(); + $directory_sync->init_feature( true, false ); } From 664212b9df337a1805c3fd7e98fe7f788c4de19d Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Fri, 22 Apr 2022 14:45:20 -0700 Subject: [PATCH 127/327] Fix test. --- .../tests/legacy/unit-tests/woocommerce-admin/install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/install.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/install.php index 62e771dbc92..61342df0504 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/install.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/install.php @@ -133,7 +133,7 @@ class WC_Admin_Tests_Install extends WP_UnitTestCase { array( '5.6.0', 14 ), array( '6.0.0', 7 ), array( '6.3.0', 4 ), - array( '6.4.0', 0 ), + array( '6.4.0', 1 ), ); } From d394572378c40a53f05bbd60e82c66f5e3e9b32d Mon Sep 17 00:00:00 2001 From: Yordan Soares <38109855+YordanSoares@users.noreply.github.com> Date: Fri, 22 Apr 2022 20:55:19 -0400 Subject: [PATCH 128/327] Use the price decimal separator to format product weight and dimensions --- .../woocommerce/includes/admin/class-wc-admin-assets.php | 3 ++- plugins/woocommerce/includes/wc-formatting-functions.php | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php index 5009716d8b7..1fc23cb61af 100644 --- a/plugins/woocommerce/includes/admin/class-wc-admin-assets.php +++ b/plugins/woocommerce/includes/admin/class-wc-admin-assets.php @@ -181,7 +181,8 @@ if ( ! class_exists( 'WC_Admin_Assets', false ) ) : wp_enqueue_script( 'jquery-ui-autocomplete' ); $locale = localeconv(); - $decimal = isset( $locale['decimal_point'] ) ? $locale['decimal_point'] : '.'; + $decimal_point = isset( $locale['decimal_point'] ) ? $locale['decimal_point'] : '.'; + $decimal = ( ! empty( wc_get_price_decimal_separator() ) ) ? wc_get_price_decimal_separator() : $decimal_point; $params = array( /* translators: %s: decimal */ diff --git a/plugins/woocommerce/includes/wc-formatting-functions.php b/plugins/woocommerce/includes/wc-formatting-functions.php index 2bb63a68b5d..2266d48cfcb 100644 --- a/plugins/woocommerce/includes/wc-formatting-functions.php +++ b/plugins/woocommerce/includes/wc-formatting-functions.php @@ -345,14 +345,16 @@ function wc_format_localized_price( $value ) { } /** - * Format a decimal with PHP Locale settings. + * Format a decimal with the decimal separator for prices or PHP Locale settings. * * @param string $value Decimal to localize. * @return string */ function wc_format_localized_decimal( $value ) { $locale = localeconv(); - return apply_filters( 'woocommerce_format_localized_decimal', str_replace( '.', $locale['decimal_point'], strval( $value ) ), $value ); + $decimal_point = isset( $locale['decimal_point'] ) ? $locale['decimal_point'] : '.'; + $decimal = ( ! empty( wc_get_price_decimal_separator() ) ) ? wc_get_price_decimal_separator() : $decimal_point; + return apply_filters( 'woocommerce_format_localized_decimal', str_replace( '.', $decimal, strval( $value ) ), $value ); } /** From c785c29cd17206c5a6287e57fd1040851eb9f9ae Mon Sep 17 00:00:00 2001 From: Caleb Stauffer Date: Sat, 23 Apr 2022 15:59:04 -0400 Subject: [PATCH 129/327] confirm query set before evaluating condition fixes #30646 --- plugins/woocommerce/includes/class-wc-cache-helper.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-cache-helper.php b/plugins/woocommerce/includes/class-wc-cache-helper.php index 32500527c5e..25a8145522e 100644 --- a/plugins/woocommerce/includes/class-wc-cache-helper.php +++ b/plugins/woocommerce/includes/class-wc-cache-helper.php @@ -41,6 +41,8 @@ class WC_Cache_Helper { * @since 3.6.0 */ public static function additional_nocache_headers( $headers ) { + global $wp_cache; + $agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $set_cache = false; @@ -64,7 +66,7 @@ class WC_Cache_Helper { $set_cache = true; } - if ( false !== strpos( $agent, 'Chrome' ) && is_cart() ) { + if ( false !== strpos( $agent, 'Chrome' ) && isset( $wp_query ) && is_cart() ) { $set_cache = true; } From 03c710221fa3a1951c2ce9ce5b0c016fbe2d3f0c Mon Sep 17 00:00:00 2001 From: Caleb Stauffer Date: Sat, 23 Apr 2022 15:59:48 -0400 Subject: [PATCH 130/327] fix variable name --- plugins/woocommerce/includes/class-wc-cache-helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-cache-helper.php b/plugins/woocommerce/includes/class-wc-cache-helper.php index 25a8145522e..e80611619ae 100644 --- a/plugins/woocommerce/includes/class-wc-cache-helper.php +++ b/plugins/woocommerce/includes/class-wc-cache-helper.php @@ -41,7 +41,7 @@ class WC_Cache_Helper { * @since 3.6.0 */ public static function additional_nocache_headers( $headers ) { - global $wp_cache; + global $wp_query; $agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized From 6e871a1386c3c80185e5a4ab0c8b1a5d8128f45c Mon Sep 17 00:00:00 2001 From: Mostafa Soufi Date: Sun, 24 Apr 2022 23:34:10 +0300 Subject: [PATCH 131/327] Add support select2 for log_file dropdown --- .../includes/admin/views/html-admin-page-status-logs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/admin/views/html-admin-page-status-logs.php b/plugins/woocommerce/includes/admin/views/html-admin-page-status-logs.php index 40cfcf6926e..443d17864dc 100644 --- a/plugins/woocommerce/includes/admin/views/html-admin-page-status-logs.php +++ b/plugins/woocommerce/includes/admin/views/html-admin-page-status-logs.php @@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
- $log_file ) : ?> Date: Mon, 25 Apr 2022 11:32:22 +0800 Subject: [PATCH 132/327] Remove hook that calls for registering welcome page --- plugins/woocommerce/src/Internal/Admin/WcPayWelcomePage.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/woocommerce/src/Internal/Admin/WcPayWelcomePage.php b/plugins/woocommerce/src/Internal/Admin/WcPayWelcomePage.php index ceb903dcd46..2e10a1d1def 100644 --- a/plugins/woocommerce/src/Internal/Admin/WcPayWelcomePage.php +++ b/plugins/woocommerce/src/Internal/Admin/WcPayWelcomePage.php @@ -13,12 +13,6 @@ class WcPayWelcomePage { const EXPERIMENT_NAME_BASE = 'woocommerce_payments_menu_promo_nz_ie_:yyyy_:mm'; - /** - * WCPayWelcomePage constructor. - */ - public function __construct() { - add_action( 'admin_menu', array( $this, 'register_payments_welcome_page' ) ); - } /** * Registers the WooCommerce Payments welcome page. */ From 1adbc1bdf825fca670fc79a546ead516bfd37c78 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Mon, 25 Apr 2022 11:34:25 +0800 Subject: [PATCH 133/327] Changelog --- .../fix-32751-remove-wcpay-in-core-experiment-request | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32751-remove-wcpay-in-core-experiment-request diff --git a/plugins/woocommerce/changelog/fix-32751-remove-wcpay-in-core-experiment-request b/plugins/woocommerce/changelog/fix-32751-remove-wcpay-in-core-experiment-request new file mode 100644 index 00000000000..956e71f0a6f --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32751-remove-wcpay-in-core-experiment-request @@ -0,0 +1,4 @@ +Significance: minor +Type: tweak + +Remove `woocommerce_payments_menu_promo_nz_ie` experiment request From 6836d90b72de0262437891ed901f9bb0b5d4fcd4 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Fri, 22 Apr 2022 15:31:51 +0800 Subject: [PATCH 134/327] Add wp data, compose types to @woocommerce/data Update pnpm-lock.yaml --- packages/js/data/package.json | 3 +++ pnpm-lock.yaml | 13 +++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/js/data/package.json b/packages/js/data/package.json index 592adc87fe7..994826c6180 100644 --- a/packages/js/data/package.json +++ b/packages/js/data/package.json @@ -48,12 +48,15 @@ "@babel/runtime": "^7.17.2", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", + "@types/wordpress__compose": "^4.0.1", "@types/wordpress__core-data": "^2.4.5", + "@types/wordpress__data": "^6.0.0", "@types/wordpress__data-controls": "^2.2.0", "@wordpress/eslint-plugin": "^11.0.0", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", + "redux": "^4.1.0", "rimraf": "^3.0.2", "ts-jest": "^27.1.3", "typescript": "^4.6.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 641a5525d60..a10bca610bc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -422,7 +422,9 @@ importers: '@babel/runtime': ^7.17.2 '@testing-library/react': ^12.1.3 '@testing-library/react-hooks': ^7.0.2 + '@types/wordpress__compose': ^4.0.1 '@types/wordpress__core-data': ^2.4.5 + '@types/wordpress__data': ^6.0.0 '@types/wordpress__data-controls': ^2.2.0 '@woocommerce/date': workspace:* '@woocommerce/navigation': workspace:* @@ -443,6 +445,7 @@ importers: jest-cli: ^27.5.1 md5: ^2.3.0 qs: ^6.10.3 + redux: ^4.1.0 rememo: ^4.0.0 rimraf: ^3.0.2 ts-jest: ^27.1.3 @@ -470,12 +473,15 @@ importers: '@babel/runtime': 7.17.7 '@testing-library/react': 12.1.4 '@testing-library/react-hooks': 7.0.2 + '@types/wordpress__compose': 4.0.1 '@types/wordpress__core-data': 2.4.5 + '@types/wordpress__data': 6.0.0 '@types/wordpress__data-controls': 2.2.0 '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 + redux: 4.1.2 rimraf: 3.0.2 ts-jest: 27.1.3_b64eba0a9f1c7068f7f3a75addda5ccd typescript: 4.6.2 @@ -14034,7 +14040,7 @@ packages: '@wordpress/data': 6.4.1 '@wordpress/deprecated': 3.4.1 '@wordpress/dom': 3.4.1 - '@wordpress/element': 4.2.1 + '@wordpress/element': 4.3.0 '@wordpress/hooks': 3.5.0 '@wordpress/html-entities': 3.4.1 '@wordpress/i18n': 4.4.1 @@ -14063,7 +14069,7 @@ packages: '@wordpress/data': 6.4.1_react@17.0.2 '@wordpress/deprecated': 3.4.1 '@wordpress/dom': 3.4.1 - '@wordpress/element': 4.2.1 + '@wordpress/element': 4.3.0 '@wordpress/hooks': 3.5.0 '@wordpress/html-entities': 3.4.1 '@wordpress/i18n': 4.4.1 @@ -14592,7 +14598,7 @@ packages: '@babel/runtime': 7.17.7 '@types/react': 16.14.21 '@types/react-dom': 16.9.14 - '@wordpress/escape-html': 2.4.1 + '@wordpress/escape-html': 2.5.0 lodash: 4.17.21 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 @@ -14660,7 +14666,6 @@ packages: engines: {node: '>=12'} dependencies: '@babel/runtime': 7.17.7 - dev: false /@wordpress/eslint-plugin/11.0.1_2205da2c9bef219d53091cb9dbc5524c: resolution: {integrity: sha512-HDKwKjOmCaWdyJEtWKRAd0xK/NAXL/ykUP/I8l+zCvzvCXbS1UuixWN09RRzl09tv17JUtPiEqehDilkWRCBZg==} From 5c8f76bbe78db1a219bbb59ac24f90b90a08c771 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 13:40:18 +0800 Subject: [PATCH 135/327] Fix @woocommerce/data type errors after enabling wp data, compose types --- packages/js/data/src/countries/actions.ts | 15 +++- packages/js/data/src/countries/index.ts | 23 ++++-- packages/js/data/src/countries/reducer.ts | 38 +++++---- packages/js/data/src/countries/types.ts | 7 +- packages/js/data/src/plugins/actions.ts | 80 ++++++++----------- packages/js/data/src/plugins/index.ts | 18 ++++- packages/js/data/src/plugins/reducer.ts | 12 +-- packages/js/data/src/plugins/test/reducer.ts | 2 +- .../src/plugins/with-plugins-hydration.tsx | 17 ++-- .../js/data/src/user/use-user-preferences.ts | 26 +++--- packages/js/data/typings/index.d.ts | 17 +++- 11 files changed, 150 insertions(+), 105 deletions(-) diff --git a/packages/js/data/src/countries/actions.ts b/packages/js/data/src/countries/actions.ts index 82cfef1351f..51cc2e19832 100644 --- a/packages/js/data/src/countries/actions.ts +++ b/packages/js/data/src/countries/actions.ts @@ -7,28 +7,35 @@ import { RestApiError } from '../types'; export function getLocalesSuccess( locales: Locales ) { return { - type: TYPES.GET_LOCALES_SUCCESS, + type: TYPES.GET_LOCALES_SUCCESS as const, locales, }; } export function getLocalesError( error: RestApiError ) { return { - type: TYPES.GET_LOCALES_ERROR, + type: TYPES.GET_LOCALES_ERROR as const, error, }; } export function getCountriesSuccess( countries: Country[] ) { return { - type: TYPES.GET_COUNTRIES_SUCCESS, + type: TYPES.GET_COUNTRIES_SUCCESS as const, countries, }; } export function getCountriesError( error: RestApiError ) { return { - type: TYPES.GET_COUNTRIES_ERROR, + type: TYPES.GET_COUNTRIES_ERROR as const, error, }; } + +export type Action = ReturnType< + | typeof getLocalesSuccess + | typeof getLocalesError + | typeof getCountriesSuccess + | typeof getCountriesError +>; diff --git a/packages/js/data/src/countries/index.ts b/packages/js/data/src/countries/index.ts index d4ddfc132ff..de2e1f9d298 100644 --- a/packages/js/data/src/countries/index.ts +++ b/packages/js/data/src/countries/index.ts @@ -1,10 +1,10 @@ /** * External dependencies */ - import { registerStore } from '@wordpress/data'; import { controls } from '@wordpress/data-controls'; - +import { SelectFromMap, DispatchFromMap } from '@automattic/data-stores'; +import { Reducer, AnyAction } from 'redux'; /** * Internal dependencies */ @@ -12,10 +12,13 @@ import { STORE_NAME } from './constants'; import * as selectors from './selectors'; import * as actions from './actions'; import * as resolvers from './resolvers'; -import reducer from './reducer'; +import reducer, { State } from './reducer'; +import { WPDataSelectors } from '../types'; +export * from './types'; +export type { State }; -registerStore( STORE_NAME, { - reducer, +registerStore< State >( STORE_NAME, { + reducer: reducer as Reducer< State, AnyAction >, actions, controls, selectors, @@ -23,3 +26,13 @@ registerStore( STORE_NAME, { } ); export const COUNTRIES_STORE_NAME = STORE_NAME; + +declare module '@wordpress/data' { + // TODO: convert action.js to TS + function dispatch( + key: typeof STORE_NAME + ): DispatchFromMap< typeof actions >; + function select( + key: typeof STORE_NAME + ): SelectFromMap< typeof selectors > & WPDataSelectors; +} diff --git a/packages/js/data/src/countries/reducer.ts b/packages/js/data/src/countries/reducer.ts index 5850a966f84..48ab31815bb 100644 --- a/packages/js/data/src/countries/reducer.ts +++ b/packages/js/data/src/countries/reducer.ts @@ -1,32 +1,29 @@ +/** + * External dependencies + */ + +import type { Reducer } from 'redux'; + /** * Internal dependencies */ import TYPES from './action-types'; -import { CountriesState, Locales, Country } from './types'; +import { Action } from './actions'; +import { CountriesState } from './types'; -const reducer = ( - state: CountriesState = { +const reducer: Reducer< CountriesState, Action > = ( + state = { errors: {}, locales: {}, countries: [], }, - { - type, - error, - locales, - countries, - }: { - type: string; - error: string; - locales: Locales; - countries: Country[]; - } -): CountriesState => { - switch ( type ) { + action +) => { + switch ( action.type ) { case TYPES.GET_LOCALES_SUCCESS: state = { ...state, - locales, + locales: action.locales, }; break; case TYPES.GET_LOCALES_ERROR: @@ -34,14 +31,14 @@ const reducer = ( ...state, errors: { ...state.errors, - locales: error, + locales: action.error, }, }; break; case TYPES.GET_COUNTRIES_SUCCESS: state = { ...state, - countries, + countries: action.countries, }; break; case TYPES.GET_COUNTRIES_ERROR: @@ -49,7 +46,7 @@ const reducer = ( ...state, errors: { ...state.errors, - countries: error, + countries: action.error, }, }; break; @@ -57,4 +54,5 @@ const reducer = ( return state; }; +export type State = ReturnType< typeof reducer >; export default reducer; diff --git a/packages/js/data/src/countries/types.ts b/packages/js/data/src/countries/types.ts index b3d64e64164..7d4ad4aa758 100644 --- a/packages/js/data/src/countries/types.ts +++ b/packages/js/data/src/countries/types.ts @@ -1,3 +1,8 @@ +/** + * Internal dependencies + */ +import { RestApiError } from '../types'; + export type SettingProperties = { label?: string; label_class?: string[]; @@ -35,7 +40,7 @@ export type Locales = { export type CountriesState = { errors: { - [ key: string ]: string; + [ key: string ]: string | RestApiError | undefined; }; locales: Locales; countries: Country[]; diff --git a/packages/js/data/src/plugins/actions.ts b/packages/js/data/src/plugins/actions.ts index d0708da2259..0bed3ac7d1c 100644 --- a/packages/js/data/src/plugins/actions.ts +++ b/packages/js/data/src/plugins/actions.ts @@ -6,9 +6,9 @@ import { select, dispatch as depreciatedDispatch, } from '@wordpress/data-controls'; -import { controls } from '@wordpress/data'; import { _n, sprintf } from '@wordpress/i18n'; import { DispatchFromMap } from '@automattic/data-stores'; +import { controls } from '@wordpress/data'; /** * Internal dependencies @@ -60,7 +60,7 @@ class PluginError extends Error { } } -export function formatErrors( +function formatErrors( response: WPError< PluginNames > | Error | string ): string { if ( isWPError( response ) ) { @@ -107,12 +107,9 @@ const formatErrorMessage = ( ); }; -export function updateActivePlugins( - active: string[], - replace = false -): { type: TYPES.UPDATE_ACTIVE_PLUGINS; active: string[]; replace?: boolean } { +export function updateActivePlugins( active: string[], replace = false ) { return { - type: TYPES.UPDATE_ACTIVE_PLUGINS, + type: TYPES.UPDATE_ACTIVE_PLUGINS as const, active, replace, }; @@ -127,7 +124,7 @@ export function updateInstalledPlugins( replace?: boolean; } { return { - type: TYPES.UPDATE_INSTALLED_PLUGINS, + type: TYPES.UPDATE_INSTALLED_PLUGINS as const, installed, replace, }; @@ -136,13 +133,9 @@ export function updateInstalledPlugins( export function setIsRequesting( selector: SelectorKeysWithActions, isRequesting: boolean -): { - type: TYPES.SET_IS_REQUESTING; - selector: SelectorKeysWithActions; - isRequesting: boolean; -} { +) { return { - type: TYPES.SET_IS_REQUESTING, + type: TYPES.SET_IS_REQUESTING as const, selector, isRequesting, }; @@ -151,26 +144,17 @@ export function setIsRequesting( export function setError( selector: SelectorKeysWithActions, error: Partial< Record< PluginNames, string[] > > -): { - type: TYPES.SET_ERROR; - selector: SelectorKeysWithActions; - error: Partial< Record< PluginNames, string[] > >; -} { +) { return { - type: TYPES.SET_ERROR, + type: TYPES.SET_ERROR as const, selector, error, }; } -export function updateIsJetpackConnected( - jetpackConnection: boolean -): { - type: TYPES.UPDATE_JETPACK_CONNECTION; - jetpackConnection: boolean; -} { +export function updateIsJetpackConnected( jetpackConnection: boolean ) { return { - type: TYPES.UPDATE_JETPACK_CONNECTION, + type: TYPES.UPDATE_JETPACK_CONNECTION as const, jetpackConnection, }; } @@ -178,13 +162,9 @@ export function updateIsJetpackConnected( export function updateJetpackConnectUrl( redirectUrl: string, jetpackConnectUrl: string -): { - type: TYPES.UPDATE_JETPACK_CONNECT_URL; - redirectUrl: string; - jetpackConnectUrl: string; -} { +) { return { - type: TYPES.UPDATE_JETPACK_CONNECT_URL, + type: TYPES.UPDATE_JETPACK_CONNECT_URL as const, jetpackConnectUrl, redirectUrl, }; @@ -278,7 +258,12 @@ export function* installAndActivatePlugins( plugins: string[] ) { } } -export const createErrorNotice = ( errorMessage: string ) => { +export const createErrorNotice = ( + errorMessage: string +): { + type: 'CREATE_NOTICE'; + [ key: string ]: unknown; +} => { return dispatch( 'core/notices', 'createNotice', 'error', errorMessage ); }; @@ -357,7 +342,7 @@ export function setPaypalOnboardingStatus( paypalOnboardingStatus: Partial< PaypalOnboardingStatus >; } { return { - type: TYPES.SET_PAYPAL_ONBOARDING_STATUS, + type: TYPES.SET_PAYPAL_ONBOARDING_STATUS as const, paypalOnboardingStatus: status, }; } @@ -371,7 +356,7 @@ export function setRecommendedPlugins( plugins: Plugin[]; } { return { - type: TYPES.SET_RECOMMENDED_PLUGINS, + type: TYPES.SET_RECOMMENDED_PLUGINS as const, recommendedType: type, plugins, }; @@ -406,19 +391,24 @@ export function* dismissRecommendedPlugins( type: RecommendedTypes ) { return success; } -export type Actions = - | ReturnType< typeof updateActivePlugins > - | ReturnType< typeof updateInstalledPlugins > - | ReturnType< typeof setIsRequesting > - | ReturnType< typeof setError > - | ReturnType< typeof updateIsJetpackConnected > - | ReturnType< typeof updateJetpackConnectUrl > - | ReturnType< typeof setPaypalOnboardingStatus > - | ReturnType< typeof setRecommendedPlugins >; +export type Actions = ReturnType< + | typeof updateActivePlugins + | typeof updateInstalledPlugins + | typeof setIsRequesting + | typeof setError + | typeof updateIsJetpackConnected + | typeof updateJetpackConnectUrl + | typeof setPaypalOnboardingStatus + | typeof setRecommendedPlugins + | typeof createErrorNotice +>; // Types export type ActionDispatchers = DispatchFromMap< { + installPlugins: typeof installPlugins; + activatePlugins: typeof activatePlugins; installJetpackAndConnect: typeof installJetpackAndConnect; installAndActivatePlugins: typeof installAndActivatePlugins; + connectToJetpackWithFailureRedirect: typeof connectToJetpackWithFailureRedirect; dismissRecommendedPlugins: typeof dismissRecommendedPlugins; } >; diff --git a/packages/js/data/src/plugins/index.ts b/packages/js/data/src/plugins/index.ts index 3e18474c8a4..3a370484ea3 100644 --- a/packages/js/data/src/plugins/index.ts +++ b/packages/js/data/src/plugins/index.ts @@ -3,7 +3,7 @@ */ import { registerStore } from '@wordpress/data'; import { controls } from '@wordpress/data-controls'; - +import { SelectFromMap, DispatchFromMap } from '@automattic/data-stores'; /** * Internal dependencies */ @@ -11,9 +11,12 @@ import { STORE_NAME } from './constants'; import * as selectors from './selectors'; import * as actions from './actions'; import * as resolvers from './resolvers'; -import reducer from './reducer'; +import reducer, { State } from './reducer'; +import { WPDataSelectors } from '../types'; +export * from './types'; +export type { State }; -registerStore( STORE_NAME, { +registerStore< State >( STORE_NAME, { reducer, actions, controls, @@ -22,3 +25,12 @@ registerStore( STORE_NAME, { } ); export const PLUGINS_STORE_NAME = STORE_NAME; +declare module '@wordpress/data' { + // TODO: convert action.js to TS + function dispatch( + key: typeof STORE_NAME + ): DispatchFromMap< typeof actions >; + function select( + key: typeof STORE_NAME + ): SelectFromMap< typeof selectors > & WPDataSelectors; +} diff --git a/packages/js/data/src/plugins/reducer.ts b/packages/js/data/src/plugins/reducer.ts index 29758e89e4e..b51221cd3cd 100644 --- a/packages/js/data/src/plugins/reducer.ts +++ b/packages/js/data/src/plugins/reducer.ts @@ -2,6 +2,7 @@ * External dependencies */ import { concat } from 'lodash'; +import { Reducer } from 'redux'; /** * Internal dependencies @@ -10,8 +11,8 @@ import { ACTION_TYPES as TYPES } from './action-types'; import { Actions } from './actions'; import { PluginsState } from './types'; -const plugins = ( - state: PluginsState = { +const reducer: Reducer< PluginsState, Actions > = ( + state = { active: [], installed: [], requesting: {}, @@ -19,8 +20,8 @@ const plugins = ( jetpackConnectUrls: {}, recommended: {}, }, - payload?: Actions -): PluginsState => { + payload +) => { if ( payload && 'type' in payload ) { switch ( payload.type ) { case TYPES.UPDATE_ACTIVE_PLUGINS: @@ -122,4 +123,5 @@ const plugins = ( return state; }; -export default plugins; +export type State = ReturnType< typeof reducer >; +export default reducer; diff --git a/packages/js/data/src/plugins/test/reducer.ts b/packages/js/data/src/plugins/test/reducer.ts index 65ba5980313..627831f51bb 100644 --- a/packages/js/data/src/plugins/test/reducer.ts +++ b/packages/js/data/src/plugins/test/reducer.ts @@ -21,7 +21,7 @@ const defaultState: PluginsState = { describe( 'plugins reducer', () => { it( 'should return a default state', () => { - const state = reducer( undefined ); + const state = reducer( undefined, {} as Actions ); expect( state ).toEqual( defaultState ); expect( state ).not.toBe( defaultState ); } ); diff --git a/packages/js/data/src/plugins/with-plugins-hydration.tsx b/packages/js/data/src/plugins/with-plugins-hydration.tsx index 70620b35522..04dafd8cddc 100644 --- a/packages/js/data/src/plugins/with-plugins-hydration.tsx +++ b/packages/js/data/src/plugins/with-plugins-hydration.tsx @@ -2,15 +2,19 @@ * External dependencies */ import { createHigherOrderComponent } from '@wordpress/compose'; + import { useSelect } from '@wordpress/data'; import { createElement, useRef } from '@wordpress/element'; +import { SelectFromMap } from '@automattic/data-stores'; /** * Internal dependencies */ import { STORE_NAME } from './constants'; -import { WCDataSelector, WPDataActions } from '../'; +import { WPDataActions } from '../'; import * as actions from './actions'; +import * as selectors from './selectors'; +import { WPDataSelectors } from '../types'; type PluginHydrationData = { installedPlugins: string[]; @@ -18,15 +22,16 @@ type PluginHydrationData = { jetpackStatus?: { isActive: boolean }; }; export const withPluginsHydration = ( data: PluginHydrationData ) => - createHigherOrderComponent( - ( OriginalComponent: React.ComponentType ) => ( - props: Record< string, unknown > - ) => { + createHigherOrderComponent< Record< string, unknown > >( + ( OriginalComponent ) => ( props ) => { const dataRef = useRef( data ); useSelect( + // @ts-expect-error registry is not defined in the wp.data typings ( - select: WCDataSelector, + select: ( + key: typeof STORE_NAME + ) => SelectFromMap< typeof selectors > & WPDataSelectors, registry: { dispatch: ( store: string diff --git a/packages/js/data/src/user/use-user-preferences.ts b/packages/js/data/src/user/use-user-preferences.ts index f334bfcdae7..f675e3380e3 100644 --- a/packages/js/data/src/user/use-user-preferences.ts +++ b/packages/js/data/src/user/use-user-preferences.ts @@ -2,13 +2,8 @@ * External dependencies */ import { mapValues } from 'lodash'; -import { - useDispatch, - useSelect, - select as wpDataSelect, -} from '@wordpress/data'; -import schema, { Schema } from 'wordpress__core-data'; -import type { getEntityRecord } from 'wordpress__core-data/selectors'; +import { useDispatch, useSelect } from '@wordpress/data'; +import schema from '@wordpress/core-data'; /** * Internal dependencies @@ -43,7 +38,10 @@ type WoocommerceMeta = UserPreferences & { task_list_tracked_started_tasks?: string; }; -type WCUser = Schema.User & { +type WCUser = Pick< + schema.Schema.BaseUser< 'view' >, + schema.Schema.ViewKeys.User +> & { woocommerce_meta: WoocommerceMeta; }; @@ -155,15 +153,19 @@ export const useUserPreferences = () => { // Get our dispatch methods now - this can't happen inside the callback below. const dispatch = useDispatch( STORE_NAME ); const { addEntities, receiveCurrentUser, saveEntityRecord } = dispatch; + // @ts-expect-error WP 5.3.x doesn't have the User entity defined. let { saveUser } = dispatch; - const userData = useSelect( ( select: typeof wpDataSelect ) => { + const userData = useSelect( ( select ) => { const { getCurrentUser, getEntity, getEntityRecord, + // @ts-expect-error type definition is missing. getLastEntitySaveError, + // @ts-expect-error type definition is missing. hasStartedResolution, + // @ts-expect-error type definition is missing. hasFinishedResolution, } = select( STORE_NAME ); @@ -171,7 +173,7 @@ export const useUserPreferences = () => { isRequesting: hasStartedResolution( 'getCurrentUser' ) && ! hasFinishedResolution( 'getCurrentUser' ), - user: getCurrentUser(), + user: getCurrentUser() as WCUser, getCurrentUser, getEntity, getEntityRecord, @@ -184,7 +186,7 @@ export const useUserPreferences = () => { if ( typeof saveUser !== 'function' ) { // Polyfill saveUser() - wrapper of saveEntityRecord. saveUser = async ( userToSave: { - id: string; + id: number; woocommerce_meta: { [ key: string ]: boolean }; } ) => { const entityDefined = Boolean( @@ -214,7 +216,7 @@ export const useUserPreferences = () => { }; } // Get most recent user before update. - const currentUser = userData.getCurrentUser(); + const currentUser = userData.getCurrentUser() as WCUser; return updateUserPrefs( receiveCurrentUser, currentUser, diff --git a/packages/js/data/typings/index.d.ts b/packages/js/data/typings/index.d.ts index e51a93af6f7..43cc75885e6 100644 --- a/packages/js/data/typings/index.d.ts +++ b/packages/js/data/typings/index.d.ts @@ -1,3 +1,14 @@ -declare module '@wordpress/compose'; -declare module '@wordpress/data'; -declare module 'rememo'; +import { select, resolveSelect, dispatch } from '@wordpress/data'; +import { Entity } from '@wordpress/core-data'; + + +declare module '@wordpress/data' { + // TODO: update @wordpress/data types to include this. + const controls: { + select: select; + resolveSelect: resolveSelect; + dispatch: dispatch; + }; + + +} From 672ba17a807962d7eed0fb2597f3dc398d94d5cb Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 13:43:58 +0800 Subject: [PATCH 136/327] Fix and export @woocommerce/data types for react admin ./client Convert onboarding index.js to TS & add missing type fields --- packages/js/data/src/countries/types.ts | 1 + packages/js/data/src/index.ts | 1 + packages/js/data/src/onboarding/index.js | 25 ---------- packages/js/data/src/onboarding/index.ts | 38 +++++++++++++++ packages/js/data/src/onboarding/selectors.ts | 2 +- .../js/data/src/payment-gateways/actions.ts | 5 +- .../js/data/src/payment-gateways/index.ts | 12 +++++ .../src/payment-gateways/test-helpers/stub.ts | 46 +++++++++---------- .../js/data/src/payment-gateways/types.ts | 4 +- packages/js/data/typings/index.d.ts | 2 + 10 files changed, 84 insertions(+), 52 deletions(-) delete mode 100644 packages/js/data/src/onboarding/index.js create mode 100644 packages/js/data/src/onboarding/index.ts diff --git a/packages/js/data/src/countries/types.ts b/packages/js/data/src/countries/types.ts index 7d4ad4aa758..ae90b880a00 100644 --- a/packages/js/data/src/countries/types.ts +++ b/packages/js/data/src/countries/types.ts @@ -12,6 +12,7 @@ export type SettingProperties = { priority?: number; required?: boolean; type?: string; + hidden?: boolean; }; export type Locale = { diff --git a/packages/js/data/src/index.ts b/packages/js/data/src/index.ts index 1d9fbe86d29..29cf9b2a4b9 100644 --- a/packages/js/data/src/index.ts +++ b/packages/js/data/src/index.ts @@ -39,6 +39,7 @@ export { ONBOARDING_STORE_NAME } from './onboarding'; export { withOnboardingHydration } from './onboarding/with-onboarding-hydration'; export { getVisibleTasks } from './onboarding/utils'; export type { TaskType, TaskListType } from './onboarding/types'; +export type { Extension, ExtensionList } from './onboarding/selectors'; export { USER_STORE_NAME } from './user'; export { withCurrentUserHydration } from './user/with-current-user-hydration'; diff --git a/packages/js/data/src/onboarding/index.js b/packages/js/data/src/onboarding/index.js deleted file mode 100644 index 287263d2713..00000000000 --- a/packages/js/data/src/onboarding/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * External dependencies - */ - -import { registerStore } from '@wordpress/data'; -import { controls } from '@wordpress/data-controls'; - -/** - * Internal dependencies - */ -import { STORE_NAME } from './constants'; -import * as selectors from './selectors'; -import * as actions from './actions'; -import * as resolvers from './resolvers'; -import reducer from './reducer'; - -registerStore( STORE_NAME, { - reducer, - actions, - controls, - selectors, - resolvers, -} ); - -export const ONBOARDING_STORE_NAME = STORE_NAME; diff --git a/packages/js/data/src/onboarding/index.ts b/packages/js/data/src/onboarding/index.ts new file mode 100644 index 00000000000..d2b84f7afb3 --- /dev/null +++ b/packages/js/data/src/onboarding/index.ts @@ -0,0 +1,38 @@ +/** + * External dependencies + */ + +import { registerStore } from '@wordpress/data'; +import { controls } from '@wordpress/data-controls'; +import { SelectFromMap, DispatchFromMap } from '@automattic/data-stores'; +import { Reducer, AnyAction } from 'redux'; + +/** + * Internal dependencies + */ +import { STORE_NAME } from './constants'; +import * as selectors from './selectors'; +import * as actions from './actions'; +import * as resolvers from './resolvers'; +import reducer from './reducer'; +import { WPDataSelectors } from '../types'; + +registerStore( STORE_NAME, { + reducer: reducer as Reducer< ReturnType< Reducer >, AnyAction >, + actions, + controls, + selectors, + resolvers, +} ); + +export const ONBOARDING_STORE_NAME = STORE_NAME; + +export type OnboardingSelector = SelectFromMap< typeof selectors >; + +declare module '@wordpress/data' { + // TODO: convert action.js to TS + function dispatch( key: typeof STORE_NAME ): DispatchFromMap< AnyAction >; + function select( + key: typeof STORE_NAME + ): SelectFromMap< typeof selectors > & WPDataSelectors; +} diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index 2d8f2253cee..474e8bec5ed 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -204,5 +204,5 @@ export type Extension = { image_url: string; manage_url: string; name: string; - slug: string; + is_built_by_wc: boolean; }; diff --git a/packages/js/data/src/payment-gateways/actions.ts b/packages/js/data/src/payment-gateways/actions.ts index a9b6f2d97a7..8b51ec211a9 100644 --- a/packages/js/data/src/payment-gateways/actions.ts +++ b/packages/js/data/src/payment-gateways/actions.ts @@ -106,9 +106,12 @@ export function updatePaymentGatewayError( }; } +type DeepPartial< T > = { + [ P in keyof T ]?: DeepPartial< T[ P ] >; +}; export function* updatePaymentGateway( id: string, - data: Partial< PaymentGateway > + data: DeepPartial< PaymentGateway > ) { try { yield updatePaymentGatewayRequest(); diff --git a/packages/js/data/src/payment-gateways/index.ts b/packages/js/data/src/payment-gateways/index.ts index 8e9d743b6b0..609de07586d 100644 --- a/packages/js/data/src/payment-gateways/index.ts +++ b/packages/js/data/src/payment-gateways/index.ts @@ -3,6 +3,7 @@ */ import { registerStore } from '@wordpress/data'; import { controls } from '@wordpress/data-controls'; +import { SelectFromMap, DispatchFromMap } from '@automattic/data-stores'; /** * Internal dependencies @@ -12,6 +13,7 @@ import * as resolvers from './resolvers'; import * as selectors from './selectors'; import reducer from './reducer'; import { STORE_KEY } from './constants'; +import { WPDataActions } from '../types'; export const PAYMENT_GATEWAYS_STORE_NAME = STORE_KEY; @@ -22,3 +24,13 @@ registerStore( STORE_KEY, { controls, reducer, } ); + +declare module '@wordpress/data' { + // TODO: convert action.js to TS + function dispatch( + key: typeof STORE_KEY + ): DispatchFromMap< typeof actions >; + function select( + key: typeof STORE_KEY + ): SelectFromMap< typeof selectors > & WPDataActions; +} diff --git a/packages/js/data/src/payment-gateways/test-helpers/stub.ts b/packages/js/data/src/payment-gateways/test-helpers/stub.ts index 71a9a6d3629..32fb4d6b8f2 100644 --- a/packages/js/data/src/payment-gateways/test-helpers/stub.ts +++ b/packages/js/data/src/payment-gateways/test-helpers/stub.ts @@ -14,19 +14,18 @@ export const paymentGatewaysStub: PaymentGateway[] = [ method_description: 'method description', method_supports: [ 'products' ], settings: { - title: { - id: 'title', - label: 'Title', - description: - 'This controls the title which the user sees during checkout.', - type: 'text', - value: 'direct bank', - default: 'Direct bank transfer', - tip: - 'This controls the title which the user sees during checkout.', - placeholder: '', - }, + id: 'title', + label: 'Title', + description: + 'This controls the title which the user sees during checkout.', + type: 'text', + value: 'direct bank', + default: 'Direct bank transfer', + tip: 'This controls the title which the user sees during checkout.', + placeholder: '', + is_dismissed: 'no', }, + settings_url: '', }, { id: 'test', @@ -38,18 +37,17 @@ export const paymentGatewaysStub: PaymentGateway[] = [ method_description: 'method description', method_supports: [ 'products' ], settings: { - title: { - id: 'title', - label: 'Title', - description: - 'This controls the title which the user sees during checkout.', - type: 'text', - value: 'direct bank', - default: 'Direct bank transfer', - tip: - 'This controls the title which the user sees during checkout.', - placeholder: '', - }, + id: 'title', + label: 'Title', + description: + 'This controls the title which the user sees during checkout.', + type: 'text', + value: 'direct bank', + default: 'Direct bank transfer', + tip: 'This controls the title which the user sees during checkout.', + placeholder: '', + is_dismissed: 'no', }, + settings_url: '', }, ]; diff --git a/packages/js/data/src/payment-gateways/types.ts b/packages/js/data/src/payment-gateways/types.ts index d8017aabfe8..17c23c966a0 100644 --- a/packages/js/data/src/payment-gateways/types.ts +++ b/packages/js/data/src/payment-gateways/types.ts @@ -12,6 +12,7 @@ export type SettingDefinition = { tip: string; type: string; value: string; + is_dismissed: string; }; export type PaymentGateway = { @@ -23,7 +24,8 @@ export type PaymentGateway = { method_title: string; method_description: string; method_supports: string[]; - settings: Record< string, SettingDefinition >; + settings: SettingDefinition; + settings_url: string; }; export type PluginsState = { diff --git a/packages/js/data/typings/index.d.ts b/packages/js/data/typings/index.d.ts index 43cc75885e6..b64ef32d445 100644 --- a/packages/js/data/typings/index.d.ts +++ b/packages/js/data/typings/index.d.ts @@ -12,3 +12,5 @@ declare module '@wordpress/data' { } + +declare module 'rememo'; From d94c1dc7bd0a7c6c7512dda3e4abed9b320ea3b8 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 13:49:11 +0800 Subject: [PATCH 137/327] Remove unnecessary wpDataselect & WCDataSelector types from react client --- .../settings/general/store-address.tsx | 8 ++-- .../client/homescreen/index.tsx | 1 - .../client/payments-welcome/index.tsx | 8 +--- .../payments/payment-recommendations.tsx | 3 +- .../dismissable-list.tsx | 8 +--- .../recommendations-eligibility-wrapper.tsx | 26 +++++------ .../shipping/shipping-recommendations.tsx | 8 +--- .../shipping/woocommerce-services-item.tsx | 11 ++--- .../progress-header/progress-header.tsx | 8 +--- .../client/tasks/deprecated-tasks.tsx | 24 ++++------ .../client/tasks/fills/Marketing/index.tsx | 8 +--- .../fills/tax/components/store-location.tsx | 24 +++++----- .../client/tasks/fills/tax/index.tsx | 3 +- .../tax/manual-configuration/configure.tsx | 2 +- .../tasks/fills/tax/woocommerce-tax/index.tsx | 8 +--- .../fills/tax/woocommerce-tax/plugins.tsx | 42 ++++++++---------- .../tasks/fills/tax/woocommerce-tax/setup.tsx | 44 +++++++++---------- .../tasks/reminder-bar/reminder-bar.tsx | 8 +--- .../client/tasks/task-list.tsx | 3 +- .../woocommerce-admin/client/tasks/tasks.tsx | 19 ++++---- .../client/two-column-tasks/extended-task.tsx | 3 +- .../two-column-tasks/sectioned-task-list.tsx | 3 +- .../client/two-column-tasks/task-list.tsx | 3 +- .../payment-promotion-row.tsx | 43 ++++++++---------- 24 files changed, 125 insertions(+), 193 deletions(-) diff --git a/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx b/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx index 1187d102815..6c417b3048c 100644 --- a/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx +++ b/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx @@ -8,7 +8,7 @@ import { escapeRegExp, has } from 'lodash'; import { useEffect, useMemo, useState, useRef } from '@wordpress/element'; import { SelectControl, TextControl } from '@woocommerce/components'; import { Spinner } from '@wordpress/components'; -import { useSelect, select as wpDataSelect } from '@wordpress/data'; +import { useSelect } from '@wordpress/data'; /** * Internal dependencies @@ -28,8 +28,8 @@ type Option = { key: string; label: string }; /** * Type guard to ensure that the specified locale object has a .required property * - * @param fieldName field of Locale - * @param locale unknown object to be checked + * @param fieldName field of Locale + * @param locale unknown object to be checked * @return Boolean indicating if locale has a .required property */ const isLocaleRecord = ( @@ -353,7 +353,7 @@ export function StoreAddress( { hasFinishedResolution, countries, loadingCountries, - } = useSelect( ( select: typeof wpDataSelect ) => { + } = useSelect( ( select ) => { const { getLocale, getCountries, diff --git a/plugins/woocommerce-admin/client/homescreen/index.tsx b/plugins/woocommerce-admin/client/homescreen/index.tsx index 0aee584f40d..0021ee35a21 100644 --- a/plugins/woocommerce-admin/client/homescreen/index.tsx +++ b/plugins/woocommerce-admin/client/homescreen/index.tsx @@ -7,7 +7,6 @@ import { identity } from 'lodash'; import { ONBOARDING_STORE_NAME, withOnboardingHydration, - WCDataSelector, } from '@woocommerce/data'; import { getHistory, getNewPath } from '@woocommerce/navigation'; import type { History } from 'history'; diff --git a/plugins/woocommerce-admin/client/payments-welcome/index.tsx b/plugins/woocommerce-admin/client/payments-welcome/index.tsx index df9877dc57b..1e44ed258fa 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/index.tsx +++ b/plugins/woocommerce-admin/client/payments-welcome/index.tsx @@ -10,11 +10,7 @@ import { } from '@wordpress/components'; import { useState, useEffect } from '@wordpress/element'; import { recordEvent } from '@woocommerce/tracks'; -import { - useDispatch, - useSelect, - select as wpDataSelect, -} from '@wordpress/data'; +import { useDispatch, useSelect } from '@wordpress/data'; import { OPTIONS_STORE_NAME, PluginsStoreActions } from '@woocommerce/data'; import apiFetch from '@wordpress/api-fetch'; @@ -228,7 +224,7 @@ const ConnectAccountPage = () => { const [ errorMessage, setErrorMessage ] = useState( '' ); const { isJetpackConnected, connectUrl, hasViewedWelcomePage } = useSelect( - ( select: typeof wpDataSelect ) => { + ( select ) => { const { getOption } = select( OPTIONS_STORE_NAME ); let pageViewTimestamp = getOption( 'wc_pay_welcome_page_viewed_timestamp' diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx index a80b0ae4e6e..d5b1a8369dc 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx @@ -13,7 +13,6 @@ import { PAYMENT_GATEWAYS_STORE_NAME, PLUGINS_STORE_NAME, Plugin, - WCDataSelector, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import ExternalIcon from 'gridicons/dist/external'; @@ -50,7 +49,7 @@ const PaymentRecommendations: React.FC = () => { paymentGatewaySuggestions, isResolving, } = useSelect( - ( select: WCDataSelector ) => { + ( select ) => { const installingGatewayId = isInstalled && getPluginSlug( installingPlugin ); return { diff --git a/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx b/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx index ed5cecdcf79..e23cadda3ec 100644 --- a/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx +++ b/plugins/woocommerce-admin/client/settings-recommendations/dismissable-list.tsx @@ -1,11 +1,7 @@ /** * External dependencies */ -import { - useDispatch, - useSelect, - select as wpDataSelect, -} from '@wordpress/data'; +import { useDispatch, useSelect } from '@wordpress/data'; import { Button, Card, CardHeader } from '@wordpress/components'; import { OPTIONS_STORE_NAME } from '@woocommerce/data'; import { EllipsisMenu } from '@woocommerce/components'; @@ -59,7 +55,7 @@ export const DismissableList: React.FC< { dismissOptionName: string; className?: string; } > = ( { children, className, dismissOptionName } ) => { - const isVisible = useSelect( ( select: typeof wpDataSelect ) => { + const isVisible = useSelect( ( select ) => { const { getOption, hasFinishedResolution } = select( OPTIONS_STORE_NAME ); diff --git a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx index 49754b9fe11..d9bd2775664 100644 --- a/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx +++ b/plugins/woocommerce-admin/client/settings-recommendations/recommendations-eligibility-wrapper.tsx @@ -1,7 +1,7 @@ /** * External dependencies */ -import { useSelect, select as wpDataSelect } from '@wordpress/data'; +import { useSelect } from '@wordpress/data'; import { useUser, OPTIONS_STORE_NAME } from '@woocommerce/data'; const SHOW_MARKETPLACE_SUGGESTION_OPTION = @@ -10,21 +10,19 @@ const SHOW_MARKETPLACE_SUGGESTION_OPTION = const RecommendationsEligibilityWrapper: React.FC = ( { children } ) => { const { currentUserCan } = useUser(); - const isMarketplaceSuggestionsEnabled = useSelect( - ( select: typeof wpDataSelect ) => { - const { getOption, hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ); + const isMarketplaceSuggestionsEnabled = useSelect( ( select ) => { + const { getOption, hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ); - const hasFinishedResolving = hasFinishedResolution( 'getOption', [ - SHOW_MARKETPLACE_SUGGESTION_OPTION, - ] ); - const canShowMarketplaceSuggestions = - getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) !== 'no'; + const hasFinishedResolving = hasFinishedResolution( 'getOption', [ + SHOW_MARKETPLACE_SUGGESTION_OPTION, + ] ); + const canShowMarketplaceSuggestions = + getOption( SHOW_MARKETPLACE_SUGGESTION_OPTION ) !== 'no'; - return hasFinishedResolving && canShowMarketplaceSuggestions; - } - ); + return hasFinishedResolving && canShowMarketplaceSuggestions; + } ); if ( ! currentUserCan( 'install_plugins' ) ) { return null; diff --git a/plugins/woocommerce-admin/client/shipping/shipping-recommendations.tsx b/plugins/woocommerce-admin/client/shipping/shipping-recommendations.tsx index 510863ed46b..7968e46ad03 100644 --- a/plugins/woocommerce-admin/client/shipping/shipping-recommendations.tsx +++ b/plugins/woocommerce-admin/client/shipping/shipping-recommendations.tsx @@ -2,11 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { - useSelect, - useDispatch, - select as wpDataSelect, -} from '@wordpress/data'; +import { useSelect, useDispatch } from '@wordpress/data'; import { useState, Children } from '@wordpress/element'; import { Text } from '@woocommerce/experimental'; import { PLUGINS_STORE_NAME } from '@woocommerce/data'; @@ -103,7 +99,7 @@ const ShippingRecommendationsList: React.FC = ( { children } ) => ( const ShippingRecommendations: React.FC = () => { const [ pluginsBeingSetup, setupPlugin ] = useInstallPlugin(); - const activePlugins = useSelect( ( select: typeof wpDataSelect ) => + const activePlugins = useSelect( ( select ) => select( PLUGINS_STORE_NAME ).getActivePlugins() ); diff --git a/plugins/woocommerce-admin/client/shipping/woocommerce-services-item.tsx b/plugins/woocommerce-admin/client/shipping/woocommerce-services-item.tsx index 24410d9b79c..227fde0a691 100644 --- a/plugins/woocommerce-admin/client/shipping/woocommerce-services-item.tsx +++ b/plugins/woocommerce-admin/client/shipping/woocommerce-services-item.tsx @@ -2,11 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { - useSelect, - useDispatch, - select as wpDataSelect, -} from '@wordpress/data'; +import { useSelect, useDispatch } from '@wordpress/data'; import { Button, ExternalLink } from '@wordpress/components'; import { Pill } from '@woocommerce/components'; import { PLUGINS_STORE_NAME } from '@woocommerce/data'; @@ -26,9 +22,8 @@ const WooCommerceServicesItem: React.FC< { const wcAdminAssetUrl = getAdminSetting( 'wcAdminAssetUrl', '' ); const { createSuccessNotice } = useDispatch( 'core/notices' ); - const isSiteConnectedToJetpack = useSelect( - ( select: typeof wpDataSelect ) => - select( PLUGINS_STORE_NAME ).isJetpackConnected() + const isSiteConnectedToJetpack = useSelect( ( select ) => + select( PLUGINS_STORE_NAME ).isJetpackConnected() ); const handleSetupClick = () => { diff --git a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx index 6e576a8986e..a80319ecc40 100644 --- a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx +++ b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx @@ -4,11 +4,7 @@ import { __, sprintf } from '@wordpress/i18n'; import { useMemo } from '@wordpress/element'; import { useSelect } from '@wordpress/data'; -import { - getVisibleTasks, - ONBOARDING_STORE_NAME, - WCDataSelector, -} from '@woocommerce/data'; +import { getVisibleTasks, ONBOARDING_STORE_NAME } from '@woocommerce/data'; import { getSetting } from '@woocommerce/settings'; /** @@ -30,7 +26,7 @@ export const ProgressHeader: React.FC< ProgressHeaderProps > = ( { completedCount, hasVisitedTasks, disabledCompletedCount, - } = useSelect( ( select: WCDataSelector ) => { + } = useSelect( ( select ) => { const taskList = select( ONBOARDING_STORE_NAME ).getTaskList( taskListId ); diff --git a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx index 0d9bd6f0bbc..c1d5f951c63 100644 --- a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx @@ -4,11 +4,7 @@ import { registerPlugin } from '@wordpress/plugins'; import { WooOnboardingTask } from '@woocommerce/onboarding'; import { useSelect } from '@wordpress/data'; -import { - ONBOARDING_STORE_NAME, - TaskType, - WCDataSelector, -} from '@woocommerce/data'; +import { ONBOARDING_STORE_NAME, TaskType } from '@woocommerce/data'; import { useEffect, useState } from '@wordpress/element'; type DeprecatedTask = TaskType & { @@ -19,16 +15,14 @@ const DeprecatedWooOnboardingTaskFills = () => { const [ deprecatedTasks, setDeprecatedTasks ] = useState< DeprecatedTask[] >( [] ); - const { isResolving, taskLists } = useSelect( - ( select: WCDataSelector ) => { - return { - isResolving: select( ONBOARDING_STORE_NAME ).isResolving( - 'getTaskLists' - ), - taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), - }; - } - ); + const { isResolving, taskLists } = useSelect( ( select ) => { + return { + isResolving: select( ONBOARDING_STORE_NAME ).isResolving( + 'getTaskLists' + ), + taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), + }; + } ); useEffect( () => { if ( taskLists && taskLists.length > 0 ) { diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx index 80895f31f7b..3b5e8f2b055 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx @@ -3,11 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { Card, CardHeader, Spinner } from '@wordpress/components'; -import { - ONBOARDING_STORE_NAME, - PLUGINS_STORE_NAME, - WCDataSelector, -} from '@woocommerce/data'; +import { ONBOARDING_STORE_NAME, PLUGINS_STORE_NAME } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { Text } from '@woocommerce/experimental'; import { useMemo, useState } from '@wordpress/element'; @@ -122,7 +118,7 @@ const Marketing: React.FC< MarketingProps > = ( { onComplete } ) => { freeExtensions, installedPlugins, isResolving, - } = useSelect( ( select: WCDataSelector ) => { + } = useSelect( ( select ) => { const { getActivePlugins, getInstalledPlugins } = select( PLUGINS_STORE_NAME ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx index 3aefbdaf1f2..018cf9f53bc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/components/store-location.tsx @@ -21,20 +21,18 @@ export const StoreLocation: React.FC< { const { updateAndPersistSettingsForGroup } = useDispatch( SETTINGS_STORE_NAME ); - const { generalSettings, isResolving } = useSelect( - ( select: WCDataSelector ) => { - const { getSettings, hasFinishedResolution } = select( - SETTINGS_STORE_NAME - ) as SettingsSelector; + const { generalSettings, isResolving } = useSelect( ( select ) => { + const { getSettings, hasFinishedResolution } = select( + SETTINGS_STORE_NAME + ) as SettingsSelector; - return { - generalSettings: getSettings( 'general' )?.general, - isResolving: ! hasFinishedResolution( 'getSettings', [ - 'general', - ] ), - }; - } - ); + return { + generalSettings: getSettings( 'general' )?.general, + isResolving: ! hasFinishedResolution( 'getSettings', [ + 'general', + ] ), + }; + } ); useEffect( () => { if ( isResolving || ! hasCompleteAddress( generalSettings ) ) { diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx index 864978bea9b..b9bd668e45a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx @@ -8,7 +8,6 @@ import { getAdminLink } from '@woocommerce/settings'; import { OPTIONS_STORE_NAME, SETTINGS_STORE_NAME, - WCDataSelector, TaskType, } from '@woocommerce/data'; import { queueRecordEvent, recordEvent } from '@woocommerce/tracks'; @@ -60,7 +59,7 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { SETTINGS_STORE_NAME ); const { generalSettings, isResolving, taxSettings } = useSelect( - ( select: WCDataSelector ) => { + ( select ) => { const { getSettings, hasFinishedResolution } = select( SETTINGS_STORE_NAME ) as SettingsSelector; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx index a5a8e99d0dc..f65c6e1dc40 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/manual-configuration/configure.tsx @@ -17,7 +17,7 @@ import { SettingsSelector, TaxChildProps } from '../utils'; export const Configure: React.FC< Pick< TaxChildProps, 'isPending' | 'onManual' > > = ( { isPending, onManual } ) => { - const { generalSettings } = useSelect( ( select: WCDataSelector ) => { + const { generalSettings } = useSelect( ( select ) => { const { getSettings } = select( SETTINGS_STORE_NAME ) as SettingsSelector; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/index.tsx index db9c1ae137a..45b57eb9e79 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/index.tsx @@ -5,11 +5,7 @@ import { __ } from '@wordpress/i18n'; import { difference } from 'lodash'; import { useSelect } from '@wordpress/data'; import { Spinner } from '@woocommerce/components'; -import { - PLUGINS_STORE_NAME, - SETTINGS_STORE_NAME, - WCDataSelector, -} from '@woocommerce/data'; +import { PLUGINS_STORE_NAME, SETTINGS_STORE_NAME } from '@woocommerce/data'; /** * Internal dependencies @@ -34,7 +30,7 @@ export const WooCommerceTax: React.FC< TaxChildProps > = ( { isJetpackConnected, isResolving, pluginsToActivate, - } = useSelect( ( select: WCDataSelector ) => { + } = useSelect( ( select ) => { const { getSettings } = select( SETTINGS_STORE_NAME ) as SettingsSelector; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx index 4f8b3fa5a25..a1c87422228 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx @@ -7,11 +7,7 @@ import { Link, Plugins as PluginInstaller } from '@woocommerce/components'; import { OPTIONS_STORE_NAME, InstallPluginsResponse } from '@woocommerce/data'; import { recordEvent, queueRecordEvent } from '@woocommerce/tracks'; import { Text } from '@woocommerce/experimental'; -import { - useDispatch, - useSelect, - select as wpDataSelect, -} from '@wordpress/data'; +import { useDispatch, useSelect } from '@wordpress/data'; import { useEffect } from '@wordpress/element'; /** @@ -27,26 +23,24 @@ export const Plugins: React.FC< SetupStepProps > = ( { pluginsToActivate, } ) => { const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); - const { isResolving, tosAccepted } = useSelect( - ( select: typeof wpDataSelect ) => { - const { getOption, hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ); + const { isResolving, tosAccepted } = useSelect( ( select ) => { + const { getOption, hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ); - return { - isResolving: - ! hasFinishedResolution( 'getOption', [ - 'woocommerce_setup_jetpack_opted_in', - ] ) || - ! hasFinishedResolution( 'getOption', [ - 'wc_connect_options', - ] ), - tosAccepted: - getOption( 'wc_connect_options' )?.tos_accepted || - getOption( 'woocommerce_setup_jetpack_opted_in' ) === '1', - }; - } - ); + return { + isResolving: + ! hasFinishedResolution( 'getOption', [ + 'woocommerce_setup_jetpack_opted_in', + ] ) || + ! hasFinishedResolution( 'getOption', [ + 'wc_connect_options', + ] ), + tosAccepted: + getOption( 'wc_connect_options' )?.tos_accepted || + getOption( 'woocommerce_setup_jetpack_opted_in' ) === '1', + }; + } ); useEffect( () => { if ( ! tosAccepted || pluginsToActivate.length ) { diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx index dee6836c9a7..31ed782919e 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/setup.tsx @@ -10,7 +10,7 @@ import { PLUGINS_STORE_NAME, SETTINGS_STORE_NAME, } from '@woocommerce/data'; -import { useSelect, select as wpDataSelect } from '@wordpress/data'; +import { useSelect } from '@wordpress/data'; /** * Internal dependencies @@ -47,29 +47,27 @@ export const Setup: React.FC< SetupProps > = ( { const [ pluginsToActivate, setPluginsToActivate ] = useState< string[] >( [] ); - const { activePlugins, isResolving } = useSelect( - ( select: typeof wpDataSelect ) => { - const { getSettings } = select( - SETTINGS_STORE_NAME - ) as SettingsSelector; - const { hasFinishedResolution } = select( - OPTIONS_STORE_NAME - ) as SettingsSelector; - const { getActivePlugins } = select( PLUGINS_STORE_NAME ); + const { activePlugins, isResolving } = useSelect( ( select ) => { + const { getSettings } = select( + SETTINGS_STORE_NAME + ) as SettingsSelector; + const { hasFinishedResolution } = select( + OPTIONS_STORE_NAME + ) as SettingsSelector; + const { getActivePlugins } = select( PLUGINS_STORE_NAME ); - return { - activePlugins: getActivePlugins(), - generalSettings: getSettings( 'general' )?.general, - isResolving: - ! hasFinishedResolution( 'getOption', [ - 'woocommerce_setup_jetpack_opted_in', - ] ) || - ! hasFinishedResolution( 'getOption', [ - 'wc_connect_options', - ] ), - }; - } - ); + return { + activePlugins: getActivePlugins(), + generalSettings: getSettings( 'general' )?.general, + isResolving: + ! hasFinishedResolution( 'getOption', [ + 'woocommerce_setup_jetpack_opted_in', + ] ) || + ! hasFinishedResolution( 'getOption', [ + 'wc_connect_options', + ] ), + }; + } ); const [ stepIndex, setStepIndex ] = useState( 0 ); useEffect( () => { diff --git a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx index 021992095b9..ea1f225492e 100644 --- a/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx +++ b/plugins/woocommerce-admin/client/tasks/reminder-bar/reminder-bar.tsx @@ -2,11 +2,7 @@ * External dependencies */ import { __, sprintf } from '@wordpress/i18n'; -import { - useSelect, - useDispatch, - select as wpDataSelect, -} from '@wordpress/data'; +import { useSelect, useDispatch } from '@wordpress/data'; import { ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME, @@ -98,7 +94,7 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { taskListComplete, reminderBarHidden, completedTasksCount, - } = useSelect( ( select: typeof wpDataSelect ) => { + } = useSelect( ( select ) => { const { getTaskList, hasFinishedResolution: onboardingHasFinishedResolution, diff --git a/plugins/woocommerce-admin/client/tasks/task-list.tsx b/plugins/woocommerce-admin/client/tasks/task-list.tsx index eeb139438dd..c35fa4a0386 100644 --- a/plugins/woocommerce-admin/client/tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/tasks/task-list.tsx @@ -10,7 +10,6 @@ import { getVisibleTasks, ONBOARDING_STORE_NAME, TaskListType, - WCDataSelector, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { Text, List, CollapsibleList } from '@woocommerce/experimental'; @@ -39,7 +38,7 @@ export const TaskList: React.FC< TaskListProps > = ( { displayProgressHeader = false, query, } ) => { - const { profileItems } = useSelect( ( select: WCDataSelector ) => { + const { profileItems } = useSelect( ( select ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { diff --git a/plugins/woocommerce-admin/client/tasks/tasks.tsx b/plugins/woocommerce-admin/client/tasks/tasks.tsx index 60cf139abdf..19857b9a4db 100644 --- a/plugins/woocommerce-admin/client/tasks/tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/tasks.tsx @@ -9,7 +9,6 @@ import { useDispatch, useSelect } from '@wordpress/data'; import { ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME, - WCDataSelector, TaskListType, TaskType, } from '@woocommerce/data'; @@ -67,16 +66,14 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { 'woocommerce_tasklist_progression' ); - const { isResolving, taskLists } = useSelect( - ( select: WCDataSelector ) => { - return { - isResolving: ! select( - ONBOARDING_STORE_NAME - ).hasFinishedResolution( 'getTaskLists' ), - taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), - }; - } - ); + const { isResolving, taskLists } = useSelect( ( select ) => { + return { + isResolving: ! select( + ONBOARDING_STORE_NAME + ).hasFinishedResolution( 'getTaskLists' ), + taskLists: select( ONBOARDING_STORE_NAME ).getTaskLists(), + }; + } ); const getCurrentTask = () => { if ( ! task ) { diff --git a/plugins/woocommerce-admin/client/two-column-tasks/extended-task.tsx b/plugins/woocommerce-admin/client/two-column-tasks/extended-task.tsx index 2e5db17c728..dd0bc2df026 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/extended-task.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/extended-task.tsx @@ -9,7 +9,6 @@ import { useDispatch, useSelect } from '@wordpress/data'; import { ONBOARDING_STORE_NAME, OPTIONS_STORE_NAME, - WCDataSelector, TaskListType, TaskType, } from '@woocommerce/data'; @@ -38,7 +37,7 @@ const ExtendedTask: React.FC< TasksProps > = ( { query } ) => { }: { isResolving: boolean; taskLists: TaskListType[]; - } = useSelect( ( select: WCDataSelector ) => { + } = useSelect( ( select ) => { return { isResolving: select( ONBOARDING_STORE_NAME ).isResolving( 'getTaskListsByIds' diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx index bf349643805..0e70b47c7c9 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.tsx @@ -9,7 +9,6 @@ import { OPTIONS_STORE_NAME, ONBOARDING_STORE_NAME, getVisibleTasks, - WCDataSelector, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { List } from '@woocommerce/experimental'; @@ -43,7 +42,7 @@ export const SectionedTaskList: React.FC< TaskListProps > = ( { displayProgressHeader, } ) => { const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); - const { profileItems } = useSelect( ( select: WCDataSelector ) => { + const { profileItems } = useSelect( ( select ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { profileItems: getProfileItems(), diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx index c003f231c2c..f75ece78ecb 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx @@ -17,7 +17,6 @@ import { TaskType, useUserPreferences, getVisibleTasks, - WCDataSelector, TaskListType, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; @@ -56,7 +55,7 @@ export const TaskList: React.FC< TaskListProps > = ( { const { updateOptions, dismissTask, undoDismissTask } = useDispatch( OPTIONS_STORE_NAME ); - const { profileItems } = useSelect( ( select: WCDataSelector ) => { + const { profileItems } = useSelect( ( select ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { profileItems: getProfileItems(), diff --git a/plugins/woocommerce-admin/client/wp-admin-scripts/payment-method-promotions/payment-promotion-row.tsx b/plugins/woocommerce-admin/client/wp-admin-scripts/payment-method-promotions/payment-promotion-row.tsx index baee5e0f825..5858cdff169 100644 --- a/plugins/woocommerce-admin/client/wp-admin-scripts/payment-method-promotions/payment-promotion-row.tsx +++ b/plugins/woocommerce-admin/client/wp-admin-scripts/payment-method-promotions/payment-promotion-row.tsx @@ -10,11 +10,7 @@ import { PluginsStoreActions, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; -import { - useDispatch, - useSelect, - select as wpDataSelect, -} from '@wordpress/data'; +import { useDispatch, useSelect } from '@wordpress/data'; import { sanitize } from 'dompurify'; import { __ } from '@wordpress/i18n'; @@ -59,27 +55,24 @@ export const PaymentPromotionRow: React.FC< PaymentPromotionRowProps > = ( { const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME ); const { createNotice } = useDispatch( 'core/notices' ); const { updatePaymentGateway } = useDispatch( PAYMENT_GATEWAYS_STORE_NAME ); - const { gatewayIsActive, paymentGateway } = useSelect( - ( select: typeof wpDataSelect ) => { - const { getPaymentGateway } = select( PAYMENT_GATEWAYS_STORE_NAME ); - const activePlugins: string[] = select( - PLUGINS_STORE_NAME - ).getActivePlugins(); - const isActive = - activePlugins && activePlugins.includes( pluginSlug ); - let paymentGatewayData; - if ( isActive ) { - paymentGatewayData = getPaymentGateway( - pluginSlug.replace( /\-/g, '_' ) - ); - } - - return { - gatewayIsActive: isActive, - paymentGateway: paymentGatewayData, - }; + const { gatewayIsActive, paymentGateway } = useSelect( ( select ) => { + const { getPaymentGateway } = select( PAYMENT_GATEWAYS_STORE_NAME ); + const activePlugins: string[] = select( + PLUGINS_STORE_NAME + ).getActivePlugins(); + const isActive = activePlugins && activePlugins.includes( pluginSlug ); + let paymentGatewayData; + if ( isActive ) { + paymentGatewayData = getPaymentGateway( + pluginSlug.replace( /\-/g, '_' ) + ); } - ); + + return { + gatewayIsActive: isActive, + paymentGateway: paymentGatewayData, + }; + } ); useEffect( () => { if ( From 678e893f60845385e9b0cbe245379aa29e6e7590 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 14:16:39 +0800 Subject: [PATCH 138/327] Fix react admin ./client types after updating @woocommerce/data types --- .../settings/general/store-address.tsx | 11 +- .../client/dashboard/utils.js | 2 +- .../client/homescreen/index.tsx | 2 + .../client/payments-welcome/index.tsx | 11 +- .../client/tasks/deprecated-tasks.tsx | 12 ++- .../client/tasks/fills/Marketing/index.tsx | 24 ++--- .../tasks/fills/Marketing/test/index.tsx | 11 +- .../client/tasks/fills/tax/index.tsx | 2 + .../client/tasks/fills/tax/utils.ts | 8 +- .../fills/tax/woocommerce-tax/connect.tsx | 1 + .../fills/tax/woocommerce-tax/plugins.tsx | 4 +- .../tasks/reminder-bar/reminder-bar.tsx | 17 +-- .../woocommerce-admin/client/tasks/tasks.tsx | 101 ++++++++++-------- 13 files changed, 113 insertions(+), 93 deletions(-) diff --git a/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx b/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx index 6c417b3048c..8a3c8d3d78e 100644 --- a/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx +++ b/plugins/woocommerce-admin/client/dashboard/components/settings/general/store-address.tsx @@ -376,6 +376,10 @@ export function StoreAddress( { setValue ); + const isLocaleKey = ( key: string ): key is keyof typeof locale => { + return locale.hasOwnProperty( key ); + }; + useEffect( () => { if ( locale ) { storeAddressFields.forEach( ( field ) => { @@ -383,7 +387,12 @@ export function StoreAddress( { .replace( /(address)Line([0-9])/, '$1$2' ) .toLowerCase(); const props = getInputProps( field ); - if ( locale[ fieldKey ]?.hidden && props.value?.length > 0 ) { + + if ( + isLocaleKey( fieldKey ) && + locale[ fieldKey ]?.hidden && + props.value?.length > 0 + ) { // Clear hidden field. setValue( field, '' ); } diff --git a/plugins/woocommerce-admin/client/dashboard/utils.js b/plugins/woocommerce-admin/client/dashboard/utils.js index d1ba7bd588a..62bdfc920ab 100644 --- a/plugins/woocommerce-admin/client/dashboard/utils.js +++ b/plugins/woocommerce-admin/client/dashboard/utils.js @@ -16,7 +16,7 @@ import { getAdminSetting } from '~/utils/admin-settings'; * @return {string} Country string. */ -export function getCountryCode( countryState ) { +export function getCountryCode( countryState = '' ) { if ( ! countryState ) { return null; } diff --git a/plugins/woocommerce-admin/client/homescreen/index.tsx b/plugins/woocommerce-admin/client/homescreen/index.tsx index 0021ee35a21..03e92ff557e 100644 --- a/plugins/woocommerce-admin/client/homescreen/index.tsx +++ b/plugins/woocommerce-admin/client/homescreen/index.tsx @@ -7,6 +7,7 @@ import { identity } from 'lodash'; import { ONBOARDING_STORE_NAME, withOnboardingHydration, + WCDataSelector, } from '@woocommerce/data'; import { getHistory, getNewPath } from '@woocommerce/navigation'; import type { History } from 'history'; @@ -35,6 +36,7 @@ const Homescreen = ( { ); } + // @ts-expect-error Layout is a pure JS component return ; }; diff --git a/plugins/woocommerce-admin/client/payments-welcome/index.tsx b/plugins/woocommerce-admin/client/payments-welcome/index.tsx index 1e44ed258fa..8494d88919d 100644 --- a/plugins/woocommerce-admin/client/payments-welcome/index.tsx +++ b/plugins/woocommerce-admin/client/payments-welcome/index.tsx @@ -110,7 +110,7 @@ const ConnectPageOnboarding = ( { setErrorMessage, connectUrl, }: { - isJetpackConnected: string; + isJetpackConnected?: boolean; installAndActivatePlugins: PluginsStoreActions[ 'installAndActivatePlugins' ]; // eslint-disable-next-line @typescript-eslint/ban-types setErrorMessage: Function; @@ -268,18 +268,15 @@ const ConnectAccountPage = () => { }, [ hasViewedWelcomePage ] ); const { installAndActivatePlugins } = useDispatch( 'wc/admin/plugins' ); - const onboardingProps = { - isJetpackConnected, - installAndActivatePlugins, - connectUrl, - }; return (
diff --git a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx index c1d5f951c63..3454911e537 100644 --- a/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/deprecated-tasks.tsx @@ -8,7 +8,8 @@ import { ONBOARDING_STORE_NAME, TaskType } from '@woocommerce/data'; import { useEffect, useState } from '@wordpress/element'; type DeprecatedTask = TaskType & { - container: React.ReactNode; + container?: React.ReactNode; + isDeprecated?: boolean; }; const DeprecatedWooOnboardingTaskFills = () => { @@ -29,12 +30,17 @@ const DeprecatedWooOnboardingTaskFills = () => { const deprecatedTasksWithContainer = []; for ( const tasklist of taskLists ) { for ( const task of tasklist.tasks ) { - if ( task.isDeprecated && task.container ) { + if ( + ( task as DeprecatedTask ).isDeprecated && + ( task as DeprecatedTask ).container + ) { deprecatedTasksWithContainer.push( task ); } } } - setDeprecatedTasks( deprecatedTasksWithContainer ); + setDeprecatedTasks( + deprecatedTasksWithContainer as DeprecatedTask[] + ); } }, [ taskLists ] ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx index 3b5e8f2b055..196d43c2cac 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/index.tsx @@ -3,7 +3,12 @@ */ import { __ } from '@wordpress/i18n'; import { Card, CardHeader, Spinner } from '@wordpress/components'; -import { ONBOARDING_STORE_NAME, PLUGINS_STORE_NAME } from '@woocommerce/data'; +import { + ONBOARDING_STORE_NAME, + PLUGINS_STORE_NAME, + Extension, + ExtensionList, +} from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { Text } from '@woocommerce/experimental'; import { useMemo, useState } from '@wordpress/element'; @@ -22,21 +27,6 @@ import { getPluginSlug } from '../../../utils'; const ALLOWED_PLUGIN_LISTS = [ 'task-list/reach', 'task-list/grow' ]; -export type ExtensionList = { - key: string; - title: string; - plugins: Extension[]; -}; - -export type Extension = { - description: string; - key: string; - image_url: string; - is_built_by_wc: boolean; - manage_url: string; - name: string; -}; - export const transformExtensionToPlugin = ( extension: Extension, activePlugins: string[], @@ -148,7 +138,7 @@ const Marketing: React.FC< MarketingProps > = ( { onComplete } ) => { setCurrentPlugin( slug ); actionTask( 'marketing' ); installAndActivatePlugins( [ slug ] ) - .then( ( response: { errors: Record< string, string > } ) => { + .then( ( response ) => { recordEvent( 'tasklist_marketing_install', { selected_extension: slug, installed_extensions: installedExtensions.map( diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx index b0896b1dce3..3fadc329621 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx @@ -1,11 +1,12 @@ +/** + * External dependencies + */ +import { Extension } from '@woocommerce/data'; + /** * Internal dependencies */ -import { - Extension, - transformExtensionToPlugin, - getMarketingExtensionLists, -} from '../'; +import { transformExtensionToPlugin, getMarketingExtensionLists } from '../'; const basicPlugins: Extension[] = [ { diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx index b9bd668e45a..82c9f58bf8d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/index.tsx @@ -89,6 +89,7 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { woocommerce_calc_taxes: 'yes', }, } ) + // @ts-expect-error updateAndPersistSettingsForGroup returns a Promise, but it is not typed in source. .then( () => redirectToTaxSettings() ) .catch( ( error: unknown ) => { setIsPending( false ); @@ -134,6 +135,7 @@ const Tax: React.FC< TaxProps > = ( { onComplete, query, task } ) => { updateOptions( { woocommerce_no_sales_tax: true, woocommerce_calc_taxes: 'no', + // @ts-expect-error updateOptions returns a Promise, but it is not typed in source. } ).then( () => { window.location.href = getAdminLink( 'admin.php?page=wc-admin' ); } ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts index f702493ca25..553f6a0d905 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/utils.ts @@ -46,15 +46,15 @@ export type SettingsSelector = WPDataSelectors & { getSettings: ( type: string ) => { - general: { woocommerce_default_country?: string }; + general: { + woocommerce_default_country?: string; + woocommerce_calc_taxes?: string; + }; tax: { [ key: string ]: string }; }; getOption: ( type: string ) => { - wc_connect_options: { - tos_accepted: string; - }; tos_accepted?: boolean; }; }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/connect.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/connect.tsx index d4fd49a7ecb..efbecd24329 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/connect.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/connect.tsx @@ -16,6 +16,7 @@ export const Connect: React.FC< SetupStepProps > = ( { } ) => { return ( { recordEvent( 'tasklist_tax_connect_store', { connect: true, diff --git a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx index a1c87422228..88dea2f1dc7 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/tax/woocommerce-tax/plugins.tsx @@ -15,6 +15,7 @@ import { useEffect } from '@wordpress/element'; */ import { createNoticesFromResponse } from '~/lib/notices'; import { SetupStepProps } from './setup'; +import { SettingsSelector } from '../utils'; export const Plugins: React.FC< SetupStepProps > = ( { nextStep, @@ -26,7 +27,7 @@ export const Plugins: React.FC< SetupStepProps > = ( { const { isResolving, tosAccepted } = useSelect( ( select ) => { const { getOption, hasFinishedResolution } = select( OPTIONS_STORE_NAME - ); + ) as SettingsSelector; return { isResolving: @@ -67,6 +68,7 @@ export const Plugins: React.FC< SetupStepProps > = ( { return ( <> = ( { hasFinishedResolution: optionHasFinishedResolution, } = select( OPTIONS_STORE_NAME ); const reminderBarHiddenOption = getOption( REMINDER_BAR_HIDDEN_OPTION ); - const taskList: TaskListType = getTaskList( taskListId ); + const taskList = getTaskList( taskListId ); const taskListIsResolved = onboardingHasFinishedResolution( 'getTaskList', [ taskListId ] @@ -113,11 +113,12 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { REMINDER_BAR_HIDDEN_OPTION, ] ); - const visibleTasks = taskList?.tasks.filter( - ( task ) => - ! task.isDismissed && - ( ! task.isSnoozed || task.snoozedUntil < Date.now() ) - ); + const visibleTasks = + taskList?.tasks.filter( + ( task ) => + ! task.isDismissed && + ( ! task.isSnoozed || task.snoozedUntil < Date.now() ) + ) || []; const completedTasks = visibleTasks?.filter( ( task ) => task.isComplete ) || []; @@ -126,8 +127,8 @@ export const TasksReminderBar: React.FC< ReminderBarProps > = ( { return { reminderBarHidden: reminderBarHiddenOption === 'yes', - taskListHidden: isResolved ? taskList.isHidden : false, - taskListComplete: isResolved ? taskList.isComplete : false, + taskListHidden: isResolved ? taskList?.isHidden : false, + taskListComplete: isResolved ? taskList?.isComplete : false, loading: ! isResolved, completedTasksCount: completedTasks.length, remainingCount: isResolved diff --git a/plugins/woocommerce-admin/client/tasks/tasks.tsx b/plugins/woocommerce-admin/client/tasks/tasks.tsx index 19857b9a4db..d261d7d7991 100644 --- a/plugins/woocommerce-admin/client/tasks/tasks.tsx +++ b/plugins/woocommerce-admin/client/tasks/tasks.tsx @@ -144,52 +144,61 @@ export const Tasks: React.FC< TasksProps > = ( { query } ) => { return ; } - return taskLists - .filter( ( { id }: TaskListType ) => - experimentAssignment?.variationName === 'treatment' - ? id.endsWith( 'two_column' ) - : ! id.endsWith( 'two_column' ) - ) - .map( ( taskList: TaskListType ) => { - const { id, isHidden, isVisible, isToggleable } = taskList; + return ( + <> + { taskLists + .filter( ( { id }: TaskListType ) => + experimentAssignment?.variationName === 'treatment' + ? id.endsWith( 'two_column' ) + : ! id.endsWith( 'two_column' ) + ) + .map( ( taskList: TaskListType ) => { + const { id, isHidden, isVisible, isToggleable } = taskList; - if ( ! isVisible ) { - return null; - } + if ( ! isVisible ) { + return null; + } - const TaskListComponent = getTaskListComponent( id ); - return ( - - - { isToggleable && ( - - - toggleTaskList( taskList ) } - > - { __( - 'Show things to do next', - 'woocommerce' - ) } - - - - ) } - - ); - } ); + const TaskListComponent = getTaskListComponent( id ); + return ( + + + { isToggleable && ( + + + + toggleTaskList( taskList ) + } + > + { __( + 'Show things to do next', + 'woocommerce' + ) } + + + + ) } + + ); + } ) } + + ); }; From 0d5a0050d8084a550ef48df76891ab34e4c20b3b Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 14:20:50 +0800 Subject: [PATCH 139/327] Add changelogs --- packages/js/data/CHANGELOG.md | 1 + plugins/woocommerce/changelog/update-woo-data-types | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-woo-data-types diff --git a/packages/js/data/CHANGELOG.md b/packages/js/data/CHANGELOG.md index 80703cd633a..2ed5af13a0b 100644 --- a/packages/js/data/CHANGELOG.md +++ b/packages/js/data/CHANGELOG.md @@ -11,6 +11,7 @@ - Update `TaskType` & `TaskListType` types - Export `InstallPluginsResponse` type - Convert `use-user-preferences.js` to TS. #32695 +- Add `@types/wordpress__compose`, `@types/wordpress__data`, `redux` types and fix related type errors. #32735 ## Breaking change diff --git a/plugins/woocommerce/changelog/update-woo-data-types b/plugins/woocommerce/changelog/update-woo-data-types new file mode 100644 index 00000000000..d5ebd79dd5f --- /dev/null +++ b/plugins/woocommerce/changelog/update-woo-data-types @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Fix react admin ./client type errors after updating @woocommerce/data types From 991722ba6fc9b472c1f5961af4ef1e6c52e58b88 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Mon, 25 Apr 2022 10:49:15 +0200 Subject: [PATCH 140/327] Re-introduce woocommerce_product_csv_importer_check_import_file_path The hook was inadvertendlty removed in PR #32460. Reintroducing it as a deprecated hook in favor of woocommerce_csv_importer_check_import_file_path. --- ...ass-wc-product-csv-importer-controller.php | 6 -- .../class-wc-deprecated-filter-hooks.php | 76 ++++++++++--------- 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/plugins/woocommerce/includes/admin/importers/class-wc-product-csv-importer-controller.php b/plugins/woocommerce/includes/admin/importers/class-wc-product-csv-importer-controller.php index 17b13f81653..a2e69186818 100644 --- a/plugins/woocommerce/includes/admin/importers/class-wc-product-csv-importer-controller.php +++ b/plugins/woocommerce/includes/admin/importers/class-wc-product-csv-importer-controller.php @@ -91,12 +91,6 @@ class WC_Product_CSV_Importer_Controller { * @return bool */ public static function is_file_valid_csv( $file, $check_path = true ) { - /** - * Can be used to override the decision to check the import file path. - * - * @param bool $check_import_file_path If the import file path should be checked. - * @param string $file Path of the file to be checked. - */ return wc_is_file_valid_csv( $file, $check_path ); } diff --git a/plugins/woocommerce/includes/class-wc-deprecated-filter-hooks.php b/plugins/woocommerce/includes/class-wc-deprecated-filter-hooks.php index ddfcb75215f..f65197945e2 100644 --- a/plugins/woocommerce/includes/class-wc-deprecated-filter-hooks.php +++ b/plugins/woocommerce/includes/class-wc-deprecated-filter-hooks.php @@ -21,43 +21,44 @@ class WC_Deprecated_Filter_Hooks extends WC_Deprecated_Hooks { * @var array */ protected $deprecated_hooks = array( - 'woocommerce_structured_data_order' => 'woocommerce_email_order_schema_markup', - 'woocommerce_add_to_cart_fragments' => 'add_to_cart_fragments', - 'woocommerce_add_to_cart_redirect' => 'add_to_cart_redirect', - 'woocommerce_product_get_width' => 'woocommerce_product_width', - 'woocommerce_product_get_height' => 'woocommerce_product_height', - 'woocommerce_product_get_length' => 'woocommerce_product_length', - 'woocommerce_product_get_weight' => 'woocommerce_product_weight', - 'woocommerce_product_get_sku' => 'woocommerce_get_sku', - 'woocommerce_product_get_price' => 'woocommerce_get_price', - 'woocommerce_product_get_regular_price' => 'woocommerce_get_regular_price', - 'woocommerce_product_get_sale_price' => 'woocommerce_get_sale_price', - 'woocommerce_product_get_tax_class' => 'woocommerce_product_tax_class', - 'woocommerce_product_get_stock_quantity' => 'woocommerce_get_stock_quantity', - 'woocommerce_product_get_attributes' => 'woocommerce_get_product_attributes', - 'woocommerce_product_get_gallery_image_ids' => 'woocommerce_product_gallery_attachment_ids', - 'woocommerce_product_get_review_count' => 'woocommerce_product_review_count', - 'woocommerce_product_get_downloads' => 'woocommerce_product_files', - 'woocommerce_order_get_currency' => 'woocommerce_get_currency', - 'woocommerce_order_get_discount_total' => 'woocommerce_order_amount_discount_total', - 'woocommerce_order_get_discount_tax' => 'woocommerce_order_amount_discount_tax', - 'woocommerce_order_get_shipping_total' => 'woocommerce_order_amount_shipping_total', - 'woocommerce_order_get_shipping_tax' => 'woocommerce_order_amount_shipping_tax', - 'woocommerce_order_get_cart_tax' => 'woocommerce_order_amount_cart_tax', - 'woocommerce_order_get_total' => 'woocommerce_order_amount_total', - 'woocommerce_order_get_total_tax' => 'woocommerce_order_amount_total_tax', - 'woocommerce_order_get_total_discount' => 'woocommerce_order_amount_total_discount', - 'woocommerce_order_get_subtotal' => 'woocommerce_order_amount_subtotal', - 'woocommerce_order_get_tax_totals' => 'woocommerce_order_tax_totals', - 'woocommerce_get_order_refund_get_amount' => 'woocommerce_refund_amount', - 'woocommerce_get_order_refund_get_reason' => 'woocommerce_refund_reason', - 'default_checkout_billing_country' => 'default_checkout_country', - 'default_checkout_billing_state' => 'default_checkout_state', - 'default_checkout_billing_postcode' => 'default_checkout_postcode', - 'woocommerce_system_status_environment_rows' => 'woocommerce_debug_posting', - 'woocommerce_credit_card_type_labels' => 'wocommerce_credit_card_type_labels', - 'woocommerce_settings_tabs_advanced' => 'woocommerce_settings_tabs_api', - 'woocommerce_settings_advanced' => 'woocommerce_settings_api', + 'woocommerce_structured_data_order' => 'woocommerce_email_order_schema_markup', + 'woocommerce_add_to_cart_fragments' => 'add_to_cart_fragments', + 'woocommerce_add_to_cart_redirect' => 'add_to_cart_redirect', + 'woocommerce_product_get_width' => 'woocommerce_product_width', + 'woocommerce_product_get_height' => 'woocommerce_product_height', + 'woocommerce_product_get_length' => 'woocommerce_product_length', + 'woocommerce_product_get_weight' => 'woocommerce_product_weight', + 'woocommerce_product_get_sku' => 'woocommerce_get_sku', + 'woocommerce_product_get_price' => 'woocommerce_get_price', + 'woocommerce_product_get_regular_price' => 'woocommerce_get_regular_price', + 'woocommerce_product_get_sale_price' => 'woocommerce_get_sale_price', + 'woocommerce_product_get_tax_class' => 'woocommerce_product_tax_class', + 'woocommerce_product_get_stock_quantity' => 'woocommerce_get_stock_quantity', + 'woocommerce_product_get_attributes' => 'woocommerce_get_product_attributes', + 'woocommerce_product_get_gallery_image_ids' => 'woocommerce_product_gallery_attachment_ids', + 'woocommerce_product_get_review_count' => 'woocommerce_product_review_count', + 'woocommerce_product_get_downloads' => 'woocommerce_product_files', + 'woocommerce_order_get_currency' => 'woocommerce_get_currency', + 'woocommerce_order_get_discount_total' => 'woocommerce_order_amount_discount_total', + 'woocommerce_order_get_discount_tax' => 'woocommerce_order_amount_discount_tax', + 'woocommerce_order_get_shipping_total' => 'woocommerce_order_amount_shipping_total', + 'woocommerce_order_get_shipping_tax' => 'woocommerce_order_amount_shipping_tax', + 'woocommerce_order_get_cart_tax' => 'woocommerce_order_amount_cart_tax', + 'woocommerce_order_get_total' => 'woocommerce_order_amount_total', + 'woocommerce_order_get_total_tax' => 'woocommerce_order_amount_total_tax', + 'woocommerce_order_get_total_discount' => 'woocommerce_order_amount_total_discount', + 'woocommerce_order_get_subtotal' => 'woocommerce_order_amount_subtotal', + 'woocommerce_order_get_tax_totals' => 'woocommerce_order_tax_totals', + 'woocommerce_get_order_refund_get_amount' => 'woocommerce_refund_amount', + 'woocommerce_get_order_refund_get_reason' => 'woocommerce_refund_reason', + 'default_checkout_billing_country' => 'default_checkout_country', + 'default_checkout_billing_state' => 'default_checkout_state', + 'default_checkout_billing_postcode' => 'default_checkout_postcode', + 'woocommerce_system_status_environment_rows' => 'woocommerce_debug_posting', + 'woocommerce_credit_card_type_labels' => 'wocommerce_credit_card_type_labels', + 'woocommerce_settings_tabs_advanced' => 'woocommerce_settings_tabs_api', + 'woocommerce_settings_advanced' => 'woocommerce_settings_api', + 'woocommerce_csv_importer_check_import_file_path' => 'woocommerce_product_csv_importer_check_import_file_path', ); /** @@ -103,6 +104,7 @@ class WC_Deprecated_Filter_Hooks extends WC_Deprecated_Hooks { 'wocommerce_credit_card_type_labels' => '3.0.0', 'woocommerce_settings_tabs_api' => '3.4.0', 'woocommerce_settings_api' => '3.4.0', + 'woocommerce_product_csv_importer_check_import_file_path' => '6.5.0', ); /** From 23fa1bc4475f2ce989641c9060e2d5de8e2e0917 Mon Sep 17 00:00:00 2001 From: Nestor Soriano Date: Mon, 25 Apr 2022 10:59:36 +0200 Subject: [PATCH 141/327] Add changelog entry file --- plugins/woocommerce/changelog/fix-hook_removal_from_32460 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-hook_removal_from_32460 diff --git a/plugins/woocommerce/changelog/fix-hook_removal_from_32460 b/plugins/woocommerce/changelog/fix-hook_removal_from_32460 new file mode 100644 index 00000000000..3fbfa9b85d4 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-hook_removal_from_32460 @@ -0,0 +1,5 @@ +Significance: patch +Type: fix +Comment: This fixes a bug that was introduced in a PR targetting the same Woo version. + + From 1acbcd64c5fc5bc0e04687c688228b6d1db946b5 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Mon, 25 Apr 2022 10:44:29 -0300 Subject: [PATCH 142/327] Fix eventPrefix for two column task list --- .../woocommerce-admin/client/two-column-tasks/task-list.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx index c003f231c2c..d8a243a3d82 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx @@ -46,12 +46,14 @@ export const TaskList: React.FC< TaskListProps > = ( { query, id, eventName, + eventPrefix, tasks, twoColumns, keepCompletedTaskList, isComplete, displayProgressHeader, } ) => { + const listEventPrefix = eventName ? eventName + '_' : eventPrefix; const { createNotice } = useDispatch( 'core/notices' ); const { updateOptions, dismissTask, undoDismissTask } = useDispatch( OPTIONS_STORE_NAME @@ -80,7 +82,7 @@ export const TaskList: React.FC< TaskListProps > = ( { return; } - recordEvent( `${ eventName }_view`, { + recordEvent( `${ listEventPrefix }view`, { number_tasks: visibleTasks.length, store_connected: profileItems.wccom_connected, } ); @@ -199,7 +201,7 @@ export const TaskList: React.FC< TaskListProps > = ( { }; const trackClick = ( task: TaskType ) => { - recordEvent( `${ eventName }_click`, { + recordEvent( `${ listEventPrefix }click`, { task_name: task.id, } ); }; From 906b92fdbf798c3adc509c3a7a78f7e273b6ab5f Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Mon, 25 Apr 2022 10:53:00 -0300 Subject: [PATCH 143/327] Add changelog --- .../changelog/fix-32745_task_list_experiment_1_tracks | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32745_task_list_experiment_1_tracks diff --git a/plugins/woocommerce/changelog/fix-32745_task_list_experiment_1_tracks b/plugins/woocommerce/changelog/fix-32745_task_list_experiment_1_tracks new file mode 100644 index 00000000000..2065d153c9f --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32745_task_list_experiment_1_tracks @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix event names for tracks in new Task List. #32759 From 9872ec153befc1265c28c52e05768675668c2155 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Mon, 25 Apr 2022 10:57:36 -0300 Subject: [PATCH 144/327] Add test case for eventPrefix --- .../two-column-tasks/test/task-list.test.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx b/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx index e11bfc9ea21..49fb4a1772c 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx @@ -152,6 +152,28 @@ describe( 'TaskList', () => { } ); } ); + it( 'should trigger tasklist_view event on initial render for setup task list with eventPrefix if eventName is undefined', () => { + render( + + ); + expect( recordEvent ).toHaveBeenCalledTimes( 1 ); + expect( recordEvent ).toHaveBeenCalledWith( 'tasklist_view', { + number_tasks: 0, + store_connected: null, + } ); + } ); + it( 'should trigger {id}_tasklist_view event on initial render for setup task list if id is not setup', () => { render( Date: Tue, 26 Apr 2022 08:51:35 +1200 Subject: [PATCH 145/327] Update `create-extension` to work in monorepo context (#32514) * Update create-wc-extension to work in monorepo context * update lock file --- package.json | 5 +- .../bin/starter-pack/src/index.js | 4 - plugins/woocommerce-admin/package.json | 1 - plugins/woocommerce/.gitignore | 3 + .../changelog/fix-starter-pack-monorepo | 4 + pnpm-lock.yaml | 274 ++++++++++-------- .../create-extension}/._eslintrc.js | 0 .../create-extension}/._gitignore | 0 .../create-extension}/._prettierrc.json | 0 tools/create-extension/._wp-env.json | 14 + .../create-extension}/README.md | 4 +- .../create-extension}/_README.md | 0 .../create-extension}/_main.php | 30 +- .../create-extension}/_package.json | 3 + .../create-extension}/_webpack.config.js | 0 .../create-extension/index.js | 6 +- tools/create-extension/src/index.js | 24 ++ .../create-extension}/src/index.scss | 0 18 files changed, 236 insertions(+), 136 deletions(-) delete mode 100644 plugins/woocommerce-admin/bin/starter-pack/src/index.js create mode 100644 plugins/woocommerce/changelog/fix-starter-pack-monorepo rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/._eslintrc.js (100%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/._gitignore (100%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/._prettierrc.json (100%) create mode 100644 tools/create-extension/._wp-env.json rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/README.md (78%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/_README.md (100%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/_main.php (59%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/_package.json (94%) rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/_webpack.config.js (100%) rename plugins/woocommerce-admin/bin/starter-pack/starter-pack.js => tools/create-extension/index.js (91%) create mode 100644 tools/create-extension/src/index.js rename {plugins/woocommerce-admin/bin/starter-pack => tools/create-extension}/src/index.scss (100%) diff --git a/package.json b/package.json index 2ff6a3d8460..a945a056869 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "scripts": { "preinstall": "npx only-allow pnpm", "postinstall": "pnpm git:update-hooks", - "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && husky install" + "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && husky install", + "create-extension": "node ./tools/create-extension/index.js" }, "devDependencies": { "@automattic/nx-composer": "^0.1.0", @@ -45,7 +46,9 @@ "@babel/core": "7.12.9", "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", "@wordpress/babel-preset-default": "^6.4.1", + "fs-extra": "^10.0.1", "lodash": "^4.17.21", + "promptly": "^3.2.0", "wp-textdomain": "1.0.1" } } diff --git a/plugins/woocommerce-admin/bin/starter-pack/src/index.js b/plugins/woocommerce-admin/bin/starter-pack/src/index.js deleted file mode 100644 index 57ba7593773..00000000000 --- a/plugins/woocommerce-admin/bin/starter-pack/src/index.js +++ /dev/null @@ -1,4 +0,0 @@ -// Import SCSS entry file so that webpack picks up changes -import './index.scss'; - -console.log( 'hello world' ); diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index 4ac6bfea2f7..e281bf46a71 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -209,7 +209,6 @@ "eslint-plugin-react": "^7.29.2", "expose-loader": "^3.1.0", "fork-ts-checker-webpack-plugin": "^6.5.0", - "fs-extra": "^8.1.0", "jest": "^27.5.1", "jest-environment-jsdom": "~27.5.0", "jest-environment-node": "^27.5.1", diff --git a/plugins/woocommerce/.gitignore b/plugins/woocommerce/.gitignore index c991d06cea1..49787443657 100644 --- a/plugins/woocommerce/.gitignore +++ b/plugins/woocommerce/.gitignore @@ -34,3 +34,6 @@ i18n/languages/woocommerce.pot # Allure directories allure-report allure-results + +# Environment files +.wp-env.override.json diff --git a/plugins/woocommerce/changelog/fix-starter-pack-monorepo b/plugins/woocommerce/changelog/fix-starter-pack-monorepo new file mode 100644 index 00000000000..6b448e0ca6e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-starter-pack-monorepo @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Update create-extension script to function in the monorepo. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 641a5525d60..9df70e5a7f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,7 @@ importers: '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/prettier-config': ^1.1.1 chalk: ^4.1.2 + fs-extra: ^10.0.1 glob: ^7.2.0 husky: ^7.0.4 jest: ^27.3.1 @@ -27,6 +28,7 @@ importers: mkdirp: ^1.0.4 node-stream-zip: ^1.15.0 prettier: npm:wp-prettier@^2.2.1-beta-1 + promptly: ^3.2.0 request: ^2.88.2 typescript: 4.2.4 wp-textdomain: 1.0.1 @@ -34,7 +36,9 @@ importers: '@babel/core': 7.12.9 '@wordpress/babel-plugin-import-jsx-pragma': 3.1.0_@babel+core@7.12.9 '@wordpress/babel-preset-default': 6.4.1 + fs-extra: 10.0.1 lodash: 4.17.21 + promptly: 3.2.0 wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 @@ -1310,7 +1314,6 @@ importers: eslint-plugin-react: ^7.29.2 expose-loader: ^3.1.0 fork-ts-checker-webpack-plugin: ^6.5.0 - fs-extra: ^8.1.0 github-label-sync: ^2.0.2 grapheme-splitter: ^1.0.4 gridicons: ^3.4.0 @@ -1511,7 +1514,6 @@ importers: eslint-plugin-react: 7.29.4_eslint@8.11.0 expose-loader: 3.1.0_webpack@5.70.0 fork-ts-checker-webpack-plugin: 6.5.0_10568ae13669cc833891d65cd6879aa0 - fs-extra: 8.1.0 jest: 27.5.1 jest-environment-jsdom: 27.5.1 jest-environment-node: 27.5.1 @@ -6987,7 +6989,7 @@ packages: chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-changed-files: 27.3.0 jest-config: 27.3.1 jest-haste-map: 27.3.1 @@ -7278,7 +7280,7 @@ packages: collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.0 @@ -7316,7 +7318,7 @@ packages: collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 4.0.3 istanbul-lib-report: 3.0.0 @@ -7586,7 +7588,7 @@ packages: chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-haste-map: 27.3.1 jest-regex-util: 27.0.6 jest-util: 27.3.1 @@ -8654,7 +8656,7 @@ packages: react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /@pmmmwh/react-refresh-webpack-plugin/0.5.1_92cb4b81c6b9f71cf92f0bdb85e4210c: @@ -9037,7 +9039,7 @@ packages: peerDependencies: '@storybook/addon-actions': '*' dependencies: - '@storybook/addon-actions': 6.4.19 + '@storybook/addon-actions': 6.4.19_react-dom@17.0.2+react@17.0.2 global: 4.4.0 dev: true @@ -10572,7 +10574,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.2.0 webpack: 4.46.0_webpack-cli@3.3.12 - ws: 8.2.3 + ws: 8.5.0 transitivePeerDependencies: - '@types/react' - acorn @@ -10648,7 +10650,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.2.0 webpack: 4.46.0_webpack-cli@4.9.2 - ws: 8.2.3 + ws: 8.5.0 transitivePeerDependencies: - '@types/react' - acorn @@ -10724,7 +10726,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.2.0 webpack: 4.46.0_webpack-cli@4.9.2 - ws: 8.2.3 + ws: 8.5.0 transitivePeerDependencies: - '@types/react' - acorn @@ -10796,7 +10798,7 @@ packages: util-deprecate: 1.0.2 watchpack: 2.2.0 webpack: 4.46.0_webpack-cli@3.3.12 - ws: 8.2.3 + ws: 8.5.0 transitivePeerDependencies: - '@types/react' - acorn @@ -11350,7 +11352,7 @@ packages: react-docgen-typescript: 2.2.2_typescript@4.6.2 tslib: 2.3.1 typescript: 4.6.2 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 transitivePeerDependencies: - supports-color dev: true @@ -12553,7 +12555,6 @@ packages: re-resizable: 4.11.0 transitivePeerDependencies: - react - - react-dom dev: true /@types/wordpress__compose/4.0.1: @@ -15639,7 +15640,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -17720,8 +17721,8 @@ packages: /caniuse-api/3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.18.1 - caniuse-lite: 1.0.30001280 + browserslist: 4.20.2 + caniuse-lite: 1.0.30001317 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -18345,10 +18346,6 @@ packages: color-convert: 1.9.3 color-string: 1.9.0 - /colord/2.9.1: - resolution: {integrity: sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==} - dev: true - /colord/2.9.2: resolution: {integrity: sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==} @@ -19509,6 +19506,17 @@ packages: supports-color: 9.2.2 dev: true + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debuglog/1.0.1: resolution: {integrity: sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=} dev: true @@ -19659,7 +19667,7 @@ packages: engines: {node: '>=10'} dependencies: globby: 11.1.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 is-glob: 4.0.3 is-path-cwd: 2.2.0 is-path-inside: 3.0.3 @@ -20198,7 +20206,7 @@ packages: resolution: {integrity: sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==} engines: {node: '>=10.13.0'} dependencies: - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 tapable: 2.2.1 dev: true @@ -21503,7 +21511,7 @@ packages: ajv: 6.12.6 chalk: 2.4.2 cross-spawn: 6.0.5 - debug: 4.3.3 + debug: 4.3.4 doctrine: 3.0.0 eslint-scope: 5.1.1 eslint-utils: 1.4.3 @@ -22230,7 +22238,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.3 + debug: 4.3.4 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -22405,7 +22413,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /file-loader/6.2.0_webpack@5.64.1: @@ -22530,7 +22538,7 @@ packages: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -23002,6 +23010,15 @@ packages: rimraf: 2.7.1 dev: true + /fs-extra/10.0.1: + resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.9 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs-extra/6.0.1: resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} dependencies: @@ -24244,7 +24261,7 @@ packages: pretty-error: 2.1.2 tapable: 1.1.3 util.promisify: 1.0.0 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /html-webpack-plugin/5.5.0_webpack@5.70.0: @@ -24440,7 +24457,7 @@ packages: engines: {node: '>= 6.0.0'} dependencies: agent-base: 5.1.1 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -24449,7 +24466,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -25636,7 +25653,7 @@ packages: resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} engines: {node: '>=6'} dependencies: - debug: 4.3.3 + debug: 4.3.4 istanbul-lib-coverage: 2.0.5 make-dir: 2.1.0 rimraf: 2.7.1 @@ -25903,7 +25920,7 @@ packages: '@jest/types': 27.2.5 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 import-local: 3.0.3 jest-config: 27.3.1 jest-util: 27.3.1 @@ -26018,7 +26035,7 @@ packages: chalk: 4.1.2 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 is-ci: 3.0.1 jest-circus: 27.3.1 jest-environment-jsdom: 27.3.1 @@ -26055,7 +26072,7 @@ packages: chalk: 4.1.2 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 is-ci: 3.0.1 jest-circus: 27.3.1 jest-environment-jsdom: 27.3.1 @@ -26094,7 +26111,7 @@ packages: ci-info: 3.2.0 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-circus: 27.3.1 jest-environment-jsdom: 27.3.1 jest-environment-node: 27.3.1 @@ -26498,7 +26515,7 @@ packages: '@types/node': 16.10.3 anymatch: 3.1.2 fb-watchman: 2.0.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-regex-util: 27.0.6 jest-serializer: 27.0.6 jest-util: 27.3.1 @@ -27007,7 +27024,7 @@ packages: '@jest/types': 27.2.5 chalk: 4.1.2 escalade: 3.1.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-haste-map: 27.3.1 jest-pnp-resolver: 1.2.2_jest-resolve@27.2.2 jest-util: 27.3.1 @@ -27022,7 +27039,7 @@ packages: dependencies: '@jest/types': 27.2.5 chalk: 4.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-haste-map: 27.3.1 jest-pnp-resolver: 1.2.2_jest-resolve@27.3.1 jest-util: 27.3.1 @@ -27125,7 +27142,7 @@ packages: chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-docblock: 27.0.6 jest-environment-jsdom: 27.3.1 jest-environment-node: 27.3.1 @@ -27491,7 +27508,7 @@ packages: '@jest/types': 27.2.5 '@types/node': 16.10.3 chalk: 4.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 is-ci: 3.0.1 picomatch: 2.3.0 dev: true @@ -29127,7 +29144,7 @@ packages: /micromark/2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.3 + debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color @@ -31011,8 +31028,8 @@ packages: postcss: ^8.2.2 dependencies: postcss: 8.3.0 - postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 dev: true /postcss-calc/8.0.0_postcss@8.3.11: @@ -31021,8 +31038,8 @@ packages: postcss: ^8.2.2 dependencies: postcss: 8.3.11 - postcss-selector-parser: 6.0.6 - postcss-value-parser: 4.1.0 + postcss-selector-parser: 6.0.9 + postcss-value-parser: 4.2.0 dev: true /postcss-color-function/4.1.0: @@ -31050,11 +31067,11 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 - colord: 2.9.1 + colord: 2.9.2 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-colormin/5.2.1_postcss@8.3.11: @@ -31063,11 +31080,11 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 - colord: 2.9.1 + colord: 2.9.2 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-convert-values/4.0.1: @@ -31084,7 +31101,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-convert-values/5.0.2_postcss@8.3.11: @@ -31094,7 +31111,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-custom-properties/10.0.0: @@ -31280,7 +31297,7 @@ packages: postcss: 7.0.39 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /postcss-loader/6.2.0_postcss@8.3.0+webpack@5.64.1: @@ -31317,7 +31334,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 stylehacks: 5.0.1_postcss@8.3.0 dev: true @@ -31328,7 +31345,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 stylehacks: 5.0.1_postcss@8.3.11 dev: true @@ -31349,11 +31366,11 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-merge-rules/5.0.3_postcss@8.3.11: @@ -31362,11 +31379,11 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-message-helpers/2.0.0: @@ -31387,7 +31404,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-font-values/5.0.1_postcss@8.3.11: @@ -31397,7 +31414,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-gradients/4.0.2: @@ -31415,10 +31432,10 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - colord: 2.9.1 + colord: 2.9.2 cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-gradients/5.0.3_postcss@8.3.11: @@ -31427,10 +31444,10 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - colord: 2.9.1 + colord: 2.9.2 cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-params/4.0.2: @@ -31451,10 +31468,10 @@ packages: postcss: ^8.2.15 dependencies: alphanum-sort: 1.0.2 - browserslist: 4.18.1 + browserslist: 4.20.2 cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-params/5.0.2_postcss@8.3.11: @@ -31464,10 +31481,10 @@ packages: postcss: ^8.2.15 dependencies: alphanum-sort: 1.0.2 - browserslist: 4.18.1 + browserslist: 4.20.2 cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-minify-selectors/4.0.2: @@ -31487,7 +31504,7 @@ packages: dependencies: alphanum-sort: 1.0.2 postcss: 8.3.0 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-minify-selectors/5.1.0_postcss@8.3.11: @@ -31498,7 +31515,7 @@ packages: dependencies: alphanum-sort: 1.0.2 postcss: 8.3.11 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-modules-extract-imports/2.0.0: @@ -31708,7 +31725,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-display-values/5.0.1_postcss@8.3.11: @@ -31719,7 +31736,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-positions/4.0.2: @@ -31738,7 +31755,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-positions/5.0.1_postcss@8.3.11: @@ -31748,7 +31765,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-repeat-style/4.0.2: @@ -31768,7 +31785,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-repeat-style/5.0.1_postcss@8.3.11: @@ -31779,7 +31796,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-string/4.0.2: @@ -31797,7 +31814,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-string/5.0.1_postcss@8.3.11: @@ -31807,7 +31824,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-timing-functions/4.0.2: @@ -31826,7 +31843,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-timing-functions/5.0.1_postcss@8.3.11: @@ -31837,7 +31854,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-unicode/4.0.1: @@ -31854,9 +31871,9 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-unicode/5.0.1_postcss@8.3.11: @@ -31865,9 +31882,9 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-url/4.0.1: @@ -31888,7 +31905,7 @@ packages: is-absolute-url: 3.0.3 normalize-url: 6.1.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-url/5.0.3_postcss@8.3.11: @@ -31900,7 +31917,7 @@ packages: is-absolute-url: 3.0.3 normalize-url: 6.1.0 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-whitespace/4.0.2: @@ -31917,7 +31934,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-normalize-whitespace/5.0.1_postcss@8.3.11: @@ -31927,7 +31944,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-ordered-values/4.1.2: @@ -31946,7 +31963,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-ordered-values/5.0.2_postcss@8.3.11: @@ -31957,7 +31974,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-reduce-initial/4.0.3: @@ -31975,7 +31992,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 postcss: 8.3.0 dev: true @@ -31986,7 +32003,7 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 caniuse-api: 3.0.0 postcss: 8.3.11 dev: true @@ -32008,7 +32025,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.0 postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-reduce-transforms/5.0.1_postcss@8.3.11: @@ -32019,7 +32036,7 @@ packages: dependencies: cssnano-utils: 2.0.1_postcss@8.3.11 postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 dev: true /postcss-resolve-nested-selector/0.1.1: @@ -32103,7 +32120,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.0 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: true @@ -32114,7 +32131,7 @@ packages: postcss: ^8.2.15 dependencies: postcss: 8.3.11 - postcss-value-parser: 4.1.0 + postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: true @@ -32142,7 +32159,7 @@ packages: dependencies: alphanum-sort: 1.0.2 postcss: 8.3.0 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-unique-selectors/5.0.2_postcss@8.3.11: @@ -32153,7 +32170,7 @@ packages: dependencies: alphanum-sort: 1.0.2 postcss: 8.3.11 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /postcss-value-parser/3.3.1: @@ -32439,7 +32456,6 @@ packages: resolution: {integrity: sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==} dependencies: read: 1.0.7 - dev: true /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -32542,7 +32558,7 @@ packages: engines: {node: '>=6.4.0'} requiresBuild: true dependencies: - debug: 4.3.3 + debug: 4.3.4 extract-zip: 1.7.0 https-proxy-agent: 2.2.4 mime: 2.5.2 @@ -32559,7 +32575,7 @@ packages: engines: {node: '>=10.18.1'} dependencies: '@types/mime-types': 2.1.1 - debug: 4.3.3 + debug: 4.3.4 extract-zip: 2.0.1 https-proxy-agent: 4.0.0 mime: 2.5.2 @@ -32568,7 +32584,7 @@ packages: proxy-from-env: 1.1.0 rimraf: 3.0.2 tar-fs: 2.1.1 - unbzip2-stream: 1.3.3 + unbzip2-stream: 1.4.3 ws: 7.5.5 transitivePeerDependencies: - bufferutil @@ -32747,7 +32763,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /raw-loader/4.0.2_webpack@5.64.1: @@ -33700,7 +33716,6 @@ packages: engines: {node: '>=0.8'} dependencies: mute-stream: 0.0.8 - dev: true /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} @@ -35715,7 +35730,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 2.7.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /style-loader/2.0.0_webpack@5.70.0: @@ -35769,9 +35784,9 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 postcss: 8.3.0 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /stylehacks/5.0.1_postcss@8.3.11: @@ -35780,9 +35795,9 @@ packages: peerDependencies: postcss: ^8.2.15 dependencies: - browserslist: 4.18.1 + browserslist: 4.20.2 postcss: 8.3.11 - postcss-selector-parser: 6.0.6 + postcss-selector-parser: 6.0.9 dev: true /stylelint-config-recommended-scss/4.3.0_748c5b2cfae76328890a14c0b5cd0d73: @@ -36456,7 +36471,7 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.10.0_acorn@7.4.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 webpack-sources: 1.4.3 transitivePeerDependencies: - acorn @@ -36476,7 +36491,7 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.10.0 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 webpack-sources: 1.4.3 transitivePeerDependencies: - acorn @@ -37351,8 +37366,8 @@ packages: has-symbols: 1.0.2 which-boxed-primitive: 1.0.2 - /unbzip2-stream/1.3.3: - resolution: {integrity: sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==} + /unbzip2-stream/1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} dependencies: buffer: 5.7.1 through: 2.3.8 @@ -37683,7 +37698,7 @@ packages: loader-utils: 2.0.2 mime-types: 2.1.34 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /url-parse-lax/1.0.0: @@ -38043,7 +38058,7 @@ packages: dependencies: chalk: 2.4.2 commander: 3.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -38085,7 +38100,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 dev: true /watchpack/2.3.1: @@ -38255,7 +38270,7 @@ packages: mime: 2.5.2 mkdirp: 0.5.5 range-parser: 1.2.1 - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 webpack-log: 2.0.0 dev: true @@ -38307,7 +38322,7 @@ packages: connect-history-api-fallback: 1.6.0 del: 6.0.0 express: 4.17.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 html-entities: 2.3.2 http-proxy-middleware: 2.0.1 internal-ip: 6.2.0 @@ -38338,7 +38353,7 @@ packages: peerDependencies: webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 dependencies: - webpack: 4.46.0_webpack-cli@3.3.12 + webpack: 4.46.0_webpack-cli@4.9.2 dev: true /webpack-fix-style-only-entries/0.6.1: @@ -38522,7 +38537,7 @@ packages: tapable: 1.1.3 terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 - webpack-cli: 3.3.12_webpack@5.70.0 + webpack-cli: 3.3.12_webpack@4.46.0 webpack-sources: 1.4.3 dev: true @@ -38589,7 +38604,7 @@ packages: eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 json-parse-better-errors: 1.0.2 loader-runner: 4.2.0 mime-types: 2.1.34 @@ -39025,6 +39040,19 @@ packages: optional: true dev: true + /ws/8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /x-is-string/0.1.0: resolution: {integrity: sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=} dev: true diff --git a/plugins/woocommerce-admin/bin/starter-pack/._eslintrc.js b/tools/create-extension/._eslintrc.js similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/._eslintrc.js rename to tools/create-extension/._eslintrc.js diff --git a/plugins/woocommerce-admin/bin/starter-pack/._gitignore b/tools/create-extension/._gitignore similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/._gitignore rename to tools/create-extension/._gitignore diff --git a/plugins/woocommerce-admin/bin/starter-pack/._prettierrc.json b/tools/create-extension/._prettierrc.json similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/._prettierrc.json rename to tools/create-extension/._prettierrc.json diff --git a/tools/create-extension/._wp-env.json b/tools/create-extension/._wp-env.json new file mode 100644 index 00000000000..9b3c83c6158 --- /dev/null +++ b/tools/create-extension/._wp-env.json @@ -0,0 +1,14 @@ +{ + "phpVersion": "7.4", + "core": null, + "plugins": [ + "https://downloads.wordpress.org/plugin/woocommerce.6.3.1.zip", + "." + ], + "config": { + "JETPACK_AUTOLOAD_DEV": true, + "WP_DEBUG_LOG": true, + "WP_DEBUG_DISPLAY": true, + "ALTERNATE_WP_CRON": true + } +} \ No newline at end of file diff --git a/plugins/woocommerce-admin/bin/starter-pack/README.md b/tools/create-extension/README.md similarity index 78% rename from plugins/woocommerce-admin/bin/starter-pack/README.md rename to tools/create-extension/README.md index eb549bd5668..8c8e64d835a 100644 --- a/plugins/woocommerce-admin/bin/starter-pack/README.md +++ b/tools/create-extension/README.md @@ -10,10 +10,8 @@ Scaffold a modern JavaScript WordPress plugin with WooCommerce tooling. ### Usage -At the root of a [WooCommerce Admin](https://github.com/woocommerce/woocommerce/tree/trunk/plugins/woocommerce-admin) installation, run the create extension command. - ``` -pnpm run create-wc-extension +pnpm run create-extension ``` The script will create a sibling directory by a name of your choosing. Once you change directories into the new folder, install dependencies and start a development build. diff --git a/plugins/woocommerce-admin/bin/starter-pack/_README.md b/tools/create-extension/_README.md similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/_README.md rename to tools/create-extension/_README.md diff --git a/plugins/woocommerce-admin/bin/starter-pack/_main.php b/tools/create-extension/_main.php similarity index 59% rename from plugins/woocommerce-admin/bin/starter-pack/_main.php rename to tools/create-extension/_main.php index 11750e7755e..24bb47ef30e 100644 --- a/plugins/woocommerce-admin/bin/starter-pack/_main.php +++ b/tools/create-extension/_main.php @@ -6,13 +6,17 @@ */ /** - * Register the JS. + * Register the JS and CSS. */ function add_extension_register_script() { - if ( ! class_exists( 'Automattic\WooCommerce\Admin\PageController' ) || ! \Automattic\WooCommerce\Admin\PageController::is_admin_or_embed_page() ) { + if ( + ! method_exists( 'Automattic\WooCommerce\Admin\Loader', 'is_admin_or_embed_page' ) || + ! \Automattic\WooCommerce\Admin\Loader::is_admin_or_embed_page() + ) { return; } + $script_path = '/build/index.js'; $script_asset_path = dirname( __FILE__ ) . '/build/index.asset.php'; $script_asset = file_exists( $script_asset_path ) @@ -41,3 +45,25 @@ function add_extension_register_script() { } add_action( 'admin_enqueue_scripts', 'add_extension_register_script' ); + +/** + * Register a WooCommerce Admin page. + */ +function add_extension_register_page() { + if ( ! function_exists( 'wc_admin_register_page' ) ) { + return; + } + + wc_admin_register_page( array( + 'id' => 'my-example-page', + 'title' => __( 'My Example Page', 'my-textdomain' ), + 'parent' => 'woocommerce', + 'path' => '/example', + 'nav_args' => array( + 'order' => 10, + 'parent' => 'woocommerce', + ), + ) ); +} + +add_action( 'admin_menu', 'add_extension_register_page' ); diff --git a/plugins/woocommerce-admin/bin/starter-pack/_package.json b/tools/create-extension/_package.json similarity index 94% rename from plugins/woocommerce-admin/bin/starter-pack/_package.json rename to tools/create-extension/_package.json index cf1e00d892f..e937ff110a2 100644 --- a/plugins/woocommerce-admin/bin/starter-pack/_package.json +++ b/tools/create-extension/_package.json @@ -23,5 +23,8 @@ "@wordpress/scripts": "^12.2.1", "@woocommerce/eslint-plugin": "1.1.0", "@woocommerce/dependency-extraction-webpack-plugin": "1.6.0" + }, + "dependencies": { + "@wordpress/hooks": "^3.5.0" } } diff --git a/plugins/woocommerce-admin/bin/starter-pack/_webpack.config.js b/tools/create-extension/_webpack.config.js similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/_webpack.config.js rename to tools/create-extension/_webpack.config.js diff --git a/plugins/woocommerce-admin/bin/starter-pack/starter-pack.js b/tools/create-extension/index.js similarity index 91% rename from plugins/woocommerce-admin/bin/starter-pack/starter-pack.js rename to tools/create-extension/index.js index 4d56df108a0..89ee4187904 100644 --- a/plugins/woocommerce-admin/bin/starter-pack/starter-pack.js +++ b/tools/create-extension/index.js @@ -11,6 +11,7 @@ const files = [ '_package.json', '._eslintrc.js', '._prettierrc.json', + '._wp-env.json', ]; const maybeThrowError = ( error ) => { if ( error ) throw error; @@ -37,7 +38,7 @@ const maybeThrowError = ( error ) => { const from = path.join( __dirname, file ); const to = path.join( folder, - '_main.php' === file + file === '_main.php' ? `${ extensionSlug }.php` : file.replace( '_', '' ) ); @@ -79,10 +80,11 @@ const maybeThrowError = ( error ) => { process.stdout.write( '\n' ); console.log( chalk.green( - 'Run the following commands from the root of the extension and activate the plugin.' + 'Run the following commands from the root of the extension to scaffold a dev environment.' ) ); process.stdout.write( '\n' ); + console.log( 'wp-env start' ); console.log( 'pnpm install' ); console.log( 'pnpm start' ); process.stdout.write( '\n' ); diff --git a/tools/create-extension/src/index.js b/tools/create-extension/src/index.js new file mode 100644 index 00000000000..0b7b29a93cb --- /dev/null +++ b/tools/create-extension/src/index.js @@ -0,0 +1,24 @@ +/** + * External dependencies + */ +import { addFilter } from '@wordpress/hooks'; + +/** + * Internal dependencies + */ +import './index.scss'; + +const MyExamplePage = () =>

My Example Extension

; + +addFilter( 'woocommerce_admin_pages_list', 'my-namespace', ( pages ) => { + pages.push( { + container: MyExamplePage, + path: '/example', + breadcrumbs: [ 'My Example Page' ], + navArgs: { + id: 'my-example-page', + }, + } ); + + return pages; +} ); diff --git a/plugins/woocommerce-admin/bin/starter-pack/src/index.scss b/tools/create-extension/src/index.scss similarity index 100% rename from plugins/woocommerce-admin/bin/starter-pack/src/index.scss rename to tools/create-extension/src/index.scss From 5f77e820093355c72c53aeceb650b6508248b091 Mon Sep 17 00:00:00 2001 From: Tom Hu <88201630+thomasrockhu-codecov@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:20:59 -0700 Subject: [PATCH 146/327] chore(ci): add informational Codecov status checks (#32675) Hi, Tom from Codecov here. I noticed that you were using Codecov but weren't actually getting any notifications on pull requests. I figured it would be useful to get some idea if code being changed is being tested, but also not blocking CI/merging. Let me know if this makes sense or if we can do something that would be helpful. --- .codecov.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.codecov.yml b/.codecov.yml index d0261f64326..bec8da4c270 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -8,8 +8,12 @@ coverage: range: "50...100" status: - project: off - patch: off + project: + default: + informational: true + patch: + default: + informational: true changes: off parsers: From 99f85a55d5318401a13ff1076e7ce08e465c24eb Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:58:55 -0700 Subject: [PATCH 147/327] Protect against use of download links, where the directory is no longer approved. --- .../includes/class-wc-download-handler.php | 13 ++- .../class-wc-download-handler-tests.php | 95 +++++++++++++++++++ 2 files changed, 107 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-download-handler.php b/plugins/woocommerce/includes/class-wc-download-handler.php index 93e0cebad01..4d73075c6f9 100644 --- a/plugins/woocommerce/includes/class-wc-download-handler.php +++ b/plugins/woocommerce/includes/class-wc-download-handler.php @@ -31,11 +31,21 @@ class WC_Download_Handler { * Check if we need to download a file and check validity. */ public static function download_product() { + // phpcs:disable WordPress.Security.NonceVerification.Recommended $product_id = absint( $_GET['download_file'] ); // phpcs:ignore WordPress.VIP.SuperGlobalInputUsage.AccessDetected, WordPress.VIP.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.InputNotValidated $product = wc_get_product( $product_id ); + $downloads = $product ? $product->get_downloads() : array(); $data_store = WC_Data_Store::load( 'customer-download' ); - if ( ! $product || empty( $_GET['key'] ) || empty( $_GET['order'] ) ) { // WPCS: input var ok, CSRF ok. + $key = empty( $_GET['key'] ) ? '' : sanitize_text_field( wp_unslash( $_GET['key'] ) ); + + if ( + ! $product + || empty( $key ) + || empty( $_GET['order'] ) + || ! isset( $downloads[ $key ] ) + || ! $downloads[ $key ]->get_enabled() + ) { self::download_error( __( 'Invalid download link.', 'woocommerce' ) ); } @@ -43,6 +53,7 @@ class WC_Download_Handler { if ( empty( $_GET['email'] ) && empty( $_GET['uid'] ) ) { // WPCS: input var ok, CSRF ok. self::download_error( __( 'Invalid download link.', 'woocommerce' ) ); } + // phpcs:enable WordPress.Security.NonceVerification.Recommended $order_id = wc_get_order_id_by_order_key( wc_clean( wp_unslash( $_GET['order'] ) ) ); // WPCS: input var ok, CSRF ok. $order = wc_get_order( $order_id ); diff --git a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php index 6fd7b5c765f..d14dc21916a 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php @@ -1,5 +1,7 @@ assertTrue( $parsed_file_path['remote_file'] ); } + + /** + * @testdox Customers may not use a direct download link to obtain a downloadable file that has been disabled. + */ + public function test_inactive_downloads_will_not_be_served() { + self::remove_download_handlers(); + + $downloads_served = 0; + $download_counter = function () use ( &$downloads_served ) { + $downloads_served++; + }; + + // Track downloads served. + add_action( 'woocommerce_download_file_force', $download_counter ); + + /** + * @var Approved_Directories $approved_directories + */ + $approved_directories = wc_get_container()->get( Approved_Directories::class ); + $approved_directories->set_mode( Approved_Directories::MODE_ENABLED ); + $approved_directories->add_approved_directory( 'https://always.trusted' ); + $approved_directory_rule_id = $approved_directories->add_approved_directory( 'https://new.supplier' ); + + $product = WC_Helper_Product::create_downloadable_product( + array( + array( + 'name' => 'Book 1', + 'file' => 'https://always.trusted/123.pdf', + ), + array( + 'name' => 'Book 2', + 'file' => 'https://new.supplier/456.pdf', + ), + ) + ); + + $customer = WC_Helper_Customer::create_customer(); + $email = 'admin@example.org'; + $order = WC_Helper_Order::create_order( $customer->get_id(), $product ); + $order->set_status( 'completed' ); + $order->save(); + + $product_id = $product->get_id(); + $downloads = $product->get_downloads(); + $download_keys = array_keys( $downloads ); + + // phpcs:disable WordPress.Security.NonceVerification.Recommended WordPress.Security.ValidatedSanitizedInput.InputNotValidated + $_GET = array( + 'download_file' => $product_id, + 'order' => $order->get_order_key(), + 'email' => $email, + 'uid' => hash( 'sha256', $email ), + 'key' => $download_keys[0], + ); + + WC_Download_Handler::download_product(); + $this->assertEquals( 1, $downloads_served, 'Valid download request (download key 1 - corresponding approved directory rule enabled) was successfully served.' ); + + $_GET['key'] = $download_keys[1]; + WC_Download_Handler::download_product(); + $this->assertEquals( 2, $downloads_served, 'Valid download request (download key 2 - corresponding approved directory rule enabled) was successfully served.' ); + + $approved_directories->disable_by_id( $approved_directory_rule_id ); + $this->expectException( WPDieException::class ); + WC_Download_Handler::download_product(); + $this->assertEquals( 2, $downloads_served, 'Invalid download request (download key 2 - corresponding approved directory rule disabled) was not served.' ); + + $_GET['key'] = $download_keys[0]; + WC_Download_Handler::download_product(); + $this->assertEquals( 1, $downloads_served, 'Valid download request (download key 1 - corresponding approved directory rule remained enabled) was still successfully served.' ); + + // Cleanup. + add_action( 'woocommerce_download_file_force', $download_counter ); + self::restore_download_handlers(); + } + + /** + * Unregister download handlers to prevent unwanted output and side-effects. + */ + private static function remove_download_handlers() { + remove_action( 'woocommerce_download_file_xsendfile', array( WC_Download_Handler::class, 'download_file_xsendfile' ) ); + remove_action( 'woocommerce_download_file_redirect', array( WC_Download_Handler::class, 'download_file_redirect' ) ); + remove_action( 'woocommerce_download_file_force', array( WC_Download_Handler::class, 'download_file_force' ) ); + } + + /** + * Restores download handlers in case needed by other tests. + */ + private static function restore_download_handlers() { + add_action( 'woocommerce_download_file_redirect', array( WC_Download_Handler::class, 'download_file_redirect' ), 10, 2 ); + add_action( 'woocommerce_download_file_xsendfile', array( WC_Download_Handler::class, 'download_file_xsendfile' ), 10, 2 ); + add_action( 'woocommerce_download_file_force', array( WC_Download_Handler::class, 'download_file_force' ), 10, 2 ); + } } From bb41311ccfed75fe85ee3f0055b2883366c646ed Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 25 Apr 2022 16:16:14 -0700 Subject: [PATCH 148/327] PHPCS fixes. --- .../woocommerce/changelog/fix-32754-inactive-downloads | 5 +++++ .../php/includes/class-wc-download-handler-tests.php | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-32754-inactive-downloads diff --git a/plugins/woocommerce/changelog/fix-32754-inactive-downloads b/plugins/woocommerce/changelog/fix-32754-inactive-downloads new file mode 100644 index 00000000000..14a50616853 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32754-inactive-downloads @@ -0,0 +1,5 @@ +Significance: patch +Type: tweak +Comment: We're adding extra protections to a newly introduced feature; a further changelog entry is not needed. + + diff --git a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php index d14dc21916a..429157cd455 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php @@ -11,7 +11,7 @@ class WC_Download_Handler_Tests extends \WC_Unit_Test_Case { * Test for local file path. */ public function test_parse_file_path_for_local_file() { - $local_file_path = trailingslashit( wp_upload_dir()['basedir'] ) . 'dummy_file.jpg'; + $local_file_path = trailingslashit( wp_upload_dir()['basedir'] ) . 'dummy_file.jpg'; $parsed_file_path = WC_Download_Handler::parse_file_path( $local_file_path ); $this->assertFalse( $parsed_file_path['remote_file'] ); } @@ -20,7 +20,7 @@ class WC_Download_Handler_Tests extends \WC_Unit_Test_Case { * Test for local URL without protocol. */ public function test_parse_file_path_for_local_url() { - $local_file_path = trailingslashit( wp_upload_dir()['baseurl'] ) . 'dummy_file.jpg'; + $local_file_path = trailingslashit( wp_upload_dir()['baseurl'] ) . 'dummy_file.jpg'; $parsed_file_path = WC_Download_Handler::parse_file_path( $local_file_path ); $this->assertFalse( $parsed_file_path['remote_file'] ); } @@ -29,7 +29,7 @@ class WC_Download_Handler_Tests extends \WC_Unit_Test_Case { * Test for local file with `file` protocol. */ public function test_parse_file_path_for_local_file_protocol() { - $local_file_path = 'file:/' . trailingslashit( wp_upload_dir()['basedir'] ) . 'dummy_file.jpg'; + $local_file_path = 'file:/' . trailingslashit( wp_upload_dir()['basedir'] ) . 'dummy_file.jpg'; $parsed_file_path = WC_Download_Handler::parse_file_path( $local_file_path ); $this->assertFalse( $parsed_file_path['remote_file'] ); } @@ -38,7 +38,7 @@ class WC_Download_Handler_Tests extends \WC_Unit_Test_Case { * Test for local file with https protocom. */ public function test_parse_file_path_for_local_file_https_protocol() { - $local_file_path = site_url( '/', 'https' ) . 'dummy_file.jpg'; + $local_file_path = site_url( '/', 'https' ) . 'dummy_file.jpg'; $parsed_file_path = WC_Download_Handler::parse_file_path( $local_file_path ); $this->assertFalse( $parsed_file_path['remote_file'] ); } From a96c364bb5f04d12e0a764c33d03a29b89aabb77 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 25 Apr 2022 17:36:03 -0700 Subject: [PATCH 149/327] Resolve issue with tests (headers already sent by test suite bootstrapper). --- .../includes/class-wc-download-handler.php | 10 ++++--- .../class-wc-download-handler-tests.php | 27 ++++++++++++++----- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/plugins/woocommerce/includes/class-wc-download-handler.php b/plugins/woocommerce/includes/class-wc-download-handler.php index 4d73075c6f9..5db504b8b76 100644 --- a/plugins/woocommerce/includes/class-wc-download-handler.php +++ b/plugins/woocommerce/includes/class-wc-download-handler.php @@ -665,10 +665,12 @@ class WC_Download_Handler { * Since we will now render a message instead of serving a download, we should unwind some of the previously set * headers. */ - header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); - header_remove( 'Content-Description;' ); - header_remove( 'Content-Disposition' ); - header_remove( 'Content-Transfer-Encoding' ); + if ( ! headers_sent() ) { + header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); + header_remove( 'Content-Description;' ); + header_remove( 'Content-Disposition' ); + header_remove( 'Content-Transfer-Encoding' ); + } if ( ! strstr( $message, '' . esc_html__( 'Go to shop', 'woocommerce' ) . ''; diff --git a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php index 429157cd455..ef5c6985548 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php @@ -1,6 +1,7 @@ $download_keys[0], ); + // With both the corresponding approved directory rules enabled... WC_Download_Handler::download_product(); - $this->assertEquals( 1, $downloads_served, 'Valid download request (download key 1 - corresponding approved directory rule enabled) was successfully served.' ); + $this->assertEquals( 1, $downloads_served, 'Can successfully download "Book 1".' ); $_GET['key'] = $download_keys[1]; WC_Download_Handler::download_product(); - $this->assertEquals( 2, $downloads_served, 'Valid download request (download key 2 - corresponding approved directory rule enabled) was successfully served.' ); + $this->assertEquals( 2, $downloads_served, 'Can successfully download "Book 2".' ); + // And now with one of the approved directory rules disabled... $approved_directories->disable_by_id( $approved_directory_rule_id ); - $this->expectException( WPDieException::class ); - WC_Download_Handler::download_product(); - $this->assertEquals( 2, $downloads_served, 'Invalid download request (download key 2 - corresponding approved directory rule disabled) was not served.' ); + $_GET['key'] = $download_keys[1]; + $wp_die_happened = false; + + // We do not use expectException() here because we wish to continue testing after wp_die() has + // been triggered inside WC_Download_Handler::download_error(). + try { + WC_Download_Handler::download_product(); + } catch ( WPDieException $e ) { + $wp_die_happened = true; + } + + $this->assertTrue( $wp_die_happened ); + $this->assertEquals( 2, $downloads_served, 'Downloading "Book 2" failed after the corresponding approved directory rule was disabled.' ); $_GET['key'] = $download_keys[0]; WC_Download_Handler::download_product(); - $this->assertEquals( 1, $downloads_served, 'Valid download request (download key 1 - corresponding approved directory rule remained enabled) was still successfully served.' ); + $this->assertEquals( 3, $downloads_served, 'Continued to be able to download "Book 1" (the corresponding rule never having been disabled.' ); // Cleanup. add_action( 'woocommerce_download_file_force', $download_counter ); From fbb96048a2717a5e31fb5f056a99c61e375eb26c Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Mon, 25 Apr 2022 17:39:13 -0700 Subject: [PATCH 150/327] Clean-up. --- .../tests/php/includes/class-wc-download-handler-tests.php | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php index ef5c6985548..2f831cd1e2c 100644 --- a/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php +++ b/plugins/woocommerce/tests/php/includes/class-wc-download-handler-tests.php @@ -1,7 +1,6 @@ Date: Tue, 26 Apr 2022 09:32:52 +0800 Subject: [PATCH 151/327] Reformat ./data/typings/index.d.ts --- packages/js/data/typings/index.d.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/js/data/typings/index.d.ts b/packages/js/data/typings/index.d.ts index b64ef32d445..afa620c3bbd 100644 --- a/packages/js/data/typings/index.d.ts +++ b/packages/js/data/typings/index.d.ts @@ -9,8 +9,6 @@ declare module '@wordpress/data' { resolveSelect: resolveSelect; dispatch: dispatch; }; - - } declare module 'rememo'; From d0e31f9949d3ec8e6f27bb01cc1b0721b909ed54 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 09:34:52 +0800 Subject: [PATCH 152/327] Add is_visible to Extension type --- packages/js/data/src/onboarding/selectors.ts | 1 + .../client/tasks/fills/Marketing/test/index.tsx | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index 474e8bec5ed..49cc396fab6 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -205,4 +205,5 @@ export type Extension = { manage_url: string; name: string; is_built_by_wc: boolean; + is_visible: boolean; }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx index 3fadc329621..addbdb2a1dc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/Marketing/test/index.tsx @@ -16,6 +16,7 @@ const basicPlugins: Extension[] = [ manage_url: '#', image_url: 'basic.jpeg', is_built_by_wc: true, + is_visible: true, }, ]; @@ -27,6 +28,7 @@ const reachPlugins: Extension[] = [ manage_url: '#', image_url: 'reach.jpeg', is_built_by_wc: false, + is_visible: true, }, ]; @@ -38,6 +40,7 @@ const growPlugins: Extension[] = [ manage_url: '#', image_url: 'grow.jpeg', is_built_by_wc: false, + is_visible: true, }, { key: 'grow-plugin-two:extra', @@ -46,6 +49,7 @@ const growPlugins: Extension[] = [ manage_url: '#', image_url: 'grow2.jpeg', is_built_by_wc: false, + is_visible: true, }, ]; From 2398fdf772956a98d30317d000a9d7250a9b01be Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Tue, 26 Apr 2022 10:47:01 +0800 Subject: [PATCH 153/327] Change experiment name to dynamic --- .../client/payments/payment-settings-banner.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx index 32b5e2e535b..1567d8325fe 100644 --- a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx @@ -13,6 +13,7 @@ import { } from '@woocommerce/data'; import { useSelect } from '@wordpress/data'; import { useExperiment } from '@woocommerce/explat'; +import moment from 'moment'; /** * Internal dependencies @@ -172,8 +173,11 @@ export const PaymentsBannerWrapper = () => { } ); + const momentDate = moment().utc(); + const year = momentDate.format( 'YYYY' ); + const month = momentDate.format( 'MM' ); const [ isLoadingExperiment, experimentAssignment ] = useExperiment( - 'woocommerce_payments_settings_banner_2022_04' + `woocommerce_payments_settings_banner_${ year }_${ month }` ); if ( ! isResolving && ! isLoadingExperiment ) { if ( From 3ee2fcaeac2a62e92a40ebe0c17f37b90d0fe422 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 10:55:44 +0800 Subject: [PATCH 154/327] Use getAdminLink to format WC_PAY_SETUP_URL --- .../client/payments/payment-settings-banner.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx index 1567d8325fe..a3fccf2b578 100644 --- a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx @@ -13,6 +13,7 @@ import { } from '@woocommerce/data'; import { useSelect } from '@wordpress/data'; import { useExperiment } from '@woocommerce/explat'; +import { getAdminLink } from '@woocommerce/settings'; import moment from 'moment'; /** @@ -53,8 +54,9 @@ export const PaymentMethodsIcons = () => ( ); const WcPayBanner = () => { - const WC_PAY_SETUP_URL = - './admin.php?page=wc-settings&tab=checkout§ion=woocommerce_payments'; + const WC_PAY_SETUP_URL = getAdminLink( + 'admin.php?page=wc-settings&tab=checkout§ion=woocommerce_payments' + ); return ( From 11f321a334220dd296e999426010702221aaba73 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 11:14:05 +0800 Subject: [PATCH 155/327] Add isWcPaySupported util function for payments --- .../client/payments/payment-recommendations.tsx | 14 ++------------ .../client/payments/payment-settings-banner.tsx | 16 ++-------------- .../woocommerce-admin/client/payments/utils.ts | 12 ++++++++++++ 3 files changed, 16 insertions(+), 26 deletions(-) create mode 100644 plugins/woocommerce-admin/client/payments/utils.ts diff --git a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx index a80b0ae4e6e..c2e04b04e7c 100644 --- a/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-recommendations.tsx @@ -24,6 +24,7 @@ import ExternalIcon from 'gridicons/dist/external'; import './payment-recommendations.scss'; import { createNoticesFromResponse } from '../lib/notices'; import { getPluginSlug } from '~/utils'; +import { isWcPaySupported } from './utils'; const SEE_MORE_LINK = 'https://woocommerce.com/product-category/woocommerce-extensions/payment-gateways/?utm_source=payments_recommendations'; @@ -81,23 +82,12 @@ const PaymentRecommendations: React.FC = () => { }, [ isInstalled ] ); - const supportsWCPayments = - paymentGatewaySuggestions && - paymentGatewaySuggestions.filter( - ( paymentGatewaySuggestion: Plugin ) => { - return ( - paymentGatewaySuggestion.id.indexOf( - 'woocommerce_payments' - ) === 0 - ); - } - ).length === 1; const triggeredPageViewRef = useRef( false ); const shouldShowRecommendations = paymentGatewaySuggestions && paymentGatewaySuggestions.length > 0 && - ! supportsWCPayments && + ! isWcPaySupported( paymentGatewaySuggestions ) && ! isDismissed; useEffect( () => { diff --git a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx index a3fccf2b578..442c609ce3d 100644 --- a/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx +++ b/plugins/woocommerce-admin/client/payments/payment-settings-banner.tsx @@ -7,7 +7,6 @@ import { __ } from '@wordpress/i18n'; import { ONBOARDING_STORE_NAME, PAYMENT_GATEWAYS_STORE_NAME, - Plugin, PaymentGateway, WCDataSelector, } from '@woocommerce/data'; @@ -35,6 +34,7 @@ import { } from '../payments-welcome/cards'; import WCPayBannerImage from './wcpay-banner-image'; import './payment-recommendations.scss'; +import { isWcPaySupported } from './utils'; export const PaymentMethodsIcons = () => (
@@ -148,18 +148,6 @@ export const PaymentsBannerWrapper = () => { }; } ); - const supportsWCPayments = - paymentGatewaySuggestions && - paymentGatewaySuggestions.filter( - ( paymentGatewaySuggestion: Plugin ) => { - return ( - paymentGatewaySuggestion.id.indexOf( - 'woocommerce_payments' - ) === 0 - ); - } - ).length === 1; - const isWcPayInstalled = installedPaymentGateways.some( ( gateway: PaymentGateway ) => { return gateway.id === 'woocommerce_payments'; @@ -183,7 +171,7 @@ export const PaymentsBannerWrapper = () => { ); if ( ! isResolving && ! isLoadingExperiment ) { if ( - supportsWCPayments && + isWcPaySupported( paymentGatewaySuggestions ) && isWcPayInstalled && isWcPayDisabled && experimentAssignment?.variationName === 'treatment' diff --git a/plugins/woocommerce-admin/client/payments/utils.ts b/plugins/woocommerce-admin/client/payments/utils.ts new file mode 100644 index 00000000000..204015f9efb --- /dev/null +++ b/plugins/woocommerce-admin/client/payments/utils.ts @@ -0,0 +1,12 @@ +/** + * External dependencies + */ +import { Plugin } from '@woocommerce/data'; + +export const isWcPaySupported = ( paymentGatewaySuggestions: Plugin[] ) => + paymentGatewaySuggestions && + paymentGatewaySuggestions.filter( ( paymentGatewaySuggestion: Plugin ) => { + return ( + paymentGatewaySuggestion.id.indexOf( 'woocommerce_payments' ) === 0 + ); + } ).length === 1; From 9eba4b93de5fbc4c295cada339f9d79a479de211 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Tue, 26 Apr 2022 12:10:26 +0800 Subject: [PATCH 156/327] Add fallback image --- .../components/List/Item.js | 9 ++++++++- .../components/List/fallback.png | Bin 0 -> 423 bytes 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/fallback.png diff --git a/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js b/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js index af919e6970b..80bdede39d2 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js +++ b/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/Item.js @@ -14,6 +14,7 @@ import { __ } from '@wordpress/i18n'; */ import { Action } from '../Action'; import './List.scss'; +import fallbackImage from './fallback.png'; export const Item = ( { isRecommended, markConfigured, paymentGateway } ) => { const { @@ -60,7 +61,13 @@ export const Item = ( { isRecommended, markConfigured, paymentGateway } ) => { className={ classes } > - { + { + ( e.currentTarget.src = fallbackImage ) + } + />
diff --git a/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/fallback.png b/plugins/woocommerce-admin/client/tasks/fills/PaymentGatewaySuggestions/components/List/fallback.png new file mode 100644 index 0000000000000000000000000000000000000000..8f83f0f558007b844b837a7116340645ff359b3c GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~Uw}`DE0F&D{ri{SzrTI|{tXDe zfB*XJ+ZQ1E@&(BL3>5kC10??A2T=U`&!0dBP!=e4_{j0cPo7@8e)Hp}&o5uSK6&cw z-Fx>l=0B_inkZBfEBD=_p|c;?NPMPaOC`@neqRB zAm^=Efrm-T@mnR@EBgz-zmMY7aPpzOpKR21{nyRs$+PzVh z-qUUsT(c`Z9O<(6)yxZ7rSn6Bjw#-Mnek-ywsY-00`+~9v*uMSjWZ7wS#1jp0R~T3 KKbLh*2~7a2q1PS& literal 0 HcmV?d00001 From af2349c6859b9f602852aa4511e064e08d8b4f70 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Tue, 26 Apr 2022 12:16:10 +0800 Subject: [PATCH 157/327] Changelog --- .../dev-32575-add-generic-fallback-image-payments-task | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/dev-32575-add-generic-fallback-image-payments-task diff --git a/plugins/woocommerce/changelog/dev-32575-add-generic-fallback-image-payments-task b/plugins/woocommerce/changelog/dev-32575-add-generic-fallback-image-payments-task new file mode 100644 index 00000000000..0a201f1b852 --- /dev/null +++ b/plugins/woocommerce/changelog/dev-32575-add-generic-fallback-image-payments-task @@ -0,0 +1,4 @@ +Significance: patch +Type: enhancement + +Add fallback image for payments task gateway icons From 53e0df3c35650f0948020ab2849fc75e961dfce1 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 13:26:19 +0800 Subject: [PATCH 158/327] Add experimental-products-task feature flag --- plugins/woocommerce/client/admin/config/core.json | 3 ++- plugins/woocommerce/client/admin/config/development.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/client/admin/config/core.json b/plugins/woocommerce/client/admin/config/core.json index 9a36495bc54..b7dfee079e6 100644 --- a/plugins/woocommerce/client/admin/config/core.json +++ b/plugins/woocommerce/client/admin/config/core.json @@ -4,13 +4,14 @@ "analytics": true, "coupons": true, "customer-effort-score-tracks": true, + "experimental-products-task": false, "homescreen": true, "marketing": true, "minified-js": false, "mobile-app-banner": true, "navigation": true, "onboarding": true, - "onboarding-tasks": true, + "onboarding-tasks": true, "remote-inbox-notifications": true, "remote-free-extensions": true, "payment-gateway-suggestions": true, diff --git a/plugins/woocommerce/client/admin/config/development.json b/plugins/woocommerce/client/admin/config/development.json index b407ceeeb20..229b9b3bb99 100644 --- a/plugins/woocommerce/client/admin/config/development.json +++ b/plugins/woocommerce/client/admin/config/development.json @@ -4,13 +4,14 @@ "analytics": true, "coupons": true, "customer-effort-score-tracks": true, + "experimental-products-task": true, "homescreen": true, "marketing": true, "minified-js": true, "mobile-app-banner": true, "navigation": true, "onboarding": true, - "onboarding-tasks": true, + "onboarding-tasks": true, "payment-gateway-suggestions": true, "remote-inbox-notifications": true, "remote-free-extensions": true, From d1d441c8241a4592b8dd9b82d73efd8d4a87e735 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 13:26:41 +0800 Subject: [PATCH 159/327] Update wcAdminFeatures type --- plugins/woocommerce-admin/client/typings/global.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce-admin/client/typings/global.d.ts b/plugins/woocommerce-admin/client/typings/global.d.ts index 02c976faa0b..a06d1c49acc 100644 --- a/plugins/woocommerce-admin/client/typings/global.d.ts +++ b/plugins/woocommerce-admin/client/typings/global.d.ts @@ -9,6 +9,7 @@ declare global { analytics: boolean; coupons: boolean; 'customer-effort-score-tracks': boolean; + 'experimental-products-task': boolean; homescreen: boolean; marketing: boolean; 'minified-js': boolean; From 255872e4a335ecf6ff94fe75425d1e49fec48454 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 13:28:15 +0800 Subject: [PATCH 160/327] Update react admin tasks/fills to render experimental-products when the feature flag is on --- .../fills/experimental-products/index.tsx | 20 +++++++++++++++++++ .../client/tasks/fills/index.js | 10 +++++++++- .../client/admin/config/development.json | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx new file mode 100644 index 00000000000..4fa9c683e70 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -0,0 +1,20 @@ +/** + * External dependencies + */ +import { WooOnboardingTask } from '@woocommerce/onboarding'; +import { registerPlugin } from '@wordpress/plugins'; + +const Products = () => { + return

Experimental products

; +}; + +registerPlugin( 'wc-admin-onboarding-task-products', { + // @ts-expect-error 'scope' does exist. @types/wordpress__plugins is outdated. + scope: 'woocommerce-tasks', + render: () => ( + // @ts-expect-error WooOnboardingTask is a pure JS component. + + + + ), +} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.js index a4e8e1b7f7a..4a59fcdb74b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/index.js +++ b/plugins/woocommerce-admin/client/tasks/fills/index.js @@ -4,9 +4,17 @@ import './PaymentGatewaySuggestions'; import './shipping'; import './Marketing'; -import './products'; import './appearance'; import './connect'; import './tax'; import './woocommerce-payments'; import './purchase'; + +if ( + window.wcAdminFeatures && + window.wcAdminFeatures[ 'experimental-products-task' ] +) { + import( './experimental-products' ); +} else { + import( './products' ); +} diff --git a/plugins/woocommerce/client/admin/config/development.json b/plugins/woocommerce/client/admin/config/development.json index 229b9b3bb99..b5960fe710e 100644 --- a/plugins/woocommerce/client/admin/config/development.json +++ b/plugins/woocommerce/client/admin/config/development.json @@ -4,7 +4,7 @@ "analytics": true, "coupons": true, "customer-effort-score-tracks": true, - "experimental-products-task": true, + "experimental-products-task": false, "homescreen": true, "marketing": true, "minified-js": true, From 5618603c1a0f00c7bdce1a67291cabf3479b1e6d Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 13:43:13 +0800 Subject: [PATCH 161/327] Add changelog --- .../changelog/add-32772-exp-product-tasks-feature-flag | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32772-exp-product-tasks-feature-flag diff --git a/plugins/woocommerce/changelog/add-32772-exp-product-tasks-feature-flag b/plugins/woocommerce/changelog/add-32772-exp-product-tasks-feature-flag new file mode 100644 index 00000000000..664191d97bb --- /dev/null +++ b/plugins/woocommerce/changelog/add-32772-exp-product-tasks-feature-flag @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Add experimental product task feature flag & experimental-products component From 8beaf2d9876e63092b2ae83a7939445f1fab1340 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Tue, 26 Apr 2022 01:21:04 -0700 Subject: [PATCH 162/327] Updating an existing downloadable file to a bad path should trigger a warning notice. --- .../changelog/fix-download-file-warnings | 5 + .../abstracts/abstract-wc-product.php | 3 +- .../class-wc-abstract-product-test.php | 127 +++++++++++++++--- 3 files changed, 119 insertions(+), 16 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-download-file-warnings diff --git a/plugins/woocommerce/changelog/fix-download-file-warnings b/plugins/woocommerce/changelog/fix-download-file-warnings new file mode 100644 index 00000000000..a42016eb29b --- /dev/null +++ b/plugins/woocommerce/changelog/fix-download-file-warnings @@ -0,0 +1,5 @@ +Significance: patch +Type: tweak +Comment: Improves a newly added feature, so a further changelog entry is not required. + + diff --git a/plugins/woocommerce/includes/abstracts/abstract-wc-product.php b/plugins/woocommerce/includes/abstracts/abstract-wc-product.php index 71ffba8a229..3e27d48c3d6 100644 --- a/plugins/woocommerce/includes/abstracts/abstract-wc-product.php +++ b/plugins/woocommerce/includes/abstracts/abstract-wc-product.php @@ -1220,6 +1220,7 @@ class WC_Product extends WC_Abstract_Legacy_Product { foreach ( $downloads_array as $download ) { $download_id = $download->get_id(); $is_new = ! isset( $existing_downloads[ $download_id ] ); + $has_changed = ! $is_new && $existing_downloads[ $download_id ]->get_file() !== $downloads_array[ $download_id ]->get_file(); try { $download->check_is_valid( $this->get_object_read() ); @@ -1227,7 +1228,7 @@ class WC_Product extends WC_Abstract_Legacy_Product { } catch ( Exception $e ) { // We only add error messages for newly added downloads (let's not overwhelm the user if there are // multiple existing files which are problematic). - if ( $is_new ) { + if ( $is_new || $has_changed ) { $errors[] = $e->getMessage(); } diff --git a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php index 98f97525e9e..81dd5fff3a0 100644 --- a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php +++ b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php @@ -7,18 +7,25 @@ use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Registe */ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { /** - * @testdox Ensure that individual Downloadable Products follow the rules regarding Approved Download Directories. + * @var Download_Directories $download_directories */ - public function test_fetching_of_approved_downloads() { - /** - * @var Download_Directories $download_directories - */ - $download_directories = wc_get_container()->get( Download_Directories::class ); - $download_directories->set_mode( Download_Directories::MODE_ENABLED ); - $download_directories->add_approved_directory( 'https://always.trusted/' ); - $problematic_file_source_id = $download_directories->add_approved_directory( 'https://new.supplier/' ); + private $download_directories; - $product = WC_Helper_Product::create_downloadable_product( + /** + * @var WC_Product_Simple + */ + private $product; + + /** + * Setup items we need repeatedly across tests in this class. + */ + public function set_up() { + $this->download_directories = wc_get_container()->get( Download_Directories::class ); + $this->download_directories->set_mode( Download_Directories::MODE_ENABLED ); + $this->download_directories->add_approved_directory( 'https://always.trusted/' ); + $this->download_directories->add_approved_directory( 'https://new.supplier/' ); + + $this->product = WC_Helper_Product::create_downloadable_product( array( array( 'name' => 'Book 1', @@ -31,14 +38,21 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { ) ); + parent::set_up(); + } + + /** + * @testdox Ensure that individual Downloadable Products follow the rules regarding Approved Download Directories. + */ + public function test_fetching_of_approved_downloads() { $this->assertCount( 2, - wc_get_product( $product->get_id() )->get_downloads(), + wc_get_product( $this->product->get_id() )->get_downloads(), 'If we load the downloadable product and all of its downloads are stored in trusted directories, we expect to fetch all of them.' ); - $download_directories->disable_by_id( $problematic_file_source_id ); - $product_downloads = wc_get_product( $product->get_id() )->get_downloads(); + $this->download_directories->disable_by_id( $this->download_directories->get_by_url( 'https://new.supplier/' )->get_id() ); + $product_downloads = wc_get_product( $this->product->get_id() )->get_downloads(); $this->assertCount( 2, @@ -51,12 +65,95 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { 'If a trusted download directory rule is disabled, corresponding product downloads will also be marked as disabled.' ); - $download_directories->set_mode( Download_Directories::MODE_DISABLED ); + $this->download_directories->set_mode( Download_Directories::MODE_DISABLED ); $this->assertCount( 2, - wc_get_product( $product->get_id() )->get_downloads(), + wc_get_product( $this->product->get_id() )->get_downloads(), 'Disabling the Approved Download Directories system entirely does not impact our ability to fetch product downloads.' ); } + + /** + * @testdox Confirm that when product downloads are set, the operation is successful (or else errors are raised) as appropriate. + */ + public function test_setting_of_product_downloads() { + $administrator = self::factory()->user->create( array( 'role' => 'administrator' ) ); + $shop_manager = self::factory()->user->create( array( 'role' => 'shop_manager' ) ); + wp_set_current_user( $administrator ); + + $downloads = $this->product->get_downloads(); + $downloads[] = array( + 'id' => '', + 'file' => 'https://not.yet.added/file.pdf', + 'name' => 'A file', + ); + + wp_set_current_user( $administrator ); + $this->product->set_downloads( $downloads ); + $this->product->save(); + $this->assertCount( + 3, + $this->product->get_downloads(), + 'Administrators can add new downloadable files and a matching download directory rule will automatically be generated if necessary.' + ); + + wp_set_current_user( $shop_manager ); + $exception_thrown = false; + $downloads = $this->product->get_downloads(); + $downloads[] = array( + 'id' => '', + 'file' => 'https://also.not.yet.added/file.pdf', + 'name' => 'Another file', + ); + + try { + $this->product->set_downloads( $downloads ); + $this->product->save(); + } catch ( WC_Data_Exception $e ) { + $exception_thrown = true; + } + + $this->assertTrue( + $exception_thrown, + 'If a shop manager attempts to add a new downloadable file (not covered by an approved directory rule) an error is generated.' + ); + + $exception_thrown = false; + $downloads = $this->product->get_downloads(); + $existing_file_key = key( $downloads ); + $downloads[ $existing_file_key ] = array( + 'id' => $existing_file_key, + 'file' => 'https://another.bad.location/file.pdf', + 'name' => 'Yet another file', + ); + + try { + $this->product->set_downloads( $downloads ); + $this->product->save(); + } catch ( WC_Data_Exception $e ) { + $exception_thrown = true; + } + + $this->assertTrue( + $exception_thrown, + 'If a shop manager attempts to change an existing downloadable file to a new path (not covered by an approved directory rule) an error is generated.' + ); + + $downloads = $this->product->get_downloads(); + $downloads[ $existing_file_key ] = array( + 'id' => $existing_file_key, + 'file' => 'https://always.trusted/why-we-test-code.pdf', + 'name' => 'And one more file', + ); + + $this->product->set_downloads( $downloads ); + $this->product->save(); + + $this->assertCount( + 4, + $this->product->get_downloads(), + 'If a shop manager attempts to change an existing downloadable file to a valid path (that is covered by an approved directory rule) that is okay.' + ); + } } From d4c540c56171f9925400c14515d885b9ffc30baf Mon Sep 17 00:00:00 2001 From: Luigi Date: Tue, 26 Apr 2022 10:04:58 +0200 Subject: [PATCH 163/327] Add Mini Cart Block Tracking --- .../includes/blocks/class-wc-blocks-utils.php | 21 +++++++++++++ .../woocommerce/includes/class-wc-tracker.php | 30 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php index 4ecb4c212e5..1465dbf5e30 100644 --- a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php +++ b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php @@ -59,6 +59,27 @@ class WC_Blocks_Utils { ); } + /** + * Get all instances of the specified block on a specific template part. + * + * @param string $block_name The name (id) of a block, e.g. `woocommerce/mini-cart`. + * @param string $template_part_slug The woo page to search, e.g. `header`. + * @return array Array of blocks as returned by parse_blocks(). + */ + public static function get_block_from_template_part( $block_name, $template_part_slug ) { + $template = get_block_template( get_stylesheet() . '//' . $template_part_slug, 'wp_template_part' ); + $blocks = parse_blocks( $template->content ); + + return array_values( + array_filter( + $blocks, + function ( $block ) use ( $block_name ) { + return ( $block_name === $block['blockName'] ); + } + ) + ); + } + /** * Check if a given page contains a particular block. * diff --git a/plugins/woocommerce/includes/class-wc-tracker.php b/plugins/woocommerce/includes/class-wc-tracker.php index dbae0b03978..66327dcef5e 100644 --- a/plugins/woocommerce/includes/class-wc-tracker.php +++ b/plugins/woocommerce/includes/class-wc-tracker.php @@ -166,6 +166,9 @@ class WC_Tracker { // Cart & checkout tech (blocks or shortcodes). $data['cart_checkout'] = self::get_cart_checkout_info(); + // Mini Cart block. + $data['mini_cart_block'] = self::get_mini_cart_info(); + // WooCommerce Admin info. $data['wc_admin_disabled'] = apply_filters( 'woocommerce_admin_disabled', false ) ? 'yes' : 'no'; @@ -776,6 +779,33 @@ class WC_Tracker { ); } + /** + * Get info about the Mini Cart Block. + * + * @return array + */ + public static function get_mini_cart_info() { + $mini_cart_block_name = 'woocommerce/mini-cart'; + $mini_cart_block_data = wc_current_theme_is_fse_theme() ? WC_Blocks_Utils::get_block_from_template_part( $mini_cart_block_name, 'header' ) : + array_reduce( + get_option( 'widget_block' ), + function ( $acc, $block ) use ( $mini_cart_block_name ) { + $parsed_blocks = ! empty( $block ) && is_array( $block ) ? parse_blocks( $block['content'] ) : array(); + if ( ! empty( $parsed_blocks ) && $mini_cart_block_name === $parsed_blocks[0]['blockName'] ) { + array_push( $acc, $parsed_blocks[0] ); + return $acc; + } + return $acc; + }, + array() + ); + + return array( + 'mini_cart_used' => empty( $mini_cart_block_data[0] ) ? 'No' : 'Yes', + 'mini_cart_block_attributes' => empty( $mini_cart_block_data[0] ) ? array() : $mini_cart_block_data[0]['attrs'], + ); + } + /** * Get info about WooCommerce Mobile App usage * From 650fe593a1acf1fe57590d190df8c6643eb36914 Mon Sep 17 00:00:00 2001 From: Luigi Date: Tue, 26 Apr 2022 11:23:44 +0200 Subject: [PATCH 164/327] add changelog --- plugins/woocommerce/changelog/add-track_mini_cart_block | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-track_mini_cart_block diff --git a/plugins/woocommerce/changelog/add-track_mini_cart_block b/plugins/woocommerce/changelog/add-track_mini_cart_block new file mode 100644 index 00000000000..ec42fc7ed2f --- /dev/null +++ b/plugins/woocommerce/changelog/add-track_mini_cart_block @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Adds usage data for the Mini Cart Block to the WC Tracker snapshot. From bd096a6edc8a666f3903cfa1f35cc1ebca95f13b Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 07:07:15 -0700 Subject: [PATCH 165/327] Use glob pattern to cache multiple nested Composer vendor paths --- .github/workflows/ci.yml | 4 ++-- .github/workflows/pr-code-coverage.yml | 2 +- .github/workflows/pr-code-sniff.yml | 2 +- .github/workflows/pr-smoke-test.yml | 2 +- .github/workflows/pr-unit-tests.yml | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c5ddb4a4e2..f877619409b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,7 +60,7 @@ jobs: path: | ~/.pnpm-store plugins/woocommerce/packages - plugins/woocommerce/vendor + plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM @@ -79,9 +79,9 @@ jobs: - name: Add PHP8 Compatibility. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then + cd plugins/woocommerce curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip - cd plugins/woocommerce composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index a4c068e56f7..b3c4e3c8e4d 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -46,7 +46,7 @@ jobs: path: | ~/.pnpm-store plugins/woocommerce/packages - plugins/woocommerce/vendor + plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index 54213a6f277..bbf0b8ff1e8 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -36,7 +36,7 @@ jobs: path: | ~/.pnpm-store plugins/woocommerce/packages - plugins/woocommerce/vendor + plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 4c6ccaa89c4..6e01cb3ab36 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -33,7 +33,7 @@ jobs: path: | ~/.pnpm-store package/woocommerce/plugins/woocommerce/packages - package/woocommerce/plugins/woocommerce/vendor + package/woocommerce/plugins/woocommerce/**/vendor key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 6b3670e796e..2ac7137a33b 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -58,7 +58,7 @@ jobs: path: | ~/.pnpm-store plugins/woocommerce/packages - plugins/woocommerce/vendor + plugins/woocommerce/**/vendor key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM @@ -75,12 +75,12 @@ jobs: run: | pnpm nx build:feature-config woocommerce - - name: Add PHP8 Compatibility. + - name: Add PHP8 Compatibility. # Comment. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then + cd plugins/woocommerce curl -L https://github.com/woocommerce/phpunit/archive/add-compatibility-with-php8-to-phpunit-7.zip -o /tmp/phpunit-7.5-fork.zip unzip -d /tmp/phpunit-7.5-fork /tmp/phpunit-7.5-fork.zip - cd plugins/woocommerce composer bin phpunit config --unset platform composer bin phpunit config repositories.0 '{"type": "path", "url": "/tmp/phpunit-7.5-fork/phpunit-add-compatibility-with-php8-to-phpunit-7", "options": {"symlink": false}}' composer bin phpunit require --dev -W phpunit/phpunit:@dev --ignore-platform-reqs From c78577ee22a2d185835dacfa1e07f27e2cfa521e Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 07:28:20 -0700 Subject: [PATCH 166/327] Remove comment to test cached Composer Unit tests --- .github/workflows/pr-unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 2ac7137a33b..293ae8928c5 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -75,7 +75,7 @@ jobs: run: | pnpm nx build:feature-config woocommerce - - name: Add PHP8 Compatibility. # Comment. + - name: Add PHP8 Compatibility. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then cd plugins/woocommerce From fc705cff77086541fa3dd795b9f8ea5ef52bc2dc Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 07:47:50 -0700 Subject: [PATCH 167/327] Use glob pattern for hash key --- .github/workflows/ci.yml | 2 +- .github/workflows/pr-code-coverage.yml | 2 +- .github/workflows/pr-code-sniff.yml | 2 +- .github/workflows/pr-smoke-test.yml | 2 +- .github/workflows/pr-unit-tests.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f877619409b..65d974cc16d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,7 @@ jobs: ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor - key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index b3c4e3c8e4d..ed50f2003d3 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -47,7 +47,7 @@ jobs: ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor - key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index bbf0b8ff1e8..94a14e0e156 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -37,7 +37,7 @@ jobs: ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor - key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 6e01cb3ab36..40662d4e395 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -34,7 +34,7 @@ jobs: ~/.pnpm-store package/woocommerce/plugins/woocommerce/packages package/woocommerce/plugins/woocommerce/**/vendor - key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 293ae8928c5..72dcaa6ca44 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -59,7 +59,7 @@ jobs: ~/.pnpm-store plugins/woocommerce/packages plugins/woocommerce/**/vendor - key: ${{ runner.os }}-npm-composer-${{ hashFiles('plugins/woocommerce/composer.lock', '**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm From 7640715150c3e32552c32394909ed414ec6b19b3 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 08:04:20 -0700 Subject: [PATCH 168/327] Test cached results --- .github/workflows/pr-unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 72dcaa6ca44..97a345de534 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -75,7 +75,7 @@ jobs: run: | pnpm nx build:feature-config woocommerce - - name: Add PHP8 Compatibility. + - name: Add PHP8 Compatibility. # Comment. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then cd plugins/woocommerce From d6a1f7212c23911827bb57291a9a64e38a4e9bbc Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 08:20:32 -0700 Subject: [PATCH 169/327] Remove comment --- .github/workflows/pr-unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 97a345de534..72dcaa6ca44 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -75,7 +75,7 @@ jobs: run: | pnpm nx build:feature-config woocommerce - - name: Add PHP8 Compatibility. # Comment. + - name: Add PHP8 Compatibility. run: | if [ "$(php -r "echo version_compare(PHP_VERSION,'8.0','>=');")" ]; then cd plugins/woocommerce From 7c32432bf1a0bc2b221f094ba79609cfe9117436 Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 26 Apr 2022 13:03:30 -0700 Subject: [PATCH 170/327] Add feature flag experimental-import-products-task and base component --- .../experimental-import-products/index.tsx | 20 +++++++++++++++++++ .../client/tasks/fills/index.js | 11 ++++++++++ .../woocommerce/client/admin/config/core.json | 1 + .../client/admin/config/development.json | 1 + 4 files changed, 33 insertions(+) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx new file mode 100644 index 00000000000..cdd7e3d30f7 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -0,0 +1,20 @@ +/** + * External dependencies + */ +import { WooOnboardingTask } from '@woocommerce/onboarding'; +import { registerPlugin } from '@wordpress/plugins'; + +const Products = () => { + return

Experimental import products

; +}; + +registerPlugin( 'wc-admin-onboarding-task-products', { + // @ts-expect-error 'scope' does exist. @types/wordpress__plugins is outdated. + scope: 'woocommerce-tasks', + render: () => ( + // @ts-expect-error WooOnboardingTask is a pure JS component. + + + + ), +} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/index.js b/plugins/woocommerce-admin/client/tasks/fills/index.js index 4a59fcdb74b..bfb0521f95e 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/index.js +++ b/plugins/woocommerce-admin/client/tasks/fills/index.js @@ -1,6 +1,8 @@ /** * Internal dependencies */ +import { getAdminSetting } from '~/utils/admin-settings'; + import './PaymentGatewaySuggestions'; import './shipping'; import './Marketing'; @@ -10,7 +12,16 @@ import './tax'; import './woocommerce-payments'; import './purchase'; +const onboardingData = getAdminSetting( 'onboarding' ); + if ( + window.wcAdminFeatures && + window.wcAdminFeatures[ 'experimental-import-products-task' ] && + onboardingData?.profile?.selling_venues && + onboardingData?.profile?.selling_venues !== 'no' +) { + import( './experimental-import-products' ); +} else if ( window.wcAdminFeatures && window.wcAdminFeatures[ 'experimental-products-task' ] ) { diff --git a/plugins/woocommerce/client/admin/config/core.json b/plugins/woocommerce/client/admin/config/core.json index b7dfee079e6..62afb15fa73 100644 --- a/plugins/woocommerce/client/admin/config/core.json +++ b/plugins/woocommerce/client/admin/config/core.json @@ -5,6 +5,7 @@ "coupons": true, "customer-effort-score-tracks": true, "experimental-products-task": false, + "experimental-import-products-task": false, "homescreen": true, "marketing": true, "minified-js": false, diff --git a/plugins/woocommerce/client/admin/config/development.json b/plugins/woocommerce/client/admin/config/development.json index b5960fe710e..7272864dc08 100644 --- a/plugins/woocommerce/client/admin/config/development.json +++ b/plugins/woocommerce/client/admin/config/development.json @@ -5,6 +5,7 @@ "coupons": true, "customer-effort-score-tracks": true, "experimental-products-task": false, + "experimental-import-products-task": false, "homescreen": true, "marketing": true, "minified-js": true, From 93b9c48a854a453fc0ac38ce2339d3846ae8f71b Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 26 Apr 2022 17:17:45 -0300 Subject: [PATCH 171/327] Fix link url --- .../client/activity-panel/activity-panel.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js index d192b225154..139f556325a 100644 --- a/plugins/woocommerce-admin/client/activity-panel/activity-panel.js +++ b/plugins/woocommerce-admin/client/activity-panel/activity-panel.js @@ -6,7 +6,7 @@ import { lazy, useState } from '@wordpress/element'; import { useDispatch, useSelect } from '@wordpress/data'; import { uniqueId, find } from 'lodash'; import { Icon, help as helpIcon, external } from '@wordpress/icons'; -import { getAdminLink, getSetting } from '@woocommerce/settings'; +import { getAdminLink } from '@woocommerce/settings'; import { H, Section } from '@woocommerce/components'; import { ONBOARDING_STORE_NAME, @@ -37,6 +37,7 @@ import { } from '../homescreen/activity-panel/orders/utils'; import { getUnapprovedReviews } from '../homescreen/activity-panel/reviews/utils'; import { ABBREVIATED_NOTIFICATION_SLOT_NAME } from './panels/inbox/abbreviated-notifications-panel'; +import { getAdminSetting } from '~/utils/admin-settings'; const HelpPanel = lazy( () => import( /* webpackChunkName: "activity-panels-help" */ './panels/help' ) @@ -286,9 +287,9 @@ export const ActivityPanel = ( { isEmbedded, query } ) => { name: 'previewSite', title: __( 'Preview site', 'woocommerce' ), icon: , - visible: query.page === 'wc-admin' && query.task === 'appearance', + visible: isHomescreen() && query.task === 'appearance', onClick: () => { - window.open( getSetting( 'siteUrl' ) ); + window.open( getAdminSetting( 'siteUrl' ) ); recordEvent( 'wcadmin_tasklist_previewsite', previewSiteBtnTrackData @@ -302,9 +303,9 @@ export const ActivityPanel = ( { isEmbedded, query } ) => { name: 'previewStore', title: __( 'Preview store', 'woocommerce' ), icon: , - visible: isHomescreen(), + visible: isHomescreen() && query.task !== 'appearance', onClick: () => { - window.open( getSetting( 'siteUrl' ) ); + window.open( getAdminSetting( 'shopUrl' ) ); recordEvent( 'wcadmin_previewstore_click' ); return null; From 3d68bdbded9ddaef407725edb3defd7750c495da Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 26 Apr 2022 14:15:11 -0700 Subject: [PATCH 172/327] Add CardList component --- .../experimental-import-products/CardList.tsx | 30 ++++++++ .../experimental-import-products/cards.scss | 76 +++++++++++++++++++ .../importTypes.tsx | 27 +++++++ .../experimental-import-products/index.tsx | 13 +++- 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx new file mode 100644 index 00000000000..81bd5343c71 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx @@ -0,0 +1,30 @@ +/** + * External dependencies + */ +import { List } from '@woocommerce/components'; + +/** + * Internal dependencies + */ +import './cards.scss'; + +type Card = { + key: string; + title: string; + content: string; + before: JSX.Element; +}; + +type CardListProps = { + items: Card[]; +}; + +const CardList: React.FC< CardListProps > = ( { items } ) => { + return ( +
+ +
+ ); +}; + +export default CardList; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss new file mode 100644 index 00000000000..8c47aac8e18 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -0,0 +1,76 @@ +.woocommerce-products-card-list { + a { + color: #007cba; + } + + .woocommerce-list__item { + float: left; + border-radius: 3px; + border: 1px solid #dcdcde; + width: 263px; + height: 226px; + margin: 12px; + text-align: center; + align-items: start; + + &:hover { + background-color: #fff; + border: 1.5px solid #007cba; + } + + .woocommerce-list__item-inner { + padding-top: 40px; + flex-flow: wrap; + justify-content: center; + } + + &:not(.transitions-disabled) { + &.woocommerce-list__item-enter { + transform: none; + } + + &.woocommerce-list__item-enter-active { + transform: none; + } + + &.woocommerce-list__item-exit-active { + display: none; + } + } + + > .woocommerce-list__item-inner { + box-shadow: none; + } + } + + .woocommerce-list__item-text { + margin-top: 16px; + .woocommerce-list__item-content { + margin-top: 16px; + } + } + + .woocommerce-list__item-before { + background: #f0f6fc; + padding: 8px; + border-radius: 50%; + } + + .woocommerce-list__item-title { + color: $gray-900; + line-height: 16px; + font-weight: 600; + } + + .woocommerce-list__item-content { + color: $gray-700; + line-height: 16px; + font-weight: 400; + } + + .woocommerce-list__item-after { + svg { + fill: $gray-600; + } + } +} diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx new file mode 100644 index 00000000000..fdf03c37c8f --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx @@ -0,0 +1,27 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import PageIcon from 'gridicons/dist/pages'; +import ReblogIcon from 'gridicons/dist/reblog'; + +export const importTypes = [ + { + key: 'from-csv' as const, + title: __( 'FROM A CSV FILE', 'woocommerce' ), + content: __( + 'Import all products at once by uploading a CSV file.', + 'woocommerce' + ), + before: , + }, + { + key: 'from-cart2cart' as const, + title: __( 'FROM CART2CART', 'woocommerce' ), + content: __( + 'Migrate all store data like products, customers, orders and much more in no time and in a fully automated way', + 'woocommerce' + ), + before: , + }, +]; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index cdd7e3d30f7..c7ee6b3d660 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -4,8 +4,19 @@ import { WooOnboardingTask } from '@woocommerce/onboarding'; import { registerPlugin } from '@wordpress/plugins'; +/** + * Internal dependencies + */ +import CardList from './CardList'; +import { importTypes } from './importTypes'; + const Products = () => { - return

Experimental import products

; + return ( +
+

Import products

+ +
+ ); }; registerPlugin( 'wc-admin-onboarding-task-products', { From 671ce7291ccaac9a43b7cbc06fc7afcda3b93fd3 Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 26 Apr 2022 18:00:47 -0700 Subject: [PATCH 173/327] Add changelog --- .../changelog/add-32789-add-experimental-import-products | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32789-add-experimental-import-products diff --git a/plugins/woocommerce/changelog/add-32789-add-experimental-import-products b/plugins/woocommerce/changelog/add-32789-add-experimental-import-products new file mode 100644 index 00000000000..95927d32766 --- /dev/null +++ b/plugins/woocommerce/changelog/add-32789-add-experimental-import-products @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Add experimental import product task feature flag & experimental-import products component \ No newline at end of file From 57c1c0bc1c41c9e32a86d9ce06b56b68a65a679a Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 26 Apr 2022 18:28:56 -0700 Subject: [PATCH 174/327] Freeze Ubuntu release to 20.04 for best practice and consistency --- .github/workflows/build-release-zip-file.yml | 2 +- .github/workflows/build-release.yml | 6 +++--- .github/workflows/ci.yml | 2 +- .github/workflows/mirrors.yml | 4 ++-- .github/workflows/nightly-builds.yml | 4 ++-- .github/workflows/pr-build-and-e2e-tests.yml | 8 ++++---- .github/workflows/pr-code-coverage.yml | 2 +- .github/workflows/pr-code-sniff.yml | 2 +- .github/workflows/pr-lint-monorepo.yml | 2 +- .github/workflows/pr-lint-test-js.yml | 2 +- .github/workflows/pr-project-label.yml | 2 +- .github/workflows/pr-smoke-test.yml | 2 +- .github/workflows/pr-unit-tests.yml | 2 +- .../workflows/pull-request-post-merge-processing.yml | 2 +- .github/workflows/release-code-freeze.yml | 2 +- .github/workflows/smoke-test-daily-site-check.yml | 2 +- .github/workflows/smoke-test-daily.yml | 6 +++--- .github/workflows/smoke-test-release.yml | 6 +++--- .github/workflows/stalebot.yml | 2 +- .github/workflows/triage-label.yml | 2 +- .github/workflows/triage-replies.yml | 10 +++++----- .github/workflows/update-feedback-labels.yml | 2 +- 22 files changed, 37 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index 4d221f45cb0..f0b92090401 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -9,7 +9,7 @@ on: jobs: build: name: Build release zip file - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 356ae9da4ce..99089114de2 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -5,7 +5,7 @@ on: jobs: build: name: Build release asset - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -25,7 +25,7 @@ jobs: if: github.event.release.prerelease == false && github.event.release.draft == false && github.repository_owner == 'woocommerce' name: Update Code Reference needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Invoke Code Reference build and deploy workflow uses: aurelien-baudet/workflow-dispatch@v2 @@ -38,7 +38,7 @@ jobs: run-release-smoke-tests: name: Execute Smoke test release needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Invoke release smoke testing workflow uses: aurelien-baudet/workflow-dispatch@v2 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65d974cc16d..887a9dd1905 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: test: name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} timeout-minutes: 20 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 continue-on-error: ${{ matrix.wp == 'nightly' }} strategy: fail-fast: false diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index 514b14b179f..82f35bda1ab 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -6,7 +6,7 @@ jobs: build: if: github.repository == 'woocommerce/woocommerce' name: Build WooCommerce zip - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -26,7 +26,7 @@ jobs: mirror: if: github.repository == 'woocommerce/woocommerce' name: Push to Mirror - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 needs: [build] steps: - name: Create directories diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 126d37523ac..7e4f88448d3 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -10,7 +10,7 @@ jobs: fail-fast: false matrix: build: [trunk] - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -32,7 +32,7 @@ jobs: max_releases: 1 update: name: Update nightly tag commit ref - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Update nightly tag uses: richardsimko/github-tag-action@v1.0.5 diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 3408882d585..a4ca35b3300 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -7,7 +7,7 @@ concurrency: jobs: build: name: Build zip for PR - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -29,7 +29,7 @@ jobs: e2e-tests-run: name: Runs E2E tests. - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 needs: [build] steps: - name: Create dirs. @@ -95,7 +95,7 @@ jobs: api-tests-run: name: Runs API tests. - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 needs: [build] steps: - name: Create dirs. @@ -161,7 +161,7 @@ jobs: k6-tests-run: name: Runs k6 Performance tests - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 needs: [build] steps: - name: Create dirs. diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index ed50f2003d3..c683295a36d 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -11,7 +11,7 @@ jobs: test: name: Code coverage (PHP 7.4, WP Latest) timeout-minutes: 20 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 services: database: image: mysql:5.6 diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index 94a14e0e156..583499f8c65 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -11,7 +11,7 @@ jobs: test: name: Code sniff (PHP 7.4, WP Latest) timeout-minutes: 15 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 diff --git a/.github/workflows/pr-lint-monorepo.yml b/.github/workflows/pr-lint-monorepo.yml index 7c952b3a641..021296ad674 100644 --- a/.github/workflows/pr-lint-monorepo.yml +++ b/.github/workflows/pr-lint-monorepo.yml @@ -6,7 +6,7 @@ concurrency: jobs: changelogger_used: name: Changelogger use - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 5 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/pr-lint-test-js.yml b/.github/workflows/pr-lint-test-js.yml index c2e6c1518d7..b13f9c9d4ab 100644 --- a/.github/workflows/pr-lint-test-js.yml +++ b/.github/workflows/pr-lint-test-js.yml @@ -13,7 +13,7 @@ concurrency: jobs: lint-test-js: name: Lint and Test JS - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Check out repository code uses: actions/checkout@v3 diff --git a/.github/workflows/pr-project-label.yml b/.github/workflows/pr-project-label.yml index cb679c00bc1..8c189eace6b 100644 --- a/.github/workflows/pr-project-label.yml +++ b/.github/workflows/pr-project-label.yml @@ -10,7 +10,7 @@ concurrency: jobs: label_project: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/labeler@v3 with: diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 40662d4e395..f2e65c43b7a 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -13,7 +13,7 @@ jobs: prcheck: name: Smoke test a pull request. if: "${{ contains(github.event.label.name, 'run: smoke tests') }}" - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Create dirs. run: | diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 72dcaa6ca44..95057adbbc9 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -12,7 +12,7 @@ jobs: test: name: PHP ${{ matrix.php }} WP ${{ matrix.wp }} timeout-minutes: 20 - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 continue-on-error: ${{ matrix.wp == 'nightly' }} strategy: fail-fast: false diff --git a/.github/workflows/pull-request-post-merge-processing.yml b/.github/workflows/pull-request-post-merge-processing.yml index 53d5611feef..08501ca1f9e 100644 --- a/.github/workflows/pull-request-post-merge-processing.yml +++ b/.github/workflows/pull-request-post-merge-processing.yml @@ -7,7 +7,7 @@ jobs: process-pull-request-after-merge: name: "Process a pull request after it's merged" if: github.event.pull_request.merged == true - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: "Get the action scripts" run: | diff --git a/.github/workflows/release-code-freeze.yml b/.github/workflows/release-code-freeze.yml index 30a0e0e3058..eb645fbaabb 100644 --- a/.github/workflows/release-code-freeze.yml +++ b/.github/workflows/release-code-freeze.yml @@ -6,7 +6,7 @@ on: jobs: maybe-create-next-milestone-and-release-branch: name: "Maybe create next milestone and release branch" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: "Get the action script" run: | diff --git a/.github/workflows/smoke-test-daily-site-check.yml b/.github/workflows/smoke-test-daily-site-check.yml index 5fdb80f819b..ac71633d3b1 100644 --- a/.github/workflows/smoke-test-daily-site-check.yml +++ b/.github/workflows/smoke-test-daily-site-check.yml @@ -5,7 +5,7 @@ on: jobs: ping_site: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 name: Check site and notify if not found steps: - name: Check site status diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 56e7ca1eba6..e57d54d371a 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -5,7 +5,7 @@ on: jobs: login-run: name: Daily smoke test on trunk. - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Create dirs. run: | @@ -54,7 +54,7 @@ jobs: build: name: Build zip for PR - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Checkout code uses: actions/checkout@v3 @@ -76,7 +76,7 @@ jobs: test-plugins: name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 needs: [build] strategy: fail-fast: false diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 684c4b57795..c06fe653d89 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -8,7 +8,7 @@ on: jobs: login-run: name: Daily smoke test on release. - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - name: Create dirs. run: | @@ -57,7 +57,7 @@ jobs: pnpm exec wc-api-tests test api test-wp-version: name: Smoke test on L-${{ matrix.wp }} WordPress version - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 strategy: matrix: wp: ['1', '2'] @@ -118,7 +118,7 @@ jobs: test-plugins: name: Smoke tests with ${{ matrix.plugin }} plugin installed - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/stalebot.yml b/.github/workflows/stalebot.yml index f6bd4bcb592..dc7e2c9b034 100644 --- a/.github/workflows/stalebot.yml +++ b/.github/workflows/stalebot.yml @@ -7,7 +7,7 @@ jobs: stale: if: | ! contains(github.event.issue.labels.*.name, 'type: enhancement') - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/stale@v3 with: diff --git a/.github/workflows/triage-label.yml b/.github/workflows/triage-label.yml index 992ccea1258..ef9c5852437 100644 --- a/.github/workflows/triage-label.yml +++ b/.github/workflows/triage-label.yml @@ -6,7 +6,7 @@ on: jobs: add_label: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - uses: actions-ecosystem/action-add-labels@v1 diff --git a/.github/workflows/triage-replies.yml b/.github/workflows/triage-replies.yml index 78295cf08bb..61ab77b2198 100644 --- a/.github/workflows/triage-replies.yml +++ b/.github/workflows/triage-replies.yml @@ -6,7 +6,7 @@ on: jobs: add-dev-comment: if: "github.event.label.name == 'needs: developer feedback'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: issues: write steps: @@ -26,7 +26,7 @@ jobs: }) add-reproduction-comment: if: "github.event.label.name == 'status: reproduction'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: issues: write steps: @@ -45,7 +45,7 @@ jobs: }) add-support-comment: if: "github.event.label.name == 'type: support request'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: issues: write steps: @@ -85,7 +85,7 @@ jobs: }) add-votes-comment: if: "github.event.label.name == 'needs: votes'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: issues: write steps: @@ -120,7 +120,7 @@ jobs: }) fill-template-comment: if: "github.event.label.name == 'needs: template'" - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 permissions: issues: write steps: diff --git a/.github/workflows/update-feedback-labels.yml b/.github/workflows/update-feedback-labels.yml index 9c055c4d33e..34caa1c31a1 100644 --- a/.github/workflows/update-feedback-labels.yml +++ b/.github/workflows/update-feedback-labels.yml @@ -9,7 +9,7 @@ jobs: github.event.issue && github.event.issue.state == 'open' && contains(github.event.issue.labels.*.name, 'needs: author feedback') - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Add has feedback uses: actions-ecosystem/action-add-labels@v1 From 3b654321b15038c29220b9725dd13d991067a97a Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 26 Apr 2022 20:14:47 -0700 Subject: [PATCH 175/327] Remove unnecessary style --- .../tasks/fills/experimental-import-products/cards.scss | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index 8c47aac8e18..af118cdc476 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -67,10 +67,4 @@ line-height: 16px; font-weight: 400; } - - .woocommerce-list__item-after { - svg { - fill: $gray-600; - } - } } From 474494dcab55ff9baa77bc6be1bee4b92bae4132 Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 14:42:38 +0200 Subject: [PATCH 176/327] Add LV postcode formatting and tests --- plugins/woocommerce/includes/wc-formatting-functions.php | 5 +++++ .../tests/legacy/unit-tests/formatting/functions.php | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/plugins/woocommerce/includes/wc-formatting-functions.php b/plugins/woocommerce/includes/wc-formatting-functions.php index 2bb63a68b5d..ef0fbff2267 100644 --- a/plugins/woocommerce/includes/wc-formatting-functions.php +++ b/plugins/woocommerce/includes/wc-formatting-functions.php @@ -993,6 +993,11 @@ function wc_format_postcode( $postcode, $country ) { case 'NL': $postcode = substr_replace( $postcode, ' ', 4, 0 ); break; + case 'LV': + if ( preg_match( '/(?:LV)?-?(\d+)/i', $postcode, $matches ) ) { + $postcode = count( $matches ) >= 2 ? "LV-$matches[1]" : $postcode; + } + break; } return apply_filters( 'woocommerce_format_postcode', trim( $postcode ), $country ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index e613d9341ed..5c918148eea 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -801,6 +801,12 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // JP postcode. $this->assertEquals( '999-9999', wc_format_postcode( '9999999', 'JP' ) ); + // Test LV postcode without mandatory country code. + $this->assertEquals( 'LV-1337', wc_format_postcode( '1337', 'LV' ) ); + + // Test LV postcode with incorrect format (no dash). + $this->assertEquals( 'LV-1337', wc_format_postcode( 'lv1337', 'LV' ) ); + // Test empty NL postcode. $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); } From 5991311a33e47b52ec69135d05f87eb601966ad4 Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:14:02 +0200 Subject: [PATCH 177/327] Add wc_format_postcode tests for IE and PT postcodes --- .../tests/legacy/unit-tests/formatting/functions.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index 5c918148eea..c6466f18f80 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -795,6 +795,12 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // UK postcode. $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); + // IE postcode. + $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); + + // PT postcode. + $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); + // BR/PL postcode. $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); From 3081fa593f45fa0b8dd3a24e41f193b7e8fe736c Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:44:48 +0200 Subject: [PATCH 178/327] Add wc_format_postcode tests to new test directory --- .../includes/wc-formatting-functions-test.php | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php index 93dfda3b314..9252e6e3d55 100644 --- a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php @@ -17,4 +17,33 @@ class WC_Formatting_Functions_Test extends \WC_Unit_Test_Case { $this->assertEquals( 'DUMMYCOUPON', wc_sanitize_coupon_code( 'DUMMYCOUPON' ) ); $this->assertEquals( 'a&a', wc_sanitize_coupon_code( 'a&a' ) ); } + + /** + * Test wc_format_postcode() function. + */ + public function test_wc_format_postcode() { + // Generic postcode. + $this->assertEquals( '02111', wc_format_postcode( ' 02111 ', 'US' ) ); + + // US 9-digit postcode. + $this->assertEquals( '02111-9999', wc_format_postcode( ' 021119999 ', 'US' ) ); + + // UK postcode. + $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); + + // IE postcode. + $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); + + // PT postcode. + $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); + + // BR/PL postcode. + $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); + + // JP postcode. + $this->assertEquals( '999-9999', wc_format_postcode( '9999999', 'JP' ) ); + + // Test empty NL postcode. + $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); + } } From ec82f8865cd74e68059b8a848ca2ffff690cbace Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:46:01 +0200 Subject: [PATCH 179/327] Restore legacy tests --- .../tests/legacy/unit-tests/formatting/functions.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index c6466f18f80..5c918148eea 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -795,12 +795,6 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // UK postcode. $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); - // IE postcode. - $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); - - // PT postcode. - $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); - // BR/PL postcode. $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); From 80e8157c1205ddc5be609bb4a467ee14d0cc1779 Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:52:46 +0200 Subject: [PATCH 180/327] Move tests to new tests dir --- .../tests/legacy/unit-tests/formatting/functions.php | 6 ------ .../tests/php/includes/wc-formatting-functions-test.php | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index 5c918148eea..e613d9341ed 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -801,12 +801,6 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // JP postcode. $this->assertEquals( '999-9999', wc_format_postcode( '9999999', 'JP' ) ); - // Test LV postcode without mandatory country code. - $this->assertEquals( 'LV-1337', wc_format_postcode( '1337', 'LV' ) ); - - // Test LV postcode with incorrect format (no dash). - $this->assertEquals( 'LV-1337', wc_format_postcode( 'lv1337', 'LV' ) ); - // Test empty NL postcode. $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); } diff --git a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php index 9252e6e3d55..6670e65de0f 100644 --- a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php @@ -43,6 +43,12 @@ class WC_Formatting_Functions_Test extends \WC_Unit_Test_Case { // JP postcode. $this->assertEquals( '999-9999', wc_format_postcode( '9999999', 'JP' ) ); + // Test LV postcode without mandatory country code. + $this->assertEquals( 'LV-1337', wc_format_postcode( '1337', 'LV' ) ); + + // Test LV postcode with incorrect format (no dash). + $this->assertEquals( 'LV-1337', wc_format_postcode( 'lv1337', 'LV' ) ); + // Test empty NL postcode. $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); } From fab094dcbe0355167c1efdf3e8a45c7cc8e7b51d Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:14:02 +0200 Subject: [PATCH 181/327] Add wc_format_postcode tests for IE and PT postcodes --- .../tests/legacy/unit-tests/formatting/functions.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index e613d9341ed..ce0cc6ccd74 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -795,6 +795,12 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // UK postcode. $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); + // IE postcode. + $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); + + // PT postcode. + $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); + // BR/PL postcode. $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); From 004bfeabf50c7278e225e0199e977c63fe698fbe Mon Sep 17 00:00:00 2001 From: Saggre Date: Tue, 1 Feb 2022 15:46:01 +0200 Subject: [PATCH 182/327] Restore legacy tests --- .../tests/legacy/unit-tests/formatting/functions.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index ce0cc6ccd74..e613d9341ed 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -795,12 +795,6 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // UK postcode. $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); - // IE postcode. - $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); - - // PT postcode. - $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); - // BR/PL postcode. $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); From 46ae32161c9933fedb9c1d8054438a78ec59aac0 Mon Sep 17 00:00:00 2001 From: Saggre Date: Wed, 23 Mar 2022 10:41:13 +0200 Subject: [PATCH 183/327] Remove duplicate tests --- .../php/includes/wc-formatting-functions-test.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php index 6670e65de0f..545f30e0a35 100644 --- a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php @@ -22,15 +22,6 @@ class WC_Formatting_Functions_Test extends \WC_Unit_Test_Case { * Test wc_format_postcode() function. */ public function test_wc_format_postcode() { - // Generic postcode. - $this->assertEquals( '02111', wc_format_postcode( ' 02111 ', 'US' ) ); - - // US 9-digit postcode. - $this->assertEquals( '02111-9999', wc_format_postcode( ' 021119999 ', 'US' ) ); - - // UK postcode. - $this->assertEquals( 'PCRN 1ZZ', wc_format_postcode( 'pcrn1zz', 'GB' ) ); - // IE postcode. $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); @@ -51,5 +42,6 @@ class WC_Formatting_Functions_Test extends \WC_Unit_Test_Case { // Test empty NL postcode. $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); + } } From 19d230af6336bb8582fd123d2ced7250c92c4ebd Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 27 Apr 2022 11:40:51 +0530 Subject: [PATCH 184/327] Merge latvian formatting test with other tests for DRY. --- .../unit-tests/formatting/functions.php | 6 +++++ .../includes/wc-formatting-functions-test.php | 27 ------------------- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php index e613d9341ed..6496a0f903c 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/formatting/functions.php @@ -803,6 +803,12 @@ class WC_Tests_Formatting_Functions extends WC_Unit_Test_Case { // Test empty NL postcode. $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); + + // Test LV postcode without mandatory country code. + $this->assertEquals( 'LV-1337', wc_format_postcode( '1337', 'LV' ) ); + + // Test LV postcode with incorrect format (no dash). + $this->assertEquals( 'LV-1337', wc_format_postcode( 'lv1337', 'LV' ) ); } /** diff --git a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php index 545f30e0a35..93dfda3b314 100644 --- a/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php +++ b/plugins/woocommerce/tests/php/includes/wc-formatting-functions-test.php @@ -17,31 +17,4 @@ class WC_Formatting_Functions_Test extends \WC_Unit_Test_Case { $this->assertEquals( 'DUMMYCOUPON', wc_sanitize_coupon_code( 'DUMMYCOUPON' ) ); $this->assertEquals( 'a&a', wc_sanitize_coupon_code( 'a&a' ) ); } - - /** - * Test wc_format_postcode() function. - */ - public function test_wc_format_postcode() { - // IE postcode. - $this->assertEquals( 'D02 AF30', wc_format_postcode( 'D02AF30', 'IE' ) ); - - // PT postcode. - $this->assertEquals( '1000-205', wc_format_postcode( '1000205', 'PT' ) ); - - // BR/PL postcode. - $this->assertEquals( '99999-999', wc_format_postcode( '99999999', 'BR' ) ); - - // JP postcode. - $this->assertEquals( '999-9999', wc_format_postcode( '9999999', 'JP' ) ); - - // Test LV postcode without mandatory country code. - $this->assertEquals( 'LV-1337', wc_format_postcode( '1337', 'LV' ) ); - - // Test LV postcode with incorrect format (no dash). - $this->assertEquals( 'LV-1337', wc_format_postcode( 'lv1337', 'LV' ) ); - - // Test empty NL postcode. - $this->assertEquals( '', wc_format_postcode( '', 'NL' ) ); - - } } From b0748973a498cfe1f72629ef6138ecdb25cc8034 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 27 Apr 2022 11:47:25 +0530 Subject: [PATCH 185/327] Add changelog. --- plugins/woocommerce/changelog/pr-31788 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/pr-31788 diff --git a/plugins/woocommerce/changelog/pr-31788 b/plugins/woocommerce/changelog/pr-31788 new file mode 100644 index 00000000000..1b9686bc79d --- /dev/null +++ b/plugins/woocommerce/changelog/pr-31788 @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add formatting rules for Latvian postcodes. From 5ca93ef00f14c57c99498d40da70c44debb050f5 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 27 Apr 2022 14:56:15 +0800 Subject: [PATCH 186/327] Remove note references --- .../woocommerce/includes/class-wc-install.php | 1 + .../src/Admin/Notes/DeprecatedNotes.php | 21 ---- .../woocommerce/src/Internal/Admin/Events.php | 2 - .../src/Internal/Admin/FeaturePlugin.php | 2 - .../Notes/SetUpAdditionalPaymentTypes.php | 114 ------------------ 5 files changed, 1 insertion(+), 139 deletions(-) delete mode 100644 plugins/woocommerce/src/Internal/Admin/Notes/SetUpAdditionalPaymentTypes.php diff --git a/plugins/woocommerce/includes/class-wc-install.php b/plugins/woocommerce/includes/class-wc-install.php index 152bdca82d9..c2e9d843c7c 100644 --- a/plugins/woocommerce/includes/class-wc-install.php +++ b/plugins/woocommerce/includes/class-wc-install.php @@ -764,6 +764,7 @@ class WC_Install { 'wc-admin-getting-started-ecommerce-webinar', 'wc-admin-navigation-feedback', 'wc-admin-navigation-feedback-follow-up', + 'wc-admin-set-up-additional-payment-types', ); $additional_obsolete_notes_names = apply_filters( diff --git a/plugins/woocommerce/src/Admin/Notes/DeprecatedNotes.php b/plugins/woocommerce/src/Admin/Notes/DeprecatedNotes.php index 6eafd2debb3..a87e124e25a 100644 --- a/plugins/woocommerce/src/Admin/Notes/DeprecatedNotes.php +++ b/plugins/woocommerce/src/Admin/Notes/DeprecatedNotes.php @@ -517,27 +517,6 @@ class WC_Admin_Notes_Selling_Online_Courses extends DeprecatedClassFacade { protected static $deprecated_in_version = '1.7.0'; } -/** - * WC_Admin_Notes_Set_Up_Additional_Payment_Types. - * - * @deprecated since 1.7.0, use SetUpAdditionalPaymentTypes - */ -class WC_Admin_Notes_Set_Up_Additional_Payment_Types extends DeprecatedClassFacade { - /** - * The name of the non-deprecated class that this facade covers. - * - * @var string - */ - protected static $facade_over_classname = 'Automattic\WooCommerce\Internal\Admin\Notes\SetUpAdditionalPaymentTypes'; - - /** - * The version that this class was deprecated in. - * - * @var string - */ - protected static $deprecated_in_version = '1.7.0'; -} - /** * WC_Admin_Notes_Test_Checkout. * diff --git a/plugins/woocommerce/src/Internal/Admin/Events.php b/plugins/woocommerce/src/Internal/Admin/Events.php index 8235527a5c8..3383e12ef3f 100644 --- a/plugins/woocommerce/src/Internal/Admin/Events.php +++ b/plugins/woocommerce/src/Internal/Admin/Events.php @@ -42,7 +42,6 @@ use \Automattic\WooCommerce\Internal\Admin\Notes\NavigationNudge; use \Automattic\WooCommerce\Internal\Admin\Schedulers\MailchimpScheduler; use \Automattic\WooCommerce\Internal\Admin\Notes\CompleteStoreDetails; use \Automattic\WooCommerce\Internal\Admin\Notes\UpdateStoreDetails; -use \Automattic\WooCommerce\Internal\Admin\Notes\SetUpAdditionalPaymentTypes; use \Automattic\WooCommerce\Internal\Admin\Notes\PaymentsRemindMeLater; use \Automattic\WooCommerce\Internal\Admin\Notes\MagentoMigration; @@ -149,7 +148,6 @@ class Events { */ protected function possibly_delete_notes() { NavigationNudge::delete_if_not_applicable(); - SetUpAdditionalPaymentTypes::delete_if_not_applicable(); PaymentsRemindMeLater::delete_if_not_applicable(); } diff --git a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php index 49dac42a47b..70d619ced08 100644 --- a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php +++ b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php @@ -14,7 +14,6 @@ use \Automattic\WooCommerce\Internal\Admin\Notes\WooSubscriptionsNotes; use \Automattic\WooCommerce\Internal\Admin\Notes\TrackingOptIn; use \Automattic\WooCommerce\Internal\Admin\Notes\WooCommercePayments; use \Automattic\WooCommerce\Internal\Admin\Notes\InstallJPAndWCSPlugins; -use \Automattic\WooCommerce\Internal\Admin\Notes\SetUpAdditionalPaymentTypes; use \Automattic\WooCommerce\Internal\Admin\Notes\TestCheckout; use \Automattic\WooCommerce\Internal\Admin\Notes\SellingOnlineCourses; use \Automattic\WooCommerce\Internal\Admin\Notes\MerchantEmailNotifications; @@ -153,7 +152,6 @@ class FeaturePlugin { new TrackingOptIn(); new WooCommercePayments(); new InstallJPAndWCSPlugins(); - new SetUpAdditionalPaymentTypes(); new TestCheckout(); new SellingOnlineCourses(); new WelcomeToWooCommerceForStoreUsers(); diff --git a/plugins/woocommerce/src/Internal/Admin/Notes/SetUpAdditionalPaymentTypes.php b/plugins/woocommerce/src/Internal/Admin/Notes/SetUpAdditionalPaymentTypes.php deleted file mode 100644 index e391820dbab..00000000000 --- a/plugins/woocommerce/src/Internal/Admin/Notes/SetUpAdditionalPaymentTypes.php +++ /dev/null @@ -1,114 +0,0 @@ -can_view(); - } - - /** - * Get the note. - * - * @return Note - */ - public static function get_note() { - $content = __( 'Set up additional payment providers, using third-party services or other methods.', 'woocommerce' ); - - $note = new Note(); - - $note->set_title( __( 'Set up additional payment providers', 'woocommerce' ) ); - $note->set_content( $content ); - $note->set_content_data( (object) array() ); - $note->set_type( Note::E_WC_ADMIN_NOTE_INFORMATIONAL ); - $note->set_name( self::NOTE_NAME ); - $note->set_source( 'woocommerce-admin' ); - $note->add_action( - 'set-up-payments', - __( 'Set up payments', 'woocommerce' ), - wc_admin_url( '&task=payments' ), - Note::E_WC_ADMIN_NOTE_UNACTIONED, - true - ); - - return $note; - } -} From d4dbf2f1a352ab8b6ad6834a729311aef42af4ce Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 26 Apr 2022 18:08:37 +0800 Subject: [PATCH 187/327] Add product stack component --- .../fills/experimental-products/constants.tsx | 69 +++++++++++++++++++ .../fills/experimental-products/stack.scss | 61 ++++++++++++++++ .../fills/experimental-products/stack.tsx | 57 +++++++++++++++ .../fills/experimental-products/utils.tsx | 9 +++ 4 files changed, 196 insertions(+) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx new file mode 100644 index 00000000000..6b889b9275e --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -0,0 +1,69 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import ProductIcon from 'gridicons/dist/product'; +import CloudOutlineIcon from 'gridicons/dist/cloud-outline'; +import TypesIcon from 'gridicons/dist/types'; +import CalendarIcon from 'gridicons/dist/calendar'; +import { Icon, chevronRight, widget, link } from '@wordpress/icons'; + +export const productTypes = Object.freeze( [ + { + key: 'physical' as const, + title: __( 'Physical product', 'woocommerce' ), + content: __( + 'A tangible item that gets delivered to customers.', + 'woocommerce' + ), + before: , + after: , + }, + { + key: 'digital' as const, + title: __( 'Digital product', 'woocommerce' ), + content: __( + 'A digital product like service, downloadable book, music or video.', + 'woocommerce' + ), + before: , + after: , + }, + { + key: 'variable' as const, + title: __( 'Variable product', 'woocommerce' ), + content: __( + 'A product with variations like color or size.', + 'woocommerce' + ), + before: , + after: , + }, + { + key: 'subscription' as const, + title: __( 'Subscription product', 'woocommerce' ), + content: __( + 'Item that customers receive on a regular basis.', + 'woocommerce' + ), + before: , + after: , + }, + { + key: 'grouped' as const, + title: __( 'Grouped product', 'woocommerce' ), + content: __( 'A collection of related products.', 'woocommerce' ), + before: , + after: , + }, + { + key: 'external' as const, + title: __( 'External product', 'woocommerce' ), + content: __( 'Link a product to an external website.', 'woocommerce' ), + before: , + after: , + }, +] ); + +export type ProductType = typeof productTypes[ number ]; +export type ProductTypeKey = ProductType[ 'key' ]; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss new file mode 100644 index 00000000000..ae559c9ed99 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss @@ -0,0 +1,61 @@ +.woocommerce-products-stack { + a { + text-decoration: none; + color: #007cba; + } + + .woocommerce-list__item { + margin-top: 8px; + border-radius: 3px; + border: 1px solid #dcdcde; + + &:hover { + background-color: #fff; + border: 1.5px solid #007cba; + } + + &:not(.transitions-disabled) { + &.woocommerce-list__item-enter { + transform: none; + } + + &.woocommerce-list__item-enter-active { + transform: none; + } + + &.woocommerce-list__item-exit-active { + display: none; + } + } + } + + .woocommerce-list__item-before { + background: #f0f6fc; + padding: 8px; + border-radius: 50%; + } + + .woocommerce-list__item-title { + color: $gray-900; + line-height: 16px; + font-weight: 600; + } + + .woocommerce-list__item-content { + color: $gray-700; + line-height: 16px; + font-weight: 400; + } + + .woocommerce-list__item-after { + svg { + fill: $gray-600; + } + } + + .woocommerce-stack-other-options { + margin-top: 20px; + color: $gray-700; + line-height: 16px; + } +} diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx new file mode 100644 index 00000000000..3c9ddc26db5 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx @@ -0,0 +1,57 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { List, Link } from '@woocommerce/components'; +import interpolateComponents from '@automattic/interpolate-components'; +import { getAdminLink } from '@woocommerce/settings'; + +/** + * Internal dependencies + */ +import { ProductType } from './constants'; +import './stack.scss'; + +type StackProps = { + items: ProductType[]; +}; + +const Stack: React.FC< StackProps > = ( { items } ) => { + return ( +
+ +
+ { interpolateComponents( { + mixedString: __( + 'Can’t find your product type? {{sbLink}}Start Blank{{/sbLink}} or {{LspLink}}Load Sample Products{{/LspLink}} to see what they look like in your store.', + 'woocommerce' + ), + components: { + sbLink: ( + { + window.location = getAdminLink( + 'post-new.php?post_type=product&wc_onboarding_active_task=products&tutorial=true' + ); + return false; + } } + href="" + type="wc-admin" + > + <> + + ), + LspLink: ( + // TODO: Update this to the load sample product. + + <> + + ), + }, + } ) } +
+
+ ); +}; + +export default Stack; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx new file mode 100644 index 00000000000..ac857f2058f --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -0,0 +1,9 @@ +/** + * Internal dependencies + */ +import { productTypes, ProductTypeKey } from './constants'; + +export const getProductTypes = ( exclude: ProductTypeKey[] = [] ) => + productTypes.filter( + ( productType ) => ! exclude.includes( productType.key ) + ); From 7eff6afd82da74b3519888575ef4a89e21ded8ac Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 09:57:26 +0800 Subject: [PATCH 188/327] Add initial experimental-products component to show product stack component --- .../tasks/fills/experimental-products/index.scss | 6 ++++++ .../tasks/fills/experimental-products/index.tsx | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss new file mode 100644 index 00000000000..2ce697f5815 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss @@ -0,0 +1,6 @@ +.woocommerce-task-products { + display: flex; + flex-direction: column; + width: 550px; + margin: auto; +} diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 4fa9c683e70..b35d2a2ad2a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -4,8 +4,20 @@ import { WooOnboardingTask } from '@woocommerce/onboarding'; import { registerPlugin } from '@wordpress/plugins'; +/** + * Internal dependencies + */ +import { getProductTypes } from './utils'; +import './index.scss'; +import Stack from './stack'; + const Products = () => { - return

Experimental products

; + const productTypes = getProductTypes(); + return ( +
+ +
+ ); }; registerPlugin( 'wc-admin-onboarding-task-products', { From 026a902fc1df6c0c10be7cd5a01ce9be05be7562 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 10:10:41 +0800 Subject: [PATCH 189/327] Add changelog --- plugins/woocommerce/changelog/add-product-stack | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-product-stack diff --git a/plugins/woocommerce/changelog/add-product-stack b/plugins/woocommerce/changelog/add-product-stack new file mode 100644 index 00000000000..171a3c64525 --- /dev/null +++ b/plugins/woocommerce/changelog/add-product-stack @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Add experimental product stack component From 5187a2d4bda228f8b5cae3e2faf7dca49f8bb910 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Wed, 27 Apr 2022 15:36:00 +0800 Subject: [PATCH 190/327] Changelog --- ...32719-remove-wc-admin-set-up-additional-payment-types-note | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/dev-32719-remove-wc-admin-set-up-additional-payment-types-note diff --git a/plugins/woocommerce/changelog/dev-32719-remove-wc-admin-set-up-additional-payment-types-note b/plugins/woocommerce/changelog/dev-32719-remove-wc-admin-set-up-additional-payment-types-note new file mode 100644 index 00000000000..cd0ce7fe569 --- /dev/null +++ b/plugins/woocommerce/changelog/dev-32719-remove-wc-admin-set-up-additional-payment-types-note @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Remove wc-admin-set-up-additional-payment-types inbox note From 98a91cd13238cb856d8239c721a2f064910da623 Mon Sep 17 00:00:00 2001 From: Luigi Date: Wed, 27 Apr 2022 12:01:02 +0200 Subject: [PATCH 191/327] move logic to utils file --- .../includes/blocks/class-wc-blocks-utils.php | 47 ++++++++++++++++++- .../woocommerce/includes/class-wc-tracker.php | 15 +----- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php index 1465dbf5e30..b9eb7b08539 100644 --- a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php +++ b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php @@ -70,9 +70,11 @@ class WC_Blocks_Utils { $template = get_block_template( get_stylesheet() . '//' . $template_part_slug, 'wp_template_part' ); $blocks = parse_blocks( $template->content ); + $flatten_blocks = self::flatten_blocks( $blocks ); + return array_values( array_filter( - $blocks, + $flatten_blocks, function ( $block ) use ( $block_name ) { return ( $block_name === $block['blockName'] ); } @@ -102,4 +104,47 @@ class WC_Blocks_Utils { return false; } + + /** + * Return blocks with their inner blocks flattened. + * + * @param array $blocks Array of blocks as returned by parse_blocks(). + * @return array All blocks. + */ + public static function flatten_blocks( $blocks ) { + return array_reduce( + $blocks, + function( $carry, $block ) { + array_push( $carry, array_diff_key( $block, array_flip( array( 'innerBlocks' ) ) ) ); + if ( isset( $block['innerBlocks'] ) ) { + $inner_blocks = self::flatten_blocks( $block['innerBlocks'] ); + return array_merge( $carry, $inner_blocks ); + } + + return $carry; + }, + array() + ); + } + + /** + * Get all instances of the specified block from the widget area. + * + * @param array $block_name The name (id) of a block, e.g. `woocommerce/mini-cart`. + * @return array Array of blocks as returned by parse_blocks(). + */ + public static function get_blocks_from_widget_area( $block_name ) { + return array_reduce( + get_option( 'widget_block' ), + function ( $acc, $block ) use ( $block_name ) { + $parsed_blocks = ! empty( $block ) && is_array( $block ) ? parse_blocks( $block['content'] ) : array(); + if ( ! empty( $parsed_blocks ) && $block_name === $parsed_blocks[0]['blockName'] ) { + array_push( $acc, $parsed_blocks[0] ); + return $acc; + } + return $acc; + }, + array() + ); + } } diff --git a/plugins/woocommerce/includes/class-wc-tracker.php b/plugins/woocommerce/includes/class-wc-tracker.php index 66327dcef5e..24f77fef403 100644 --- a/plugins/woocommerce/includes/class-wc-tracker.php +++ b/plugins/woocommerce/includes/class-wc-tracker.php @@ -786,20 +786,7 @@ class WC_Tracker { */ public static function get_mini_cart_info() { $mini_cart_block_name = 'woocommerce/mini-cart'; - $mini_cart_block_data = wc_current_theme_is_fse_theme() ? WC_Blocks_Utils::get_block_from_template_part( $mini_cart_block_name, 'header' ) : - array_reduce( - get_option( 'widget_block' ), - function ( $acc, $block ) use ( $mini_cart_block_name ) { - $parsed_blocks = ! empty( $block ) && is_array( $block ) ? parse_blocks( $block['content'] ) : array(); - if ( ! empty( $parsed_blocks ) && $mini_cart_block_name === $parsed_blocks[0]['blockName'] ) { - array_push( $acc, $parsed_blocks[0] ); - return $acc; - } - return $acc; - }, - array() - ); - + $mini_cart_block_data = wc_current_theme_is_fse_theme() ? WC_Blocks_Utils::get_block_from_template_part( $mini_cart_block_name, 'header' ) : WC_Blocks_Utils::get_blocks_from_widget_area( $mini_cart_block_name ); return array( 'mini_cart_used' => empty( $mini_cart_block_data[0] ) ? 'No' : 'Yes', 'mini_cart_block_attributes' => empty( $mini_cart_block_data[0] ) ? array() : $mini_cart_block_data[0]['attrs'], From b938eb88f90129c8a85f8dcfe228bf4bd0014b01 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 18:32:20 +0800 Subject: [PATCH 192/327] Update icons --- .../tasks/fills/experimental-products/constants.tsx | 12 +++++++++--- .../fills/experimental-products/icon/link_24px.svg | 8 ++++++++ .../experimental-products/icon/widgets_24px.svg | 8 ++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index 6b889b9275e..59014681ab3 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -6,7 +6,13 @@ import ProductIcon from 'gridicons/dist/product'; import CloudOutlineIcon from 'gridicons/dist/cloud-outline'; import TypesIcon from 'gridicons/dist/types'; import CalendarIcon from 'gridicons/dist/calendar'; -import { Icon, chevronRight, widget, link } from '@wordpress/icons'; +import { Icon, chevronRight } from '@wordpress/icons'; + +/** + * Internal dependencies + */ +import Link from './icon/link_24px.svg'; +import Widget from './icon/widgets_24px.svg'; export const productTypes = Object.freeze( [ { @@ -53,14 +59,14 @@ export const productTypes = Object.freeze( [ key: 'grouped' as const, title: __( 'Grouped product', 'woocommerce' ), content: __( 'A collection of related products.', 'woocommerce' ), - before: , + before: Widget, after: , }, { key: 'external' as const, title: __( 'External product', 'woocommerce' ), content: __( 'Link a product to an external website.', 'woocommerce' ), - before: , + before: Link, after: , }, ] ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg new file mode 100644 index 00000000000..4212c9877e7 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg new file mode 100644 index 00000000000..d8421e726dd --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg @@ -0,0 +1,8 @@ + + + + + + + + From abe3d60361e04a269ddfb7472d5fde02cf0c8608 Mon Sep 17 00:00:00 2001 From: tjcafferkey Date: Wed, 27 Apr 2022 13:33:04 +0100 Subject: [PATCH 193/327] Update woo-blocks to 7.4.3 --- plugins/woocommerce/composer.json | 2 +- plugins/woocommerce/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index 0c4777b486a..c39e2bd193c 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -21,7 +21,7 @@ "pelago/emogrifier": "^6.0", "psr/container": "1.0.0", "woocommerce/action-scheduler": "3.4.0", - "woocommerce/woocommerce-blocks": "7.4.1" + "woocommerce/woocommerce-blocks": "7.4.3" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", diff --git a/plugins/woocommerce/composer.lock b/plugins/woocommerce/composer.lock index 0ff06545e2f..90c422fdb11 100644 --- a/plugins/woocommerce/composer.lock +++ b/plugins/woocommerce/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "03a229b123645dbf035c87685be1043a", + "content-hash": "2304bec8ba9ea1f4eeba718d2afe0f5d", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -681,16 +681,16 @@ }, { "name": "woocommerce/woocommerce-blocks", - "version": "v7.4.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/woocommerce/woocommerce-gutenberg-products-block.git", - "reference": "bde2a5771ddc7970c2114da621c28b0f7b6296ca" + "reference": "5bba24fdaf41166a4ad24a1a45758e5ec7e8625c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/woocommerce/woocommerce-gutenberg-products-block/zipball/bde2a5771ddc7970c2114da621c28b0f7b6296ca", - "reference": "bde2a5771ddc7970c2114da621c28b0f7b6296ca", + "url": "https://api.github.com/repos/woocommerce/woocommerce-gutenberg-products-block/zipball/5bba24fdaf41166a4ad24a1a45758e5ec7e8625c", + "reference": "5bba24fdaf41166a4ad24a1a45758e5ec7e8625c", "shasum": "" }, "require": { @@ -734,9 +734,9 @@ ], "support": { "issues": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues", - "source": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/v7.4.1" + "source": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/v7.4.3" }, - "time": "2022-04-14T16:44:52+00:00" + "time": "2022-04-27T12:18:37+00:00" } ], "packages-dev": [ @@ -3021,5 +3021,5 @@ "platform-overrides": { "php": "7.2" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } From 5db9c600b5ea336d1f26075507d6a3934b18237b Mon Sep 17 00:00:00 2001 From: tjcafferkey Date: Wed, 27 Apr 2022 13:43:59 +0100 Subject: [PATCH 194/327] Add changelog file --- plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.3 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.3 diff --git a/plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.3 b/plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.3 new file mode 100644 index 00000000000..266664a8663 --- /dev/null +++ b/plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.3 @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update to WooCommerce Blocks 7.4.3 From e5bdd3fcd3c5a126ff57a2b729d64c6bf345c7f3 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 06:40:37 -0700 Subject: [PATCH 195/327] Refactor workflows to remove action-build step --- .github/workflows/build-release-zip-file.yml | 20 +-- .github/workflows/build-release.yml | 14 +- .github/workflows/mirrors.yml | 35 +++-- .github/workflows/nightly-builds.yml | 12 +- .github/workflows/pr-build-and-e2e-tests.yml | 129 ++++-------------- .github/workflows/smoke-test-daily.yml | 16 +-- .../woocommerce/tests/e2e/config/default.json | 2 +- 7 files changed, 83 insertions(+), 145 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index f0b92090401..79663bb7993 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -11,20 +11,20 @@ jobs: name: Build release zip file runs-on: ubuntu-20.04 steps: - - name: Checkout code + - name: Checkout code. uses: actions/checkout@v3 - with: - ref: ${{ github.event.inputs.ref || github.ref }} - - name: Build the zip file - id: build - uses: woocommerce/action-build@trunk - - name: Unzip the file (prevents double zip problem) - run: unzip ${{ steps.build.outputs.zip_path }} -d zipfile + + - name: Install PNPM + run: npm install -g pnpm + + - name: Build zip + run: pnpm nx build-zip woocommerce + - name: Upload the zip file as an artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: name: woocommerce - path: zipfile + path: plugins/woocommerce/woocommerce.zip retention-days: 7 diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 99089114de2..f8b9b160c71 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -7,18 +7,22 @@ jobs: name: Build release asset runs-on: ubuntu-20.04 steps: - - name: Checkout code + - name: Checkout code. uses: actions/checkout@v3 - - name: Build - id: build - uses: woocommerce/action-build@trunk + + - name: Install PNPM + run: npm install -g pnpm + + - name: Build zip + run: pnpm nx build-zip woocommerce + - name: Upload release asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ${{ steps.build.outputs.zip_path }} + asset_path: plugins/woocommerce/woocommerce.zip asset_name: woocommerce.zip asset_content_type: application/zip update-code-reference: diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index 82f35bda1ab..316c5ee1ebd 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -8,40 +8,49 @@ jobs: name: Build WooCommerce zip runs-on: ubuntu-20.04 steps: - - name: Checkout code + - name: Checkout code. uses: actions/checkout@v3 - - name: Build - id: build - uses: woocommerce/action-build@trunk - env: - BUILD_ENV: mirrors - - name: Upload PR zip - uses: actions/upload-artifact@v2 + + - name: Install PNPM + run: npm install -g pnpm + + - name: Build zip + run: pnpm nx build-zip woocommerce + + - name: Upload the zip file as an artifact + uses: actions/upload-artifact@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: name: woocommerce - path: ${{ steps.build.outputs.zip_path }} + path: plugins/woocommerce/woocommerce.zip retention-days: 7 + mirror: if: github.repository == 'woocommerce/woocommerce' name: Push to Mirror - runs-on: ubuntu-20.04 needs: [build] + runs-on: ubuntu-20.04 steps: - name: Create directories run: | mkdir -p tmp/woocommerce-build mkdir -p monorepo + - name: Checkout monorepo - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: monorepo + + - name: Copy Composer over to production + run: cp monorepo/plugins/woocommerce/composer.json tmp/woocommerce-build + - name: Download WooCommerce ZIP - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: woocommerce path: tmp/woocommerce-build + - name: Extract and replace WooCommerce zip. working-directory: tmp/woocommerce-build run: | @@ -49,11 +58,13 @@ jobs: unzip woocommerce.zip -d woocommerce/woocommerce-production mv woocommerce/woocommerce-production/woocommerce/* woocommerce/woocommerce-production rm -rf woocommerce/woocommerce-production/woocommerce + - name: Set up mirror working-directory: tmp/woocommerce-build run: | touch mirrors.txt echo "woocommerce/woocommerce-production" >> mirrors.txt + - name: Push to mirror uses: Automattic/action-push-to-mirrors@v1 with: diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 7e4f88448d3..766e09c8fea 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -16,9 +16,13 @@ jobs: uses: actions/checkout@v3 with: ref: ${{ matrix.build }} - - name: Build - id: build - uses: woocommerce/action-build@trunk + + - name: Install PNPM + run: npm install -g pnpm + + - name: Build zip + run: pnpm nx build-zip woocommerce + - name: Deploy nightly build uses: WebFreak001/deploy-nightly@v1.1.0 env: @@ -26,7 +30,7 @@ jobs: with: upload_url: https://uploads.github.com/repos/${{ github.repository }}/releases/25945111/assets{?name,label} release_id: 25945111 - asset_path: ${{ steps.build.outputs.zip_path }} + asset_path: plugins/woocommerce/woocommerce.zip asset_name: woocommerce-${{ matrix.build }}-nightly.zip asset_content_type: application/zip max_releases: 1 diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index a4ca35b3300..436aa6c2578 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -5,58 +5,12 @@ concurrency: cancel-in-progress: true jobs: - build: - name: Build zip for PR - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Build - id: build - uses: woocommerce/action-build@trunk - env: - BUILD_ENV: e2e - - - name: Upload PR zip - uses: actions/upload-artifact@v3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - name: woocommerce - path: ${{ steps.build.outputs.zip_path }} - retention-days: 7 - e2e-tests-run: name: Runs E2E tests. runs-on: ubuntu-20.04 - needs: [build] steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - - name: Checkout code. uses: actions/checkout@v3 - with: - path: package/woocommerce - - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v3 - with: - name: woocommerce - path: tmp - - - name: Extract and replace WooCommerce zip. - working-directory: tmp - run: | - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - name: Cache modules uses: actions/cache@v3 @@ -69,15 +23,20 @@ jobs: run: npm install -g pnpm - name: Install dependencies - working-directory: package/woocommerce run: pnpm install + - name: Install Composer dependencies + run: pnpm nx composer-install woocommerce + + - name: Run build + run: pnpm nx build woocommerce + - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce + working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce + working-directory: plugins/woocommerce env: WC_E2E_SCREENSHOTS: 1 E2E_SLACK_TOKEN: ${{ secrets.E2E_SLACK_TOKEN }} @@ -89,40 +48,16 @@ jobs: if: always() with: name: E2E Screenshots - path: package/woocommerce/plugins/woocommerce/tests/e2e/screenshots + path: plugins/woocommerce/tests/e2e/screenshots if-no-files-found: ignore retention-days: 5 api-tests-run: name: Runs API tests. runs-on: ubuntu-20.04 - needs: [build] steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - - name: Checkout code. uses: actions/checkout@v3 - with: - path: package/woocommerce - - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v3 - with: - name: woocommerce - path: tmp - - - name: Extract and replace WooCommerce zip. - working-directory: tmp - run: | - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - name: Cache modules uses: actions/cache@v3 @@ -135,11 +70,16 @@ jobs: run: npm install -g pnpm - name: Install dependencies - working-directory: package/woocommerce run: pnpm install + - name: Install Composer dependencies + run: pnpm nx composer-install woocommerce + + - name: Run build + run: pnpm nx build woocommerce + - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce + working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Run tests command. @@ -162,33 +102,9 @@ jobs: k6-tests-run: name: Runs k6 Performance tests runs-on: ubuntu-20.04 - needs: [build] steps: - - name: Create dirs. - run: | - mkdir -p code/woocommerce - mkdir -p package/woocommerce - mkdir -p tmp/woocommerce - - name: Checkout code. uses: actions/checkout@v3 - with: - path: package/woocommerce - - - name: Move current directory to code. We will install zip file in this dir later. - run: mv ./package/woocommerce/plugins/woocommerce/* ./code/woocommerce - - - name: Download WooCommerce ZIP. - uses: actions/download-artifact@v3 - with: - name: woocommerce - path: tmp - - - name: Extract and replace WooCommerce zip. - working-directory: tmp - run: | - unzip woocommerce.zip -d woocommerce - mv woocommerce/woocommerce/* ../package/woocommerce/plugins/woocommerce/ - name: Cache modules uses: actions/cache@v3 @@ -201,16 +117,21 @@ jobs: run: npm install -g pnpm - name: Install dependencies - working-directory: package/woocommerce run: pnpm install + - name: Install Composer dependencies + run: pnpm nx composer-install woocommerce + + - name: Run build + run: pnpm nx build woocommerce + - name: Workaround to use initialization file with prepopulated data. - working-directory: package/woocommerce/plugins/woocommerce/tests/e2e/docker + working-directory: plugins/woocommerce/tests/e2e/docker run: | cp init-sample-products.sh initialize.sh - name: Load docker images and start containers. - working-directory: package/woocommerce/plugins/woocommerce + working-directory: plugins/woocommerce run: pnpm exec wc-e2e docker:up - name: Install k6 @@ -219,4 +140,4 @@ jobs: - name: Run k6 tests run: | - ./k6 run package/woocommerce/plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js + ./k6 run plugins/woocommerce/tests/performance/tests/gh-action-pr-requests.js diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index e57d54d371a..f5d5085421a 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -12,7 +12,6 @@ jobs: mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules - name: Checkout code. uses: actions/checkout@v3 @@ -59,11 +58,11 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Build - id: build - uses: woocommerce/action-build@trunk - env: - BUILD_ENV: e2e + - name: Install PNPM + run: npm install -g pnpm + + - name: Build zip + run: pnpm nx build-zip woocommerce - name: Upload PR zip uses: actions/upload-artifact@v3 @@ -71,7 +70,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: name: woocommerce - path: ${{ steps.build.outputs.zip_path }} + path: plugins/woocommerce/woocommerce.zip retention-days: 7 test-plugins: @@ -101,10 +100,9 @@ jobs: mkdir -p code/woocommerce mkdir -p package/woocommerce mkdir -p tmp/woocommerce - mkdir -p node_modules - name: Checkout code. - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: package/woocommerce diff --git a/plugins/woocommerce/tests/e2e/config/default.json b/plugins/woocommerce/tests/e2e/config/default.json index 5803d199412..130d12b5c1e 100644 --- a/plugins/woocommerce/tests/e2e/config/default.json +++ b/plugins/woocommerce/tests/e2e/config/default.json @@ -1,5 +1,5 @@ { - "url": "http://localhost:8084/", + "url": "http://localhost:8086/", "users": { "admin": { "username": "admin", From 8d911cff6f4f69c67b4f733eb201fc40b1dfbf0f Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 06:58:08 -0700 Subject: [PATCH 196/327] Remove makepot from build --- plugins/woocommerce/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 07de69f7832..37b1610bfcf 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -14,7 +14,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", - "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm run makepot", + "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", "build:feature-config": "php bin/generate-feature-config.php", "build:zip": "./bin/build-zip.sh", "lint:js": "eslint assets/js --ext=js", From 2ae7eda512da70f2bef8a81413b3fb327bbb01d4 Mon Sep 17 00:00:00 2001 From: James Allan Date: Thu, 15 Apr 2021 13:57:33 +1000 Subject: [PATCH 197/327] Remove tax rounding of taxes displayed in items meta table --- .../includes/admin/meta-boxes/views/html-order-item.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php b/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php index a36cd82f9e2..ea66d76964a 100644 --- a/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php +++ b/plugins/woocommerce/includes/admin/meta-boxes/views/html-order-item.php @@ -141,11 +141,6 @@ $row_class = apply_filters( 'woocommerce_admin_html_order_item_class', ! empt $tax_item_total = isset( $tax_data['total'][ $tax_item_id ] ) ? $tax_data['total'][ $tax_item_id ] : ''; $tax_item_subtotal = isset( $tax_data['subtotal'][ $tax_item_id ] ) ? $tax_data['subtotal'][ $tax_item_id ] : ''; - if ( '' !== $tax_item_subtotal ) { - $round_at_subtotal = 'yes' === get_option( 'woocommerce_tax_round_at_subtotal' ); - $tax_item_total = wc_round_tax_total( $tax_item_total, $round_at_subtotal ? wc_get_rounding_precision() : null ); - $tax_item_subtotal = wc_round_tax_total( $tax_item_subtotal, $round_at_subtotal ? wc_get_rounding_precision() : null ); - } ?>
From 6a447065d8e94aeb65e95841176e421ed915e74b Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 07:29:33 -0700 Subject: [PATCH 198/327] Fix paths and cache composer --- .github/workflows/pr-build-and-e2e-tests.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 436aa6c2578..eb1ce861297 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -1,4 +1,4 @@ -name: Build zip for PR +name: Run tests against PR on: pull_request concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -14,10 +14,13 @@ jobs: - name: Cache modules uses: actions/cache@v3 + id: cache-deps with: path: | ~/.pnpm-store - key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + package/woocommerce/plugins/woocommerce/packages + package/woocommerce/plugins/woocommerce/**/vendor + key: ${{ runner.os }}-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm @@ -26,7 +29,8 @@ jobs: run: pnpm install - name: Install Composer dependencies - run: pnpm nx composer-install woocommerce + if: steps.cache-deps.outputs.cache-hit != 'true' + run: pnpm nx composer-install-no-dev woocommerce - name: Run build run: pnpm nx build woocommerce @@ -83,7 +87,7 @@ jobs: run: pnpm exec wc-e2e docker:up - name: Run tests command. - working-directory: package/woocommerce/plugins/woocommerce + working-directory: plugins/woocommerce env: BASE_URL: http://localhost:8084 USER_KEY: admin @@ -95,8 +99,8 @@ jobs: with: name: api-test-report---pr-${{ github.event.number }} path: | - package/woocommerce/packages/js/api-core-tests/allure-results - package/woocommerce/packages/js/api-core-tests/allure-report + packages/js/api-core-tests/allure-results + packages/js/api-core-tests/allure-report retention-days: 7 k6-tests-run: From 8629fcd92979f602320783987520e477c5f543f7 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 27 Apr 2022 20:07:20 +0530 Subject: [PATCH 199/327] Add changelog. --- plugins/woocommerce/changelog/fix-tax_data_rounded_on_save | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-tax_data_rounded_on_save diff --git a/plugins/woocommerce/changelog/fix-tax_data_rounded_on_save b/plugins/woocommerce/changelog/fix-tax_data_rounded_on_save new file mode 100644 index 00000000000..72d805d7aab --- /dev/null +++ b/plugins/woocommerce/changelog/fix-tax_data_rounded_on_save @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Display the raw 6 decimal place tax data while editing line item From e1499a17720dc6b22f26187ee8feb0f8312ee70b Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 07:45:10 -0700 Subject: [PATCH 200/327] Update port --- .github/workflows/pr-build-and-e2e-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index eb1ce861297..246b11eed62 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -89,7 +89,7 @@ jobs: - name: Run tests command. working-directory: plugins/woocommerce env: - BASE_URL: http://localhost:8084 + BASE_URL: http://localhost:8086 USER_KEY: admin USER_SECRET: password run: pnpm exec wc-api-tests test api From 72d196f398b25441f84fb06b1461c26273f81411 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Wed, 27 Apr 2022 07:46:21 -0700 Subject: [PATCH 201/327] Log if headers cannot be sent during a download error event. --- plugins/woocommerce/includes/class-wc-download-handler.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/class-wc-download-handler.php b/plugins/woocommerce/includes/class-wc-download-handler.php index 5db504b8b76..29d7261f76b 100644 --- a/plugins/woocommerce/includes/class-wc-download-handler.php +++ b/plugins/woocommerce/includes/class-wc-download-handler.php @@ -665,7 +665,9 @@ class WC_Download_Handler { * Since we will now render a message instead of serving a download, we should unwind some of the previously set * headers. */ - if ( ! headers_sent() ) { + if ( headers_sent() ) { + wc_get_logger()->log( 'warning', __( 'Headers already sent when generating download error message.', 'woocommerce' ) ); + } else { header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); header_remove( 'Content-Description;' ); header_remove( 'Content-Disposition' ); From 532c5800818cfd80e283399c00e2ae2ee674fc39 Mon Sep 17 00:00:00 2001 From: Jaclyn Chen Date: Wed, 9 Mar 2022 13:59:27 +0800 Subject: [PATCH 202/327] Include sku partial match for products search. --- .../class-wc-rest-products-controller.php | 63 ++++++++++++++++++ ...lass-wc-rest-products-controller-tests.php | 64 +++++++++++++++++++ 2 files changed, 127 insertions(+) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index c2c03690b87..05bdd2a76f0 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -25,6 +25,9 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { */ protected $namespace = 'wc/v3'; + private $search_param = 'search'; + private static $wp_query_search_param = 's'; + /** * Get the images for a product or product variation. * @@ -70,6 +73,66 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { return $images; } + /** + * Get a collection of products and add other search criteria to WP_Query. + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response + */ + public function get_items( $request ) { + // Add filters for search criteria in product postmeta via the lookup table. + if ( ! empty( $request[ $this->search_param ] ) ) { + add_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10, 2 ); + add_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10, 2 ); + } + + $response = parent::get_items( $request ); + + // Remove filters for search criteria in product postmeta via the lookup table. + if ( ! empty( $request[ $this->search_param ] ) ) { + remove_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10 ); + remove_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10 ); + } + return $response; + } + + /** + * Add in conditional search filters for products. + * + * @param string $where Where clause used to search posts. + * @param object $wp_query WP_Query object. + * @return string + */ + public static function add_search_criteria_to_wp_query_filter( $where, $wp_query ) { + global $wpdb; + $search = $wp_query->get( self::$wp_query_search_param ); + if ( ! empty( $search ) ) { + $like_search = '%' . $wpdb->esc_like( $search ) . '%'; + $conditions = array( + $wpdb->prepare( 'wc_product_meta_lookup.sku LIKE %s', $like_search ), + ); + $where .= ' OR (' . implode( ' OR ', $conditions ) . ')'; + } + return $where; + } + + /** + * Join `wc_product_meta_lookup` table when product search query is present. + * + * @param string $join Join clause used to search posts. + * @param object $wp_query WP_Query object. + * @return string + */ + public static function add_search_criteria_to_wp_query_join( $join, $wp_query ) { + global $wpdb; + $search = $wp_query->get( self::$wp_query_search_param ); + if ( ! empty( $search ) ) { + $join .= " LEFT JOIN {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup + ON $wpdb->posts.ID = wc_product_meta_lookup.product_id "; + } + return $join; + } + /** * Make extra product orderby features supported by WooCommerce available to the WC API. * This includes 'price', 'popularity', and 'rating'. diff --git a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php index 6f220b9ff7b..eb330f45828 100644 --- a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php +++ b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php @@ -147,4 +147,68 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { $this->assertContains( $field, $response_fields, "Field $field was expected but not present in product API response." ); } } + + /** + * Test that products with partial name or SKU case-insensitive match are returned given a `search` parameter. + */ + public function test_products_with_search_param_returns_products_with_sku_and_name_match() { + // Given. + wp_set_current_user( $this->user ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WooCommerce Tests' ) ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WordCamp' ) ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WoO' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); + + // When. + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'search' => 'woo', + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + // Then. + $this->assertEquals( 4, count( $response_products ) ); + $this->assertEquals( $response_products[0]['name'], 'WooCommerce Tests' ); + $this->assertEquals( $response_products[1]['name'], 'WoO' ); + $this->assertEquals( $response_products[2]['sku'], 'Woo' ); + $this->assertEquals( $response_products[3]['sku'], '*sunglasses-woo*' ); + } + + /** + * Test that the first product with full SKU case-insensitive match are returned given a `sku` parameter. + */ + public function test_products_with_sku_param_returns_the_first_product_with_full_sku_match() { + // Given. + wp_set_current_user( $this->user ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => '0oWoO' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'WoO' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'woo' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'woo-sunglasses' ) ); + + // When. + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'sku' => 'woo', + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + // Then. + $this->assertEquals( 1, count( $response_products ) ); + $response_product = $response_products[0]; + $this->assertEquals( 'WoO', $response_product['sku'] ); + } } From 49743f51676d9bc682e1bcd90fffced1e88472b2 Mon Sep 17 00:00:00 2001 From: Jaclyn Chen Date: Wed, 9 Mar 2022 14:46:09 +0800 Subject: [PATCH 203/327] Add a new parameter `search_includes_sku` so that SKU search isn't included by default. --- .../class-wc-rest-products-controller.php | 25 ++++++- ...lass-wc-rest-products-controller-tests.php | 73 +++++++++++++++++-- 2 files changed, 89 insertions(+), 9 deletions(-) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index 05bdd2a76f0..aa3f613a3b7 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -25,7 +25,6 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { */ protected $namespace = 'wc/v3'; - private $search_param = 'search'; private static $wp_query_search_param = 's'; /** @@ -80,8 +79,9 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { * @return WP_Error|WP_REST_Response */ public function get_items( $request ) { - // Add filters for search criteria in product postmeta via the lookup table. - if ( ! empty( $request[ $this->search_param ] ) ) { + // Add filters for search criteria in product postmeta via the lookup table. + $can_search_products_by_sku = $this->can_search_products_by_sku( $request ); + if ( $can_search_products_by_sku ) { add_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10, 2 ); add_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10, 2 ); } @@ -89,7 +89,7 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { $response = parent::get_items( $request ); // Remove filters for search criteria in product postmeta via the lookup table. - if ( ! empty( $request[ $this->search_param ] ) ) { + if ( $can_search_products_by_sku ) { remove_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10 ); remove_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10 ); } @@ -1431,6 +1431,13 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { 'validate_callback' => 'rest_validate_request_arg', ); + $params['search_includes_sku'] = array( + 'description' => __( 'When `search` parameter is set, whether to also search products by partial SKU.', 'woocommerce' ), + 'type' => 'boolean', + 'sanitize_callback' => 'wc_string_to_bool', + 'validate_callback' => 'rest_validate_request_arg', + ); + return $params; } @@ -1456,4 +1463,14 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { } return $data; } + + /** + * Determine whether products search should include SKU. + * + * @param WP_REST_Request $request Full details about the request. + * @return bool Whether SKU can be included in products search. + */ + private function can_search_products_by_sku( WP_REST_Request $request ) { + return ! empty( $request['search'] ) && $request['search_includes_sku'] && wc_product_sku_enabled(); + } } diff --git a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php index eb330f45828..46b0d625c22 100644 --- a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php +++ b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php @@ -149,9 +149,44 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { } /** - * Test that products with partial name or SKU case-insensitive match are returned given a `search` parameter. + * Test that products with partial name or SKU case-insensitive match are returned given both `search` and `search_includes_sku` parameters. */ - public function test_products_with_search_param_returns_products_with_sku_and_name_match() { + public function test_products_with_search_param_including_sku_returns_products_with_sku_and_name_match() { + // Given. + wp_set_current_user( $this->user ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WooCommerce Tests' ) ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WordCamp' ) ); + WC_Helper_Product::create_simple_product( true, array( 'name' => 'WoO' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); + + // When. + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'search' => 'woo', + 'search_includes_sku' => true, + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + // Then. + $this->assertEquals( 4, count( $response_products ) ); + $this->assertEquals( $response_products[0]['name'], 'WooCommerce Tests' ); + $this->assertEquals( $response_products[1]['name'], 'WoO' ); + $this->assertEquals( $response_products[2]['sku'], 'Woo' ); + $this->assertEquals( $response_products[3]['sku'], '*sunglasses-woo*' ); + } + + /** + * Test that only products with name match are returned given `search` without `search_includes_sku` parameter. + */ + public function test_products_with_search_param_only_returns_products_with_name_match() { // Given. wp_set_current_user( $this->user ); WC_Helper_Product::create_simple_product( true, array( 'name' => 'WooCommerce Tests' ) ); @@ -175,11 +210,39 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { $response_products = $response->get_data(); // Then. - $this->assertEquals( 4, count( $response_products ) ); + $this->assertEquals( 2, count( $response_products ) ); $this->assertEquals( $response_products[0]['name'], 'WooCommerce Tests' ); $this->assertEquals( $response_products[1]['name'], 'WoO' ); - $this->assertEquals( $response_products[2]['sku'], 'Woo' ); - $this->assertEquals( $response_products[3]['sku'], '*sunglasses-woo*' ); + } + + /** + * Test that no products with SKU are returned given `search` and `search_includes_sku` parameters when product SKU is disabled. + */ + public function test_products_with_search_param_including_sku_returns_no_products_when_sku_is_disabled() { + // Given. + wp_set_current_user( $this->user ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); + WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); + + // When. + add_filter( 'wc_product_sku_enabled', '__return_false' ); + + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'search' => 'woo', + 'search_includes_sku' => true, + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + // Then. + $this->assertEquals( 0, count( $response_products ) ); } /** From 029257be30b3c7ef0177c5a16bbbaea34c9b1d41 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Fri, 15 Apr 2022 15:15:22 -0700 Subject: [PATCH 204/327] Refactor to use search_sku parameter Instead of overloading the default search parameter. This actually added a bit of complexity because it introduced the possibility that a request could have both search and search_sku parameters, and they might not be the same value. I decided to handle the two cases differently: if both search strings match, the assumption is that we're looking for a string in either the content *or* the SKU field. However, if the the search strings are different, the assumption is that we're looking for products with a particular string in the content *and* a separate particular string in the SKU. New unit tests for this are still pending. --- .../class-wc-rest-products-controller.php | 206 ++++++++++-------- 1 file changed, 115 insertions(+), 91 deletions(-) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index aa3f613a3b7..71c422d52a2 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -25,7 +25,21 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { */ protected $namespace = 'wc/v3'; - private static $wp_query_search_param = 's'; + /** + * A string to inject into a query to do a partial match SKU search. + * + * See prepare_objects_query() + * + * @var string + */ + private $search_sku_in_product_lookup_table = ''; + + /** + * If the search and search_sku parameters are the same, the query SQL will be different. + * + * @var bool + */ + private $combine_content_and_sku_search = false; /** * Get the images for a product or product variation. @@ -72,67 +86,6 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { return $images; } - /** - * Get a collection of products and add other search criteria to WP_Query. - * - * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|WP_REST_Response - */ - public function get_items( $request ) { - // Add filters for search criteria in product postmeta via the lookup table. - $can_search_products_by_sku = $this->can_search_products_by_sku( $request ); - if ( $can_search_products_by_sku ) { - add_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10, 2 ); - add_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10, 2 ); - } - - $response = parent::get_items( $request ); - - // Remove filters for search criteria in product postmeta via the lookup table. - if ( $can_search_products_by_sku ) { - remove_filter( 'posts_where', array( __CLASS__, 'add_search_criteria_to_wp_query_filter' ), 10 ); - remove_filter( 'posts_join', array( __CLASS__, 'add_search_criteria_to_wp_query_join' ), 10 ); - } - return $response; - } - - /** - * Add in conditional search filters for products. - * - * @param string $where Where clause used to search posts. - * @param object $wp_query WP_Query object. - * @return string - */ - public static function add_search_criteria_to_wp_query_filter( $where, $wp_query ) { - global $wpdb; - $search = $wp_query->get( self::$wp_query_search_param ); - if ( ! empty( $search ) ) { - $like_search = '%' . $wpdb->esc_like( $search ) . '%'; - $conditions = array( - $wpdb->prepare( 'wc_product_meta_lookup.sku LIKE %s', $like_search ), - ); - $where .= ' OR (' . implode( ' OR ', $conditions ) . ')'; - } - return $where; - } - - /** - * Join `wc_product_meta_lookup` table when product search query is present. - * - * @param string $join Join clause used to search posts. - * @param object $wp_query WP_Query object. - * @return string - */ - public static function add_search_criteria_to_wp_query_join( $join, $wp_query ) { - global $wpdb; - $search = $wp_query->get( self::$wp_query_search_param ); - if ( ! empty( $search ) ) { - $join .= " LEFT JOIN {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup - ON $wpdb->posts.ID = wc_product_meta_lookup.product_id "; - } - return $join; - } - /** * Make extra product orderby features supported by WooCommerce available to the WC API. * This includes 'price', 'popularity', and 'rating'. @@ -207,22 +160,36 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { ); } - // Filter by sku. - if ( ! empty( $request['sku'] ) ) { - $skus = explode( ',', $request['sku'] ); - // Include the current string as a SKU too. - if ( 1 < count( $skus ) ) { - $skus[] = $request['sku']; + if ( wc_product_sku_enabled() ) { + // Do a partial match for a sku. Supercedes sku parameter that does exact matching. + if ( ! empty( $request['search_sku'] ) ) { + // Store this for use in the query clause filters. + $this->search_sku_in_product_lookup_table = $request['search_sku']; + + if ( isset( $args['s'] ) && $args['s'] === $request['search_sku'] ) { + $this->combine_content_and_sku_search = true; + } + + unset( $request['sku'] ); } - $args['meta_query'] = $this->add_meta_query( // WPCS: slow query ok. - $args, - array( - 'key' => '_sku', - 'value' => $skus, - 'compare' => 'IN', - ) - ); + // Filter by sku. + if ( ! empty( $request['sku'] ) ) { + $skus = explode( ',', $request['sku'] ); + // Include the current string as a SKU too. + if ( 1 < count( $skus ) ) { + $skus[] = $request['sku']; + } + + $args['meta_query'] = $this->add_meta_query( // WPCS: slow query ok. + $args, + array( + 'key' => '_sku', + 'value' => $skus, + 'compare' => 'IN', + ) + ); + } } // Filter by tax class. @@ -264,7 +231,7 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { } // Force the post_type argument, since it's not a user input variable. - if ( ! empty( $request['sku'] ) ) { + if ( ! empty( $request['sku'] ) || ! empty( $request['search_sku'] ) ) { $args['post_type'] = array( 'product', 'product_variation' ); } else { $args['post_type'] = $this->post_type; @@ -280,6 +247,73 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { return $args; } + /** + * Get objects. + * + * @param array $query_args Query args. + * @return array + */ + public function get_objects( $query_args ) { + // Add filters for search criteria in product postmeta via the lookup table. + if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { + add_filter( 'posts_join', array( $this, 'add_search_criteria_to_wp_query_join' ) ); + if ( $this->combine_content_and_sku_search ) { + add_filter( 'posts_search', array( $this, 'add_search_criteria_to_wp_query_where' ) ); + } else { + add_filter( 'posts_where', array( $this, 'add_search_criteria_to_wp_query_where' ) ); + } + } + + $result = parent::get_objects( $query_args ); + + // Remove filters for search criteria in product postmeta via the lookup table. + if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { + remove_filter( 'posts_join', array( $this, 'add_search_criteria_to_wp_query_join' ) ); + remove_filter( 'posts_search', array( $this, 'add_search_criteria_to_wp_query_where' ) ); + remove_filter( 'posts_where', array( $this, 'add_search_criteria_to_wp_query_where' ) ); + + $this->search_sku_in_product_lookup_table = ''; + $this->combine_content_and_sku_search = false; + } + return $result; + } + + /** + * Join `wc_product_meta_lookup` table when SKU search query is present. + * + * @param string $join Join clause used to search posts. + * @return string + */ + public function add_search_criteria_to_wp_query_join( $join ) { + global $wpdb; + if ( ! empty( $this->search_sku_in_product_lookup_table ) && ! strstr( $join, 'wc_product_meta_lookup' ) ) { + $join .= " LEFT JOIN $wpdb->wc_product_meta_lookup wc_product_meta_lookup + ON $wpdb->posts.ID = wc_product_meta_lookup.product_id "; + } + return $join; + } + + /** + * Add in conditional search filters for products. + * + * If the content search and the sku search have the same value, the clause operator here should be "OR" so that the + * match can happen e.g. on the product title OR in the SKU. If they have different values, the clause operator + * should be "AND" because we're assuming we're looking for e.g. a post title containing "foo" AND a SKU containing + * "bar". + * + * @param string $where Where clause used to search posts. + * @return string + */ + public function add_search_criteria_to_wp_query_where( $where ) { + global $wpdb; + if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { + $like_search = '%' . $wpdb->esc_like( $this->search_sku_in_product_lookup_table ) . '%'; + $operator = $this->combine_content_and_sku_search ? ' OR ' : ' AND '; + $where .= $operator . $wpdb->prepare( 'wc_product_meta_lookup.sku LIKE %s', $like_search ); + } + return $where; + } + /** * Set product images. * @@ -1431,10 +1465,10 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { 'validate_callback' => 'rest_validate_request_arg', ); - $params['search_includes_sku'] = array( - 'description' => __( 'When `search` parameter is set, whether to also search products by partial SKU.', 'woocommerce' ), - 'type' => 'boolean', - 'sanitize_callback' => 'wc_string_to_bool', + $params['search_sku'] = array( + 'description' => __( 'Limit results to those with a SKU that partial matches a string.', 'woocommerce' ), + 'type' => 'string', + 'sanitize_callback' => 'sanitize_text_field', 'validate_callback' => 'rest_validate_request_arg', ); @@ -1463,14 +1497,4 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { } return $data; } - - /** - * Determine whether products search should include SKU. - * - * @param WP_REST_Request $request Full details about the request. - * @return bool Whether SKU can be included in products search. - */ - private function can_search_products_by_sku( WP_REST_Request $request ) { - return ! empty( $request['search'] ) && $request['search_includes_sku'] && wc_product_sku_enabled(); - } } From b480d1362db26087b2396978158119da9ee33aa9 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 18 Apr 2022 13:44:11 -0700 Subject: [PATCH 205/327] Ensure where clause gets nested correctly when terms are the same --- .../class-wc-rest-products-controller.php | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index 71c422d52a2..61eec8a6345 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -167,6 +167,7 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { $this->search_sku_in_product_lookup_table = $request['search_sku']; if ( isset( $args['s'] ) && $args['s'] === $request['search_sku'] ) { + $args['sentence'] = true; // Ensure search string is treated as a phrase rather than multiple terms. $this->combine_content_and_sku_search = true; } @@ -294,12 +295,12 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { } /** - * Add in conditional search filters for products. + * Add a where clause for matching the SKU field. * - * If the content search and the sku search have the same value, the clause operator here should be "OR" so that the - * match can happen e.g. on the product title OR in the SKU. If they have different values, the clause operator - * should be "AND" because we're assuming we're looking for e.g. a post title containing "foo" AND a SKU containing - * "bar". + * If the content search and the sku search have the same value, the extra clause we're adding here should be nested + * with the other content fields that get covered (e.g. post_title, post_excerpt, post_content) and the operator + * should be 'OR'. If the content and sku searches are different, then both should need to match, so the clause + * should just get tacked on to the rest of the WHERE statement and the operator should be 'AND'. * * @param string $where Where clause used to search posts. * @return string @@ -308,8 +309,19 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { global $wpdb; if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { $like_search = '%' . $wpdb->esc_like( $this->search_sku_in_product_lookup_table ) . '%'; - $operator = $this->combine_content_and_sku_search ? ' OR ' : ' AND '; - $where .= $operator . $wpdb->prepare( 'wc_product_meta_lookup.sku LIKE %s', $like_search ); + + if ( $this->combine_content_and_sku_search ) { + // Ensure this clause gets nested with the other content fields being searched. + $clause = ' OR ' . $wpdb->prepare( '(wc_product_meta_lookup.sku LIKE %s)', $like_search ); + $regex = sprintf( + // The '%' wildcards get hashed during $wpdb->prepare, so we have to match the hash. + "#(post_content LIKE '{[0-9a-f]+}%s{[0-9a-f]+}'\))#", + $wpdb->esc_like( $this->search_sku_in_product_lookup_table ) + ); + $where = preg_replace( $regex, '$1' . $clause, $where ); + } else { + $where .= ' AND ' . $wpdb->prepare( '(wc_product_meta_lookup.sku LIKE %s)', $like_search ); + } } return $where; } From 7807c7054913e524d7299ccb65c9f2800c2d29ee Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 25 Apr 2022 13:58:11 -0700 Subject: [PATCH 206/327] Don't combine content and SKU search We decided the performance hit was too great. So with this, you can still use both the search and search_sku parameters at the same time if you want, but the query will use `AND` so that there must be a partial match from both fields rather than either field. To just search SKUs, all that you need is the search_sku parameter. --- .../class-wc-rest-products-controller.php | 34 ++----------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index 61eec8a6345..b3244aebb74 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -34,13 +34,6 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { */ private $search_sku_in_product_lookup_table = ''; - /** - * If the search and search_sku parameters are the same, the query SQL will be different. - * - * @var bool - */ - private $combine_content_and_sku_search = false; - /** * Get the images for a product or product variation. * @@ -166,11 +159,6 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { // Store this for use in the query clause filters. $this->search_sku_in_product_lookup_table = $request['search_sku']; - if ( isset( $args['s'] ) && $args['s'] === $request['search_sku'] ) { - $args['sentence'] = true; // Ensure search string is treated as a phrase rather than multiple terms. - $this->combine_content_and_sku_search = true; - } - unset( $request['sku'] ); } @@ -258,11 +246,7 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { // Add filters for search criteria in product postmeta via the lookup table. if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { add_filter( 'posts_join', array( $this, 'add_search_criteria_to_wp_query_join' ) ); - if ( $this->combine_content_and_sku_search ) { - add_filter( 'posts_search', array( $this, 'add_search_criteria_to_wp_query_where' ) ); - } else { - add_filter( 'posts_where', array( $this, 'add_search_criteria_to_wp_query_where' ) ); - } + add_filter( 'posts_where', array( $this, 'add_search_criteria_to_wp_query_where' ) ); } $result = parent::get_objects( $query_args ); @@ -270,11 +254,9 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { // Remove filters for search criteria in product postmeta via the lookup table. if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { remove_filter( 'posts_join', array( $this, 'add_search_criteria_to_wp_query_join' ) ); - remove_filter( 'posts_search', array( $this, 'add_search_criteria_to_wp_query_where' ) ); remove_filter( 'posts_where', array( $this, 'add_search_criteria_to_wp_query_where' ) ); $this->search_sku_in_product_lookup_table = ''; - $this->combine_content_and_sku_search = false; } return $result; } @@ -309,19 +291,7 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { global $wpdb; if ( ! empty( $this->search_sku_in_product_lookup_table ) ) { $like_search = '%' . $wpdb->esc_like( $this->search_sku_in_product_lookup_table ) . '%'; - - if ( $this->combine_content_and_sku_search ) { - // Ensure this clause gets nested with the other content fields being searched. - $clause = ' OR ' . $wpdb->prepare( '(wc_product_meta_lookup.sku LIKE %s)', $like_search ); - $regex = sprintf( - // The '%' wildcards get hashed during $wpdb->prepare, so we have to match the hash. - "#(post_content LIKE '{[0-9a-f]+}%s{[0-9a-f]+}'\))#", - $wpdb->esc_like( $this->search_sku_in_product_lookup_table ) - ); - $where = preg_replace( $regex, '$1' . $clause, $where ); - } else { - $where .= ' AND ' . $wpdb->prepare( '(wc_product_meta_lookup.sku LIKE %s)', $like_search ); - } + $where .= ' AND ' . $wpdb->prepare( '(wc_product_meta_lookup.sku LIKE %s)', $like_search ); } return $where; } From eedac6098512c9baebba94c825d1fcec0c3778e3 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:12:50 -0700 Subject: [PATCH 207/327] Update tests --- ...lass-wc-rest-products-controller-tests.php | 194 ++++++++++-------- 1 file changed, 103 insertions(+), 91 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php index 46b0d625c22..833f606e2fc 100644 --- a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php +++ b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php @@ -5,6 +5,33 @@ * Product Controller tests for V3 REST API. */ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { + /** + * @var WC_Product_Simple[] + */ + protected static $products = array(); + + /** + * Create products for tests. + * + * @return void + */ + public static function wpSetUpBeforeClass() { + self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Pancake', 'sku' => 'pancake-1' ) ); + self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Waffle 1', 'sku' => 'pancake-2' ) ); + self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'French Toast', 'sku' => 'waffle-2' ) ); + self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Waffle 3', 'sku' => 'waffle-3' ) ); + } + + /** + * Clean up products after tests. + * + * @return void + */ + public static function wpTearDownAfterClass() { + foreach ( self::$products as $product ) { + WC_Helper_Product::delete_product( $product->get_id() ); + } + } /** * Setup our test server, endpoints, and user info. @@ -149,58 +176,17 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { } /** - * Test that products with partial name or SKU case-insensitive match are returned given both `search` and `search_includes_sku` parameters. + * Test that the `search` parameter does partial matching in the product name, but not the SKU. + * + * @return void */ - public function test_products_with_search_param_including_sku_returns_products_with_sku_and_name_match() { - // Given. + public function test_products_search_with_search_param_only() { wp_set_current_user( $this->user ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WooCommerce Tests' ) ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WordCamp' ) ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WoO' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); - // When. $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); $request->set_query_params( array( - 'search' => 'woo', - 'search_includes_sku' => true, - 'order' => 'asc', - 'orderby' => 'id', - ) - ); - $response = $this->server->dispatch( $request ); - $this->assertEquals( 200, $response->get_status() ); - $response_products = $response->get_data(); - - // Then. - $this->assertEquals( 4, count( $response_products ) ); - $this->assertEquals( $response_products[0]['name'], 'WooCommerce Tests' ); - $this->assertEquals( $response_products[1]['name'], 'WoO' ); - $this->assertEquals( $response_products[2]['sku'], 'Woo' ); - $this->assertEquals( $response_products[3]['sku'], '*sunglasses-woo*' ); - } - - /** - * Test that only products with name match are returned given `search` without `search_includes_sku` parameter. - */ - public function test_products_with_search_param_only_returns_products_with_name_match() { - // Given. - wp_set_current_user( $this->user ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WooCommerce Tests' ) ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WordCamp' ) ); - WC_Helper_Product::create_simple_product( true, array( 'name' => 'WoO' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); - - // When. - $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); - $request->set_query_params( - array( - 'search' => 'woo', + 'search' => 'waffle', 'order' => 'asc', 'orderby' => 'id', ) @@ -209,69 +195,95 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $response_products = $response->get_data(); - // Then. $this->assertEquals( 2, count( $response_products ) ); - $this->assertEquals( $response_products[0]['name'], 'WooCommerce Tests' ); - $this->assertEquals( $response_products[1]['name'], 'WoO' ); + $this->assertEquals( $response_products[0]['name'], 'Waffle 1' ); + $this->assertEquals( $response_products[0]['sku'], 'pancake-2' ); + $this->assertEquals( $response_products[1]['name'], 'Waffle 3' ); + $this->assertEquals( $response_products[1]['sku'], 'waffle-3' ); } /** - * Test that no products with SKU are returned given `search` and `search_includes_sku` parameters when product SKU is disabled. + * Test that the `search_sku` parameter does partial matching in the product SKU, but not the name. + * + * @return void */ - public function test_products_with_search_param_including_sku_returns_no_products_when_sku_is_disabled() { - // Given. + public function test_products_search_with_search_sku_param_only() { + wp_set_current_user( $this->user ); + + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'search_sku' => 'waffle', + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + $this->assertEquals( 2, count( $response_products ) ); + $this->assertEquals( $response_products[0]['name'], 'French Toast' ); + $this->assertEquals( $response_products[0]['sku'], 'waffle-2' ); + $this->assertEquals( $response_products[1]['name'], 'Waffle 3' ); + $this->assertEquals( $response_products[1]['sku'], 'waffle-3' ); + } + + /** + * Test that using the `search` and `search_sku` parameters together only matches when both match. + * + * @return void + */ + public function test_products_search_with_search_and_search_sku_param() { + wp_set_current_user( $this->user ); + + $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); + $request->set_query_params( + array( + 'search' => 'waffle', + 'search_sku' => 'waffle', + 'order' => 'asc', + 'orderby' => 'id', + ) + ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $response_products = $response->get_data(); + + $this->assertEquals( 1, count( $response_products ) ); + $this->assertEquals( $response_products[0]['name'], 'Waffle 3' ); + $this->assertEquals( $response_products[0]['sku'], 'waffle-3' ); + } + + /** + * Test that the `search_sku` parameter does nothing when product SKUs are disabled. + * + * @return void + */ + public function test_products_search_with_search_sku_when_skus_disabled() { wp_set_current_user( $this->user ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'Woo' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'wordpress' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => '*sunglasses-woo*' ) ); - // When. add_filter( 'wc_product_sku_enabled', '__return_false' ); $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); $request->set_query_params( array( - 'search' => 'woo', - 'search_includes_sku' => true, - 'order' => 'asc', - 'orderby' => 'id', + 'search' => 'waffle', + 'search_sku' => 'waffle', + 'order' => 'asc', + 'orderby' => 'id', ) ); $response = $this->server->dispatch( $request ); $this->assertEquals( 200, $response->get_status() ); $response_products = $response->get_data(); - // Then. - $this->assertEquals( 0, count( $response_products ) ); - } + $this->assertEquals( 2, count( $response_products ) ); + $this->assertEquals( $response_products[0]['name'], 'Waffle 1' ); + $this->assertEquals( $response_products[0]['sku'], 'pancake-2' ); + $this->assertEquals( $response_products[1]['name'], 'Waffle 3' ); + $this->assertEquals( $response_products[1]['sku'], 'waffle-3' ); - /** - * Test that the first product with full SKU case-insensitive match are returned given a `sku` parameter. - */ - public function test_products_with_sku_param_returns_the_first_product_with_full_sku_match() { - // Given. - wp_set_current_user( $this->user ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => '0oWoO' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'WoO' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'woo' ) ); - WC_Helper_Product::create_simple_product( true, array( 'sku' => 'woo-sunglasses' ) ); - - // When. - $request = new WP_REST_Request( 'GET', '/wc/v3/products' ); - $request->set_query_params( - array( - 'sku' => 'woo', - 'order' => 'asc', - 'orderby' => 'id', - ) - ); - $response = $this->server->dispatch( $request ); - $this->assertEquals( 200, $response->get_status() ); - $response_products = $response->get_data(); - - // Then. - $this->assertEquals( 1, count( $response_products ) ); - $response_product = $response_products[0]; - $this->assertEquals( 'WoO', $response_product['sku'] ); + remove_filter( 'wc_product_sku_enabled', '__return_false' ); } } From 2c6bf681d2687b7a012751a2a34c6dd5f9acd0ee Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:20:48 -0700 Subject: [PATCH 208/327] Add changelog file --- plugins/woocommerce/changelog/api-28508-search-including-sku | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/api-28508-search-including-sku diff --git a/plugins/woocommerce/changelog/api-28508-search-including-sku b/plugins/woocommerce/changelog/api-28508-search-including-sku new file mode 100644 index 00000000000..a9ba0a962b1 --- /dev/null +++ b/plugins/woocommerce/changelog/api-28508-search-including-sku @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Adds a `search_sku` parameter to the v3 products endpoint. Allows for partial match search of the product SKU field. From d2c7e665f4a0d6de47379e88ccd2963d90ff1cf7 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 25 Apr 2022 15:35:27 -0700 Subject: [PATCH 209/327] Remove outdated code comment --- .../Version3/class-wc-rest-products-controller.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php index b3244aebb74..6c50a1cea48 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller.php @@ -279,11 +279,6 @@ class WC_REST_Products_Controller extends WC_REST_Products_V2_Controller { /** * Add a where clause for matching the SKU field. * - * If the content search and the sku search have the same value, the extra clause we're adding here should be nested - * with the other content fields that get covered (e.g. post_title, post_excerpt, post_content) and the operator - * should be 'OR'. If the content and sku searches are different, then both should need to match, so the clause - * should just get tacked on to the rest of the WHERE statement and the operator should be 'AND'. - * * @param string $where Where clause used to search posts. * @return string */ From cc1fef5bcb75b81e2d22ccda5e9360fa9c61b2f0 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 08:38:45 -0700 Subject: [PATCH 210/327] Try different port for K6 tests --- plugins/woocommerce/tests/performance/config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/tests/performance/config.js b/plugins/woocommerce/tests/performance/config.js index 4fd834cd9e9..91cc3eba5ad 100644 --- a/plugins/woocommerce/tests/performance/config.js +++ b/plugins/woocommerce/tests/performance/config.js @@ -1,5 +1,5 @@ -export const base_url = __ENV.URL || 'http://localhost:8084'; -export const base_host = __ENV.HOST || 'localhost:8084'; +export const base_url = __ENV.URL || 'http://localhost:8086'; +export const base_host = __ENV.HOST || 'localhost:8086'; export const admin_username = __ENV.A_USER || 'admin'; export const admin_password = __ENV.A_PW || 'password'; From 2798add11d8597d54d21ed2459ceb51efc803d88 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 08:56:14 -0700 Subject: [PATCH 211/327] Add changelog --- plugins/woocommerce/changelog/fix-e2e-tests | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-e2e-tests diff --git a/plugins/woocommerce/changelog/fix-e2e-tests b/plugins/woocommerce/changelog/fix-e2e-tests new file mode 100644 index 00000000000..e12cdc15b86 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-e2e-tests @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Related to QOL + + From 6f61dd8088108f7e7b9ba4838e7e262071800334 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 09:05:01 -0700 Subject: [PATCH 212/327] Update cache paths --- .github/workflows/pr-build-and-e2e-tests.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 246b11eed62..82bbafbe639 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -18,9 +18,9 @@ jobs: with: path: | ~/.pnpm-store - package/woocommerce/plugins/woocommerce/packages - package/woocommerce/plugins/woocommerce/**/vendor - key: ${{ runner.os }}-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm @@ -65,10 +65,13 @@ jobs: - name: Cache modules uses: actions/cache@v3 + id: cache-deps with: path: | ~/.pnpm-store - key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm @@ -77,6 +80,7 @@ jobs: run: pnpm install - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Run build @@ -112,10 +116,13 @@ jobs: - name: Cache modules uses: actions/cache@v3 + id: cache-deps with: path: | ~/.pnpm-store - key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM run: npm install -g pnpm @@ -124,6 +131,7 @@ jobs: run: pnpm install - name: Install Composer dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce - name: Run build From 216317c557e191f7c774d0dee243d6161573954c Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 09:27:36 -0700 Subject: [PATCH 213/327] Test updating makepot script command --- plugins/woocommerce/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 37b1610bfcf..82b81eebebb 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -14,7 +14,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", - "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", + "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm nx makepot woocommerce", "build:feature-config": "php bin/generate-feature-config.php", "build:zip": "./bin/build-zip.sh", "lint:js": "eslint assets/js --ext=js", @@ -27,7 +27,7 @@ "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", - "makepot": "composer run-script makepot", + "makepot": "composer run makepot", "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" }, "devDependencies": { From cf783aca58638f39b40a6b5cf6d55ba66fefe77a Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 09:45:51 -0700 Subject: [PATCH 214/327] Move makepot to build-zip bash script --- plugins/woocommerce/bin/build-zip.sh | 3 ++- plugins/woocommerce/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/bin/build-zip.sh b/plugins/woocommerce/bin/build-zip.sh index 53d0348a0ad..eb6419ae13e 100755 --- a/plugins/woocommerce/bin/build-zip.sh +++ b/plugins/woocommerce/bin/build-zip.sh @@ -16,7 +16,8 @@ echo "Running JS Build..." pnpm run build || exit "$?" echo "Cleaning up PHP dependencies..." composer install --no-dev || exit "$?" - +echo "Run makepot..." +composer run makepot echo "Syncing files..." rsync -rc --exclude-from="$PROJECT_PATH/.distignore" "$PROJECT_PATH/" "$DEST_PATH/" --delete --delete-excluded diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 82b81eebebb..1eef9bb1308 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -14,7 +14,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", - "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets && pnpm nx makepot woocommerce", + "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", "build:feature-config": "php bin/generate-feature-config.php", "build:zip": "./bin/build-zip.sh", "lint:js": "eslint assets/js --ext=js", From b2ad3aab61cd4e1dc9f5e8b859d45612381849f9 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 10:09:06 -0700 Subject: [PATCH 215/327] Use the proper composer command for running scripts --- plugins/woocommerce/bin/build-zip.sh | 2 +- plugins/woocommerce/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce/bin/build-zip.sh b/plugins/woocommerce/bin/build-zip.sh index eb6419ae13e..21e6171ab72 100755 --- a/plugins/woocommerce/bin/build-zip.sh +++ b/plugins/woocommerce/bin/build-zip.sh @@ -17,7 +17,7 @@ pnpm run build || exit "$?" echo "Cleaning up PHP dependencies..." composer install --no-dev || exit "$?" echo "Run makepot..." -composer run makepot +composer run-script makepot echo "Syncing files..." rsync -rc --exclude-from="$PROJECT_PATH/.distignore" "$PROJECT_PATH/" "$DEST_PATH/" --delete --delete-excluded diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 1eef9bb1308..37b1610bfcf 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -27,7 +27,7 @@ "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", - "makepot": "composer run makepot", + "makepot": "composer run-script makepot", "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" }, "devDependencies": { From 16dbf4607e359c4c84668a1ddf1450411d659d13 Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:21:09 -0700 Subject: [PATCH 216/327] Break test into smaller more atomic tests. --- .../class-wc-abstract-product-test.php | 77 ++++++++++--------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php index 81dd5fff3a0..94fe4d1621e 100644 --- a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php +++ b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php @@ -6,6 +6,11 @@ use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Registe * Tests relating to the WC_Abstract_Product class. */ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { + /** + * @var int + */ + private $admin_user; + /** * @var Download_Directories $download_directories */ @@ -16,11 +21,19 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { */ private $product; + /** + * @var int + */ + private $shop_manager_user; + /** * Setup items we need repeatedly across tests in this class. */ public function set_up() { + $this->admin_user = self::factory()->user->create( array( 'role' => 'administrator' ) ); + $this->shop_manager_user = self::factory()->user->create( array( 'role' => 'shop_manager' ) ); $this->download_directories = wc_get_container()->get( Download_Directories::class ); + $this->download_directories->set_mode( Download_Directories::MODE_ENABLED ); $this->download_directories->add_approved_directory( 'https://always.trusted/' ); $this->download_directories->add_approved_directory( 'https://new.supplier/' ); @@ -75,13 +88,10 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { } /** - * @testdox Confirm that when product downloads are set, the operation is successful (or else errors are raised) as appropriate. + * @testdox Confirm behavior that when product downloads are set by an admin-level user. */ - public function test_setting_of_product_downloads() { - $administrator = self::factory()->user->create( array( 'role' => 'administrator' ) ); - $shop_manager = self::factory()->user->create( array( 'role' => 'shop_manager' ) ); - wp_set_current_user( $administrator ); - + public function test_updating_of_product_downloads_by_admin_user() { + wp_set_current_user( $this->admin_user ); $downloads = $this->product->get_downloads(); $downloads[] = array( 'id' => '', @@ -89,7 +99,6 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { 'name' => 'A file', ); - wp_set_current_user( $administrator ); $this->product->set_downloads( $downloads ); $this->product->save(); $this->assertCount( @@ -97,29 +106,29 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { $this->product->get_downloads(), 'Administrators can add new downloadable files and a matching download directory rule will automatically be generated if necessary.' ); + } - wp_set_current_user( $shop_manager ); - $exception_thrown = false; - $downloads = $this->product->get_downloads(); - $downloads[] = array( + /** + * @testdox Confirm that attempts to add an invalid downloadable file to a product is rejected. + */ + public function test_addition_of_invalid_product_downloads_by_shop_manager() { + wp_set_current_user( $this->shop_manager_user ); + $downloads = $this->product->get_downloads(); + $downloads[] = array( 'id' => '', 'file' => 'https://also.not.yet.added/file.pdf', 'name' => 'Another file', ); - try { - $this->product->set_downloads( $downloads ); - $this->product->save(); - } catch ( WC_Data_Exception $e ) { - $exception_thrown = true; - } + $this->expectException( WC_Data_Exception::class ); + $this->product->set_downloads( $downloads ); + $this->product->save(); + } - $this->assertTrue( - $exception_thrown, - 'If a shop manager attempts to add a new downloadable file (not covered by an approved directory rule) an error is generated.' - ); - - $exception_thrown = false; + /** + * @testdox Confirm that attempts to update a downloadable file to an invalid path is rejected. + */ + public function test_invalid_update_of_product_downloads_by_shop_manager() { $downloads = $this->product->get_downloads(); $existing_file_key = key( $downloads ); $downloads[ $existing_file_key ] = array( @@ -128,19 +137,17 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { 'name' => 'Yet another file', ); - try { - $this->product->set_downloads( $downloads ); - $this->product->save(); - } catch ( WC_Data_Exception $e ) { - $exception_thrown = true; - } - - $this->assertTrue( - $exception_thrown, - 'If a shop manager attempts to change an existing downloadable file to a new path (not covered by an approved directory rule) an error is generated.' - ); + $this->expectException( WC_Data_Exception::class ); + $this->product->set_downloads( $downloads ); + $this->product->save(); + } + /** + * @testdox Confirm that attempts to update a downloadable file to a different but valid path works as expected. + */ + public function test_valid_update_of_product_downloads_by_shop_manager() { $downloads = $this->product->get_downloads(); + $existing_file_key = key( $downloads ); $downloads[ $existing_file_key ] = array( 'id' => $existing_file_key, 'file' => 'https://always.trusted/why-we-test-code.pdf', @@ -151,7 +158,7 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { $this->product->save(); $this->assertCount( - 4, + 3, $this->product->get_downloads(), 'If a shop manager attempts to change an existing downloadable file to a valid path (that is covered by an approved directory rule) that is okay.' ); From 6e5d4acc22bf29a754f6e11f11a9b8e24eb2fe5e Mon Sep 17 00:00:00 2001 From: barryhughes <3594411+barryhughes@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:24:30 -0700 Subject: [PATCH 217/327] Revise testdox --- .../includes/abstracts/class-wc-abstract-product-test.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php index 94fe4d1621e..40834fea7b9 100644 --- a/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php +++ b/plugins/woocommerce/tests/php/includes/abstracts/class-wc-abstract-product-test.php @@ -88,7 +88,7 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { } /** - * @testdox Confirm behavior that when product downloads are set by an admin-level user. + * @testdox Confirm admin-level users can update product downloads, even if the new path is initially unapproved. */ public function test_updating_of_product_downloads_by_admin_user() { wp_set_current_user( $this->admin_user ); @@ -109,7 +109,7 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { } /** - * @testdox Confirm that attempts to add an invalid downloadable file to a product is rejected. + * @testdox Confirm that attempts (by a shop manager) to add an invalid downloadable file to a product are rejected. */ public function test_addition_of_invalid_product_downloads_by_shop_manager() { wp_set_current_user( $this->shop_manager_user ); @@ -126,7 +126,7 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { } /** - * @testdox Confirm that attempts to update a downloadable file to an invalid path is rejected. + * @testdox Confirm that attempts (by a shop manager) to update a downloadable file to an invalid path are rejected. */ public function test_invalid_update_of_product_downloads_by_shop_manager() { $downloads = $this->product->get_downloads(); @@ -143,7 +143,7 @@ class WC_Abstract_Product_Test extends WC_Unit_Test_Case { } /** - * @testdox Confirm that attempts to update a downloadable file to a different but valid path works as expected. + * @testdox Confirm that attempts (by a shop manager) to update a downloadable file to a different but valid path work as expected. */ public function test_valid_update_of_product_downloads_by_shop_manager() { $downloads = $this->product->get_downloads(); From 0feaf3a9de5d42d802a56dfc34c323739bd64944 Mon Sep 17 00:00:00 2001 From: roykho Date: Wed, 27 Apr 2022 12:33:37 -0700 Subject: [PATCH 218/327] Put exit clause on makepot script --- plugins/woocommerce/bin/build-zip.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/bin/build-zip.sh b/plugins/woocommerce/bin/build-zip.sh index 21e6171ab72..b29785fdca1 100755 --- a/plugins/woocommerce/bin/build-zip.sh +++ b/plugins/woocommerce/bin/build-zip.sh @@ -17,7 +17,7 @@ pnpm run build || exit "$?" echo "Cleaning up PHP dependencies..." composer install --no-dev || exit "$?" echo "Run makepot..." -composer run-script makepot +composer run-script makepot || exit "$?" echo "Syncing files..." rsync -rc --exclude-from="$PROJECT_PATH/.distignore" "$PROJECT_PATH/" "$DEST_PATH/" --delete --delete-excluded From ea504f09b5b03360001f23ff7bd447b52097e2d0 Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Wed, 27 Apr 2022 14:33:34 -0700 Subject: [PATCH 219/327] phpcs cleanup --- ...lass-wc-rest-products-controller-tests.php | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php index 833f606e2fc..a9a343ef491 100644 --- a/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php +++ b/plugins/woocommerce/tests/php/includes/rest-api/Controllers/Version3/class-wc-rest-products-controller-tests.php @@ -16,10 +16,34 @@ class WC_REST_Products_Controller_Tests extends WC_REST_Unit_Test_Case { * @return void */ public static function wpSetUpBeforeClass() { - self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Pancake', 'sku' => 'pancake-1' ) ); - self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Waffle 1', 'sku' => 'pancake-2' ) ); - self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'French Toast', 'sku' => 'waffle-2' ) ); - self::$products[] = WC_Helper_Product::create_simple_product( true, array( 'name' => 'Waffle 3', 'sku' => 'waffle-3' ) ); + self::$products[] = WC_Helper_Product::create_simple_product( + true, + array( + 'name' => 'Pancake', + 'sku' => 'pancake-1', + ) + ); + self::$products[] = WC_Helper_Product::create_simple_product( + true, + array( + 'name' => 'Waffle 1', + 'sku' => 'pancake-2', + ) + ); + self::$products[] = WC_Helper_Product::create_simple_product( + true, + array( + 'name' => 'French Toast', + 'sku' => 'waffle-2', + ) + ); + self::$products[] = WC_Helper_Product::create_simple_product( + true, + array( + 'name' => 'Waffle 3', + 'sku' => 'waffle-3', + ) + ); } /** From 6100df9a044a9d494deb1bce446645109fd96b2d Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 28 Apr 2022 09:54:54 +1200 Subject: [PATCH 220/327] Storybook: Move code to `tools/` (#32729) --- package.json | 134 +- plugins/woocommerce-admin/package.json | 20 - plugins/woocommerce-admin/webpack.config.js | 2 +- .../changelog/fix-storybook-location | 4 + pnpm-lock.yaml | 4719 ++++++++++------- .../storybook/.storybook/main.js | 6 +- .../storybook/.storybook/preview-head.html | 0 .../storybook}/import-wp-css-storybook.sh | 0 .../storybook/manager.js | 0 .../storybook/preview.js | 0 .../storybook/setting.mock.js | 0 .../storybook/tsconfig.json | 0 .../storybook/webpack.config.js | 30 +- .../storybook/woocommerce_logo.png | Bin tools/storybook/wordpress/css/about-rtl.css | 1473 +++++ .../storybook/wordpress/css/about-rtl.min.css | 2 + tools/storybook/wordpress/css/about.css | 1472 +++++ tools/storybook/wordpress/css/about.min.css | 2 + .../wordpress/css/admin-menu-rtl.css | 944 ++++ .../wordpress/css/admin-menu-rtl.min.css | 2 + tools/storybook/wordpress/css/admin-menu.css | 943 ++++ .../wordpress/css/admin-menu.min.css | 2 + .../wordpress/css/code-editor-rtl.css | 77 + .../wordpress/css/code-editor-rtl.min.css | 2 + tools/storybook/wordpress/css/code-editor.css | 76 + .../wordpress/css/code-editor.min.css | 2 + .../wordpress/css/color-picker-rtl.css | 183 + .../wordpress/css/color-picker-rtl.min.css | 2 + .../storybook/wordpress/css/color-picker.css | 182 + .../wordpress/css/color-picker.min.css | 2 + .../wordpress/css/colors/_admin.scss | 797 +++ .../wordpress/css/colors/_mixins.scss | 37 + .../wordpress/css/colors/_variables.scss | 66 + .../wordpress/css/colors/blue/colors-rtl.css | 714 +++ .../css/colors/blue/colors-rtl.min.css | 2 + .../wordpress/css/colors/blue/colors.css | 714 +++ .../wordpress/css/colors/blue/colors.min.css | 2 + .../wordpress/css/colors/blue/colors.scss | 12 + .../css/colors/coffee/colors-rtl.css | 681 +++ .../css/colors/coffee/colors-rtl.min.css | 2 + .../wordpress/css/colors/coffee/colors.css | 681 +++ .../css/colors/coffee/colors.min.css | 2 + .../wordpress/css/colors/coffee/colors.scss | 9 + .../css/colors/ectoplasm/colors-rtl.css | 714 +++ .../css/colors/ectoplasm/colors-rtl.min.css | 2 + .../wordpress/css/colors/ectoplasm/colors.css | 714 +++ .../css/colors/ectoplasm/colors.min.css | 2 + .../css/colors/ectoplasm/colors.scss | 9 + .../wordpress/css/colors/light/colors-rtl.css | 720 +++ .../css/colors/light/colors-rtl.min.css | 2 + .../wordpress/css/colors/light/colors.css | 720 +++ .../wordpress/css/colors/light/colors.min.css | 2 + .../wordpress/css/colors/light/colors.scss | 27 + .../css/colors/midnight/colors-rtl.css | 714 +++ .../css/colors/midnight/colors-rtl.min.css | 2 + .../wordpress/css/colors/midnight/colors.css | 714 +++ .../css/colors/midnight/colors.min.css | 2 + .../wordpress/css/colors/midnight/colors.scss | 6 + .../css/colors/modern/colors-rtl.css | 714 +++ .../css/colors/modern/colors-rtl.min.css | 2 + .../wordpress/css/colors/modern/colors.css | 714 +++ .../css/colors/modern/colors.min.css | 2 + .../wordpress/css/colors/modern/colors.scss | 10 + .../wordpress/css/colors/ocean/colors-rtl.css | 681 +++ .../css/colors/ocean/colors-rtl.min.css | 2 + .../wordpress/css/colors/ocean/colors.css | 681 +++ .../wordpress/css/colors/ocean/colors.min.css | 2 + .../wordpress/css/colors/ocean/colors.scss | 10 + .../css/colors/sunrise/colors-rtl.css | 714 +++ .../css/colors/sunrise/colors-rtl.min.css | 2 + .../wordpress/css/colors/sunrise/colors.css | 714 +++ .../css/colors/sunrise/colors.min.css | 2 + .../wordpress/css/colors/sunrise/colors.scss | 7 + tools/storybook/wordpress/css/common-rtl.css | 4123 ++++++++++++++ .../wordpress/css/common-rtl.min.css | 9 + tools/storybook/wordpress/css/common.css | 4122 ++++++++++++++ tools/storybook/wordpress/css/common.min.css | 9 + .../wordpress/css/customize-controls-rtl.css | 3003 +++++++++++ .../css/customize-controls-rtl.min.css | 2 + .../wordpress/css/customize-controls.css | 3002 +++++++++++ .../wordpress/css/customize-controls.min.css | 2 + .../wordpress/css/customize-nav-menus-rtl.css | 884 +++ .../css/customize-nav-menus-rtl.min.css | 2 + .../wordpress/css/customize-nav-menus.css | 883 +++ .../wordpress/css/customize-nav-menus.min.css | 2 + .../wordpress/css/customize-widgets-rtl.css | 479 ++ .../css/customize-widgets-rtl.min.css | 2 + .../wordpress/css/customize-widgets.css | 478 ++ .../wordpress/css/customize-widgets.min.css | 2 + .../storybook/wordpress/css/dashboard-rtl.css | 1488 ++++++ .../wordpress/css/dashboard-rtl.min.css | 2 + tools/storybook/wordpress/css/dashboard.css | 1487 ++++++ .../storybook/wordpress/css/dashboard.min.css | 2 + .../wordpress/css/deprecated-media-rtl.css | 430 ++ .../css/deprecated-media-rtl.min.css | 2 + .../wordpress/css/deprecated-media.css | 429 ++ .../wordpress/css/deprecated-media.min.css | 2 + tools/storybook/wordpress/css/edit-rtl.css | 2022 +++++++ .../storybook/wordpress/css/edit-rtl.min.css | 2 + tools/storybook/wordpress/css/edit.css | 2021 +++++++ tools/storybook/wordpress/css/edit.min.css | 2 + .../wordpress/css/farbtastic-rtl.css | 42 + .../wordpress/css/farbtastic-rtl.min.css | 2 + tools/storybook/wordpress/css/farbtastic.css | 41 + .../wordpress/css/farbtastic.min.css | 2 + tools/storybook/wordpress/css/forms-rtl.css | 1766 ++++++ .../storybook/wordpress/css/forms-rtl.min.css | 2 + tools/storybook/wordpress/css/forms.css | 1765 ++++++ tools/storybook/wordpress/css/forms.min.css | 2 + tools/storybook/wordpress/css/install-rtl.css | 380 ++ .../wordpress/css/install-rtl.min.css | 2 + tools/storybook/wordpress/css/install.css | 379 ++ tools/storybook/wordpress/css/install.min.css | 2 + tools/storybook/wordpress/css/l10n-rtl.css | 121 + .../storybook/wordpress/css/l10n-rtl.min.css | 2 + tools/storybook/wordpress/css/l10n.css | 120 + tools/storybook/wordpress/css/l10n.min.css | 2 + .../wordpress/css/list-tables-rtl.css | 2247 ++++++++ .../wordpress/css/list-tables-rtl.min.css | 2 + tools/storybook/wordpress/css/list-tables.css | 2246 ++++++++ .../wordpress/css/list-tables.min.css | 2 + tools/storybook/wordpress/css/login-rtl.css | 480 ++ .../storybook/wordpress/css/login-rtl.min.css | 2 + tools/storybook/wordpress/css/login.css | 479 ++ tools/storybook/wordpress/css/login.min.css | 2 + tools/storybook/wordpress/css/media-rtl.css | 1368 +++++ .../storybook/wordpress/css/media-rtl.min.css | 2 + tools/storybook/wordpress/css/media.css | 1367 +++++ tools/storybook/wordpress/css/media.min.css | 2 + .../storybook/wordpress/css/nav-menus-rtl.css | 1027 ++++ .../wordpress/css/nav-menus-rtl.min.css | 2 + tools/storybook/wordpress/css/nav-menus.css | 1026 ++++ .../storybook/wordpress/css/nav-menus.min.css | 2 + .../storybook/wordpress/css/revisions-rtl.css | 603 +++ .../wordpress/css/revisions-rtl.min.css | 2 + tools/storybook/wordpress/css/revisions.css | 602 +++ .../storybook/wordpress/css/revisions.min.css | 2 + .../wordpress/css/site-health-rtl.css | 360 ++ .../wordpress/css/site-health-rtl.min.css | 2 + tools/storybook/wordpress/css/site-health.css | 359 ++ .../wordpress/css/site-health.min.css | 2 + .../storybook/wordpress/css/site-icon-rtl.css | 55 + .../wordpress/css/site-icon-rtl.min.css | 2 + tools/storybook/wordpress/css/site-icon.css | 54 + .../storybook/wordpress/css/site-icon.min.css | 2 + tools/storybook/wordpress/css/themes-rtl.css | 2005 +++++++ .../wordpress/css/themes-rtl.min.css | 2 + tools/storybook/wordpress/css/themes.css | 2004 +++++++ tools/storybook/wordpress/css/themes.min.css | 2 + tools/storybook/wordpress/css/widgets-rtl.css | 877 +++ .../wordpress/css/widgets-rtl.min.css | 2 + tools/storybook/wordpress/css/widgets.css | 876 +++ tools/storybook/wordpress/css/widgets.min.css | 2 + .../storybook/wordpress/css/wp-admin-rtl.css | 16 + .../wordpress/css/wp-admin-rtl.min.css | 16 + tools/storybook/wordpress/css/wp-admin.css | 15 + .../storybook/wordpress/css/wp-admin.min.css | 16 + .../wordpress/images/about-header-about.svg | 11 + .../wordpress/images/about-header-credits.svg | 15 + .../images/about-header-freedoms.svg | 18 + .../wordpress/images/about-header-privacy.svg | 12 + .../wordpress/images/about-texture.png | Bin 0 -> 146755 bytes .../wordpress/images/align-center-2x.png | Bin 0 -> 147 bytes .../wordpress/images/align-center.png | Bin 0 -> 546 bytes .../wordpress/images/align-left-2x.png | Bin 0 -> 143 bytes .../storybook/wordpress/images/align-left.png | Bin 0 -> 554 bytes .../wordpress/images/align-none-2x.png | Bin 0 -> 121 bytes .../storybook/wordpress/images/align-none.png | Bin 0 -> 417 bytes .../wordpress/images/align-right-2x.png | Bin 0 -> 142 bytes .../wordpress/images/align-right.png | Bin 0 -> 509 bytes .../storybook/wordpress/images/arrows-2x.png | Bin 0 -> 863 bytes tools/storybook/wordpress/images/arrows.png | Bin 0 -> 243 bytes .../wordpress/images/browser-rtl.png | Bin 0 -> 40170 bytes tools/storybook/wordpress/images/browser.png | Bin 0 -> 40626 bytes .../wordpress/images/bubble_bg-2x.gif | Bin 0 -> 424 bytes .../storybook/wordpress/images/bubble_bg.gif | Bin 0 -> 398 bytes .../images/comment-grey-bubble-2x.png | Bin 0 -> 258 bytes .../wordpress/images/comment-grey-bubble.png | Bin 0 -> 114 bytes .../wordpress/images/date-button-2x.gif | Bin 0 -> 996 bytes .../wordpress/images/date-button.gif | Bin 0 -> 400 bytes .../storybook/wordpress/images/freedom-1.svg | 12 + .../storybook/wordpress/images/freedom-2.svg | 13 + .../storybook/wordpress/images/freedom-3.svg | 37 + .../storybook/wordpress/images/freedom-4.svg | 28 + tools/storybook/wordpress/images/generic.png | Bin 0 -> 719 bytes .../storybook/wordpress/images/icons32-2x.png | Bin 0 -> 21770 bytes .../wordpress/images/icons32-vs-2x.png | Bin 0 -> 21396 bytes .../storybook/wordpress/images/icons32-vs.png | Bin 0 -> 8007 bytes tools/storybook/wordpress/images/icons32.png | Bin 0 -> 8023 bytes .../wordpress/images/imgedit-icons-2x.png | Bin 0 -> 7664 bytes .../wordpress/images/imgedit-icons.png | Bin 0 -> 4055 bytes tools/storybook/wordpress/images/list-2x.png | Bin 0 -> 1523 bytes tools/storybook/wordpress/images/list.png | Bin 0 -> 1003 bytes tools/storybook/wordpress/images/loading.gif | Bin 0 -> 1372 bytes tools/storybook/wordpress/images/marker.png | Bin 0 -> 360 bytes tools/storybook/wordpress/images/mask.png | Bin 0 -> 2001 bytes .../wordpress/images/media-button-2x.png | Bin 0 -> 850 bytes .../wordpress/images/media-button-image.gif | Bin 0 -> 200 bytes .../wordpress/images/media-button-music.gif | Bin 0 -> 206 bytes .../wordpress/images/media-button-other.gif | Bin 0 -> 248 bytes .../wordpress/images/media-button-video.gif | Bin 0 -> 133 bytes .../wordpress/images/media-button.png | Bin 0 -> 323 bytes tools/storybook/wordpress/images/menu-2x.png | Bin 0 -> 12672 bytes .../storybook/wordpress/images/menu-vs-2x.png | Bin 0 -> 12453 bytes tools/storybook/wordpress/images/menu-vs.png | Bin 0 -> 5086 bytes tools/storybook/wordpress/images/menu.png | Bin 0 -> 5039 bytes tools/storybook/wordpress/images/no.png | Bin 0 -> 755 bytes .../wordpress/images/post-formats-vs.png | Bin 0 -> 2450 bytes .../wordpress/images/post-formats.png | Bin 0 -> 2157 bytes .../wordpress/images/post-formats32-vs.png | Bin 0 -> 5111 bytes .../wordpress/images/post-formats32.png | Bin 0 -> 5142 bytes tools/storybook/wordpress/images/privacy.svg | 30 + .../storybook/wordpress/images/resize-2x.gif | Bin 0 -> 151 bytes .../wordpress/images/resize-rtl-2x.gif | Bin 0 -> 150 bytes .../storybook/wordpress/images/resize-rtl.gif | Bin 0 -> 70 bytes tools/storybook/wordpress/images/resize.gif | Bin 0 -> 64 bytes tools/storybook/wordpress/images/se.png | Bin 0 -> 120 bytes tools/storybook/wordpress/images/sort-2x.gif | Bin 0 -> 97 bytes tools/storybook/wordpress/images/sort.gif | Bin 0 -> 55 bytes .../storybook/wordpress/images/spinner-2x.gif | Bin 0 -> 7536 bytes tools/storybook/wordpress/images/spinner.gif | Bin 0 -> 3656 bytes tools/storybook/wordpress/images/stars-2x.png | Bin 0 -> 1257 bytes tools/storybook/wordpress/images/stars.png | Bin 0 -> 924 bytes .../wordpress/images/w-logo-blue.png | Bin 0 -> 3113 bytes .../wordpress/images/w-logo-white.png | Bin 0 -> 5395 bytes tools/storybook/wordpress/images/wheel.png | Bin 0 -> 6047 bytes .../wordpress/images/wordpress-logo-white.svg | 1 + .../wordpress/images/wordpress-logo.png | Bin 0 -> 2480 bytes .../wordpress/images/wordpress-logo.svg | 1 + .../wordpress/images/wpspin_light-2x.gif | Bin 0 -> 8875 bytes .../wordpress/images/wpspin_light.gif | Bin 0 -> 2052 bytes tools/storybook/wordpress/images/xit-2x.gif | Bin 0 -> 825 bytes tools/storybook/wordpress/images/xit.gif | Bin 0 -> 181 bytes tools/storybook/wordpress/images/yes.png | Bin 0 -> 539 bytes 234 files changed, 68371 insertions(+), 2071 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-storybook-location rename {plugins/woocommerce-admin => tools}/storybook/.storybook/main.js (88%) rename {plugins/woocommerce-admin => tools}/storybook/.storybook/preview-head.html (100%) rename {plugins/woocommerce-admin/bin => tools/storybook}/import-wp-css-storybook.sh (100%) rename {plugins/woocommerce-admin => tools}/storybook/manager.js (100%) rename {plugins/woocommerce-admin => tools}/storybook/preview.js (100%) rename {plugins/woocommerce-admin => tools}/storybook/setting.mock.js (100%) rename {plugins/woocommerce-admin => tools}/storybook/tsconfig.json (100%) rename {plugins/woocommerce-admin => tools}/storybook/webpack.config.js (63%) rename {plugins/woocommerce-admin => tools}/storybook/woocommerce_logo.png (100%) create mode 100644 tools/storybook/wordpress/css/about-rtl.css create mode 100644 tools/storybook/wordpress/css/about-rtl.min.css create mode 100644 tools/storybook/wordpress/css/about.css create mode 100644 tools/storybook/wordpress/css/about.min.css create mode 100644 tools/storybook/wordpress/css/admin-menu-rtl.css create mode 100644 tools/storybook/wordpress/css/admin-menu-rtl.min.css create mode 100644 tools/storybook/wordpress/css/admin-menu.css create mode 100644 tools/storybook/wordpress/css/admin-menu.min.css create mode 100644 tools/storybook/wordpress/css/code-editor-rtl.css create mode 100644 tools/storybook/wordpress/css/code-editor-rtl.min.css create mode 100644 tools/storybook/wordpress/css/code-editor.css create mode 100644 tools/storybook/wordpress/css/code-editor.min.css create mode 100644 tools/storybook/wordpress/css/color-picker-rtl.css create mode 100644 tools/storybook/wordpress/css/color-picker-rtl.min.css create mode 100644 tools/storybook/wordpress/css/color-picker.css create mode 100644 tools/storybook/wordpress/css/color-picker.min.css create mode 100644 tools/storybook/wordpress/css/colors/_admin.scss create mode 100644 tools/storybook/wordpress/css/colors/_mixins.scss create mode 100644 tools/storybook/wordpress/css/colors/_variables.scss create mode 100644 tools/storybook/wordpress/css/colors/blue/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/blue/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/blue/colors.css create mode 100644 tools/storybook/wordpress/css/colors/blue/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/blue/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/coffee/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/coffee/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/coffee/colors.css create mode 100644 tools/storybook/wordpress/css/colors/coffee/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/coffee/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/ectoplasm/colors.css create mode 100644 tools/storybook/wordpress/css/colors/ectoplasm/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/ectoplasm/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/light/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/light/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/light/colors.css create mode 100644 tools/storybook/wordpress/css/colors/light/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/light/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/midnight/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/midnight/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/midnight/colors.css create mode 100644 tools/storybook/wordpress/css/colors/midnight/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/midnight/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/modern/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/modern/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/modern/colors.css create mode 100644 tools/storybook/wordpress/css/colors/modern/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/modern/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/ocean/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/ocean/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/ocean/colors.css create mode 100644 tools/storybook/wordpress/css/colors/ocean/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/ocean/colors.scss create mode 100644 tools/storybook/wordpress/css/colors/sunrise/colors-rtl.css create mode 100644 tools/storybook/wordpress/css/colors/sunrise/colors-rtl.min.css create mode 100644 tools/storybook/wordpress/css/colors/sunrise/colors.css create mode 100644 tools/storybook/wordpress/css/colors/sunrise/colors.min.css create mode 100644 tools/storybook/wordpress/css/colors/sunrise/colors.scss create mode 100644 tools/storybook/wordpress/css/common-rtl.css create mode 100644 tools/storybook/wordpress/css/common-rtl.min.css create mode 100644 tools/storybook/wordpress/css/common.css create mode 100644 tools/storybook/wordpress/css/common.min.css create mode 100644 tools/storybook/wordpress/css/customize-controls-rtl.css create mode 100644 tools/storybook/wordpress/css/customize-controls-rtl.min.css create mode 100644 tools/storybook/wordpress/css/customize-controls.css create mode 100644 tools/storybook/wordpress/css/customize-controls.min.css create mode 100644 tools/storybook/wordpress/css/customize-nav-menus-rtl.css create mode 100644 tools/storybook/wordpress/css/customize-nav-menus-rtl.min.css create mode 100644 tools/storybook/wordpress/css/customize-nav-menus.css create mode 100644 tools/storybook/wordpress/css/customize-nav-menus.min.css create mode 100644 tools/storybook/wordpress/css/customize-widgets-rtl.css create mode 100644 tools/storybook/wordpress/css/customize-widgets-rtl.min.css create mode 100644 tools/storybook/wordpress/css/customize-widgets.css create mode 100644 tools/storybook/wordpress/css/customize-widgets.min.css create mode 100644 tools/storybook/wordpress/css/dashboard-rtl.css create mode 100644 tools/storybook/wordpress/css/dashboard-rtl.min.css create mode 100644 tools/storybook/wordpress/css/dashboard.css create mode 100644 tools/storybook/wordpress/css/dashboard.min.css create mode 100644 tools/storybook/wordpress/css/deprecated-media-rtl.css create mode 100644 tools/storybook/wordpress/css/deprecated-media-rtl.min.css create mode 100644 tools/storybook/wordpress/css/deprecated-media.css create mode 100644 tools/storybook/wordpress/css/deprecated-media.min.css create mode 100644 tools/storybook/wordpress/css/edit-rtl.css create mode 100644 tools/storybook/wordpress/css/edit-rtl.min.css create mode 100644 tools/storybook/wordpress/css/edit.css create mode 100644 tools/storybook/wordpress/css/edit.min.css create mode 100644 tools/storybook/wordpress/css/farbtastic-rtl.css create mode 100644 tools/storybook/wordpress/css/farbtastic-rtl.min.css create mode 100644 tools/storybook/wordpress/css/farbtastic.css create mode 100644 tools/storybook/wordpress/css/farbtastic.min.css create mode 100644 tools/storybook/wordpress/css/forms-rtl.css create mode 100644 tools/storybook/wordpress/css/forms-rtl.min.css create mode 100644 tools/storybook/wordpress/css/forms.css create mode 100644 tools/storybook/wordpress/css/forms.min.css create mode 100644 tools/storybook/wordpress/css/install-rtl.css create mode 100644 tools/storybook/wordpress/css/install-rtl.min.css create mode 100644 tools/storybook/wordpress/css/install.css create mode 100644 tools/storybook/wordpress/css/install.min.css create mode 100644 tools/storybook/wordpress/css/l10n-rtl.css create mode 100644 tools/storybook/wordpress/css/l10n-rtl.min.css create mode 100644 tools/storybook/wordpress/css/l10n.css create mode 100644 tools/storybook/wordpress/css/l10n.min.css create mode 100644 tools/storybook/wordpress/css/list-tables-rtl.css create mode 100644 tools/storybook/wordpress/css/list-tables-rtl.min.css create mode 100644 tools/storybook/wordpress/css/list-tables.css create mode 100644 tools/storybook/wordpress/css/list-tables.min.css create mode 100644 tools/storybook/wordpress/css/login-rtl.css create mode 100644 tools/storybook/wordpress/css/login-rtl.min.css create mode 100644 tools/storybook/wordpress/css/login.css create mode 100644 tools/storybook/wordpress/css/login.min.css create mode 100644 tools/storybook/wordpress/css/media-rtl.css create mode 100644 tools/storybook/wordpress/css/media-rtl.min.css create mode 100644 tools/storybook/wordpress/css/media.css create mode 100644 tools/storybook/wordpress/css/media.min.css create mode 100644 tools/storybook/wordpress/css/nav-menus-rtl.css create mode 100644 tools/storybook/wordpress/css/nav-menus-rtl.min.css create mode 100644 tools/storybook/wordpress/css/nav-menus.css create mode 100644 tools/storybook/wordpress/css/nav-menus.min.css create mode 100644 tools/storybook/wordpress/css/revisions-rtl.css create mode 100644 tools/storybook/wordpress/css/revisions-rtl.min.css create mode 100644 tools/storybook/wordpress/css/revisions.css create mode 100644 tools/storybook/wordpress/css/revisions.min.css create mode 100644 tools/storybook/wordpress/css/site-health-rtl.css create mode 100644 tools/storybook/wordpress/css/site-health-rtl.min.css create mode 100644 tools/storybook/wordpress/css/site-health.css create mode 100644 tools/storybook/wordpress/css/site-health.min.css create mode 100644 tools/storybook/wordpress/css/site-icon-rtl.css create mode 100644 tools/storybook/wordpress/css/site-icon-rtl.min.css create mode 100644 tools/storybook/wordpress/css/site-icon.css create mode 100644 tools/storybook/wordpress/css/site-icon.min.css create mode 100644 tools/storybook/wordpress/css/themes-rtl.css create mode 100644 tools/storybook/wordpress/css/themes-rtl.min.css create mode 100644 tools/storybook/wordpress/css/themes.css create mode 100644 tools/storybook/wordpress/css/themes.min.css create mode 100644 tools/storybook/wordpress/css/widgets-rtl.css create mode 100644 tools/storybook/wordpress/css/widgets-rtl.min.css create mode 100644 tools/storybook/wordpress/css/widgets.css create mode 100644 tools/storybook/wordpress/css/widgets.min.css create mode 100644 tools/storybook/wordpress/css/wp-admin-rtl.css create mode 100644 tools/storybook/wordpress/css/wp-admin-rtl.min.css create mode 100644 tools/storybook/wordpress/css/wp-admin.css create mode 100644 tools/storybook/wordpress/css/wp-admin.min.css create mode 100644 tools/storybook/wordpress/images/about-header-about.svg create mode 100644 tools/storybook/wordpress/images/about-header-credits.svg create mode 100644 tools/storybook/wordpress/images/about-header-freedoms.svg create mode 100644 tools/storybook/wordpress/images/about-header-privacy.svg create mode 100644 tools/storybook/wordpress/images/about-texture.png create mode 100644 tools/storybook/wordpress/images/align-center-2x.png create mode 100644 tools/storybook/wordpress/images/align-center.png create mode 100644 tools/storybook/wordpress/images/align-left-2x.png create mode 100644 tools/storybook/wordpress/images/align-left.png create mode 100644 tools/storybook/wordpress/images/align-none-2x.png create mode 100644 tools/storybook/wordpress/images/align-none.png create mode 100644 tools/storybook/wordpress/images/align-right-2x.png create mode 100644 tools/storybook/wordpress/images/align-right.png create mode 100644 tools/storybook/wordpress/images/arrows-2x.png create mode 100644 tools/storybook/wordpress/images/arrows.png create mode 100644 tools/storybook/wordpress/images/browser-rtl.png create mode 100644 tools/storybook/wordpress/images/browser.png create mode 100644 tools/storybook/wordpress/images/bubble_bg-2x.gif create mode 100644 tools/storybook/wordpress/images/bubble_bg.gif create mode 100644 tools/storybook/wordpress/images/comment-grey-bubble-2x.png create mode 100644 tools/storybook/wordpress/images/comment-grey-bubble.png create mode 100644 tools/storybook/wordpress/images/date-button-2x.gif create mode 100644 tools/storybook/wordpress/images/date-button.gif create mode 100644 tools/storybook/wordpress/images/freedom-1.svg create mode 100644 tools/storybook/wordpress/images/freedom-2.svg create mode 100644 tools/storybook/wordpress/images/freedom-3.svg create mode 100644 tools/storybook/wordpress/images/freedom-4.svg create mode 100644 tools/storybook/wordpress/images/generic.png create mode 100644 tools/storybook/wordpress/images/icons32-2x.png create mode 100644 tools/storybook/wordpress/images/icons32-vs-2x.png create mode 100644 tools/storybook/wordpress/images/icons32-vs.png create mode 100644 tools/storybook/wordpress/images/icons32.png create mode 100644 tools/storybook/wordpress/images/imgedit-icons-2x.png create mode 100644 tools/storybook/wordpress/images/imgedit-icons.png create mode 100644 tools/storybook/wordpress/images/list-2x.png create mode 100644 tools/storybook/wordpress/images/list.png create mode 100644 tools/storybook/wordpress/images/loading.gif create mode 100644 tools/storybook/wordpress/images/marker.png create mode 100644 tools/storybook/wordpress/images/mask.png create mode 100644 tools/storybook/wordpress/images/media-button-2x.png create mode 100644 tools/storybook/wordpress/images/media-button-image.gif create mode 100644 tools/storybook/wordpress/images/media-button-music.gif create mode 100644 tools/storybook/wordpress/images/media-button-other.gif create mode 100644 tools/storybook/wordpress/images/media-button-video.gif create mode 100644 tools/storybook/wordpress/images/media-button.png create mode 100644 tools/storybook/wordpress/images/menu-2x.png create mode 100644 tools/storybook/wordpress/images/menu-vs-2x.png create mode 100644 tools/storybook/wordpress/images/menu-vs.png create mode 100644 tools/storybook/wordpress/images/menu.png create mode 100644 tools/storybook/wordpress/images/no.png create mode 100644 tools/storybook/wordpress/images/post-formats-vs.png create mode 100644 tools/storybook/wordpress/images/post-formats.png create mode 100644 tools/storybook/wordpress/images/post-formats32-vs.png create mode 100644 tools/storybook/wordpress/images/post-formats32.png create mode 100644 tools/storybook/wordpress/images/privacy.svg create mode 100644 tools/storybook/wordpress/images/resize-2x.gif create mode 100644 tools/storybook/wordpress/images/resize-rtl-2x.gif create mode 100644 tools/storybook/wordpress/images/resize-rtl.gif create mode 100644 tools/storybook/wordpress/images/resize.gif create mode 100644 tools/storybook/wordpress/images/se.png create mode 100644 tools/storybook/wordpress/images/sort-2x.gif create mode 100644 tools/storybook/wordpress/images/sort.gif create mode 100644 tools/storybook/wordpress/images/spinner-2x.gif create mode 100644 tools/storybook/wordpress/images/spinner.gif create mode 100644 tools/storybook/wordpress/images/stars-2x.png create mode 100644 tools/storybook/wordpress/images/stars.png create mode 100644 tools/storybook/wordpress/images/w-logo-blue.png create mode 100644 tools/storybook/wordpress/images/w-logo-white.png create mode 100644 tools/storybook/wordpress/images/wheel.png create mode 100644 tools/storybook/wordpress/images/wordpress-logo-white.svg create mode 100644 tools/storybook/wordpress/images/wordpress-logo.png create mode 100644 tools/storybook/wordpress/images/wordpress-logo.svg create mode 100644 tools/storybook/wordpress/images/wpspin_light-2x.gif create mode 100644 tools/storybook/wordpress/images/wpspin_light.gif create mode 100644 tools/storybook/wordpress/images/xit-2x.gif create mode 100644 tools/storybook/wordpress/images/xit.gif create mode 100644 tools/storybook/wordpress/images/yes.png diff --git a/package.json b/package.json index a945a056869..119c7a6018f 100644 --- a/package.json +++ b/package.json @@ -1,54 +1,84 @@ { - "name": "woocommerce-monorepo", - "title": "WooCommerce Monorepo", - "description": "Monorepo for the WooCommerce ecosystem", - "homepage": "https://woocommerce.com/", - "private": true, - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "author": "Automattic", - "license": "GPL-3.0-or-later", - "bugs": { - "url": "https://github.com/woocommerce/woocommerce/issues" - }, - "scripts": { - "preinstall": "npx only-allow pnpm", - "postinstall": "pnpm git:update-hooks", - "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && husky install", - "create-extension": "node ./tools/create-extension/index.js" - }, - "devDependencies": { - "@automattic/nx-composer": "^0.1.0", - "@nrwl/cli": "^13.3.4", - "@nrwl/devkit": "^13.1.4", - "@nrwl/linter": "^13.3.4", - "@nrwl/tao": "13.3.4", - "@nrwl/web": "^13.3.4", - "@nrwl/workspace": "^13.3.4", - "@types/node": "14.14.33", - "@woocommerce/eslint-plugin": "workspace:*", - "@wordpress/eslint-plugin": "^11.0.0", - "@wordpress/prettier-config": "^1.1.1", - "chalk": "^4.1.2", - "glob": "^7.2.0", - "husky": "^7.0.4", - "jest": "^27.3.1", - "lint-staged": "^12.3.7", - "mkdirp": "^1.0.4", - "node-stream-zip": "^1.15.0", - "prettier": "npm:wp-prettier@^2.2.1-beta-1", - "request": "^2.88.2", - "typescript": "4.2.4" - }, - "dependencies": { - "@babel/core": "7.12.9", - "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", - "@wordpress/babel-preset-default": "^6.4.1", - "fs-extra": "^10.0.1", - "lodash": "^4.17.21", - "promptly": "^3.2.0", - "wp-textdomain": "1.0.1" - } + "name": "woocommerce-monorepo", + "title": "WooCommerce Monorepo", + "description": "Monorepo for the WooCommerce ecosystem", + "homepage": "https://woocommerce.com/", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "author": "Automattic", + "license": "GPL-3.0-or-later", + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "scripts": { + "build-storybook": "build-storybook -c ./tools/storybook/.storybook", + "preinstall": "npx only-allow pnpm", + "postinstall": "pnpm git:update-hooks", + "git:update-hooks": "rm -r .git/hooks && mkdir -p .git/hooks && husky install", + "storybook": "./tools/storybook/import-wp-css-storybook.sh && BABEL_ENV=storybook STORYBOOK=true start-storybook -c ./tools/storybook/.storybook -p 6007 --ci", + "storybook-rtl": "USE_RTL_STYLE=true pnpm run storybook", + "create-extension": "node ./tools/create-extension/index.js" + }, + "devDependencies": { + "@automattic/nx-composer": "^0.1.0", + "@babel/preset-env": "^7.16.11", + "@babel/runtime": "^7.17.2", + "@nrwl/cli": "^13.3.4", + "@nrwl/devkit": "^13.1.4", + "@nrwl/linter": "^13.3.4", + "@nrwl/tao": "13.3.4", + "@nrwl/web": "^13.3.4", + "@nrwl/workspace": "^13.3.4", + "@storybook/addon-a11y": "^6.4.19", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-console": "^1.2.3", + "@storybook/addon-controls": "^6.4.19", + "@storybook/addon-docs": "^6.4.19", + "@storybook/addon-knobs": "^6.4.0", + "@storybook/addon-links": "^6.4.19", + "@storybook/addon-storysource": "^6.4.19", + "@storybook/addon-viewport": "^6.4.19", + "@storybook/addons": "^6.4.19", + "@storybook/api": "^6.4.19", + "@storybook/builder-webpack5": "^6.4.19", + "@storybook/components": "^6.4.19", + "@storybook/core-events": "^6.4.19", + "@storybook/manager-webpack5": "^6.4.19", + "@storybook/react": "^6.4.19", + "@storybook/theming": "^6.4.19", + "@types/node": "14.14.33", + "@woocommerce/eslint-plugin": "workspace:*", + "@wordpress/data": "^6.3.0", + "@wordpress/eslint-plugin": "^11.0.0", + "@wordpress/prettier-config": "^1.1.1", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "core-js": "^3.21.1", + "css-loader": "^6.7.0", + "glob": "^7.2.0", + "husky": "^7.0.4", + "jest": "^27.3.1", + "lint-staged": "^12.3.7", + "moment": "^2.29.1", + "mkdirp": "^1.0.4", + "node-stream-zip": "^1.15.0", + "prettier": "npm:wp-prettier@^2.2.1-beta-1", + "postcss-loader": "^3.0.0", + "regenerator-runtime": "^0.13.9", + "request": "^2.88.2", + "sass": "^1.49.9", + "sass-loader": "^10.2.1", + "typescript": "4.2.4", + "webpack": "^5.70.0" + }, + "dependencies": { + "@babel/core": "7.12.9", + "@wordpress/babel-plugin-import-jsx-pragma": "^3.1.0", + "@wordpress/babel-preset-default": "^6.4.1", + "lodash": "^4.17.21", + "wp-textdomain": "1.0.1" + } } diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index e281bf46a71..f7149f13fde 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -12,7 +12,6 @@ "analyze": "cross-env NODE_ENV=production ANALYZE=true webpack", "prebuild": "pnpm run install-if-deps-outdated", "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && cross-env NODE_ENV=production WC_ADMIN_PHASE=core webpack", - "build-storybook": "build-storybook -c ./storybook/.storybook", "build:feature-config": "php ../woocommerce/bin/generate-feature-config.php", "build:packages": "cross-env NODE_ENV=production pnpm run:packages -- build", "clean": "rimraf ../woocommerce/assets/client/admin/* && pnpm run:packages -- clean --parallel", @@ -44,8 +43,6 @@ "prestart": "pnpm run install-if-deps-outdated", "start": "cross-env WC_ADMIN_PHASE=development pnpm run build:packages && cross-env WC_ADMIN_PHASE=development pnpm run build:feature-config && concurrently \"cross-env WC_ADMIN_PHASE=development webpack --watch\" \"cross-env WC_ADMIN_PHASE=development pnpm run:packages -- start --parallel\"", "start:package": "pnpm run:packages -- start --parallel", - "storybook": "./bin/import-wp-css-storybook.sh && BABEL_ENV=storybook STORYBOOK=true start-storybook -c ./storybook/.storybook -p 6007 --ci", - "storybook-rtl": "USE_RTL_STYLE=true pnpm run storybook", "pretest": "pnpm run -s install-if-no-packages", "test": "pnpm nx build @woocommerce/js-tests && pnpm run test:client", "test-staged": "pnpm run test:client -- --bail --findRelatedTests", @@ -121,23 +118,6 @@ "@babel/preset-typescript": "^7.16.7", "@babel/runtime": "^7.17.2", "@octokit/core": "^3.5.1", - "@storybook/addon-a11y": "^6.4.19", - "@storybook/addon-actions": "^6.4.19", - "@storybook/addon-console": "^1.2.3", - "@storybook/addon-controls": "^6.4.19", - "@storybook/addon-docs": "^6.4.19", - "@storybook/addon-knobs": "^6.4.0", - "@storybook/addon-links": "^6.4.19", - "@storybook/addon-storysource": "^6.4.19", - "@storybook/addon-viewport": "^6.4.19", - "@storybook/addons": "^6.4.19", - "@storybook/api": "^6.4.19", - "@storybook/builder-webpack5": "^6.4.19", - "@storybook/components": "^6.4.19", - "@storybook/core-events": "^6.4.19", - "@storybook/manager-webpack5": "^6.4.19", - "@storybook/react": "^6.4.19", - "@storybook/theming": "^6.4.19", "@testing-library/dom": "^8.11.3", "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.3", diff --git a/plugins/woocommerce-admin/webpack.config.js b/plugins/woocommerce-admin/webpack.config.js index 1a2a4536a00..483c2199d0c 100644 --- a/plugins/woocommerce-admin/webpack.config.js +++ b/plugins/woocommerce-admin/webpack.config.js @@ -140,7 +140,7 @@ const webpackConfig = { plugins: [ ...styleConfig.plugins, // Runs TypeScript type checker on a separate process. - new ForkTsCheckerWebpackPlugin(), + ! process.env.STORYBOOK && new ForkTsCheckerWebpackPlugin(), new CustomTemplatedPathPlugin( { modulename( outputPath, data ) { const entryName = get( data, [ 'chunk', 'name' ] ); diff --git a/plugins/woocommerce/changelog/fix-storybook-location b/plugins/woocommerce/changelog/fix-storybook-location new file mode 100644 index 00000000000..c996b22b7f3 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-storybook-location @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Move Storybook to better monorepo location diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9df70e5a7f7..1685a1a3ca2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,62 +6,116 @@ importers: specifiers: '@automattic/nx-composer': ^0.1.0 '@babel/core': 7.12.9 + '@babel/preset-env': ^7.16.11 + '@babel/runtime': ^7.17.2 '@nrwl/cli': ^13.3.4 '@nrwl/devkit': ^13.1.4 '@nrwl/linter': ^13.3.4 '@nrwl/tao': 13.3.4 '@nrwl/web': ^13.3.4 '@nrwl/workspace': ^13.3.4 + '@storybook/addon-a11y': ^6.4.19 + '@storybook/addon-actions': ^6.4.19 + '@storybook/addon-console': ^1.2.3 + '@storybook/addon-controls': ^6.4.19 + '@storybook/addon-docs': ^6.4.19 + '@storybook/addon-knobs': ^6.4.0 + '@storybook/addon-links': ^6.4.19 + '@storybook/addon-storysource': ^6.4.19 + '@storybook/addon-viewport': ^6.4.19 + '@storybook/addons': ^6.4.19 + '@storybook/api': ^6.4.19 + '@storybook/builder-webpack5': ^6.4.19 + '@storybook/components': ^6.4.19 + '@storybook/core-events': ^6.4.19 + '@storybook/manager-webpack5': ^6.4.19 + '@storybook/react': ^6.4.19 + '@storybook/theming': ^6.4.19 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': ^3.1.0 '@wordpress/babel-preset-default': ^6.4.1 + '@wordpress/data': ^6.3.0 '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/prettier-config': ^1.1.1 + babel-loader: ^8.2.3 chalk: ^4.1.2 - fs-extra: ^10.0.1 + core-js: ^3.21.1 + css-loader: ^6.7.0 glob: ^7.2.0 husky: ^7.0.4 jest: ^27.3.1 lint-staged: ^12.3.7 lodash: ^4.17.21 mkdirp: ^1.0.4 + moment: ^2.29.1 node-stream-zip: ^1.15.0 + postcss-loader: ^3.0.0 prettier: npm:wp-prettier@^2.2.1-beta-1 - promptly: ^3.2.0 + regenerator-runtime: ^0.13.9 request: ^2.88.2 + sass: ^1.49.9 + sass-loader: ^10.2.1 typescript: 4.2.4 + webpack: ^5.70.0 wp-textdomain: 1.0.1 dependencies: '@babel/core': 7.12.9 '@wordpress/babel-plugin-import-jsx-pragma': 3.1.0_@babel+core@7.12.9 '@wordpress/babel-preset-default': 6.4.1 - fs-extra: 10.0.1 lodash: 4.17.21 - promptly: 3.2.0 wp-textdomain: 1.0.1 devDependencies: '@automattic/nx-composer': 0.1.0 + '@babel/preset-env': 7.16.11_@babel+core@7.12.9 + '@babel/runtime': 7.17.7 '@nrwl/cli': 13.3.5 '@nrwl/devkit': 13.3.5 '@nrwl/linter': 13.3.5_typescript@4.2.4 '@nrwl/tao': 13.3.4 '@nrwl/web': 13.3.5_42cab1dece2b2240094de84cfd414406 '@nrwl/workspace': 13.3.5_42cab1dece2b2240094de84cfd414406 + '@storybook/addon-a11y': 6.4.19 + '@storybook/addon-actions': 6.4.19 + '@storybook/addon-console': 1.2.3_@storybook+addon-actions@6.4.19 + '@storybook/addon-controls': 6.4.19_typescript@4.2.4 + '@storybook/addon-docs': 6.4.19_a84ef1f946d21a14f1015f55f0de5456 + '@storybook/addon-knobs': 6.4.0_bdb88cf577f190583d60d23c102288af + '@storybook/addon-links': 6.4.19 + '@storybook/addon-storysource': 6.4.19 + '@storybook/addon-viewport': 6.4.19 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/components': 6.4.19 + '@storybook/core-events': 6.4.19 + '@storybook/manager-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/react': 6.4.19_1a3cbc393c8e54a301ca95e65ea44c36 + '@storybook/theming': 6.4.19 '@types/node': 14.14.33 '@woocommerce/eslint-plugin': link:packages/js/eslint-plugin + '@wordpress/data': 6.4.1 '@wordpress/eslint-plugin': 11.0.1_e97ea7521b9baec0e8686a2ccc3f1625 '@wordpress/prettier-config': 1.1.1 + babel-loader: 8.2.3_d3f6fe5812216e437b67a6bf164a056c chalk: 4.1.2 + core-js: 3.21.1 + css-loader: 6.7.1_webpack@5.70.0 glob: 7.2.0 husky: 7.0.4 jest: 27.3.1 lint-staged: 12.3.7 mkdirp: 1.0.4 + moment: 2.29.1 node-stream-zip: 1.15.0 + postcss-loader: 3.0.0 prettier: /wp-prettier/2.2.1-beta-1 + regenerator-runtime: 0.13.9 request: 2.88.2 + sass: 1.49.9 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 typescript: 4.2.4 + webpack: 5.70.0 packages/js/admin-e2e-tests: specifiers: @@ -270,14 +324,14 @@ importers: '@storybook/addon-actions': 6.4.19 '@storybook/addon-console': 1.2.3_@storybook+addon-actions@6.4.19 '@storybook/addon-controls': 6.4.19_ad5fc232a476648e022b673b2e1293fc - '@storybook/addon-docs': 6.4.19_c07d33072055753b44e1c9d473b78732 + '@storybook/addon-docs': 6.4.19_4bb52bfb586c30b5fcb8732c940fa2c0 '@storybook/addon-knobs': 6.4.0_bdb88cf577f190583d60d23c102288af '@storybook/addon-links': 6.4.19 '@storybook/addons': 6.4.19 '@storybook/api': 6.4.19 '@storybook/components': 6.4.19 '@storybook/core-events': 6.4.19 - '@storybook/react': 6.4.19_df9bce9a6d10cedcb22cc302b49e05b8 + '@storybook/react': 6.4.19_ce33fa78e84ed7674385e603320a18f7 '@storybook/theming': 6.4.19 '@testing-library/dom': 8.11.3 '@testing-library/jest-dom': 5.16.2 @@ -294,7 +348,7 @@ importers: jest-cli: 27.5.1 postcss-loader: 3.0.0 rimraf: 3.0.2 - sass-loader: 10.2.1_webpack@5.70.0 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 ts-jest: 27.1.3_b64eba0a9f1c7068f7f3a75addda5ccd typescript: 4.6.2 webpack: 5.70.0_webpack-cli@3.3.12 @@ -413,7 +467,7 @@ importers: jest-cli: 27.5.1 postcss-loader: 3.0.0 rimraf: 3.0.2 - sass-loader: 10.2.1_webpack@5.70.0 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 ts-jest: 27.1.3_b64eba0a9f1c7068f7f3a75addda5ccd typescript: 4.6.2 webpack: 5.70.0_webpack-cli@3.3.12 @@ -795,7 +849,7 @@ importers: '@babel/runtime': 7.17.7 '@storybook/addon-actions': 6.4.19 '@storybook/addon-console': 1.2.3_@storybook+addon-actions@6.4.19 - '@storybook/react': 6.4.19_df9bce9a6d10cedcb22cc302b49e05b8 + '@storybook/react': 6.4.19_ce33fa78e84ed7674385e603320a18f7 '@testing-library/dom': 8.11.3 '@testing-library/react': 12.1.4 '@testing-library/user-event': 13.5.0_@testing-library+dom@8.11.3 @@ -811,7 +865,7 @@ importers: jest-cli: 27.5.1 postcss-loader: 3.0.0 rimraf: 3.0.2 - sass-loader: 10.2.1_webpack@5.70.0 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 ts-jest: 27.1.3_b64eba0a9f1c7068f7f3a75addda5ccd typescript: 4.6.2 webpack: 5.70.0_webpack-cli@3.3.12 @@ -1029,7 +1083,7 @@ importers: jest-cli: 27.5.1 postcss-loader: 3.0.0 rimraf: 3.0.2 - sass-loader: 10.2.1_webpack@5.70.0 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 ts-jest: 27.1.3_b64eba0a9f1c7068f7f3a75addda5ccd typescript: 4.6.2 webpack: 5.70.0_webpack-cli@3.3.12 @@ -1062,7 +1116,7 @@ importers: css-loader: 3.6.0_webpack@5.70.0 mini-css-extract-plugin: 2.6.0_webpack@5.70.0 postcss-loader: 3.0.0 - sass-loader: 10.2.1_webpack@5.70.0 + sass-loader: 10.2.1_sass@1.49.9+webpack@5.70.0 webpack-remove-empty-scripts: 0.7.3_webpack@5.70.0 webpack-rtl-plugin: 2.0.0 devDependencies: @@ -1197,23 +1251,6 @@ importers: '@babel/runtime': ^7.17.2 '@octokit/core': ^3.5.1 '@react-spring/web': ^9.4.3 - '@storybook/addon-a11y': ^6.4.19 - '@storybook/addon-actions': ^6.4.19 - '@storybook/addon-console': ^1.2.3 - '@storybook/addon-controls': ^6.4.19 - '@storybook/addon-docs': ^6.4.19 - '@storybook/addon-knobs': ^6.4.0 - '@storybook/addon-links': ^6.4.19 - '@storybook/addon-storysource': ^6.4.19 - '@storybook/addon-viewport': ^6.4.19 - '@storybook/addons': ^6.4.19 - '@storybook/api': ^6.4.19 - '@storybook/builder-webpack5': ^6.4.19 - '@storybook/components': ^6.4.19 - '@storybook/core-events': ^6.4.19 - '@storybook/manager-webpack5': ^6.4.19 - '@storybook/react': ^6.4.19 - '@storybook/theming': ^6.4.19 '@testing-library/dom': ^8.11.3 '@testing-library/jest-dom': ^5.16.2 '@testing-library/react': ^12.1.3 @@ -1426,23 +1463,6 @@ importers: '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@babel/runtime': 7.17.7 '@octokit/core': 3.5.1 - '@storybook/addon-a11y': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/addon-actions': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/addon-console': 1.2.3_@storybook+addon-actions@6.4.19 - '@storybook/addon-controls': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/addon-docs': 6.4.19_0f3f6342a67dc2ef4115448ec44f733f - '@storybook/addon-knobs': 6.4.0_6d3fd42cc2dc28673127a5aba3ab9a43 - '@storybook/addon-links': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/addon-storysource': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/addon-viewport': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/builder-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-events': 6.4.19 - '@storybook/manager-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/react': 6.4.19_9f1f8f17cdd455b6ef8e501a921b145c - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 '@testing-library/dom': 8.11.3 '@testing-library/jest-dom': 5.16.2 '@testing-library/react': 12.1.4_react-dom@17.0.2+react@17.0.2 @@ -1628,7 +1648,7 @@ importers: '@types/node': 16.10.3 eslint: 7.32.0 globby: 11.0.4 - jscodeshift: 0.13.1 + jscodeshift: 0.13.1_@babel+preset-env@7.16.11 oclif: 2.4.5 shx: 0.3.4 ts-node: 10.5.0_e0d88945dfc7787883e9c330c9196a96 @@ -1949,6 +1969,7 @@ packages: dependencies: '@babel/helper-explode-assignable-expression': 7.16.0 '@babel/types': 7.16.0 + dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.16.7: resolution: {integrity: sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==} @@ -2007,6 +2028,19 @@ packages: browserslist: 4.18.1 semver: 6.3.0 + /@babel/helper-compilation-targets/7.17.7_@babel+core@7.12.9: + resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.12.9 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.20.2 + semver: 6.3.0 + dev: true + /@babel/helper-compilation-targets/7.17.7_@babel+core@7.16.0: resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} @@ -2078,23 +2112,6 @@ packages: - supports-color dev: true - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-member-expression-to-functions': 7.16.0 - '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/helper-replace-supers': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-create-class-features-plugin/7.16.0_@babel+core@7.17.8: resolution: {integrity: sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==} engines: {node: '>=6.9.0'} @@ -2112,6 +2129,24 @@ packages: - supports-color dev: true + /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.12.9: + resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-member-expression-to-functions': 7.17.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.16.0: resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} engines: {node: '>=6.9.0'} @@ -2208,6 +2243,39 @@ packages: '@babel/helper-annotate-as-pure': 7.16.0 regexpu-core: 4.8.0 + /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.12.9: + resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + regexpu-core: 5.0.1 + dev: true + + /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.16.0: + resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.7 + regexpu-core: 5.0.1 + dev: true + + /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.16.12: + resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-annotate-as-pure': 7.16.7 + regexpu-core: 5.0.1 + dev: false + /@babel/helper-create-regexp-features-plugin/7.17.0_@babel+core@7.17.8: resolution: {integrity: sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==} engines: {node: '>=6.9.0'} @@ -2307,6 +2375,60 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.12.9: + resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/traverse': 7.17.3 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.20.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.16.0: + resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.0 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/traverse': 7.17.3 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.20.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.16.12: + resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/traverse': 7.17.3 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.20.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.17.8: resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} peerDependencies: @@ -2317,7 +2439,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 '@babel/traverse': 7.17.3 - debug: 4.3.3 + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.20.0 semver: 6.3.0 @@ -2335,6 +2457,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.16.0 + dev: true /@babel/helper-explode-assignable-expression/7.16.7: resolution: {integrity: sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==} @@ -2469,6 +2592,7 @@ packages: '@babel/types': 7.16.0 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-remap-async-to-generator/7.16.8: resolution: {integrity: sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==} @@ -2559,6 +2683,7 @@ packages: '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-wrap-function/7.16.8: resolution: {integrity: sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==} @@ -2642,8 +2767,28 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.2_@babel+core@7.16.12: - resolution: {integrity: sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -2673,8 +2818,32 @@ packages: '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.0 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.0 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 @@ -2682,7 +2851,7 @@ packages: '@babel/core': 7.16.12 '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 - '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.16.7_@babel+core@7.17.8: @@ -2724,15 +2893,43 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-async-generator-functions/7.16.4_@babel+core@7.16.12: - resolution: {integrity: sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==} + /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.12.9: + resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.16.0: + resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.16.8_@babel+core@7.16.12: + resolution: {integrity: sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.16.4 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 transitivePeerDependencies: - supports-color @@ -2777,6 +2974,19 @@ packages: - supports-color dev: true + /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-proposal-class-properties/7.16.7_@babel+core@7.16.0: resolution: {integrity: sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==} engines: {node: '>=6.9.0'} @@ -2829,8 +3039,36 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==} + /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.12.9: + resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.16.0: + resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.17.6_@babel+core@7.16.12: + resolution: {integrity: sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -2906,14 +3144,36 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-dynamic-import/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==} + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-dynamic-import/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 dev: false @@ -2960,14 +3220,36 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-export-namespace-from/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==} + /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 dev: false @@ -3003,14 +3285,36 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-json-strings/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==} + /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-json-strings/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 dev: false @@ -3046,14 +3350,36 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==} + /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 dev: false @@ -3089,14 +3415,36 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==} + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 dev: false @@ -3132,14 +3480,36 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-numeric-separator/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==} + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 dev: false @@ -3192,18 +3562,46 @@ packages: '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-object-rest-spread/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==} + /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.12.9: + resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.16.4 + '@babel/compat-data': 7.17.7 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.16.0: + resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.16.0 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.16.12: + resolution: {integrity: sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.12 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.12 dev: false /@babel/plugin-proposal-object-rest-spread/7.17.3_@babel+core@7.17.8: @@ -3241,14 +3639,36 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==} + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 dev: false @@ -3286,14 +3706,38 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 dev: true - /@babel/plugin-proposal-optional-chaining/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==} + /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 dev: false @@ -3335,15 +3779,41 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-methods/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==} + /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.12.9: + resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.16.0: + resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-methods/7.16.11_@babel+core@7.16.12: + resolution: {integrity: sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-create-class-features-plugin': 7.16.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 transitivePeerDependencies: - supports-color dev: false @@ -3375,8 +3845,38 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==} + /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3447,6 +3947,39 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.17.8 '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 + dev: false + /@babel/plugin-proposal-unicode-property-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==} engines: {node: '>=4'} @@ -3558,6 +4091,16 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.12.9: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -3687,6 +4230,16 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-syntax-flow/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==} engines: {node: '>=6.9.0'} @@ -3804,6 +4357,16 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: false + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} @@ -4011,6 +4574,16 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.12.9: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.16.0: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -4125,14 +4698,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-arrow-functions/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==} + /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-arrow-functions/7.16.7_@babel+core@7.17.8: @@ -4172,16 +4765,44 @@ packages: - supports-color dev: true - /@babel/plugin-transform-async-to-generator/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==} + /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.12.9: + resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.16.0: + resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator/7.16.8_@babel+core@7.16.12: + resolution: {integrity: sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-remap-async-to-generator': 7.16.4 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-remap-async-to-generator': 7.16.8 transitivePeerDependencies: - supports-color dev: false @@ -4219,14 +4840,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-block-scoped-functions/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==} + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-block-scoped-functions/7.16.7_@babel+core@7.17.8: @@ -4258,14 +4899,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-block-scoping/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==} + /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-block-scoping/7.16.7_@babel+core@7.17.8: @@ -4313,19 +4974,58 @@ packages: - supports-color dev: true - /@babel/plugin-transform-classes/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==} + /@babel/plugin-transform-classes/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-optimise-call-expression': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-optimise-call-expression': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4369,14 +5069,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-computed-properties/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==} + /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-computed-properties/7.16.7_@babel+core@7.17.8: @@ -4408,14 +5128,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-destructuring/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==} + /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.12.9: + resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.16.0: + resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.16.12: + resolution: {integrity: sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-destructuring/7.17.7_@babel+core@7.17.8: @@ -4470,6 +5210,39 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.17.8 '@babel/helper-plugin-utils': 7.14.5 + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 + dev: false + /@babel/plugin-transform-dotall-regex/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==} engines: {node: '>=6.9.0'} @@ -4500,14 +5273,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-duplicate-keys/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==} + /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-duplicate-keys/7.16.7_@babel+core@7.17.8: @@ -4541,15 +5334,37 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-exponentiation-operator/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==} + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-exponentiation-operator/7.16.7_@babel+core@7.17.8: @@ -4562,6 +5377,17 @@ packages: '@babel/helper-builder-binary-assignment-operator-visitor': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 + /@babel/plugin-transform-flow-strip-types/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-flow': 7.16.7_@babel+core@7.12.9 + dev: true + /@babel/plugin-transform-flow-strip-types/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==} engines: {node: '>=6.9.0'} @@ -4593,14 +5419,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-for-of/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==} + /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-for-of/7.16.7_@babel+core@7.17.8: @@ -4634,15 +5480,40 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-function-name/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==} + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.0 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/helper-function-name': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-function-name/7.16.7_@babel+core@7.17.8: @@ -4676,14 +5547,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-literals/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==} + /@babel/plugin-transform-literals/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-literals/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-literals/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-literals/7.16.7_@babel+core@7.17.8: @@ -4715,14 +5606,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-member-expression-literals/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==} + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-member-expression-literals/7.16.7_@babel+core@7.17.8: @@ -4762,15 +5673,43 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-amd/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==} + /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-amd/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -4819,16 +5758,46 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==} + /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.12.9: + resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-simple-access': 7.17.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.16.0: + resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-simple-access': 7.17.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.17.7_@babel+core@7.16.12: + resolution: {integrity: sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-simple-access': 7.16.0 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-simple-access': 7.17.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -4880,17 +5849,49 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==} + /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.12.9: + resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.16.0: + resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.17.8_@babel+core@7.16.12: + resolution: {integrity: sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-hoist-variables': 7.16.0 - '@babel/helper-module-transforms': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-validator-identifier': 7.15.7 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color @@ -4937,15 +5938,41 @@ packages: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==} + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helper-plugin-utils': 7.16.7 transitivePeerDependencies: - supports-color dev: false @@ -4982,14 +6009,34 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.0 dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==} + /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.12.9: + resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.16.0: + resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.16.12: + resolution: {integrity: sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.12 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 dev: false /@babel/plugin-transform-named-capturing-groups-regex/7.16.8_@babel+core@7.17.8: @@ -5021,14 +6068,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-new-target/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==} + /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-new-target/7.16.7_@babel+core@7.17.8: @@ -5066,15 +6133,41 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==} + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/helper-replace-supers': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-replace-supers': 7.16.7 transitivePeerDependencies: - supports-color dev: false @@ -5111,16 +6204,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-parameters/7.16.3_@babel+core@7.16.12: - resolution: {integrity: sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 - dev: false - /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.12.9: resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} engines: {node: '>=6.9.0'} @@ -5131,6 +6214,26 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-plugin-utils': 7.16.7 + dev: false + /@babel/plugin-transform-parameters/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==} engines: {node: '>=6.9.0'} @@ -5160,14 +6263,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-property-literals/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==} + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-property-literals/7.16.7_@babel+core@7.17.8: @@ -5189,6 +6312,16 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-transform-react-display-name/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==} engines: {node: '>=6.9.0'} @@ -5199,6 +6332,16 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true + /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.12.9 + dev: true + /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==} engines: {node: '>=6.9.0'} @@ -5251,6 +6394,20 @@ packages: '@babel/types': 7.16.0 dev: false + /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.12.9: + resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.12.9 + '@babel/types': 7.17.0 + dev: true + /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.8: resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} engines: {node: '>=6.9.0'} @@ -5264,6 +6421,17 @@ packages: '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 '@babel/types': 7.17.0 + /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.16.7 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + /@babel/plugin-transform-react-pure-annotations/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==} engines: {node: '>=6.9.0'} @@ -5295,8 +6463,28 @@ packages: regenerator-transform: 0.14.5 dev: true - /@babel/plugin-transform-regenerator/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==} + /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-regenerator/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5334,14 +6522,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-reserved-words/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==} + /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-reserved-words/7.16.7_@babel+core@7.17.8: @@ -5440,14 +6648,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-shorthand-properties/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==} + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-shorthand-properties/7.16.7_@babel+core@7.17.8: @@ -5481,14 +6709,36 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 dev: true - /@babel/plugin-transform-spread/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==} + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + dev: true + + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 + dev: true + + /@babel/plugin-transform-spread/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-skip-transparent-expression-wrappers': 7.16.0 dev: false @@ -5522,14 +6772,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-sticky-regex/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==} + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-sticky-regex/7.16.7_@babel+core@7.17.8: @@ -5561,14 +6831,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-template-literals/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==} + /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-template-literals/7.16.7_@babel+core@7.17.8: @@ -5600,14 +6890,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-typeof-symbol/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==} + /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-typeof-symbol/7.16.7_@babel+core@7.17.8: @@ -5680,14 +6990,34 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-unicode-escapes/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==} + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-unicode-escapes/7.16.7_@babel+core@7.17.8: @@ -5721,15 +7051,37 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-unicode-regex/7.16.0_@babel+core@7.16.12: - resolution: {integrity: sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==} + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.16.0: + resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + dev: true + + /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.16.12: + resolution: {integrity: sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.12 - '@babel/helper-create-regexp-features-plugin': 7.16.0_@babel+core@7.16.12 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-create-regexp-features-plugin': 7.17.0_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 dev: false /@babel/plugin-transform-unicode-regex/7.16.7_@babel+core@7.17.8: @@ -5826,6 +7178,261 @@ packages: - supports-color dev: true + /@babel/preset-env/7.16.11_@babel+core@7.12.9: + resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.12.9 + '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.9 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.9 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.12.9 + '@babel/preset-modules': 0.1.5_@babel+core@7.12.9 + '@babel/types': 7.17.0 + babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.12.9 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.12.9 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.12.9 + core-js-compat: 3.21.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env/7.16.11_@babel+core@7.16.0: + resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.16.0 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.0 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.16.0 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.16.0 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.16.0 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.16.0 + '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.0 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.0 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.0 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.16.0 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.16.0 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.16.0 + '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.16.0 + '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.16.0 + '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.16.0 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.16.0 + '@babel/preset-modules': 0.1.5_@babel+core@7.16.0 + '@babel/types': 7.17.0 + babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.0 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.16.0 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.0 + core-js-compat: 3.21.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env/7.16.11_@babel+core@7.16.12: + resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.17.7 + '@babel/core': 7.16.12 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-async-generator-functions': 7.16.8_@babel+core@7.16.12 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-class-static-block': 7.17.6_@babel+core@7.16.12 + '@babel/plugin-proposal-dynamic-import': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-export-namespace-from': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-json-strings': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-logical-assignment-operators': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-numeric-separator': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-catch-binding': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.16.12 + '@babel/plugin-proposal-private-property-in-object': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-proposal-unicode-property-regex': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.12 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-async-to-generator': 7.16.8_@babel+core@7.16.12 + '@babel/plugin-transform-block-scoped-functions': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-computed-properties': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.16.12 + '@babel/plugin-transform-dotall-regex': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-duplicate-keys': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-exponentiation-operator': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-function-name': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-literals': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-member-expression-literals': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-modules-amd': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.16.12 + '@babel/plugin-transform-modules-systemjs': 7.17.8_@babel+core@7.16.12 + '@babel/plugin-transform-modules-umd': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-named-capturing-groups-regex': 7.16.8_@babel+core@7.16.12 + '@babel/plugin-transform-new-target': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-object-super': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-property-literals': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-regenerator': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-reserved-words': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-sticky-regex': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-typeof-symbol': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-unicode-escapes': 7.16.7_@babel+core@7.16.12 + '@babel/plugin-transform-unicode-regex': 7.16.7_@babel+core@7.16.12 + '@babel/preset-modules': 0.1.5_@babel+core@7.16.12 + '@babel/types': 7.17.0 + babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.16.12 + babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 + core-js-compat: 3.21.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/preset-env/7.16.11_@babel+core@7.17.8: resolution: {integrity: sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==} engines: {node: '>=6.9.0'} @@ -5995,90 +7602,17 @@ packages: - supports-color dev: true - /@babel/preset-env/7.16.4_@babel+core@7.16.12: - resolution: {integrity: sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==} + /@babel/preset-flow/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.16.12 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.16.12 + '@babel/core': 7.12.9 '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.16.2_@babel+core@7.16.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-async-generator-functions': 7.16.4_@babel+core@7.16.12 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.16.12 - '@babel/plugin-proposal-class-static-block': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-dynamic-import': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-export-namespace-from': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-json-strings': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-numeric-separator': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-object-rest-spread': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-catch-binding': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-optional-chaining': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-private-methods': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-private-property-in-object': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-proposal-unicode-property-regex': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.12 - '@babel/plugin-transform-arrow-functions': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-async-to-generator': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoped-functions': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-block-scoping': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-classes': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-computed-properties': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-destructuring': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-dotall-regex': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-duplicate-keys': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-exponentiation-operator': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-for-of': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-function-name': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-literals': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-member-expression-literals': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-modules-amd': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-modules-commonjs': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-modules-systemjs': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-modules-umd': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-new-target': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-object-super': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-parameters': 7.16.3_@babel+core@7.16.12 - '@babel/plugin-transform-property-literals': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-regenerator': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-reserved-words': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-shorthand-properties': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-spread': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-sticky-regex': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-template-literals': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-typeof-symbol': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-escapes': 7.16.0_@babel+core@7.16.12 - '@babel/plugin-transform-unicode-regex': 7.16.0_@babel+core@7.16.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.16.12 - '@babel/types': 7.17.0 - babel-plugin-polyfill-corejs2: 0.3.0_@babel+core@7.16.12 - babel-plugin-polyfill-corejs3: 0.4.0_@babel+core@7.16.12 - babel-plugin-polyfill-regenerator: 0.3.0_@babel+core@7.16.12 - core-js-compat: 3.19.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false + '@babel/plugin-transform-flow-strip-types': 7.16.7_@babel+core@7.12.9 + dev: true /@babel/preset-flow/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==} @@ -6143,6 +7677,21 @@ packages: '@babel/types': 7.16.0 esutils: 2.0.3 + /@babel/preset-react/7.16.7_@babel+core@7.12.9: + resolution: {integrity: sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-validator-option': 7.16.7 + '@babel/plugin-transform-react-display-name': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.12.9 + '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.12.9 + '@babel/plugin-transform-react-pure-annotations': 7.16.7_@babel+core@7.12.9 + dev: true + /@babel/preset-react/7.16.7_@babel+core@7.17.8: resolution: {integrity: sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==} engines: {node: '>=6.9.0'} @@ -6362,7 +7911,7 @@ packages: '@cspotcode/source-map-consumer': 0.8.0 dev: true - /@cypress/webpack-preprocessor/5.10.0_8664c4230b51db280b15ba36bf8e5650: + /@cypress/webpack-preprocessor/5.10.0_eab84302f28ca27d02fd15252916451f: resolution: {integrity: sha512-KzcDBjos3rIw58imyvATYTNi9CB+Co0SFUhexmuH2c+Wk1ksSM3g4XmxUUIaJJvDwmIK4tcoBMYd9Lzle8bR7A==} peerDependencies: '@babel/core': ^7.0.1 @@ -6371,12 +7920,12 @@ packages: webpack: ^4 || ^5 dependencies: '@babel/core': 7.16.0 - '@babel/preset-env': 7.16.4_@babel+core@7.16.0 - babel-loader: 8.2.3_fda98f9ff70e0481a7d2271d8792a29b + '@babel/preset-env': 7.16.11_@babel+core@7.16.0 + babel-loader: 8.2.3_2126ca8a005869f6c62d5aa977e8d816 bluebird: 3.7.2 debug: 4.3.2 lodash: 4.17.21 - webpack: 5.64.1 + webpack: 5.70.0 transitivePeerDependencies: - supports-color dev: true @@ -6438,20 +7987,6 @@ packages: '@emotion/utils': 0.11.3 dev: true - /@emotion/core/10.3.1_react@17.0.2: - resolution: {integrity: sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==} - peerDependencies: - react: '>=16.3.0' - dependencies: - '@babel/runtime': 7.17.7 - '@emotion/cache': 10.0.29 - '@emotion/css': 10.0.27 - '@emotion/serialize': 0.11.16 - '@emotion/sheet': 0.9.4 - '@emotion/utils': 0.11.3 - react: 17.0.2 - dev: true - /@emotion/css/10.0.27: resolution: {integrity: sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==} dependencies: @@ -6570,20 +8105,6 @@ packages: resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==} dev: false - /@emotion/styled-base/10.3.0_316248eb6686a2fd4fbadcfd00de37f3: - resolution: {integrity: sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==} - peerDependencies: - '@emotion/core': ^10.0.28 - react: '>=16.3.0' - dependencies: - '@babel/runtime': 7.17.7 - '@emotion/core': 10.3.1_react@17.0.2 - '@emotion/is-prop-valid': 0.8.8 - '@emotion/serialize': 0.11.16 - '@emotion/utils': 0.11.3 - react: 17.0.2 - dev: true - /@emotion/styled-base/10.3.0_@emotion+core@10.3.1: resolution: {integrity: sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==} peerDependencies: @@ -6597,18 +8118,6 @@ packages: '@emotion/utils': 0.11.3 dev: true - /@emotion/styled/10.3.0_316248eb6686a2fd4fbadcfd00de37f3: - resolution: {integrity: sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==} - peerDependencies: - '@emotion/core': ^10.0.27 - react: '>=16.3.0' - dependencies: - '@emotion/core': 10.3.1_react@17.0.2 - '@emotion/styled-base': 10.3.0_316248eb6686a2fd4fbadcfd00de37f3 - babel-plugin-emotion: 10.2.2 - react: 17.0.2 - dev: true - /@emotion/styled/10.3.0_@emotion+core@10.3.1: resolution: {integrity: sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==} peerDependencies: @@ -7698,17 +9207,6 @@ packages: - supports-color dev: true - /@mdx-js/loader/1.6.22_react@17.0.2: - resolution: {integrity: sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==} - dependencies: - '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22_react@17.0.2 - loader-utils: 2.0.0 - transitivePeerDependencies: - - react - - supports-color - dev: true - /@mdx-js/mdx/1.6.22: resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} dependencies: @@ -7741,14 +9239,6 @@ packages: react: ^16.13.1 || ^17.0.0 dev: true - /@mdx-js/react/1.6.22_react@17.0.2: - resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} - peerDependencies: - react: ^16.13.1 || ^17.0.0 - dependencies: - react: 17.0.2 - dev: true - /@mdx-js/util/1.6.22: resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} dev: true @@ -7962,7 +9452,7 @@ packages: yargs-parser: 20.0.0 dev: true - /@nrwl/cypress/13.3.5_45e5b05f8550ddf8ad44a90a38658752: + /@nrwl/cypress/13.3.5_c038c1456e7bf90a94e00c2ec1748e38: resolution: {integrity: sha512-m4n+NxNvmqj9nUdKXETI3pAFJCd1DJVHm7Jwf1L8sYFlxOAv8MaFEmrPjmx2qY8F5TUqWqG2BgRYwIx1ImIPkg==} peerDependencies: cypress: '>= 3 < 10' @@ -7970,7 +9460,7 @@ packages: cypress: optional: true dependencies: - '@cypress/webpack-preprocessor': 5.10.0_8664c4230b51db280b15ba36bf8e5650 + '@cypress/webpack-preprocessor': 5.10.0_eab84302f28ca27d02fd15252916451f '@nrwl/devkit': 13.3.5 '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 '@nrwl/workspace': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 @@ -7978,7 +9468,7 @@ packages: enhanced-resolve: 5.8.3 fork-ts-checker-webpack-plugin: 6.2.10 rxjs: 6.6.7 - ts-loader: 9.2.6_typescript@4.2.4+webpack@5.64.1 + ts-loader: 9.2.6_typescript@4.2.4+webpack@5.70.0 tsconfig-paths: 3.11.0 tsconfig-paths-webpack-plugin: 3.4.1 tslib: 2.3.1 @@ -8194,23 +9684,23 @@ packages: '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.16.0 '@babel/plugin-transform-regenerator': 7.16.0_@babel+core@7.16.0 '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.16.0 - '@babel/preset-env': 7.16.4_@babel+core@7.16.0 + '@babel/preset-env': 7.16.11_@babel+core@7.16.0 '@babel/preset-typescript': 7.16.0_@babel+core@7.16.0 - '@babel/runtime': 7.16.3 - '@nrwl/cypress': 13.3.5_45e5b05f8550ddf8ad44a90a38658752 + '@babel/runtime': 7.17.7 + '@nrwl/cypress': 13.3.5_c038c1456e7bf90a94e00c2ec1748e38 '@nrwl/devkit': 13.3.5 '@nrwl/jest': 13.3.5_ts-node@9.1.1 '@nrwl/js': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 '@nrwl/linter': 13.3.5_ts-node@9.1.1+typescript@4.2.4 '@nrwl/workspace': 13.3.5_e77b5b0640b6ec0ecc6c8e0dab0ec669 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_92cb4b81c6b9f71cf92f0bdb85e4210c + '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_acddec6c34c518c147e4dc38c87b7252 '@rollup/plugin-babel': 5.3.0_@babel+core@7.16.0+rollup@2.60.0 '@rollup/plugin-commonjs': 20.0.0_rollup@2.60.0 '@rollup/plugin-image': 2.1.1_rollup@2.60.0 '@rollup/plugin-json': 4.1.0_rollup@2.60.0 '@rollup/plugin-node-resolve': 13.0.6_rollup@2.60.0 autoprefixer: 10.4.0_postcss@8.3.0 - babel-loader: 8.2.3_fda98f9ff70e0481a7d2271d8792a29b + babel-loader: 8.2.3_2126ca8a005869f6c62d5aa977e8d816 babel-plugin-const-enum: 1.2.0_@babel+core@7.16.0 babel-plugin-macros: 2.8.0 babel-plugin-transform-async-to-promises: 0.8.15 @@ -8220,29 +9710,29 @@ packages: caniuse-lite: 1.0.30001280 chalk: 4.1.0 chokidar: 3.5.2 - copy-webpack-plugin: 9.1.0_webpack@5.64.1 - core-js: 3.19.1 - css-loader: 6.5.1_webpack@5.64.1 - css-minimizer-webpack-plugin: 3.1.3_webpack@5.64.1 + copy-webpack-plugin: 9.1.0_webpack@5.70.0 + core-js: 3.21.1 + css-loader: 6.7.1_webpack@5.70.0 + css-minimizer-webpack-plugin: 3.1.3_webpack@5.70.0 enhanced-resolve: 5.8.3 - file-loader: 6.2.0_webpack@5.64.1 + file-loader: 6.2.0_webpack@5.70.0 fork-ts-checker-webpack-plugin: 6.2.10 fs-extra: 9.1.0 http-server: 0.12.3 identity-obj-proxy: 3.0.0 ignore: 5.1.9 less: 3.12.2 - less-loader: 10.2.0_less@3.12.2+webpack@5.64.1 + less-loader: 10.2.0_less@3.12.2+webpack@5.70.0 license-webpack-plugin: 2.3.15 loader-utils: 1.2.3 - mini-css-extract-plugin: 2.4.4_webpack@5.64.1 + mini-css-extract-plugin: 2.4.4_webpack@5.70.0 open: 7.4.2 parse5: 4.0.0 parse5-html-rewriting-stream: 6.0.1 postcss: 8.3.0 postcss-import: 14.0.2_postcss@8.3.0 - postcss-loader: 6.2.0_postcss@8.3.0+webpack@5.64.1 - raw-loader: 4.0.2_webpack@5.64.1 + postcss-loader: 6.2.0_postcss@8.3.0+webpack@5.70.0 + raw-loader: 4.0.2_webpack@5.70.0 react-refresh: 0.10.0 rimraf: 3.0.2 rollup: 2.60.0 @@ -8252,27 +9742,27 @@ packages: rollup-plugin-typescript2: 0.30.0_rollup@2.60.0+typescript@4.2.4 rxjs: 6.6.7 rxjs-for-await: 0.0.2_rxjs@6.6.7 - sass: 1.45.0 - sass-loader: 12.3.0_sass@1.45.0+webpack@5.64.1 + sass: 1.49.9 + sass-loader: 12.3.0_sass@1.49.9+webpack@5.70.0 semver: 7.3.4 source-map: 0.7.3 - source-map-loader: 3.0.0_webpack@5.64.1 - style-loader: 3.3.1_webpack@5.64.1 + source-map-loader: 3.0.0_webpack@5.70.0 + style-loader: 3.3.1_webpack@5.70.0 stylus: 0.55.0 - stylus-loader: 6.2.0_stylus@0.55.0+webpack@5.64.1 + stylus-loader: 6.2.0_stylus@0.55.0+webpack@5.70.0 terser: 4.3.8 - terser-webpack-plugin: 5.2.5_webpack@5.64.1 - ts-loader: 9.2.6_typescript@4.2.4+webpack@5.64.1 + terser-webpack-plugin: 5.2.5_webpack@5.70.0 + ts-loader: 9.2.6_typescript@4.2.4+webpack@5.70.0 ts-node: 9.1.1_typescript@4.2.4 tsconfig-paths: 3.11.0 tsconfig-paths-webpack-plugin: 3.4.1 tslib: 2.3.1 - webpack: 5.64.1 - webpack-dev-server: 4.5.0_webpack@5.64.1 + webpack: 5.70.0 + webpack-dev-server: 4.5.0_webpack@5.70.0 webpack-merge: 5.8.0 webpack-sources: 3.2.2 - webpack-subresource-integrity: 1.5.2_webpack@5.64.1 - worker-plugin: 3.2.0_webpack@5.64.1 + webpack-subresource-integrity: 1.5.2_webpack@5.70.0 + worker-plugin: 3.2.0_webpack@5.70.0 transitivePeerDependencies: - '@swc/core' - '@types/babel__core' @@ -8656,10 +10146,10 @@ packages: react-refresh: 0.11.0 schema-utils: 3.1.1 source-map: 0.7.3 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true - /@pmmmwh/react-refresh-webpack-plugin/0.5.1_92cb4b81c6b9f71cf92f0bdb85e4210c: + /@pmmmwh/react-refresh-webpack-plugin/0.5.1_acddec6c34c518c147e4dc38c87b7252: resolution: {integrity: sha512-ccap6o7+y5L8cnvkZ9h8UXCGyy2DqtwCD+/N3Yru6lxMvcdkPKtdx13qd7sAC9s5qZktOmWf9lfUjsGOvSdYhg==} engines: {node: '>= 10.13'} peerDependencies: @@ -8695,8 +10185,8 @@ packages: react-refresh: 0.10.0 schema-utils: 3.1.1 source-map: 0.7.3 - webpack: 5.64.1 - webpack-dev-server: 4.5.0_webpack@5.64.1 + webpack: 5.70.0 + webpack-dev-server: 4.5.0_webpack@5.70.0 dev: true /@popperjs/core/2.11.4: @@ -8933,7 +10423,7 @@ packages: - debug dev: false - /@storybook/addon-a11y/6.4.19_react-dom@17.0.2+react@17.0.2: + /@storybook/addon-a11y/6.4.19: resolution: {integrity: sha512-dG6easap6W4AqyggVZPq8lBrhza8StA8J4eYz/GVdoXINSGtq/casV0rkmY3+SUXhPYux5oGavHo86j5I4Q/0Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -8944,20 +10434,18 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/channels': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/components': 6.4.19 '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/theming': 6.4.19 axe-core: 4.3.5 core-js: 3.21.1 global: 4.4.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 react-sizeme: 3.0.2 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 @@ -8999,85 +10487,15 @@ packages: - '@types/react' dev: true - /@storybook/addon-actions/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-GpSvP8xV8GfNkmtGJjfCgaOx6mbjtyTK0aT9FqX9pU0s+KVMmoCTrBh43b7dWrwxxas01yleBK9VpYggzhi/Fw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - polished: 4.1.4 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-inspector: 5.1.1_react@17.0.2 - regenerator-runtime: 0.13.9 - telejson: 5.3.3 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - uuid-browser: 3.1.0 - transitivePeerDependencies: - - '@types/react' - dev: true - /@storybook/addon-console/1.2.3_@storybook+addon-actions@6.4.19: resolution: {integrity: sha512-w5uCUwECA28fdZWoa+A4e/RS9XzBStdd3TwwmpSM5m4fjURJI7Qr+uVq30UeRdgZRH1K7CdWzYUE6RxWXMdVyw==} peerDependencies: '@storybook/addon-actions': '*' dependencies: - '@storybook/addon-actions': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addon-actions': 6.4.19 global: 4.4.0 dev: true - /@storybook/addon-controls/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: - resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/node-logger': 6.4.19 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - core-js: 3.21.1 - lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - eslint - - supports-color - - typescript - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/addon-controls/6.4.19_ad5fc232a476648e022b673b2e1293fc: resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} peerDependencies: @@ -9111,119 +10529,40 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.4.19_0f3f6342a67dc2ef4115448ec44f733f: - resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} + /@storybook/addon-controls/6.4.19_typescript@4.2.4: + resolution: {integrity: sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==} peerDependencies: - '@storybook/angular': 6.4.19 - '@storybook/html': 6.4.19 - '@storybook/react': 6.4.19 - '@storybook/vue': 6.4.19 - '@storybook/vue3': 6.4.19 - '@storybook/web-components': 6.4.19 - lit: ^2.0.0 - lit-html: ^1.4.1 || ^2.0.0 react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - svelte: ^3.31.2 - sveltedoc-parser: ^4.1.0 - vue: ^2.6.10 || ^3.0.0 - webpack: '*' peerDependenciesMeta: - '@storybook/angular': - optional: true - '@storybook/html': - optional: true - '@storybook/react': - optional: true - '@storybook/vue': - optional: true - '@storybook/vue3': - optional: true - '@storybook/web-components': - optional: true - lit: - optional: true - lit-html: - optional: true react: optional: true react-dom: optional: true - svelte: - optional: true - sveltedoc-parser: - optional: true - vue: - optional: true - webpack: - optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/generator': 7.17.7 - '@babel/parser': 7.17.8 - '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@jest/transform': 26.6.2 - '@mdx-js/loader': 1.6.22_react@17.0.2 - '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22_react@17.0.2 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/builder-webpack4': 6.4.19_7f108b73cd811a4229905aae8cce3ccd + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core': 6.4.19_937e6324d1a779a4b68436e9ddd056f3 - '@storybook/core-events': 6.4.19 + '@storybook/components': 6.4.19 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.19 '@storybook/node-logger': 6.4.19 - '@storybook/postinstall': 6.4.19 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/react': 6.4.19_9f1f8f17cdd455b6ef8e501a921b145c - '@storybook/source-loader': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - acorn: 7.4.1 - acorn-jsx: 5.3.2_acorn@7.4.1 - acorn-walk: 7.2.0 + '@storybook/store': 6.4.19 + '@storybook/theming': 6.4.19 core-js: 3.21.1 - doctrine: 3.0.0 - escodegen: 2.0.0 - fast-deep-equal: 3.1.3 - global: 4.4.0 - html-tags: 3.1.0 - js-string-escape: 1.0.1 - loader-utils: 2.0.2 lodash: 4.17.21 - nanoid: 3.1.30 - p-limit: 3.1.0 - prettier: 2.3.0 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-element-to-jsx-string: 14.3.4_react-dom@17.0.2+react@17.0.2 - regenerator-runtime: 0.13.9 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - webpack: 5.70.0_webpack-cli@4.9.2 transitivePeerDependencies: - - '@storybook/builder-webpack5' - - '@storybook/manager-webpack5' - '@types/react' - - bufferutil - - encoding - eslint - supports-color - typescript - - utf-8-validate - vue-template-compiler - webpack-cli - webpack-command dev: true - /@storybook/addon-docs/6.4.19_c07d33072055753b44e1c9d473b78732: + /@storybook/addon-docs/6.4.19_4bb52bfb586c30b5fcb8732c940fa2c0: resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} peerDependencies: '@storybook/angular': 6.4.19 @@ -9284,14 +10623,14 @@ packages: '@storybook/builder-webpack4': 6.4.19_3c9642e85c55378a78283e2c58ad860d '@storybook/client-logger': 6.4.19 '@storybook/components': 6.4.19 - '@storybook/core': 6.4.19_4a2c49d703ffc87352c156b0c4186be7 + '@storybook/core': 6.4.19_e254c6bc0c2d82a31a4b49f99644f2ac '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 '@storybook/node-logger': 6.4.19 '@storybook/postinstall': 6.4.19 '@storybook/preview-web': 6.4.19 - '@storybook/react': 6.4.19_df9bce9a6d10cedcb22cc302b49e05b8 + '@storybook/react': 6.4.19_ce33fa78e84ed7674385e603320a18f7 '@storybook/source-loader': 6.4.19 '@storybook/store': 6.4.19 '@storybook/theming': 6.4.19 @@ -9333,41 +10672,114 @@ packages: - webpack-command dev: true - /@storybook/addon-knobs/6.4.0_6d3fd42cc2dc28673127a5aba3ab9a43: - resolution: {integrity: sha512-DiH1/5e2AFHoHrncl1qLu18ZHPHzRMMPvOLFz8AWvvmc+VCqTdIaE+tdxKr3e8rYylKllibgvDOzrLjfTNjF+Q==} - deprecated: deprecating @storybook/addon-knobs in favor of @storybook/addon-controls + /@storybook/addon-docs/6.4.19_a84ef1f946d21a14f1015f55f0de5456: + resolution: {integrity: sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==} peerDependencies: - '@storybook/addons': ^6.4.0 - '@storybook/api': ^6.4.0 - '@storybook/components': ^6.4.0 - '@storybook/core-events': ^6.4.0 - '@storybook/theming': ^6.4.0 + '@storybook/angular': 6.4.19 + '@storybook/html': 6.4.19 + '@storybook/react': 6.4.19 + '@storybook/vue': 6.4.19 + '@storybook/vue3': 6.4.19 + '@storybook/web-components': 6.4.19 + lit: ^2.0.0 + lit-html: ^1.4.1 || ^2.0.0 react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 + svelte: ^3.31.2 + sveltedoc-parser: ^4.1.0 + vue: ^2.6.10 || ^3.0.0 + webpack: '*' peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/html': + optional: true + '@storybook/react': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true react: optional: true react-dom: optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@babel/core': 7.17.8 + '@babel/generator': 7.17.7 + '@babel/parser': 7.17.8 + '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.8 + '@babel/preset-env': 7.16.11_@babel+core@7.17.8 + '@jest/transform': 26.6.2 + '@mdx-js/loader': 1.6.22 + '@mdx-js/mdx': 1.6.22 + '@mdx-js/react': 1.6.22 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 + '@storybook/builder-webpack4': 6.4.19_acorn@7.4.1+typescript@4.2.4 + '@storybook/client-logger': 6.4.19 + '@storybook/components': 6.4.19 + '@storybook/core': 6.4.19_daa74e9ea57648d1383d4f5a915eef9c '@storybook/core-events': 6.4.19 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - copy-to-clipboard: 3.3.1 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.19 + '@storybook/node-logger': 6.4.19 + '@storybook/postinstall': 6.4.19 + '@storybook/preview-web': 6.4.19 + '@storybook/react': 6.4.19_1a3cbc393c8e54a301ca95e65ea44c36 + '@storybook/source-loader': 6.4.19 + '@storybook/store': 6.4.19 + '@storybook/theming': 6.4.19 + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 core-js: 3.21.1 - escape-html: 1.0.3 + doctrine: 3.0.0 + escodegen: 2.0.0 fast-deep-equal: 3.1.3 global: 4.4.0 + html-tags: 3.1.0 + js-string-escape: 1.0.1 + loader-utils: 2.0.2 lodash: 4.17.21 + nanoid: 3.1.30 + p-limit: 3.1.0 + prettier: 2.3.0 prop-types: 15.8.1 - qs: 6.10.3 - react: 17.0.2 - react-colorful: 5.5.1_react-dom@17.0.2+react@17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-lifecycles-compat: 3.0.4 - react-select: 3.2.0_react-dom@17.0.2+react@17.0.2 + react-element-to-jsx-string: 14.3.4 + regenerator-runtime: 0.13.9 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + webpack: 5.70.0 + transitivePeerDependencies: + - '@storybook/builder-webpack5' + - '@storybook/manager-webpack5' + - '@types/react' + - bufferutil + - encoding + - eslint + - supports-color + - typescript + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command dev: true /@storybook/addon-knobs/6.4.0_bdb88cf577f190583d60d23c102288af: @@ -9430,34 +10842,7 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-links/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-ebFHYlGDQkHSmI5QEJb1NxGNToVOLgjKkxXUe+JXX7AfHvrWiXVrN/57aOtBPZzj4h2jRPRTZgwR5glhPIlfEQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/qs': 6.9.7 - core-js: 3.21.1 - global: 4.4.0 - prop-types: 15.8.1 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - ts-dedent: 2.2.0 - dev: true - - /@storybook/addon-storysource/6.4.19_react-dom@17.0.2+react@17.0.2: + /@storybook/addon-storysource/6.4.19: resolution: {integrity: sha512-WcjPgd0/m9rGMQbf6H2/wvXUhW5lSELWdXeCCK1taQHQUjhs8tq83fa7OkI9kE25drPiUJuPzObbCoYr94hftQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -9468,27 +10853,25 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/source-loader': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/components': 6.4.19 + '@storybook/router': 6.4.19 + '@storybook/source-loader': 6.4.19 + '@storybook/theming': 6.4.19 core-js: 3.21.1 estraverse: 5.3.0 loader-utils: 2.0.2 prettier: 2.3.0 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-syntax-highlighter: 13.5.3_react@17.0.2 + react-syntax-highlighter: 13.5.3 regenerator-runtime: 0.13.9 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/addon-viewport/6.4.19_react-dom@17.0.2+react@17.0.2: + /@storybook/addon-viewport/6.4.19: resolution: {integrity: sha512-T1hdImxbLj8suQSTbp6HSA1LLHOlqaNK5jjnqzEOoAxY0O8LNPXMJ2jKIeT2fPQ0v+tWGU3tbwf+3xFq0parVQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -9499,18 +10882,16 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/components': 6.4.19 '@storybook/core-events': 6.4.19 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/theming': 6.4.19 core-js: 3.21.1 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.9 transitivePeerDependencies: - '@types/react' @@ -9535,27 +10916,6 @@ packages: regenerator-runtime: 0.13.9 dev: true - /@storybook/addons/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-QNyRYhpqmHV8oJxxTBdkRlLSbDFhpBvfvMfIrIT1UXb/eemdBZTaCGVvXZ9UixoEEI7f8VwAQ44IvkU5B1509w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/channels': 6.4.19 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/webpack-env': 1.16.3 - core-js: 3.21.1 - global: 4.4.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - dev: true - /@storybook/api/6.4.19: resolution: {integrity: sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==} peerDependencies: @@ -9581,125 +10941,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/api/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/channels': 6.4.19 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - store2: 2.13.2 - telejson: 5.3.3 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - - /@storybook/builder-webpack4/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: - resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/channel-postmessage': 6.4.19 - '@storybook/channels': 6.4.19 - '@storybook/client-api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-events': 6.4.19 - '@storybook/node-logger': 6.4.19 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/node': 14.14.33 - '@types/webpack': 4.41.32 - autoprefixer: 9.8.6 - babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe - babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 - case-sensitive-paths-webpack-plugin: 2.4.0 - core-js: 3.21.1 - css-loader: 3.6.0_webpack@4.46.0 - file-loader: 6.2.0_webpack@4.46.0 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 4.1.6 - glob: 7.2.0 - glob-promise: 3.4.0_glob@7.2.0 - global: 4.4.0 - html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.6.2 - postcss: 7.0.39 - postcss-flexbugs-fixes: 4.2.1 - postcss-loader: 4.2.0_postcss@7.0.39+webpack@4.46.0 - raw-loader: 4.0.2_webpack@4.46.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - stable: 0.1.8 - style-loader: 1.3.0_webpack@4.46.0 - terser-webpack-plugin: 4.2.3_webpack@4.46.0 - ts-dedent: 2.2.0 - typescript: 4.6.2 - url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 - util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 - webpack-dev-middleware: 3.7.3_webpack@4.46.0 - webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 - webpack-hot-middleware: 2.25.1 - webpack-virtual-modules: 0.2.2 - transitivePeerDependencies: - - '@types/react' - - acorn - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/builder-webpack4/6.4.19_3c9642e85c55378a78283e2c58ad860d: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: @@ -9790,7 +11031,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.4.19_7f108b73cd811a4229905aae8cce3ccd: + /@storybook/builder-webpack4/6.4.19_acorn@7.4.1+typescript@4.2.4: resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -9821,22 +11062,22 @@ packages: '@babel/preset-env': 7.16.11_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/channel-postmessage': 6.4.19 '@storybook/channels': 6.4.19 - '@storybook/client-api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/client-api': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/components': 6.4.19 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/preview-web': 6.4.19 + '@storybook/router': 6.4.19 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/store': 6.4.19 + '@storybook/theming': 6.4.19 + '@storybook/ui': 6.4.19 '@types/node': 14.14.33 '@types/webpack': 4.41.32 autoprefixer: 9.8.6 @@ -9853,21 +11094,19 @@ packages: glob-promise: 3.4.0_glob@7.2.0 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.6.2 + pnp-webpack-plugin: 1.6.4_typescript@4.2.4 postcss: 7.0.39 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.2.0_postcss@7.0.39+webpack@4.46.0 raw-loader: 4.0.2_webpack@4.46.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 webpack-dev-middleware: 3.7.3_webpack@4.46.0 webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 webpack-hot-middleware: 2.25.1 @@ -9972,7 +11211,97 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack5/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: + /@storybook/builder-webpack4/6.4.19_typescript@4.2.4: + resolution: {integrity: sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.17.8 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 + '@babel/preset-env': 7.16.11_@babel+core@7.17.8 + '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 + '@storybook/channel-postmessage': 6.4.19 + '@storybook/channels': 6.4.19 + '@storybook/client-api': 6.4.19 + '@storybook/client-logger': 6.4.19 + '@storybook/components': 6.4.19 + '@storybook/core-common': 6.4.19_typescript@4.2.4 + '@storybook/core-events': 6.4.19 + '@storybook/node-logger': 6.4.19 + '@storybook/preview-web': 6.4.19 + '@storybook/router': 6.4.19 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.19 + '@storybook/theming': 6.4.19 + '@storybook/ui': 6.4.19 + '@types/node': 14.14.33 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.6 + babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe + babel-plugin-macros: 2.8.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.21.1 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6 + glob: 7.2.0 + glob-promise: 3.4.0_glob@7.2.0 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.2.4 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.2.0_postcss@7.0.39+webpack@4.46.0 + raw-loader: 4.0.2_webpack@4.46.0 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.2.4 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack5/6.4.19_typescript@4.2.4: resolution: {integrity: sha512-AWM4YMN1gPaf7jfntqZTCGpIQ1tF6YRU1JtczPG4ox28rTaO6NMfOBi9aRhBre/59pPOh9bF6u2gu/MIHmRW+w==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -10002,21 +11331,21 @@ packages: '@babel/preset-env': 7.16.11_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 + '@storybook/api': 6.4.19 '@storybook/channel-postmessage': 6.4.19 '@storybook/channels': 6.4.19 - '@storybook/client-api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/client-api': 6.4.19 '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/components': 6.4.19 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/core-events': 6.4.19 '@storybook/node-logger': 6.4.19 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/preview-web': 6.4.19 + '@storybook/router': 6.4.19 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/store': 6.4.19 + '@storybook/theming': 6.4.19 '@types/node': 14.14.33 babel-loader: 8.2.3_fa907c5a4f16ccc493e21649ccc59574 babel-plugin-macros: 3.1.0 @@ -10024,21 +11353,19 @@ packages: case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.21.1 css-loader: 5.2.7_webpack@5.70.0 - fork-ts-checker-webpack-plugin: 6.5.0_10568ae13669cc833891d65cd6879aa0 + fork-ts-checker-webpack-plugin: 6.5.0_typescript@4.2.4+webpack@5.70.0 glob: 7.2.0 glob-promise: 3.4.0_glob@7.2.0 html-webpack-plugin: 5.5.0_webpack@5.70.0 path-browserify: 1.0.1 process: 0.11.10 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 stable: 0.1.8 style-loader: 2.0.0_webpack@5.70.0 terser-webpack-plugin: 5.2.5_webpack@5.70.0 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 util-deprecate: 1.0.2 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 webpack-dev-middleware: 4.3.0_webpack@5.70.0 webpack-hot-middleware: 2.25.1 webpack-virtual-modules: 0.4.3 @@ -10113,36 +11440,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/client-api/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-OCrT5Um3FDvZnimQKwWtwsaI+5agPwq2i8YiqlofrI/NPMKp0I7DEkCGwE5IRD1Q8BIKqHcMo5tTmfYi0AxyOg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/channel-postmessage': 6.4.19 - '@storybook/channels': 6.4.19 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/qs': 6.9.7 - '@types/webpack-env': 1.16.3 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - store2: 2.13.2 - synchronous-promise: 2.0.15 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - /@storybook/client-logger/6.4.19: resolution: {integrity: sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==} dependencies: @@ -10184,43 +11481,7 @@ packages: - '@types/react' dev: true - /@storybook/components/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@popperjs/core': 2.11.4 - '@storybook/client-logger': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/color-convert': 2.0.0 - '@types/overlayscrollbars': 1.12.1 - '@types/react-syntax-highlighter': 11.0.5 - color-convert: 2.0.1 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - markdown-to-jsx: 7.1.7_react@17.0.2 - memoizerific: 1.11.3 - overlayscrollbars: 1.13.1 - polished: 4.1.4 - prop-types: 15.8.1 - react: 17.0.2 - react-colorful: 5.5.1_react-dom@17.0.2+react@17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-popper-tooltip: 3.1.1_react-dom@17.0.2+react@17.0.2 - react-syntax-highlighter: 13.5.3_react@17.0.2 - react-textarea-autosize: 8.3.3_react@17.0.2 - regenerator-runtime: 0.13.9 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - dev: true - - /@storybook/core-client/6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753: + /@storybook/core-client/6.4.19_typescript@4.2.4+webpack@4.46.0: resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -10231,35 +11492,33 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 '@storybook/channel-postmessage': 6.4.19 '@storybook/channel-websocket': 6.4.19 - '@storybook/client-api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/client-api': 6.4.19 '@storybook/client-logger': 6.4.19 '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/preview-web': 6.4.19 + '@storybook/store': 6.4.19 + '@storybook/ui': 6.4.19 airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.21.1 global: 4.4.0 lodash: 4.17.21 qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-client/6.4.19_e7281081368b6c9b5567d9536ed3f600: + /@storybook/core-client/6.4.19_typescript@4.2.4+webpack@5.70.0: resolution: {integrity: sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -10270,30 +11529,28 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/addons': 6.4.19 '@storybook/channel-postmessage': 6.4.19 '@storybook/channel-websocket': 6.4.19 - '@storybook/client-api': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/client-api': 6.4.19 '@storybook/client-logger': 6.4.19 '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/preview-web': 6.4.19 + '@storybook/store': 6.4.19 + '@storybook/ui': 6.4.19 airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.21.1 global: 4.4.0 lodash: 4.17.21 qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 transitivePeerDependencies: - '@types/react' dev: true @@ -10372,76 +11629,6 @@ packages: - '@types/react' dev: true - /@storybook/core-common/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: - resolution: {integrity: sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 - '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 - '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 - '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 - '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 - '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 - '@babel/preset-env': 7.16.11_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - '@babel/register': 7.12.1_@babel+core@7.17.8 - '@storybook/node-logger': 6.4.19 - '@storybook/semver': 7.3.2 - '@types/node': 14.14.33 - '@types/pretty-hrtime': 1.0.1 - babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe - babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 - chalk: 4.1.2 - core-js: 3.21.1 - express: 4.17.1 - file-system-cache: 1.0.5 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.0_5cc3eafe4d1d9014e8dc18ad98f28e04 - fs-extra: 9.1.0 - glob: 7.2.0 - handlebars: 4.7.7 - interpret: 2.2.0 - json5: 2.2.0 - lazy-universal-dotenv: 3.0.1 - picomatch: 2.3.0 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - resolve-from: 5.0.0 - slash: 3.0.0 - telejson: 5.3.3 - ts-dedent: 2.2.0 - typescript: 4.6.2 - util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/core-common/6.4.19_ad5fc232a476648e022b673b2e1293fc: resolution: {integrity: sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==} peerDependencies: @@ -10510,13 +11697,155 @@ packages: - webpack-command dev: true + /@storybook/core-common/6.4.19_typescript@4.2.4: + resolution: {integrity: sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.17.8 + '@babel/plugin-proposal-class-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-decorators': 7.16.4_@babel+core@7.17.8 + '@babel/plugin-proposal-export-default-from': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-object-rest-spread': 7.17.3_@babel+core@7.17.8 + '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-proposal-private-methods': 7.16.11_@babel+core@7.17.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.17.8 + '@babel/plugin-transform-arrow-functions': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-block-scoping': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-classes': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-destructuring': 7.17.7_@babel+core@7.17.8 + '@babel/plugin-transform-for-of': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-parameters': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-shorthand-properties': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-transform-spread': 7.16.7_@babel+core@7.17.8 + '@babel/preset-env': 7.16.11_@babel+core@7.17.8 + '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 + '@babel/register': 7.12.1_@babel+core@7.17.8 + '@storybook/node-logger': 6.4.19 + '@storybook/semver': 7.3.2 + '@types/node': 14.14.33 + '@types/pretty-hrtime': 1.0.1 + babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.17.8 + chalk: 4.1.2 + core-js: 3.21.1 + express: 4.17.1 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.0_typescript@4.2.4+webpack@4.46.0 + fs-extra: 9.1.0 + glob: 7.2.0 + handlebars: 4.7.7 + interpret: 2.2.0 + json5: 2.2.0 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.0 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + typescript: 4.2.4 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + /@storybook/core-events/6.4.19: resolution: {integrity: sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==} dependencies: core-js: 3.21.1 dev: true - /@storybook/core-server/6.4.19_3c9642e85c55378a78283e2c58ad860d: + /@storybook/core-server/6.4.19_32ff3fc743ba90b9723aa5427911cd5d: + resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + '@storybook/manager-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.4.19_acorn@7.4.1+typescript@4.2.4 + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@4.46.0 + '@storybook/core-common': 6.4.19_typescript@4.2.4 + '@storybook/core-events': 6.4.19 + '@storybook/csf': 0.0.2--canary.87bc651.0 + '@storybook/csf-tools': 6.4.19 + '@storybook/manager-webpack4': 6.4.19_acorn@7.4.1+typescript@4.2.4 + '@storybook/manager-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/node-logger': 6.4.19 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.4.19 + '@types/node': 14.14.33 + '@types/node-fetch': 2.6.1 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.1 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.21.1 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.17.1 + file-system-cache: 1.0.5 + fs-extra: 9.1.0 + globby: 11.1.0 + ip: 1.1.5 + lodash: 4.17.21 + node-fetch: 2.6.7 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 5.3.3 + ts-dedent: 2.2.0 + typescript: 4.2.4 + util-deprecate: 1.0.2 + watchpack: 2.2.0 + webpack: 4.46.0 + ws: 8.5.0 + transitivePeerDependencies: + - '@types/react' + - acorn + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.4.19_7c8c8296f464bed180230583a2e7108c: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -10534,12 +11863,14 @@ packages: dependencies: '@discoveryjs/json-ext': 0.5.7 '@storybook/builder-webpack4': 6.4.19_3c9642e85c55378a78283e2c58ad860d + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 '@storybook/core-client': 6.4.19_typescript@4.6.2+webpack@4.46.0 '@storybook/core-common': 6.4.19_ad5fc232a476648e022b673b2e1293fc '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 '@storybook/manager-webpack4': 6.4.19_3c9642e85c55378a78283e2c58ad860d + '@storybook/manager-webpack5': 6.4.19_typescript@4.2.4 '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19 @@ -10588,7 +11919,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.19_42c4a06ed0e2cc1fdb58490e9ba7de2e: + /@storybook/core-server/6.4.19_bd8532947d2e6ce2622b1981219456e8: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -10605,18 +11936,18 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_7f108b73cd811a4229905aae8cce3ccd - '@storybook/builder-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-client': 6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/builder-webpack4': 6.4.19_typescript@4.2.4 + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@4.46.0 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_7f108b73cd811a4229905aae8cce3ccd - '@storybook/manager-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/manager-webpack4': 6.4.19_typescript@4.2.4 + '@storybook/manager-webpack5': 6.4.19_typescript@4.2.4 '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/store': 6.4.19 '@types/node': 14.14.33 '@types/node-fetch': 2.6.1 '@types/pretty-hrtime': 1.0.1 @@ -10639,17 +11970,15 @@ packages: node-fetch: 2.6.7 pretty-hrtime: 1.0.3 prompts: 2.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 regenerator-runtime: 0.13.9 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 5.3.3 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 util-deprecate: 1.0.2 watchpack: 2.2.0 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 ws: 8.5.0 transitivePeerDependencies: - '@types/react' @@ -10664,83 +11993,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.4.19_8c312791082e0b705c61c5574ae96b7c: - resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - '@storybook/manager-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - '@storybook/manager-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/builder-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-client': 6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.19 - '@storybook/manager-webpack4': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/manager-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/node-logger': 6.4.19 - '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/node': 14.14.33 - '@types/node-fetch': 2.6.1 - '@types/pretty-hrtime': 1.0.1 - '@types/webpack': 4.41.32 - better-opn: 2.1.1 - boxen: 5.1.2 - chalk: 4.1.2 - cli-table3: 0.6.1 - commander: 6.2.1 - compression: 1.7.4 - core-js: 3.21.1 - cpy: 8.1.2 - detect-port: 1.3.0 - express: 4.17.1 - file-system-cache: 1.0.5 - fs-extra: 9.1.0 - globby: 11.1.0 - ip: 1.1.5 - lodash: 4.17.21 - node-fetch: 2.6.7 - pretty-hrtime: 1.0.3 - prompts: 2.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - serve-favicon: 2.5.0 - slash: 3.0.0 - telejson: 5.3.3 - ts-dedent: 2.2.0 - typescript: 4.6.2 - util-deprecate: 1.0.2 - watchpack: 2.2.0 - webpack: 4.46.0_webpack-cli@4.9.2 - ws: 8.5.0 - transitivePeerDependencies: - - '@types/react' - - acorn - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core-server/6.4.19_ad5fc232a476648e022b673b2e1293fc: + /@storybook/core-server/6.4.19_de51fed6d5568596cbb9a47b25330f0e: resolution: {integrity: sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -10758,12 +12011,14 @@ packages: dependencies: '@discoveryjs/json-ext': 0.5.7 '@storybook/builder-webpack4': 6.4.19_ad5fc232a476648e022b673b2e1293fc + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 '@storybook/core-client': 6.4.19_typescript@4.6.2+webpack@4.46.0 '@storybook/core-common': 6.4.19_ad5fc232a476648e022b673b2e1293fc '@storybook/core-events': 6.4.19 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/csf-tools': 6.4.19 '@storybook/manager-webpack4': 6.4.19_ad5fc232a476648e022b673b2e1293fc + '@storybook/manager-webpack5': 6.4.19_typescript@4.2.4 '@storybook/node-logger': 6.4.19 '@storybook/semver': 7.3.2 '@storybook/store': 6.4.19 @@ -10812,7 +12067,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_0aa9eeaa726e2cf1920b2ebcd5c10136: + /@storybook/core/6.4.19_56153e2fc75ffe3d23f60c0ecebf9977: resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -10826,8 +12081,9 @@ packages: typescript: optional: true dependencies: + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 '@storybook/core-client': 6.4.19_typescript@4.6.2+webpack@4.46.0 - '@storybook/core-server': 6.4.19_ad5fc232a476648e022b673b2e1293fc + '@storybook/core-server': 6.4.19_de51fed6d5568596cbb9a47b25330f0e typescript: 4.6.2 webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: @@ -10844,7 +12100,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_4a2c49d703ffc87352c156b0c4186be7: + /@storybook/core/6.4.19_c15466773815ac7b8bfbbf8420ba0ee2: resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} peerDependencies: '@storybook/builder-webpack5': 6.4.19 @@ -10858,8 +12114,75 @@ packages: typescript: optional: true dependencies: + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@4.46.0 + '@storybook/core-server': 6.4.19_bd8532947d2e6ce2622b1981219456e8 + typescript: 4.2.4 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.4.19_daa74e9ea57648d1383d4f5a915eef9c: + resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@5.70.0 + '@storybook/core-server': 6.4.19_32ff3fc743ba90b9723aa5427911cd5d + typescript: 4.2.4 + webpack: 5.70.0 + transitivePeerDependencies: + - '@storybook/manager-webpack5' + - '@types/react' + - acorn + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.4.19_e254c6bc0c2d82a31a4b49f99644f2ac: + resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} + peerDependencies: + '@storybook/builder-webpack5': 6.4.19 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/builder-webpack5': 6.4.19_typescript@4.2.4 '@storybook/core-client': 6.4.19_typescript@4.6.2+webpack@5.70.0 - '@storybook/core-server': 6.4.19_3c9642e85c55378a78283e2c58ad860d + '@storybook/core-server': 6.4.19_7c8c8296f464bed180230583a2e7108c typescript: 4.6.2 webpack: 5.70.0_webpack-cli@3.3.12 transitivePeerDependencies: @@ -10876,76 +12199,6 @@ packages: - webpack-command dev: true - /@storybook/core/6.4.19_937e6324d1a779a4b68436e9ddd056f3: - resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@storybook/builder-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-client': 6.4.19_e7281081368b6c9b5567d9536ed3f600 - '@storybook/core-server': 6.4.19_42c4a06ed0e2cc1fdb58490e9ba7de2e - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - typescript: 4.6.2 - webpack: 5.70.0_webpack-cli@4.9.2 - transitivePeerDependencies: - - '@storybook/manager-webpack5' - - '@types/react' - - acorn - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - - /@storybook/core/6.4.19_9591feef39d6ac368407db3801bf47b1: - resolution: {integrity: sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==} - peerDependencies: - '@storybook/builder-webpack5': 6.4.19 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - webpack: '*' - peerDependenciesMeta: - '@storybook/builder-webpack5': - optional: true - typescript: - optional: true - dependencies: - '@storybook/builder-webpack5': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/core-client': 6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753 - '@storybook/core-server': 6.4.19_8c312791082e0b705c61c5574ae96b7c - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - typescript: 4.6.2 - webpack: 4.46.0_webpack-cli@4.9.2 - transitivePeerDependencies: - - '@storybook/manager-webpack5' - - '@types/react' - - acorn - - bufferutil - - encoding - - eslint - - supports-color - - utf-8-validate - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/csf-tools/6.4.19: resolution: {integrity: sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==} dependencies: @@ -10976,66 +12229,6 @@ packages: lodash: 4.17.21 dev: true - /@storybook/manager-webpack4/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: - resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@babel/core': 7.17.8 - '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-client': 6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e - '@storybook/node-logger': 6.4.19 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@types/node': 14.14.33 - '@types/webpack': 4.41.32 - babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe - case-sensitive-paths-webpack-plugin: 2.4.0 - chalk: 4.1.2 - core-js: 3.21.1 - css-loader: 3.6.0_webpack@4.46.0 - express: 4.17.1 - file-loader: 6.2.0_webpack@4.46.0 - file-system-cache: 1.0.5 - find-up: 5.0.0 - fs-extra: 9.1.0 - html-webpack-plugin: 4.5.2_webpack@4.46.0 - node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.6.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - read-pkg-up: 7.0.1 - regenerator-runtime: 0.13.9 - resolve-from: 5.0.0 - style-loader: 1.3.0_webpack@4.46.0 - telejson: 5.3.3 - terser-webpack-plugin: 4.2.3_webpack@4.46.0 - ts-dedent: 2.2.0 - typescript: 4.6.2 - url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 - util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 - webpack-dev-middleware: 3.7.3_webpack@4.46.0 - webpack-virtual-modules: 0.2.2 - transitivePeerDependencies: - - '@types/react' - - acorn - - encoding - - eslint - - supports-color - - vue-template-compiler - - webpack-cli - - webpack-command - dev: true - /@storybook/manager-webpack4/6.4.19_3c9642e85c55378a78283e2c58ad860d: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: @@ -11094,7 +12287,7 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack4/6.4.19_7f108b73cd811a4229905aae8cce3ccd: + /@storybook/manager-webpack4/6.4.19_acorn@7.4.1+typescript@4.2.4: resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11107,12 +12300,12 @@ packages: '@babel/core': 7.17.8 '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-client': 6.4.19_89d5fc67cc6e8d5f95b899f1abfc6753 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/addons': 6.4.19 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@4.46.0 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/node-logger': 6.4.19 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/theming': 6.4.19 + '@storybook/ui': 6.4.19 '@types/node': 14.14.33 '@types/webpack': 4.41.32 babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe @@ -11127,9 +12320,7 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 - pnp-webpack-plugin: 1.6.4_typescript@4.6.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + pnp-webpack-plugin: 1.6.4_typescript@4.2.4 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 resolve-from: 5.0.0 @@ -11137,10 +12328,10 @@ packages: telejson: 5.3.3 terser-webpack-plugin: 4.2.3_acorn@7.4.1+webpack@4.46.0 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 webpack-dev-middleware: 3.7.3_webpack@4.46.0 webpack-virtual-modules: 0.2.2 transitivePeerDependencies: @@ -11212,7 +12403,65 @@ packages: - webpack-command dev: true - /@storybook/manager-webpack5/6.4.19_038a1a9b7a6f260609bc9d14f1ae100e: + /@storybook/manager-webpack4/6.4.19_typescript@4.2.4: + resolution: {integrity: sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.17.8 + '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 + '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@storybook/addons': 6.4.19 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@4.46.0 + '@storybook/core-common': 6.4.19_typescript@4.2.4 + '@storybook/node-logger': 6.4.19 + '@storybook/theming': 6.4.19 + '@storybook/ui': 6.4.19 + '@types/node': 14.14.33 + '@types/webpack': 4.41.32 + babel-loader: 8.2.3_b72fb7e629d39881e138edb6dcd0dfbe + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.21.1 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.17.1 + file-loader: 6.2.0_webpack@4.46.0 + file-system-cache: 1.0.5 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.7 + pnp-webpack-plugin: 1.6.4_typescript@4.2.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 5.3.3 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.2.4 + url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - '@types/react' + - acorn + - encoding + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/manager-webpack5/6.4.19_typescript@4.2.4: resolution: {integrity: sha512-hVjWhWAOgWaymBy0HeRskN+MfKLpqLP4Txfw+3Xqg1qplgexV0w2O4BQrS/SNEH4V/1qF9h8XTsk3L3oQIj3Mg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -11225,12 +12474,12 @@ packages: '@babel/core': 7.17.8 '@babel/plugin-transform-template-literals': 7.16.7_@babel+core@7.17.8 '@babel/preset-react': 7.16.7_@babel+core@7.17.8 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-client': 6.4.19_e7281081368b6c9b5567d9536ed3f600 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/addons': 6.4.19 + '@storybook/core-client': 6.4.19_typescript@4.2.4+webpack@5.70.0 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/node-logger': 6.4.19 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/ui': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/theming': 6.4.19 + '@storybook/ui': 6.4.19 '@types/node': 14.14.33 babel-loader: 8.2.3_fa907c5a4f16ccc493e21649ccc59574 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -11244,8 +12493,6 @@ packages: html-webpack-plugin: 5.5.0_webpack@5.70.0 node-fetch: 2.6.7 process: 0.11.10 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 resolve-from: 5.0.0 @@ -11253,9 +12500,9 @@ packages: telejson: 5.3.3 terser-webpack-plugin: 5.2.5_webpack@5.70.0 ts-dedent: 2.2.0 - typescript: 4.6.2 + typescript: 4.2.4 util-deprecate: 1.0.2 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 webpack-dev-middleware: 4.3.0_webpack@5.70.0 webpack-virtual-modules: 0.4.3 transitivePeerDependencies: @@ -11312,30 +12559,23 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-web/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==} + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.253f8c1.0_typescript@4.2.4+webpack@4.46.0: + resolution: {integrity: sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 + typescript: '>= 3.x' + webpack: '>= 4' dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/channel-postmessage': 6.4.19 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 - ansi-to-html: 0.6.15 - core-js: 3.21.1 - global: 4.4.0 - lodash: 4.17.21 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - synchronous-promise: 2.0.15 - ts-dedent: 2.2.0 - unfetch: 4.2.0 - util-deprecate: 1.0.2 + debug: 4.3.3 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.0.4 + micromatch: 4.0.4 + react-docgen-typescript: 2.2.2_typescript@4.2.4 + tslib: 2.3.1 + typescript: 4.2.4 + webpack: 4.46.0 + transitivePeerDependencies: + - supports-color dev: true /@storybook/react-docgen-typescript-plugin/1.0.2-canary.253f8c1.0_typescript@4.6.2+webpack@4.46.0: @@ -11352,12 +12592,12 @@ packages: react-docgen-typescript: 2.2.2_typescript@4.6.2 tslib: 2.3.1 typescript: 4.6.2 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0_webpack-cli@3.3.12 transitivePeerDependencies: - supports-color dev: true - /@storybook/react/6.4.19_9f1f8f17cdd455b6ef8e501a921b145c: + /@storybook/react/6.4.19_1a3cbc393c8e54a301ca95e65ea44c36: resolution: {integrity: sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==} engines: {node: '>=10.13.0'} hasBin: true @@ -11372,34 +12612,32 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.17.8 - '@babel/preset-flow': 7.16.7_@babel+core@7.17.8 - '@babel/preset-react': 7.16.7_@babel+core@7.17.8 + '@babel/core': 7.12.9 + '@babel/preset-flow': 7.16.7_@babel+core@7.12.9 + '@babel/preset-react': 7.16.7_@babel+core@7.12.9 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_06cd85ae30adde416cafc06517ba554d - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core': 6.4.19_9591feef39d6ac368407db3801bf47b1 - '@storybook/core-common': 6.4.19_038a1a9b7a6f260609bc9d14f1ae100e + '@storybook/addons': 6.4.19 + '@storybook/core': 6.4.19_c15466773815ac7b8bfbbf8420ba0ee2 + '@storybook/core-common': 6.4.19_typescript@4.2.4 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_typescript@4.6.2+webpack@4.46.0 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0_typescript@4.2.4+webpack@4.46.0 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.19_react-dom@17.0.2+react@17.0.2 + '@storybook/store': 6.4.19 '@types/webpack-env': 1.16.3 babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-named-asset-import: 0.3.8_@babel+core@7.17.8 + babel-plugin-named-asset-import: 0.3.8_@babel+core@7.12.9 babel-plugin-react-docgen: 4.2.1 core-js: 3.21.1 global: 4.4.0 lodash: 4.17.21 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 react-refresh: 0.11.0 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 - typescript: 4.6.2 - webpack: 4.46.0_webpack-cli@4.9.2 + typescript: 4.2.4 + webpack: 4.46.0 transitivePeerDependencies: - '@storybook/builder-webpack5' - '@storybook/manager-webpack5' @@ -11421,7 +12659,7 @@ packages: - webpack-plugin-serve dev: true - /@storybook/react/6.4.19_df9bce9a6d10cedcb22cc302b49e05b8: + /@storybook/react/6.4.19_ce33fa78e84ed7674385e603320a18f7: resolution: {integrity: sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==} engines: {node: '>=10.13.0'} hasBin: true @@ -11441,7 +12679,7 @@ packages: '@babel/preset-react': 7.16.7_@babel+core@7.17.8 '@pmmmwh/react-refresh-webpack-plugin': 0.5.1_06cd85ae30adde416cafc06517ba554d '@storybook/addons': 6.4.19 - '@storybook/core': 6.4.19_0aa9eeaa726e2cf1920b2ebcd5c10136 + '@storybook/core': 6.4.19_56153e2fc75ffe3d23f60c0ecebf9977 '@storybook/core-common': 6.4.19_ad5fc232a476648e022b673b2e1293fc '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.19 @@ -11502,27 +12740,6 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/router/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/client-logger': 6.4.19 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - history: 5.0.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-router: 6.2.2_react@17.0.2 - react-router-dom: 6.2.2_react-dom@17.0.2+react@17.0.2 - ts-dedent: 2.2.0 - dev: true - /@storybook/semver/7.3.2: resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==} engines: {node: '>=10'} @@ -11550,26 +12767,6 @@ packages: regenerator-runtime: 0.13.9 dev: true - /@storybook/source-loader/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-XqTsqddRglvfW7mhyjwoqd/B8L6samcBehhO0OEbsFp6FPWa9eXuObCxtRYIcjcSIe+ksbW3D/54ppEs1L/g1Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/client-logger': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - core-js: 3.21.1 - estraverse: 5.3.0 - global: 4.4.0 - loader-utils: 2.0.2 - lodash: 4.17.21 - prettier: 2.3.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - dev: true - /@storybook/store/6.4.19: resolution: {integrity: sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==} peerDependencies: @@ -11593,31 +12790,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/store/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/client-logger': 6.4.19 - '@storybook/core-events': 6.4.19 - '@storybook/csf': 0.0.2--canary.87bc651.0 - core-js: 3.21.1 - fast-deep-equal: 3.1.3 - global: 4.4.0 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.9 - slash: 3.0.0 - stable: 0.1.8 - synchronous-promise: 2.0.15 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - /@storybook/theming/6.4.19: resolution: {integrity: sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==} peerDependencies: @@ -11638,28 +12810,6 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@emotion/core': 10.3.1_react@17.0.2 - '@emotion/is-prop-valid': 0.8.8 - '@emotion/styled': 10.3.0_316248eb6686a2fd4fbadcfd00de37f3 - '@storybook/client-logger': 6.4.19 - core-js: 3.21.1 - deep-object-diff: 1.1.7 - emotion-theming: 10.3.0_316248eb6686a2fd4fbadcfd00de37f3 - global: 4.4.0 - memoizerific: 1.11.3 - polished: 4.1.4 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - resolve-from: 5.0.0 - ts-dedent: 2.2.0 - dev: true - /@storybook/ui/6.4.19: resolution: {integrity: sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==} peerDependencies: @@ -11698,46 +12848,6 @@ packages: - '@types/react' dev: true - /@storybook/ui/6.4.19_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@emotion/core': 10.3.1_react@17.0.2 - '@storybook/addons': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/api': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/channels': 6.4.19 - '@storybook/client-logger': 6.4.19 - '@storybook/components': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/core-events': 6.4.19 - '@storybook/router': 6.4.19_react-dom@17.0.2+react@17.0.2 - '@storybook/semver': 7.3.2 - '@storybook/theming': 6.4.19_react-dom@17.0.2+react@17.0.2 - copy-to-clipboard: 3.3.1 - core-js: 3.21.1 - core-js-pure: 3.19.1 - downshift: 6.1.7_react@17.0.2 - emotion-theming: 10.3.0_316248eb6686a2fd4fbadcfd00de37f3 - fuse.js: 3.6.1 - global: 4.4.0 - lodash: 4.17.21 - markdown-to-jsx: 7.1.7_react@17.0.2 - memoizerific: 1.11.3 - polished: 4.1.4 - qs: 6.10.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-draggable: 4.4.4_react-dom@17.0.2+react@17.0.2 - react-helmet-async: 1.2.3_react-dom@17.0.2+react@17.0.2 - react-sizeme: 3.0.2 - regenerator-runtime: 0.13.9 - resolve-from: 5.0.0 - store2: 2.13.2 - transitivePeerDependencies: - - '@types/react' - dev: true - /@stylelint/postcss-css-in-js/0.37.2_4f7b71a942b8b7a555b8adf78f88122b: resolution: {integrity: sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==} peerDependencies: @@ -12110,13 +13220,6 @@ packages: '@types/trusted-types': 2.0.2 dev: true - /@types/eslint-scope/3.7.1: - resolution: {integrity: sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==} - dependencies: - '@types/eslint': 7.29.0 - '@types/estree': 0.0.50 - dev: true - /@types/eslint-scope/3.7.3: resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} dependencies: @@ -12284,7 +13387,6 @@ packages: /@types/mousetrap/1.6.9: resolution: {integrity: sha512-HUAiN65VsRXyFCTicolwb5+I7FM6f72zjMWr+ajGk+YTvzBgXqa2A5U7d+rtsouAkunJ5U4Sb5lNJjo9w+nmXg==} - dev: false /@types/node-fetch/2.6.1: resolution: {integrity: sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==} @@ -13968,15 +15070,15 @@ packages: '@babel/core': 7.16.12 '@babel/plugin-transform-react-jsx': 7.16.0_@babel+core@7.16.12 '@babel/plugin-transform-runtime': 7.16.4_@babel+core@7.16.12 - '@babel/preset-env': 7.16.4_@babel+core@7.16.12 + '@babel/preset-env': 7.16.11_@babel+core@7.16.12 '@babel/preset-typescript': 7.16.7_@babel+core@7.16.12 - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.17.7 '@wordpress/babel-plugin-import-jsx-pragma': 3.1.0_@babel+core@7.16.12 '@wordpress/browserslist-config': 4.1.0 '@wordpress/element': 4.0.4 '@wordpress/warning': 2.2.2 browserslist: 4.19.3 - core-js: 3.19.1 + core-js: 3.21.1 transitivePeerDependencies: - supports-color dev: false @@ -14257,7 +15359,6 @@ packages: mousetrap: 1.6.5 react-resize-aware: 3.1.1 use-memo-one: 1.1.2 - dev: false /@wordpress/compose/5.2.1_react@17.0.2: resolution: {integrity: sha512-0l5UOiq5tDFeuIsdSVsWzNETHZagTnSBSTdGsxDmKIi5NC7vf1pXs4rlrEA45vUdFm/SbpIA9gp+NFzfpVKIXw==} @@ -14416,7 +15517,6 @@ packages: redux: 4.1.2 turbo-combine-reducers: 1.0.2 use-memo-one: 1.1.2 - dev: false /@wordpress/data/6.4.1_react@17.0.2: resolution: {integrity: sha512-pDTQl+cmVvwyGuGo6DtWkSGtIz6FTJw87XxtRkOeuQlEqsfHoyXSA4da7cBY5o22Ss5P5408hXjR0SAIqEBhmg==} @@ -14490,7 +15590,6 @@ packages: dependencies: '@babel/runtime': 7.17.7 '@wordpress/hooks': 3.5.0 - dev: false /@wordpress/dom-ready/3.4.1: resolution: {integrity: sha512-w6DVKKpNwX0XUp0Cuh1OyFyGXLabr47k/ecRHKmQkQh9LdjRew7QvxUHYDN1rejRvq5GqcDb7Gnkz4E6hWIo4Q==} @@ -14519,7 +15618,6 @@ packages: dependencies: '@babel/runtime': 7.17.7 lodash: 4.17.21 - dev: false /@wordpress/e2e-test-utils/3.0.0_jest@24.9.0+puppeteer@2.1.1: resolution: {integrity: sha512-XMdR8DeKyDQRF5jKeUlOzP4pTRtoJuOLsNZRLUFUvnrs9y/7/hH17VmPbWp3TJGvV/eGKzO4+D+wJTsP9nJmIw==} @@ -14603,7 +15701,7 @@ packages: resolution: {integrity: sha512-GbYVSZrHitOmupQCjb7cSlewVigXHorpZUBpvWnkU3rhyh1tF/N9qve3fgg7Q3s2szjtTP+eEutB+4mmkwHQOA==} engines: {node: '>=12'} dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.17.7 '@types/react': 16.14.21 '@types/react-dom': 16.9.14 '@wordpress/escape-html': 2.2.3 @@ -14874,7 +15972,6 @@ packages: engines: {node: '>=12'} dependencies: '@babel/runtime': 7.17.7 - dev: false /@wordpress/html-entities/3.4.1: resolution: {integrity: sha512-wSuwgONTefnhCB9B7mKS+e8islHuCkprfDc+FhqVAa6r5RbVBGvaHUJs8embgdtww7MwBRMnskNf/buQ8Jr02A==} @@ -14951,7 +16048,6 @@ packages: engines: {node: '>=12'} dependencies: '@babel/runtime': 7.17.7 - dev: false /@wordpress/jest-console/3.10.0_jest@25.5.4: resolution: {integrity: sha512-iS1GSO+o7+p2PhvScOquD+IK7WqmVxa2s9uTUQyNEo06f9EUv6KNw0B1iZ00DpbgLqDCiczfdCNapC816UXIIA==} @@ -15083,7 +16179,6 @@ packages: '@babel/runtime': 7.17.7 '@wordpress/i18n': 4.4.1 lodash: 4.17.21 - dev: false /@wordpress/notices/3.4.1: resolution: {integrity: sha512-Y7e2GLlB5wjLOtxsXzJd3jg/p6LV2GeeUnk+reURqUbb/4rlVlXQuMPOboTxLRB/0eTMNwWFI/MIr+NKbuY7MQ==} @@ -15202,7 +16297,6 @@ packages: engines: {node: '>=12'} dependencies: '@babel/runtime': 7.17.7 - dev: false /@wordpress/redux-routine/3.14.2: resolution: {integrity: sha512-aqi4UtvMP/+NhULxyCR8ktG0v4BJVTRcMpByAqDg7Oabq2sz2LPuShxd5UY8vxQYQY9t1uUJbslhom4ytcohWg==} @@ -15224,7 +16318,6 @@ packages: lodash: 4.17.21 redux: 4.1.2 rungen: 0.3.2 - dev: false /@wordpress/rich-text/5.2.1: resolution: {integrity: sha512-PBoDPQjihEOteHlDvVRtAjmDTx3T3NRr/GAX8MKVajECWFhiS6tKY2R/llg7fnJAinCIhEAfpNwQDpx2UCp3bA==} @@ -15531,14 +16624,6 @@ packages: acorn-walk: 7.2.0 dev: true - /acorn-import-assertions/1.8.0_acorn@8.5.0: - resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.5.0 - dev: true - /acorn-import-assertions/1.8.0_acorn@8.7.0: resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: @@ -16512,6 +17597,21 @@ packages: - supports-color dev: true + /babel-loader/8.2.3_2126ca8a005869f6c62d5aa977e8d816: + resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.16.0 + find-cache-dir: 3.3.2 + loader-utils: 1.4.0 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.70.0 + dev: true + /babel-loader/8.2.3_b72fb7e629d39881e138edb6dcd0dfbe: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} @@ -16527,6 +17627,21 @@ packages: webpack: 4.46.0_webpack-cli@3.3.12 dev: true + /babel-loader/8.2.3_d3f6fe5812216e437b67a6bf164a056c: + resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.12.9 + find-cache-dir: 3.3.2 + loader-utils: 1.4.0 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.70.0 + dev: true + /babel-loader/8.2.3_fa907c5a4f16ccc493e21649ccc59574: resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} engines: {node: '>= 8.9'} @@ -16542,21 +17657,6 @@ packages: webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /babel-loader/8.2.3_fda98f9ff70e0481a7d2271d8792a29b: - resolution: {integrity: sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==} - engines: {node: '>= 8.9'} - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - dependencies: - '@babel/core': 7.16.0 - find-cache-dir: 3.3.2 - loader-utils: 1.4.0 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.64.1 - dev: true - /babel-messages/6.23.0: resolution: {integrity: sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=} dependencies: @@ -16688,7 +17788,7 @@ packages: /babel-plugin-macros/2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.16.3 + '@babel/runtime': 7.17.7 cosmiconfig: 6.0.0 resolve: 1.20.0 @@ -16701,6 +17801,14 @@ packages: resolve: 1.20.0 dev: true + /babel-plugin-named-asset-import/0.3.8_@babel+core@7.12.9: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + dependencies: + '@babel/core': 7.12.9 + dev: true + /babel-plugin-named-asset-import/0.3.8_@babel+core@7.17.8: resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} peerDependencies: @@ -16819,6 +17927,42 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.12.9: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.12.9 + core-js-compat: 3.21.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.16.0: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.0 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.16.0 + core-js-compat: 3.21.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.16.12: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.16.12 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.16.12 + core-js-compat: 3.21.1 + transitivePeerDependencies: + - supports-color + dev: false + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.17.8: resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} peerDependencies: @@ -18646,7 +19790,7 @@ packages: webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /copy-webpack-plugin/9.1.0_webpack@5.64.1: + /copy-webpack-plugin/9.1.0_webpack@5.70.0: resolution: {integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -18658,7 +19802,7 @@ packages: normalize-path: 3.0.0 schema-utils: 3.1.1 serialize-javascript: 6.0.0 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /core-js-compat/3.19.1: @@ -18687,10 +19831,6 @@ packages: deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. requiresBuild: true - /core-js/3.19.1: - resolution: {integrity: sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==} - requiresBuild: true - /core-js/3.21.1: resolution: {integrity: sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==} requiresBuild: true @@ -18976,24 +20116,7 @@ packages: postcss-value-parser: 4.2.0 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 5.70.0_webpack-cli@4.9.2 - dev: true - - /css-loader/6.5.1_webpack@5.64.1: - resolution: {integrity: sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==} - engines: {node: '>= 12.13.0'} - peerDependencies: - webpack: ^5.0.0 - dependencies: - icss-utils: 5.1.0_postcss@8.3.11 - postcss: 8.3.11 - postcss-modules-extract-imports: 3.0.0_postcss@8.3.11 - postcss-modules-local-by-default: 4.0.0_postcss@8.3.11 - postcss-modules-scope: 3.0.0_postcss@8.3.11 - postcss-modules-values: 4.0.0_postcss@8.3.11 - postcss-value-parser: 4.1.0 - semver: 7.3.5 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /css-loader/6.7.1_webpack@5.70.0: @@ -19010,10 +20133,10 @@ packages: postcss-modules-values: 4.0.0_postcss@8.4.12 postcss-value-parser: 4.2.0 semver: 7.3.5 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 dev: true - /css-minimizer-webpack-plugin/3.1.3_webpack@5.64.1: + /css-minimizer-webpack-plugin/3.1.3_webpack@5.70.0: resolution: {integrity: sha512-x+6kzXprepysouo513zKibWCbWTGIvH9OrEsMRRV8EcJ7vYY/zRg0lR8tCzMHMap+lhNPOrYCdDagjRmfnGGxw==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -19035,7 +20158,7 @@ packages: schema-utils: 3.1.1 serialize-javascript: 6.0.0 source-map: 0.6.1 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /css-select-base-adapter/0.1.1: @@ -20135,19 +21258,6 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - /emotion-theming/10.3.0_316248eb6686a2fd4fbadcfd00de37f3: - resolution: {integrity: sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==} - peerDependencies: - '@emotion/core': ^10.0.27 - react: '>=16.3.0' - dependencies: - '@babel/runtime': 7.17.7 - '@emotion/core': 10.3.1_react@17.0.2 - '@emotion/weak-memoize': 0.2.5 - hoist-non-react-statics: 3.3.2 - react: 17.0.2 - dev: true - /emotion-theming/10.3.0_@emotion+core@10.3.1: resolution: {integrity: sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==} peerDependencies: @@ -22413,10 +23523,10 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true - /file-loader/6.2.0_webpack@5.64.1: + /file-loader/6.2.0_webpack@5.70.0: resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -22424,7 +23534,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /file-sync-cmp/0.1.1: @@ -22825,38 +23935,6 @@ packages: webpack: 5.70.0_webpack-cli@4.9.2 dev: true - /fork-ts-checker-webpack-plugin/6.5.0_5cc3eafe4d1d9014e8dc18ad98f28e04: - resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - dependencies: - '@babel/code-frame': 7.16.7 - '@types/json-schema': 7.0.9 - chalk: 4.1.2 - chokidar: 3.5.3 - cosmiconfig: 6.0.0 - deepmerge: 4.2.2 - eslint: 8.11.0 - fs-extra: 9.1.0 - glob: 7.2.0 - memfs: 3.3.0 - minimatch: 3.1.2 - schema-utils: 2.7.0 - semver: 7.3.5 - tapable: 1.1.3 - typescript: 4.6.2 - webpack: 4.46.0_webpack-cli@4.9.2 - dev: true - /fork-ts-checker-webpack-plugin/6.5.0_ec34b068c8cf37561abcf5fd5b20a134: resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} engines: {node: '>=10', yarn: '>=1.0.0'} @@ -22889,6 +23967,68 @@ packages: webpack: 4.46.0_webpack-cli@3.3.12 dev: true + /fork-ts-checker-webpack-plugin/6.5.0_typescript@4.2.4+webpack@4.46.0: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.16.7 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + glob: 7.2.0 + memfs: 3.3.0 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.5 + tapable: 1.1.3 + typescript: 4.2.4 + webpack: 4.46.0 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.0_typescript@4.2.4+webpack@5.70.0: + resolution: {integrity: sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.16.7 + '@types/json-schema': 7.0.9 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + glob: 7.2.0 + memfs: 3.3.0 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.5 + tapable: 1.1.3 + typescript: 4.2.4 + webpack: 5.70.0 + dev: true + /form-data/2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} @@ -23010,15 +24150,6 @@ packages: rimraf: 2.7.1 dev: true - /fs-extra/10.0.1: - resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.9 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - /fs-extra/6.0.1: resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} dependencies: @@ -24261,7 +25392,7 @@ packages: pretty-error: 2.1.2 tapable: 1.1.3 util.promisify: 1.0.0 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true /html-webpack-plugin/5.5.0_webpack@5.70.0: @@ -24275,7 +25406,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 transitivePeerDependencies: - acorn dev: true @@ -24565,15 +25696,6 @@ packages: postcss: 8.3.0 dev: true - /icss-utils/5.1.0_postcss@8.3.11: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.3.11 - dev: true - /icss-utils/5.1.0_postcss@8.4.12: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -27349,7 +28471,7 @@ packages: resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 16.10.3 + '@types/node': 17.0.21 graceful-fs: 4.2.9 dev: true @@ -27801,7 +28923,7 @@ packages: /jsbn/0.1.1: resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} - /jscodeshift/0.13.1: + /jscodeshift/0.13.1_@babel+preset-env@7.16.11: resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} hasBin: true peerDependencies: @@ -27813,6 +28935,7 @@ packages: '@babel/plugin-proposal-nullish-coalescing-operator': 7.16.7_@babel+core@7.17.8 '@babel/plugin-proposal-optional-chaining': 7.16.7_@babel+core@7.17.8 '@babel/plugin-transform-modules-commonjs': 7.17.7_@babel+core@7.17.8 + '@babel/preset-env': 7.16.11_@babel+core@7.12.9 '@babel/preset-flow': 7.16.7_@babel+core@7.17.8 '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 '@babel/register': 7.17.7_@babel+core@7.17.8 @@ -28175,7 +29298,7 @@ packages: deprecated: use String.prototype.padStart() dev: false - /less-loader/10.2.0_less@3.12.2+webpack@5.64.1: + /less-loader/10.2.0_less@3.12.2+webpack@5.70.0: resolution: {integrity: sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -28184,7 +29307,7 @@ packages: dependencies: klona: 2.0.5 less: 3.12.2 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /less/3.12.2: @@ -28818,15 +29941,6 @@ packages: react: '>= 0.14.0' dev: true - /markdown-to-jsx/7.1.7_react@17.0.2: - resolution: {integrity: sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - dependencies: - react: 17.0.2 - dev: true - /markdownlint-cli/0.21.0: resolution: {integrity: sha512-gvnczz3W3Wgex851/cIQ/2y8GNhY+EVK8Ael8kRd8hoSQ0ps9xjhtwPwMyJPoiYbAoPxG6vSBFISiysaAbCEZg==} engines: {node: '>=8'} @@ -29292,14 +30406,14 @@ packages: webpack-sources: 1.4.3 dev: true - /mini-css-extract-plugin/2.4.4_webpack@5.64.1: + /mini-css-extract-plugin/2.4.4_webpack@5.70.0: resolution: {integrity: sha512-UJ+aNuFQaQaECu7AamlWOBLj2cJ6XSGU4zNiqXeZ7lZLe5VD0DoSPWFbWArXueo+6FZVbgHzpX9lUIaBIDLuYg==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: schema-utils: 3.1.1 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /mini-css-extract-plugin/2.6.0_webpack@5.70.0: @@ -30977,6 +32091,15 @@ packages: /pn/1.1.0: resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} + /pnp-webpack-plugin/1.6.4_typescript@4.2.4: + resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0_typescript@4.2.4 + transitivePeerDependencies: + - typescript + dev: true + /pnp-webpack-plugin/1.6.4_typescript@4.6.2: resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} engines: {node: '>=6'} @@ -31297,10 +32420,10 @@ packages: postcss: 7.0.39 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true - /postcss-loader/6.2.0_postcss@8.3.0+webpack@5.64.1: + /postcss-loader/6.2.0_postcss@8.3.0+webpack@5.70.0: resolution: {integrity: sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -31311,7 +32434,7 @@ packages: klona: 2.0.5 postcss: 8.3.0 semver: 7.3.5 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /postcss-media-query-parser/0.2.3: @@ -31533,15 +32656,6 @@ packages: postcss: 8.3.0 dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.3.11: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.3.11 - dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.4.12: resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} @@ -31572,18 +32686,6 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.3.11: - resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.3.11 - postcss: 8.3.11 - postcss-selector-parser: 6.0.9 - postcss-value-parser: 4.2.0 - dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.4.12: resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} @@ -31613,16 +32715,6 @@ packages: postcss-selector-parser: 6.0.9 dev: true - /postcss-modules-scope/3.0.0_postcss@8.3.11: - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - postcss: 8.3.11 - postcss-selector-parser: 6.0.9 - dev: true - /postcss-modules-scope/3.0.0_postcss@8.4.12: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} @@ -31649,16 +32741,6 @@ packages: postcss: 8.3.0 dev: true - /postcss-modules-values/4.0.0_postcss@8.3.11: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - dependencies: - icss-utils: 5.1.0_postcss@8.3.11 - postcss: 8.3.11 - dev: true - /postcss-modules-values/4.0.0_postcss@8.4.12: resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} @@ -32456,6 +33538,7 @@ packages: resolution: {integrity: sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==} dependencies: read: 1.0.7 + dev: true /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -32640,6 +33723,7 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 + dev: false /qs/6.10.3: resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} @@ -32763,18 +33847,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@4.9.2 - dev: true - - /raw-loader/4.0.2_webpack@5.64.1: - resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - dependencies: - loader-utils: 2.0.2 - schema-utils: 3.1.1 - webpack: 5.64.1 + webpack: 4.46.0 dev: true /raw-loader/4.0.2_webpack@5.70.0: @@ -32848,6 +33921,7 @@ packages: dependencies: react: 17.0.2 react-dom: 17.0.2_react@17.0.2 + dev: false /react-dates/17.2.0_d0804d3726ad84366bcc42e494508e1e: resolution: {integrity: sha512-RDlerU8DdRRrlYS0MQ7Z9igPWABGLDwz6+ykBNff67RM3Sset2TDqeuOr+R5o00Ggn5U47GeLsGcSDxlZd9cHw==} @@ -32907,6 +33981,14 @@ packages: - utf-8-validate dev: true + /react-docgen-typescript/2.2.2_typescript@4.2.4: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + dependencies: + typescript: 4.2.4 + dev: true + /react-docgen-typescript/2.2.2_typescript@4.6.2: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: @@ -32966,18 +34048,6 @@ packages: prop-types: 15.8.1 dev: true - /react-draggable/4.4.4_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==} - peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' - dependencies: - clsx: 1.1.1 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - dev: true - /react-element-to-jsx-string/14.3.4: resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} peerDependencies: @@ -32989,19 +34059,6 @@ packages: react-is: 17.0.2 dev: true - /react-element-to-jsx-string/14.3.4_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-is: 17.0.2 - dev: true - /react-error-boundary/3.1.4: resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} @@ -33038,21 +34095,6 @@ packages: shallowequal: 1.1.0 dev: true - /react-helmet-async/1.2.3_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 - react-dom: ^16.6.0 || ^17.0.0 - dependencies: - '@babel/runtime': 7.17.7 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-fast-compare: 3.2.0 - shallowequal: 1.1.0 - dev: true - /react-input-autosize/3.0.0: resolution: {integrity: sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==} peerDependencies: @@ -33061,15 +34103,6 @@ packages: prop-types: 15.8.1 dev: true - /react-input-autosize/3.0.0_react@17.0.2: - resolution: {integrity: sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==} - peerDependencies: - react: ^16.3.0 || ^17.0.0 - dependencies: - prop-types: 15.8.1 - react: 17.0.2 - dev: true - /react-inspector/5.1.1: resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} peerDependencies: @@ -33080,17 +34113,6 @@ packages: prop-types: 15.8.1 dev: true - /react-inspector/5.1.1_react@17.0.2: - resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 - dependencies: - '@babel/runtime': 7.17.7 - is-dom: 1.1.0 - prop-types: 15.8.1 - react: 17.0.2 - dev: true - /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -33153,31 +34175,6 @@ packages: react-popper: 2.2.5_@popperjs+core@2.11.4 dev: true - /react-popper-tooltip/3.1.1_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 - react-dom: ^16.6.0 || ^17.0.0 - dependencies: - '@babel/runtime': 7.17.7 - '@popperjs/core': 2.11.4 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-popper: 2.2.5_2e9dd80dbd4df675244d857293d4c5b0 - dev: true - - /react-popper/2.2.5_2e9dd80dbd4df675244d857293d4c5b0: - resolution: {integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==} - peerDependencies: - '@popperjs/core': ^2.0.0 - react: ^16.8.0 || ^17 - dependencies: - '@popperjs/core': 2.11.4 - react: 17.0.2 - react-fast-compare: 3.2.0 - warning: 4.0.3 - dev: true - /react-popper/2.2.5_@popperjs+core@2.11.4: resolution: {integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==} peerDependencies: @@ -33288,18 +34285,6 @@ packages: react-router: 6.2.2 dev: true - /react-router-dom/6.2.2_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - history: 5.3.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-router: 6.2.2_react@17.0.2 - dev: true - /react-router/5.2.1: resolution: {integrity: sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==} peerDependencies: @@ -33343,15 +34328,6 @@ packages: history: 5.3.0 dev: true - /react-router/6.2.2_react@17.0.2: - resolution: {integrity: sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==} - peerDependencies: - react: '>=16.8' - dependencies: - history: 5.3.0 - react: 17.0.2 - dev: true - /react-select/3.2.0: resolution: {integrity: sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ==} peerDependencies: @@ -33368,24 +34344,6 @@ packages: react-transition-group: 4.4.2 dev: true - /react-select/3.2.0_react-dom@17.0.2+react@17.0.2: - resolution: {integrity: sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@babel/runtime': 7.17.7 - '@emotion/cache': 10.0.29 - '@emotion/core': 10.3.1_react@17.0.2 - '@emotion/css': 10.0.27 - memoize-one: 5.2.1 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-input-autosize: 3.0.0_react@17.0.2 - react-transition-group: 4.4.2_react-dom@17.0.2+react@17.0.2 - dev: true - /react-shallow-renderer/16.14.1: resolution: {integrity: sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==} peerDependencies: @@ -33426,19 +34384,6 @@ packages: refractor: 3.6.0 dev: true - /react-syntax-highlighter/13.5.3_react@17.0.2: - resolution: {integrity: sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==} - peerDependencies: - react: '>= 0.14.0' - dependencies: - '@babel/runtime': 7.17.7 - highlight.js: 10.7.3 - lowlight: 1.20.0 - prismjs: 1.27.0 - react: 17.0.2 - refractor: 3.6.0 - dev: true - /react-test-renderer/16.14.0: resolution: {integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==} peerDependencies: @@ -33498,20 +34443,6 @@ packages: - '@types/react' dev: true - /react-textarea-autosize/8.3.3_react@17.0.2: - resolution: {integrity: sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - dependencies: - '@babel/runtime': 7.17.7 - react: 17.0.2 - use-composed-ref: 1.2.1_react@17.0.2 - use-latest: 1.2.0_react@17.0.2 - transitivePeerDependencies: - - '@types/react' - dev: true - /react-transition-group/4.4.2: resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: @@ -33535,6 +34466,7 @@ packages: prop-types: 15.8.1 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 + dev: false /react-visibility-sensor/5.1.1: resolution: {integrity: sha512-cTUHqIK+zDYpeK19rzW6zF9YfT4486TIgizZW53wEZ+/GPBbK7cNS0EHyJVyHYacwFEvvHLEKfgJndbemWhB/w==} @@ -33716,6 +34648,7 @@ packages: engines: {node: '>=0.8'} dependencies: mute-stream: 0.0.8 + dev: true /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} @@ -34650,33 +35583,9 @@ packages: sass: 1.49.9 schema-utils: 3.1.1 semver: 7.3.5 - webpack: 5.70.0_webpack-cli@4.9.2 - dev: true - - /sass-loader/10.2.1_webpack@5.70.0: - resolution: {integrity: sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 - sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - dependencies: - klona: 2.0.5 - loader-utils: 2.0.2 - neo-async: 2.6.2 - schema-utils: 3.1.1 - semver: 7.3.5 webpack: 5.70.0 - /sass-loader/12.3.0_sass@1.45.0+webpack@5.64.1: + /sass-loader/12.3.0_sass@1.49.9+webpack@5.70.0: resolution: {integrity: sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -34694,8 +35603,8 @@ packages: dependencies: klona: 2.0.5 neo-async: 2.6.2 - sass: 1.45.0 - webpack: 5.64.1 + sass: 1.49.9 + webpack: 5.70.0 dev: true /sass-loader/8.0.2_sass@1.49.9+webpack@4.46.0: @@ -35233,7 +36142,7 @@ packages: loader-utils: 1.4.0 dev: true - /source-map-loader/3.0.0_webpack@5.64.1: + /source-map-loader/3.0.0_webpack@5.70.0: resolution: {integrity: sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -35242,7 +36151,7 @@ packages: abab: 2.0.5 iconv-lite: 0.6.3 source-map-js: 0.6.2 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /source-map-resolve/0.5.3: @@ -35730,7 +36639,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 2.7.1 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true /style-loader/2.0.0_webpack@5.70.0: @@ -35741,16 +36650,16 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 dev: true - /style-loader/3.3.1_webpack@5.64.1: + /style-loader/3.3.1_webpack@5.70.0: resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.64.1 + webpack: 5.70.0 dev: true /style-search/0.1.0: @@ -36097,7 +37006,7 @@ packages: resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} dev: false - /stylus-loader/6.2.0_stylus@0.55.0+webpack@5.64.1: + /stylus-loader/6.2.0_stylus@0.55.0+webpack@5.70.0: resolution: {integrity: sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -36108,7 +37017,7 @@ packages: klona: 2.0.5 normalize-path: 3.0.0 stylus: 0.55.0 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /stylus/0.55.0: @@ -36471,7 +37380,7 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.10.0_acorn@7.4.1 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 webpack-sources: 1.4.3 transitivePeerDependencies: - acorn @@ -36491,38 +37400,12 @@ packages: serialize-javascript: 5.0.1 source-map: 0.6.1 terser: 5.10.0 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 webpack-sources: 1.4.3 transitivePeerDependencies: - acorn dev: true - /terser-webpack-plugin/5.2.5_acorn@8.5.0+webpack@5.64.1: - resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - jest-worker: 27.3.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 - source-map: 0.6.1 - terser: 5.10.0_acorn@8.5.0 - webpack: 5.64.1 - transitivePeerDependencies: - - acorn - dev: true - /terser-webpack-plugin/5.2.5_acorn@8.7.0+webpack@5.70.0: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} engines: {node: '>= 10.13.0'} @@ -36549,32 +37432,6 @@ packages: - acorn dev: true - /terser-webpack-plugin/5.2.5_webpack@5.64.1: - resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - jest-worker: 27.3.1 - schema-utils: 3.1.1 - serialize-javascript: 6.0.0 - source-map: 0.6.1 - terser: 5.10.0 - webpack: 5.64.1 - transitivePeerDependencies: - - acorn - dev: true - /terser-webpack-plugin/5.2.5_webpack@5.70.0: resolution: {integrity: sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==} engines: {node: '>= 10.13.0'} @@ -36596,7 +37453,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 transitivePeerDependencies: - acorn dev: true @@ -36652,22 +37509,6 @@ packages: source-map-support: 0.5.20 dev: true - /terser/5.10.0_acorn@8.5.0: - resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} - engines: {node: '>=10'} - hasBin: true - peerDependencies: - acorn: ^8.5.0 - peerDependenciesMeta: - acorn: - optional: true - dependencies: - acorn: 8.5.0 - commander: 2.20.3 - source-map: 0.7.3 - source-map-support: 0.5.20 - dev: true - /terser/5.10.0_acorn@8.7.0: resolution: {integrity: sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==} engines: {node: '>=10'} @@ -37087,7 +37928,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-loader/9.2.6_typescript@4.2.4+webpack@5.64.1: + /ts-loader/9.2.6_typescript@4.2.4+webpack@5.70.0: resolution: {integrity: sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -37099,7 +37940,7 @@ packages: micromatch: 4.0.4 semver: 7.3.5 typescript: 4.2.4 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /ts-node/10.5.0_e0d88945dfc7787883e9c330c9196a96: @@ -37149,6 +37990,18 @@ packages: yn: 3.1.1 dev: true + /ts-pnp/1.2.0_typescript@4.2.4: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.2.4 + dev: true + /ts-pnp/1.2.0_typescript@4.6.2: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} @@ -37461,7 +38314,7 @@ packages: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} dependencies: - qs: 6.10.1 + qs: 6.10.3 dev: true /uniq/1.0.1: @@ -37698,7 +38551,7 @@ packages: loader-utils: 2.0.2 mime-types: 2.1.34 schema-utils: 3.1.1 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true /url-parse-lax/1.0.0: @@ -37728,14 +38581,6 @@ packages: react: ^16.8.0 || ^17.0.0 dev: true - /use-composed-ref/1.2.1_react@17.0.2: - resolution: {integrity: sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - dependencies: - react: 17.0.2 - dev: true - /use-isomorphic-layout-effect/1.1.1: resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} peerDependencies: @@ -37746,18 +38591,6 @@ packages: optional: true dev: true - /use-isomorphic-layout-effect/1.1.1_react@17.0.2: - resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - react: 17.0.2 - dev: true - /use-latest/1.2.0: resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==} peerDependencies: @@ -37770,19 +38603,6 @@ packages: use-isomorphic-layout-effect: 1.1.1 dev: true - /use-latest/1.2.0_react@17.0.2: - resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - react: 17.0.2 - use-isomorphic-layout-effect: 1.1.1_react@17.0.2 - dev: true - /use-memo-one/1.1.2: resolution: {integrity: sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==} peerDependencies: @@ -38270,7 +39090,7 @@ packages: mime: 2.5.2 mkdirp: 0.5.5 range-parser: 1.2.1 - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 webpack-log: 2.0.0 dev: true @@ -38286,10 +39106,10 @@ packages: mime-types: 2.1.34 range-parser: 1.2.1 schema-utils: 3.1.1 - webpack: 5.70.0_webpack-cli@4.9.2 + webpack: 5.70.0 dev: true - /webpack-dev-middleware/5.2.1_webpack@5.64.1: + /webpack-dev-middleware/5.2.1_webpack@5.70.0: resolution: {integrity: sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -38300,10 +39120,10 @@ packages: mime-types: 2.1.34 range-parser: 1.2.1 schema-utils: 3.1.1 - webpack: 5.64.1 + webpack: 5.70.0 dev: true - /webpack-dev-server/4.5.0_webpack@5.64.1: + /webpack-dev-server/4.5.0_webpack@5.70.0: resolution: {integrity: sha512-Ss4WptsUjYa+3hPI4iYZYEc8FrtnfkaPrm5WTjk9ux5kiCS718836srs0ppKMHRaCHP5mQ6g4JZGcfDdGbCjpQ==} engines: {node: '>= 12.13.0'} hasBin: true @@ -38337,8 +39157,8 @@ packages: spdy: 4.0.2 strip-ansi: 7.0.1 url: 0.11.0 - webpack: 5.64.1 - webpack-dev-middleware: 5.2.1_webpack@5.64.1 + webpack: 5.70.0 + webpack-dev-middleware: 5.2.1_webpack@5.70.0 ws: 8.2.3 transitivePeerDependencies: - bufferutil @@ -38353,7 +39173,7 @@ packages: peerDependencies: webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 dependencies: - webpack: 4.46.0_webpack-cli@4.9.2 + webpack: 4.46.0 dev: true /webpack-fix-style-only-entries/0.6.1: @@ -38439,7 +39259,7 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - /webpack-subresource-integrity/1.5.2_webpack@5.64.1: + /webpack-subresource-integrity/1.5.2_webpack@5.70.0: resolution: {integrity: sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==} engines: {node: '>=4'} peerDependencies: @@ -38449,7 +39269,7 @@ packages: html-webpack-plugin: optional: true dependencies: - webpack: 5.64.1 + webpack: 5.70.0 webpack-sources: 1.4.3 dev: true @@ -38502,6 +39322,44 @@ packages: webpack-sources: 1.4.3 dev: true + /webpack/4.46.0: + resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.3 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.5 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + dev: true + /webpack/4.46.0_webpack-cli@3.3.12: resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} engines: {node: '>=6.11.5'} @@ -38537,89 +39395,10 @@ packages: tapable: 1.1.3 terser-webpack-plugin: 1.4.5_webpack@4.46.0 watchpack: 1.7.5 - webpack-cli: 3.3.12_webpack@4.46.0 + webpack-cli: 3.3.12_webpack@5.70.0 webpack-sources: 1.4.3 dev: true - /webpack/4.46.0_webpack-cli@4.9.2: - resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} - engines: {node: '>=6.11.5'} - hasBin: true - peerDependencies: - webpack-cli: '*' - webpack-command: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true - dependencies: - '@webassemblyjs/ast': 1.9.0 - '@webassemblyjs/helper-module-context': 1.9.0 - '@webassemblyjs/wasm-edit': 1.9.0 - '@webassemblyjs/wasm-parser': 1.9.0 - acorn: 6.4.2 - ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - chrome-trace-event: 1.0.3 - enhanced-resolve: 4.5.0 - eslint-scope: 4.0.3 - json-parse-better-errors: 1.0.2 - loader-runner: 2.4.0 - loader-utils: 1.4.0 - memory-fs: 0.4.1 - micromatch: 3.1.10 - mkdirp: 0.5.5 - neo-async: 2.6.2 - node-libs-browser: 2.2.1 - schema-utils: 1.0.0 - tapable: 1.1.3 - terser-webpack-plugin: 1.4.5_webpack@4.46.0 - watchpack: 1.7.5 - webpack-cli: 4.9.2_b04de8011015a40c567469bf79798750 - webpack-sources: 1.4.3 - dev: true - - /webpack/5.64.1: - resolution: {integrity: sha512-b4FHmRgaaAjP+aVOVz41a9Qa5SmkUPQ+u8FntTQ1roPHahSComB6rXnLwc976VhUY4CqTaLu5mCswuHiNhOfVw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.1 - '@types/estree': 0.0.50 - '@webassemblyjs/ast': 1.11.1 - '@webassemblyjs/wasm-edit': 1.11.1 - '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.5.0 - acorn-import-assertions: 1.8.0_acorn@8.5.0 - browserslist: 4.18.1 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.8.3 - es-module-lexer: 0.9.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.9 - json-parse-better-errors: 1.0.2 - loader-runner: 4.2.0 - mime-types: 2.1.34 - neo-async: 2.6.2 - schema-utils: 3.1.1 - tapable: 2.2.1 - terser-webpack-plugin: 5.2.5_acorn@8.5.0+webpack@5.64.1 - watchpack: 2.2.0 - webpack-sources: 3.2.2 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - /webpack/5.70.0: resolution: {integrity: sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==} engines: {node: '>=10.13.0'} @@ -38886,13 +39665,13 @@ packages: errno: 0.1.8 dev: true - /worker-plugin/3.2.0_webpack@5.64.1: + /worker-plugin/3.2.0_webpack@5.70.0: resolution: {integrity: sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==} peerDependencies: webpack: '>= 4' dependencies: loader-utils: 1.4.0 - webpack: 5.64.1 + webpack: 5.70.0 dev: true /worker-rpc/0.1.1: diff --git a/plugins/woocommerce-admin/storybook/.storybook/main.js b/tools/storybook/.storybook/main.js similarity index 88% rename from plugins/woocommerce-admin/storybook/.storybook/main.js rename to tools/storybook/.storybook/main.js index 5e613f04411..fa574a5461d 100644 --- a/plugins/woocommerce-admin/storybook/.storybook/main.js +++ b/tools/storybook/.storybook/main.js @@ -6,10 +6,10 @@ module.exports = { }, stories: [ // WooCommerce Admin / @woocommerce/components components - '../../../../packages/js/components/src/**/stories/*.@(js|tsx)', + '../../../packages/js/components/src/**/stories/*.@(js|tsx)', // WooCommerce Admin / @woocommerce/experimental components - '../../../../packages/js/experimental/src/**/stories/*.@(js|tsx)', - '../../client/**/stories/*.js', + '../../../packages/js/experimental/src/**/stories/*.@(js|tsx)', + '../../../plugins/woocommerce-admin/client/**/stories/*.js', ], addons: [ '@storybook/addon-docs', diff --git a/plugins/woocommerce-admin/storybook/.storybook/preview-head.html b/tools/storybook/.storybook/preview-head.html similarity index 100% rename from plugins/woocommerce-admin/storybook/.storybook/preview-head.html rename to tools/storybook/.storybook/preview-head.html diff --git a/plugins/woocommerce-admin/bin/import-wp-css-storybook.sh b/tools/storybook/import-wp-css-storybook.sh similarity index 100% rename from plugins/woocommerce-admin/bin/import-wp-css-storybook.sh rename to tools/storybook/import-wp-css-storybook.sh diff --git a/plugins/woocommerce-admin/storybook/manager.js b/tools/storybook/manager.js similarity index 100% rename from plugins/woocommerce-admin/storybook/manager.js rename to tools/storybook/manager.js diff --git a/plugins/woocommerce-admin/storybook/preview.js b/tools/storybook/preview.js similarity index 100% rename from plugins/woocommerce-admin/storybook/preview.js rename to tools/storybook/preview.js diff --git a/plugins/woocommerce-admin/storybook/setting.mock.js b/tools/storybook/setting.mock.js similarity index 100% rename from plugins/woocommerce-admin/storybook/setting.mock.js rename to tools/storybook/setting.mock.js diff --git a/plugins/woocommerce-admin/storybook/tsconfig.json b/tools/storybook/tsconfig.json similarity index 100% rename from plugins/woocommerce-admin/storybook/tsconfig.json rename to tools/storybook/tsconfig.json diff --git a/plugins/woocommerce-admin/storybook/webpack.config.js b/tools/storybook/webpack.config.js similarity index 63% rename from plugins/woocommerce-admin/storybook/webpack.config.js rename to tools/storybook/webpack.config.js index dfb3dc58ca9..7751b5a6bfd 100644 --- a/plugins/woocommerce-admin/storybook/webpack.config.js +++ b/tools/storybook/webpack.config.js @@ -7,7 +7,7 @@ const CopyWebpackPlugin = require( 'copy-webpack-plugin' ); /** * External dependencies */ -const wcAdminWebpackConfig = require( '../webpack.config.js' ); +const wcAdminWebpackConfig = require( '../../plugins/woocommerce-admin/webpack.config.js' ); const wcAdminPackages = [ 'components', @@ -25,21 +25,6 @@ module.exports = ( storybookConfig ) => { storybookConfig.module.rules = [ ...storybookConfig.module.rules, ...wcAdminWebpackConfig.module.rules, - // We need to expose packages in "peerDependencies" to the global scope for @woocommerce/* to resolve packages. - { - test: require.resolve( 'moment' ), - loader: 'expose-loader', - options: { - exposes: [ 'moment' ], - }, - }, - { - test: require.resolve( '@wordpress/data' ), - loader: 'expose-loader', - options: { - exposes: [ '_wp_data' ], - }, - }, ]; storybookConfig.resolve.alias = wcAdminWebpackConfig.resolve.alias; @@ -47,7 +32,7 @@ module.exports = ( storybookConfig ) => { wcAdminPackages.forEach( ( name ) => { storybookConfig.resolve.alias[ `@woocommerce/${ name }` - ] = path.resolve( __dirname, `../../../packages/js/${ name }/src` ); + ] = path.resolve( __dirname, `../../packages/js/${ name }/src` ); } ); storybookConfig.resolve.alias[ '@woocommerce/settings' ] = path.resolve( @@ -56,7 +41,7 @@ module.exports = ( storybookConfig ) => { ); storybookConfig.resolve.modules = [ - path.join( __dirname, '../client' ), + path.join( __dirname, '../../plugins/woocommerce-admin/client' ), 'node_modules', ]; @@ -71,14 +56,14 @@ module.exports = ( storybookConfig ) => { { from: path.resolve( __dirname, - `../../../packages/js/components/build-style/*.css` + `../../packages/js/components/build-style/*.css` ), to: `./component-css/[name][ext]`, }, { from: path.resolve( __dirname, - `../../../packages/js/experimental/build-style/*.css` + `../../packages/js/experimental/build-style/*.css` ), to: `./experimental-css/[name][ext]`, }, @@ -86,10 +71,5 @@ module.exports = ( storybookConfig ) => { } ) ); - storybookConfig.externals = { - '@wordpress/data': '_wp_data', - moment: 'moment', - }; - return storybookConfig; }; diff --git a/plugins/woocommerce-admin/storybook/woocommerce_logo.png b/tools/storybook/woocommerce_logo.png similarity index 100% rename from plugins/woocommerce-admin/storybook/woocommerce_logo.png rename to tools/storybook/woocommerce_logo.png diff --git a/tools/storybook/wordpress/css/about-rtl.css b/tools/storybook/wordpress/css/about-rtl.css new file mode 100644 index 00000000000..2c5efe2afbd --- /dev/null +++ b/tools/storybook/wordpress/css/about-rtl.css @@ -0,0 +1,1473 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 22.0 - About Pages + + 1.0 Global: About, Credits, Freedoms, Privacy + 1.1 Layout + 1.2 Typography & Elements + 1.3 Header + 2.0 Credits Page + 3.0 Freedoms Page + x.2.0 Legacy About Styles: Global + x.2.1 Typography + x.2.2 Structure + x.2.3 Point Releases + x.3.0 Legacy About Styles: About Page + x.3.1 Typography + x.3.2 Structure + x.4.0 Legacy About Styles: Credits & Freedoms Pages + x.5.0 Legacy About Styles: Media Queries +------------------------------------------------------------------------------*/ + +.about__container { + /* Section backgrounds */ + --background: transparent; + --subtle-background: #def; + + /* Main text color */ + --text: #000; + --text-light: #fff; + + /* Accent colors: used in header, on special classes. */ + --accent-1: #3858e9; /* Accent background, link color */ + --accent-2: #3858e9; /* Header background */ + + /* Navigation colors. */ + --nav-background: #fff; + --nav-border: transparent; + --nav-color: var(--text); + --nav-current: var(--accent-1); + + --gap: 2rem; +} + +/*------------------------------------------------------------------------------ + 1.0 - Global: About, Credits, Freedoms, Privacy +------------------------------------------------------------------------------*/ + +.about-php, +.credits-php, +.freedoms-php, +.privacy-php { + background: #f0f7ff; +} + +.about-php #wpcontent, +.credits-php #wpcontent, +.freedoms-php #wpcontent, +.privacy-php #wpcontent { + background: linear-gradient(-180deg, #fff 50%, #f0f7ff 100%); + padding: 0 24px; +} + +@media screen and (max-width: 782px) { + .about-php.auto-fold #wpcontent, + .credits-php.auto-fold #wpcontent, + .freedoms-php.auto-fold #wpcontent, + .privacy-php.auto-fold #wpcontent { + padding-right: 24px; + } +} + +.about__container { + max-width: 1000px; + margin: 24px auto; + clear: both; +} + +.about__container .alignleft { + float: right; +} + +.about__container .alignright { + float: left; +} + +.about__container .aligncenter { + text-align: center; +} + +.about__container .is-vertically-aligned-top { + align-self: start; +} + +.about__container .is-vertically-aligned-center { + align-self: center; +} + +.about__container .is-vertically-aligned-bottom { + align-self: end; +} + +.about__section { + background: var(--background); + clear: both; +} + +.about__container .has-accent-background-color { + background-color: var(--accent-1); + color: var(--text-light); +} + +.about__container .has-accent-background-color a { + color: var(--text-light); +} + +.about__container .has-transparent-background-color { + background-color: transparent; +} + +.about__container .has-accent-color { + color: var(--accent-1); +} + +.about__container .has-border { + border: 3px solid currentColor; +} + +.about__container .has-subtle-background-color { + background-color: var(--subtle-background); +} + +.about__container .has-background-image { + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +/* 1.1 - Layout */ + +.about__section { + margin: 0 0 var(--gap); +} + +.about__section .column:not(.is-edge-to-edge) { + padding: var(--gap); +} + +.about__section + .about__section .is-section-header { + padding-bottom: var(--gap); +} + +.about__section .column[class*="background-color"], +.about__section:where([class*="background-color"]) .column, +.about__section .column.has-border { + padding-top: var(--gap); + padding-bottom: var(--gap); +} + +.about__section .column p:first-of-type { + margin-top: 0; +} + +.about__section .column p:last-of-type { + margin-bottom: 0; +} + +.about__section .has-text-columns { + columns: 2; + column-gap: calc(var(--gap) * 2); +} + +.about__section .is-section-header { + margin-bottom: 0; + padding: var(--gap) var(--gap) 0; +} + +.about__section .is-section-header p:last-child { + margin-bottom: 0; +} + +/* Section header is alone in a container. */ +.about__section .is-section-header:first-child:last-child { + padding: 0; +} + +.about__section.is-feature { + padding: var(--gap); +} + +.about__section.is-feature p { + margin: 0; +} + +.about__section.is-feature p + p { + margin-top: calc(var(--gap) / 2); +} + +.about__section.has-1-column { + margin-right: auto; + margin-left: auto; + max-width: 36em; +} + +.about__section.has-2-columns, +.about__section.has-3-columns, +.about__section.has-4-columns, +.about__section.has-overlap-style { + display: grid; +} + +.about__section.has-gutters { + gap: var(--gap); + margin-bottom: calc(var(--gap) * 2); +} + +.about__section.has-2-columns { + grid-template-columns: 1fr 1fr; +} + +.about__section.has-2-columns.is-wider-right { + grid-template-columns: 2fr 3fr; +} + +.about__section.has-2-columns.is-wider-left { + grid-template-columns: 3fr 2fr; +} + +.about__section.has-2-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 2; + grid-column-end: span 2; +} + +.about__section.has-2-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; +} + +.about__section.has-2-columns .column:nth-of-type(2n) { + grid-column-start: 2; +} + +.about__section.has-3-columns { + grid-template-columns: repeat(3, 1fr); +} + +.about__section.has-3-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-3-columns .column:nth-of-type(3n+1) { + grid-column-start: 1; +} + +.about__section.has-3-columns .column:nth-of-type(3n+2) { + grid-column-start: 2; +} + +.about__section.has-3-columns .column:nth-of-type(3n) { + grid-column-start: 3; +} + +.about__section.has-4-columns { + grid-template-columns: repeat(4, 1fr); +} + +.about__section.has-4-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 4; + grid-column-end: span 4; +} + +.about__section.has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; +} + +.about__section.has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; +} + +.about__section.has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 3; +} + +.about__section.has-4-columns .column:nth-of-type(4n) { + grid-column-start: 4; +} + +/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ +.about__section.has-2-columns .is-section-header ~ .column, +.about__section.has-3-columns .is-section-header ~ .column, +.about__section.has-4-columns .is-section-header ~ .column, +.about__section.has-overlap-style .is-section-header ~ .column { + grid-row-start: 2; +} + +.about__section.has-overlap-style { + grid-template-columns: repeat(7, 1fr); +} + +.about__section.has-overlap-style .column { + grid-row-start: 1; +} + +.about__section.has-overlap-style .column:nth-of-type(2n+1) { + grid-column-start: 2; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-overlap-style .column:nth-of-type(2n) { + grid-column-start: 4; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-overlap-style .column.is-top-layer { + z-index: 1; +} + +@media screen and (max-width: 782px) { + .about__section.has-2-columns.is-wider-right, + .about__section.has-2-columns.is-wider-left, + .about__section.has-3-columns { + display: block; + margin-bottom: calc(var(--gap) / 2); + } + + .about__section .column:not(.is-edge-to-edge) { + padding-top: var(--gap); + padding-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters.is-wider-right, + .about__section.has-2-columns.has-gutters.is-wider-left, + .about__section.has-3-columns.has-gutters { + margin-bottom: calc(var(--gap) * 2); + } + + .about__section.has-2-columns.has-gutters .column, + .about__section.has-2-columns.has-gutters .column, + .about__section.has-3-columns.has-gutters .column { + margin-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters .column:last-child, + .about__section.has-2-columns.has-gutters .column:last-child, + .about__section.has-3-columns.has-gutters .column:last-child { + margin-bottom: 0; + } + + .about__section.has-3-columns .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns { + grid-template-columns: repeat(2, 1fr); + } + + .about__section.has-4-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; + } + + .about__section.has-4-columns .column:nth-of-type(2n) { + grid-column-start: 2; + } + + .about__section.has-4-columns .column:nth-of-type(4n+3), + .about__section.has-4-columns .column:nth-of-type(4n) { + grid-row-start: 2; + } + + .about__section.has-4-columns .is-section-header { + -ms-grid-column-span: 2; + grid-column-end: span 2; + } + + .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n+3), + .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n) { + grid-row-start: 3; + } + + .about__section.has-overlap-style { + grid-template-columns: 1fr; + } + + /* At this size, the two columns fully overlap */ + .about__section.has-overlap-style .column.column { + grid-column-start: 1; + -ms-grid-column-span: 1; + grid-column-end: 2; + grid-row-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + } +} + +@media screen and (max-width: 600px) { + .about__section.has-2-columns { + display: block; + margin-bottom: var(--gap); + } + + .about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-2-columns.has-gutters { + margin-bottom: calc(var(--gap) * 2); + } + + .about__section.has-2-columns.has-gutters .column { + margin-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters .column:last-child { + margin-bottom: 0; + } +} + +@media screen and (max-width: 480px) { + .about__section.is-feature .column { + padding: 0; + } + + .about__section.has-4-columns { + display: block; + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns.has-gutters .column { + margin-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns.has-gutters .column:last-child { + margin-bottom: 0; + } + + .about__section.has-4-columns .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } +} + +/* 1.2 - Typography & Elements */ + +.about__container { + line-height: 1.4; + color: var(--text); +} + +.about__container h1 { + padding: 0; + color: inherit; +} + +.about__container h1, +.about__container h2, +.about__container h3.is-larger-heading { + margin-top: 0; + margin-bottom: 0.5em; + font-size: 2em; + line-height: 1.2; + font-weight: 700; +} + +.about__container h3, +.about__container h1.is-smaller-heading, +.about__container h2.is-smaller-heading { + margin-top: 0; + font-size: 1.6em; + line-height: 1.3; + font-weight: 400; +} + +.about__container p { + font-size: inherit; + line-height: inherit; +} + +.about__container p.is-subheading { + margin-top: 0; + font-size: 1.8em; +} + +.about__section a { + color: var(--accent-1); + text-decoration: underline; +} + +.about__section a:hover, +.about__section a:active, +.about__section a:focus { + color: var(--accent-1); + text-decoration: none; +} + +.wp-credits-list a { + text-decoration: none; +} + +.wp-credits-list a:hover, +.wp-credits-list a:active, +.wp-credits-list a:focus { + text-decoration: underline; +} + +.about__container ul { + list-style: disc; + margin-right: calc(var(--gap) / 2); +} + +.about__container img { + margin: 0; + max-width: 100%; + vertical-align: middle; +} + +.about__container .about__image { + margin: 0; +} + +.about__container .about__image img { + max-width: 100%; + width: 100%; + height: auto; +} + +.about__container .about__image figcaption { + margin-top: 0.5em; + text-align: center; +} + +.about__container .about__image .wp-video { + margin-right: auto; + margin-left: auto; +} + +.about__container .about__image + h3 { + margin-top: 1.5em; +} + +.about__container hr { + margin: 0; + height: var(--gap); + border: none; +} + +.about__container hr.is-small { + height: calc(var(--gap) / 4); +} + +.about__container hr.is-large { + height: calc(var(--gap) * 2); + margin: calc(var(--gap) / 2) auto; +} + +.about__container div.updated, +.about__container div.error, +.about__container .notice { + display: none !important; +} + +.about__section { + font-size: 1.2em; +} + +.about__section.is-feature { + font-size: 1.6em; +} + +@media screen and (max-width: 480px) { + .about__section.is-feature { + font-size: 1.4em; + } + + .about__container h1, + .about__container h2, + .about__container h3.is-larger-heading { + font-size: 2em; + } +} + +/* 1.3 - Header */ + +.about__header { + position: relative; + margin-bottom: var(--gap); + padding-top: 0; + background-image: url('../images/about-texture.png'); + background-color: var(--accent-2); + background-size: 500px 500px; + background-blend-mode: overlay; + color: var(--text-light); +} + +.about__header::before { + content: ""; + position: absolute; + top: 0; + left: 64px; + z-index: 0; + width: 300px; + height: 382px; + background: url(../images/about-header-about.svg) no-repeat center; + background-size: contain; +} + +.credits-php .about__header::before { + top: auto; + bottom: 70px; + height: 310px; + background-image: url('../images/about-header-credits.svg'); +} + +.freedoms-php .about__header::before { + top: calc(50% - 182px); + left: 32px; + width: 375px; + height: 300px; + background-image: url('../images/about-header-freedoms.svg'); +} + +.privacy-php .about__header::before { + top: auto; + bottom: -16px; + background-image: url('../images/about-header-privacy.svg'); +} + +.about__header-image { + margin: 0 var(--gap) 3em; +} + +.about__header-title { + box-sizing: border-box; + /* 380px = 300px (balloon width) + 64px (offset from edge) + 16px (spacing). */ + padding: 6rem 0 0 380px; + margin: 0 2rem; +} + +.about__header-title h1 { + margin: 0 0 0.5rem; + padding: 0; + font-size: 4.5rem; + line-height: 1; + font-weight: 400; +} + +.about__header-text { + box-sizing: border-box; + margin: 0 0 7rem; + /* 380px = 300px (balloon width) + 64px (offset from edge) + 16px (spacing). */ + padding: 0 2rem 0 380px; + font-size: 1.6rem; + line-height: 1.15; +} + +.freedoms-php .about__header-title, +.freedoms-php .about__header-text { + /* 423px = 375px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding-left: 423px; + margin-left: 0; +} + +.about__header-navigation { + position: relative; + z-index: 1; + display: flex; + justify-content: center; + padding-top: 0; + background: var(--nav-background); + color: var(--nav-color); + border-bottom: 3px solid var(--nav-border); +} + +.about__header-navigation .nav-tab { + margin-right: 0; + padding: calc(var(--gap) * 0.75) var(--gap); + float: none; + font-size: 1.4em; + line-height: 1; + border-width: 0 0 3px; + border-style: solid; + border-color: transparent; + background: transparent; + color: inherit; +} + +.about__header-navigation .nav-tab:hover, +.about__header-navigation .nav-tab:active { + background-color: var(--nav-current); + color: var(--text-light); +} + +.about__header-navigation .nav-tab-active { + margin-bottom: -3px; + color: var(--nav-current); + border-width: 0 0 6px; + border-color: var(--nav-current); +} + +.about__header-navigation .nav-tab-active:hover, +.about__header-navigation .nav-tab-active:active { + background-color: var(--nav-current); + color: var(--text-light); + border-color: var(--nav-current); +} + +@media screen and (max-width: 960px){ + .about__header-title h1 { + font-size: 4.8em; + } +} + +@media screen and (max-width: 782px) { + .about__header::before { + width: 240px; + height: 305px; + left: 32px; + } + + .credits-php .about__header::before { + height: 248px; + } + + .freedoms-php .about__header::before { + top: calc(50% - 132px); + height: 192px; + width: 240px; + } + + .privacy-php .about__header::before { + bottom: 0; + height: 280px; + } + + .about__container .about__header-text { + font-size: 1.4em; + } + + .about__header-container { + display: block; + } + + .about__header-title, + .about__header-text { + /* 288px = 240px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding-left: 288px !important; + } + + .about__header-title, + .about__header-image { + margin-right: calc(var(--gap) / 2); + margin-left: calc(var(--gap) / 2); + } + + .about__header-text { + margin-top: 0; + margin-left: 0; + padding-right: calc(var(--gap) / 2); + } + + .about__header-navigation .nav-tab { + margin-top: 0; + margin-left: 0; + padding-right: calc(var(--gap) / 2); + padding-left: calc(var(--gap) / 2); + } +} + +@media screen and (max-width: 600px) { + .about__header::before { + display: none; + } + + .about__header-title, + .about__header-text { + padding-left: calc(var(--gap) / 2) !important; + } +} + +@media screen and (max-width: 480px) { + .about__header-title p { + font-size: 2.4em; + } + + .about__header-title { + padding-top: 2rem; + } + + .about__header-text { + margin-bottom: 2rem; + } + + .about__header-navigation { + display: block; + } + + .about__header-navigation .nav-tab { + display: block; + margin-bottom: 0; + padding: calc(var(--gap) / 2); + border-right-width: 6px; + border-bottom: none; + } + + .about__header-navigation .nav-tab-active { + border-bottom: none; + border-right-width: 6px; + } +} + + +/*------------------------------------------------------------------------------ + 2.0 - Credits Page +------------------------------------------------------------------------------*/ + +.about__section .wp-people-group-title { + margin-bottom: calc(var(--gap) * 2); + text-align: center; + +} + +.about__section .wp-people-group { + margin: 0; + display: flex; + flex-wrap: wrap; +} + +.about__section .wp-person { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + margin-bottom: var(--gap); + width: 25%; + text-align: center; +} + +.about__section .compact .wp-person { + height: auto; + width: 20%; +} + +.about__section .wp-person-avatar { + display: block; + margin: 0 auto calc(var(--gap) / 2); + width: 140px; + height: 140px; + border-radius: 100%; + overflow: hidden; + background: var(--accent-1); +} + +.about__section .wp-person .gravatar { + width: 140px; + height: 140px; + filter: grayscale(100%); + mix-blend-mode: screen; +} + +.about__section .compact .wp-person-avatar, +.about__section .compact .wp-person .gravatar { + width: 80px; + height: 80px; +} + +.about__section .wp-person .web { + font-size: 1.4em; + font-weight: 600; + text-decoration: none; +} + +.about__section .wp-person .web:hover { + text-decoration: underline; +} + +.about__section .compact .wp-person .web { + font-size: 1.2em; +} + +.about__section .wp-person .title { + display: block; + margin-top: 0.5em; +} + +@media screen and (max-width: 782px) { + .about__section .wp-person { + width: 33%; + } + + .about__section .compact .wp-person { + width: 25%; + } + + .about__section .wp-person-avatar, + .about__section .wp-person .gravatar { + width: 120px; + height: 120px; + } +} + +@media screen and (max-width: 600px) { + .about__section .wp-person { + width: 50%; + } + + .about__section .compact .wp-person { + width: 33%; + } + + .about__section .wp-person .web { + font-size: 1.2em; + } +} + +@media screen and (max-width: 480px) { + .about__section .wp-person { + min-width: 100%; + } + + .about__section .wp-person .web { + font-size: 1em; + } + + .about__section .compact .wp-person .web { + font-size: 1em; + } +} + + +/*------------------------------------------------------------------------------ + 3.0 - Freedoms Page +------------------------------------------------------------------------------*/ + +.about__section .column .freedom-image { + margin-bottom: var(--gap); + max-height: 140px; +} + + +/*------------------------------------------------------------------------------ + x.2.0 - Legacy About Styles: Global +------------------------------------------------------------------------------*/ + +.about-wrap { + position: relative; + margin: 25px 20px 0 40px; + max-width: 1050px; /* readability */ + font-size: 15px; +} + +.about-wrap.full-width-layout { + max-width: 1200px; +} + +.about-wrap-content { + max-width: 1050px; +} + +.about-wrap div.updated, +.about-wrap div.error, +.about-wrap .notice { + display: none !important; +} + +.about-wrap hr { + border: 0; + height: 0; + margin: 3em 0 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +.about-wrap img { + margin: 0; + width: 100%; + height: auto; + vertical-align: middle; +} + +.about-wrap .inline-svg img { + max-width: 100%; + width: auto; + height: auto; +} + +.about-wrap video { + margin: 1.5em auto; +} + +/* WordPress Version Badge */ + +.wp-badge { + background: #0073aa url(../images/w-logo-white.png?ver=20160308) no-repeat; + background-position: center 25px; + background-size: 80px 80px; + color: #fff; + font-size: 14px; + text-align: center; + font-weight: 600; + margin: 5px 0 0; + padding-top: 120px; + height: 40px; + display: inline-block; + width: 140px; + text-rendering: optimizeLegibility; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.svg .wp-badge { + background-image: url(../images/wordpress-logo-white.svg?ver=20160308); +} + +.about-wrap .wp-badge { + position: absolute; + top: 0; + left: 0; +} + +/* Tabs */ + +.about-wrap .nav-tab { + padding-left: 15px; + padding-right: 15px; + font-size: 18px; + line-height: 1.33333333; +} + +/* x.2.1 - Typography */ + +.about-wrap h1 { + margin: 0.2em 0 0 200px; + padding: 0; + color: #32373c; + line-height: 1.2; + font-size: 2.8em; + font-weight: 400; +} + +.about-wrap h2 { + margin: 40px 0 0.6em; + font-size: 2.7em; + line-height: 1.3; + font-weight: 300; + text-align: center; +} + +.about-wrap h3 { + margin: 1.25em 0 0.6em; + font-size: 1.4em; + line-height: 1.5; +} + +.about-wrap h4 { + font-size: 16px; + color: #23282d; +} + +.about-wrap p { + line-height: 1.5; + font-size: 16px; +} + +.about-wrap code, +.about-wrap ol li p { + font-size: 14px; + font-weight: 400; +} + +.about-wrap figcaption { + font-size: 13px; + text-align: center; + color: white; + text-overflow: ellipsis; +} + +.about-wrap .about-description, +.about-wrap .about-text { + margin-top: 1.4em; + font-weight: 400; + line-height: 1.6; + font-size: 19px; +} + +.about-wrap .about-text { + margin: 1em 0 1em 200px; + color: #555d66; +} + +/* x.2.2 - Structure */ + +.about-wrap .has-1-columns, +.about-wrap .has-2-columns, +.about-wrap .has-3-columns, +.about-wrap .has-4-columns { + display: grid; + max-width: 800px; + margin-top: 40px; + margin-right: auto; + margin-left: auto; +} + +.about-wrap .column { + margin-left: 20px; + margin-right: 20px; +} + +.about-wrap .is-wide { + max-width: 760px; +} + +.about-wrap .is-fullwidth { + max-width: 100%; +} + +.about-wrap .has-1-columns { + display: block; + max-width: 680px; + margin: 0 auto 40px; +} + +.about-wrap .has-2-columns { + grid-template-columns: 1fr 1fr; +} + +.about-wrap .has-2-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; +} + +.about-wrap .has-2-columns .column:nth-of-type(2n) { + grid-column-start: 2; +} + +.about-wrap .has-2-columns.is-wider-right { + grid-template-columns: 1fr 2fr; +} + +.about-wrap .has-2-columns.is-wider-left { + grid-template-columns: 2fr 1fr; +} + +.about-wrap .has-3-columns { + grid-template-columns: repeat(3, 1fr); +} + +.about-wrap .has-3-columns .column:nth-of-type(3n+1) { + grid-column-start: 1; +} + +.about-wrap .has-3-columns .column:nth-of-type(3n+2) { + grid-column-start: 2; +} + +.about-wrap .has-3-columns .column:nth-of-type(3n) { + grid-column-start: 3; +} + +.about-wrap .has-4-columns { + grid-template-columns: repeat(4, 1fr); +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 3; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n) { + grid-column-start: 4; +} + +.about-wrap .column :first-child { + margin-top: 0; +} + +.about-wrap .aligncenter { + text-align: center; +} + +.about-wrap .alignleft { + float: right; + margin-left: 40px; +} + +.about-wrap .alignright { + float: left; + margin-right: 40px; +} + +.about-wrap .is-vertically-aligned-top { + align-self: start; +} + +.about-wrap .is-vertically-aligned-center { + align-self: center; +} + +.about-wrap .is-vertically-aligned-bottom { + align-self: end; +} + +/* x.2.3 - Point Releases */ + +.about-wrap .point-releases { + margin-top: 5px; + border-bottom: 1px solid #ddd; +} + +.about-wrap .changelog { + margin-bottom: 40px; +} + +.about-wrap .changelog.point-releases h3 { + padding-top: 35px; +} + +.about-wrap .changelog.point-releases h3:first-child { + padding-top: 7px; +} + +.about-wrap .changelog.feature-section .col { + margin-top: 40px; +} + +/*------------------------------------------------------------------------------ + x.3.0 - Legacy About Styles: About Page +------------------------------------------------------------------------------*/ + +/* x.3.1 - Typography */ + +.about-wrap .lead-description { + font-size: 1.5em; + text-align: center; +} + +.about-wrap .feature-section p { + margin-top: 0.6em; +} + +/* x.3.2 - Structure */ + +.about-wrap .headline-feature { + margin: 0 auto 40px; + max-width: 680px; +} + +.about-wrap .headline-feature h2 { + margin: 50px 0 0; +} + +.about-wrap .headline-feature img { + max-width: 600px; + width: 100%; +} + +/* Go to Dashboard Home link */ + +.about-wrap .return-to-dashboard { + margin: 30px -5px 0 0; + font-size: 14px; + font-weight: 600; +} + +.about-wrap .return-to-dashboard a { + text-decoration: none; + padding: 0 5px; +} + +/*------------------------------------------------------------------------------ + x.4.0 - Legacy About Styles: Credits & Freedoms Pages +------------------------------------------------------------------------------*/ + +/* Credits */ + +.about-wrap h2.wp-people-group { + margin: 2.6em 0 1.33em; + padding: 0; + font-size: 16px; + line-height: inherit; + font-weight: 600; + text-align: right; +} + +.about-wrap .wp-people-group { + padding: 0 5px; + margin: 0 -5px 0 -15px; +} + +.about-wrap .compact { + margin-bottom: 0; +} + +.about-wrap .wp-person { + display: inline-block; + vertical-align: top; + margin-left: 10px; + padding-bottom: 15px; + height: 70px; + width: 280px; +} + +.about-wrap .compact .wp-person { + height: auto; + width: 180px; + padding-bottom: 0; + margin-bottom: 0; +} + +.about-wrap .wp-person .gravatar { + float: right; + margin: 0 0 10px 10px; + padding: 1px; + width: 60px; + height: 60px; +} + +.about-wrap .compact .wp-person .gravatar { + width: 30px; + height: 30px; +} + +.about-wrap .wp-person .web { + margin: 6px 0 2px; + font-size: 16px; + font-weight: 400; + line-height: 2; + text-decoration: none; +} + +.about-wrap .wp-person .title { + display: block; +} + +.about-wrap #wp-people-group-validators + p.wp-credits-list { + margin-top: 0; +} + +.about-wrap p.wp-credits-list a { + white-space: nowrap; +} + +/* Freedoms */ + +.freedoms-php .about-wrap ol { + margin: 40px 60px; +} + +.freedoms-php .about-wrap ol li { + list-style-type: decimal; + font-weight: 600; +} + +.freedoms-php .about-wrap ol p { + font-weight: 400; + margin: 0.6em 0; +} + +.freedoms-php .column .freedoms-image { + background-image: url('../images/freedoms.png'); + background-size: 100%; + padding-top: 100%; +} + +.freedoms-php .column:nth-of-type(2) .freedoms-image { + background-position: 100% 34%; +} + +.freedoms-php .column:nth-of-type(3) .freedoms-image { + background-position: 100% 66%; +} + +.freedoms-php .column:nth-of-type(4) .freedoms-image { + background-position: 100% 100%; +} + +/*------------------------------------------------------------------------------ + x.5.0 - Legacy About Styles: Media Queries +------------------------------------------------------------------------------*/ + +@media screen and (max-width: 782px) { + .about-wrap .has-3-columns, + .about-wrap .has-4-columns { + grid-template-columns: 1fr 1fr; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n+1), + .about-wrap .has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; + grid-row-start: 1; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n+2), + .about-wrap .has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; + grid-row-start: 1; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n), + .about-wrap .has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 1; + grid-row-start: 2; + } + + .about-wrap .has-4-columns .column:nth-of-type(4n) { + grid-column-start: 2; + grid-row-start: 2; + } +} + +@media screen and (max-width: 600px) { + .about-wrap .has-2-columns, + .about-wrap .has-3-columns, + .about-wrap .has-4-columns { + display: block; + } + + .about-wrap :not(.is-wider-right):not(.is-wider-left) .column { + margin-left: 0; + margin-right: 0; + } + + .about-wrap .has-2-columns.is-wider-right, + .about-wrap .has-2-columns.is-wider-left { + display: grid; + } +} + +@media only screen and (max-width: 500px) { + .about-wrap { + margin-left: 20px; + margin-right: 10px; + } + + .about-wrap h1, + .about-wrap .about-text { + margin-left: 0; + } + + .about-wrap .about-text { + margin-bottom: 0.25em; + } + + .about-wrap .wp-badge { + position: relative; + margin-bottom: 1.5em; + width: 100%; + } +} + +@media only screen and (max-width: 480px) { + .about-wrap .has-2-columns.is-wider-right, + .about-wrap .has-2-columns.is-wider-left { + display: block; + } + + .about-wrap .column { + margin-left: 0; + margin-right: 0; + } + + .about-wrap .has-2-columns.is-wider-right img, + .about-wrap .has-2-columns.is-wider-left img { + max-width: 160px; + } +} diff --git a/tools/storybook/wordpress/css/about-rtl.min.css b/tools/storybook/wordpress/css/about-rtl.min.css new file mode 100644 index 00000000000..6944d367b35 --- /dev/null +++ b/tools/storybook/wordpress/css/about-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.about__container{--background:transparent;--subtle-background:#def;--text:#000;--text-light:#fff;--accent-1:#3858e9;--accent-2:#3858e9;--nav-background:#fff;--nav-border:transparent;--nav-color:var(--text);--nav-current:var(--accent-1);--gap:2rem}.about-php,.credits-php,.freedoms-php,.privacy-php{background:#f0f7ff}.about-php #wpcontent,.credits-php #wpcontent,.freedoms-php #wpcontent,.privacy-php #wpcontent{background:linear-gradient(-180deg,#fff 50%,#f0f7ff 100%);padding:0 24px}@media screen and (max-width:782px){.about-php.auto-fold #wpcontent,.credits-php.auto-fold #wpcontent,.freedoms-php.auto-fold #wpcontent,.privacy-php.auto-fold #wpcontent{padding-right:24px}}.about__container{max-width:1000px;margin:24px auto;clear:both}.about__container .alignleft{float:right}.about__container .alignright{float:left}.about__container .aligncenter{text-align:center}.about__container .is-vertically-aligned-top{align-self:start}.about__container .is-vertically-aligned-center{align-self:center}.about__container .is-vertically-aligned-bottom{align-self:end}.about__section{background:var(--background);clear:both}.about__container .has-accent-background-color{background-color:var(--accent-1);color:var(--text-light)}.about__container .has-accent-background-color a{color:var(--text-light)}.about__container .has-transparent-background-color{background-color:transparent}.about__container .has-accent-color{color:var(--accent-1)}.about__container .has-border{border:3px solid currentColor}.about__container .has-subtle-background-color{background-color:var(--subtle-background)}.about__container .has-background-image{background-size:contain;background-repeat:no-repeat;background-position:center}.about__section{margin:0 0 var(--gap)}.about__section .column:not(.is-edge-to-edge){padding:var(--gap)}.about__section+.about__section .is-section-header{padding-bottom:var(--gap)}.about__section .column.has-border,.about__section .column[class*=background-color],.about__section:where([class*=background-color]) .column{padding-top:var(--gap);padding-bottom:var(--gap)}.about__section .column p:first-of-type{margin-top:0}.about__section .column p:last-of-type{margin-bottom:0}.about__section .has-text-columns{columns:2;column-gap:calc(var(--gap) * 2)}.about__section .is-section-header{margin-bottom:0;padding:var(--gap) var(--gap) 0}.about__section .is-section-header p:last-child{margin-bottom:0}.about__section .is-section-header:first-child:last-child{padding:0}.about__section.is-feature{padding:var(--gap)}.about__section.is-feature p{margin:0}.about__section.is-feature p+p{margin-top:calc(var(--gap)/ 2)}.about__section.has-1-column{margin-right:auto;margin-left:auto;max-width:36em}.about__section.has-2-columns,.about__section.has-3-columns,.about__section.has-4-columns,.about__section.has-overlap-style{display:grid}.about__section.has-gutters{gap:var(--gap);margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns{grid-template-columns:1fr 1fr}.about__section.has-2-columns.is-wider-right{grid-template-columns:2fr 3fr}.about__section.has-2-columns.is-wider-left{grid-template-columns:3fr 2fr}.about__section.has-2-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-2-columns .column:nth-of-type(2n+1){grid-column-start:1}.about__section.has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-3-columns{grid-template-columns:repeat(3,1fr)}.about__section.has-3-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about__section.has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about__section.has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about__section.has-4-columns{grid-template-columns:repeat(4,1fr)}.about__section.has-4-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:4;grid-column-end:span 4}.about__section.has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about__section.has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about__section.has-2-columns .is-section-header~.column,.about__section.has-3-columns .is-section-header~.column,.about__section.has-4-columns .is-section-header~.column,.about__section.has-overlap-style .is-section-header~.column{grid-row-start:2}.about__section.has-overlap-style{grid-template-columns:repeat(7,1fr)}.about__section.has-overlap-style .column{grid-row-start:1}.about__section.has-overlap-style .column:nth-of-type(2n+1){grid-column-start:2;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column:nth-of-type(2n){grid-column-start:4;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column.is-top-layer{z-index:1}@media screen and (max-width:782px){.about__section.has-2-columns.is-wider-left,.about__section.has-2-columns.is-wider-right,.about__section.has-3-columns{display:block;margin-bottom:calc(var(--gap)/ 2)}.about__section .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section.has-2-columns.has-gutters.is-wider-left,.about__section.has-2-columns.has-gutters.is-wider-right,.about__section.has-3-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column,.about__section.has-3-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child,.about__section.has-3-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-3-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns{grid-template-columns:repeat(2,1fr)}.about__section.has-4-columns .column:nth-of-type(2n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n),.about__section.has-4-columns .column:nth-of-type(4n+3){grid-row-start:2}.about__section.has-4-columns .is-section-header{-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n),.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n+3){grid-row-start:3}.about__section.has-overlap-style{grid-template-columns:1fr}.about__section.has-overlap-style .column.column{grid-column-start:1;-ms-grid-column-span:1;grid-column-end:2;grid-row-start:1;-ms-grid-row-span:1;grid-row-end:2}}@media screen and (max-width:600px){.about__section.has-2-columns{display:block;margin-bottom:var(--gap)}.about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-2-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child{margin-bottom:0}}@media screen and (max-width:480px){.about__section.is-feature .column{padding:0}.about__section.has-4-columns{display:block;padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column{margin-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-4-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}}.about__container{line-height:1.4;color:var(--text)}.about__container h1{padding:0;color:inherit}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{margin-top:0;margin-bottom:.5em;font-size:2em;line-height:1.2;font-weight:700}.about__container h1.is-smaller-heading,.about__container h2.is-smaller-heading,.about__container h3{margin-top:0;font-size:1.6em;line-height:1.3;font-weight:400}.about__container p{font-size:inherit;line-height:inherit}.about__container p.is-subheading{margin-top:0;font-size:1.8em}.about__section a{color:var(--accent-1);text-decoration:underline}.about__section a:active,.about__section a:focus,.about__section a:hover{color:var(--accent-1);text-decoration:none}.wp-credits-list a{text-decoration:none}.wp-credits-list a:active,.wp-credits-list a:focus,.wp-credits-list a:hover{text-decoration:underline}.about__container ul{list-style:disc;margin-right:calc(var(--gap)/ 2)}.about__container img{margin:0;max-width:100%;vertical-align:middle}.about__container .about__image{margin:0}.about__container .about__image img{max-width:100%;width:100%;height:auto}.about__container .about__image figcaption{margin-top:.5em;text-align:center}.about__container .about__image .wp-video{margin-right:auto;margin-left:auto}.about__container .about__image+h3{margin-top:1.5em}.about__container hr{margin:0;height:var(--gap);border:none}.about__container hr.is-small{height:calc(var(--gap)/ 4)}.about__container hr.is-large{height:calc(var(--gap) * 2);margin:calc(var(--gap)/ 2) auto}.about__container .notice,.about__container div.error,.about__container div.updated{display:none!important}.about__section{font-size:1.2em}.about__section.is-feature{font-size:1.6em}@media screen and (max-width:480px){.about__section.is-feature{font-size:1.4em}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{font-size:2em}}.about__header{position:relative;margin-bottom:var(--gap);padding-top:0;background-image:url('../images/about-texture.png');background-color:var(--accent-2);background-size:500px 500px;background-blend-mode:overlay;color:var(--text-light)}.about__header::before{content:"";position:absolute;top:0;left:64px;z-index:0;width:300px;height:382px;background:url(../images/about-header-about.svg) no-repeat center;background-size:contain}.credits-php .about__header::before{top:auto;bottom:70px;height:310px;background-image:url('../images/about-header-credits.svg')}.freedoms-php .about__header::before{top:calc(50% - 182px);left:32px;width:375px;height:300px;background-image:url('../images/about-header-freedoms.svg')}.privacy-php .about__header::before{top:auto;bottom:-16px;background-image:url('../images/about-header-privacy.svg')}.about__header-image{margin:0 var(--gap) 3em}.about__header-title{box-sizing:border-box;padding:6rem 0 0 380px;margin:0 2rem}.about__header-title h1{margin:0 0 .5rem;padding:0;font-size:4.5rem;line-height:1;font-weight:400}.about__header-text{box-sizing:border-box;margin:0 0 7rem;padding:0 2rem 0 380px;font-size:1.6rem;line-height:1.15}.freedoms-php .about__header-text,.freedoms-php .about__header-title{padding-left:423px;margin-left:0}.about__header-navigation{position:relative;z-index:1;display:flex;justify-content:center;padding-top:0;background:var(--nav-background);color:var(--nav-color);border-bottom:3px solid var(--nav-border)}.about__header-navigation .nav-tab{margin-right:0;padding:calc(var(--gap) * .75) var(--gap);float:none;font-size:1.4em;line-height:1;border-width:0 0 3px;border-style:solid;border-color:transparent;background:0 0;color:inherit}.about__header-navigation .nav-tab:active,.about__header-navigation .nav-tab:hover{background-color:var(--nav-current);color:var(--text-light)}.about__header-navigation .nav-tab-active{margin-bottom:-3px;color:var(--nav-current);border-width:0 0 6px;border-color:var(--nav-current)}.about__header-navigation .nav-tab-active:active,.about__header-navigation .nav-tab-active:hover{background-color:var(--nav-current);color:var(--text-light);border-color:var(--nav-current)}@media screen and (max-width:960px){.about__header-title h1{font-size:4.8em}}@media screen and (max-width:782px){.about__header::before{width:240px;height:305px;left:32px}.credits-php .about__header::before{height:248px}.freedoms-php .about__header::before{top:calc(50% - 132px);height:192px;width:240px}.privacy-php .about__header::before{bottom:0;height:280px}.about__container .about__header-text{font-size:1.4em}.about__header-container{display:block}.about__header-text,.about__header-title{padding-left:288px!important}.about__header-image,.about__header-title{margin-right:calc(var(--gap)/ 2);margin-left:calc(var(--gap)/ 2)}.about__header-text{margin-top:0;margin-left:0;padding-right:calc(var(--gap)/ 2)}.about__header-navigation .nav-tab{margin-top:0;margin-left:0;padding-right:calc(var(--gap)/ 2);padding-left:calc(var(--gap)/ 2)}}@media screen and (max-width:600px){.about__header::before{display:none}.about__header-text,.about__header-title{padding-left:calc(var(--gap)/ 2)!important}}@media screen and (max-width:480px){.about__header-title p{font-size:2.4em}.about__header-title{padding-top:2rem}.about__header-text{margin-bottom:2rem}.about__header-navigation{display:block}.about__header-navigation .nav-tab{display:block;margin-bottom:0;padding:calc(var(--gap)/ 2);border-right-width:6px;border-bottom:none}.about__header-navigation .nav-tab-active{border-bottom:none;border-right-width:6px}}.about__section .wp-people-group-title{margin-bottom:calc(var(--gap) * 2);text-align:center}.about__section .wp-people-group{margin:0;display:flex;flex-wrap:wrap}.about__section .wp-person{display:inline-block;vertical-align:top;box-sizing:border-box;margin-bottom:var(--gap);width:25%;text-align:center}.about__section .compact .wp-person{height:auto;width:20%}.about__section .wp-person-avatar{display:block;margin:0 auto calc(var(--gap)/ 2);width:140px;height:140px;border-radius:100%;overflow:hidden;background:var(--accent-1)}.about__section .wp-person .gravatar{width:140px;height:140px;filter:grayscale(100%);mix-blend-mode:screen}.about__section .compact .wp-person .gravatar,.about__section .compact .wp-person-avatar{width:80px;height:80px}.about__section .wp-person .web{font-size:1.4em;font-weight:600;text-decoration:none}.about__section .wp-person .web:hover{text-decoration:underline}.about__section .compact .wp-person .web{font-size:1.2em}.about__section .wp-person .title{display:block;margin-top:.5em}@media screen and (max-width:782px){.about__section .wp-person{width:33%}.about__section .compact .wp-person{width:25%}.about__section .wp-person .gravatar,.about__section .wp-person-avatar{width:120px;height:120px}}@media screen and (max-width:600px){.about__section .wp-person{width:50%}.about__section .compact .wp-person{width:33%}.about__section .wp-person .web{font-size:1.2em}}@media screen and (max-width:480px){.about__section .wp-person{min-width:100%}.about__section .wp-person .web{font-size:1em}.about__section .compact .wp-person .web{font-size:1em}}.about__section .column .freedom-image{margin-bottom:var(--gap);max-height:140px}.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:3em 0 0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;width:100%;height:auto;vertical-align:middle}.about-wrap .inline-svg img{max-width:100%;width:auto;height:auto}.about-wrap video{margin:1.5em auto}.wp-badge{background:#0073aa url(../images/w-logo-white.png?ver=20160308) no-repeat;background-position:center 25px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20160308)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px;line-height:1.33333333}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{font-size:16px;color:#23282d}.about-wrap p{line-height:1.5;font-size:16px}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap figcaption{font-size:13px;text-align:center;color:#fff;text-overflow:ellipsis}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.about-wrap .about-text{margin:1em 0 1em 200px;color:#555d66}.about-wrap .has-1-columns,.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:grid;max-width:800px;margin-top:40px;margin-right:auto;margin-left:auto}.about-wrap .column{margin-left:20px;margin-right:20px}.about-wrap .is-wide{max-width:760px}.about-wrap .is-fullwidth{max-width:100%}.about-wrap .has-1-columns{display:block;max-width:680px;margin:0 auto 40px}.about-wrap .has-2-columns{grid-template-columns:1fr 1fr}.about-wrap .has-2-columns .column:nth-of-type(2n+1){grid-column-start:1}.about-wrap .has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about-wrap .has-2-columns.is-wider-right{grid-template-columns:1fr 2fr}.about-wrap .has-2-columns.is-wider-left{grid-template-columns:2fr 1fr}.about-wrap .has-3-columns{grid-template-columns:repeat(3,1fr)}.about-wrap .has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about-wrap .has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about-wrap .has-4-columns{grid-template-columns:repeat(4,1fr)}.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about-wrap .column :first-child{margin-top:0}.about-wrap .aligncenter{text-align:center}.about-wrap .alignleft{float:right;margin-left:40px}.about-wrap .alignright{float:left;margin-right:40px}.about-wrap .is-vertically-aligned-top{align-self:start}.about-wrap .is-vertically-aligned-center{align-self:center}.about-wrap .is-vertically-aligned-bottom{align-self:end}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .lead-description{font-size:1.5em;text-align:center}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .headline-feature{margin:0 auto 40px;max-width:680px}.about-wrap .headline-feature h2{margin:50px 0 0}.about-wrap .headline-feature img{max-width:600px;width:100%}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h2.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit;font-weight:600;text-align:right}.about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}.freedoms-php .column .freedoms-image{background-image:url('../images/freedoms.png');background-size:100%;padding-top:100%}.freedoms-php .column:nth-of-type(2) .freedoms-image{background-position:100% 34%}.freedoms-php .column:nth-of-type(3) .freedoms-image{background-position:100% 66%}.freedoms-php .column:nth-of-type(4) .freedoms-image{background-position:100% 100%}@media screen and (max-width:782px){.about-wrap .has-3-columns,.about-wrap .has-4-columns{grid-template-columns:1fr 1fr}.about-wrap .has-3-columns .column:nth-of-type(3n+1),.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2),.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n),.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:1;grid-row-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:2;grid-row-start:2}}@media screen and (max-width:600px){.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:block}.about-wrap :not(.is-wider-right):not(.is-wider-left) .column{margin-left:0;margin-right:0}.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:grid}}@media only screen and (max-width:500px){.about-wrap{margin-left:20px;margin-right:10px}.about-wrap .about-text,.about-wrap h1{margin-left:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}}@media only screen and (max-width:480px){.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:block}.about-wrap .column{margin-left:0;margin-right:0}.about-wrap .has-2-columns.is-wider-left img,.about-wrap .has-2-columns.is-wider-right img{max-width:160px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/about.css b/tools/storybook/wordpress/css/about.css new file mode 100644 index 00000000000..eff4e2940cb --- /dev/null +++ b/tools/storybook/wordpress/css/about.css @@ -0,0 +1,1472 @@ +/*------------------------------------------------------------------------------ + 22.0 - About Pages + + 1.0 Global: About, Credits, Freedoms, Privacy + 1.1 Layout + 1.2 Typography & Elements + 1.3 Header + 2.0 Credits Page + 3.0 Freedoms Page + x.2.0 Legacy About Styles: Global + x.2.1 Typography + x.2.2 Structure + x.2.3 Point Releases + x.3.0 Legacy About Styles: About Page + x.3.1 Typography + x.3.2 Structure + x.4.0 Legacy About Styles: Credits & Freedoms Pages + x.5.0 Legacy About Styles: Media Queries +------------------------------------------------------------------------------*/ + +.about__container { + /* Section backgrounds */ + --background: transparent; + --subtle-background: #def; + + /* Main text color */ + --text: #000; + --text-light: #fff; + + /* Accent colors: used in header, on special classes. */ + --accent-1: #3858e9; /* Accent background, link color */ + --accent-2: #3858e9; /* Header background */ + + /* Navigation colors. */ + --nav-background: #fff; + --nav-border: transparent; + --nav-color: var(--text); + --nav-current: var(--accent-1); + + --gap: 2rem; +} + +/*------------------------------------------------------------------------------ + 1.0 - Global: About, Credits, Freedoms, Privacy +------------------------------------------------------------------------------*/ + +.about-php, +.credits-php, +.freedoms-php, +.privacy-php { + background: #f0f7ff; +} + +.about-php #wpcontent, +.credits-php #wpcontent, +.freedoms-php #wpcontent, +.privacy-php #wpcontent { + background: linear-gradient(180deg, #fff 50%, #f0f7ff 100%); + padding: 0 24px; +} + +@media screen and (max-width: 782px) { + .about-php.auto-fold #wpcontent, + .credits-php.auto-fold #wpcontent, + .freedoms-php.auto-fold #wpcontent, + .privacy-php.auto-fold #wpcontent { + padding-left: 24px; + } +} + +.about__container { + max-width: 1000px; + margin: 24px auto; + clear: both; +} + +.about__container .alignleft { + float: left; +} + +.about__container .alignright { + float: right; +} + +.about__container .aligncenter { + text-align: center; +} + +.about__container .is-vertically-aligned-top { + align-self: start; +} + +.about__container .is-vertically-aligned-center { + align-self: center; +} + +.about__container .is-vertically-aligned-bottom { + align-self: end; +} + +.about__section { + background: var(--background); + clear: both; +} + +.about__container .has-accent-background-color { + background-color: var(--accent-1); + color: var(--text-light); +} + +.about__container .has-accent-background-color a { + color: var(--text-light); +} + +.about__container .has-transparent-background-color { + background-color: transparent; +} + +.about__container .has-accent-color { + color: var(--accent-1); +} + +.about__container .has-border { + border: 3px solid currentColor; +} + +.about__container .has-subtle-background-color { + background-color: var(--subtle-background); +} + +.about__container .has-background-image { + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + +/* 1.1 - Layout */ + +.about__section { + margin: 0 0 var(--gap); +} + +.about__section .column:not(.is-edge-to-edge) { + padding: var(--gap); +} + +.about__section + .about__section .is-section-header { + padding-bottom: var(--gap); +} + +.about__section .column[class*="background-color"], +.about__section:where([class*="background-color"]) .column, +.about__section .column.has-border { + padding-top: var(--gap); + padding-bottom: var(--gap); +} + +.about__section .column p:first-of-type { + margin-top: 0; +} + +.about__section .column p:last-of-type { + margin-bottom: 0; +} + +.about__section .has-text-columns { + columns: 2; + column-gap: calc(var(--gap) * 2); +} + +.about__section .is-section-header { + margin-bottom: 0; + padding: var(--gap) var(--gap) 0; +} + +.about__section .is-section-header p:last-child { + margin-bottom: 0; +} + +/* Section header is alone in a container. */ +.about__section .is-section-header:first-child:last-child { + padding: 0; +} + +.about__section.is-feature { + padding: var(--gap); +} + +.about__section.is-feature p { + margin: 0; +} + +.about__section.is-feature p + p { + margin-top: calc(var(--gap) / 2); +} + +.about__section.has-1-column { + margin-left: auto; + margin-right: auto; + max-width: 36em; +} + +.about__section.has-2-columns, +.about__section.has-3-columns, +.about__section.has-4-columns, +.about__section.has-overlap-style { + display: grid; +} + +.about__section.has-gutters { + gap: var(--gap); + margin-bottom: calc(var(--gap) * 2); +} + +.about__section.has-2-columns { + grid-template-columns: 1fr 1fr; +} + +.about__section.has-2-columns.is-wider-right { + grid-template-columns: 2fr 3fr; +} + +.about__section.has-2-columns.is-wider-left { + grid-template-columns: 3fr 2fr; +} + +.about__section.has-2-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 2; + grid-column-end: span 2; +} + +.about__section.has-2-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; +} + +.about__section.has-2-columns .column:nth-of-type(2n) { + grid-column-start: 2; +} + +.about__section.has-3-columns { + grid-template-columns: repeat(3, 1fr); +} + +.about__section.has-3-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-3-columns .column:nth-of-type(3n+1) { + grid-column-start: 1; +} + +.about__section.has-3-columns .column:nth-of-type(3n+2) { + grid-column-start: 2; +} + +.about__section.has-3-columns .column:nth-of-type(3n) { + grid-column-start: 3; +} + +.about__section.has-4-columns { + grid-template-columns: repeat(4, 1fr); +} + +.about__section.has-4-columns .is-section-header { + grid-column-start: 1; + -ms-grid-column-span: 4; + grid-column-end: span 4; +} + +.about__section.has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; +} + +.about__section.has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; +} + +.about__section.has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 3; +} + +.about__section.has-4-columns .column:nth-of-type(4n) { + grid-column-start: 4; +} + +/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ +.about__section.has-2-columns .is-section-header ~ .column, +.about__section.has-3-columns .is-section-header ~ .column, +.about__section.has-4-columns .is-section-header ~ .column, +.about__section.has-overlap-style .is-section-header ~ .column { + grid-row-start: 2; +} + +.about__section.has-overlap-style { + grid-template-columns: repeat(7, 1fr); +} + +.about__section.has-overlap-style .column { + grid-row-start: 1; +} + +.about__section.has-overlap-style .column:nth-of-type(2n+1) { + grid-column-start: 2; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-overlap-style .column:nth-of-type(2n) { + grid-column-start: 4; + -ms-grid-column-span: 3; + grid-column-end: span 3; +} + +.about__section.has-overlap-style .column.is-top-layer { + z-index: 1; +} + +@media screen and (max-width: 782px) { + .about__section.has-2-columns.is-wider-right, + .about__section.has-2-columns.is-wider-left, + .about__section.has-3-columns { + display: block; + margin-bottom: calc(var(--gap) / 2); + } + + .about__section .column:not(.is-edge-to-edge) { + padding-top: var(--gap); + padding-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters.is-wider-right, + .about__section.has-2-columns.has-gutters.is-wider-left, + .about__section.has-3-columns.has-gutters { + margin-bottom: calc(var(--gap) * 2); + } + + .about__section.has-2-columns.has-gutters .column, + .about__section.has-2-columns.has-gutters .column, + .about__section.has-3-columns.has-gutters .column { + margin-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters .column:last-child, + .about__section.has-2-columns.has-gutters .column:last-child, + .about__section.has-3-columns.has-gutters .column:last-child { + margin-bottom: 0; + } + + .about__section.has-3-columns .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns { + grid-template-columns: repeat(2, 1fr); + } + + .about__section.has-4-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; + } + + .about__section.has-4-columns .column:nth-of-type(2n) { + grid-column-start: 2; + } + + .about__section.has-4-columns .column:nth-of-type(4n+3), + .about__section.has-4-columns .column:nth-of-type(4n) { + grid-row-start: 2; + } + + .about__section.has-4-columns .is-section-header { + -ms-grid-column-span: 2; + grid-column-end: span 2; + } + + .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n+3), + .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n) { + grid-row-start: 3; + } + + .about__section.has-overlap-style { + grid-template-columns: 1fr; + } + + /* At this size, the two columns fully overlap */ + .about__section.has-overlap-style .column.column { + grid-column-start: 1; + -ms-grid-column-span: 1; + grid-column-end: 2; + grid-row-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + } +} + +@media screen and (max-width: 600px) { + .about__section.has-2-columns { + display: block; + margin-bottom: var(--gap); + } + + .about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-2-columns.has-gutters { + margin-bottom: calc(var(--gap) * 2); + } + + .about__section.has-2-columns.has-gutters .column { + margin-bottom: var(--gap); + } + + .about__section.has-2-columns.has-gutters .column:last-child { + margin-bottom: 0; + } +} + +@media screen and (max-width: 480px) { + .about__section.is-feature .column { + padding: 0; + } + + .about__section.has-4-columns { + display: block; + padding-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns.has-gutters .column { + margin-bottom: calc(var(--gap) / 2); + } + + .about__section.has-4-columns.has-gutters .column:last-child { + margin-bottom: 0; + } + + .about__section.has-4-columns .column:nth-of-type(n) { + padding-top: calc(var(--gap) / 2); + padding-bottom: calc(var(--gap) / 2); + } +} + +/* 1.2 - Typography & Elements */ + +.about__container { + line-height: 1.4; + color: var(--text); +} + +.about__container h1 { + padding: 0; + color: inherit; +} + +.about__container h1, +.about__container h2, +.about__container h3.is-larger-heading { + margin-top: 0; + margin-bottom: 0.5em; + font-size: 2em; + line-height: 1.2; + font-weight: 700; +} + +.about__container h3, +.about__container h1.is-smaller-heading, +.about__container h2.is-smaller-heading { + margin-top: 0; + font-size: 1.6em; + line-height: 1.3; + font-weight: 400; +} + +.about__container p { + font-size: inherit; + line-height: inherit; +} + +.about__container p.is-subheading { + margin-top: 0; + font-size: 1.8em; +} + +.about__section a { + color: var(--accent-1); + text-decoration: underline; +} + +.about__section a:hover, +.about__section a:active, +.about__section a:focus { + color: var(--accent-1); + text-decoration: none; +} + +.wp-credits-list a { + text-decoration: none; +} + +.wp-credits-list a:hover, +.wp-credits-list a:active, +.wp-credits-list a:focus { + text-decoration: underline; +} + +.about__container ul { + list-style: disc; + margin-left: calc(var(--gap) / 2); +} + +.about__container img { + margin: 0; + max-width: 100%; + vertical-align: middle; +} + +.about__container .about__image { + margin: 0; +} + +.about__container .about__image img { + max-width: 100%; + width: 100%; + height: auto; +} + +.about__container .about__image figcaption { + margin-top: 0.5em; + text-align: center; +} + +.about__container .about__image .wp-video { + margin-left: auto; + margin-right: auto; +} + +.about__container .about__image + h3 { + margin-top: 1.5em; +} + +.about__container hr { + margin: 0; + height: var(--gap); + border: none; +} + +.about__container hr.is-small { + height: calc(var(--gap) / 4); +} + +.about__container hr.is-large { + height: calc(var(--gap) * 2); + margin: calc(var(--gap) / 2) auto; +} + +.about__container div.updated, +.about__container div.error, +.about__container .notice { + display: none !important; +} + +.about__section { + font-size: 1.2em; +} + +.about__section.is-feature { + font-size: 1.6em; +} + +@media screen and (max-width: 480px) { + .about__section.is-feature { + font-size: 1.4em; + } + + .about__container h1, + .about__container h2, + .about__container h3.is-larger-heading { + font-size: 2em; + } +} + +/* 1.3 - Header */ + +.about__header { + position: relative; + margin-bottom: var(--gap); + padding-top: 0; + background-image: url('../images/about-texture.png'); + background-color: var(--accent-2); + background-size: 500px 500px; + background-blend-mode: overlay; + color: var(--text-light); +} + +.about__header::before { + content: ""; + position: absolute; + top: 0; + right: 64px; + z-index: 0; + width: 300px; + height: 382px; + background: url(../images/about-header-about.svg) no-repeat center; + background-size: contain; +} + +.credits-php .about__header::before { + top: auto; + bottom: 70px; + height: 310px; + background-image: url('../images/about-header-credits.svg'); +} + +.freedoms-php .about__header::before { + top: calc(50% - 182px); + right: 32px; + width: 375px; + height: 300px; + background-image: url('../images/about-header-freedoms.svg'); +} + +.privacy-php .about__header::before { + top: auto; + bottom: -16px; + background-image: url('../images/about-header-privacy.svg'); +} + +.about__header-image { + margin: 0 var(--gap) 3em; +} + +.about__header-title { + box-sizing: border-box; + /* 380px = 300px (balloon width) + 64px (offset from edge) + 16px (spacing). */ + padding: 6rem 380px 0 0; + margin: 0 2rem; +} + +.about__header-title h1 { + margin: 0 0 0.5rem; + padding: 0; + font-size: 4.5rem; + line-height: 1; + font-weight: 400; +} + +.about__header-text { + box-sizing: border-box; + margin: 0 0 7rem; + /* 380px = 300px (balloon width) + 64px (offset from edge) + 16px (spacing). */ + padding: 0 380px 0 2rem; + font-size: 1.6rem; + line-height: 1.15; +} + +.freedoms-php .about__header-title, +.freedoms-php .about__header-text { + /* 423px = 375px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding-right: 423px; + margin-right: 0; +} + +.about__header-navigation { + position: relative; + z-index: 1; + display: flex; + justify-content: center; + padding-top: 0; + background: var(--nav-background); + color: var(--nav-color); + border-bottom: 3px solid var(--nav-border); +} + +.about__header-navigation .nav-tab { + margin-left: 0; + padding: calc(var(--gap) * 0.75) var(--gap); + float: none; + font-size: 1.4em; + line-height: 1; + border-width: 0 0 3px; + border-style: solid; + border-color: transparent; + background: transparent; + color: inherit; +} + +.about__header-navigation .nav-tab:hover, +.about__header-navigation .nav-tab:active { + background-color: var(--nav-current); + color: var(--text-light); +} + +.about__header-navigation .nav-tab-active { + margin-bottom: -3px; + color: var(--nav-current); + border-width: 0 0 6px; + border-color: var(--nav-current); +} + +.about__header-navigation .nav-tab-active:hover, +.about__header-navigation .nav-tab-active:active { + background-color: var(--nav-current); + color: var(--text-light); + border-color: var(--nav-current); +} + +@media screen and (max-width: 960px){ + .about__header-title h1 { + font-size: 4.8em; + } +} + +@media screen and (max-width: 782px) { + .about__header::before { + width: 240px; + height: 305px; + right: 32px; + } + + .credits-php .about__header::before { + height: 248px; + } + + .freedoms-php .about__header::before { + top: calc(50% - 132px); + height: 192px; + width: 240px; + } + + .privacy-php .about__header::before { + bottom: 0; + height: 280px; + } + + .about__container .about__header-text { + font-size: 1.4em; + } + + .about__header-container { + display: block; + } + + .about__header-title, + .about__header-text { + /* 288px = 240px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding-right: 288px !important; + } + + .about__header-title, + .about__header-image { + margin-left: calc(var(--gap) / 2); + margin-right: calc(var(--gap) / 2); + } + + .about__header-text { + margin-top: 0; + margin-right: 0; + padding-left: calc(var(--gap) / 2); + } + + .about__header-navigation .nav-tab { + margin-top: 0; + margin-right: 0; + padding-left: calc(var(--gap) / 2); + padding-right: calc(var(--gap) / 2); + } +} + +@media screen and (max-width: 600px) { + .about__header::before { + display: none; + } + + .about__header-title, + .about__header-text { + padding-right: calc(var(--gap) / 2) !important; + } +} + +@media screen and (max-width: 480px) { + .about__header-title p { + font-size: 2.4em; + } + + .about__header-title { + padding-top: 2rem; + } + + .about__header-text { + margin-bottom: 2rem; + } + + .about__header-navigation { + display: block; + } + + .about__header-navigation .nav-tab { + display: block; + margin-bottom: 0; + padding: calc(var(--gap) / 2); + border-left-width: 6px; + border-bottom: none; + } + + .about__header-navigation .nav-tab-active { + border-bottom: none; + border-left-width: 6px; + } +} + + +/*------------------------------------------------------------------------------ + 2.0 - Credits Page +------------------------------------------------------------------------------*/ + +.about__section .wp-people-group-title { + margin-bottom: calc(var(--gap) * 2); + text-align: center; + +} + +.about__section .wp-people-group { + margin: 0; + display: flex; + flex-wrap: wrap; +} + +.about__section .wp-person { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + margin-bottom: var(--gap); + width: 25%; + text-align: center; +} + +.about__section .compact .wp-person { + height: auto; + width: 20%; +} + +.about__section .wp-person-avatar { + display: block; + margin: 0 auto calc(var(--gap) / 2); + width: 140px; + height: 140px; + border-radius: 100%; + overflow: hidden; + background: var(--accent-1); +} + +.about__section .wp-person .gravatar { + width: 140px; + height: 140px; + filter: grayscale(100%); + mix-blend-mode: screen; +} + +.about__section .compact .wp-person-avatar, +.about__section .compact .wp-person .gravatar { + width: 80px; + height: 80px; +} + +.about__section .wp-person .web { + font-size: 1.4em; + font-weight: 600; + text-decoration: none; +} + +.about__section .wp-person .web:hover { + text-decoration: underline; +} + +.about__section .compact .wp-person .web { + font-size: 1.2em; +} + +.about__section .wp-person .title { + display: block; + margin-top: 0.5em; +} + +@media screen and (max-width: 782px) { + .about__section .wp-person { + width: 33%; + } + + .about__section .compact .wp-person { + width: 25%; + } + + .about__section .wp-person-avatar, + .about__section .wp-person .gravatar { + width: 120px; + height: 120px; + } +} + +@media screen and (max-width: 600px) { + .about__section .wp-person { + width: 50%; + } + + .about__section .compact .wp-person { + width: 33%; + } + + .about__section .wp-person .web { + font-size: 1.2em; + } +} + +@media screen and (max-width: 480px) { + .about__section .wp-person { + min-width: 100%; + } + + .about__section .wp-person .web { + font-size: 1em; + } + + .about__section .compact .wp-person .web { + font-size: 1em; + } +} + + +/*------------------------------------------------------------------------------ + 3.0 - Freedoms Page +------------------------------------------------------------------------------*/ + +.about__section .column .freedom-image { + margin-bottom: var(--gap); + max-height: 140px; +} + + +/*------------------------------------------------------------------------------ + x.2.0 - Legacy About Styles: Global +------------------------------------------------------------------------------*/ + +.about-wrap { + position: relative; + margin: 25px 40px 0 20px; + max-width: 1050px; /* readability */ + font-size: 15px; +} + +.about-wrap.full-width-layout { + max-width: 1200px; +} + +.about-wrap-content { + max-width: 1050px; +} + +.about-wrap div.updated, +.about-wrap div.error, +.about-wrap .notice { + display: none !important; +} + +.about-wrap hr { + border: 0; + height: 0; + margin: 3em 0 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +.about-wrap img { + margin: 0; + width: 100%; + height: auto; + vertical-align: middle; +} + +.about-wrap .inline-svg img { + max-width: 100%; + width: auto; + height: auto; +} + +.about-wrap video { + margin: 1.5em auto; +} + +/* WordPress Version Badge */ + +.wp-badge { + background: #0073aa url(../images/w-logo-white.png?ver=20160308) no-repeat; + background-position: center 25px; + background-size: 80px 80px; + color: #fff; + font-size: 14px; + text-align: center; + font-weight: 600; + margin: 5px 0 0; + padding-top: 120px; + height: 40px; + display: inline-block; + width: 140px; + text-rendering: optimizeLegibility; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.svg .wp-badge { + background-image: url(../images/wordpress-logo-white.svg?ver=20160308); +} + +.about-wrap .wp-badge { + position: absolute; + top: 0; + right: 0; +} + +/* Tabs */ + +.about-wrap .nav-tab { + padding-right: 15px; + padding-left: 15px; + font-size: 18px; + line-height: 1.33333333; +} + +/* x.2.1 - Typography */ + +.about-wrap h1 { + margin: 0.2em 200px 0 0; + padding: 0; + color: #32373c; + line-height: 1.2; + font-size: 2.8em; + font-weight: 400; +} + +.about-wrap h2 { + margin: 40px 0 0.6em; + font-size: 2.7em; + line-height: 1.3; + font-weight: 300; + text-align: center; +} + +.about-wrap h3 { + margin: 1.25em 0 0.6em; + font-size: 1.4em; + line-height: 1.5; +} + +.about-wrap h4 { + font-size: 16px; + color: #23282d; +} + +.about-wrap p { + line-height: 1.5; + font-size: 16px; +} + +.about-wrap code, +.about-wrap ol li p { + font-size: 14px; + font-weight: 400; +} + +.about-wrap figcaption { + font-size: 13px; + text-align: center; + color: white; + text-overflow: ellipsis; +} + +.about-wrap .about-description, +.about-wrap .about-text { + margin-top: 1.4em; + font-weight: 400; + line-height: 1.6; + font-size: 19px; +} + +.about-wrap .about-text { + margin: 1em 200px 1em 0; + color: #555d66; +} + +/* x.2.2 - Structure */ + +.about-wrap .has-1-columns, +.about-wrap .has-2-columns, +.about-wrap .has-3-columns, +.about-wrap .has-4-columns { + display: grid; + max-width: 800px; + margin-top: 40px; + margin-left: auto; + margin-right: auto; +} + +.about-wrap .column { + margin-right: 20px; + margin-left: 20px; +} + +.about-wrap .is-wide { + max-width: 760px; +} + +.about-wrap .is-fullwidth { + max-width: 100%; +} + +.about-wrap .has-1-columns { + display: block; + max-width: 680px; + margin: 0 auto 40px; +} + +.about-wrap .has-2-columns { + grid-template-columns: 1fr 1fr; +} + +.about-wrap .has-2-columns .column:nth-of-type(2n+1) { + grid-column-start: 1; +} + +.about-wrap .has-2-columns .column:nth-of-type(2n) { + grid-column-start: 2; +} + +.about-wrap .has-2-columns.is-wider-right { + grid-template-columns: 1fr 2fr; +} + +.about-wrap .has-2-columns.is-wider-left { + grid-template-columns: 2fr 1fr; +} + +.about-wrap .has-3-columns { + grid-template-columns: repeat(3, 1fr); +} + +.about-wrap .has-3-columns .column:nth-of-type(3n+1) { + grid-column-start: 1; +} + +.about-wrap .has-3-columns .column:nth-of-type(3n+2) { + grid-column-start: 2; +} + +.about-wrap .has-3-columns .column:nth-of-type(3n) { + grid-column-start: 3; +} + +.about-wrap .has-4-columns { + grid-template-columns: repeat(4, 1fr); +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 3; +} + +.about-wrap .has-4-columns .column:nth-of-type(4n) { + grid-column-start: 4; +} + +.about-wrap .column :first-child { + margin-top: 0; +} + +.about-wrap .aligncenter { + text-align: center; +} + +.about-wrap .alignleft { + float: left; + margin-right: 40px; +} + +.about-wrap .alignright { + float: right; + margin-left: 40px; +} + +.about-wrap .is-vertically-aligned-top { + align-self: start; +} + +.about-wrap .is-vertically-aligned-center { + align-self: center; +} + +.about-wrap .is-vertically-aligned-bottom { + align-self: end; +} + +/* x.2.3 - Point Releases */ + +.about-wrap .point-releases { + margin-top: 5px; + border-bottom: 1px solid #ddd; +} + +.about-wrap .changelog { + margin-bottom: 40px; +} + +.about-wrap .changelog.point-releases h3 { + padding-top: 35px; +} + +.about-wrap .changelog.point-releases h3:first-child { + padding-top: 7px; +} + +.about-wrap .changelog.feature-section .col { + margin-top: 40px; +} + +/*------------------------------------------------------------------------------ + x.3.0 - Legacy About Styles: About Page +------------------------------------------------------------------------------*/ + +/* x.3.1 - Typography */ + +.about-wrap .lead-description { + font-size: 1.5em; + text-align: center; +} + +.about-wrap .feature-section p { + margin-top: 0.6em; +} + +/* x.3.2 - Structure */ + +.about-wrap .headline-feature { + margin: 0 auto 40px; + max-width: 680px; +} + +.about-wrap .headline-feature h2 { + margin: 50px 0 0; +} + +.about-wrap .headline-feature img { + max-width: 600px; + width: 100%; +} + +/* Go to Dashboard Home link */ + +.about-wrap .return-to-dashboard { + margin: 30px 0 0 -5px; + font-size: 14px; + font-weight: 600; +} + +.about-wrap .return-to-dashboard a { + text-decoration: none; + padding: 0 5px; +} + +/*------------------------------------------------------------------------------ + x.4.0 - Legacy About Styles: Credits & Freedoms Pages +------------------------------------------------------------------------------*/ + +/* Credits */ + +.about-wrap h2.wp-people-group { + margin: 2.6em 0 1.33em; + padding: 0; + font-size: 16px; + line-height: inherit; + font-weight: 600; + text-align: left; +} + +.about-wrap .wp-people-group { + padding: 0 5px; + margin: 0 -15px 0 -5px; +} + +.about-wrap .compact { + margin-bottom: 0; +} + +.about-wrap .wp-person { + display: inline-block; + vertical-align: top; + margin-right: 10px; + padding-bottom: 15px; + height: 70px; + width: 280px; +} + +.about-wrap .compact .wp-person { + height: auto; + width: 180px; + padding-bottom: 0; + margin-bottom: 0; +} + +.about-wrap .wp-person .gravatar { + float: left; + margin: 0 10px 10px 0; + padding: 1px; + width: 60px; + height: 60px; +} + +.about-wrap .compact .wp-person .gravatar { + width: 30px; + height: 30px; +} + +.about-wrap .wp-person .web { + margin: 6px 0 2px; + font-size: 16px; + font-weight: 400; + line-height: 2; + text-decoration: none; +} + +.about-wrap .wp-person .title { + display: block; +} + +.about-wrap #wp-people-group-validators + p.wp-credits-list { + margin-top: 0; +} + +.about-wrap p.wp-credits-list a { + white-space: nowrap; +} + +/* Freedoms */ + +.freedoms-php .about-wrap ol { + margin: 40px 60px; +} + +.freedoms-php .about-wrap ol li { + list-style-type: decimal; + font-weight: 600; +} + +.freedoms-php .about-wrap ol p { + font-weight: 400; + margin: 0.6em 0; +} + +.freedoms-php .column .freedoms-image { + background-image: url('../images/freedoms.png'); + background-size: 100%; + padding-top: 100%; +} + +.freedoms-php .column:nth-of-type(2) .freedoms-image { + background-position: 0 34%; +} + +.freedoms-php .column:nth-of-type(3) .freedoms-image { + background-position: 0 66%; +} + +.freedoms-php .column:nth-of-type(4) .freedoms-image { + background-position: 0 100%; +} + +/*------------------------------------------------------------------------------ + x.5.0 - Legacy About Styles: Media Queries +------------------------------------------------------------------------------*/ + +@media screen and (max-width: 782px) { + .about-wrap .has-3-columns, + .about-wrap .has-4-columns { + grid-template-columns: 1fr 1fr; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n+1), + .about-wrap .has-4-columns .column:nth-of-type(4n+1) { + grid-column-start: 1; + grid-row-start: 1; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n+2), + .about-wrap .has-4-columns .column:nth-of-type(4n+2) { + grid-column-start: 2; + grid-row-start: 1; + } + + .about-wrap .has-3-columns .column:nth-of-type(3n), + .about-wrap .has-4-columns .column:nth-of-type(4n+3) { + grid-column-start: 1; + grid-row-start: 2; + } + + .about-wrap .has-4-columns .column:nth-of-type(4n) { + grid-column-start: 2; + grid-row-start: 2; + } +} + +@media screen and (max-width: 600px) { + .about-wrap .has-2-columns, + .about-wrap .has-3-columns, + .about-wrap .has-4-columns { + display: block; + } + + .about-wrap :not(.is-wider-right):not(.is-wider-left) .column { + margin-right: 0; + margin-left: 0; + } + + .about-wrap .has-2-columns.is-wider-right, + .about-wrap .has-2-columns.is-wider-left { + display: grid; + } +} + +@media only screen and (max-width: 500px) { + .about-wrap { + margin-right: 20px; + margin-left: 10px; + } + + .about-wrap h1, + .about-wrap .about-text { + margin-right: 0; + } + + .about-wrap .about-text { + margin-bottom: 0.25em; + } + + .about-wrap .wp-badge { + position: relative; + margin-bottom: 1.5em; + width: 100%; + } +} + +@media only screen and (max-width: 480px) { + .about-wrap .has-2-columns.is-wider-right, + .about-wrap .has-2-columns.is-wider-left { + display: block; + } + + .about-wrap .column { + margin-right: 0; + margin-left: 0; + } + + .about-wrap .has-2-columns.is-wider-right img, + .about-wrap .has-2-columns.is-wider-left img { + max-width: 160px; + } +} diff --git a/tools/storybook/wordpress/css/about.min.css b/tools/storybook/wordpress/css/about.min.css new file mode 100644 index 00000000000..20a3773afad --- /dev/null +++ b/tools/storybook/wordpress/css/about.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.about__container{--background:transparent;--subtle-background:#def;--text:#000;--text-light:#fff;--accent-1:#3858e9;--accent-2:#3858e9;--nav-background:#fff;--nav-border:transparent;--nav-color:var(--text);--nav-current:var(--accent-1);--gap:2rem}.about-php,.credits-php,.freedoms-php,.privacy-php{background:#f0f7ff}.about-php #wpcontent,.credits-php #wpcontent,.freedoms-php #wpcontent,.privacy-php #wpcontent{background:linear-gradient(180deg,#fff 50%,#f0f7ff 100%);padding:0 24px}@media screen and (max-width:782px){.about-php.auto-fold #wpcontent,.credits-php.auto-fold #wpcontent,.freedoms-php.auto-fold #wpcontent,.privacy-php.auto-fold #wpcontent{padding-left:24px}}.about__container{max-width:1000px;margin:24px auto;clear:both}.about__container .alignleft{float:left}.about__container .alignright{float:right}.about__container .aligncenter{text-align:center}.about__container .is-vertically-aligned-top{align-self:start}.about__container .is-vertically-aligned-center{align-self:center}.about__container .is-vertically-aligned-bottom{align-self:end}.about__section{background:var(--background);clear:both}.about__container .has-accent-background-color{background-color:var(--accent-1);color:var(--text-light)}.about__container .has-accent-background-color a{color:var(--text-light)}.about__container .has-transparent-background-color{background-color:transparent}.about__container .has-accent-color{color:var(--accent-1)}.about__container .has-border{border:3px solid currentColor}.about__container .has-subtle-background-color{background-color:var(--subtle-background)}.about__container .has-background-image{background-size:contain;background-repeat:no-repeat;background-position:center}.about__section{margin:0 0 var(--gap)}.about__section .column:not(.is-edge-to-edge){padding:var(--gap)}.about__section+.about__section .is-section-header{padding-bottom:var(--gap)}.about__section .column.has-border,.about__section .column[class*=background-color],.about__section:where([class*=background-color]) .column{padding-top:var(--gap);padding-bottom:var(--gap)}.about__section .column p:first-of-type{margin-top:0}.about__section .column p:last-of-type{margin-bottom:0}.about__section .has-text-columns{columns:2;column-gap:calc(var(--gap) * 2)}.about__section .is-section-header{margin-bottom:0;padding:var(--gap) var(--gap) 0}.about__section .is-section-header p:last-child{margin-bottom:0}.about__section .is-section-header:first-child:last-child{padding:0}.about__section.is-feature{padding:var(--gap)}.about__section.is-feature p{margin:0}.about__section.is-feature p+p{margin-top:calc(var(--gap)/ 2)}.about__section.has-1-column{margin-left:auto;margin-right:auto;max-width:36em}.about__section.has-2-columns,.about__section.has-3-columns,.about__section.has-4-columns,.about__section.has-overlap-style{display:grid}.about__section.has-gutters{gap:var(--gap);margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns{grid-template-columns:1fr 1fr}.about__section.has-2-columns.is-wider-right{grid-template-columns:2fr 3fr}.about__section.has-2-columns.is-wider-left{grid-template-columns:3fr 2fr}.about__section.has-2-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-2-columns .column:nth-of-type(2n+1){grid-column-start:1}.about__section.has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-3-columns{grid-template-columns:repeat(3,1fr)}.about__section.has-3-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about__section.has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about__section.has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about__section.has-4-columns{grid-template-columns:repeat(4,1fr)}.about__section.has-4-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:4;grid-column-end:span 4}.about__section.has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about__section.has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about__section.has-2-columns .is-section-header~.column,.about__section.has-3-columns .is-section-header~.column,.about__section.has-4-columns .is-section-header~.column,.about__section.has-overlap-style .is-section-header~.column{grid-row-start:2}.about__section.has-overlap-style{grid-template-columns:repeat(7,1fr)}.about__section.has-overlap-style .column{grid-row-start:1}.about__section.has-overlap-style .column:nth-of-type(2n+1){grid-column-start:2;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column:nth-of-type(2n){grid-column-start:4;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column.is-top-layer{z-index:1}@media screen and (max-width:782px){.about__section.has-2-columns.is-wider-left,.about__section.has-2-columns.is-wider-right,.about__section.has-3-columns{display:block;margin-bottom:calc(var(--gap)/ 2)}.about__section .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section.has-2-columns.has-gutters.is-wider-left,.about__section.has-2-columns.has-gutters.is-wider-right,.about__section.has-3-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column,.about__section.has-3-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child,.about__section.has-3-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-3-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns{grid-template-columns:repeat(2,1fr)}.about__section.has-4-columns .column:nth-of-type(2n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n),.about__section.has-4-columns .column:nth-of-type(4n+3){grid-row-start:2}.about__section.has-4-columns .is-section-header{-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n),.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n+3){grid-row-start:3}.about__section.has-overlap-style{grid-template-columns:1fr}.about__section.has-overlap-style .column.column{grid-column-start:1;-ms-grid-column-span:1;grid-column-end:2;grid-row-start:1;-ms-grid-row-span:1;grid-row-end:2}}@media screen and (max-width:600px){.about__section.has-2-columns{display:block;margin-bottom:var(--gap)}.about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-2-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child{margin-bottom:0}}@media screen and (max-width:480px){.about__section.is-feature .column{padding:0}.about__section.has-4-columns{display:block;padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column{margin-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-4-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}}.about__container{line-height:1.4;color:var(--text)}.about__container h1{padding:0;color:inherit}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{margin-top:0;margin-bottom:.5em;font-size:2em;line-height:1.2;font-weight:700}.about__container h1.is-smaller-heading,.about__container h2.is-smaller-heading,.about__container h3{margin-top:0;font-size:1.6em;line-height:1.3;font-weight:400}.about__container p{font-size:inherit;line-height:inherit}.about__container p.is-subheading{margin-top:0;font-size:1.8em}.about__section a{color:var(--accent-1);text-decoration:underline}.about__section a:active,.about__section a:focus,.about__section a:hover{color:var(--accent-1);text-decoration:none}.wp-credits-list a{text-decoration:none}.wp-credits-list a:active,.wp-credits-list a:focus,.wp-credits-list a:hover{text-decoration:underline}.about__container ul{list-style:disc;margin-left:calc(var(--gap)/ 2)}.about__container img{margin:0;max-width:100%;vertical-align:middle}.about__container .about__image{margin:0}.about__container .about__image img{max-width:100%;width:100%;height:auto}.about__container .about__image figcaption{margin-top:.5em;text-align:center}.about__container .about__image .wp-video{margin-left:auto;margin-right:auto}.about__container .about__image+h3{margin-top:1.5em}.about__container hr{margin:0;height:var(--gap);border:none}.about__container hr.is-small{height:calc(var(--gap)/ 4)}.about__container hr.is-large{height:calc(var(--gap) * 2);margin:calc(var(--gap)/ 2) auto}.about__container .notice,.about__container div.error,.about__container div.updated{display:none!important}.about__section{font-size:1.2em}.about__section.is-feature{font-size:1.6em}@media screen and (max-width:480px){.about__section.is-feature{font-size:1.4em}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{font-size:2em}}.about__header{position:relative;margin-bottom:var(--gap);padding-top:0;background-image:url('../images/about-texture.png');background-color:var(--accent-2);background-size:500px 500px;background-blend-mode:overlay;color:var(--text-light)}.about__header::before{content:"";position:absolute;top:0;right:64px;z-index:0;width:300px;height:382px;background:url(../images/about-header-about.svg) no-repeat center;background-size:contain}.credits-php .about__header::before{top:auto;bottom:70px;height:310px;background-image:url('../images/about-header-credits.svg')}.freedoms-php .about__header::before{top:calc(50% - 182px);right:32px;width:375px;height:300px;background-image:url('../images/about-header-freedoms.svg')}.privacy-php .about__header::before{top:auto;bottom:-16px;background-image:url('../images/about-header-privacy.svg')}.about__header-image{margin:0 var(--gap) 3em}.about__header-title{box-sizing:border-box;padding:6rem 380px 0 0;margin:0 2rem}.about__header-title h1{margin:0 0 .5rem;padding:0;font-size:4.5rem;line-height:1;font-weight:400}.about__header-text{box-sizing:border-box;margin:0 0 7rem;padding:0 380px 0 2rem;font-size:1.6rem;line-height:1.15}.freedoms-php .about__header-text,.freedoms-php .about__header-title{padding-right:423px;margin-right:0}.about__header-navigation{position:relative;z-index:1;display:flex;justify-content:center;padding-top:0;background:var(--nav-background);color:var(--nav-color);border-bottom:3px solid var(--nav-border)}.about__header-navigation .nav-tab{margin-left:0;padding:calc(var(--gap) * .75) var(--gap);float:none;font-size:1.4em;line-height:1;border-width:0 0 3px;border-style:solid;border-color:transparent;background:0 0;color:inherit}.about__header-navigation .nav-tab:active,.about__header-navigation .nav-tab:hover{background-color:var(--nav-current);color:var(--text-light)}.about__header-navigation .nav-tab-active{margin-bottom:-3px;color:var(--nav-current);border-width:0 0 6px;border-color:var(--nav-current)}.about__header-navigation .nav-tab-active:active,.about__header-navigation .nav-tab-active:hover{background-color:var(--nav-current);color:var(--text-light);border-color:var(--nav-current)}@media screen and (max-width:960px){.about__header-title h1{font-size:4.8em}}@media screen and (max-width:782px){.about__header::before{width:240px;height:305px;right:32px}.credits-php .about__header::before{height:248px}.freedoms-php .about__header::before{top:calc(50% - 132px);height:192px;width:240px}.privacy-php .about__header::before{bottom:0;height:280px}.about__container .about__header-text{font-size:1.4em}.about__header-container{display:block}.about__header-text,.about__header-title{padding-right:288px!important}.about__header-image,.about__header-title{margin-left:calc(var(--gap)/ 2);margin-right:calc(var(--gap)/ 2)}.about__header-text{margin-top:0;margin-right:0;padding-left:calc(var(--gap)/ 2)}.about__header-navigation .nav-tab{margin-top:0;margin-right:0;padding-left:calc(var(--gap)/ 2);padding-right:calc(var(--gap)/ 2)}}@media screen and (max-width:600px){.about__header::before{display:none}.about__header-text,.about__header-title{padding-right:calc(var(--gap)/ 2)!important}}@media screen and (max-width:480px){.about__header-title p{font-size:2.4em}.about__header-title{padding-top:2rem}.about__header-text{margin-bottom:2rem}.about__header-navigation{display:block}.about__header-navigation .nav-tab{display:block;margin-bottom:0;padding:calc(var(--gap)/ 2);border-left-width:6px;border-bottom:none}.about__header-navigation .nav-tab-active{border-bottom:none;border-left-width:6px}}.about__section .wp-people-group-title{margin-bottom:calc(var(--gap) * 2);text-align:center}.about__section .wp-people-group{margin:0;display:flex;flex-wrap:wrap}.about__section .wp-person{display:inline-block;vertical-align:top;box-sizing:border-box;margin-bottom:var(--gap);width:25%;text-align:center}.about__section .compact .wp-person{height:auto;width:20%}.about__section .wp-person-avatar{display:block;margin:0 auto calc(var(--gap)/ 2);width:140px;height:140px;border-radius:100%;overflow:hidden;background:var(--accent-1)}.about__section .wp-person .gravatar{width:140px;height:140px;filter:grayscale(100%);mix-blend-mode:screen}.about__section .compact .wp-person .gravatar,.about__section .compact .wp-person-avatar{width:80px;height:80px}.about__section .wp-person .web{font-size:1.4em;font-weight:600;text-decoration:none}.about__section .wp-person .web:hover{text-decoration:underline}.about__section .compact .wp-person .web{font-size:1.2em}.about__section .wp-person .title{display:block;margin-top:.5em}@media screen and (max-width:782px){.about__section .wp-person{width:33%}.about__section .compact .wp-person{width:25%}.about__section .wp-person .gravatar,.about__section .wp-person-avatar{width:120px;height:120px}}@media screen and (max-width:600px){.about__section .wp-person{width:50%}.about__section .compact .wp-person{width:33%}.about__section .wp-person .web{font-size:1.2em}}@media screen and (max-width:480px){.about__section .wp-person{min-width:100%}.about__section .wp-person .web{font-size:1em}.about__section .compact .wp-person .web{font-size:1em}}.about__section .column .freedom-image{margin-bottom:var(--gap);max-height:140px}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:3em 0 0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;width:100%;height:auto;vertical-align:middle}.about-wrap .inline-svg img{max-width:100%;width:auto;height:auto}.about-wrap video{margin:1.5em auto}.wp-badge{background:#0073aa url(../images/w-logo-white.png?ver=20160308) no-repeat;background-position:center 25px;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20160308)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px;line-height:1.33333333}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{font-size:16px;color:#23282d}.about-wrap p{line-height:1.5;font-size:16px}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap figcaption{font-size:13px;text-align:center;color:#fff;text-overflow:ellipsis}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.about-wrap .about-text{margin:1em 200px 1em 0;color:#555d66}.about-wrap .has-1-columns,.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:grid;max-width:800px;margin-top:40px;margin-left:auto;margin-right:auto}.about-wrap .column{margin-right:20px;margin-left:20px}.about-wrap .is-wide{max-width:760px}.about-wrap .is-fullwidth{max-width:100%}.about-wrap .has-1-columns{display:block;max-width:680px;margin:0 auto 40px}.about-wrap .has-2-columns{grid-template-columns:1fr 1fr}.about-wrap .has-2-columns .column:nth-of-type(2n+1){grid-column-start:1}.about-wrap .has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about-wrap .has-2-columns.is-wider-right{grid-template-columns:1fr 2fr}.about-wrap .has-2-columns.is-wider-left{grid-template-columns:2fr 1fr}.about-wrap .has-3-columns{grid-template-columns:repeat(3,1fr)}.about-wrap .has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about-wrap .has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about-wrap .has-4-columns{grid-template-columns:repeat(4,1fr)}.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about-wrap .column :first-child{margin-top:0}.about-wrap .aligncenter{text-align:center}.about-wrap .alignleft{float:left;margin-right:40px}.about-wrap .alignright{float:right;margin-left:40px}.about-wrap .is-vertically-aligned-top{align-self:start}.about-wrap .is-vertically-aligned-center{align-self:center}.about-wrap .is-vertically-aligned-bottom{align-self:end}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .lead-description{font-size:1.5em;text-align:center}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .headline-feature{margin:0 auto 40px;max-width:680px}.about-wrap .headline-feature h2{margin:50px 0 0}.about-wrap .headline-feature img{max-width:600px;width:100%}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h2.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit;font-weight:600;text-align:left}.about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}.freedoms-php .column .freedoms-image{background-image:url('../images/freedoms.png');background-size:100%;padding-top:100%}.freedoms-php .column:nth-of-type(2) .freedoms-image{background-position:0 34%}.freedoms-php .column:nth-of-type(3) .freedoms-image{background-position:0 66%}.freedoms-php .column:nth-of-type(4) .freedoms-image{background-position:0 100%}@media screen and (max-width:782px){.about-wrap .has-3-columns,.about-wrap .has-4-columns{grid-template-columns:1fr 1fr}.about-wrap .has-3-columns .column:nth-of-type(3n+1),.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2),.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n),.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:1;grid-row-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:2;grid-row-start:2}}@media screen and (max-width:600px){.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:block}.about-wrap :not(.is-wider-right):not(.is-wider-left) .column{margin-right:0;margin-left:0}.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:grid}}@media only screen and (max-width:500px){.about-wrap{margin-right:20px;margin-left:10px}.about-wrap .about-text,.about-wrap h1{margin-right:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}}@media only screen and (max-width:480px){.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:block}.about-wrap .column{margin-right:0;margin-left:0}.about-wrap .has-2-columns.is-wider-left img,.about-wrap .has-2-columns.is-wider-right img{max-width:160px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/admin-menu-rtl.css b/tools/storybook/wordpress/css/admin-menu-rtl.css new file mode 100644 index 00000000000..46b80ee3467 --- /dev/null +++ b/tools/storybook/wordpress/css/admin-menu-rtl.css @@ -0,0 +1,944 @@ +/*! This file is auto-generated */ +#adminmenuback, +#adminmenuwrap, +#adminmenu, +#adminmenu .wp-submenu { + width: 160px; + background-color: #1d2327; +} + +#adminmenuback { + position: fixed; + top: 0; + bottom: -120px; + z-index: 1; /* positive z-index to avoid elastic scrolling woes in Safari */ +} + +.php-error #adminmenuback { + position: absolute; +} + +.php-error #adminmenuback, +.php-error #adminmenuwrap { + margin-top: 2em; +} + +#adminmenu { + clear: right; + margin: 12px 0; + padding: 0; + list-style: none; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 36px; +} + +.icon16 { + height: 18px; + width: 18px; + padding: 6px; + margin: -6px -8px 0 0; + float: right; +} + +/* New Menu icons */ + +.icon16:before { + color: #8c8f94; /* same as new icons */ + font: normal 20px/1 dashicons; + speak: never; + padding: 6px 0; + height: 34px; + width: 20px; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all .1s ease-in-out; +} + +.icon16.icon-dashboard:before { + content: "\f226"; +} + +.icon16.icon-post:before { + content: "\f109"; +} + +.icon16.icon-media:before { + content: "\f104"; +} + +.icon16.icon-links:before { + content: "\f103"; +} + +.icon16.icon-page:before { + content: "\f105"; +} + +.icon16.icon-comments:before { + content: "\f101"; + margin-top: 1px; +} + +.icon16.icon-appearance:before { + content: "\f100"; +} + +.icon16.icon-plugins:before { + content: "\f106"; +} + +.icon16.icon-users:before { + content: "\f110"; +} + +.icon16.icon-tools:before { + content: "\f107"; +} + +.icon16.icon-settings:before { + content: "\f108"; +} + +.icon16.icon-site:before { + content: "\f541"; +} + +.icon16.icon-generic:before { + content: "\f111"; +} + +/* hide background-image for icons above */ +.icon16.icon-dashboard, +.menu-icon-dashboard div.wp-menu-image, +.icon16.icon-post, +.menu-icon-post div.wp-menu-image, +.icon16.icon-media, +.menu-icon-media div.wp-menu-image, +.icon16.icon-links, +.menu-icon-links div.wp-menu-image, +.icon16.icon-page, +.menu-icon-page div.wp-menu-image, +.icon16.icon-comments, +.menu-icon-comments div.wp-menu-image, +.icon16.icon-appearance, +.menu-icon-appearance div.wp-menu-image, +.icon16.icon-plugins, +.menu-icon-plugins div.wp-menu-image, +.icon16.icon-users, +.menu-icon-users div.wp-menu-image, +.icon16.icon-tools, +.menu-icon-tools div.wp-menu-image, +.icon16.icon-settings, +.menu-icon-settings div.wp-menu-image, +.icon16.icon-site, +.menu-icon-site div.wp-menu-image, +.icon16.icon-generic, +.menu-icon-generic div.wp-menu-image { + background-image: none !important; +} + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuwrap { + position: relative; + float: right; + z-index: 9990; +} + +/* side admin menu */ +#adminmenu * { + -webkit-user-select: none; + user-select: none; +} + +#adminmenu li { + margin: 0; + padding: 0; +} + +#adminmenu a { + display: block; + line-height: 1.3; + padding: 2px 5px; + color: #f0f0f1; +} + +#adminmenu .wp-submenu a { + color: #c3c4c7; + color: rgba(240, 246, 252, 0.7); + font-size: 13px; + line-height: 1.4; + margin: 0; + padding: 5px 0; +} + +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + background: none; +} + +#adminmenu a:hover, +#adminmenu li.menu-top > a:focus, +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + color: #72aee6; +} + +#adminmenu a:hover, +#adminmenu a:focus, +.folded #adminmenu .wp-submenu-head:hover { + box-shadow: inset -4px 0 0 0 currentColor; + transition: box-shadow .1s linear; +} + +#adminmenu li.menu-top { + border: none; + min-height: 34px; + position: relative; +} + +#adminmenu .wp-submenu { + list-style: none; + position: absolute; + top: -1000em; + right: 160px; + overflow: visible; + word-wrap: break-word; + padding: 7px 0 8px; + z-index: 9999; + background-color: #2c3338; + box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); +} + +.js #adminmenu .sub-open, +.js #adminmenu .opensub .wp-submenu, +#adminmenu a.menu-top:focus + .wp-submenu, +.no-js li.wp-has-submenu:hover .wp-submenu { + top: -1px; +} + +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + top: 0; +} + +#adminmenu .wp-has-current-submenu .wp-submenu, +.no-js li.wp-has-current-submenu:hover .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu { + position: relative; + z-index: 3; + top: auto; + right: auto; + left: auto; + bottom: auto; + border: 0 none; + margin-top: 0; + box-shadow: none; +} + +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); +} + +/* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + position: relative; + background-color: #1d2327; + color: #72aee6; +} + +.folded #adminmenu li.menu-top:hover, +.folded #adminmenu li.opensub > a.menu-top, +.folded #adminmenu li > a.menu-top:focus { + z-index: 10000; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head, +#adminmenu .wp-menu-arrow div { + background: #2271b1; + color: #fff; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu a.menu-top:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu, +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { + top: 0; + right: 36px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + position: absolute; + top: -1000em; +} + +#adminmenu .wp-not-current-submenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + min-width: 160px; + width: auto; + border-right: 5px solid transparent; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .opensub .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +#adminmenu .wp-submenu li.current a:focus { + color: #fff; +} + +#adminmenu .wp-not-current-submenu li > a, +.folded #adminmenu .wp-has-current-submenu li > a { + padding-left: 16px; + padding-right: 14px; + /* Exclude from the transition the outline for Windows High Contrast mode */ + transition: all .1s ease-in-out, outline 0s; +} + +#adminmenu .wp-has-current-submenu ul > li > a, +.folded #adminmenu li.menu-top .wp-submenu > li > a { + padding: 5px 12px; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + font-size: 14px; + font-weight: 400; + line-height: 1.3; + padding: 0; +} + +#adminmenu .wp-submenu-head { + display: none; +} + +.folded #adminmenu .wp-menu-name { + position: absolute; + right: -999px; +} + +.folded #adminmenu .wp-submenu-head { + display: block; +} + +#adminmenu .wp-submenu li { + padding: 0; + margin: 0; +} + +#adminmenu .wp-menu-image img { + padding: 9px 0 0; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#adminmenu div.wp-menu-name { + padding: 8px 36px 8px 8px; + overflow-wrap: break-word; + word-wrap: break-word; + -ms-word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + hyphens: auto; +} + +#adminmenu div.wp-menu-image { + float: right; + width: 36px; + height: 34px; + margin: 0; + text-align: center; +} + +#adminmenu div.wp-menu-image.svg { + background-repeat: no-repeat; + background-position: center; + background-size: 20px auto; +} + +div.wp-menu-image:before { + color: #a7aaad; + color: rgba(240, 246, 252, 0.6); + padding: 7px 0; + transition: all .1s ease-in-out; +} + +#adminmenu div.wp-menu-image:before { + color: #a7aaad; + color: rgba(240, 246, 252, 0.6); +} + +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu .wp-has-current-submenu div.wp-menu-image:before, +#adminmenu .current div.wp-menu-image:before, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before { + color: #fff; +} + +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #72aee6; +} + +.folded #adminmenu div.wp-menu-image { + width: 35px; + height: 30px; + position: absolute; + z-index: 25; +} + +.folded #adminmenu a.menu-top { + height: 34px; +} + +/* Sticky admin menu */ +.sticky-menu #adminmenuwrap { + position: fixed; +} + +/* A new arrow */ + +.wp-menu-arrow { + display: none !important; +} + +ul#adminmenu a.wp-has-current-submenu { + position: relative; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + left: 0; + border: solid 8px transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-left-color: #f0f0f1; + top: 50%; + margin-top: -8px; +} + +.folded ul#adminmenu li:hover a.wp-has-current-submenu:after, +.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after { + display: none; +} + +.folded ul#adminmenu a.wp-has-current-submenu:after, +.folded ul#adminmenu > li a.current:after { + border-width: 4px; + margin-top: -4px; +} + +/* flyout menu arrow */ +#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + left: 0; + border: 8px solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + top: 10px; + z-index: 10000; +} + +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-width: 4px; + margin-top: -4px; + top: 18px; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #2c3338; +} + +#adminmenu li.menu-top:hover .wp-menu-image img, +#adminmenu li.wp-has-current-submenu .wp-menu-image img { + opacity: 1; + filter: alpha(opacity=100); +} + +#adminmenu li.wp-menu-separator { + height: 5px; + padding: 0; + margin: 0 0 6px; + cursor: inherit; +} + +/* @todo: is this even needed given that it's nested beneath the above li.wp-menu-separator? */ +#adminmenu div.separator { + height: 2px; + padding: 0; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #fff; + font-weight: 400; + font-size: 14px; + padding: 5px 11px 5px 4px; + margin: -7px -5px 4px 0; + border-width: 3px 5px 3px 0; + border-style: solid; + border-color: transparent; +} + +#adminmenu li.current, +.folded #adminmenu li.wp-menu-open { + border: 0 none; +} + +/* @todo: consider to use a single rule for these counters and the list table comments counters. */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + margin: 1px 2px -1px 0; + padding: 0 5px; + min-width: 18px; + height: 18px; + border-radius: 9px; + background-color: #d63638; + color: #fff; + font-size: 11px; + line-height: 1.6; + text-align: center; + z-index: 26; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins { + background-color: #d63638; + color: #fff; +} + +#adminmenu li span.count-0 { + display: none; +} + +#collapse-button { + display: block; + width: 100%; + height: 34px; + margin: 0; + border: none; + padding: 0; + position: relative; + overflow: visible; + background: none; + color: #a7aaad; + cursor: pointer; +} + +#collapse-button:hover { + color: #72aee6; +} + +#collapse-button:focus { + color: #72aee6; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: -1px; +} + +#collapse-button .collapse-button-icon, +#collapse-button .collapse-button-label { + /* absolutely positioned to avoid 1px shift in IE when button is pressed */ + display: block; + position: absolute; + top: 0; + right: 0; +} + +#collapse-button .collapse-button-label { + top: 8px; +} + +#collapse-button .collapse-button-icon { + width: 36px; + height: 34px; +} + +#collapse-button .collapse-button-label { + padding: 0 36px 0 0; +} + +.folded #collapse-button .collapse-button-label { + display: none; +} + +#collapse-button .collapse-button-icon:after { + content: "\f148"; + display: block; + position: relative; + top: 7px; + text-align: center; + font: normal 20px/1 dashicons !important; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* rtl:ignore */ +.folded #collapse-button .collapse-button-icon:after, +.rtl #collapse-button .collapse-button-icon:after { + transform: rotate(180deg); +} + +.rtl.folded #collapse-button .collapse-button-icon:after { + transform: none; +} + +#collapse-button .collapse-button-icon:after, +#collapse-button .collapse-button-label { + transition: all .1s ease-in-out; +} + +/** + * Toolbar menu toggle + */ +li#wp-admin-bar-menu-toggle { + display: none; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support #menu-appearance a[href="themes.php?page=custom-header"], +.customize-support #menu-appearance a[href="themes.php?page=custom-background"] { + display: none; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 960px) { + .auto-fold #wpcontent, + .auto-fold #wpfooter { + margin-right: 36px; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap, + .auto-fold #adminmenu, + .auto-fold #adminmenu li.menu-top { + width: 36px; + } + + .auto-fold #adminmenu .wp-submenu.sub-open, + .auto-fold #adminmenu .opensub .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, + .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu, + .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + top: 0; + right: 36px; + } + + .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu { + position: absolute; + top: -1000em; + margin-left: -1px; + padding: 7px 0 8px; + z-index: 9999; + } + + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu { + min-width: 150px; + width: auto; + } + + .auto-fold #adminmenu .wp-has-current-submenu li > a { + padding-left: 16px; + padding-right: 14px; + } + + + .auto-fold #adminmenu li.menu-top .wp-submenu > li > a { + padding-right: 12px; + } + + .auto-fold #adminmenu .wp-menu-name { + position: absolute; + right: -999px; + } + + .auto-fold #adminmenu .wp-submenu-head { + display: block; + } + + .auto-fold #adminmenu div.wp-menu-image { + height: 30px; + width: 34px; + position: absolute; + z-index: 25; + } + + .auto-fold #adminmenu a.menu-top { + min-height: 34px; + } + + .auto-fold #adminmenu li.wp-menu-open { + border: 0 none; + } + + .auto-fold #adminmenu .wp-has-current-submenu.menu-top-last { + margin-bottom: 0; + } + + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + display: none; + } + + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-width: 4px; + margin-top: -4px; + top: 16px; + } + + .auto-fold ul#adminmenu a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu > li a.current:after { + border-width: 4px; + margin-top: -4px; + } + + .auto-fold #adminmenu li.menu-top:hover, + .auto-fold #adminmenu li.opensub > a.menu-top, + .auto-fold #adminmenu li > a.menu-top:focus { + z-index: 10000; + } + + .auto-fold #collapse-menu .collapse-button-label { + display: none; + } + + /* rtl:ignore */ + .auto-fold #collapse-button .collapse-button-icon:after { + transform: rotate(180deg); + } + + .rtl.auto-fold #collapse-button .collapse-button-icon:after { + transform: none; + } + +} + +@media screen and (max-width: 782px) { + .auto-fold #wpcontent { + position: relative; + margin-right: 0; + padding-right: 10px; + } + + .sticky-menu #adminmenuwrap { + position: relative; + z-index: auto; + top: 0; + } + + /* Sidebar Adjustments */ + .auto-fold #adminmenu, + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap { + position: absolute; + width: 190px; + z-index: 100; + } + + .auto-fold #adminmenuback { + position: fixed; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap { + display: none; + } + + .auto-fold .wp-responsive-open #adminmenuback, + .auto-fold .wp-responsive-open #adminmenuwrap { + display: block; + } + + .auto-fold #adminmenu li.menu-top { + width: 100%; + } + + /* Resize the admin menu items to a comfortable touch size */ + .auto-fold #adminmenu li a { + font-size: 16px; + padding: 5px; + } + + .auto-fold #adminmenu li.menu-top .wp-submenu > li > a { + padding: 10px 20px 10px 10px; + } + + /* Restore the menu names */ + .auto-fold #adminmenu .wp-menu-name { + position: static; + } + + /* Switch the arrow side */ + .auto-fold ul#adminmenu a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu > li.current > a.current:after { + border-width: 8px; + margin-top: -8px; + } + + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + display: none; + } + + /* Make the submenus appear correctly when tapped. */ + #adminmenu .wp-submenu { + position: relative; + display: none; + } + + .auto-fold #adminmenu .selected .wp-submenu, + .auto-fold #adminmenu .wp-menu-open .wp-submenu { + position: relative; + display: block; + top: 0; + right: -1px; + box-shadow: none; + } + + .auto-fold #adminmenu .selected .wp-submenu:after, + .auto-fold #adminmenu .wp-menu-open .wp-submenu:after { + display: none; + } + + .auto-fold #adminmenu .opensub .wp-submenu { + display: none; + } + + .auto-fold #adminmenu .selected .wp-submenu { + display: block; + } + + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + display: block; + } + + .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + position: relative; + right: -1px; + left: 0; + top: 0; + } + + #adminmenu .wp-not-current-submenu .wp-submenu, + .folded #adminmenu .wp-has-current-submenu .wp-submenu { + border-right: none; + } + + /* Remove submenu headers and adjust sub meu*/ + #adminmenu .wp-submenu .wp-submenu-head { + display: none; + } + + /* Toolbar menu toggle */ + #wp-responsive-toggle { + position: fixed; + top: 5px; + right: 4px; + padding-left: 10px; + z-index: 99999; + border: none; + box-sizing: border-box; + } + + #wpadminbar #wp-admin-bar-menu-toggle a { + display: block; + padding: 0; + overflow: hidden; + outline: none; + text-decoration: none; + border: 1px solid transparent; + background: none; + height: 44px; + margin-right: -1px; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #2c3338; + } + + li#wp-admin-bar-menu-toggle { + display: block; + } + + #wpadminbar #wp-admin-bar-menu-toggle a:hover { + border: 1px solid transparent; + } + + #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + content: "\f228"; + display: inline-block; + float: right; + font: normal 40px/45px dashicons; + vertical-align: middle; + outline: none; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + height: 44px; + width: 50px; + padding: 0; + border: none; + text-align: center; + text-decoration: none; + box-sizing: border-box; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #72aee6; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + #adminmenuwrap, + #adminmenuback { + display: none; + } + + .wp-responsive-open #adminmenuwrap, + .wp-responsive-open #adminmenuback { + display: block; + } + + .auto-fold #adminmenu { + top: 46px; + } +} diff --git a/tools/storybook/wordpress/css/admin-menu-rtl.min.css b/tools/storybook/wordpress/css/admin-menu-rtl.min.css new file mode 100644 index 00000000000..58ebeeaa12b --- /dev/null +++ b/tools/storybook/wordpress/css/admin-menu-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#1d2327}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}.php-error #adminmenuback{position:absolute}.php-error #adminmenuback,.php-error #adminmenuwrap{margin-top:2em}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#8c8f94;font:normal 20px/1 dashicons;speak:never;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{-webkit-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0}#adminmenu a{display:block;line-height:1.3;padding:2px 5px;color:#f0f0f1}#adminmenu .wp-submenu a{color:#c3c4c7;color:rgba(240,246,252,.7);font-size:13px;line-height:1.4;margin:0;padding:5px 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#72aee6}#adminmenu a:focus,#adminmenu a:hover,.folded #adminmenu .wp-submenu-head:hover{box-shadow:inset -4px 0 0 0 currentColor;transition:box-shadow .1s linear}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible;word-wrap:break-word;padding:7px 0 8px;z-index:9999;background-color:#2c3338;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:0}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;right:auto;left:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none}.folded #adminmenu .wp-has-current-submenu .wp-submenu{box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#1d2327;color:#72aee6}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{background:#2271b1;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;right:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto;border-right:5px solid transparent}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px;transition:all .1s ease-in-out,outline 0s}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:1.3;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;right:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6}#adminmenu div.wp-menu-name{padding:8px 36px 8px 8px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#adminmenu div.wp-menu-image{float:right;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#72aee6}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{left:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-left-color:#f0f0f1;top:50%;margin-top:-8px}.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after,.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{left:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#2c3338}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:5px 11px 5px 4px;margin:-7px -5px 4px 0;border-width:3px 5px 3px 0;border-style:solid;border-color:transparent}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 2px -1px 0;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#d63638;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#d63638;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;background:0 0;color:#a7aaad;cursor:pointer}#collapse-button:hover{color:#72aee6}#collapse-button:focus{color:#72aee6;outline:1px solid transparent;outline-offset:-1px}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;right:0}#collapse-button .collapse-button-label{top:8px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 36px 0 0}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-right:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;right:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-left:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-right:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;right:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{min-height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-right:0;padding-right:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback{position:fixed}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 20px 10px 10px}.auto-fold #adminmenu .wp-menu-name{position:static}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;right:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-right:none}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-right:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#2c3338}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:right;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#72aee6}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/admin-menu.css b/tools/storybook/wordpress/css/admin-menu.css new file mode 100644 index 00000000000..243dde7daa3 --- /dev/null +++ b/tools/storybook/wordpress/css/admin-menu.css @@ -0,0 +1,943 @@ +#adminmenuback, +#adminmenuwrap, +#adminmenu, +#adminmenu .wp-submenu { + width: 160px; + background-color: #1d2327; +} + +#adminmenuback { + position: fixed; + top: 0; + bottom: -120px; + z-index: 1; /* positive z-index to avoid elastic scrolling woes in Safari */ +} + +.php-error #adminmenuback { + position: absolute; +} + +.php-error #adminmenuback, +.php-error #adminmenuwrap { + margin-top: 2em; +} + +#adminmenu { + clear: left; + margin: 12px 0; + padding: 0; + list-style: none; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 36px; +} + +.icon16 { + height: 18px; + width: 18px; + padding: 6px; + margin: -6px 0 0 -8px; + float: left; +} + +/* New Menu icons */ + +.icon16:before { + color: #8c8f94; /* same as new icons */ + font: normal 20px/1 dashicons; + speak: never; + padding: 6px 0; + height: 34px; + width: 20px; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all .1s ease-in-out; +} + +.icon16.icon-dashboard:before { + content: "\f226"; +} + +.icon16.icon-post:before { + content: "\f109"; +} + +.icon16.icon-media:before { + content: "\f104"; +} + +.icon16.icon-links:before { + content: "\f103"; +} + +.icon16.icon-page:before { + content: "\f105"; +} + +.icon16.icon-comments:before { + content: "\f101"; + margin-top: 1px; +} + +.icon16.icon-appearance:before { + content: "\f100"; +} + +.icon16.icon-plugins:before { + content: "\f106"; +} + +.icon16.icon-users:before { + content: "\f110"; +} + +.icon16.icon-tools:before { + content: "\f107"; +} + +.icon16.icon-settings:before { + content: "\f108"; +} + +.icon16.icon-site:before { + content: "\f541"; +} + +.icon16.icon-generic:before { + content: "\f111"; +} + +/* hide background-image for icons above */ +.icon16.icon-dashboard, +.menu-icon-dashboard div.wp-menu-image, +.icon16.icon-post, +.menu-icon-post div.wp-menu-image, +.icon16.icon-media, +.menu-icon-media div.wp-menu-image, +.icon16.icon-links, +.menu-icon-links div.wp-menu-image, +.icon16.icon-page, +.menu-icon-page div.wp-menu-image, +.icon16.icon-comments, +.menu-icon-comments div.wp-menu-image, +.icon16.icon-appearance, +.menu-icon-appearance div.wp-menu-image, +.icon16.icon-plugins, +.menu-icon-plugins div.wp-menu-image, +.icon16.icon-users, +.menu-icon-users div.wp-menu-image, +.icon16.icon-tools, +.menu-icon-tools div.wp-menu-image, +.icon16.icon-settings, +.menu-icon-settings div.wp-menu-image, +.icon16.icon-site, +.menu-icon-site div.wp-menu-image, +.icon16.icon-generic, +.menu-icon-generic div.wp-menu-image { + background-image: none !important; +} + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuwrap { + position: relative; + float: left; + z-index: 9990; +} + +/* side admin menu */ +#adminmenu * { + -webkit-user-select: none; + user-select: none; +} + +#adminmenu li { + margin: 0; + padding: 0; +} + +#adminmenu a { + display: block; + line-height: 1.3; + padding: 2px 5px; + color: #f0f0f1; +} + +#adminmenu .wp-submenu a { + color: #c3c4c7; + color: rgba(240, 246, 252, 0.7); + font-size: 13px; + line-height: 1.4; + margin: 0; + padding: 5px 0; +} + +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + background: none; +} + +#adminmenu a:hover, +#adminmenu li.menu-top > a:focus, +#adminmenu .wp-submenu a:hover, +#adminmenu .wp-submenu a:focus { + color: #72aee6; +} + +#adminmenu a:hover, +#adminmenu a:focus, +.folded #adminmenu .wp-submenu-head:hover { + box-shadow: inset 4px 0 0 0 currentColor; + transition: box-shadow .1s linear; +} + +#adminmenu li.menu-top { + border: none; + min-height: 34px; + position: relative; +} + +#adminmenu .wp-submenu { + list-style: none; + position: absolute; + top: -1000em; + left: 160px; + overflow: visible; + word-wrap: break-word; + padding: 7px 0 8px; + z-index: 9999; + background-color: #2c3338; + box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); +} + +.js #adminmenu .sub-open, +.js #adminmenu .opensub .wp-submenu, +#adminmenu a.menu-top:focus + .wp-submenu, +.no-js li.wp-has-submenu:hover .wp-submenu { + top: -1px; +} + +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + top: 0; +} + +#adminmenu .wp-has-current-submenu .wp-submenu, +.no-js li.wp-has-current-submenu:hover .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu { + position: relative; + z-index: 3; + top: auto; + left: auto; + right: auto; + bottom: auto; + border: 0 none; + margin-top: 0; + box-shadow: none; +} + +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); +} + +/* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + position: relative; + background-color: #1d2327; + color: #72aee6; +} + +.folded #adminmenu li.menu-top:hover, +.folded #adminmenu li.opensub > a.menu-top, +.folded #adminmenu li > a.menu-top:focus { + z-index: 10000; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head, +#adminmenu .wp-menu-arrow div { + background: #2271b1; + color: #fff; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, +.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu a.menu-top:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu, +.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu { + top: 0; + left: 36px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + position: absolute; + top: -1000em; +} + +#adminmenu .wp-not-current-submenu .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + min-width: 160px; + width: auto; + border-left: 5px solid transparent; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .opensub .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +#adminmenu .wp-submenu li.current a:focus { + color: #fff; +} + +#adminmenu .wp-not-current-submenu li > a, +.folded #adminmenu .wp-has-current-submenu li > a { + padding-right: 16px; + padding-left: 14px; + /* Exclude from the transition the outline for Windows High Contrast mode */ + transition: all .1s ease-in-out, outline 0s; +} + +#adminmenu .wp-has-current-submenu ul > li > a, +.folded #adminmenu li.menu-top .wp-submenu > li > a { + padding: 5px 12px; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + font-size: 14px; + font-weight: 400; + line-height: 1.3; + padding: 0; +} + +#adminmenu .wp-submenu-head { + display: none; +} + +.folded #adminmenu .wp-menu-name { + position: absolute; + left: -999px; +} + +.folded #adminmenu .wp-submenu-head { + display: block; +} + +#adminmenu .wp-submenu li { + padding: 0; + margin: 0; +} + +#adminmenu .wp-menu-image img { + padding: 9px 0 0; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#adminmenu div.wp-menu-name { + padding: 8px 8px 8px 36px; + overflow-wrap: break-word; + word-wrap: break-word; + -ms-word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + hyphens: auto; +} + +#adminmenu div.wp-menu-image { + float: left; + width: 36px; + height: 34px; + margin: 0; + text-align: center; +} + +#adminmenu div.wp-menu-image.svg { + background-repeat: no-repeat; + background-position: center; + background-size: 20px auto; +} + +div.wp-menu-image:before { + color: #a7aaad; + color: rgba(240, 246, 252, 0.6); + padding: 7px 0; + transition: all .1s ease-in-out; +} + +#adminmenu div.wp-menu-image:before { + color: #a7aaad; + color: rgba(240, 246, 252, 0.6); +} + +#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu .wp-has-current-submenu div.wp-menu-image:before, +#adminmenu .current div.wp-menu-image:before, +#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before { + color: #fff; +} + +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #72aee6; +} + +.folded #adminmenu div.wp-menu-image { + width: 35px; + height: 30px; + position: absolute; + z-index: 25; +} + +.folded #adminmenu a.menu-top { + height: 34px; +} + +/* Sticky admin menu */ +.sticky-menu #adminmenuwrap { + position: fixed; +} + +/* A new arrow */ + +.wp-menu-arrow { + display: none !important; +} + +ul#adminmenu a.wp-has-current-submenu { + position: relative; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + right: 0; + border: solid 8px transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-right-color: #f0f0f1; + top: 50%; + margin-top: -8px; +} + +.folded ul#adminmenu li:hover a.wp-has-current-submenu:after, +.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after { + display: none; +} + +.folded ul#adminmenu a.wp-has-current-submenu:after, +.folded ul#adminmenu > li a.current:after { + border-width: 4px; + margin-top: -4px; +} + +/* flyout menu arrow */ +#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + right: 0; + border: 8px solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + top: 10px; + z-index: 10000; +} + +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-width: 4px; + margin-top: -4px; + top: 18px; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #2c3338; +} + +#adminmenu li.menu-top:hover .wp-menu-image img, +#adminmenu li.wp-has-current-submenu .wp-menu-image img { + opacity: 1; + filter: alpha(opacity=100); +} + +#adminmenu li.wp-menu-separator { + height: 5px; + padding: 0; + margin: 0 0 6px; + cursor: inherit; +} + +/* @todo: is this even needed given that it's nested beneath the above li.wp-menu-separator? */ +#adminmenu div.separator { + height: 2px; + padding: 0; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #fff; + font-weight: 400; + font-size: 14px; + padding: 5px 4px 5px 11px; + margin: -7px 0 4px -5px; + border-width: 3px 0 3px 5px; + border-style: solid; + border-color: transparent; +} + +#adminmenu li.current, +.folded #adminmenu li.wp-menu-open { + border: 0 none; +} + +/* @todo: consider to use a single rule for these counters and the list table comments counters. */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + display: inline-block; + vertical-align: top; + box-sizing: border-box; + margin: 1px 0 -1px 2px; + padding: 0 5px; + min-width: 18px; + height: 18px; + border-radius: 9px; + background-color: #d63638; + color: #fff; + font-size: 11px; + line-height: 1.6; + text-align: center; + z-index: 26; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins { + background-color: #d63638; + color: #fff; +} + +#adminmenu li span.count-0 { + display: none; +} + +#collapse-button { + display: block; + width: 100%; + height: 34px; + margin: 0; + border: none; + padding: 0; + position: relative; + overflow: visible; + background: none; + color: #a7aaad; + cursor: pointer; +} + +#collapse-button:hover { + color: #72aee6; +} + +#collapse-button:focus { + color: #72aee6; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: -1px; +} + +#collapse-button .collapse-button-icon, +#collapse-button .collapse-button-label { + /* absolutely positioned to avoid 1px shift in IE when button is pressed */ + display: block; + position: absolute; + top: 0; + left: 0; +} + +#collapse-button .collapse-button-label { + top: 8px; +} + +#collapse-button .collapse-button-icon { + width: 36px; + height: 34px; +} + +#collapse-button .collapse-button-label { + padding: 0 0 0 36px; +} + +.folded #collapse-button .collapse-button-label { + display: none; +} + +#collapse-button .collapse-button-icon:after { + content: "\f148"; + display: block; + position: relative; + top: 7px; + text-align: center; + font: normal 20px/1 dashicons !important; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* rtl:ignore */ +.folded #collapse-button .collapse-button-icon:after, +.rtl #collapse-button .collapse-button-icon:after { + transform: rotate(180deg); +} + +.rtl.folded #collapse-button .collapse-button-icon:after { + transform: none; +} + +#collapse-button .collapse-button-icon:after, +#collapse-button .collapse-button-label { + transition: all .1s ease-in-out; +} + +/** + * Toolbar menu toggle + */ +li#wp-admin-bar-menu-toggle { + display: none; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support #menu-appearance a[href="themes.php?page=custom-header"], +.customize-support #menu-appearance a[href="themes.php?page=custom-background"] { + display: none; +} + +/* Auto-folding of the admin menu */ +@media only screen and (max-width: 960px) { + .auto-fold #wpcontent, + .auto-fold #wpfooter { + margin-left: 36px; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap, + .auto-fold #adminmenu, + .auto-fold #adminmenu li.menu-top { + width: 36px; + } + + .auto-fold #adminmenu .wp-submenu.sub-open, + .auto-fold #adminmenu .opensub .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, + .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu, + .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + top: 0; + left: 36px; + } + + .auto-fold #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu { + position: absolute; + top: -1000em; + margin-right: -1px; + padding: 7px 0 8px; + z-index: 9999; + } + + .auto-fold #adminmenu .wp-has-current-submenu .wp-submenu { + min-width: 150px; + width: auto; + } + + .auto-fold #adminmenu .wp-has-current-submenu li > a { + padding-right: 16px; + padding-left: 14px; + } + + + .auto-fold #adminmenu li.menu-top .wp-submenu > li > a { + padding-left: 12px; + } + + .auto-fold #adminmenu .wp-menu-name { + position: absolute; + left: -999px; + } + + .auto-fold #adminmenu .wp-submenu-head { + display: block; + } + + .auto-fold #adminmenu div.wp-menu-image { + height: 30px; + width: 34px; + position: absolute; + z-index: 25; + } + + .auto-fold #adminmenu a.menu-top { + min-height: 34px; + } + + .auto-fold #adminmenu li.wp-menu-open { + border: 0 none; + } + + .auto-fold #adminmenu .wp-has-current-submenu.menu-top-last { + margin-bottom: 0; + } + + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + display: none; + } + + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-width: 4px; + margin-top: -4px; + top: 16px; + } + + .auto-fold ul#adminmenu a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu > li a.current:after { + border-width: 4px; + margin-top: -4px; + } + + .auto-fold #adminmenu li.menu-top:hover, + .auto-fold #adminmenu li.opensub > a.menu-top, + .auto-fold #adminmenu li > a.menu-top:focus { + z-index: 10000; + } + + .auto-fold #collapse-menu .collapse-button-label { + display: none; + } + + /* rtl:ignore */ + .auto-fold #collapse-button .collapse-button-icon:after { + transform: rotate(180deg); + } + + .rtl.auto-fold #collapse-button .collapse-button-icon:after { + transform: none; + } + +} + +@media screen and (max-width: 782px) { + .auto-fold #wpcontent { + position: relative; + margin-left: 0; + padding-left: 10px; + } + + .sticky-menu #adminmenuwrap { + position: relative; + z-index: auto; + top: 0; + } + + /* Sidebar Adjustments */ + .auto-fold #adminmenu, + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap { + position: absolute; + width: 190px; + z-index: 100; + } + + .auto-fold #adminmenuback { + position: fixed; + } + + .auto-fold #adminmenuback, + .auto-fold #adminmenuwrap { + display: none; + } + + .auto-fold .wp-responsive-open #adminmenuback, + .auto-fold .wp-responsive-open #adminmenuwrap { + display: block; + } + + .auto-fold #adminmenu li.menu-top { + width: 100%; + } + + /* Resize the admin menu items to a comfortable touch size */ + .auto-fold #adminmenu li a { + font-size: 16px; + padding: 5px; + } + + .auto-fold #adminmenu li.menu-top .wp-submenu > li > a { + padding: 10px 10px 10px 20px; + } + + /* Restore the menu names */ + .auto-fold #adminmenu .wp-menu-name { + position: static; + } + + /* Switch the arrow side */ + .auto-fold ul#adminmenu a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu > li.current > a.current:after { + border-width: 8px; + margin-top: -8px; + } + + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + display: none; + } + + /* Make the submenus appear correctly when tapped. */ + #adminmenu .wp-submenu { + position: relative; + display: none; + } + + .auto-fold #adminmenu .selected .wp-submenu, + .auto-fold #adminmenu .wp-menu-open .wp-submenu { + position: relative; + display: block; + top: 0; + left: -1px; + box-shadow: none; + } + + .auto-fold #adminmenu .selected .wp-submenu:after, + .auto-fold #adminmenu .wp-menu-open .wp-submenu:after { + display: none; + } + + .auto-fold #adminmenu .opensub .wp-submenu { + display: none; + } + + .auto-fold #adminmenu .selected .wp-submenu { + display: block; + } + + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, + .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + display: block; + } + + .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, + .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { + position: relative; + left: -1px; + right: 0; + top: 0; + } + + #adminmenu .wp-not-current-submenu .wp-submenu, + .folded #adminmenu .wp-has-current-submenu .wp-submenu { + border-left: none; + } + + /* Remove submenu headers and adjust sub meu*/ + #adminmenu .wp-submenu .wp-submenu-head { + display: none; + } + + /* Toolbar menu toggle */ + #wp-responsive-toggle { + position: fixed; + top: 5px; + left: 4px; + padding-right: 10px; + z-index: 99999; + border: none; + box-sizing: border-box; + } + + #wpadminbar #wp-admin-bar-menu-toggle a { + display: block; + padding: 0; + overflow: hidden; + outline: none; + text-decoration: none; + border: 1px solid transparent; + background: none; + height: 44px; + margin-left: -1px; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #2c3338; + } + + li#wp-admin-bar-menu-toggle { + display: block; + } + + #wpadminbar #wp-admin-bar-menu-toggle a:hover { + border: 1px solid transparent; + } + + #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + content: "\f228"; + display: inline-block; + float: left; + font: normal 40px/45px dashicons; + vertical-align: middle; + outline: none; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + height: 44px; + width: 50px; + padding: 0; + border: none; + text-align: center; + text-decoration: none; + box-sizing: border-box; + } + + .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #72aee6; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + #adminmenuwrap, + #adminmenuback { + display: none; + } + + .wp-responsive-open #adminmenuwrap, + .wp-responsive-open #adminmenuback { + display: block; + } + + .auto-fold #adminmenu { + top: 46px; + } +} diff --git a/tools/storybook/wordpress/css/admin-menu.min.css b/tools/storybook/wordpress/css/admin-menu.min.css new file mode 100644 index 00000000000..5f12ce44935 --- /dev/null +++ b/tools/storybook/wordpress/css/admin-menu.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#1d2327}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}.php-error #adminmenuback{position:absolute}.php-error #adminmenuback,.php-error #adminmenuwrap{margin-top:2em}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#8c8f94;font:normal 20px/1 dashicons;speak:never;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{-webkit-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0}#adminmenu a{display:block;line-height:1.3;padding:2px 5px;color:#f0f0f1}#adminmenu .wp-submenu a{color:#c3c4c7;color:rgba(240,246,252,.7);font-size:13px;line-height:1.4;margin:0;padding:5px 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#72aee6}#adminmenu a:focus,#adminmenu a:hover,.folded #adminmenu .wp-submenu-head:hover{box-shadow:inset 4px 0 0 0 currentColor;transition:box-shadow .1s linear}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible;word-wrap:break-word;padding:7px 0 8px;z-index:9999;background-color:#2c3338;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:0}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none}.folded #adminmenu .wp-has-current-submenu .wp-submenu{box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#1d2327;color:#72aee6}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{background:#2271b1;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;left:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto;border-left:5px solid transparent}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px;transition:all .1s ease-in-out,outline 0s}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:1.3;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;left:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6}#adminmenu div.wp-menu-name{padding:8px 8px 8px 36px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#adminmenu div.wp-menu-image{float:left;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#72aee6}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{right:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f0f0f1;top:50%;margin-top:-8px}.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after,.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#2c3338}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:5px 4px 5px 11px;margin:-7px 0 4px -5px;border-width:3px 0 3px 5px;border-style:solid;border-color:transparent}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 0 -1px 2px;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#d63638;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#d63638;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;background:0 0;color:#a7aaad;cursor:pointer}#collapse-button:hover{color:#72aee6}#collapse-button:focus{color:#72aee6;outline:1px solid transparent;outline-offset:-1px}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;left:0}#collapse-button .collapse-button-label{top:8px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 0 0 36px}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;left:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-right:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;left:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{min-height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-left:0;padding-left:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback{position:fixed}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 10px 10px 20px}.auto-fold #adminmenu .wp-menu-name{position:static}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;left:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-left:none}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-left:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#2c3338}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:left;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#72aee6}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/code-editor-rtl.css b/tools/storybook/wordpress/css/code-editor-rtl.css new file mode 100644 index 00000000000..a485e6c6c35 --- /dev/null +++ b/tools/storybook/wordpress/css/code-editor-rtl.css @@ -0,0 +1,77 @@ +/*! This file is auto-generated */ +.wrap [class*="CodeMirror-lint-marker"], +.wp-core-ui [class*="CodeMirror-lint-message"], +.wrap .CodeMirror-lint-marker-multiple { + background-image: none; +} + +.wp-core-ui .CodeMirror-lint-marker-error, +.wp-core-ui .CodeMirror-lint-marker-warning { + cursor: help; +} + +.wrap .CodeMirror-lint-marker-multiple { + position: absolute; + top: 0; +} + +.wrap [class*="CodeMirror-lint-marker"]:before { + font: normal 18px/1 dashicons; + position: relative; + top: -2px; +} + +.wp-core-ui [class*="CodeMirror-lint-message"]:before { + font: normal 16px/1 dashicons; + right: 16px; + position: absolute; +} + +.wp-core-ui .CodeMirror-lint-message-error, +.wp-core-ui .CodeMirror-lint-message-warning { + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + margin: 5px 0 2px; + padding: 3px 28px 3px 12px; +} + +.wp-core-ui .CodeMirror-lint-message-warning { + background-color: #fcf9e8; + border-right: 4px solid #dba617; +} + +.wrap .CodeMirror-lint-marker-warning:before, +.wp-core-ui .CodeMirror-lint-message-warning:before { + content: "\f534"; + color: #dba617; +} + +.wp-core-ui .CodeMirror-lint-message-error { + background-color: #fcf0f1; + border-right: 4px solid #d63638; +} + +.wrap .CodeMirror-lint-marker-error:before, +.wp-core-ui .CodeMirror-lint-message-error:before { + content: "\f153"; + color: #d63638; +} + +.wp-core-ui .CodeMirror-lint-tooltip { + background: none; + border: none; + border-radius: 0; + direction: rtl; +} + +.wrap .CodeMirror .CodeMirror-matchingbracket { + background: rgba(219, 166, 23, 0.3); + color: inherit; +} + +.CodeMirror { + text-align: right; +} + +.wrap .CodeMirror .CodeMirror-linenumber { + color: #646970; +} diff --git a/tools/storybook/wordpress/css/code-editor-rtl.min.css b/tools/storybook/wordpress/css/code-editor-rtl.min.css new file mode 100644 index 00000000000..d746eb2089e --- /dev/null +++ b/tools/storybook/wordpress/css/code-editor-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;right:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 28px 3px 12px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-right:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-right:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:rtl}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:right}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/code-editor.css b/tools/storybook/wordpress/css/code-editor.css new file mode 100644 index 00000000000..92c39405ba1 --- /dev/null +++ b/tools/storybook/wordpress/css/code-editor.css @@ -0,0 +1,76 @@ +.wrap [class*="CodeMirror-lint-marker"], +.wp-core-ui [class*="CodeMirror-lint-message"], +.wrap .CodeMirror-lint-marker-multiple { + background-image: none; +} + +.wp-core-ui .CodeMirror-lint-marker-error, +.wp-core-ui .CodeMirror-lint-marker-warning { + cursor: help; +} + +.wrap .CodeMirror-lint-marker-multiple { + position: absolute; + top: 0; +} + +.wrap [class*="CodeMirror-lint-marker"]:before { + font: normal 18px/1 dashicons; + position: relative; + top: -2px; +} + +.wp-core-ui [class*="CodeMirror-lint-message"]:before { + font: normal 16px/1 dashicons; + left: 16px; + position: absolute; +} + +.wp-core-ui .CodeMirror-lint-message-error, +.wp-core-ui .CodeMirror-lint-message-warning { + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + margin: 5px 0 2px; + padding: 3px 12px 3px 28px; +} + +.wp-core-ui .CodeMirror-lint-message-warning { + background-color: #fcf9e8; + border-left: 4px solid #dba617; +} + +.wrap .CodeMirror-lint-marker-warning:before, +.wp-core-ui .CodeMirror-lint-message-warning:before { + content: "\f534"; + color: #dba617; +} + +.wp-core-ui .CodeMirror-lint-message-error { + background-color: #fcf0f1; + border-left: 4px solid #d63638; +} + +.wrap .CodeMirror-lint-marker-error:before, +.wp-core-ui .CodeMirror-lint-message-error:before { + content: "\f153"; + color: #d63638; +} + +.wp-core-ui .CodeMirror-lint-tooltip { + background: none; + border: none; + border-radius: 0; + direction: ltr; +} + +.wrap .CodeMirror .CodeMirror-matchingbracket { + background: rgba(219, 166, 23, 0.3); + color: inherit; +} + +.CodeMirror { + text-align: left; +} + +.wrap .CodeMirror .CodeMirror-linenumber { + color: #646970; +} diff --git a/tools/storybook/wordpress/css/code-editor.min.css b/tools/storybook/wordpress/css/code-editor.min.css new file mode 100644 index 00000000000..fc08821a855 --- /dev/null +++ b/tools/storybook/wordpress/css/code-editor.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;left:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 12px 3px 28px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-left:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-left:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:left}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/color-picker-rtl.css b/tools/storybook/wordpress/css/color-picker-rtl.css new file mode 100644 index 00000000000..7b8e1842bf5 --- /dev/null +++ b/tools/storybook/wordpress/css/color-picker-rtl.css @@ -0,0 +1,183 @@ +/*! This file is auto-generated */ +/* rtl:ignore */ +.wp-color-picker { + width: 80px; + direction: ltr; +} + +.wp-picker-container .hidden { + display: none; +} + +/* Needs higher specificiity. */ +.wp-picker-container .wp-color-result.button { + min-height: 30px; + margin: 0 0 6px 6px; + padding: 0 30px 0 0; + font-size: 11px; +} + +.wp-color-result-text { + background: #f6f7f7; + border-radius: 2px 0 0 2px; + border-right: 1px solid #c3c4c7; + color: #50575e; + display: block; + line-height: 2.54545455; /* 28px */ + padding: 0 6px; + text-align: center; +} + +.wp-color-result:hover, +.wp-color-result:focus { + background: #f6f7f7; + border-color: #8c8f94; + color: #1d2327; +} + +.wp-color-result:hover:after, +.wp-color-result:focus:after { + color: #1d2327; + border-color: #a7aaad; + border-right: 1px solid #8c8f94; +} + +.wp-picker-container { + display: inline-block; +} + +.wp-color-result:focus { + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); +} + +.wp-color-result:active { + /* See Trac ticket #39662 */ + transform: none !important; +} + +.wp-picker-open + .wp-picker-input-wrap { + display: inline-block; + vertical-align: top; +} + +.wp-picker-input-wrap label { + display: inline-block; + vertical-align: top; +} + +/* For the old `custom-background` page, to override the inline-block and margins from `.form-table td fieldset label`. */ +.form-table .wp-picker-input-wrap label { + margin: 0 !important; +} + +.wp-picker-input-wrap .button.wp-picker-default, +.wp-picker-input-wrap .button.wp-picker-clear, +.wp-customizer .wp-picker-input-wrap .button.wp-picker-default, +.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { + margin-right: 6px; + padding: 0 8px; + line-height: 2.54545455; /* 28px */ + min-height: 30px; +} + +.wp-picker-container .iris-square-slider .ui-slider-handle:focus { + background-color: #50575e +} + +.wp-picker-container .iris-picker { + border-radius: 0; + border-color: #dcdcde; + margin-top: 6px; +} + +.wp-picker-container input[type="text"].wp-color-picker { + width: 4rem; + font-size: 12px; + font-family: monospace; + line-height: 2.33333333; /* 28px */ + margin: 0; + padding: 0 5px; + vertical-align: top; + min-height: 30px; +} + +.wp-color-picker::-webkit-input-placeholder { + color: #646970; +} + +.wp-color-picker::-moz-placeholder { + color: #646970; + opacity: 1; +} + +.wp-color-picker:-ms-input-placeholder { + color: #646970; +} + +.wp-picker-container input[type="text"].iris-error { + background-color: #fcf0f1; + border-color: #d63638; + color: #000; +} + +.iris-picker .ui-square-handle:focus, +.iris-picker .iris-strip .ui-slider-handle:focus { + border-color: #3582c4; + border-style: solid; + box-shadow: 0 0 0 1px #3582c4; + outline: 2px solid transparent; +} + +.iris-picker .iris-palette:focus { + box-shadow: 0 0 0 2px #3582c4; +} + +@media screen and (max-width: 782px) { + .wp-picker-container input[type="text"].wp-color-picker { + width: 5rem; + font-size: 16px; + line-height: 1.875; /* 30px */ + min-height: 32px; + } + + .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { + padding: 0 5px; + } + + .wp-picker-input-wrap .button.wp-picker-default, + .wp-picker-input-wrap .button.wp-picker-clear { + padding: 0 8px; + line-height: 2.14285714; /* 30px */ + min-height: 32px; + } + + .wp-customizer .wp-picker-input-wrap .button.wp-picker-default, + .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { + padding: 0 8px; + font-size: 14px; + line-height: 2.14285714; /* 30px */ + min-height: 32px; + } + + .wp-picker-container .wp-color-result.button { + padding: 0 40px 0 0; + font-size: 14px; + line-height: 2.14285714; /* 30px */ + } + + .wp-customizer .wp-picker-container .wp-color-result.button { + font-size: 14px; + line-height: 2.14285714; /* 30px */ + } + + .wp-picker-container .wp-color-result-text { + padding: 0 14px; + font-size: inherit; + line-height: inherit; + } + + .wp-customizer .wp-picker-container .wp-color-result-text { + padding: 0 10px; + } +} diff --git a/tools/storybook/wordpress/css/color-picker-rtl.min.css b/tools/storybook/wordpress/css/color-picker-rtl.min.css new file mode 100644 index 00000000000..63f4ff7b73c --- /dev/null +++ b/tools/storybook/wordpress/css/color-picker-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 0 6px 6px;padding:0 30px 0 0;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:2px 0 0 2px;border-right:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-right:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-right:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 40px 0 0;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/color-picker.css b/tools/storybook/wordpress/css/color-picker.css new file mode 100644 index 00000000000..89513949579 --- /dev/null +++ b/tools/storybook/wordpress/css/color-picker.css @@ -0,0 +1,182 @@ +/* rtl:ignore */ +.wp-color-picker { + width: 80px; + direction: ltr; +} + +.wp-picker-container .hidden { + display: none; +} + +/* Needs higher specificiity. */ +.wp-picker-container .wp-color-result.button { + min-height: 30px; + margin: 0 6px 6px 0; + padding: 0 0 0 30px; + font-size: 11px; +} + +.wp-color-result-text { + background: #f6f7f7; + border-radius: 0 2px 2px 0; + border-left: 1px solid #c3c4c7; + color: #50575e; + display: block; + line-height: 2.54545455; /* 28px */ + padding: 0 6px; + text-align: center; +} + +.wp-color-result:hover, +.wp-color-result:focus { + background: #f6f7f7; + border-color: #8c8f94; + color: #1d2327; +} + +.wp-color-result:hover:after, +.wp-color-result:focus:after { + color: #1d2327; + border-color: #a7aaad; + border-left: 1px solid #8c8f94; +} + +.wp-picker-container { + display: inline-block; +} + +.wp-color-result:focus { + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); +} + +.wp-color-result:active { + /* See Trac ticket #39662 */ + transform: none !important; +} + +.wp-picker-open + .wp-picker-input-wrap { + display: inline-block; + vertical-align: top; +} + +.wp-picker-input-wrap label { + display: inline-block; + vertical-align: top; +} + +/* For the old `custom-background` page, to override the inline-block and margins from `.form-table td fieldset label`. */ +.form-table .wp-picker-input-wrap label { + margin: 0 !important; +} + +.wp-picker-input-wrap .button.wp-picker-default, +.wp-picker-input-wrap .button.wp-picker-clear, +.wp-customizer .wp-picker-input-wrap .button.wp-picker-default, +.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { + margin-left: 6px; + padding: 0 8px; + line-height: 2.54545455; /* 28px */ + min-height: 30px; +} + +.wp-picker-container .iris-square-slider .ui-slider-handle:focus { + background-color: #50575e +} + +.wp-picker-container .iris-picker { + border-radius: 0; + border-color: #dcdcde; + margin-top: 6px; +} + +.wp-picker-container input[type="text"].wp-color-picker { + width: 4rem; + font-size: 12px; + font-family: monospace; + line-height: 2.33333333; /* 28px */ + margin: 0; + padding: 0 5px; + vertical-align: top; + min-height: 30px; +} + +.wp-color-picker::-webkit-input-placeholder { + color: #646970; +} + +.wp-color-picker::-moz-placeholder { + color: #646970; + opacity: 1; +} + +.wp-color-picker:-ms-input-placeholder { + color: #646970; +} + +.wp-picker-container input[type="text"].iris-error { + background-color: #fcf0f1; + border-color: #d63638; + color: #000; +} + +.iris-picker .ui-square-handle:focus, +.iris-picker .iris-strip .ui-slider-handle:focus { + border-color: #3582c4; + border-style: solid; + box-shadow: 0 0 0 1px #3582c4; + outline: 2px solid transparent; +} + +.iris-picker .iris-palette:focus { + box-shadow: 0 0 0 2px #3582c4; +} + +@media screen and (max-width: 782px) { + .wp-picker-container input[type="text"].wp-color-picker { + width: 5rem; + font-size: 16px; + line-height: 1.875; /* 30px */ + min-height: 32px; + } + + .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { + padding: 0 5px; + } + + .wp-picker-input-wrap .button.wp-picker-default, + .wp-picker-input-wrap .button.wp-picker-clear { + padding: 0 8px; + line-height: 2.14285714; /* 30px */ + min-height: 32px; + } + + .wp-customizer .wp-picker-input-wrap .button.wp-picker-default, + .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { + padding: 0 8px; + font-size: 14px; + line-height: 2.14285714; /* 30px */ + min-height: 32px; + } + + .wp-picker-container .wp-color-result.button { + padding: 0 0 0 40px; + font-size: 14px; + line-height: 2.14285714; /* 30px */ + } + + .wp-customizer .wp-picker-container .wp-color-result.button { + font-size: 14px; + line-height: 2.14285714; /* 30px */ + } + + .wp-picker-container .wp-color-result-text { + padding: 0 14px; + font-size: inherit; + line-height: inherit; + } + + .wp-customizer .wp-picker-container .wp-color-result-text { + padding: 0 10px; + } +} diff --git a/tools/storybook/wordpress/css/color-picker.min.css b/tools/storybook/wordpress/css/color-picker.min.css new file mode 100644 index 00000000000..a0c81489ed7 --- /dev/null +++ b/tools/storybook/wordpress/css/color-picker.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 6px 6px 0;padding:0 0 0 30px;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:0 2px 2px 0;border-left:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-left:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-left:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 0 0 40px;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/_admin.scss b/tools/storybook/wordpress/css/colors/_admin.scss new file mode 100644 index 00000000000..cb241905a02 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/_admin.scss @@ -0,0 +1,797 @@ + +@import 'variables'; +@import 'mixins'; + +@function url-friendly-colour( $color ) { + @return '%23' + str-slice( '#{ $color }', 2, -1 ); +} + +body { + background: $body-background; +} + + +/* Links */ + +a { + color: $link; + + &:hover, + &:active, + &:focus { + color: $link-focus; + } +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: $link; + + &:hover, + &:active, + &:focus { + color: $link-focus; + } +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ + +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27#{url-friendly-colour($form-checked)}%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: $form-checked; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: $link-focus; +} + +input[type="text"]:focus, +input[type="password"]:focus, +input[type="color"]:focus, +input[type="date"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="email"]:focus, +input[type="month"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="text"]:focus, +input[type="time"]:focus, +input[type="url"]:focus, +input[type="week"]:focus, +input[type="checkbox"]:focus, +input[type="radio"]:focus, +select:focus, +textarea:focus { + border-color: $highlight-color; + box-shadow: 0 0 0 1px $highlight-color; +} + + +/* Core UI */ + +.wp-core-ui { + + .button { + border-color: #7e8993; + color: #32373c; + } + + .button.hover, + .button:hover, + .button.focus, + .button:focus { + border-color: darken( #7e8993, 5% ); + color: darken( #32373c, 5% ); + } + + .button.focus, + .button:focus { + border-color: #7e8993; + color: darken( #32373c, 5% ); + box-shadow: 0 0 0 1px #32373c; + } + + .button:active { + border-color: #7e8993; + color: darken( #32373c, 5% ); + box-shadow: none; + } + + .button.active, + .button.active:focus, + .button.active:hover { + border-color: $button-color; + color: darken( #32373c, 5% ); + box-shadow: inset 0 2px 5px -3px $button-color; + } + + .button.active:focus { + box-shadow: 0 0 0 1px #32373c; + } + + @if ( $low-contrast-theme != "true" ) { + .button, + .button-secondary { + color: $highlight-color; + border-color: $highlight-color; + } + + .button.hover, + .button:hover, + .button-secondary:hover{ + border-color: darken($highlight-color, 10); + color: darken($highlight-color, 10); + } + + .button.focus, + .button:focus, + .button-secondary:focus { + border-color: lighten($highlight-color, 10); + color: darken($highlight-color, 20);; + box-shadow: 0 0 0 1px lighten($highlight-color, 10); + } + + .button-primary { + &:hover { + color: #fff; + } + } + } + + .button-primary { + @include button( $button-color ); + } + + .button-group > .button.active { + border-color: $button-color; + } + + .wp-ui-primary { + color: $text-color; + background-color: $base-color; + } + .wp-ui-text-primary { + color: $base-color; + } + + .wp-ui-highlight { + color: $menu-highlight-text; + background-color: $menu-highlight-background; + } + .wp-ui-text-highlight { + color: $menu-highlight-background; + } + + .wp-ui-notification { + color: $menu-bubble-text; + background-color: $menu-bubble-background; + } + .wp-ui-text-notification { + color: $menu-bubble-background; + } + + .wp-ui-text-icon { + color: $menu-icon; + } +} + + +/* List tables */ +@if $low-contrast-theme == "true" { + .wrap .page-title-action:hover { + color: $menu-text; + background-color: $menu-background; + } +} @else { + .wrap .page-title-action, + .wrap .page-title-action:active { + border: 1px solid $highlight-color; + color: $highlight-color; + } + + .wrap .page-title-action:hover { + color: darken($highlight-color, 10); + border-color: darken($highlight-color, 10); + } + + .wrap .page-title-action:focus { + border-color: lighten($highlight-color, 10); + color: darken($highlight-color, 20);; + box-shadow: 0 0 0 1px lighten($highlight-color, 10); + } +} + +.view-switch a.current:before { + color: $menu-background; +} + +.view-switch a:hover:before { + color: $menu-bubble-background; +} + + +/* Admin Menu */ + +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: $menu-background; +} + +#adminmenu a { + color: $menu-text; +} + +#adminmenu div.wp-menu-image:before { + color: $menu-icon; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: $menu-highlight-text; + background-color: $menu-highlight-background; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: $menu-highlight-icon; +} + + +/* Active tabs use a bottom border color that matches the page background color. */ + +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: $body-background; + border-bottom-color: $body-background; +} + + +/* Admin Menu: submenu */ + +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: $menu-submenu-background; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: $menu-submenu-background; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: $menu-submenu-text; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: $menu-submenu-text; + + &:focus, &:hover { + color: $menu-submenu-focus-text; + } +} + + +/* Admin Menu: current */ + +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: $menu-submenu-current-text; + + &:hover, &:focus { + color: $menu-submenu-focus-text; + } +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: $body-background; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: $menu-current-text; + background: $menu-current-background; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: $menu-current-icon; +} + + +/* Admin Menu: bubble */ + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: $menu-bubble-text; + background: $menu-bubble-background; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: $menu-bubble-current-text; + background: $menu-bubble-current-background; +} + + +/* Admin Menu: collapse button */ + +#collapse-button { + color: $menu-collapse-text; +} + +#collapse-button:hover, +#collapse-button:focus { + color: $menu-submenu-focus-text; +} + +/* Admin Bar */ + +#wpadminbar { + color: $menu-text; + background: $menu-background; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: $menu-text; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: $menu-icon; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: $menu-submenu-focus-text; + background: $menu-submenu-background; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: $menu-submenu-focus-text; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: $menu-submenu-focus-text; +} + + +/* Admin Bar: submenu */ + +#wpadminbar .menupop .ab-sub-wrapper { + background: $menu-submenu-background; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: $menu-submenu-background-alt; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: $menu-submenu-text; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: $menu-icon; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: $menu-submenu-focus-text; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: $menu-submenu-focus-text; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: $menu-icon; +} + + +/* Admin Bar: search */ + +#wpadminbar #adminbarsearch:before { + color: $menu-icon; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: $menu-text; + background: $adminbar-input-background; +} + +/* Admin Bar: recovery mode */ + +#wpadminbar #wp-admin-bar-recovery-mode { + color: $adminbar-recovery-exit-text; + background-color: $adminbar-recovery-exit-background; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: $adminbar-recovery-exit-text; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover >.ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: $adminbar-recovery-exit-text; + background-color: $adminbar-recovery-exit-background-alt; +} + +/* Admin Bar: my account */ + +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: $adminbar-avatar-frame; + background-color: $adminbar-avatar-frame; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: $menu-text; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: $menu-submenu-focus-text; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: $menu-submenu-text; +} + + +/* Pointers */ + +.wp-pointer .wp-pointer-content h3 { + background-color: $highlight-color; + border-color: darken( $highlight-color, 5% ); +} + +.wp-pointer .wp-pointer-content h3:before { + color: $highlight-color; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: $highlight-color; +} + + +/* Media */ + +.media-item .bar, +.media-progress-bar div { + background-color: $highlight-color; +} + +.details.attachment { + box-shadow: + inset 0 0 0 3px #fff, + inset 0 0 0 7px $highlight-color; +} + +.attachment.details .check { + background-color: $highlight-color; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px $highlight-color; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px $highlight-color; +} + + +/* Themes */ + +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: $highlight-color; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: $highlight-color; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: $menu-background; +} + +body.more-filters-opened .more-filters { + color: $menu-text; + background-color: $menu-background; +} + +body.more-filters-opened .more-filters:before { + color: $menu-text; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: $menu-highlight-background; + color: $menu-highlight-text; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: $menu-highlight-text; +} + +/* Widgets */ + +.widgets-chooser li.widgets-chooser-selected { + background-color: $menu-highlight-background; + color: $menu-highlight-text; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: $menu-highlight-text; +} + + +/* Nav Menus */ + +.nav-menus-php .item-edit:focus:before { + box-shadow: + 0 0 0 1px lighten($button-color, 10), + 0 0 2px 1px $button-color; +} + + +/* Responsive Component */ + +div#wp-responsive-toggle a:before { + color: $menu-icon; +} + +.wp-responsive-open div#wp-responsive-toggle a { + // ToDo: make inset border + border-color: transparent; + background: $menu-highlight-background; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: $menu-submenu-background; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: $menu-icon; +} + +/* TinyMCE */ + +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: $highlight-color; +} + +/* Customizer */ +.wp-core-ui { + #customize-controls .control-section:hover > .accordion-section-title, + #customize-controls .control-section .accordion-section-title:hover, + #customize-controls .control-section.open .accordion-section-title, + #customize-controls .control-section .accordion-section-title:focus { + color: $link; + border-left-color: $button-color; + } + + .customize-controls-close:focus, + .customize-controls-close:hover, + .customize-controls-preview-toggle:focus, + .customize-controls-preview-toggle:hover { + color: $link; + border-top-color: $button-color; + } + + .customize-panel-back:hover, + .customize-panel-back:focus, + .customize-section-back:hover, + .customize-section-back:focus { + color: $link; + border-left-color: $button-color; + } + + .customize-screen-options-toggle:hover, + .customize-screen-options-toggle:active, + .customize-screen-options-toggle:focus, + .active-menu-screen-options .customize-screen-options-toggle, + #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, + #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, + #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: $link; + } + + .customize-screen-options-toggle:focus:before, + #customize-controls .customize-info .customize-help-toggle:focus:before, + &.wp-customizer button:focus .toggle-indicator:before, + .menu-item-bar .item-delete:focus:before, + #available-menu-items .item-add:focus:before, + #customize-save-button-wrapper .save:focus, + #publish-settings:focus { + box-shadow: + 0 0 0 1px lighten($button-color, 10), + 0 0 2px 1px $button-color; + } + + #customize-controls .customize-info.open .customize-help-toggle, + #customize-controls .customize-info .customize-help-toggle:focus, + #customize-controls .customize-info .customize-help-toggle:hover { + color: $link; + } + + .control-panel-themes .customize-themes-section-title:focus, + .control-panel-themes .customize-themes-section-title:hover { + border-left-color: $button-color; + color: $link; + } + + .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: $button-color; + } + + .control-panel-themes .customize-themes-section-title.selected { + color: $link; + } + + #customize-theme-controls .control-section:hover > .accordion-section-title:after, + #customize-theme-controls .control-section .accordion-section-title:hover:after, + #customize-theme-controls .control-section.open .accordion-section-title:after, + #customize-theme-controls .control-section .accordion-section-title:focus:after, + #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, + #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, + #customize-outer-theme-controls .control-section.open .accordion-section-title:after, + #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: $link; + } + + .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: $button-color; + border-style: solid; + box-shadow: 0 0 0 1px $button-color; + outline: 2px solid transparent; + } + + .wp-full-overlay-footer .devices button:focus, + .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: $button-color; + } + + .wp-full-overlay-footer .devices button:hover:before, + .wp-full-overlay-footer .devices button:focus:before { + color: $button-color; + } + + .wp-full-overlay .collapse-sidebar:hover, + .wp-full-overlay .collapse-sidebar:focus { + color: $button-color; + } + + .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, + .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: + 0 0 0 1px lighten($button-color, 10), + 0 0 2px 1px $button-color; + } + + &.wp-customizer .theme-overlay .theme-header .close:focus, + &.wp-customizer .theme-overlay .theme-header .close:hover, + &.wp-customizer .theme-overlay .theme-header .right:focus, + &.wp-customizer .theme-overlay .theme-header .right:hover, + &.wp-customizer .theme-overlay .theme-header .left:focus, + &.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: $button-color; + color: $link; + } +} + +/* Welcome Panel */ + +.welcome-panel { + background-color: $highlight-color; +} + +[class*="welcome-panel-icon"] { + @if ( $scheme-name == "light" ) { + background-color: $icon-color; + } @else { + background-color: $base-color; + } +} diff --git a/tools/storybook/wordpress/css/colors/_mixins.scss b/tools/storybook/wordpress/css/colors/_mixins.scss new file mode 100644 index 00000000000..9744a20a0e3 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/_mixins.scss @@ -0,0 +1,37 @@ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +@mixin button( $button-color, $button-text-color: #fff ) { + background: $button-color; + border-color: $button-color; + color: $button-text-color; + + &:hover, + &:focus { + background: lighten( $button-color, 3% ); + border-color: darken( $button-color, 3% ); + color: $button-text-color; + } + + &:focus { + box-shadow: + 0 0 0 1px #fff, + 0 0 0 3px $button-color; + } + + &:active { + background: darken( $button-color, 5% ); + border-color: darken( $button-color, 5% ); + color: $button-text-color; + } + + &.active, + &.active:focus, + &.active:hover { + background: $button-color; + color: $button-text-color; + border-color: darken( $button-color, 15% ); + box-shadow: inset 0 2px 5px -3px darken( $button-color, 50% ); + } +} diff --git a/tools/storybook/wordpress/css/colors/_variables.scss b/tools/storybook/wordpress/css/colors/_variables.scss new file mode 100644 index 00000000000..21621342a42 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/_variables.scss @@ -0,0 +1,66 @@ +// assign default value to all undefined variables + +$scheme-name: "default" !default; + +// core variables + +$text-color: #fff !default; +$base-color: #23282d !default; +$icon-color: hsl( hue( $base-color ), 7%, 95% ) !default; +$highlight-color: #0073aa !default; +$notification-color: #d54e21 !default; + + +// global + +$body-background: #f1f1f1 !default; + +$link: #0073aa !default; +$link-focus: lighten( $link, 10% ) !default; + +$button-color: $highlight-color !default; +$button-text-color: $text-color !default; + +$form-checked: #7e8993 !default; + +// admin menu & admin-bar + +$menu-text: $text-color !default; +$menu-icon: $icon-color !default; +$menu-background: $base-color !default; + +$menu-highlight-text: $text-color !default; +$menu-highlight-icon: $text-color !default; +$menu-highlight-background: $highlight-color !default; + +$menu-current-text: $menu-highlight-text !default; +$menu-current-icon: $menu-highlight-icon !default; +$menu-current-background: $menu-highlight-background !default; + +$menu-submenu-text: mix( $base-color, $text-color, 30% ) !default; +$menu-submenu-background: darken( $base-color, 7% ) !default; +$menu-submenu-background-alt: desaturate( lighten( $menu-background, 7% ), 7% ) !default; + +$menu-submenu-focus-text: $highlight-color !default; +$menu-submenu-current-text: $text-color !default; + +$menu-bubble-text: $text-color !default; +$menu-bubble-background: $notification-color !default; +$menu-bubble-current-text: $text-color !default; +$menu-bubble-current-background: $menu-submenu-background !default; + +$menu-collapse-text: $menu-icon !default; +$menu-collapse-icon: $menu-icon !default; +$menu-collapse-focus-text: $text-color !default; +$menu-collapse-focus-icon: $menu-highlight-icon !default; + +$adminbar-avatar-frame: lighten( $menu-background, 7% ) !default; +$adminbar-input-background: lighten( $menu-background, 7% ) !default; + +$adminbar-recovery-exit-text: $menu-bubble-text !default; +$adminbar-recovery-exit-background: $menu-bubble-background !default; +$adminbar-recovery-exit-background-alt: mix(black, $adminbar-recovery-exit-background, 10%) !default; + +$menu-customizer-text: mix( $base-color, $text-color, 40% ) !default; + +$low-contrast-theme: "false" !default; diff --git a/tools/storybook/wordpress/css/colors/blue/colors-rtl.css b/tools/storybook/wordpress/css/colors/blue/colors-rtl.css new file mode 100644 index 00000000000..44fd5ddff9d --- /dev/null +++ b/tools/storybook/wordpress/css/colors/blue/colors-rtl.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #096484; + box-shadow: 0 0 0 1px #096484; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #e1a948; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #e1a948; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #096484; + border-color: #096484; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #064054; + color: #064054; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #0c88b4; + color: #021c25; + box-shadow: 0 0 0 1px #0c88b4; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #e1a948; + border-color: #e1a948; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #e3af55; + border-color: #dfa33b; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e1a948; +} +.wp-core-ui .button-primary:active { + background: #dd9f32; + border-color: #dd9f32; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #e1a948; + color: #fff; + border-color: #bd831f; + box-shadow: inset 0 2px 5px -3px #241906; +} +.wp-core-ui .button-group > .button.active { + border-color: #e1a948; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #52accc; +} +.wp-core-ui .wp-ui-text-primary { + color: #52accc; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #096484; +} +.wp-core-ui .wp-ui-text-highlight { + color: #096484; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #e1a948; +} +.wp-core-ui .wp-ui-text-notification { + color: #e1a948; +} +.wp-core-ui .wp-ui-text-icon { + color: #e5f8ff; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #096484; + color: #096484; +} + +.wrap .page-title-action:hover { + color: #064054; + border-color: #064054; +} + +.wrap .page-title-action:focus { + border-color: #0c88b4; + color: #021c25; + box-shadow: 0 0 0 1px #0c88b4; +} + +.view-switch a.current:before { + color: #52accc; +} + +.view-switch a:hover:before { + color: #e1a948; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #52accc; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #e5f8ff; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #096484; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #4796b3; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #4796b3; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #e2ecf1; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #e2ecf1; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #fff; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #fff; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #096484; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #e1a948; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #4796b3; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #e5f8ff; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #fff; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #52accc; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #e5f8ff; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #fff; + background: #4796b3; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #fff; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #fff; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #4796b3; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #74b6ce; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #e2ecf1; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #e5f8ff; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #fff; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #fff; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #e5f8ff; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #e5f8ff; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #6eb9d4; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #e1a948; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #cb9841; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #6eb9d4; + background-color: #6eb9d4; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #e2ecf1; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #096484; + border-color: #07526c; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #096484; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #096484; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #096484; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; +} + +.attachment.details .check { + background-color: #096484; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #096484; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #096484; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #096484; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #52accc; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #52accc; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #096484; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #096484; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #e5f8ff; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #096484; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #4796b3; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #e5f8ff; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #096484; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #e1a948; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #e1a948; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #e1a948; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #e1a948; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #e1a948; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #e1a948; + border-style: solid; + box-shadow: 0 0 0 1px #e1a948; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #e1a948; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #e1a948; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #e1a948; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #e1a948; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #096484; +} + +[class*=welcome-panel-icon] { + background-color: #52accc; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/blue/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/blue/colors-rtl.min.css new file mode 100644 index 00000000000..27b7cbdac63 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/blue/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#096484;box-shadow:0 0 0 1px #096484}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e1a948;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e1a948}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#096484;border-color:#096484}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#064054;color:#064054}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e1a948;border-color:#e1a948;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#dfa33b;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e1a948}.wp-core-ui .button-primary:active{background:#dd9f32;border-color:#dd9f32;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e1a948;color:#fff;border-color:#bd831f;box-shadow:inset 0 2px 5px -3px #241906}.wp-core-ui .button-group>.button.active{border-color:#e1a948}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #096484;color:#096484}.wrap .page-title-action:hover{color:#064054;border-color:#064054}.wrap .page-title-action:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#e1a948}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#cb9841}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#e1a948}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e1a948}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#e1a948}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#e1a948;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e1a948}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e1a948;border-style:solid;box-shadow:0 0 0 1px #e1a948;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e1a948}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e1a948;color:#0073aa}.welcome-panel{background-color:#096484}[class*=welcome-panel-icon]{background-color:#52accc} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/blue/colors.css b/tools/storybook/wordpress/css/colors/blue/colors.css new file mode 100644 index 00000000000..367415de3cf --- /dev/null +++ b/tools/storybook/wordpress/css/colors/blue/colors.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #096484; + box-shadow: 0 0 0 1px #096484; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #e1a948; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #e1a948; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #096484; + border-color: #096484; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #064054; + color: #064054; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #0c88b4; + color: #021c25; + box-shadow: 0 0 0 1px #0c88b4; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #e1a948; + border-color: #e1a948; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #e3af55; + border-color: #dfa33b; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e1a948; +} +.wp-core-ui .button-primary:active { + background: #dd9f32; + border-color: #dd9f32; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #e1a948; + color: #fff; + border-color: #bd831f; + box-shadow: inset 0 2px 5px -3px #241906; +} +.wp-core-ui .button-group > .button.active { + border-color: #e1a948; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #52accc; +} +.wp-core-ui .wp-ui-text-primary { + color: #52accc; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #096484; +} +.wp-core-ui .wp-ui-text-highlight { + color: #096484; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #e1a948; +} +.wp-core-ui .wp-ui-text-notification { + color: #e1a948; +} +.wp-core-ui .wp-ui-text-icon { + color: #e5f8ff; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #096484; + color: #096484; +} + +.wrap .page-title-action:hover { + color: #064054; + border-color: #064054; +} + +.wrap .page-title-action:focus { + border-color: #0c88b4; + color: #021c25; + box-shadow: 0 0 0 1px #0c88b4; +} + +.view-switch a.current:before { + color: #52accc; +} + +.view-switch a:hover:before { + color: #e1a948; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #52accc; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #e5f8ff; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #096484; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #4796b3; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #4796b3; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #e2ecf1; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #e2ecf1; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #fff; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #fff; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #096484; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #e1a948; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #4796b3; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #e5f8ff; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #fff; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #52accc; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #e5f8ff; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #fff; + background: #4796b3; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #fff; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #fff; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #4796b3; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #74b6ce; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #e2ecf1; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #e5f8ff; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #fff; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #fff; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #e5f8ff; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #e5f8ff; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #6eb9d4; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #e1a948; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #cb9841; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #6eb9d4; + background-color: #6eb9d4; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #e2ecf1; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #096484; + border-color: #07526c; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #096484; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #096484; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #096484; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #096484; +} + +.attachment.details .check { + background-color: #096484; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #096484; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #096484; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #096484; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #096484; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #52accc; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #52accc; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #096484; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #096484; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #e5f8ff; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #096484; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #4796b3; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #e5f8ff; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #096484; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #e1a948; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #e1a948; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #e1a948; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #e1a948; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #e1a948; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #e1a948; + border-style: solid; + box-shadow: 0 0 0 1px #e1a948; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #e1a948; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #e1a948; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #e1a948; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #e1a948; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #096484; +} + +[class*=welcome-panel-icon] { + background-color: #52accc; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/blue/colors.min.css b/tools/storybook/wordpress/css/colors/blue/colors.min.css new file mode 100644 index 00000000000..c005b655654 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/blue/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#096484;box-shadow:0 0 0 1px #096484}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e1a948;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e1a948}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#096484;border-color:#096484}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#064054;color:#064054}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e1a948;border-color:#e1a948;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#dfa33b;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e1a948}.wp-core-ui .button-primary:active{background:#dd9f32;border-color:#dd9f32;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e1a948;color:#fff;border-color:#bd831f;box-shadow:inset 0 2px 5px -3px #241906}.wp-core-ui .button-group>.button.active{border-color:#e1a948}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #096484;color:#096484}.wrap .page-title-action:hover{color:#064054;border-color:#064054}.wrap .page-title-action:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#e1a948}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#cb9841}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#e1a948}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e1a948}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#e1a948}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#e1a948;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e1a948}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e1a948;border-style:solid;box-shadow:0 0 0 1px #e1a948;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e1a948}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e1a948;color:#0073aa}.welcome-panel{background-color:#096484}[class*=welcome-panel-icon]{background-color:#52accc} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/blue/colors.scss b/tools/storybook/wordpress/css/colors/blue/colors.scss new file mode 100644 index 00000000000..f44e540adf1 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/blue/colors.scss @@ -0,0 +1,12 @@ +$scheme-name: "blue"; +$base-color: #52accc; +$icon-color: #e5f8ff; +$highlight-color: #096484; +$notification-color: #e1a948; +$button-color: #e1a948; + +$menu-submenu-text: #e2ecf1; +$menu-submenu-focus-text: #fff; +$menu-submenu-background: #4796b3; + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/coffee/colors-rtl.css b/tools/storybook/wordpress/css/colors/coffee/colors-rtl.css new file mode 100644 index 00000000000..7f9996da908 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/coffee/colors-rtl.css @@ -0,0 +1,681 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #59524c; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #c7a589; + box-shadow: 0 0 0 1px #c7a589; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #c7a589; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #c7a589; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button-primary { + background: #c7a589; + border-color: #c7a589; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #ccad93; + border-color: #c29d7f; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; +} +.wp-core-ui .button-primary:active { + background: #bf9878; + border-color: #bf9878; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #c7a589; + color: #fff; + border-color: #ae7d55; + box-shadow: inset 0 2px 5px -3px #37271a; +} +.wp-core-ui .button-group > .button.active { + border-color: #c7a589; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #59524c; +} +.wp-core-ui .wp-ui-text-primary { + color: #59524c; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #c7a589; +} +.wp-core-ui .wp-ui-text-highlight { + color: #c7a589; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #9ea476; +} +.wp-core-ui .wp-ui-text-notification { + color: #9ea476; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action:hover { + color: #fff; + background-color: #59524c; +} + +.view-switch a.current:before { + color: #59524c; +} + +.view-switch a:hover:before { + color: #9ea476; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #59524c; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #c7a589; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #46403c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #46403c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cdcbc9; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #cdcbc9; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #c7a589; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #c7a589; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #c7a589; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #9ea476; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #46403c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #c7a589; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #59524c; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #c7a589; + background: #46403c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #c7a589; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #c7a589; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #46403c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #656463; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #cdcbc9; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #c7a589; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #c7a589; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #6c645c; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #9ea476; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #8e946a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #6c645c; + background-color: #6c645c; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #c7a589; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #cdcbc9; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #c7a589; + border-color: #bf9878; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #c7a589; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #c7a589; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #c7a589; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; +} + +.attachment.details .check { + background-color: #c7a589; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #c7a589; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #c7a589; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #59524c; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #59524c; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #c7a589; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #c7a589; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #c7a589; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #46403c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #c7a589; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #c7a589; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #c7a589; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #c7a589; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #c7a589; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #c7a589; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #c7a589; + border-style: solid; + box-shadow: 0 0 0 1px #c7a589; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #c7a589; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #c7a589; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #c7a589; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #c7a589; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #c7a589; +} + +[class*=welcome-panel-icon] { + background-color: #59524c; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/coffee/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/coffee/colors-rtl.min.css new file mode 100644 index 00000000000..ead04fd6694 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/coffee/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#c7a589;box-shadow:0 0 0 1px #c7a589}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#c7a589;color:#262a2e;box-shadow:inset 0 2px 5px -3px #c7a589}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#c7a589;border-color:#c7a589;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#c29d7f;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.wp-core-ui .button-primary:active{background:#bf9878;border-color:#bf9878;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#c7a589;color:#fff;border-color:#ae7d55;box-shadow:inset 0 2px 5px -3px #37271a}.wp-core-ui .button-group>.button.active{border-color:#c7a589}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:hsl(27.6923076923deg,7%,95%)}.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(27.6923076923deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:hsl(27.6923076923deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#c7a589}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#9ea476}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#8e946a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}div#wp-responsive-toggle a:before{color:hsl(27.6923076923deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(27.6923076923deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#c7a589}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#c7a589}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#c7a589}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#c7a589;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#c7a589}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#c7a589;border-style:solid;box-shadow:0 0 0 1px #c7a589;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#c7a589}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#c7a589;color:#0073aa}.welcome-panel{background-color:#c7a589}[class*=welcome-panel-icon]{background-color:#59524c} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/coffee/colors.css b/tools/storybook/wordpress/css/colors/coffee/colors.css new file mode 100644 index 00000000000..4390f44dede --- /dev/null +++ b/tools/storybook/wordpress/css/colors/coffee/colors.css @@ -0,0 +1,681 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #59524c; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #c7a589; + box-shadow: 0 0 0 1px #c7a589; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #c7a589; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #c7a589; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button-primary { + background: #c7a589; + border-color: #c7a589; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #ccad93; + border-color: #c29d7f; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; +} +.wp-core-ui .button-primary:active { + background: #bf9878; + border-color: #bf9878; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #c7a589; + color: #fff; + border-color: #ae7d55; + box-shadow: inset 0 2px 5px -3px #37271a; +} +.wp-core-ui .button-group > .button.active { + border-color: #c7a589; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #59524c; +} +.wp-core-ui .wp-ui-text-primary { + color: #59524c; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #c7a589; +} +.wp-core-ui .wp-ui-text-highlight { + color: #c7a589; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #9ea476; +} +.wp-core-ui .wp-ui-text-notification { + color: #9ea476; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action:hover { + color: #fff; + background-color: #59524c; +} + +.view-switch a.current:before { + color: #59524c; +} + +.view-switch a:hover:before { + color: #9ea476; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #59524c; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #c7a589; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #46403c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #46403c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cdcbc9; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #cdcbc9; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #c7a589; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #c7a589; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #c7a589; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #9ea476; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #46403c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #c7a589; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #59524c; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #c7a589; + background: #46403c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #c7a589; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #c7a589; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #46403c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #656463; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #cdcbc9; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #c7a589; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #c7a589; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #6c645c; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #9ea476; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #8e946a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #6c645c; + background-color: #6c645c; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #c7a589; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #cdcbc9; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #c7a589; + border-color: #bf9878; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #c7a589; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #c7a589; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #c7a589; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #c7a589; +} + +.attachment.details .check { + background-color: #c7a589; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #c7a589; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #c7a589; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #c7a589; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #59524c; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #59524c; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #c7a589; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #c7a589; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #c7a589; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #46403c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(27.6923076923deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #c7a589; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #c7a589; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #c7a589; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #c7a589; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #c7a589; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #c7a589; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #c7a589; + border-style: solid; + box-shadow: 0 0 0 1px #c7a589; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #c7a589; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #c7a589; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #c7a589; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #c7a589; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #c7a589; +} + +[class*=welcome-panel-icon] { + background-color: #59524c; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/coffee/colors.min.css b/tools/storybook/wordpress/css/colors/coffee/colors.min.css new file mode 100644 index 00000000000..62dd6ac4868 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/coffee/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#c7a589;box-shadow:0 0 0 1px #c7a589}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#c7a589;color:#262a2e;box-shadow:inset 0 2px 5px -3px #c7a589}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#c7a589;border-color:#c7a589;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#c29d7f;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.wp-core-ui .button-primary:active{background:#bf9878;border-color:#bf9878;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#c7a589;color:#fff;border-color:#ae7d55;box-shadow:inset 0 2px 5px -3px #37271a}.wp-core-ui .button-group>.button.active{border-color:#c7a589}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:hsl(27.6923076923deg,7%,95%)}.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(27.6923076923deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:hsl(27.6923076923deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#c7a589}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(27.6923076923deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#9ea476}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#8e946a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}div#wp-responsive-toggle a:before{color:hsl(27.6923076923deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(27.6923076923deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#c7a589}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#c7a589}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#c7a589}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#c7a589;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#c7a589}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#c7a589;border-style:solid;box-shadow:0 0 0 1px #c7a589;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#c7a589}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#c7a589;color:#0073aa}.welcome-panel{background-color:#c7a589}[class*=welcome-panel-icon]{background-color:#59524c} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/coffee/colors.scss b/tools/storybook/wordpress/css/colors/coffee/colors.scss new file mode 100644 index 00000000000..a52491d57de --- /dev/null +++ b/tools/storybook/wordpress/css/colors/coffee/colors.scss @@ -0,0 +1,9 @@ +$scheme-name: "coffee"; +$base-color: #59524c; +$highlight-color: #c7a589; +$notification-color: #9ea476; +$low-contrast-theme: "true"; + +$form-checked: $base-color; + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.css b/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.css new file mode 100644 index 00000000000..bf63bc4595d --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #523f6d; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #a3b745; + box-shadow: 0 0 0 1px #a3b745; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #a3b745; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #a3b745; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #a3b745; + border-color: #a3b745; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #829237; + color: #829237; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #b6c669; + color: #616d29; + box-shadow: 0 0 0 1px #b6c669; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #a3b745; + border-color: #a3b745; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #a9bd4f; + border-color: #99ac41; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; +} +.wp-core-ui .button-primary:active { + background: #93a43e; + border-color: #93a43e; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #a3b745; + color: #fff; + border-color: #727f30; + box-shadow: inset 0 2px 5px -3px black; +} +.wp-core-ui .button-group > .button.active { + border-color: #a3b745; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #523f6d; +} +.wp-core-ui .wp-ui-text-primary { + color: #523f6d; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #a3b745; +} +.wp-core-ui .wp-ui-text-highlight { + color: #a3b745; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #d46f15; +} +.wp-core-ui .wp-ui-text-notification { + color: #d46f15; +} +.wp-core-ui .wp-ui-text-icon { + color: #ece6f6; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #a3b745; + color: #a3b745; +} + +.wrap .page-title-action:hover { + color: #829237; + border-color: #829237; +} + +.wrap .page-title-action:focus { + border-color: #b6c669; + color: #616d29; + box-shadow: 0 0 0 1px #b6c669; +} + +.view-switch a.current:before { + color: #523f6d; +} + +.view-switch a:hover:before { + color: #d46f15; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #523f6d; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #ece6f6; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #a3b745; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #413256; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #413256; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cbc5d3; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #cbc5d3; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #a3b745; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #a3b745; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #a3b745; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d46f15; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #413256; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #ece6f6; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #a3b745; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #523f6d; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #ece6f6; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #a3b745; + background: #413256; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #a3b745; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #a3b745; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #413256; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #64537c; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #cbc5d3; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #ece6f6; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #a3b745; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #a3b745; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #ece6f6; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #ece6f6; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #634c84; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #d46f15; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #bf6413; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #634c84; + background-color: #634c84; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #a3b745; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #cbc5d3; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #a3b745; + border-color: #93a43e; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #a3b745; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #a3b745; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #a3b745; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; +} + +.attachment.details .check { + background-color: #a3b745; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #a3b745; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #a3b745; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #523f6d; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #523f6d; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #a3b745; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #a3b745; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #ece6f6; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #a3b745; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #413256; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #ece6f6; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #a3b745; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #a3b745; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #a3b745; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #a3b745; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #a3b745; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #a3b745; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #a3b745; + border-style: solid; + box-shadow: 0 0 0 1px #a3b745; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #a3b745; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #a3b745; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #a3b745; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #a3b745; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #a3b745; +} + +[class*=welcome-panel-icon] { + background-color: #523f6d; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.min.css new file mode 100644 index 00000000000..85903941917 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ectoplasm/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#a3b745;box-shadow:0 0 0 1px #a3b745}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#a3b745;color:#262a2e;box-shadow:inset 0 2px 5px -3px #a3b745}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#a3b745;border-color:#a3b745}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#829237;color:#829237}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#a3b745;border-color:#a3b745;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#99ac41;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.wp-core-ui .button-primary:active{background:#93a43e;border-color:#93a43e;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#a3b745;color:#fff;border-color:#727f30;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#a3b745}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #a3b745;color:#a3b745}.wrap .page-title-action:hover{color:#829237;border-color:#829237}.wrap .page-title-action:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#a3b745}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d46f15}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#bf6413}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#a3b745}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#a3b745}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#a3b745}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#a3b745;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#a3b745}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#a3b745;border-style:solid;box-shadow:0 0 0 1px #a3b745;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#a3b745}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#a3b745;color:#0073aa}.welcome-panel{background-color:#a3b745}[class*=welcome-panel-icon]{background-color:#523f6d} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ectoplasm/colors.css b/tools/storybook/wordpress/css/colors/ectoplasm/colors.css new file mode 100644 index 00000000000..322980a9545 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ectoplasm/colors.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #523f6d; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #a3b745; + box-shadow: 0 0 0 1px #a3b745; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #a3b745; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #a3b745; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #a3b745; + border-color: #a3b745; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #829237; + color: #829237; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #b6c669; + color: #616d29; + box-shadow: 0 0 0 1px #b6c669; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #a3b745; + border-color: #a3b745; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #a9bd4f; + border-color: #99ac41; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; +} +.wp-core-ui .button-primary:active { + background: #93a43e; + border-color: #93a43e; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #a3b745; + color: #fff; + border-color: #727f30; + box-shadow: inset 0 2px 5px -3px black; +} +.wp-core-ui .button-group > .button.active { + border-color: #a3b745; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #523f6d; +} +.wp-core-ui .wp-ui-text-primary { + color: #523f6d; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #a3b745; +} +.wp-core-ui .wp-ui-text-highlight { + color: #a3b745; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #d46f15; +} +.wp-core-ui .wp-ui-text-notification { + color: #d46f15; +} +.wp-core-ui .wp-ui-text-icon { + color: #ece6f6; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #a3b745; + color: #a3b745; +} + +.wrap .page-title-action:hover { + color: #829237; + border-color: #829237; +} + +.wrap .page-title-action:focus { + border-color: #b6c669; + color: #616d29; + box-shadow: 0 0 0 1px #b6c669; +} + +.view-switch a.current:before { + color: #523f6d; +} + +.view-switch a:hover:before { + color: #d46f15; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #523f6d; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #ece6f6; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #a3b745; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #413256; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #413256; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #cbc5d3; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #cbc5d3; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #a3b745; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #a3b745; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #a3b745; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d46f15; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #413256; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #ece6f6; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #a3b745; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #523f6d; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #ece6f6; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #a3b745; + background: #413256; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #a3b745; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #a3b745; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #413256; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #64537c; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #cbc5d3; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #ece6f6; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #a3b745; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #a3b745; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #ece6f6; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #ece6f6; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #634c84; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #d46f15; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #bf6413; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #634c84; + background-color: #634c84; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #a3b745; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #cbc5d3; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #a3b745; + border-color: #93a43e; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #a3b745; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #a3b745; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #a3b745; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #a3b745; +} + +.attachment.details .check { + background-color: #a3b745; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #a3b745; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #a3b745; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #a3b745; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #523f6d; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #523f6d; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #a3b745; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #a3b745; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #ece6f6; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #a3b745; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #413256; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #ece6f6; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #a3b745; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #a3b745; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #a3b745; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #a3b745; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #a3b745; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #a3b745; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #a3b745; + border-style: solid; + box-shadow: 0 0 0 1px #a3b745; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #a3b745; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #a3b745; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #a3b745; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #a3b745; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #a3b745; +} + +[class*=welcome-panel-icon] { + background-color: #523f6d; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ectoplasm/colors.min.css b/tools/storybook/wordpress/css/colors/ectoplasm/colors.min.css new file mode 100644 index 00000000000..e460f58853f --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ectoplasm/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#a3b745;box-shadow:0 0 0 1px #a3b745}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#a3b745;color:#262a2e;box-shadow:inset 0 2px 5px -3px #a3b745}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#a3b745;border-color:#a3b745}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#829237;color:#829237}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#a3b745;border-color:#a3b745;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#99ac41;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.wp-core-ui .button-primary:active{background:#93a43e;border-color:#93a43e;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#a3b745;color:#fff;border-color:#727f30;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#a3b745}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #a3b745;color:#a3b745}.wrap .page-title-action:hover{color:#829237;border-color:#829237}.wrap .page-title-action:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#a3b745}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d46f15}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#bf6413}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#a3b745}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#a3b745}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#a3b745}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#a3b745;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#a3b745}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#a3b745;border-style:solid;box-shadow:0 0 0 1px #a3b745;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#a3b745}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#a3b745;color:#0073aa}.welcome-panel{background-color:#a3b745}[class*=welcome-panel-icon]{background-color:#523f6d} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ectoplasm/colors.scss b/tools/storybook/wordpress/css/colors/ectoplasm/colors.scss new file mode 100644 index 00000000000..230ff9efb49 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ectoplasm/colors.scss @@ -0,0 +1,9 @@ +$scheme-name: "ectoplasm"; +$base-color: #523f6d; +$icon-color: #ece6f6; +$highlight-color: #a3b745; +$notification-color: #d46f15; + +$form-checked: $base-color; + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/light/colors-rtl.css b/tools/storybook/wordpress/css/colors/light/colors-rtl.css new file mode 100644 index 00000000000..019547a169a --- /dev/null +++ b/tools/storybook/wordpress/css/colors/light/colors-rtl.css @@ -0,0 +1,720 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f5f5f5; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #04a4cc; + box-shadow: 0 0 0 1px #04a4cc; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #04a4cc; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #04a4cc; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #04a4cc; + border-color: #04a4cc; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #037c9a; + color: #037c9a; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #09cafa; + color: #025468; + box-shadow: 0 0 0 1px #09cafa; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #04a4cc; + border-color: #04a4cc; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #04b0db; + border-color: #0498bd; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; +} +.wp-core-ui .button-primary:active { + background: #0490b3; + border-color: #0490b3; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #04a4cc; + color: #fff; + border-color: #036881; + box-shadow: inset 0 2px 5px -3px black; +} +.wp-core-ui .button-group > .button.active { + border-color: #04a4cc; +} +.wp-core-ui .wp-ui-primary { + color: #333; + background-color: #e5e5e5; +} +.wp-core-ui .wp-ui-text-primary { + color: #e5e5e5; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #888; +} +.wp-core-ui .wp-ui-text-highlight { + color: #888; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #d64e07; +} +.wp-core-ui .wp-ui-text-notification { + color: #d64e07; +} +.wp-core-ui .wp-ui-text-icon { + color: #999; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #04a4cc; + color: #04a4cc; +} + +.wrap .page-title-action:hover { + color: #037c9a; + border-color: #037c9a; +} + +.wrap .page-title-action:focus { + border-color: #09cafa; + color: #025468; + box-shadow: 0 0 0 1px #09cafa; +} + +.view-switch a.current:before { + color: #e5e5e5; +} + +.view-switch a:hover:before { + color: #d64e07; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #e5e5e5; +} + +#adminmenu a { + color: #333; +} + +#adminmenu div.wp-menu-image:before { + color: #999; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #888; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #ccc; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f5f5f5; + border-bottom-color: #f5f5f5; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #fff; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #fff; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #686868; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #686868; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #04a4cc; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #333; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #04a4cc; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f5f5f5; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #888; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #ccc; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d64e07; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #333; + background: #fff; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #777; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #04a4cc; +} + +/* Admin Bar */ +#wpadminbar { + color: #333; + background: #e5e5e5; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #333; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #999; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #04a4cc; + background: #fff; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #04a4cc; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #04a4cc; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #fff; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #f7f7f7; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #686868; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #999; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #04a4cc; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #04a4cc; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #999; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #999; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #333; + background: #f7f7f7; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #d64e07; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #c14606; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #f7f7f7; + background-color: #f7f7f7; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #333; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #04a4cc; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #686868; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #04a4cc; + border-color: #0490b3; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #04a4cc; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #04a4cc; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #04a4cc; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; +} + +.attachment.details .check { + background-color: #04a4cc; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #04a4cc; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #04a4cc; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #e5e5e5; +} + +body.more-filters-opened .more-filters { + color: #333; + background-color: #e5e5e5; +} + +body.more-filters-opened .more-filters:before { + color: #333; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #888; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #888; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #999; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #888; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #fff; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #999; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #04a4cc; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #04a4cc; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #04a4cc; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #04a4cc; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #04a4cc; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #04a4cc; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #04a4cc; + border-style: solid; + box-shadow: 0 0 0 1px #04a4cc; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #04a4cc; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #04a4cc; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #04a4cc; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #04a4cc; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #04a4cc; +} + +[class*=welcome-panel-icon] { + background-color: #999; +} + +/* Override the theme filter highlight color for this scheme */ +.theme-section.current, +.theme-filter.current { + border-bottom-color: #04a4cc; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/light/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/light/colors-rtl.min.css new file mode 100644 index 00000000000..6811263bea9 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/light/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#04a4cc;box-shadow:0 0 0 1px #04a4cc}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#04a4cc;color:#262a2e;box-shadow:inset 0 2px 5px -3px #04a4cc}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#04a4cc;border-color:#04a4cc}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#037c9a;color:#037c9a}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#04a4cc;border-color:#04a4cc;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#0498bd;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.wp-core-ui .button-primary:active{background:#0490b3;border-color:#0490b3;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#04a4cc;color:#fff;border-color:#036881;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#04a4cc}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #04a4cc;color:#04a4cc}.wrap .page-title-action:hover{color:#037c9a;border-color:#037c9a}.wrap .page-title-action:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#04a4cc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d64e07}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#c14606}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#04a4cc}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#04a4cc}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#04a4cc}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#04a4cc;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#04a4cc}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#04a4cc;border-style:solid;box-shadow:0 0 0 1px #04a4cc;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#04a4cc}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#04a4cc;color:#0073aa}.welcome-panel{background-color:#04a4cc}[class*=welcome-panel-icon]{background-color:#999}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/light/colors.css b/tools/storybook/wordpress/css/colors/light/colors.css new file mode 100644 index 00000000000..9293f6b85a9 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/light/colors.css @@ -0,0 +1,720 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f5f5f5; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #04a4cc; + box-shadow: 0 0 0 1px #04a4cc; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #04a4cc; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #04a4cc; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #04a4cc; + border-color: #04a4cc; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #037c9a; + color: #037c9a; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #09cafa; + color: #025468; + box-shadow: 0 0 0 1px #09cafa; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #04a4cc; + border-color: #04a4cc; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #04b0db; + border-color: #0498bd; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; +} +.wp-core-ui .button-primary:active { + background: #0490b3; + border-color: #0490b3; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #04a4cc; + color: #fff; + border-color: #036881; + box-shadow: inset 0 2px 5px -3px black; +} +.wp-core-ui .button-group > .button.active { + border-color: #04a4cc; +} +.wp-core-ui .wp-ui-primary { + color: #333; + background-color: #e5e5e5; +} +.wp-core-ui .wp-ui-text-primary { + color: #e5e5e5; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #888; +} +.wp-core-ui .wp-ui-text-highlight { + color: #888; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #d64e07; +} +.wp-core-ui .wp-ui-text-notification { + color: #d64e07; +} +.wp-core-ui .wp-ui-text-icon { + color: #999; +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #04a4cc; + color: #04a4cc; +} + +.wrap .page-title-action:hover { + color: #037c9a; + border-color: #037c9a; +} + +.wrap .page-title-action:focus { + border-color: #09cafa; + color: #025468; + box-shadow: 0 0 0 1px #09cafa; +} + +.view-switch a.current:before { + color: #e5e5e5; +} + +.view-switch a:hover:before { + color: #d64e07; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #e5e5e5; +} + +#adminmenu a { + color: #333; +} + +#adminmenu div.wp-menu-image:before { + color: #999; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #888; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #ccc; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f5f5f5; + border-bottom-color: #f5f5f5; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #fff; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #fff; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #686868; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #686868; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #04a4cc; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #333; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #04a4cc; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f5f5f5; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #888; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #ccc; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #d64e07; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #333; + background: #fff; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #777; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #04a4cc; +} + +/* Admin Bar */ +#wpadminbar { + color: #333; + background: #e5e5e5; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #333; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #999; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #04a4cc; + background: #fff; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #04a4cc; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #04a4cc; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #fff; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #f7f7f7; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #686868; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #999; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #04a4cc; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #04a4cc; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #999; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #999; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #333; + background: #f7f7f7; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #d64e07; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #c14606; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #f7f7f7; + background-color: #f7f7f7; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #333; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #04a4cc; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #686868; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #04a4cc; + border-color: #0490b3; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #04a4cc; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #04a4cc; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #04a4cc; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #04a4cc; +} + +.attachment.details .check { + background-color: #04a4cc; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #04a4cc; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #04a4cc; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #04a4cc; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #e5e5e5; +} + +body.more-filters-opened .more-filters { + color: #333; + background-color: #e5e5e5; +} + +body.more-filters-opened .more-filters:before { + color: #333; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #888; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #888; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #999; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #888; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #fff; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #999; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #04a4cc; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #04a4cc; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #04a4cc; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #04a4cc; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #04a4cc; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #04a4cc; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #04a4cc; + border-style: solid; + box-shadow: 0 0 0 1px #04a4cc; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #04a4cc; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #04a4cc; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #04a4cc; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #04a4cc; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #04a4cc; +} + +[class*=welcome-panel-icon] { + background-color: #999; +} + +/* Override the theme filter highlight color for this scheme */ +.theme-section.current, +.theme-filter.current { + border-bottom-color: #04a4cc; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/light/colors.min.css b/tools/storybook/wordpress/css/colors/light/colors.min.css new file mode 100644 index 00000000000..bc2ad8144fe --- /dev/null +++ b/tools/storybook/wordpress/css/colors/light/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#04a4cc;box-shadow:0 0 0 1px #04a4cc}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#04a4cc;color:#262a2e;box-shadow:inset 0 2px 5px -3px #04a4cc}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#04a4cc;border-color:#04a4cc}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#037c9a;color:#037c9a}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#04a4cc;border-color:#04a4cc;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#0498bd;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.wp-core-ui .button-primary:active{background:#0490b3;border-color:#0490b3;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#04a4cc;color:#fff;border-color:#036881;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#04a4cc}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #04a4cc;color:#04a4cc}.wrap .page-title-action:hover{color:#037c9a;border-color:#037c9a}.wrap .page-title-action:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#04a4cc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d64e07}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#c14606}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#04a4cc}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#04a4cc}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#04a4cc}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#04a4cc;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#04a4cc}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#04a4cc;border-style:solid;box-shadow:0 0 0 1px #04a4cc;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#04a4cc}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#04a4cc;color:#0073aa}.welcome-panel{background-color:#04a4cc}[class*=welcome-panel-icon]{background-color:#999}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/light/colors.scss b/tools/storybook/wordpress/css/colors/light/colors.scss new file mode 100644 index 00000000000..817bd345499 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/light/colors.scss @@ -0,0 +1,27 @@ +$scheme-name: "light"; +$base-color: #e5e5e5; +$icon-color: #999; +$text-color: #333; +$highlight-color: #04a4cc; +$notification-color: #d64e07; + +$body-background: #f5f5f5; + +$menu-highlight-text: #fff; +$menu-highlight-icon: #ccc; +$menu-highlight-background: #888; + +$menu-bubble-text: #fff; +$menu-avatar-frame: #aaa; +$menu-submenu-background: #fff; + +$menu-collapse-text: #777; +$menu-collapse-focus-icon: #555; + +@import "../_admin.scss"; + +/* Override the theme filter highlight color for this scheme */ +.theme-section.current, +.theme-filter.current { + border-bottom-color: $highlight-color; +} diff --git a/tools/storybook/wordpress/css/colors/midnight/colors-rtl.css b/tools/storybook/wordpress/css/colors/midnight/colors-rtl.css new file mode 100644 index 00000000000..057798b26b8 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/midnight/colors-rtl.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #e14d43; + box-shadow: 0 0 0 1px #e14d43; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #e14d43; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #e14d43; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #e14d43; + border-color: #e14d43; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #d02c21; + color: #d02c21; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #e8776f; + color: #a4231a; + box-shadow: 0 0 0 1px #e8776f; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #e14d43; + border-color: #e14d43; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #e35950; + border-color: #df4136; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; +} +.wp-core-ui .button-primary:active { + background: #dd382d; + border-color: #dd382d; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #e14d43; + color: #fff; + border-color: #ba281e; + box-shadow: inset 0 2px 5px -3px #200705; +} +.wp-core-ui .button-group > .button.active { + border-color: #e14d43; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #363b3f; +} +.wp-core-ui .wp-ui-text-primary { + color: #363b3f; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #e14d43; +} +.wp-core-ui .wp-ui-text-highlight { + color: #e14d43; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #69a8bb; +} +.wp-core-ui .wp-ui-text-notification { + color: #69a8bb; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #e14d43; + color: #e14d43; +} + +.wrap .page-title-action:hover { + color: #d02c21; + border-color: #d02c21; +} + +.wrap .page-title-action:focus { + border-color: #e8776f; + color: #a4231a; + box-shadow: 0 0 0 1px #e8776f; +} + +.view-switch a.current:before { + color: #363b3f; +} + +.view-switch a:hover:before { + color: #69a8bb; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #363b3f; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #e14d43; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #26292c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #26292c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #c3c4c5; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #c3c4c5; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #e14d43; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #e14d43; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #e14d43; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #69a8bb; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #26292c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #e14d43; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #363b3f; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #e14d43; + background: #26292c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #e14d43; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #e14d43; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #26292c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #4c4c4d; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #c3c4c5; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #e14d43; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #e14d43; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #464d52; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #69a8bb; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #5f97a8; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #464d52; + background-color: #464d52; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #e14d43; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #c3c4c5; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #e14d43; + border-color: #dd382d; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #e14d43; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #e14d43; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #e14d43; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; +} + +.attachment.details .check { + background-color: #e14d43; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #e14d43; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #e14d43; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #363b3f; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #363b3f; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #e14d43; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #e14d43; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #e14d43; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #26292c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #e14d43; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #e14d43; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #e14d43; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #e14d43; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #e14d43; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #e14d43; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #e14d43; + border-style: solid; + box-shadow: 0 0 0 1px #e14d43; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #e14d43; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #e14d43; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #e14d43; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #e14d43; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #e14d43; +} + +[class*=welcome-panel-icon] { + background-color: #363b3f; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/midnight/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/midnight/colors-rtl.min.css new file mode 100644 index 00000000000..260a2db8164 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/midnight/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#e14d43;box-shadow:0 0 0 1px #e14d43}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e14d43;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e14d43}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#e14d43;border-color:#e14d43}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#d02c21;color:#d02c21}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e14d43;border-color:#e14d43;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#df4136;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.wp-core-ui .button-primary:active{background:#dd382d;border-color:#dd382d;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e14d43;color:#fff;border-color:#ba281e;box-shadow:inset 0 2px 5px -3px #200705}.wp-core-ui .button-group>.button.active{border-color:#e14d43}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:hsl(206.6666666667deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #e14d43;color:#e14d43}.wrap .page-title-action:hover{color:#d02c21;border-color:#d02c21}.wrap .page-title-action:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(206.6666666667deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:hsl(206.6666666667deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#e14d43}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#69a8bb}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#5f97a8}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}div#wp-responsive-toggle a:before{color:hsl(206.6666666667deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(206.6666666667deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#e14d43}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e14d43}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#e14d43}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#e14d43;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e14d43}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e14d43;border-style:solid;box-shadow:0 0 0 1px #e14d43;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e14d43}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e14d43;color:#0073aa}.welcome-panel{background-color:#e14d43}[class*=welcome-panel-icon]{background-color:#363b3f} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/midnight/colors.css b/tools/storybook/wordpress/css/colors/midnight/colors.css new file mode 100644 index 00000000000..1ef551d5f06 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/midnight/colors.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #e14d43; + box-shadow: 0 0 0 1px #e14d43; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #e14d43; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #e14d43; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #e14d43; + border-color: #e14d43; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #d02c21; + color: #d02c21; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #e8776f; + color: #a4231a; + box-shadow: 0 0 0 1px #e8776f; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #e14d43; + border-color: #e14d43; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #e35950; + border-color: #df4136; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; +} +.wp-core-ui .button-primary:active { + background: #dd382d; + border-color: #dd382d; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #e14d43; + color: #fff; + border-color: #ba281e; + box-shadow: inset 0 2px 5px -3px #200705; +} +.wp-core-ui .button-group > .button.active { + border-color: #e14d43; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #363b3f; +} +.wp-core-ui .wp-ui-text-primary { + color: #363b3f; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #e14d43; +} +.wp-core-ui .wp-ui-text-highlight { + color: #e14d43; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #69a8bb; +} +.wp-core-ui .wp-ui-text-notification { + color: #69a8bb; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #e14d43; + color: #e14d43; +} + +.wrap .page-title-action:hover { + color: #d02c21; + border-color: #d02c21; +} + +.wrap .page-title-action:focus { + border-color: #e8776f; + color: #a4231a; + box-shadow: 0 0 0 1px #e8776f; +} + +.view-switch a.current:before { + color: #363b3f; +} + +.view-switch a:hover:before { + color: #69a8bb; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #363b3f; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #e14d43; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #26292c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #26292c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #c3c4c5; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #c3c4c5; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #e14d43; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #e14d43; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #e14d43; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #69a8bb; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #26292c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #e14d43; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #363b3f; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #e14d43; + background: #26292c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #e14d43; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #e14d43; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #26292c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #4c4c4d; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #c3c4c5; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #e14d43; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #e14d43; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #464d52; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #69a8bb; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #5f97a8; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #464d52; + background-color: #464d52; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #e14d43; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #c3c4c5; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #e14d43; + border-color: #dd382d; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #e14d43; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #e14d43; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #e14d43; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #e14d43; +} + +.attachment.details .check { + background-color: #e14d43; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #e14d43; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #e14d43; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #e14d43; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #363b3f; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #363b3f; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #e14d43; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #e14d43; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #e14d43; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #26292c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(206.6666666667deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #e14d43; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #e14d43; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #e14d43; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #e14d43; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #e14d43; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #e14d43; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #e14d43; + border-style: solid; + box-shadow: 0 0 0 1px #e14d43; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #e14d43; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #e14d43; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #e14d43; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #e14d43; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #e14d43; +} + +[class*=welcome-panel-icon] { + background-color: #363b3f; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/midnight/colors.min.css b/tools/storybook/wordpress/css/colors/midnight/colors.min.css new file mode 100644 index 00000000000..bf804f1ce55 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/midnight/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#e14d43;box-shadow:0 0 0 1px #e14d43}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e14d43;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e14d43}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#e14d43;border-color:#e14d43}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#d02c21;color:#d02c21}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e14d43;border-color:#e14d43;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#df4136;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.wp-core-ui .button-primary:active{background:#dd382d;border-color:#dd382d;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e14d43;color:#fff;border-color:#ba281e;box-shadow:inset 0 2px 5px -3px #200705}.wp-core-ui .button-group>.button.active{border-color:#e14d43}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:hsl(206.6666666667deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #e14d43;color:#e14d43}.wrap .page-title-action:hover{color:#d02c21;border-color:#d02c21}.wrap .page-title-action:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(206.6666666667deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:hsl(206.6666666667deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#e14d43}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(206.6666666667deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#69a8bb}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#5f97a8}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}div#wp-responsive-toggle a:before{color:hsl(206.6666666667deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(206.6666666667deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#e14d43}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e14d43}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#e14d43}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#e14d43;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e14d43}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e14d43;border-style:solid;box-shadow:0 0 0 1px #e14d43;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e14d43}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e14d43;color:#0073aa}.welcome-panel{background-color:#e14d43}[class*=welcome-panel-icon]{background-color:#363b3f} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/midnight/colors.scss b/tools/storybook/wordpress/css/colors/midnight/colors.scss new file mode 100644 index 00000000000..8570c9526eb --- /dev/null +++ b/tools/storybook/wordpress/css/colors/midnight/colors.scss @@ -0,0 +1,6 @@ +$scheme-name: "midnight"; +$base-color: #363b3f; +$highlight-color: #e14d43; +$notification-color: #69a8bb; + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/modern/colors-rtl.css b/tools/storybook/wordpress/css/colors/modern/colors-rtl.css new file mode 100644 index 00000000000..7c5cae613f1 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/modern/colors-rtl.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #3858e9; +} +a:hover, a:active, a:focus { + color: #183ad6; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #3858e9; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #183ad6; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #183ad6; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #3858e9; + box-shadow: 0 0 0 1px #3858e9; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #3858e9; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #3858e9; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #3858e9; + border-color: #3858e9; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #183ad6; + color: #183ad6; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #667fee; + color: #132ea8; + box-shadow: 0 0 0 1px #667fee; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #3858e9; + border-color: #3858e9; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #4664eb; + border-color: #2a4ce7; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; +} +.wp-core-ui .button-primary:active { + background: #2145e6; + border-color: #2145e6; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #3858e9; + color: #fff; + border-color: #1534bf; + box-shadow: inset 0 2px 5px -3px #03081f; +} +.wp-core-ui .button-group > .button.active { + border-color: #3858e9; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #1e1e1e; +} +.wp-core-ui .wp-ui-text-primary { + color: #1e1e1e; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #3858e9; +} +.wp-core-ui .wp-ui-text-highlight { + color: #3858e9; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #3858e9; +} +.wp-core-ui .wp-ui-text-notification { + color: #3858e9; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(0deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #3858e9; + color: #3858e9; +} + +.wrap .page-title-action:hover { + color: #183ad6; + border-color: #183ad6; +} + +.wrap .page-title-action:focus { + border-color: #667fee; + color: #132ea8; + box-shadow: 0 0 0 1px #667fee; +} + +.view-switch a.current:before { + color: #1e1e1e; +} + +.view-switch a:hover:before { + color: #3858e9; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #1e1e1e; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(0deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #3858e9; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #0c0c0c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #0c0c0c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #bcbcbc; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #bcbcbc; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #33f078; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #33f078; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #3858e9; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #3858e9; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #0c0c0c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(0deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #33f078; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #1e1e1e; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #33f078; + background: #0c0c0c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #33f078; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #33f078; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #0c0c0c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #303030; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #bcbcbc; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #33f078; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #33f078; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(0deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #303030; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #3858e9; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #324fd2; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #303030; + background-color: #303030; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #33f078; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #bcbcbc; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #3858e9; + border-color: #2145e6; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #3858e9; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #3858e9; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #3858e9; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #3858e9; +} + +.attachment.details .check { + background-color: #3858e9; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #3858e9; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #3858e9; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #3858e9; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #1e1e1e; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #1e1e1e; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #3858e9; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #3858e9; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(0deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #3858e9; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #0c0c0c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(0deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #3858e9; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #3858e9; + border-right-color: #3858e9; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #3858e9; + border-top-color: #3858e9; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #3858e9; + border-right-color: #3858e9; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #3858e9; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #3858e9; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #3858e9; + color: #3858e9; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #3858e9; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #3858e9; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #3858e9; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #3858e9; + border-style: solid; + box-shadow: 0 0 0 1px #3858e9; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #3858e9; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #3858e9; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #3858e9; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #3858e9; + color: #3858e9; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #3858e9; +} + +[class*=welcome-panel-icon] { + background-color: #1e1e1e; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/modern/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/modern/colors-rtl.min.css new file mode 100644 index 00000000000..bf1605dbca8 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/modern/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#3858e9}a:active,a:focus,a:hover{color:#183ad6}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#3858e9}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#183ad6}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#183ad6}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#3858e9;box-shadow:0 0 0 1px #3858e9}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#3858e9;color:#262a2e;box-shadow:inset 0 2px 5px -3px #3858e9}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#3858e9;border-color:#3858e9}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#183ad6;color:#183ad6}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#3858e9;border-color:#3858e9;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#4664eb;border-color:#2a4ce7;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.wp-core-ui .button-primary:active{background:#2145e6;border-color:#2145e6;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#3858e9;color:#fff;border-color:#1534bf;box-shadow:inset 0 2px 5px -3px #03081f}.wp-core-ui .button-group>.button.active{border-color:#3858e9}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#1e1e1e}.wp-core-ui .wp-ui-text-primary{color:#1e1e1e}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-highlight{color:#3858e9}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-notification{color:#3858e9}.wp-core-ui .wp-ui-text-icon{color:hsl(0deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #3858e9;color:#3858e9}.wrap .page-title-action:hover{color:#183ad6;border-color:#183ad6}.wrap .page-title-action:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.view-switch a.current:before{color:#1e1e1e}.view-switch a:hover:before{color:#3858e9}#adminmenu,#adminmenuback,#adminmenuwrap{background:#1e1e1e}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(0deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#3858e9}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#0c0c0c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#0c0c0c}#adminmenu .wp-submenu .wp-submenu-head{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#33f078}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#33f078}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#3858e9}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#3858e9}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#0c0c0c}#collapse-button{color:hsl(0deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#33f078}#wpadminbar{color:#fff;background:#1e1e1e}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(0deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#33f078;background:#0c0c0c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#33f078}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#33f078}#wpadminbar .menupop .ab-sub-wrapper{background:#0c0c0c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#303030}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#bcbcbc}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(0deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#33f078}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#33f078}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(0deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(0deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#303030}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#3858e9}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#324fd2}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#303030;background-color:#303030}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#33f078}#wpadminbar #wp-admin-bar-user-info .username{color:#bcbcbc}.wp-pointer .wp-pointer-content h3{background-color:#3858e9;border-color:#2145e6}.wp-pointer .wp-pointer-content h3:before{color:#3858e9}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#3858e9}.media-item .bar,.media-progress-bar div{background-color:#3858e9}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #3858e9}.attachment.details .check{background-color:#3858e9;box-shadow:0 0 0 1px #fff,0 0 0 2px #3858e9}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#3858e9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#3858e9}.theme-filter.current,.theme-section.current{border-bottom-color:#1e1e1e}body.more-filters-opened .more-filters{color:#fff;background-color:#1e1e1e}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#3858e9;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#3858e9;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}div#wp-responsive-toggle a:before{color:hsl(0deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#3858e9}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#0c0c0c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(0deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#3858e9}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#3858e9;border-right-color:#3858e9}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#3858e9;border-top-color:#3858e9}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#3858e9;border-right-color:#3858e9}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#3858e9}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#3858e9;color:#3858e9}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#3858e9}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#3858e9}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#3858e9;border-style:solid;box-shadow:0 0 0 1px #3858e9;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#3858e9}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#3858e9;color:#3858e9}.welcome-panel{background-color:#3858e9}[class*=welcome-panel-icon]{background-color:#1e1e1e} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/modern/colors.css b/tools/storybook/wordpress/css/colors/modern/colors.css new file mode 100644 index 00000000000..4e8032ab8b7 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/modern/colors.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #3858e9; +} +a:hover, a:active, a:focus { + color: #183ad6; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #3858e9; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #183ad6; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #183ad6; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #3858e9; + box-shadow: 0 0 0 1px #3858e9; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #3858e9; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #3858e9; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #3858e9; + border-color: #3858e9; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #183ad6; + color: #183ad6; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #667fee; + color: #132ea8; + box-shadow: 0 0 0 1px #667fee; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #3858e9; + border-color: #3858e9; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #4664eb; + border-color: #2a4ce7; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; +} +.wp-core-ui .button-primary:active { + background: #2145e6; + border-color: #2145e6; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #3858e9; + color: #fff; + border-color: #1534bf; + box-shadow: inset 0 2px 5px -3px #03081f; +} +.wp-core-ui .button-group > .button.active { + border-color: #3858e9; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #1e1e1e; +} +.wp-core-ui .wp-ui-text-primary { + color: #1e1e1e; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #3858e9; +} +.wp-core-ui .wp-ui-text-highlight { + color: #3858e9; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #3858e9; +} +.wp-core-ui .wp-ui-text-notification { + color: #3858e9; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(0deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #3858e9; + color: #3858e9; +} + +.wrap .page-title-action:hover { + color: #183ad6; + border-color: #183ad6; +} + +.wrap .page-title-action:focus { + border-color: #667fee; + color: #132ea8; + box-shadow: 0 0 0 1px #667fee; +} + +.view-switch a.current:before { + color: #1e1e1e; +} + +.view-switch a:hover:before { + color: #3858e9; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #1e1e1e; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(0deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #3858e9; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #0c0c0c; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #0c0c0c; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #bcbcbc; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #bcbcbc; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #33f078; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #33f078; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #3858e9; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #3858e9; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #0c0c0c; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(0deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #33f078; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #1e1e1e; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #33f078; + background: #0c0c0c; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #33f078; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #33f078; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #0c0c0c; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #303030; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #bcbcbc; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #33f078; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #33f078; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(0deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(0deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #303030; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #3858e9; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #324fd2; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #303030; + background-color: #303030; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #33f078; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #bcbcbc; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #3858e9; + border-color: #2145e6; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #3858e9; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #3858e9; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #3858e9; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #3858e9; +} + +.attachment.details .check { + background-color: #3858e9; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #3858e9; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #3858e9; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #3858e9; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #1e1e1e; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #1e1e1e; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #3858e9; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #3858e9; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(0deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #3858e9; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #0c0c0c; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(0deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #3858e9; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #3858e9; + border-left-color: #3858e9; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #3858e9; + border-top-color: #3858e9; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #3858e9; + border-left-color: #3858e9; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #3858e9; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #3858e9; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #3858e9; + color: #3858e9; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #3858e9; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #3858e9; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #3858e9; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #3858e9; + border-style: solid; + box-shadow: 0 0 0 1px #3858e9; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #3858e9; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #3858e9; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #3858e9; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #3858e9; + color: #3858e9; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #3858e9; +} + +[class*=welcome-panel-icon] { + background-color: #1e1e1e; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/modern/colors.min.css b/tools/storybook/wordpress/css/colors/modern/colors.min.css new file mode 100644 index 00000000000..a4f2c4cb1e9 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/modern/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#3858e9}a:active,a:focus,a:hover{color:#183ad6}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#3858e9}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#183ad6}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#183ad6}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#3858e9;box-shadow:0 0 0 1px #3858e9}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#3858e9;color:#262a2e;box-shadow:inset 0 2px 5px -3px #3858e9}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#3858e9;border-color:#3858e9}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#183ad6;color:#183ad6}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#3858e9;border-color:#3858e9;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#4664eb;border-color:#2a4ce7;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.wp-core-ui .button-primary:active{background:#2145e6;border-color:#2145e6;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#3858e9;color:#fff;border-color:#1534bf;box-shadow:inset 0 2px 5px -3px #03081f}.wp-core-ui .button-group>.button.active{border-color:#3858e9}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#1e1e1e}.wp-core-ui .wp-ui-text-primary{color:#1e1e1e}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-highlight{color:#3858e9}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-notification{color:#3858e9}.wp-core-ui .wp-ui-text-icon{color:hsl(0deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #3858e9;color:#3858e9}.wrap .page-title-action:hover{color:#183ad6;border-color:#183ad6}.wrap .page-title-action:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.view-switch a.current:before{color:#1e1e1e}.view-switch a:hover:before{color:#3858e9}#adminmenu,#adminmenuback,#adminmenuwrap{background:#1e1e1e}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(0deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#3858e9}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#0c0c0c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#0c0c0c}#adminmenu .wp-submenu .wp-submenu-head{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#33f078}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#33f078}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#3858e9}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#3858e9}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#0c0c0c}#collapse-button{color:hsl(0deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#33f078}#wpadminbar{color:#fff;background:#1e1e1e}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(0deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#33f078;background:#0c0c0c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#33f078}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#33f078}#wpadminbar .menupop .ab-sub-wrapper{background:#0c0c0c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#303030}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#bcbcbc}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(0deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#33f078}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#33f078}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(0deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(0deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#303030}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#3858e9}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#324fd2}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#303030;background-color:#303030}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#33f078}#wpadminbar #wp-admin-bar-user-info .username{color:#bcbcbc}.wp-pointer .wp-pointer-content h3{background-color:#3858e9;border-color:#2145e6}.wp-pointer .wp-pointer-content h3:before{color:#3858e9}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#3858e9}.media-item .bar,.media-progress-bar div{background-color:#3858e9}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #3858e9}.attachment.details .check{background-color:#3858e9;box-shadow:0 0 0 1px #fff,0 0 0 2px #3858e9}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#3858e9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#3858e9}.theme-filter.current,.theme-section.current{border-bottom-color:#1e1e1e}body.more-filters-opened .more-filters{color:#fff;background-color:#1e1e1e}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#3858e9;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#3858e9;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}div#wp-responsive-toggle a:before{color:hsl(0deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#3858e9}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#0c0c0c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(0deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#3858e9}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#3858e9;border-left-color:#3858e9}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#3858e9;border-top-color:#3858e9}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#3858e9;border-left-color:#3858e9}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#3858e9}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#3858e9;color:#3858e9}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#3858e9}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#3858e9}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#3858e9;border-style:solid;box-shadow:0 0 0 1px #3858e9;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#3858e9}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#3858e9;color:#3858e9}.welcome-panel{background-color:#3858e9}[class*=welcome-panel-icon]{background-color:#1e1e1e} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/modern/colors.scss b/tools/storybook/wordpress/css/colors/modern/colors.scss new file mode 100644 index 00000000000..7b7918174cd --- /dev/null +++ b/tools/storybook/wordpress/css/colors/modern/colors.scss @@ -0,0 +1,10 @@ +$scheme-name: "modern"; +$base-color: #1e1e1e; +$highlight-color: #3858e9; +$menu-submenu-focus-text: #33f078; +$notification-color: $highlight-color; + +$link: $highlight-color; +$link-focus: darken($highlight-color, 10%); + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/ocean/colors-rtl.css b/tools/storybook/wordpress/css/colors/ocean/colors-rtl.css new file mode 100644 index 00000000000..adb0eca15ec --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ocean/colors-rtl.css @@ -0,0 +1,681 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #738e96; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #9ebaa0; + box-shadow: 0 0 0 1px #9ebaa0; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #9ebaa0; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #9ebaa0; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button-primary { + background: #9ebaa0; + border-color: #9ebaa0; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #a7c0a9; + border-color: #95b497; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; +} +.wp-core-ui .button-primary:active { + background: #8faf91; + border-color: #8faf91; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #9ebaa0; + color: #fff; + border-color: #719a74; + box-shadow: inset 0 2px 5px -3px #253426; +} +.wp-core-ui .button-group > .button.active { + border-color: #9ebaa0; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #738e96; +} +.wp-core-ui .wp-ui-text-primary { + color: #738e96; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #9ebaa0; +} +.wp-core-ui .wp-ui-text-highlight { + color: #9ebaa0; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #aa9d88; +} +.wp-core-ui .wp-ui-text-notification { + color: #aa9d88; +} +.wp-core-ui .wp-ui-text-icon { + color: #f2fcff; +} + +/* List tables */ +.wrap .page-title-action:hover { + color: #fff; + background-color: #738e96; +} + +.view-switch a.current:before { + color: #738e96; +} + +.view-switch a:hover:before { + color: #aa9d88; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #738e96; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #f2fcff; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #9ebaa0; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #627c83; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #627c83; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #d5dde0; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #d5dde0; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #9ebaa0; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #9ebaa0; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #9ebaa0; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #aa9d88; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #627c83; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #f2fcff; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #9ebaa0; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #738e96; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #f2fcff; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #9ebaa0; + background: #627c83; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #9ebaa0; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #9ebaa0; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #627c83; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #8f9a9e; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #d5dde0; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f2fcff; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #9ebaa0; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #9ebaa0; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #f2fcff; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #f2fcff; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #879ea5; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #aa9d88; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #998d7a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #879ea5; + background-color: #879ea5; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #9ebaa0; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #d5dde0; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #9ebaa0; + border-color: #8faf91; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #9ebaa0; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #9ebaa0; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #9ebaa0; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; +} + +.attachment.details .check { + background-color: #9ebaa0; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #9ebaa0; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #9ebaa0; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #738e96; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #738e96; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #9ebaa0; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #9ebaa0; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #f2fcff; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #9ebaa0; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #627c83; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #f2fcff; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #9ebaa0; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #9ebaa0; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #9ebaa0; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #9ebaa0; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #9ebaa0; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #9ebaa0; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #9ebaa0; + border-style: solid; + box-shadow: 0 0 0 1px #9ebaa0; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #9ebaa0; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #9ebaa0; +} + +[class*=welcome-panel-icon] { + background-color: #738e96; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ocean/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/ocean/colors-rtl.min.css new file mode 100644 index 00000000000..7458450b893 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ocean/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#9ebaa0;box-shadow:0 0 0 1px #9ebaa0}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#9ebaa0;color:#262a2e;box-shadow:inset 0 2px 5px -3px #9ebaa0}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#9ebaa0;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#95b497;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.wp-core-ui .button-primary:active{background:#8faf91;border-color:#8faf91;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#9ebaa0;color:#fff;border-color:#719a74;box-shadow:inset 0 2px 5px -3px #253426}.wp-core-ui .button-group>.button.active{border-color:#9ebaa0}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#9ebaa0}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#aa9d88}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#998d7a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#9ebaa0}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#9ebaa0}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#9ebaa0}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#9ebaa0;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#9ebaa0}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#9ebaa0;border-style:solid;box-shadow:0 0 0 1px #9ebaa0;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#9ebaa0}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#9ebaa0;color:#0073aa}.welcome-panel{background-color:#9ebaa0}[class*=welcome-panel-icon]{background-color:#738e96} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ocean/colors.css b/tools/storybook/wordpress/css/colors/ocean/colors.css new file mode 100644 index 00000000000..12e55e6088b --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ocean/colors.css @@ -0,0 +1,681 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #738e96; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #9ebaa0; + box-shadow: 0 0 0 1px #9ebaa0; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #9ebaa0; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #9ebaa0; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button-primary { + background: #9ebaa0; + border-color: #9ebaa0; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #a7c0a9; + border-color: #95b497; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; +} +.wp-core-ui .button-primary:active { + background: #8faf91; + border-color: #8faf91; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #9ebaa0; + color: #fff; + border-color: #719a74; + box-shadow: inset 0 2px 5px -3px #253426; +} +.wp-core-ui .button-group > .button.active { + border-color: #9ebaa0; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #738e96; +} +.wp-core-ui .wp-ui-text-primary { + color: #738e96; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #9ebaa0; +} +.wp-core-ui .wp-ui-text-highlight { + color: #9ebaa0; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #aa9d88; +} +.wp-core-ui .wp-ui-text-notification { + color: #aa9d88; +} +.wp-core-ui .wp-ui-text-icon { + color: #f2fcff; +} + +/* List tables */ +.wrap .page-title-action:hover { + color: #fff; + background-color: #738e96; +} + +.view-switch a.current:before { + color: #738e96; +} + +.view-switch a:hover:before { + color: #aa9d88; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #738e96; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: #f2fcff; +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #9ebaa0; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #627c83; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #627c83; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #d5dde0; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #d5dde0; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #9ebaa0; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #9ebaa0; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #9ebaa0; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #aa9d88; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #627c83; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: #f2fcff; +} + +#collapse-button:hover, +#collapse-button:focus { + color: #9ebaa0; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #738e96; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: #f2fcff; +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #9ebaa0; + background: #627c83; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #9ebaa0; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #9ebaa0; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #627c83; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #8f9a9e; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #d5dde0; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: #f2fcff; +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #9ebaa0; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #9ebaa0; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: #f2fcff; +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: #f2fcff; +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #879ea5; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #aa9d88; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #998d7a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #879ea5; + background-color: #879ea5; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #9ebaa0; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #d5dde0; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #9ebaa0; + border-color: #8faf91; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #9ebaa0; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #9ebaa0; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #9ebaa0; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #9ebaa0; +} + +.attachment.details .check { + background-color: #9ebaa0; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #9ebaa0; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #9ebaa0; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #9ebaa0; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #738e96; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #738e96; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #9ebaa0; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #9ebaa0; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: #f2fcff; +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #9ebaa0; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #627c83; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: #f2fcff; +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #9ebaa0; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #9ebaa0; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #9ebaa0; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #9ebaa0; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #9ebaa0; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #9ebaa0; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #9ebaa0; + border-style: solid; + box-shadow: 0 0 0 1px #9ebaa0; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #9ebaa0; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #9ebaa0; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #9ebaa0; +} + +[class*=welcome-panel-icon] { + background-color: #738e96; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ocean/colors.min.css b/tools/storybook/wordpress/css/colors/ocean/colors.min.css new file mode 100644 index 00000000000..2ce9b71d998 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ocean/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#9ebaa0;box-shadow:0 0 0 1px #9ebaa0}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#9ebaa0;color:#262a2e;box-shadow:inset 0 2px 5px -3px #9ebaa0}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#9ebaa0;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#95b497;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.wp-core-ui .button-primary:active{background:#8faf91;border-color:#8faf91;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#9ebaa0;color:#fff;border-color:#719a74;box-shadow:inset 0 2px 5px -3px #253426}.wp-core-ui .button-group>.button.active{border-color:#9ebaa0}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#9ebaa0}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#aa9d88}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#998d7a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#9ebaa0}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#9ebaa0}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#9ebaa0}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#9ebaa0;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#9ebaa0}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#9ebaa0;border-style:solid;box-shadow:0 0 0 1px #9ebaa0;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#9ebaa0}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#9ebaa0;color:#0073aa}.welcome-panel{background-color:#9ebaa0}[class*=welcome-panel-icon]{background-color:#738e96} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/ocean/colors.scss b/tools/storybook/wordpress/css/colors/ocean/colors.scss new file mode 100644 index 00000000000..027c27d470a --- /dev/null +++ b/tools/storybook/wordpress/css/colors/ocean/colors.scss @@ -0,0 +1,10 @@ +$scheme-name: "ocean"; +$base-color: #738e96; +$icon-color: #f2fcff; +$highlight-color: #9ebaa0; +$notification-color: #aa9d88; +$low-contrast-theme: "true"; + +$form-checked: $base-color; + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.css b/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.css new file mode 100644 index 00000000000..faa6154292a --- /dev/null +++ b/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #dd823b; + box-shadow: 0 0 0 1px #dd823b; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #dd823b; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #dd823b; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #dd823b; + border-color: #dd823b; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #c36922; + color: #c36922; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #e59e66; + color: #98511a; + box-shadow: 0 0 0 1px #e59e66; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #dd823b; + border-color: #dd823b; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #df8a48; + border-color: #db7a2e; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; +} +.wp-core-ui .button-primary:active { + background: #d97426; + border-color: #d97426; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #dd823b; + color: #fff; + border-color: #ad5d1e; + box-shadow: inset 0 2px 5px -3px #150b04; +} +.wp-core-ui .button-group > .button.active { + border-color: #dd823b; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #cf4944; +} +.wp-core-ui .wp-ui-text-primary { + color: #cf4944; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #dd823b; +} +.wp-core-ui .wp-ui-text-highlight { + color: #dd823b; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #ccaf0b; +} +.wp-core-ui .wp-ui-text-notification { + color: #ccaf0b; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #dd823b; + color: #dd823b; +} + +.wrap .page-title-action:hover { + color: #c36922; + border-color: #c36922; +} + +.wrap .page-title-action:focus { + border-color: #e59e66; + color: #98511a; + box-shadow: 0 0 0 1px #e59e66; +} + +.view-switch a.current:before { + color: #cf4944; +} + +.view-switch a:hover:before { + color: #ccaf0b; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #cf4944; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #dd823b; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #be3631; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-left-color: #be3631; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #f1c8c7; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #f1c8c7; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #f7e3d3; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #f7e3d3; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-left-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #dd823b; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #ccaf0b; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #be3631; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #f7e3d3; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #cf4944; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #f7e3d3; + background: #be3631; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #f7e3d3; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #f7e3d3; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #be3631; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #cf6b67; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #f1c8c7; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #f7e3d3; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #f7e3d3; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #d66560; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #ccaf0b; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #b89e0a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #d66560; + background-color: #d66560; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #f7e3d3; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #f1c8c7; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #dd823b; + border-color: #d97426; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #dd823b; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #dd823b; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #dd823b; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; +} + +.attachment.details .check { + background-color: #dd823b; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #dd823b; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #dd823b; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #cf4944; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #cf4944; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #dd823b; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #dd823b; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #dd823b; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #be3631; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #dd823b; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-right-color: #dd823b; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #dd823b; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-right-color: #dd823b; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-right-color: #dd823b; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #dd823b; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #dd823b; + border-style: solid; + box-shadow: 0 0 0 1px #dd823b; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #dd823b; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #dd823b; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #dd823b; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #dd823b; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #dd823b; +} + +[class*=welcome-panel-icon] { + background-color: #cf4944; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.min.css b/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.min.css new file mode 100644 index 00000000000..d434427d75a --- /dev/null +++ b/tools/storybook/wordpress/css/colors/sunrise/colors-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#dd823b;box-shadow:0 0 0 1px #dd823b}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#dd823b;color:#262a2e;box-shadow:inset 0 2px 5px -3px #dd823b}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#dd823b;border-color:#dd823b}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#c36922;color:#c36922}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#dd823b;border-color:#dd823b;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#db7a2e;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.wp-core-ui .button-primary:active{background:#d97426;border-color:#d97426;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#dd823b;color:#fff;border-color:#ad5d1e;box-shadow:inset 0 2px 5px -3px #150b04}.wp-core-ui .button-group>.button.active{border-color:#dd823b}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:hsl(2.1582733813deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #dd823b;color:#dd823b}.wrap .page-title-action:hover{color:#c36922;border-color:#c36922}.wrap .page-title-action:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(2.1582733813deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:hsl(2.1582733813deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#f7e3d3}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#ccaf0b}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#b89e0a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}div#wp-responsive-toggle a:before{color:hsl(2.1582733813deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(2.1582733813deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#dd823b}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#dd823b}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#dd823b}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#dd823b;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#dd823b}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#dd823b;border-style:solid;box-shadow:0 0 0 1px #dd823b;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#dd823b}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#dd823b;color:#0073aa}.welcome-panel{background-color:#dd823b}[class*=welcome-panel-icon]{background-color:#cf4944} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/sunrise/colors.css b/tools/storybook/wordpress/css/colors/sunrise/colors.css new file mode 100644 index 00000000000..1c8fb4afabb --- /dev/null +++ b/tools/storybook/wordpress/css/colors/sunrise/colors.css @@ -0,0 +1,714 @@ +/*! This file is auto-generated */ +/* + * Button mixin- creates a button effect with correct + * highlights/shadows, based on a base color. + */ +body { + background: #f1f1f1; +} + +/* Links */ +a { + color: #0073aa; +} +a:hover, a:active, a:focus { + color: #0096dd; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-revisions:before, +span.wp-media-buttons-icon:before { + color: currentColor; +} + +.wp-core-ui .button-link { + color: #0073aa; +} +.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { + color: #0096dd; +} + +.media-modal .delete-attachment, +.media-modal .trash-attachment, +.media-modal .untrash-attachment, +.wp-core-ui .button-link-delete { + color: #a00; +} + +.media-modal .delete-attachment:hover, +.media-modal .trash-attachment:hover, +.media-modal .untrash-attachment:hover, +.media-modal .delete-attachment:focus, +.media-modal .trash-attachment:focus, +.media-modal .untrash-attachment:focus, +.wp-core-ui .button-link-delete:hover, +.wp-core-ui .button-link-delete:focus { + color: #dc3232; +} + +/* Forms */ +input[type=checkbox]:checked::before { + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +} + +input[type=radio]:checked::before { + background: #7e8993; +} + +.wp-core-ui input[type=reset]:hover, +.wp-core-ui input[type=reset]:active { + color: #0096dd; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=color]:focus, +input[type=date]:focus, +input[type=datetime]:focus, +input[type=datetime-local]:focus, +input[type=email]:focus, +input[type=month]:focus, +input[type=number]:focus, +input[type=search]:focus, +input[type=tel]:focus, +input[type=text]:focus, +input[type=time]:focus, +input[type=url]:focus, +input[type=week]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus, +select:focus, +textarea:focus { + border-color: #dd823b; + box-shadow: 0 0 0 1px #dd823b; +} + +/* Core UI */ +.wp-core-ui .button { + border-color: #7e8993; + color: #32373c; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #717c87; + color: #262a2e; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus { + border-color: #7e8993; + color: #262a2e; + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button:active { + border-color: #7e8993; + color: #262a2e; + box-shadow: none; +} +.wp-core-ui .button.active, +.wp-core-ui .button.active:focus, +.wp-core-ui .button.active:hover { + border-color: #dd823b; + color: #262a2e; + box-shadow: inset 0 2px 5px -3px #dd823b; +} +.wp-core-ui .button.active:focus { + box-shadow: 0 0 0 1px #32373c; +} +.wp-core-ui .button, +.wp-core-ui .button-secondary { + color: #dd823b; + border-color: #dd823b; +} +.wp-core-ui .button.hover, +.wp-core-ui .button:hover, +.wp-core-ui .button-secondary:hover { + border-color: #c36922; + color: #c36922; +} +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + border-color: #e59e66; + color: #98511a; + box-shadow: 0 0 0 1px #e59e66; +} +.wp-core-ui .button-primary:hover { + color: #fff; +} +.wp-core-ui .button-primary { + background: #dd823b; + border-color: #dd823b; + color: #fff; +} +.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { + background: #df8a48; + border-color: #db7a2e; + color: #fff; +} +.wp-core-ui .button-primary:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; +} +.wp-core-ui .button-primary:active { + background: #d97426; + border-color: #d97426; + color: #fff; +} +.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #dd823b; + color: #fff; + border-color: #ad5d1e; + box-shadow: inset 0 2px 5px -3px #150b04; +} +.wp-core-ui .button-group > .button.active { + border-color: #dd823b; +} +.wp-core-ui .wp-ui-primary { + color: #fff; + background-color: #cf4944; +} +.wp-core-ui .wp-ui-text-primary { + color: #cf4944; +} +.wp-core-ui .wp-ui-highlight { + color: #fff; + background-color: #dd823b; +} +.wp-core-ui .wp-ui-text-highlight { + color: #dd823b; +} +.wp-core-ui .wp-ui-notification { + color: #fff; + background-color: #ccaf0b; +} +.wp-core-ui .wp-ui-text-notification { + color: #ccaf0b; +} +.wp-core-ui .wp-ui-text-icon { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* List tables */ +.wrap .page-title-action, +.wrap .page-title-action:active { + border: 1px solid #dd823b; + color: #dd823b; +} + +.wrap .page-title-action:hover { + color: #c36922; + border-color: #c36922; +} + +.wrap .page-title-action:focus { + border-color: #e59e66; + color: #98511a; + box-shadow: 0 0 0 1px #e59e66; +} + +.view-switch a.current:before { + color: #cf4944; +} + +.view-switch a:hover:before { + color: #ccaf0b; +} + +/* Admin Menu */ +#adminmenuback, +#adminmenuwrap, +#adminmenu { + background: #cf4944; +} + +#adminmenu a { + color: #fff; +} + +#adminmenu div.wp-menu-image:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#adminmenu a:hover, +#adminmenu li.menu-top:hover, +#adminmenu li.opensub > a.menu-top, +#adminmenu li > a.menu-top:focus { + color: #fff; + background-color: #dd823b; +} + +#adminmenu li.menu-top:hover div.wp-menu-image:before, +#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { + color: #fff; +} + +/* Active tabs use a bottom border color that matches the page background color. */ +.about-wrap .nav-tab-active, +.nav-tab-active, +.nav-tab-active:hover { + background-color: #f1f1f1; + border-bottom-color: #f1f1f1; +} + +/* Admin Menu: submenu */ +#adminmenu .wp-submenu, +#adminmenu .wp-has-current-submenu .wp-submenu, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { + background: #be3631; +} + +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, +#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + border-right-color: #be3631; +} + +#adminmenu .wp-submenu .wp-submenu-head { + color: #f1c8c7; +} + +#adminmenu .wp-submenu a, +#adminmenu .wp-has-current-submenu .wp-submenu a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { + color: #f1c8c7; +} +#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu .wp-submenu a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { + color: #f7e3d3; +} + +/* Admin Menu: current */ +#adminmenu .wp-submenu li.current a, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { + color: #fff; +} +#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, +#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { + color: #f7e3d3; +} + +ul#adminmenu a.wp-has-current-submenu:after, +ul#adminmenu > li.current > a.current:after { + border-right-color: #f1f1f1; +} + +#adminmenu li.current a.menu-top, +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, +.folded #adminmenu li.current.menu-top { + color: #fff; + background: #dd823b; +} + +#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, +#adminmenu a.current:hover div.wp-menu-image:before, +#adminmenu li.current div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, +#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, +#adminmenu li:hover div.wp-menu-image:before, +#adminmenu li a:focus div.wp-menu-image:before, +#adminmenu li.opensub div.wp-menu-image:before { + color: #fff; +} + +/* Admin Menu: bubble */ +#adminmenu .awaiting-mod, +#adminmenu .update-plugins { + color: #fff; + background: #ccaf0b; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins, +#adminmenu li:hover a .awaiting-mod, +#adminmenu li.menu-top:hover > a .update-plugins { + color: #fff; + background: #be3631; +} + +/* Admin Menu: collapse button */ +#collapse-button { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#collapse-button:hover, +#collapse-button:focus { + color: #f7e3d3; +} + +/* Admin Bar */ +#wpadminbar { + color: #fff; + background: #cf4944; +} + +#wpadminbar .ab-item, +#wpadminbar a.ab-item, +#wpadminbar > #wp-toolbar span.ab-label, +#wpadminbar > #wp-toolbar span.noticon { + color: #fff; +} + +#wpadminbar .ab-icon, +#wpadminbar .ab-icon:before, +#wpadminbar .ab-item:before, +#wpadminbar .ab-item:after { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #f7e3d3; + background: #be3631; +} + +#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, +#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { + color: #f7e3d3; +} + +#wpadminbar:not(.mobile) li:hover .ab-icon:before, +#wpadminbar:not(.mobile) li:hover .ab-item:before, +#wpadminbar:not(.mobile) li:hover .ab-item:after, +#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { + color: #f7e3d3; +} + +/* Admin Bar: submenu */ +#wpadminbar .menupop .ab-sub-wrapper { + background: #be3631; +} + +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, +#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { + background: #cf6b67; +} + +#wpadminbar .ab-submenu .ab-item, +#wpadminbar .quicklinks .menupop ul li a, +#wpadminbar .quicklinks .menupop.hover ul li a, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a { + color: #f1c8c7; +} + +#wpadminbar .quicklinks li .blavatar, +#wpadminbar .menupop .menupop > .ab-item:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar .quicklinks .menupop ul li a:hover, +#wpadminbar .quicklinks .menupop ul li a:focus, +#wpadminbar .quicklinks .menupop ul li a:hover strong, +#wpadminbar .quicklinks .menupop ul li a:focus strong, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, +#wpadminbar .quicklinks .menupop.hover ul li a:hover, +#wpadminbar .quicklinks .menupop.hover ul li a:focus, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, +#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, +#wpadminbar li:hover .ab-icon:before, +#wpadminbar li:hover .ab-item:before, +#wpadminbar li a:focus .ab-icon:before, +#wpadminbar li .ab-item:focus:before, +#wpadminbar li .ab-item:focus .ab-icon:before, +#wpadminbar li.hover .ab-icon:before, +#wpadminbar li.hover .ab-item:before, +#wpadminbar li:hover #adminbarsearch:before, +#wpadminbar li #adminbarsearch.adminbar-focused:before { + color: #f7e3d3; +} + +#wpadminbar .quicklinks li a:hover .blavatar, +#wpadminbar .quicklinks li a:focus .blavatar, +#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, +#wpadminbar .menupop .menupop > .ab-item:hover:before, +#wpadminbar.mobile .quicklinks .ab-icon:before, +#wpadminbar.mobile .quicklinks .ab-item:before { + color: #f7e3d3; +} + +#wpadminbar.mobile .quicklinks .hover .ab-icon:before, +#wpadminbar.mobile .quicklinks .hover .ab-item:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* Admin Bar: search */ +#wpadminbar #adminbarsearch:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + color: #fff; + background: #d66560; +} + +/* Admin Bar: recovery mode */ +#wpadminbar #wp-admin-bar-recovery-mode { + color: #fff; + background-color: #ccaf0b; +} + +#wpadminbar #wp-admin-bar-recovery-mode .ab-item, +#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { + color: #fff; +} + +#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, +#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, +#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { + color: #fff; + background-color: #b89e0a; +} + +/* Admin Bar: my account */ +#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { + border-color: #d66560; + background-color: #d66560; +} + +#wpadminbar #wp-admin-bar-user-info .display-name { + color: #fff; +} + +#wpadminbar #wp-admin-bar-user-info a:hover .display-name { + color: #f7e3d3; +} + +#wpadminbar #wp-admin-bar-user-info .username { + color: #f1c8c7; +} + +/* Pointers */ +.wp-pointer .wp-pointer-content h3 { + background-color: #dd823b; + border-color: #d97426; +} + +.wp-pointer .wp-pointer-content h3:before { + color: #dd823b; +} + +.wp-pointer.wp-pointer-top .wp-pointer-arrow, +.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, +.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { + border-bottom-color: #dd823b; +} + +/* Media */ +.media-item .bar, +.media-progress-bar div { + background-color: #dd823b; +} + +.details.attachment { + box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #dd823b; +} + +.attachment.details .check { + background-color: #dd823b; + box-shadow: 0 0 0 1px #fff, 0 0 0 2px #dd823b; +} + +.media-selection .attachment.selection.details .thumbnail { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; +} + +/* Themes */ +.theme-browser .theme.active .theme-name, +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + background: #dd823b; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + color: #dd823b; +} + +.theme-section.current, +.theme-filter.current { + border-bottom-color: #cf4944; +} + +body.more-filters-opened .more-filters { + color: #fff; + background-color: #cf4944; +} + +body.more-filters-opened .more-filters:before { + color: #fff; +} + +body.more-filters-opened .more-filters:hover, +body.more-filters-opened .more-filters:focus { + background-color: #dd823b; + color: #fff; +} + +body.more-filters-opened .more-filters:hover:before, +body.more-filters-opened .more-filters:focus:before { + color: #fff; +} + +/* Widgets */ +.widgets-chooser li.widgets-chooser-selected { + background-color: #dd823b; + color: #fff; +} + +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { + color: #fff; +} + +/* Nav Menus */ +.nav-menus-php .item-edit:focus:before { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} + +/* Responsive Component */ +div#wp-responsive-toggle a:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +.wp-responsive-open div#wp-responsive-toggle a { + border-color: transparent; + background: #dd823b; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { + background: #be3631; +} + +.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { + color: hsl(2.1582733813deg, 7%, 95%); +} + +/* TinyMCE */ +.mce-container.mce-menu .mce-menu-item:hover, +.mce-container.mce-menu .mce-menu-item.mce-selected, +.mce-container.mce-menu .mce-menu-item:focus, +.mce-container.mce-menu .mce-menu-item-normal.mce-active, +.mce-container.mce-menu .mce-menu-item-preview.mce-active { + background: #dd823b; +} + +/* Customizer */ +.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, +.wp-core-ui #customize-controls .control-section.open .accordion-section-title, +.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { + color: #0073aa; + border-left-color: #dd823b; +} +.wp-core-ui .customize-controls-close:focus, +.wp-core-ui .customize-controls-close:hover, +.wp-core-ui .customize-controls-preview-toggle:focus, +.wp-core-ui .customize-controls-preview-toggle:hover { + color: #0073aa; + border-top-color: #dd823b; +} +.wp-core-ui .customize-panel-back:hover, +.wp-core-ui .customize-panel-back:focus, +.wp-core-ui .customize-section-back:hover, +.wp-core-ui .customize-section-back:focus { + color: #0073aa; + border-left-color: #dd823b; +} +.wp-core-ui .customize-screen-options-toggle:hover, +.wp-core-ui .customize-screen-options-toggle:active, +.wp-core-ui .customize-screen-options-toggle:focus, +.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #0073aa; +} +.wp-core-ui .customize-screen-options-toggle:focus:before, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, .wp-core-ui.wp-customizer button:focus .toggle-indicator:before, +.wp-core-ui .menu-item-bar .item-delete:focus:before, +.wp-core-ui #available-menu-items .item-add:focus:before, +.wp-core-ui #customize-save-button-wrapper .save:focus, +.wp-core-ui #publish-settings:focus { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} +.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, +.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { + color: #0073aa; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, +.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { + border-left-color: #dd823b; + color: #0073aa; +} +.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { + background: #dd823b; +} +.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { + color: #0073aa; +} +.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, +.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, +.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #0073aa; +} +.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { + background-color: #fbfbfc; + border-color: #dd823b; + border-style: solid; + box-shadow: 0 0 0 1px #dd823b; + outline: 2px solid transparent; +} +.wp-core-ui .wp-full-overlay-footer .devices button:focus, +.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #dd823b; +} +.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, +.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { + color: #dd823b; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #dd823b; +} +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; +} +.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, .wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { + border-bottom-color: #dd823b; + color: #0073aa; +} + +/* Welcome Panel */ +.welcome-panel { + background-color: #dd823b; +} + +[class*=welcome-panel-icon] { + background-color: #cf4944; +} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/sunrise/colors.min.css b/tools/storybook/wordpress/css/colors/sunrise/colors.min.css new file mode 100644 index 00000000000..c118ab235f2 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/sunrise/colors.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#dd823b;box-shadow:0 0 0 1px #dd823b}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#dd823b;color:#262a2e;box-shadow:inset 0 2px 5px -3px #dd823b}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#dd823b;border-color:#dd823b}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#c36922;color:#c36922}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#dd823b;border-color:#dd823b;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#db7a2e;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.wp-core-ui .button-primary:active{background:#d97426;border-color:#d97426;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#dd823b;color:#fff;border-color:#ad5d1e;box-shadow:inset 0 2px 5px -3px #150b04}.wp-core-ui .button-group>.button.active{border-color:#dd823b}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:hsl(2.1582733813deg,7%,95%)}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #dd823b;color:#dd823b}.wrap .page-title-action:hover{color:#c36922;border-color:#c36922}.wrap .page-title-action:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:hsl(2.1582733813deg,7%,95%)}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:hsl(2.1582733813deg,7%,95%)}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#f7e3d3}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar #adminbarsearch:before{color:hsl(2.1582733813deg,7%,95%)}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#ccaf0b}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#b89e0a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}div#wp-responsive-toggle a:before{color:hsl(2.1582733813deg,7%,95%)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:hsl(2.1582733813deg,7%,95%)}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#dd823b}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#dd823b}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#dd823b}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#dd823b;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#dd823b}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#dd823b;border-style:solid;box-shadow:0 0 0 1px #dd823b;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#dd823b}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#dd823b;color:#0073aa}.welcome-panel{background-color:#dd823b}[class*=welcome-panel-icon]{background-color:#cf4944} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/colors/sunrise/colors.scss b/tools/storybook/wordpress/css/colors/sunrise/colors.scss new file mode 100644 index 00000000000..75d74d86706 --- /dev/null +++ b/tools/storybook/wordpress/css/colors/sunrise/colors.scss @@ -0,0 +1,7 @@ +$scheme-name: "sunrise"; +$base-color: #cf4944; +$highlight-color: #dd823b; +$notification-color: #ccaf0b; +$menu-submenu-focus-text: lighten( $highlight-color, 35% ); + +@import "../_admin.scss"; diff --git a/tools/storybook/wordpress/css/common-rtl.css b/tools/storybook/wordpress/css/common-rtl.css new file mode 100644 index 00000000000..4efd986de61 --- /dev/null +++ b/tools/storybook/wordpress/css/common-rtl.css @@ -0,0 +1,4123 @@ +/*! This file is auto-generated */ +/* 2 column liquid layout */ +#wpwrap { + height: auto; + min-height: 100%; + width: 100%; + position: relative; + -webkit-font-smoothing: subpixel-antialiased; +} + +#wpcontent { + height: 100%; + padding-right: 20px; +} + +#wpcontent, +#wpfooter { + margin-right: 160px; +} + +.folded #wpcontent, +.folded #wpfooter { + margin-right: 36px; +} + +#wpbody-content { + padding-bottom: 65px; + float: right; + width: 100%; + overflow: visible; +} + +/* inner 2 column liquid layout */ + +.inner-sidebar { + float: left; + clear: left; + display: none; + width: 281px; + position: relative; +} + +.columns-2 .inner-sidebar { + margin-left: auto; + width: 286px; + display: block; +} + +.inner-sidebar #side-sortables, +.columns-2 .inner-sidebar #side-sortables { + min-height: 300px; + width: 280px; + padding: 0; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: right; + clear: right; + width: 100%; + margin-left: -2000px; +} + +.has-right-sidebar #post-body-content { + margin-left: 300px; + float: none; + width: auto; +} + +/* 2 columns main area */ + +#col-left { + float: right; + width: 35%; +} + +#col-right { + float: left; + width: 65%; +} + +#col-left .col-wrap { + padding: 0 0 0 6px; +} + +#col-right .col-wrap { + padding: 0 6px 0 0; +} + +/* utility classes */ +.alignleft { + float: right; +} + +.alignright { + float: left; +} + +.textleft { + text-align: right; +} + +.textright { + text-align: left; +} + +.clear { + clear: both; +} + +/* modern clearfix */ +.wp-clearfix:after { + content: ""; + display: table; + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +.button .screen-reader-text { + height: auto; /* Fixes a Safari+VoiceOver bug, see ticket #42006 */ +} + +.screen-reader-shortcut { + position: absolute; + top: -1000em; +} + +.screen-reader-shortcut:focus { + right: 6px; + top: -25px; + height: auto; + width: auto; + display: block; + font-size: 14px; + font-weight: 600; + padding: 15px 23px 14px; + background: #f0f0f1; + color: #2271b1; + z-index: 100000; + line-height: normal; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + text-decoration: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js, +.js.wp-core-ui .hide-if-js, +.js .wp-core-ui .hide-if-js, +.no-js.wp-core-ui .hide-if-no-js, +.no-js .wp-core-ui .hide-if-no-js { + display: none; +} + +/* @todo: Take a second look. Large chunks of shared color, from the colors.css merge */ +.widget-top, +.menu-item-handle, +.widget-inside, +#menu-settings-column .accordion-container, +#menu-management .menu-edit, +.manage-menus, +table.widefat, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.wp-editor-container, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +table.widefat, +.wp-editor-container, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + background: #fff; +} + +/* general */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + background: #f0f0f1; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 13px; + line-height: 1.4em; + min-width: 600px; +} + +body.iframe { + min-width: 0; + padding-top: 1px; +} + +body.modal-open { + overflow: hidden; +} + +body.mobile.modal-open #wpwrap { + overflow: hidden; + position: fixed; + height: 100%; +} + +iframe, +img { + border: 0; +} + +td { + font-family: inherit; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +/* Any change to the default link style must be applied to button-link too. */ +a { + color: #2271b1; + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +a, +div { + outline: 0; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus, +a:focus .media-icon img, +a:focus .plugin-icon, +.wp-person a:focus .gravatar { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#adminmenu a:focus { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: -1px; +} + +.screen-reader-text:focus { + box-shadow: none; + outline: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +p, +.wp-die-message { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +li, +dd { + margin-bottom: 6px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + font-weight: 600; +} + +h1 { + color: #1d2327; + font-size: 2em; + margin: .67em 0; +} + +h2, +h3 { + color: #1d2327; + font-size: 1.3em; + margin: 1em 0; +} + +.update-core-php h2 { + margin-top: 4em; +} + +.update-php h2, +.update-messages h2, +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +ul, +ol { + padding: 0; +} + +ul { + list-style: none; +} + +ol { + list-style-type: decimal; + margin-right: 2em; +} + +ul.ul-disc { + list-style: disc outside; +} + +ul.ul-square { + list-style: square outside; +} + +ol.ol-decimal { + list-style: decimal outside; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-right: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +/* rtl:ignore */ +.ltr { + direction: ltr; +} + +/* rtl:ignore */ +.code, +code { + font-family: Consolas, Monaco, monospace; + direction: ltr; + unicode-bidi: embed; +} + +kbd, +code { + padding: 3px 5px 2px; + margin: 0 1px; + background: #f0f0f1; + background: rgba(0, 0, 0, 0.07); + font-size: 13px; +} + +.subsubsub { + list-style: none; + margin: 8px 0 0; + padding: 0; + font-size: 13px; + float: right; + color: #646970; +} + +.subsubsub a { + line-height: 2; + padding: .2em; + text-decoration: none; +} + +.subsubsub a .count, +.subsubsub a.current .count { + color: #50575e; /* #f1f1f1 background */ + font-weight: 400; +} + +.subsubsub a.current { + font-weight: 600; + border: none; +} + +.subsubsub li { + display: inline-block; + margin: 0; + padding: 0; + white-space: nowrap; +} + +/* .widefat - main style for tables */ +.widefat { + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a, +.widefat button.button-link { + text-decoration: none; +} + +.widefat td, +.widefat th { + padding: 8px 10px; +} + +.widefat thead th, +.widefat thead td { + border-bottom: 1px solid #c3c4c7; +} + +.widefat tfoot th, +.widefat tfoot td { + border-top: 1px solid #c3c4c7; + border-bottom: none; +} + +.widefat .no-items td { + border-bottom-width: 0; +} + +.widefat td { + vertical-align: top; +} + +.widefat td, +.widefat td p, +.widefat td ol, +.widefat td ul { + font-size: 13px; + line-height: 1.5em; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + text-align: right; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input, +.updates-table td input, +.widefat thead td input, +.widefat tfoot td input { + margin: 0 8px 0 0; + padding: 0; + vertical-align: text-top; +} + +.widefat .check-column { + width: 2.2em; + padding: 6px 0 25px; + vertical-align: top; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat thead td.check-column, +.widefat tbody th.check-column, +.updates-table tbody td.check-column, +.widefat tfoot td.check-column { + padding: 11px 3px 0 0; +} + +.widefat thead td.check-column, +.widefat tfoot td.check-column { + padding-top: 4px; + vertical-align: middle; +} + +.update-php div.updated, +.update-php div.error { + margin-right: 0; +} + +.no-js .widefat thead .check-column input, +.no-js .widefat tfoot .check-column input { + display: none; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 10px 2px 0 20px; +} + +.wrap.block-editor-no-js { + padding-right: 20px; +} + +.wrap > h2:first-child, /* Back-compat for pre-4.4 */ +.wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */ +.postbox .inside h2, /* Back-compat for pre-4.4 */ +.wrap h1 { + font-size: 23px; + font-weight: 400; + margin: 0; + padding: 9px 0 4px; + line-height: 1.3; +} + +.wrap h1.wp-heading-inline { + display: inline-block; + margin-left: 5px; +} + +.wp-header-end { + visibility: hidden; + margin: -2px 0 0; +} + +.subtitle { + margin: 0; + padding-right: 25px; + color: #50575e; + font-size: 14px; + font-weight: 400; + line-height: 1; +} + +.subtitle strong { + word-break: break-all; +} + +.wrap .add-new-h2, /* deprecated */ +.wrap .add-new-h2:active, /* deprecated */ +.wrap .page-title-action, +.wrap .page-title-action:active { + margin-right: 4px; + padding: 4px 8px; + position: relative; + top: -3px; + text-decoration: none; + border: 1px solid #2271b1; + border-radius: 2px; + text-shadow: none; + font-weight: 600; + font-size: 13px; + line-height: normal; /* IE8-IE11 need this for buttons */ + color: #2271b1; /* use the standard color used for buttons */ + background: #f6f7f7; + cursor: pointer; +} + +.wrap .wp-heading-inline + .page-title-action { + margin-right: 0; +} + +.wrap .add-new-h2:hover, /* deprecated */ +.wrap .page-title-action:hover { + background: #f0f0f1; + border-color: #0a4b78; + color: #0a4b78; +} + +/* lower specificity: color needs to be overridden by :hover and :active */ +.page-title-action:focus { + color: #0a4b78; +} + +/* Dashicon for language options on General Settings and Profile screens */ +.form-table th label[for="locale"] .dashicons, +.form-table th label[for="WPLANG"] .dashicons { + margin-right: 5px; +} + +.wrap .page-title-action:focus { + border-color: #3582c4; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.wrap h1.long-header { + padding-left: 0; +} + +.wp-dialog { + background-color: #fff; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #8c8f94; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.sorthelper { + background-color: #c5d9ed; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.striped > tbody > :nth-child(odd), +ul.striped > :nth-child(odd), +.alternate { + background-color: #f6f7f7; +} + +.bar { + background-color: #f0f0f1; + border-left-color: #4f94d4; +} + +/* Helper classes for plugins to leverage the active WordPress color scheme */ + +.highlight { + background-color: #f0f6fc; + color: #3c434a; +} + +.wp-ui-primary { + color: #fff; + background-color: #2c3338; +} +.wp-ui-text-primary { + color: #2c3338; +} + +.wp-ui-highlight { + color: #fff; + background-color: #2271b1; +} +.wp-ui-text-highlight { + color: #2271b1; +} + +.wp-ui-notification { + color: #fff; + background-color: #d63638; +} +.wp-ui-text-notification { + color: #d63638; +} + +.wp-ui-text-icon { + color: #8c8f94; /* same as new icons */ +} + +/* For emoji replacement images */ +img.emoji { + display: inline !important; + border: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; + box-shadow: none !important; +} + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +.widget .widget-top, +.postbox .hndle, +.stuffbox .hndle, +.control-section .accordion-section-title, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +.checkbox, +.side-info, +#your-profile #rich_editing, +.widefat thead th, +.widefat thead td, +.widefat tfoot th, +.widefat tfoot td { + line-height: 1.4em; +} + +.widget .widget-top, +.menu-item-handle { + background: #f6f7f7; + color: #1d2327; +} + +.stuffbox .hndle { + border-bottom: 1px solid #c3c4c7; +} + +.quicktags { + background-color: #c3c4c7; + color: #000; + font-size: 12px; +} + +.icon32 { + display: none; +} + +/* @todo can we combine these into a class or use an existing dashicon one? */ +.welcome-panel .welcome-panel-close:before, +.tagchecklist .ntdelbutton .remove-tag-icon:before, +#bulk-titles .ntdelbutton:before, +.notice-dismiss:before { + background: none; + color: #787c82; + content: "\f153"; + display: block; + font: normal 16px/20px dashicons; + speak: never; + height: 20px; + text-align: center; + width: 20px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.welcome-panel .welcome-panel-close:before { + margin: 0; +} + +.tagchecklist .ntdelbutton .remove-tag-icon:before { + margin-right: 2px; + border-radius: 50%; + color: #2271b1; + /* vertically center the icon cross browsers */ + line-height: 1.28; +} + +.tagchecklist .ntdelbutton:focus { + outline: 0; +} + +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before, +#bulk-titles .ntdelbutton:hover:before, +#bulk-titles .ntdelbutton:focus:before { + color: #d63638; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.key-labels label { + line-height: 24px; +} + +strong, b { + font-weight: 600; +} + +.pre { + /* https://developer.mozilla.org/en-US/docs/CSS/white-space */ + white-space: pre-wrap; /* css-3 */ + word-wrap: break-word; /* IE 5.5 - 7 */ +} + +.howto { + color: #646970; + display: block; +} + +p.install-help { + margin: 8px 0; + font-style: italic; +} + +.no-break { + white-space: nowrap; +} + +hr { + border: 0; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #f6f7f7; +} + +.row-actions span.delete a, +.row-actions span.trash a, +.row-actions span.spam a, +.plugins a.delete, +#all-plugins-table .plugins a.delete, +#search-plugins-table .plugins a.delete, +.submitbox .submitdelete, +#media-items a.delete, +#media-items a.delete-permanently, +#nav-menu-footer .menu-delete, +#delete-link a.delete, +a#remove-post-thumbnail, +.privacy_requests .remove-personal-data .remove-personal-data-handle { + color: #b32d2e; +} + +abbr.required, +span.required, +.file-error, +.row-actions .delete a:hover, +.row-actions .trash a:hover, +.row-actions .spam a:hover, +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete:hover, +#media-items a.delete:hover, +#media-items a.delete-permanently:hover, +#nav-menu-footer .menu-delete:hover, +#delete-link a.delete:hover, +a#remove-post-thumbnail:hover, +.privacy_requests .remove-personal-data .remove-personal-data-handle:hover { + color: #b32d2e; + border: none; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px; + clear: both; + border-top: 1px solid #dcdcde; + background: #f6f7f7; +} + +#delete-action { + float: right; + line-height: 2.30769231; /* 30px */ +} + +#delete-link { + line-height: 2.30769231; /* 30px */ + vertical-align: middle; + text-align: right; + margin-right: 8px; +} + +#delete-link a { + text-decoration: none; +} + +#publishing-action { + text-align: left; + float: left; + line-height: 1.9; +} + +#publishing-action .spinner { + float: none; + margin-top: 5px; +} + +#misc-publishing-actions { + padding: 6px 0 0; +} + +.misc-pub-section { + padding: 6px 10px 8px; +} + +.misc-pub-filename { + word-wrap: break-word; +} + +#minor-publishing-actions { + padding: 10px 10px 0; + text-align: left; +} + +#save-post { + float: right; +} + +.preview { + float: left; +} + +#sticky-span { + margin-right: 18px; +} + +.approve, +.unapproved .unapprove { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +td.action-links, +th.action-links { + text-align: left; +} + +#misc-publishing-actions .notice { + margin-right: 10px; + margin-left: 10px; +} + +/* Filter bar */ +.wp-filter { + display: inline-block; + position: relative; + box-sizing: border-box; + margin: 12px 0 25px; + padding: 0 10px; + width: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #c3c4c7; + background: #fff; + color: #50575e; + font-size: 13px; +} + +.wp-filter a { + text-decoration: none; +} + +.filter-count { + display: inline-block; + vertical-align: middle; + min-width: 4em; +} + +.title-count, +.filter-count .count { + display: inline-block; + position: relative; + top: -1px; + padding: 4px 10px; + border-radius: 30px; + background: #646970; + color: #fff; + font-size: 14px; + font-weight: 600; +} + +/* not a part of filter bar, but derived from it, so here for now */ +.title-count { + display: inline; + top: -3px; + margin-right: 5px; + margin-left: 20px; +} + +.filter-items { + float: right; +} + +.filter-links { + display: inline-block; + margin: 0; +} + +.filter-links li { + display: inline-block; + margin: 0; +} + +.filter-links li > a { + display: inline-block; + margin: 0 10px; + padding: 15px 0; + border-bottom: 4px solid #fff; + color: #646970; + cursor: pointer; +} + +.filter-links .current { + box-shadow: none; + border-bottom: 4px solid #646970; + color: #1d2327; +} + +.filter-links li > a:hover, +.filter-links li > a:focus, +.show-filters .filter-links a.current:hover, +.show-filters .filter-links a.current:focus { + color: #135e96; +} + +.wp-filter .search-form { + float: left; + margin: 10px 0; +} + +.wp-filter .search-form input[type="search"] { + margin: 1px 0; + width: 280px; + max-width: 100%; +} + +.wp-filter .search-form select { + margin: 0; +} + +/* Use flexbox only on the plugins install page. The `filter-links` and search form children will become flex items. */ +.plugin-install-php .wp-filter { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.wp-filter .search-form.search-plugins { + /* This element is a flex item: the inherited float won't have any effect. */ + margin-top: 0; +} + +.wp-filter .search-form.search-plugins select, +.wp-filter .search-form.search-plugins .wp-filter-search { + display: inline-block; + margin-top: 10px; + vertical-align: top; +} + +.wp-filter .button.drawer-toggle { + margin: 10px 9px 0; + padding: 0 6px 0 10px; + border-color: transparent; + background-color: transparent; + color: #646970; + vertical-align: baseline; + box-shadow: none; +} + +.wp-filter .drawer-toggle:before { + content: "\f111"; + margin: 0 0 0 5px; + color: #646970; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-filter .button.drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before, +.wp-filter .button.drawer-toggle:focus, +.wp-filter .drawer-toggle:focus:before { + background-color: transparent; + color: #135e96; +} + +.wp-filter .button.drawer-toggle:hover, +.wp-filter .button.drawer-toggle:focus:active { + border-color: transparent; +} + +.wp-filter .button.drawer-toggle:focus { + border-color: #4f94d4; +} + +.wp-filter .button.drawer-toggle:active { + background: transparent; + box-shadow: none; + transform: none; +} + +.wp-filter .drawer-toggle.current:before { + color: #fff; +} + +.filter-drawer, +.wp-filter .favorites-form { + display: none; + margin: 0 -20px 0 -10px; + padding: 20px; + border-top: 1px solid #f0f0f1; + background: #f6f7f7; + overflow: hidden; +} + +.show-filters .filter-drawer, +.show-favorites-form .favorites-form { + display: block; +} + +.show-filters .filter-links a.current { + border-bottom: none; +} + +.show-filters .wp-filter .button.drawer-toggle { + border-radius: 2px; + background: #646970; + color: #fff; +} + +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: #2271b1; +} + +.show-filters .wp-filter .drawer-toggle:before { + color: #fff; +} + +.filter-group { + box-sizing: border-box; + position: relative; + float: right; + margin: 0 0 0 1%; + padding: 20px 10px 10px; + width: 24%; + background: #fff; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +.filter-group legend { + position: absolute; + top: 10px; + display: block; + margin: 0; + padding: 0; + font-size: 1em; + font-weight: 600; +} + +.filter-drawer .filter-group-feature { + margin: 28px 0 0; + list-style-type: none; + font-size: 12px; +} + +.filter-drawer .filter-group-feature input, +.filter-drawer .filter-group-feature label { + line-height: 1.4; +} + +.filter-drawer .filter-group-feature input { + position: absolute; + margin: 0; +} + +.filter-group .filter-group-feature label { + display: block; + margin: 14px 23px 14px 0; +} + +.filter-drawer .buttons { + clear: both; + margin-bottom: 20px; +} + +.filter-drawer .filter-group + .buttons { + margin-bottom: 0; + padding-top: 20px; +} + +.filter-drawer .buttons .button span { + display: inline-block; + opacity: 0.8; + font-size: 12px; + text-indent: 10px; +} + +.wp-filter .button.clear-filters { + display: none; + margin-right: 10px; +} + +.wp-filter .button-link.edit-filters { + padding: 0 5px; + line-height: 2.2; +} + +.filtered-by { + display: none; + margin: 0; +} + +.filtered-by > span { + font-weight: 600; +} + +.filtered-by a { + margin-right: 10px; +} + +.filtered-by .tags { + display: inline; +} + +.filtered-by .tag { + margin: 0 5px; + padding: 4px 8px; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; + font-size: 11px; +} + +.filters-applied .filter-group, +.filters-applied .filter-drawer .buttons, +.filters-applied .filter-drawer br { + display: none; +} + +.filters-applied .filtered-by { + display: block; +} + +.filters-applied .filter-drawer { + padding: 20px; +} + +.show-filters .favorites-form, +.show-filters .content-filterable, +.show-filters.filters-applied.loading-content .content-filterable, +.loading-content .content-filterable, +.error .content-filterable { + display: none; +} + +.show-filters.filters-applied .content-filterable { + display: block; +} + +.loading-content .spinner { + display: block; + margin: 40px auto 0; + float: none; +} + +@media only screen and (max-width: 1120px) { + .filter-drawer { + border-bottom: 1px solid #f0f0f1; + } + + .filter-group { + margin-bottom: 0; + margin-top: 5px; + width: 100%; + } + + .filter-group li { + margin: 10px 0; + } +} + +@media only screen and (max-width: 1000px) { + .filter-items { + float: none; + } + + .wp-filter .media-toolbar-primary, + .wp-filter .media-toolbar-secondary, + .wp-filter .search-form { + float: none; /* Remove float from media-views.css */ + position: relative; + max-width: 100%; + } +} + +@media only screen and (max-width: 782px) { + .filter-group li { + padding: 0; + width: 50%; + } +} + +@media only screen and (max-width: 320px) { + .filter-count { + display: none; + } + + .wp-filter .drawer-toggle { + margin: 10px 0; + } + + .filter-group li, + .wp-filter .search-form input[type="search"] { + width: 100%; + } +} + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +.notice, +div.updated, +div.error { + background: #fff; + border: 1px solid #c3c4c7; + border-right-width: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + margin: 5px 15px 2px; + padding: 1px 12px; +} + +div[class="update-message"] { /* back-compat for pre-4.6 */ + padding: 0.5em 0 0.5em 12px; +} + +.notice p, +.notice-title, +div.updated p, +div.error p, +.form-table td .notice p { + margin: 0.5em 0; + padding: 2px; +} + +.error a { + text-decoration: underline; +} + +.updated a { + padding-bottom: 2px; +} + +.notice-alt { + box-shadow: none; +} + +.notice-large { + padding: 10px 20px; +} + +.notice-title { + display: inline-block; + color: #1d2327; + font-size: 18px; +} + +.wp-core-ui .notice.is-dismissible { + padding-left: 38px; + position: relative; +} + +.notice-dismiss { + position: absolute; + top: 0; + left: 1px; + border: none; + margin: 0; + padding: 9px; + background: none; + color: #787c82; + cursor: pointer; +} + +.notice-dismiss:hover:before, +.notice-dismiss:active:before, +.notice-dismiss:focus:before { + color: #d63638; +} + +.notice-dismiss:focus { + outline: none; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.notice-success, +div.updated { + border-right-color: #00a32a; +} + +.notice-success.notice-alt { + background-color: #edfaef; +} + +.notice-warning { + border-right-color: #dba617; +} + +.notice-warning.notice-alt { + background-color: #fcf9e8; +} + +.notice-error, +div.error { + border-right-color: #d63638; +} + +.notice-error.notice-alt { + background-color: #fcf0f1; +} + +.notice-info { + border-right-color: #72aee6; +} + +.notice-info.notice-alt { + background-color: #f0f6fc; +} + +.update-message p:before, +.updating-message p:before, +.updated-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.updated-message:before, +.button.installed:before, +.button.installing:before { + display: inline-block; + font: normal 20px/1 'dashicons'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.wrap .notice, +.wrap div.updated, +.wrap div.error, +.media-upload-form .notice, +.media-upload-form div.error { + margin: 5px 0 15px; +} + +.wrap #templateside .notice { + display: block; + margin: 0; + padding: 5px 8px; + font-weight: 600; + text-decoration: none; +} + +.wrap #templateside span.notice { + margin-right: -12px; +} + +#templateside li.notice a { + padding: 0; +} + +/* Update icon. */ +.update-message p:before, +.updating-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.installing:before { + color: #d63638; + content: "\f463"; +} + +/* Spins the update icon. */ +.updating-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.installing:before, +.plugins .column-auto-updates .dashicons-update.spin, +.theme-overlay .theme-autoupdate .dashicons-update.spin { + animation: rotation 2s infinite linear; +} + +@media (prefers-reduced-motion: reduce) { + .updating-message p:before, + .import-php .updating-message:before, + .button.updating-message:before, + .button.installing:before, + .plugins .column-auto-updates .dashicons-update.spin, + .theme-overlay .theme-autoupdate .dashicons-update.spin { + animation: none; + } +} + +.theme-overlay .theme-autoupdate .dashicons-update.spin { + margin-left: 3px; +} + +/* Updated icon (check mark). */ +.updated-message p:before, +.installed p:before, +.button.updated-message:before { + color: #68de7c; + content: "\f147"; +} + +/* Error icon. */ +.update-message.notice-error p:before { + color: #d63638; + content: "\f534"; +} + +.wrap .notice p:before, +.import-php .updating-message:before { + margin-left: 6px; + vertical-align: bottom; +} + +#update-nag, +.update-nag { + display: inline-block; + line-height: 1.4; + padding: 11px 15px; + font-size: 14px; + margin: 25px 2px 0 20px; +} + +ul#dismissed-updates { + display: none; +} + +#dismissed-updates li > p { + margin-top: 0; +} + +#dismiss, +#undismiss { + margin-right: 0.5em; +} + +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em; +} + +.update-php .spinner { + float: none; + margin: -4px 0; +} + +h2.wp-current-version { + margin-bottom: .3em; +} + +p.update-last-checked { + margin-top: 0; +} + +p.auto-update-status { + margin-top: 2em; + line-height: 1.8; +} + +#ajax-loading, +.ajax-loading, +.ajax-feedback, +.imgedit-wait-spin, +.list-ajax-loading { /* deprecated */ + visibility: hidden; +} + +#ajax-response.alignleft { + margin-right: 2em; +} + +.button.updating-message:before, +.button.updated-message:before, +.button.installed:before, +.button.installing:before { + margin: 3px -2px 0 5px; +} + +.button-primary.updating-message:before { + color: #fff; +} + +.button-primary.updated-message:before { + color: #9ec2e6; +} + +.button.updated-message { + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +@media aural { + .wrap .notice p:before, + .button.installing:before, + .button.installed:before, + .update-message p:before { + speak: never; + } +} + + +/* @todo: this does not need its own section anymore */ +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#adminmenu a, +#taglist a, +#catlist a { + text-decoration: none; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0; + padding: 8px 20px 12px; + position: relative; +} + +#contextual-help-wrap { + overflow: auto; + margin-right: 0; +} + +#screen-meta-links { + float: left; + margin: 0 0 0 20px; +} + +/* screen options and help tabs revert */ +#screen-meta { + display: none; + margin: 0 0 -1px 20px; + position: relative; + background-color: #fff; + border: 1px solid #c3c4c7; + border-top: none; + box-shadow: 0 0 0 transparent; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: right; + margin: 0 6px 0 0; +} + +#screen-meta-links .screen-meta-toggle { + position: relative; + top: 0; +} + +#screen-meta-links .show-settings { + border: 1px solid #c3c4c7; + border-top: none; + height: auto; + margin-bottom: 0; + padding: 3px 16px 3px 6px; + background: #fff; + border-radius: 0 0 4px 4px; + color: #646970; + line-height: 1.7; + box-shadow: 0 0 0 transparent; + transition: box-shadow 0.1s linear; +} + +#screen-meta-links .show-settings:hover, +#screen-meta-links .show-settings:active, +#screen-meta-links .show-settings:focus { + color: #2c3338; +} + +#screen-meta-links .show-settings:focus { + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); +} + +#screen-meta-links .show-settings:active { + transform: none; +} + +#screen-meta-links .show-settings:after { + left: 0; + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0 0 0 5px; + bottom: 2px; + position: relative; + vertical-align: bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +#screen-meta-links .screen-meta-active:after { + content: "\f142"; +} + +/* end screen options and help tabs */ + +.toggle-arrow { + background-repeat: no-repeat; + background-position: top right; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} + +.toggle-arrow-active { + background-position: bottom right; +} + +#screen-options-wrap h5, /* Back-compat for old plugins */ +#screen-options-wrap legend, +#contextual-help-wrap h5 { + margin: 0; + padding: 8px 0; + font-size: 13px; + font-weight: 600; +} + +.metabox-prefs label { + display: inline-block; + padding-left: 15px; + line-height: 2.35; +} + +#number-of-columns { + display: inline-block; + vertical-align: middle; + line-height: 30px; +} + +.metabox-prefs input[type=checkbox] { + margin-top: 0; + margin-left: 6px; +} + +.metabox-prefs label input, +.metabox-prefs label input[type=checkbox] { + margin: -4px 0 0 5px; +} + +.metabox-prefs .columns-prefs label input { + margin: -1px 0 0 2px; +} + +.metabox-prefs label a { + display: none; +} + +.metabox-prefs .screen-options input, +.metabox-prefs .screen-options label { + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.metabox-prefs .screen-options .screen-per-page { + margin-left: 15px; + padding-left: 0; +} + +.metabox-prefs .screen-options label { + line-height: 2.2; + padding-left: 0; +} + +.screen-options + .screen-options { + margin-top: 10px; +} + +.metabox-prefs .submit { + margin-top: 1em; + padding: 0; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#contextual-help-wrap { + padding: 0; +} + +#contextual-help-columns { + position: relative; +} + +#contextual-help-back { + position: absolute; + top: 0; + bottom: 0; + right: 150px; + left: 170px; + border: 1px solid #c3c4c7; + border-top: none; + border-bottom: none; + background: #f0f6fc; +} + +#contextual-help-wrap.no-sidebar #contextual-help-back { + left: 0; + border-left-width: 0; + border-bottom-left-radius: 2px; +} + +.contextual-help-tabs { + float: right; + width: 150px; + margin: 0; +} + +.contextual-help-tabs ul { + margin: 1em 0; +} + +.contextual-help-tabs li { + margin-bottom: 0; + list-style-type: none; + border-style: solid; + border-width: 0 2px 0 0; + border-color: transparent; +} + +.contextual-help-tabs a { + display: block; + padding: 5px 12px 5px 5px; + line-height: 1.4; + text-decoration: none; + border: 1px solid transparent; + border-left: none; + border-right: none; +} + +.contextual-help-tabs a:hover { + color: #2c3338; +} + +.contextual-help-tabs .active { + padding: 0; + margin: 0 0 0 -1px; + border-right: 2px solid #72aee6; + background: #f0f6fc; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.02); +} + +.contextual-help-tabs .active a { + border-color: #c3c4c7; + color: #2c3338; +} + +.contextual-help-tabs-wrap { + padding: 0 20px; + overflow: auto; +} + +.help-tab-content { + display: none; + margin: 0 0 12px 22px; + line-height: 1.6; +} + +.help-tab-content.active { + display: block; +} + +.help-tab-content ul li { + list-style-type: disc; + margin-right: 18px; +} + +.contextual-help-sidebar { + width: 150px; + float: left; + padding: 0 12px 0 8px; + overflow: auto; +} + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +html.wp-toolbar { + padding-top: 32px; + box-sizing: border-box; + -ms-overflow-style: scrollbar; /* See ticket #48545 */ +} + +.widefat th, +.widefat td { + color: #50575e; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + font-weight: 400; +} + +.widefat thead tr th, +.widefat thead tr td, +.widefat tfoot tr th, +.widefat tfoot tr td { + color: #2c3338; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat p, +.widefat ol, +.widefat ul { + color: #2c3338; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +.widefat .column-comment ul { + list-style: initial; + margin-right: 2em; +} + +/* Screens with postboxes */ +.postbox-container { + float: right; +} + +.postbox-container .meta-box-sortables { + box-sizing: border-box; +} + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +.metabox-holder .postbox-container .meta-box-sortables { + /* The jQuery UI Sortables need some initial height to work properly. */ + min-height: 1px; + position: relative; +} + +#post-body-content { + width: 100%; + min-width: 463px; + float: right; +} + +#post-body.columns-2 #postbox-container-1 { + float: left; + margin-left: -300px; + width: 280px; +} + +#post-body.columns-2 #side-sortables { + min-height: 250px; +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content .metabox-holder .postbox-container .empty-container { + outline: none; + height: 0; + min-height: 0; + } +} + +.js .widget .widget-top, +.js .postbox .hndle { + cursor: move; +} + +.js .widget .widget-top.is-non-sortable, +.js .postbox .hndle.is-non-sortable { + cursor: auto; +} + +/* Configurable dashboard widgets "Configure" edit-box link. */ +.hndle a { + font-size: 12px; + font-weight: 400; +} + +.postbox-header { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #c3c4c7; +} + +.postbox-header .hndle { + flex-grow: 1; + /* Handle the alignment for the configurable dashboard widgets "Configure" edit-box link. */ + display: flex; + justify-content: space-between; + align-items: center; +} + +.postbox-header .handle-actions { + flex-shrink: 0; +} + +/* Post box order and toggle buttons. */ +.postbox .handle-order-higher, +.postbox .handle-order-lower, +.postbox .handlediv { + width: 36px; + height: 36px; + margin: 0; + padding: 0; + border: 0; + background: none; + cursor: pointer; +} + +.postbox .handle-order-higher, +.postbox .handle-order-lower { + color: #787c82; + width: 1.62rem; +} + +/* Post box order buttons in the block editor meta boxes area. */ +.edit-post-meta-boxes-area .postbox .handle-order-higher, +.edit-post-meta-boxes-area .postbox .handle-order-lower { + width: 44px; + height: 44px; + color: #1d2327 +} + +.postbox .handle-order-higher[aria-disabled="true"], +.postbox .handle-order-lower[aria-disabled="true"] { + cursor: default; + color: #a7aaad; +} + +.sortable-placeholder { + border: 1px dashed #c3c4c7; + margin-bottom: 20px; +} + +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + line-height: 1; +} + +.postbox.closed { + border-bottom: 0; +} + +/* user-select is not a part of the CSS standard - may change behavior in the future */ +.postbox .hndle, +.stuffbox .hndle { + -webkit-user-select: none; + user-select: none; +} + +.postbox .inside { + padding: 0 12px 12px; + line-height: 1.4; + font-size: 13px; +} + +.stuffbox .inside { + padding: 0; + line-height: 1.4; + font-size: 13px; + margin-top: 0; +} + +.postbox .inside { + margin: 11px 0; + position: relative; +} + +.postbox .inside > p:last-child, +.rss-widget ul li:last-child { + margin-bottom: 1px !important; +} + +.postbox.closed h3 { + border: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.postbox table.widefat { + box-shadow: none; +} + +.temp-border { + border: 1px dotted #c3c4c7; +} + +.columns-prefs label { + padding: 0 0 0 10px; +} + +/* @todo: what is this doing here */ +#dashboard_right_now .versions .b, +#post-status-display, +#post-visibility-display, +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +.media-item .percent, +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +#ed_reply_toolbar #ed_reply_strong, +.item-controls .item-order a, +.feature-filter .feature-name, +#comment-status-display { + font-weight: 600; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#wpfooter { + position: absolute; + bottom: 0; + right: 0; + left: 0; + padding: 10px 20px; + color: #50575e; +} + +#wpfooter p { + font-size: 13px; + margin: 0; + line-height: 1.55; +} + +#footer-thankyou { + font-style: italic; +} + +/*------------------------------------------------------------------------------ + 25.0 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + float: right; + border: 1px solid #c3c4c7; + border-bottom: none; + margin-right: 0.5em; /* half the font size so set the font size properly */ + padding: 5px 10px; + font-size: 14px; + line-height: 1.71428571; + font-weight: 600; + background: #dcdcde; + color: #50575e; + text-decoration: none; + white-space: nowrap; +} + +h3 .nav-tab, /* Back-compat for pre-4.4 */ +.nav-tab-small .nav-tab { + padding: 5px 14px; + font-size: 12px; + line-height: 1.33; +} + +.nav-tab:hover, +.nav-tab:focus { + background-color: #fff; + color: #3c434a; +} + +.nav-tab-active, +.nav-tab:focus:active { + box-shadow: none; +} + +.nav-tab-active { + margin-bottom: -1px; + color: #3c434a; +} + +.nav-tab-active, +.nav-tab-active:hover, +.nav-tab-active:focus, +.nav-tab-active:focus:active { + border-bottom: 1px solid #f0f0f1; + background: #f0f0f1; + color: #000; +} + +h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ +.wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ +.nav-tab-wrapper { + border-bottom: 1px solid #c3c4c7; + margin: 0; + padding-top: 9px; + padding-bottom: 0; + line-height: inherit; +} + +/* Back-compat for plugins. Deprecated. Use .wp-clearfix instead. */ +.nav-tab-wrapper:not(.wp-clearfix):after { + content: ""; + display: table; + clear: both; +} + +/*------------------------------------------------------------------------------ + 26.0 - Misc +------------------------------------------------------------------------------*/ + +.spinner { + background: url(../images/spinner.gif) no-repeat; + background-size: 20px 20px; + display: inline-block; + visibility: hidden; + float: left; + vertical-align: middle; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 4px 10px 0; +} + +.spinner.is-active, +.loading-content .spinner { + visibility: visible; +} + +#template > div { + margin-left: 16em; +} +#template .notice { + margin-top: 1em; + margin-left: 3%; +} +#template .notice p { + width: auto; +} +#template .submit .spinner { + float: none; +} + +.metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */ +.metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */ +.metabox-holder h3.hndle, /* Back-compat for pre-4.4 */ +.metabox-holder h2.hndle { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +/* Back-compat for nav-menus screen */ +.nav-menus-php .metabox-holder h3 { + padding: 10px 14px 11px 10px; + line-height: 1.5; +} + +#templateside ul li a { + text-decoration: none; +} + +.plugin-install #description, +.plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: right; +} + +.attention, +.error-message { + color: #d63638; + font-weight: 600; +} + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + +/* Upgrader styles, Specific to Language Packs */ +.lp-show-latest p { + display: none; +} +.lp-show-latest p:last-child, +.lp-show-latest .lp-error p { + display: block; +} + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +.media-icon { + width: 62px; /* icon + border */ + text-align: center; +} + +.media-icon img { + border: 1px solid #dcdcde; + border: 1px solid rgba(0, 0, 0, 0.07); +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.importers { + font-size: 16px; + width: auto; +} + +.importers td { + padding-left: 14px; + line-height: 1.4; +} + +.importers .import-system { + max-width: 250px; +} + +.importers td.desc { + max-width: 500px; +} + +.importer-title, +.importer-desc, +.importer-action { + display: block; +} + +.importer-title { + color: #000; + font-size: 14px; + font-weight: 400; + margin-bottom: .2em; +} + +.importer-action { + line-height: 1.55; /* Same as with .updating-message */ + color: #50575e; + margin-bottom: 1em; +} + +#post-body #post-body-content #namediv h3, /* Back-compat for pre-4.4 */ +#post-body #post-body-content #namediv h2 { + margin-top: 0; +} + +.edit-comment-author { + color: #1d2327; + border-bottom: 1px solid #f0f0f1; +} + +#namediv h3 label, /* Back-compat for pre-4.4 */ +#namediv h2 label { + vertical-align: baseline; +} + +#namediv table { + width: 100%; +} + +#namediv td.first { + width: 10px; + white-space: nowrap; +} + +#namediv input { + width: 100%; +} + +#namediv p { + margin: 10px 0; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.zerosize { + height: 0; + width: 0; + margin: 0; + border: 0; + padding: 0; + overflow: hidden; + position: absolute; +} + +br.clear { + height: 2px; + line-height: 0.15; +} + +.checkbox { + border: none; + margin: 0; + padding: 0; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +.post-categories { + display: inline; + margin: 0; + padding: 0; +} + +.post-categories li { + display: inline; +} + +/* Star Ratings - Back-compat for pre-3.8 */ +div.star-holder { + position: relative; + height: 17px; + width: 100px; + background: url(../images/stars.png?ver=20121108) repeat-x bottom right; +} + +div.star-holder .star-rating { + background: url(../images/stars.png?ver=20121108) repeat-x top right; + height: 17px; + float: right; +} + +/* Star Ratings */ +.star-rating { + white-space: nowrap; +} +.star-rating .star { + display: inline-block; + width: 20px; + height: 20px; + -webkit-font-smoothing: antialiased; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + font-weight: 400; + font-style: normal; + vertical-align: top; + transition: color .1s ease-in; + text-align: center; + color: #dba617; +} + +.star-rating .star-full:before { + content: "\f155"; +} + +.star-rating .star-half:before { + content: "\f459"; +} + +.rtl .star-rating .star-half { + transform: rotateY(-180deg); +} + +.star-rating .star-empty:before { + content: "\f154"; +} + +div.action-links { + font-weight: 400; + margin: 6px 0 0; +} + +/* Plugin install thickbox */ +#plugin-information { + background: #fff; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 100%; + padding: 0; +} + +#plugin-information-scrollable { + overflow: auto; + -webkit-overflow-scrolling: touch; + height: 100%; +} + +#plugin-information-title { + padding: 0 26px; + background: #f6f7f7; + font-size: 22px; + font-weight: 600; + line-height: 2.4; + position: relative; + height: 56px; +} + +#plugin-information-title.with-banner { + margin-left: 0; + height: 250px; + background-size: cover; +} + +#plugin-information-title h2 { + font-size: 1em; + font-weight: 600; + padding: 0; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner h2 { + position: relative; + font-family: "Helvetica Neue", sans-serif; + display: inline-block; + font-size: 30px; + line-height: 1.68; + box-sizing: border-box; + max-width: 100%; + padding: 0 15px; + margin-top: 174px; + color: #fff; + background: rgba(29, 35, 39, 0.9); + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + box-shadow: 0 0 30px rgba(255, 255, 255, 0.1); + border-radius: 8px; +} + +#plugin-information-title div.vignette { + display: none; +} + +#plugin-information-title.with-banner div.vignette { + position: absolute; + display: block; + top: 0; + right: 0; + height: 250px; + width: 100%; + background: transparent; + box-shadow: inset 0 0 50px 4px rgba(0, 0, 0, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#plugin-information-tabs { + padding: 0 16px; + position: relative; + left: 0; + right: 0; + min-height: 36px; + font-size: 0; + z-index: 1; + border-bottom: 1px solid #dcdcde; + background: #f6f7f7; +} + +#plugin-information-tabs a { + position: relative; + display: inline-block; + padding: 9px 10px; + margin: 0; + height: 18px; + line-height: 1.3; + font-size: 14px; + text-decoration: none; + transition: none; +} + +#plugin-information-tabs a.current { + margin: 0 -1px -1px; + background: #fff; + border: 1px solid #dcdcde; + border-bottom-color: #fff; + padding-top: 8px; + color: #2c3338; +} + +#plugin-information-tabs.with-banner a.current { + border-top: none; + padding-top: 9px; +} + +#plugin-information-tabs a:active, +#plugin-information-tabs a:focus { + outline: none; +} + +#plugin-information-content { + overflow: hidden; /* equal height column trick */ + background: #fff; + position: relative; + top: 0; + left: 0; + right: 0; + min-height: 100%; + /* Height of title + tabs + install now */ + min-height: calc( 100% - 152px ); +} + +#plugin-information-content.with-banner { + /* Height of banner + tabs + install now */ + min-height: calc( 100% - 346px ); +} + +#section-holder { + position: relative; + top: 0; + left: 250px; + bottom: 0; + right: 0; + margin-top: 10px; + margin-left: 250px; /* FYI box */ + padding: 10px 26px 99999px; /* equal height column trick */ + margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ +} + +#section-holder .notice { + margin: 5px 0 15px; +} + +#section-holder .updated { + margin: 16px 0; +} + +#plugin-information .fyi { + float: left; + position: relative; + top: 0; + left: 0; + padding: 16px 16px 99999px; /* equal height column trick */ + margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ + width: 217px; + border-right: 1px solid #dcdcde; + background: #f6f7f7; + color: #646970; +} + +#plugin-information .fyi strong { + color: #3c434a; +} + +#plugin-information .fyi h3 { + font-weight: 600; + text-transform: uppercase; + font-size: 12px; + color: #646970; + margin: 24px 0 8px; +} + +#plugin-information .fyi h2 { + font-size: 0.9em; + margin-bottom: 0; + margin-left: 0; +} + +#plugin-information .fyi ul { + padding: 0; + margin: 0; + list-style: none; +} + +#plugin-information .fyi li { + margin: 0 0 10px; +} + +#plugin-information .fyi-description { + margin-top: 0; +} + +#plugin-information .counter-container { + margin: 3px 0; +} + +#plugin-information .counter-label { + float: right; + margin-left: 5px; + min-width: 55px; +} + +#plugin-information .counter-back { + height: 17px; + width: 92px; + background-color: #dcdcde; + float: right; +} + +#plugin-information .counter-bar { + height: 17px; + background-color: #f0c33c; /* slightly lighter than stars due to larger expanse */ + float: right; +} + +#plugin-information .counter-count { + margin-right: 5px; +} + +#plugin-information .fyi ul.contributors { + margin-top: 10px; +} + +#plugin-information .fyi ul.contributors li { + display: inline-block; + margin-left: 8px; + vertical-align: middle; +} + +#plugin-information .fyi ul.contributors li { + display: inline-block; + margin-left: 8px; + vertical-align: middle; +} + +#plugin-information .fyi ul.contributors li img { + vertical-align: middle; + margin-left: 4px; +} + +#plugin-information-footer { + padding: 13px 16px; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 40px; /* actual height: 40+13+13+1=67 */ + border-top: 1px solid #dcdcde; + background: #f6f7f7; +} + +/* rtl:ignore */ +#plugin-information .section { + direction: ltr; +} + +/* rtl:ignore */ +#plugin-information .section ul, +#plugin-information .section ol { + list-style-type: disc; + margin-left: 24px; +} + +#plugin-information .section, +#plugin-information .section p { + font-size: 14px; + line-height: 1.7; +} + +#plugin-information #section-screenshots ol { + list-style: none; + margin: 0; +} + +#plugin-information #section-screenshots li img { + vertical-align: text-top; + margin-top: 16px; + max-width: 100%; + width: auto; + height: auto; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +/* rtl:ignore */ +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; +} + +#plugin-information pre { + padding: 7px; + overflow: auto; + border: 1px solid #c3c4c7; +} + +#plugin-information blockquote { + border-right: 2px solid #dcdcde; + color: #646970; + font-style: italic; + margin: 1em 0; + padding: 0 1em 0 0; +} + +/* rtl:ignore */ +#plugin-information .review { + overflow: hidden; /* clearfix */ + width: 100%; + margin-bottom: 20px; + border-bottom: 1px solid #dcdcde; +} + +#plugin-information .review-title-section { + overflow: hidden; /* clearfix */ +} + +/* rtl:ignore */ +#plugin-information .review-title-section h4 { + display: inline-block; + float: left; + margin: 0 6px 0 0; +} + +#plugin-information .reviewer-info p { + clear: both; + margin: 0; + padding-top: 2px; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .avatar { + float: left; + margin: 4px 6px 0 0; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .star-rating { + float: left; +} + +/* rtl:ignore */ +#plugin-information .review-meta { + float: left; + margin-left: 0.75em; +} + +/* rtl:ignore */ +#plugin-information .review-body { + float: left; + width: 100%; +} + +.plugin-version-author-uri { + font-size: 13px; +} + +/* For non-js plugin installation screen ticket #36430. */ +.update-php .button.button-primary { + margin-left: 1em; +} + +@media screen and (max-width: 771px) { + #plugin-information-title.with-banner { + height: 100px; + } + + #plugin-information-title.with-banner h2 { + margin-top: 30px; + font-size: 20px; + line-height: 2; + max-width: 85%; + } + + #plugin-information-title.with-banner div.vignette { + height: 100px; + } + + #plugin-information-tabs { + overflow: hidden; /* clearfix */ + padding: 0; + height: auto; /* let tabs wrap */ + } + + #plugin-information-tabs a.current { + margin-bottom: 0; + border-bottom: none; + } + + #plugin-information .fyi { + float: none; + border: 1px solid #dcdcde; + position: static; + width: auto; + margin: 26px 26px 0; + padding-bottom: 0; /* reset from the two column height fix */ + } + + #section-holder { + position: static; + margin: 0; + padding-bottom: 70px; /* reset from the two column height fix, plus accommodate footer */ + } + + #plugin-information .fyi h3, + #plugin-information .fyi small { + display: none; + } + + #plugin-information-footer { + padding: 12px 16px 0; + height: 46px; + } +} + +/* Thickbox for the Plugin details modal. */ +#TB_window.plugin-details-modal { + background: #fff; +} + +#TB_window.plugin-details-modal.thickbox-loading:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + right: 50%; + top: 50%; + z-index: -1; + margin: -10px -10px 0 0; + background: #fff url(../images/spinner.gif) no-repeat center; + background-size: 20px 20px; + transform: translateZ(0); +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + #TB_window.plugin-details-modal.thickbox-loading:before { + background-image: url(../images/spinner-2x.gif); + } +} + +.plugin-details-modal #TB_title { + float: right; + height: 1px; +} + +.plugin-details-modal #TB_ajaxWindowTitle { + display: none; +} + +.plugin-details-modal #TB_closeWindowButton { + right: auto; + left: -30px; + color: #f0f0f1; +} + +.plugin-details-modal #TB_closeWindowButton:hover, +.plugin-details-modal #TB_closeWindowButton:focus { + color: #135e96; + outline: none; + box-shadow: none; +} + +.plugin-details-modal .tb-close-icon { + display: none; +} + +.plugin-details-modal #TB_closeWindowButton:after { + content: "\f335"; + font: normal 32px/29px 'dashicons'; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* move plugin install close icon to top on narrow screens */ +@media screen and (max-width: 830px) { + .plugin-details-modal #TB_closeWindowButton { + left: 0; + top: -30px; + } +} + +/* @todo: move this. */ +img { + border: none; +} + +/* Metabox collapse arrow indicators */ +.sidebar-name .toggle-indicator::before, +.meta-box-sortables .postbox .toggle-indicator::before, +.meta-box-sortables .postbox .order-higher-indicator::before, +.meta-box-sortables .postbox .order-lower-indicator::before, +.bulk-action-notice .toggle-indicator::before, +.privacy-text-box .toggle-indicator::before { + content: "\f142"; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +.js .widgets-holder-wrap.closed .toggle-indicator::before, +.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before, +.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before, +.privacy-text-box.closed .toggle-indicator::before { + content: "\f140"; +} + +.postbox .handle-order-higher .order-higher-indicator::before { + content: "\f343"; + color: inherit; +} + +.postbox .handle-order-lower .order-lower-indicator::before { + content: "\f347"; + color: inherit; +} + +.postbox .handle-order-higher .order-higher-indicator::before, +.postbox .handle-order-lower .order-lower-indicator::before { + position: relative; + top: 0.11rem; + width: 20px; + height: 20px; +} + +.postbox .handlediv .toggle-indicator::before { + width: 20px; + border-radius: 50%; +} + +.postbox .handlediv .toggle-indicator::before { + position: relative; + top: 0.05rem; + text-indent: -1px; /* account for the dashicon glyph uneven horizontal alignment */ +} + +.rtl .postbox .handlediv .toggle-indicator::before { + text-indent: 1px; /* account for the dashicon glyph uneven horizontal alignment */ +} + +.bulk-action-notice .toggle-indicator::before { + line-height: 16px; + vertical-align: top; + color: #787c82; +} + +.postbox .handle-order-higher:focus, +.postbox .handle-order-lower:focus, +.postbox .handlediv:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.postbox .handle-order-higher:focus .order-higher-indicator::before, +.postbox .handle-order-lower:focus .order-lower-indicator::before, +.postbox .handlediv:focus .toggle-indicator::before { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +/* @todo: appears to be Press This only and overridden */ +#photo-add-url-div input[type="text"] { + width: 300px; +} + +/* Theme/Plugin file editor */ +.alignleft h2 { + margin: 0; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + background: #f6f7f7; + -o-tab-size: 4; + tab-size: 4; +} + +#template textarea, +#template .CodeMirror { + width: 100%; + min-height: 60vh; + height: calc( 100vh - 295px ); + border: 1px solid #dcdcde; + box-sizing: border-box; +} + +#templateside > h2 { + padding-top: 6px; + padding-bottom: 7px; + margin: 0; +} + +#templateside ol, +#templateside ul { + margin: 0; + padding: 0; +} +#templateside > ul { + box-sizing: border-box; + margin-top: 0; + overflow: auto; + padding: 0; + min-height: 60vh; + height: calc(100vh - 295px); + background-color: #f6f7f7; + border: 1px solid #dcdcde; + border-right: none; +} +#templateside ul ul { + padding-right: 12px; +} +#templateside > ul > li > ul[role=group] { + padding-right: 0; +} + +/* + * Styles for Theme and Plugin file editors. + */ + +/* Hide collapsed items. */ +[role="treeitem"][aria-expanded="false"] > ul { + display: none; +} + +/* Use arrow dashicons for folder states, but hide from screen readers. */ +[role="treeitem"] span[aria-hidden] { + display: inline; + font-family: dashicons; + font-size: 20px; + position: absolute; + pointer-events: none; +} +[role="treeitem"][aria-expanded="false"] > .folder-label .icon:after { + content: "\f141"; +} +[role="treeitem"][aria-expanded="true"] > .folder-label .icon:after { + content: "\f140"; +} +[role="treeitem"] .folder-label { + display: block; + padding: 3px 12px 3px 3px; + cursor: pointer; +} + +/* Remove outline, and create our own focus and hover styles */ +[role="treeitem"] { + outline: 0; +} +[role="treeitem"] .folder-label.focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} +[role="treeitem"].hover, +[role="treeitem"] .folder-label.hover { + background-color: #f0f0f1; +} + +.tree-folder { + margin: 0; + position: relative; +} +[role="treeitem"] li { + position: relative; +} + +/* Styles for folder indicators/depth */ +.tree-folder .tree-folder::after { + content: ""; + display: block; + position: absolute; + right: 2px; + border-right: 1px solid #c3c4c7; + top: -13px; + bottom: 10px; +} +.tree-folder > li::before { + content: ""; + position: absolute; + display: block; + border-right: 1px solid #c3c4c7; + right: 2px; + top: -5px; + height: 18px; + width: 7px; + border-bottom: 1px solid #c3c4c7; +} +.tree-folder > li::after { + content: ""; + position: absolute; + display: block; + border-right: 1px solid #c3c4c7; + right: 2px; + bottom: -7px; + top: 0; +} + +/* current-file needs to adjustment for .notice styles */ +#templateside .current-file { + margin: -4px 0 -2px; +} +.tree-folder > .current-file::before { + right: 4px; + height: 15px; + width: 0; + border-right: none; + top: 3px; +} +.tree-folder > .current-file::after { + bottom: -4px; + height: 7px; + right: 2px; + top: auto; +} + +/* Lines shouldn't continue on last item */ +.tree-folder > li:last-child::after, +.tree-folder li:last-child > .tree-folder::after { + display: none; +} + +#theme-plugin-editor-selector, +#theme-plugin-editor-label, +#documentation label { + font-weight: 600; +} + +#theme-plugin-editor-label { + display: inline-block; + margin-bottom: 1em; +} + +/* rtl:ignore */ +#template textarea, +#docs-list { + direction: ltr; +} + +.fileedit-sub #theme, +.fileedit-sub #plugin { + max-width: 40%; +} +.fileedit-sub .alignright { + text-align: left; +} + +#template p { + width: 97%; +} + +#file-editor-linting-error { + margin-top: 1em; + margin-bottom: 1em; +} +#file-editor-linting-error > .notice { + margin: 0; + display: inline-block; +} +#file-editor-linting-error > .notice > p { + width: auto; +} +#template .submit { + margin-top: 1em; + padding: 0; +} + +#template .submit input[type=submit][disabled] { + cursor: not-allowed; +} +#templateside { + float: left; + width: 16em; + word-wrap: break-word; +} + +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside li:not(.howto) a, +.theme-editor-php .highlight { + display: block; + padding: 3px 12px 3px 0; + text-decoration: none; +} + +#templateside li:not(.howto) > a:first-of-type { + padding-top: 0; +} + +#templateside li.howto { + padding: 6px 12px 12px; +} + +.theme-editor-php .highlight { + margin: -3px -12px -3px 3px; +} + +#templateside .highlight { + border: none; + font-weight: 600; +} + +.nonessential { + color: #646970; + font-size: 11px; + font-style: italic; + padding-right: 12px; +} + +#documentation { + margin-top: 10px; +} + +#documentation label { + line-height: 1.8; + vertical-align: baseline; +} + +.fileedit-sub { + padding: 10px 0 8px; + line-height: 180%; +} + +#file-editor-warning .file-editor-warning-content { + margin: 25px; +} + +/* @todo: can we use a common class for these? */ +.nav-menus-php .item-edit:before, +.widget-top .widget-action .toggle-indicator:before, +.control-section .accordion-section-title:after, +.accordion-section-title:after { + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +.widget-top .widget-action .toggle-indicator:before { + padding: 1px 0 1px 2px; + border-radius: 50%; +} + +.handlediv, +.postbox .handlediv.button-link, +.item-edit, +.toggle-indicator, +.accordion-section-title:after { + color: #787c82; +} + +.widget-action { + color: #50575e; /* #fafafa background in the Widgets screen */ +} + +.widget-top:hover .widget-action, +.widget-action:focus, +.handlediv:hover, +.handlediv:focus, +.postbox .handlediv.button-link:hover, +.postbox .handlediv.button-link:focus, +.item-edit:hover, +.item-edit:focus, +.sidebar-name:hover .toggle-indicator, +.accordion-section-title:hover:after { + color: #1d2327; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.widget-top .widget-action:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.control-section .accordion-section-title:after, +.accordion-section-title:after { + float: left; + left: 20px; + top: -2px; +} + +.control-section.open .accordion-section-title:after, +#customize-info.open .accordion-section-title:after, +.nav-menus-php .menu-item-edit-active .item-edit:before, +.widget.open .widget-top .widget-action .toggle-indicator:before, +.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before { + content: "\f142"; +} + +/*! + * jQuery UI Draggable/Sortable 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ +.ui-draggable-handle, +.ui-sortable-handle { + touch-action: none; +} + +/* Accordion */ +.accordion-section { + border-bottom: 1px solid #dcdcde; + margin: 0; +} + +.accordion-section.open .accordion-section-content, +.no-js .accordion-section .accordion-section-content { + display: block; +} + +.accordion-section.open:hover { + border-bottom-color: #dcdcde; +} + +.accordion-section-content { + display: none; + padding: 10px 20px 15px; + overflow: hidden; + background: #fff; +} + +.accordion-section-title { + margin: 0; + padding: 12px 15px 15px; + position: relative; + border-right: 1px solid #dcdcde; + border-left: 1px solid #dcdcde; + -webkit-user-select: none; + user-select: none; +} + +.js .accordion-section-title { + cursor: pointer; +} + +.js .accordion-section-title:after { + position: absolute; + top: 12px; + left: 10px; + z-index: 1; +} + +.accordion-section-title:focus { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.accordion-section-title:hover:after, +.accordion-section-title:focus:after { + border-color: #a7aaad transparent; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.cannot-expand .accordion-section-title { + cursor: auto; +} + +.cannot-expand .accordion-section-title:after { + display: none; +} + +.control-section .accordion-section-title, +.customize-pane-child .accordion-section-title { + border-right: none; + border-left: none; + padding: 10px 14px 11px 10px; + line-height: 1.55; + background: #fff; +} + +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { + top: calc(50% - 10px); /* Arrow height is 20px, so use half of that to vertically center */ +} + +.js .control-section:hover .accordion-section-title, +.js .control-section .accordion-section-title:hover, +.js .control-section.open .accordion-section-title, +.js .control-section .accordion-section-title:focus { + color: #1d2327; + background: #f6f7f7; +} + +.control-section.open .accordion-section-title { + /* When expanded */ + border-bottom: 1px solid #dcdcde; +} + +/* Edit Site */ +.network-admin .edit-site-actions { + margin-top: 0; +} + +/* My Sites */ +.my-sites { + display: block; + overflow: auto; + zoom: 1; +} + +.my-sites li { + display: block; + padding: 8px 3%; + min-height: 130px; + margin: 0; +} + +@media only screen and (max-width: 599px) { + .my-sites li { + min-height: 0; + } +} + +@media only screen and (min-width: 600px) { + .my-sites.striped li { + background-color: #fff; + position: relative; + } + .my-sites.striped li:after { + content: ""; + width: 1px; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: #c3c4c7; + } + +} +@media only screen and (min-width: 600px) and (max-width: 699px) { + .my-sites li{ + float: right; + width: 44%; + } + .my-sites.striped li { + background-color: #fff; + } + .my-sites.striped li:nth-of-type(2n+1) { + clear: right; + } + .my-sites.striped li:nth-of-type(2n+2):after { + content: none; + } + .my-sites li:nth-of-type(4n+1), + .my-sites li:nth-of-type(4n+2) { + background-color: #f6f7f7; + } + +} + +@media only screen and (min-width: 700px) and (max-width: 1199px) { + .my-sites li { + float: right; + width: 27.333333%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(3n+3):after { + content: none; + } + .my-sites li:nth-of-type(6n+1), + .my-sites li:nth-of-type(6n+2), + .my-sites li:nth-of-type(6n+3) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1200px) and (max-width: 1399px) { + .my-sites li { + float: right; + width: 21%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(4n+1) { + clear: right; + } + .my-sites.striped li:nth-of-type(4n+4):after { + content: none; + } + .my-sites li:nth-of-type(8n+1), + .my-sites li:nth-of-type(8n+2), + .my-sites li:nth-of-type(8n+3), + .my-sites li:nth-of-type(8n+4) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1400px) and (max-width: 1599px) { + .my-sites li { + float: right; + width: 16%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(5n+1) { + clear: right; + } + .my-sites.striped li:nth-of-type(5n+5):after { + content: none; + } + .my-sites li:nth-of-type(10n+1), + .my-sites li:nth-of-type(10n+2), + .my-sites li:nth-of-type(10n+3), + .my-sites li:nth-of-type(10n+4), + .my-sites li:nth-of-type(10n+5) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1600px) { + .my-sites li { + float: right; + width: 12.666666%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(6n+1) { + clear: right; + } + .my-sites.striped li:nth-of-type(6n+6):after { + content: none; + } + .my-sites li:nth-of-type(12n+1), + .my-sites li:nth-of-type(12n+2), + .my-sites li:nth-of-type(12n+3), + .my-sites li:nth-of-type(12n+4), + .my-sites li:nth-of-type(12n+5), + .my-sites li:nth-of-type(12n+6) { + background-color: #f6f7f7; + } +} + +.my-sites li a { + text-decoration: none; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Back-compat for pre-3.8 */ + div.star-holder, + div.star-holder .star-rating { + background: url(../images/stars-2x.png?ver=20121108) repeat-x bottom right; + background-size: 21px 37px; + } + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} + +@media screen and (max-width: 782px) { + html.wp-toolbar { + padding-top: 46px; + } + + .screen-reader-shortcut:focus { + top: -39px; + } + + body { + min-width: 240px; + overflow-x: hidden; + } + + body * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important; + } + + #wpcontent { + position: relative; + margin-right: 0; + padding-right: 10px; + } + + #wpbody-content { + padding-bottom: 100px; + } + + .wrap { + clear: both; + margin-left: 12px; + margin-right: 0; + } + + /* categories */ + #col-left, + #col-right { + float: none; + width: auto; + } + + #col-left .col-wrap, + #col-right .col-wrap { + padding: 0; + } + + /* Hidden Elements */ + #collapse-menu, + .post-format-select { + display: none !important; + } + + .wrap h1.wp-heading-inline { + margin-bottom: 0.5em; + } + + .wrap .add-new-h2, /* deprecated */ + .wrap .add-new-h2:active, /* deprecated */ + .wrap .page-title-action, + .wrap .page-title-action:active { + padding: 10px 15px; + font-size: 14px; + white-space: nowrap; + } + + /* Feedback Messages */ + .notice, + .wrap div.updated, + .wrap div.error, + .media-upload-form div.error { + margin: 20px 0 10px; + padding: 5px 10px; + font-size: 14px; + line-height: 175%; + } + + .wp-core-ui .notice.is-dismissible { + padding-left: 46px; + } + + .notice-dismiss { + padding: 13px; + } + + .wrap .icon32 + h2 { + margin-top: -2px; + } + + .wp-responsive-open #wpbody { + left: -16em; + } + + code { + word-wrap: break-word; + word-wrap: anywhere; /* Firefox. Allow breaking long words anywhere */ + word-break: break-word; /* Webkit: Treated similarly to word-wrap: break-word */ + } + + /* General Metabox */ + .postbox { + font-size: 14px; + } + + .metabox-holder h3.hndle, /* Back-compat for pre-4.4 */ + .metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */ + .metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */ + .metabox-holder h2 { + padding: 12px; + } + + .postbox .handlediv { + margin-top: 3px; + } + + /* Subsubsub Nav */ + .subsubsub { + font-size: 16px; + text-align: center; + margin-bottom: 15px; + } + + /* Theme/Plugin File Editor */ + + #template textarea, + #template .CodeMirror { + box-sizing: border-box; + } + + #templateside { + float: none; + width: auto; + } + + #templateside > ul { + border-right: 1px solid #dcdcde; + } + + #templateside li { + margin: 0; + } + + #templateside li:not(.howto) a { + display: block; + padding: 5px; + } + #templateside li.howto { + padding: 12px; + } + + #templateside .highlight { + padding: 5px; + margin-right: -5px; + margin-top: -5px; + } + + #template > div, + #template .notice { + float: none; + margin: 1em 0; + width: auto; + } + + #template .CodeMirror, + #template textarea { + width: 100%; + } + + #templateside ul ul { + padding-right: 1.5em; + } + [role="treeitem"] .folder-label { + display: block; + padding: 5px; + } + .tree-folder > li::before, + .tree-folder > li::after, + .tree-folder .tree-folder::after { + right: -8px; + } + .tree-folder > li::before { + top: 0; + height: 13px; + } + .tree-folder > .current-file::before { + right: -5px; + top: 7px; + width: 4px; + } + .tree-folder > .current-file::after { + height: 9px; + right: -8px; + } + .wrap #templateside span.notice { + margin-right: -5px; + width: 100%; + } + + .fileedit-sub .alignright { + float: right; + margin-top: 15px; + width: 100%; + text-align: right; + } + + .fileedit-sub .alignright label { + display: block; + } + + .fileedit-sub #theme, + .fileedit-sub #plugin { + margin-right: 0; + max-width: 70%; + } + + .fileedit-sub input[type="submit"] { + margin-bottom: 0; + } + + #documentation label[for="docs-list"] { + display: block; + } + + #documentation select[name="docs-list"] { + margin-right: 0; + max-width: 60%; + } + + #documentation input[type="button"] { + margin-bottom: 0; + } + + #wpfooter { + display: none; + } + + #comments-form .checkforspam { + display: none; + } + + .edit-comment-author { + margin: 2px 0 0; + } + + .filter-drawer .filter-group-feature input, + .filter-drawer .filter-group-feature label { + line-height: 2.1; + } + + .filter-drawer .filter-group-feature label { + margin-right: 32px; + } + + .wp-filter .button.drawer-toggle { + font-size: 13px; + line-height: 2; + height: 28px; + } + + /* Fix help tab columns for smaller screens */ + #screen-meta #contextual-help-wrap { + overflow: visible; + } + + #screen-meta #contextual-help-back, + #screen-meta .contextual-help-sidebar { + display: none; + } + + #screen-meta .contextual-help-tabs { + clear: both; + width: 100%; + float: none; + } + + #screen-meta .contextual-help-tabs ul { + margin: 0 0 1em; + padding: 1em 0 0; + } + + #screen-meta .contextual-help-tabs .active { + margin: 0; + } + + #screen-meta .contextual-help-tabs-wrap { + clear: both; + max-width: 100%; + float: none; + } + + #screen-meta, + #screen-meta-links { + margin-left: 10px; + } + + #screen-meta-links { + margin-bottom: 20px; /* Add margins beneath links for better spacing between boxes and elements */ + } + + .wp-filter .search-form input[type="search"] { + font-size: 1rem; + } + + .wp-filter .search-form.search-plugins { + /* This element is a flex item. */ + min-width: 100%; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Disable horizontal scroll when responsive menu is open + since we push the main content off to the right. */ + #wpwrap.wp-responsive-open { + overflow-x: hidden; + } + + html.wp-toolbar { + padding-top: 0; + } + + .screen-reader-shortcut:focus { + top: 7px; + } + + #wpbody { + padding-top: 46px; + } + + /* Keep full-width boxes on Edit Post page from causing horizontal scroll */ + div#post-body.metabox-holder.columns-1 { + overflow-x: hidden; + } + + h1.nav-tab-wrapper, + .wrap h2.nav-tab-wrapper, + .nav-tab-wrapper { + border-bottom: 0; + } + + h1 .nav-tab, + h2 .nav-tab, + h3 .nav-tab, + nav .nav-tab { + margin: 10px 0 0 10px; + border-bottom: 1px solid #c3c4c7; + } + + .nav-tab-active:hover, + .nav-tab-active:focus, + .nav-tab-active:focus:active { + border-bottom: 1px solid #c3c4c7; + } + + .wp-filter .search-form input[type="search"] { + width: 100%; + } +} + +@media screen and (max-width: 320px) { + /* Prevent default center alignment and larger font for the Right Now widget when + the network dashboard is viewed on a small mobile device. */ + #network_dashboard_right_now .subsubsub { + font-size: 14px; + text-align: right; + } +} diff --git a/tools/storybook/wordpress/css/common-rtl.min.css b/tools/storybook/wordpress/css/common-rtl.min.css new file mode 100644 index 00000000000..26e4422ffe4 --- /dev/null +++ b/tools/storybook/wordpress/css/common-rtl.min.css @@ -0,0 +1,9 @@ +/*! This file is auto-generated */ +#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-left{float:right;width:35%}#col-right{float:left;width:65%}#col-left .col-wrap{padding:0 0 0 6px}#col-right .col-wrap{padding:0 6px 0 0}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.button .screen-reader-text{height:auto}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{right:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:2px solid transparent;outline-offset:-2px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#135e96}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img,a:focus .plugin-icon{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}#adminmenu a:focus{box-shadow:none;outline:1px solid transparent;outline-offset:-1px}.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}.wp-die-message,p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#1d2327;font-size:2em;margin:.67em 0}h2,h3{color:#1d2327;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:4em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-right:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#f0f0f1;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:right;color:#646970}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#50575e;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #c3c4c7}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #c3c4c7;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.wrap.block-editor-no-js{padding-right:20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:1.3}.wrap h1.wp-heading-inline{display:inline-block;margin-left:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-right:25px;color:#50575e;font-size:14px;font-weight:400;line-height:1}.subtitle strong{word-break:break-all}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:1px solid #2271b1;border-radius:2px;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#2271b1;background:#f6f7f7;cursor:pointer}.wrap .wp-heading-inline+.page-title-action{margin-right:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.page-title-action:focus{color:#0a4b78}.form-table th label[for=WPLANG] .dashicons,.form-table th label[for=locale] .dashicons{margin-right:5px}.wrap .page-title-action:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#c5d9ed}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f6f7f7}.bar{background-color:#f0f0f1;border-left-color:#4f94d4}.highlight{background-color:#f0f6fc;color:#3c434a}.wp-ui-primary{color:#fff;background-color:#2c3338}.wp-ui-text-primary{color:#2c3338}.wp-ui-highlight{color:#fff;background-color:#2271b1}.wp-ui-text-highlight{color:#2271b1}.wp-ui-notification{color:#fff;background-color:#d63638}.wp-ui-text-notification{color:#d63638}.wp-ui-text-icon{color:#8c8f94}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#f6f7f7;color:#1d2327}.stuffbox .hndle{border-bottom:1px solid #c3c4c7}.quicktags{background-color:#c3c4c7;color:#000;font-size:12px}.icon32{display:none}#bulk-titles .ntdelbutton:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:never;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-right:2px;border-radius:50%;color:#2271b1;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles .ntdelbutton:focus:before,#bulk-titles .ntdelbutton:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#d63638}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#646970;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #dcdcde;border-bottom:1px solid #f6f7f7}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.privacy_requests .remove-personal-data .remove-personal-data-handle,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete,a#remove-post-thumbnail{color:#b32d2e}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.privacy_requests .remove-personal-data .remove-personal-data-handle:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,a#remove-post-thumbnail:hover,abbr.required,span.required{color:#b32d2e;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #dcdcde;background:#f6f7f7}#delete-action{float:right;line-height:2.30769231}#delete-link{line-height:2.30769231;vertical-align:middle;text-align:right;margin-right:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:left;float:left;line-height:1.9}#publishing-action .spinner{float:none;margin-top:5px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-right:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}#misc-publishing-actions .notice{margin-right:10px;margin-left:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;background:#fff;color:#50575e;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#646970;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#646970;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #646970;color:#1d2327}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#135e96}.wp-filter .search-form{float:left;margin:10px 0}.wp-filter .search-form input[type=search]{margin:1px 0;width:280px;max-width:100%}.wp-filter .search-form select{margin:0}.plugin-install-php .wp-filter{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.wp-filter .search-form.search-plugins{margin-top:0}.wp-filter .search-form.search-plugins .wp-filter-search,.wp-filter .search-form.search-plugins select{display:inline-block;margin-top:10px;vertical-align:top}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 6px 0 10px;border-color:transparent;background-color:transparent;color:#646970;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 0 0 5px;color:#646970;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#135e96}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#4f94d4}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -20px 0 -10px;padding:20px;border-top:1px solid #f0f0f1;background:#f6f7f7;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#646970;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2271b1}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:1.4}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 23px 14px 0}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:2.2}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-right:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #f0f0f1}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border:1px solid #c3c4c7;border-right-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 0 .5em 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#1d2327;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#787c82;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#d63638}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.notice-success,div.updated{border-right-color:#00a32a}.notice-success.notice-alt{background-color:#edfaef}.notice-warning{border-right-color:#dba617}.notice-warning.notice-alt{background-color:#fcf9e8}.notice-error,div.error{border-right-color:#d63638}.notice-error.notice-alt{background-color:#fcf0f1}.notice-info{border-right-color:#72aee6}.notice-info.notice-alt{background-color:#f0f6fc}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-right:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#d63638;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:none}}.theme-overlay .theme-autoupdate .dashicons-update.spin{margin-left:3px}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#68de7c;content:"\f147"}.update-message.notice-error p:before{color:#d63638;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-left:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;margin:25px 2px 0 20px}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-right:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}h2.wp-current-version{margin-bottom:.3em}p.update-last-checked{margin-top:0}p.auto-update-status{margin-top:2em;line-height:1.8}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-right:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px -2px 0 5px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#9ec2e6}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:never}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0}#screen-meta-links{float:left;margin:0 0 0 20px}#screen-meta{display:none;margin:0 0 -1px 20px;position:relative;background-color:#fff;border:1px solid #c3c4c7;border-top:none;box-shadow:0 0 0 transparent}#contextual-help-link-wrap,#screen-options-link-wrap{float:right;margin:0 6px 0 0}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:1px solid #c3c4c7;border-top:none;height:auto;margin-bottom:0;padding:3px 16px 3px 6px;background:#fff;border-radius:0 0 4px 4px;color:#646970;line-height:1.7;box-shadow:0 0 0 transparent;transition:box-shadow .1s linear}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#2c3338}#screen-meta-links .show-settings:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}#screen-meta-links .show-settings:active{transform:none}#screen-meta-links .show-settings:after{left:0;content:"\f140";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 0 0 5px;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top right;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom right}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:2.35}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px;padding-left:0}.metabox-prefs .screen-options label{line-height:2.2;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #c3c4c7;border-top:none;border-bottom:none;background:#f0f6fc}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;border-bottom-left-radius:2px}.contextual-help-tabs{float:right;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 2px 0 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 12px 5px 5px;line-height:1.4;text-decoration:none;border:1px solid transparent;border-left:none;border-right:none}.contextual-help-tabs a:hover{color:#2c3338}.contextual-help-tabs .active{padding:0;margin:0 0 0 -1px;border-right:2px solid #72aee6;background:#f0f6fc;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#c3c4c7;color:#2c3338}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 0 12px 22px;line-height:1.6}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-right:18px}.contextual-help-sidebar{width:150px;float:left;padding:0 12px 0 8px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box;-ms-overflow-style:scrollbar}.widefat td,.widefat th{color:#50575e}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#2c3338}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#2c3338}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-right:2em}.postbox-container{float:right}.postbox-container .meta-box-sortables{box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .meta-box-sortables{min-height:1px;position:relative}#post-body-content{width:100%;min-width:463px;float:right}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{outline:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .postbox .hndle.is-non-sortable,.js .widget .widget-top.is-non-sortable{cursor:auto}.hndle a{font-size:12px;font-weight:400}.postbox-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #c3c4c7}.postbox-header .hndle{flex-grow:1;display:flex;justify-content:space-between;align-items:center}.postbox-header .handle-actions{flex-shrink:0}.postbox .handle-order-higher,.postbox .handle-order-lower,.postbox .handlediv{width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.postbox .handle-order-higher,.postbox .handle-order-lower{color:#787c82;width:1.62rem}.edit-post-meta-boxes-area .postbox .handle-order-higher,.edit-post-meta-boxes-area .postbox .handle-order-lower{width:44px;height:44px;color:#1d2327}.postbox .handle-order-higher[aria-disabled=true],.postbox .handle-order-lower[aria-disabled=true]{cursor:default;color:#a7aaad}.sortable-placeholder{border:1px dashed #c3c4c7;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox.closed{border-bottom:0}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;user-select:none}.postbox .inside{padding:0 12px 12px;line-height:1.4;font-size:13px}.stuffbox .inside{padding:0;line-height:1.4;font-size:13px;margin-top:0}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #c3c4c7}.columns-prefs label{padding:0 0 0 10px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#comment-status-display,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#50575e}#wpfooter p{font-size:13px;margin:0;line-height:1.55}#footer-thankyou{font-style:italic}.nav-tab{float:right;border:1px solid #c3c4c7;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:1.71428571;font-weight:600;background:#dcdcde;color:#50575e;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:1.33}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#3c434a}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#3c434a}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f0f0f1;background:#f0f0f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #c3c4c7;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:left;vertical-align:middle;opacity:.7;width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-left:16em}#template .notice{margin-top:1em;margin-left:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 14px 11px 10px;line-height:1.5}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:#d63638;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #dcdcde;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-left:14px;line-height:1.4}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:1.55;color:#50575e;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{color:#1d2327;border-bottom:1px solid #f0f0f1}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:100%}#namediv p{margin:10px 0}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:.15}.checkbox{border:none;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom right}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top right;height:17px;float:right}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in;text-align:center;color:#dba617}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(-180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f6f7f7;font-size:22px;font-weight:600;line-height:2.4;position:relative;height:56px}#plugin-information-title.with-banner{margin-left:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:1.68;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(29,35,39,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;right:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;left:0;right:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #dcdcde;background:#f6f7f7}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:1.3;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #dcdcde;border-bottom-color:#fff;padding-top:8px;color:#2c3338}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-top:10px;margin-left:250px;padding:10px 26px 99999px;margin-bottom:-99932px}#section-holder .notice{margin:5px 0 15px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99932px;width:217px;border-right:1px solid #dcdcde;background:#f6f7f7;color:#646970}#plugin-information .fyi strong{color:#3c434a}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#dcdcde;float:right}#plugin-information .counter-bar{height:17px;background-color:#f0c33c;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:40px;border-top:1px solid #dcdcde;background:#f6f7f7}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #c3c4c7}#plugin-information blockquote{border-right:2px solid #dcdcde;color:#646970;font-style:italic;margin:1em 0;padding:0 1em 0 0}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #dcdcde}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-left:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:2;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #dcdcde;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fff}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:#fff url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:right;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{right:auto;left:-30px;color:#f0f0f1}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{color:#135e96;outline:0;box-shadow:none}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{left:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator::before,.meta-box-sortables .postbox .order-higher-indicator::before,.meta-box-sortables .postbox .order-lower-indicator::before,.meta-box-sortables .postbox .toggle-indicator::before,.privacy-text-box .toggle-indicator::before,.sidebar-name .toggle-indicator::before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before,.js .widgets-holder-wrap.closed .toggle-indicator::before,.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before,.privacy-text-box.closed .toggle-indicator::before{content:"\f140"}.postbox .handle-order-higher .order-higher-indicator::before{content:"\f343";color:inherit}.postbox .handle-order-lower .order-lower-indicator::before{content:"\f347";color:inherit}.postbox .handle-order-higher .order-higher-indicator::before,.postbox .handle-order-lower .order-lower-indicator::before{position:relative;top:.11rem;width:20px;height:20px}.postbox .handlediv .toggle-indicator::before{width:20px;border-radius:50%}.postbox .handlediv .toggle-indicator::before{position:relative;top:.05rem;text-indent:-1px}.rtl .postbox .handlediv .toggle-indicator::before{text-indent:1px}.bulk-action-notice .toggle-indicator::before{line-height:16px;vertical-align:top;color:#787c82}.postbox .handle-order-higher:focus,.postbox .handle-order-lower:focus,.postbox .handlediv:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.postbox .handle-order-higher:focus .order-higher-indicator::before,.postbox .handle-order-lower:focus .order-lower-indicator::before,.postbox .handlediv:focus .toggle-indicator::before{box-shadow:none;outline:1px solid transparent}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f6f7f7;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #dcdcde;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f6f7f7;border:1px solid #dcdcde;border-right:none}#templateside ul ul{padding-right:12px}#templateside>ul>li>ul[role=group]{padding-right:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f141"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 12px 3px 3px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#f0f0f1}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:"";display:block;position:absolute;right:2px;border-right:1px solid #c3c4c7;top:-13px;bottom:10px}.tree-folder>li::before{content:"";position:absolute;display:block;border-right:1px solid #c3c4c7;right:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #c3c4c7}.tree-folder>li::after{content:"";position:absolute;display:block;border-right:1px solid #c3c4c7;right:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{right:4px;height:15px;width:0;border-right:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;right:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#documentation label,#theme-plugin-editor-label,#theme-plugin-editor-selector{font-weight:600}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:left}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:left;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 0;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#646970;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:1.8;vertical-align:baseline}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.widget-top .widget-action .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#787c82}.widget-action{color:#50575e}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#1d2327;outline:1px solid transparent}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:left;left:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before,.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! + * jQuery UI Draggable/Sortable 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #dcdcde;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dcdcde}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #dcdcde;border-left:1px solid #dcdcde;-webkit-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;left:10px;z-index:1}.accordion-section-title:focus{outline:1px solid transparent}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a7aaad transparent;outline:1px solid transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:1.55;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top:calc(50% - 10px)}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#1d2327;background:#f6f7f7}.control-section.open .accordion-section-title{border-bottom:1px solid #dcdcde}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#c3c4c7}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f6f7f7}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f6f7f7}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f6f7f7}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f6f7f7}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f6f7f7}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom right;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}.screen-reader-shortcut:focus{top:-39px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{clear:both;margin-left:12px;margin-right:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-left:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{left:-16em}code{word-wrap:break-word;word-wrap:anywhere;word-break:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-right:1px solid #dcdcde}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-right:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{right:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{right:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;right:-8px}.wrap #templateside span.notice{margin-right:-5px;width:100%}.fileedit-sub .alignright{float:right;margin-top:15px;width:100%;text-align:right}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-right:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-right:0;max-width:60%}#documentation input[type=button]{margin-bottom:0}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:2.1}.filter-drawer .filter-group-feature label{margin-right:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:2;height:28px}#screen-meta #contextual-help-wrap{overflow:visible}#screen-meta #contextual-help-back,#screen-meta .contextual-help-sidebar{display:none}#screen-meta .contextual-help-tabs{clear:both;width:100%;float:none}#screen-meta .contextual-help-tabs ul{margin:0 0 1em;padding:1em 0 0}#screen-meta .contextual-help-tabs .active{margin:0}#screen-meta .contextual-help-tabs-wrap{clear:both;max-width:100%;float:none}#screen-meta,#screen-meta-links{margin-left:10px}#screen-meta-links{margin-bottom:20px}.wp-filter .search-form input[type=search]{font-size:1rem}.wp-filter .search-form.search-plugins{min-width:100%}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}.screen-reader-shortcut:focus{top:7px}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab,nav .nav-tab{margin:10px 0 0 10px;border-bottom:1px solid #c3c4c7}.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #c3c4c7}.wp-filter .search-form input[type=search]{width:100%}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/common.css b/tools/storybook/wordpress/css/common.css new file mode 100644 index 00000000000..32c10cbe2a2 --- /dev/null +++ b/tools/storybook/wordpress/css/common.css @@ -0,0 +1,4122 @@ +/* 2 column liquid layout */ +#wpwrap { + height: auto; + min-height: 100%; + width: 100%; + position: relative; + -webkit-font-smoothing: subpixel-antialiased; +} + +#wpcontent { + height: 100%; + padding-left: 20px; +} + +#wpcontent, +#wpfooter { + margin-left: 160px; +} + +.folded #wpcontent, +.folded #wpfooter { + margin-left: 36px; +} + +#wpbody-content { + padding-bottom: 65px; + float: left; + width: 100%; + overflow: visible; +} + +/* inner 2 column liquid layout */ + +.inner-sidebar { + float: right; + clear: right; + display: none; + width: 281px; + position: relative; +} + +.columns-2 .inner-sidebar { + margin-right: auto; + width: 286px; + display: block; +} + +.inner-sidebar #side-sortables, +.columns-2 .inner-sidebar #side-sortables { + min-height: 300px; + width: 280px; + padding: 0; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: left; + clear: left; + width: 100%; + margin-right: -2000px; +} + +.has-right-sidebar #post-body-content { + margin-right: 300px; + float: none; + width: auto; +} + +/* 2 columns main area */ + +#col-left { + float: left; + width: 35%; +} + +#col-right { + float: right; + width: 65%; +} + +#col-left .col-wrap { + padding: 0 6px 0 0; +} + +#col-right .col-wrap { + padding: 0 0 0 6px; +} + +/* utility classes */ +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.textleft { + text-align: left; +} + +.textright { + text-align: right; +} + +.clear { + clear: both; +} + +/* modern clearfix */ +.wp-clearfix:after { + content: ""; + display: table; + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span, +.ui-helper-hidden-accessible { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +.button .screen-reader-text { + height: auto; /* Fixes a Safari+VoiceOver bug, see ticket #42006 */ +} + +.screen-reader-shortcut { + position: absolute; + top: -1000em; +} + +.screen-reader-shortcut:focus { + left: 6px; + top: -25px; + height: auto; + width: auto; + display: block; + font-size: 14px; + font-weight: 600; + padding: 15px 23px 14px; + background: #f0f0f1; + color: #2271b1; + z-index: 100000; + line-height: normal; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + text-decoration: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js, +.js.wp-core-ui .hide-if-js, +.js .wp-core-ui .hide-if-js, +.no-js.wp-core-ui .hide-if-no-js, +.no-js .wp-core-ui .hide-if-no-js { + display: none; +} + +/* @todo: Take a second look. Large chunks of shared color, from the colors.css merge */ +.widget-top, +.menu-item-handle, +.widget-inside, +#menu-settings-column .accordion-container, +#menu-management .menu-edit, +.manage-menus, +table.widefat, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.wp-editor-container, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +table.widefat, +.wp-editor-container, +.stuffbox, +p.popular-tags, +.widgets-holder-wrap, +.popular-tags, +.feature-filter, +.imgedit-group, +.comment-ays { + background: #fff; +} + +/* general */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + background: #f0f0f1; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 13px; + line-height: 1.4em; + min-width: 600px; +} + +body.iframe { + min-width: 0; + padding-top: 1px; +} + +body.modal-open { + overflow: hidden; +} + +body.mobile.modal-open #wpwrap { + overflow: hidden; + position: fixed; + height: 100%; +} + +iframe, +img { + border: 0; +} + +td { + font-family: inherit; + font-size: inherit; + font-weight: inherit; + line-height: inherit; +} + +/* Any change to the default link style must be applied to button-link too. */ +a { + color: #2271b1; + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +a, +div { + outline: 0; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus, +a:focus .media-icon img, +a:focus .plugin-icon, +.wp-person a:focus .gravatar { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#adminmenu a:focus { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: -1px; +} + +.screen-reader-text:focus { + box-shadow: none; + outline: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} + +p, +.wp-die-message { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +li, +dd { + margin-bottom: 6px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + display: block; + font-weight: 600; +} + +h1 { + color: #1d2327; + font-size: 2em; + margin: .67em 0; +} + +h2, +h3 { + color: #1d2327; + font-size: 1.3em; + margin: 1em 0; +} + +.update-core-php h2 { + margin-top: 4em; +} + +.update-php h2, +.update-messages h2, +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +ul, +ol { + padding: 0; +} + +ul { + list-style: none; +} + +ol { + list-style-type: decimal; + margin-left: 2em; +} + +ul.ul-disc { + list-style: disc outside; +} + +ul.ul-square { + list-style: square outside; +} + +ol.ol-decimal { + list-style: decimal outside; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +/* rtl:ignore */ +.ltr { + direction: ltr; +} + +/* rtl:ignore */ +.code, +code { + font-family: Consolas, Monaco, monospace; + direction: ltr; + unicode-bidi: embed; +} + +kbd, +code { + padding: 3px 5px 2px; + margin: 0 1px; + background: #f0f0f1; + background: rgba(0, 0, 0, 0.07); + font-size: 13px; +} + +.subsubsub { + list-style: none; + margin: 8px 0 0; + padding: 0; + font-size: 13px; + float: left; + color: #646970; +} + +.subsubsub a { + line-height: 2; + padding: .2em; + text-decoration: none; +} + +.subsubsub a .count, +.subsubsub a.current .count { + color: #50575e; /* #f1f1f1 background */ + font-weight: 400; +} + +.subsubsub a.current { + font-weight: 600; + border: none; +} + +.subsubsub li { + display: inline-block; + margin: 0; + padding: 0; + white-space: nowrap; +} + +/* .widefat - main style for tables */ +.widefat { + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a, +.widefat button.button-link { + text-decoration: none; +} + +.widefat td, +.widefat th { + padding: 8px 10px; +} + +.widefat thead th, +.widefat thead td { + border-bottom: 1px solid #c3c4c7; +} + +.widefat tfoot th, +.widefat tfoot td { + border-top: 1px solid #c3c4c7; + border-bottom: none; +} + +.widefat .no-items td { + border-bottom-width: 0; +} + +.widefat td { + vertical-align: top; +} + +.widefat td, +.widefat td p, +.widefat td ol, +.widefat td ul { + font-size: 13px; + line-height: 1.5em; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + text-align: left; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input, +.updates-table td input, +.widefat thead td input, +.widefat tfoot td input { + margin: 0 0 0 8px; + padding: 0; + vertical-align: text-top; +} + +.widefat .check-column { + width: 2.2em; + padding: 6px 0 25px; + vertical-align: top; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat thead td.check-column, +.widefat tbody th.check-column, +.updates-table tbody td.check-column, +.widefat tfoot td.check-column { + padding: 11px 0 0 3px; +} + +.widefat thead td.check-column, +.widefat tfoot td.check-column { + padding-top: 4px; + vertical-align: middle; +} + +.update-php div.updated, +.update-php div.error { + margin-left: 0; +} + +.no-js .widefat thead .check-column input, +.no-js .widefat tfoot .check-column input { + display: none; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 10px 20px 0 2px; +} + +.wrap.block-editor-no-js { + padding-left: 20px; +} + +.wrap > h2:first-child, /* Back-compat for pre-4.4 */ +.wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */ +.postbox .inside h2, /* Back-compat for pre-4.4 */ +.wrap h1 { + font-size: 23px; + font-weight: 400; + margin: 0; + padding: 9px 0 4px; + line-height: 1.3; +} + +.wrap h1.wp-heading-inline { + display: inline-block; + margin-right: 5px; +} + +.wp-header-end { + visibility: hidden; + margin: -2px 0 0; +} + +.subtitle { + margin: 0; + padding-left: 25px; + color: #50575e; + font-size: 14px; + font-weight: 400; + line-height: 1; +} + +.subtitle strong { + word-break: break-all; +} + +.wrap .add-new-h2, /* deprecated */ +.wrap .add-new-h2:active, /* deprecated */ +.wrap .page-title-action, +.wrap .page-title-action:active { + margin-left: 4px; + padding: 4px 8px; + position: relative; + top: -3px; + text-decoration: none; + border: 1px solid #2271b1; + border-radius: 2px; + text-shadow: none; + font-weight: 600; + font-size: 13px; + line-height: normal; /* IE8-IE11 need this for buttons */ + color: #2271b1; /* use the standard color used for buttons */ + background: #f6f7f7; + cursor: pointer; +} + +.wrap .wp-heading-inline + .page-title-action { + margin-left: 0; +} + +.wrap .add-new-h2:hover, /* deprecated */ +.wrap .page-title-action:hover { + background: #f0f0f1; + border-color: #0a4b78; + color: #0a4b78; +} + +/* lower specificity: color needs to be overridden by :hover and :active */ +.page-title-action:focus { + color: #0a4b78; +} + +/* Dashicon for language options on General Settings and Profile screens */ +.form-table th label[for="locale"] .dashicons, +.form-table th label[for="WPLANG"] .dashicons { + margin-left: 5px; +} + +.wrap .page-title-action:focus { + border-color: #3582c4; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.wrap h1.long-header { + padding-right: 0; +} + +.wp-dialog { + background-color: #fff; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #8c8f94; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.sorthelper { + background-color: #c5d9ed; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.striped > tbody > :nth-child(odd), +ul.striped > :nth-child(odd), +.alternate { + background-color: #f6f7f7; +} + +.bar { + background-color: #f0f0f1; + border-right-color: #4f94d4; +} + +/* Helper classes for plugins to leverage the active WordPress color scheme */ + +.highlight { + background-color: #f0f6fc; + color: #3c434a; +} + +.wp-ui-primary { + color: #fff; + background-color: #2c3338; +} +.wp-ui-text-primary { + color: #2c3338; +} + +.wp-ui-highlight { + color: #fff; + background-color: #2271b1; +} +.wp-ui-text-highlight { + color: #2271b1; +} + +.wp-ui-notification { + color: #fff; + background-color: #d63638; +} +.wp-ui-text-notification { + color: #d63638; +} + +.wp-ui-text-icon { + color: #8c8f94; /* same as new icons */ +} + +/* For emoji replacement images */ +img.emoji { + display: inline !important; + border: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; + box-shadow: none !important; +} + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +.widget .widget-top, +.postbox .hndle, +.stuffbox .hndle, +.control-section .accordion-section-title, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +.checkbox, +.side-info, +#your-profile #rich_editing, +.widefat thead th, +.widefat thead td, +.widefat tfoot th, +.widefat tfoot td { + line-height: 1.4em; +} + +.widget .widget-top, +.menu-item-handle { + background: #f6f7f7; + color: #1d2327; +} + +.stuffbox .hndle { + border-bottom: 1px solid #c3c4c7; +} + +.quicktags { + background-color: #c3c4c7; + color: #000; + font-size: 12px; +} + +.icon32 { + display: none; +} + +/* @todo can we combine these into a class or use an existing dashicon one? */ +.welcome-panel .welcome-panel-close:before, +.tagchecklist .ntdelbutton .remove-tag-icon:before, +#bulk-titles .ntdelbutton:before, +.notice-dismiss:before { + background: none; + color: #787c82; + content: "\f153"; + display: block; + font: normal 16px/20px dashicons; + speak: never; + height: 20px; + text-align: center; + width: 20px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.welcome-panel .welcome-panel-close:before { + margin: 0; +} + +.tagchecklist .ntdelbutton .remove-tag-icon:before { + margin-left: 2px; + border-radius: 50%; + color: #2271b1; + /* vertically center the icon cross browsers */ + line-height: 1.28; +} + +.tagchecklist .ntdelbutton:focus { + outline: 0; +} + +.tagchecklist .ntdelbutton:hover .remove-tag-icon:before, +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before, +#bulk-titles .ntdelbutton:hover:before, +#bulk-titles .ntdelbutton:focus:before { + color: #d63638; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.key-labels label { + line-height: 24px; +} + +strong, b { + font-weight: 600; +} + +.pre { + /* https://developer.mozilla.org/en-US/docs/CSS/white-space */ + white-space: pre-wrap; /* css-3 */ + word-wrap: break-word; /* IE 5.5 - 7 */ +} + +.howto { + color: #646970; + display: block; +} + +p.install-help { + margin: 8px 0; + font-style: italic; +} + +.no-break { + white-space: nowrap; +} + +hr { + border: 0; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #f6f7f7; +} + +.row-actions span.delete a, +.row-actions span.trash a, +.row-actions span.spam a, +.plugins a.delete, +#all-plugins-table .plugins a.delete, +#search-plugins-table .plugins a.delete, +.submitbox .submitdelete, +#media-items a.delete, +#media-items a.delete-permanently, +#nav-menu-footer .menu-delete, +#delete-link a.delete, +a#remove-post-thumbnail, +.privacy_requests .remove-personal-data .remove-personal-data-handle { + color: #b32d2e; +} + +abbr.required, +span.required, +.file-error, +.row-actions .delete a:hover, +.row-actions .trash a:hover, +.row-actions .spam a:hover, +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete:hover, +#media-items a.delete:hover, +#media-items a.delete-permanently:hover, +#nav-menu-footer .menu-delete:hover, +#delete-link a.delete:hover, +a#remove-post-thumbnail:hover, +.privacy_requests .remove-personal-data .remove-personal-data-handle:hover { + color: #b32d2e; + border: none; +} + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px; + clear: both; + border-top: 1px solid #dcdcde; + background: #f6f7f7; +} + +#delete-action { + float: left; + line-height: 2.30769231; /* 30px */ +} + +#delete-link { + line-height: 2.30769231; /* 30px */ + vertical-align: middle; + text-align: left; + margin-left: 8px; +} + +#delete-link a { + text-decoration: none; +} + +#publishing-action { + text-align: right; + float: right; + line-height: 1.9; +} + +#publishing-action .spinner { + float: none; + margin-top: 5px; +} + +#misc-publishing-actions { + padding: 6px 0 0; +} + +.misc-pub-section { + padding: 6px 10px 8px; +} + +.misc-pub-filename { + word-wrap: break-word; +} + +#minor-publishing-actions { + padding: 10px 10px 0; + text-align: right; +} + +#save-post { + float: left; +} + +.preview { + float: right; +} + +#sticky-span { + margin-left: 18px; +} + +.approve, +.unapproved .unapprove { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +td.action-links, +th.action-links { + text-align: right; +} + +#misc-publishing-actions .notice { + margin-left: 10px; + margin-right: 10px; +} + +/* Filter bar */ +.wp-filter { + display: inline-block; + position: relative; + box-sizing: border-box; + margin: 12px 0 25px; + padding: 0 10px; + width: 100%; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #c3c4c7; + background: #fff; + color: #50575e; + font-size: 13px; +} + +.wp-filter a { + text-decoration: none; +} + +.filter-count { + display: inline-block; + vertical-align: middle; + min-width: 4em; +} + +.title-count, +.filter-count .count { + display: inline-block; + position: relative; + top: -1px; + padding: 4px 10px; + border-radius: 30px; + background: #646970; + color: #fff; + font-size: 14px; + font-weight: 600; +} + +/* not a part of filter bar, but derived from it, so here for now */ +.title-count { + display: inline; + top: -3px; + margin-left: 5px; + margin-right: 20px; +} + +.filter-items { + float: left; +} + +.filter-links { + display: inline-block; + margin: 0; +} + +.filter-links li { + display: inline-block; + margin: 0; +} + +.filter-links li > a { + display: inline-block; + margin: 0 10px; + padding: 15px 0; + border-bottom: 4px solid #fff; + color: #646970; + cursor: pointer; +} + +.filter-links .current { + box-shadow: none; + border-bottom: 4px solid #646970; + color: #1d2327; +} + +.filter-links li > a:hover, +.filter-links li > a:focus, +.show-filters .filter-links a.current:hover, +.show-filters .filter-links a.current:focus { + color: #135e96; +} + +.wp-filter .search-form { + float: right; + margin: 10px 0; +} + +.wp-filter .search-form input[type="search"] { + margin: 1px 0; + width: 280px; + max-width: 100%; +} + +.wp-filter .search-form select { + margin: 0; +} + +/* Use flexbox only on the plugins install page. The `filter-links` and search form children will become flex items. */ +.plugin-install-php .wp-filter { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.wp-filter .search-form.search-plugins { + /* This element is a flex item: the inherited float won't have any effect. */ + margin-top: 0; +} + +.wp-filter .search-form.search-plugins select, +.wp-filter .search-form.search-plugins .wp-filter-search { + display: inline-block; + margin-top: 10px; + vertical-align: top; +} + +.wp-filter .button.drawer-toggle { + margin: 10px 9px 0; + padding: 0 10px 0 6px; + border-color: transparent; + background-color: transparent; + color: #646970; + vertical-align: baseline; + box-shadow: none; +} + +.wp-filter .drawer-toggle:before { + content: "\f111"; + margin: 0 5px 0 0; + color: #646970; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-filter .button.drawer-toggle:hover, +.wp-filter .drawer-toggle:hover:before, +.wp-filter .button.drawer-toggle:focus, +.wp-filter .drawer-toggle:focus:before { + background-color: transparent; + color: #135e96; +} + +.wp-filter .button.drawer-toggle:hover, +.wp-filter .button.drawer-toggle:focus:active { + border-color: transparent; +} + +.wp-filter .button.drawer-toggle:focus { + border-color: #4f94d4; +} + +.wp-filter .button.drawer-toggle:active { + background: transparent; + box-shadow: none; + transform: none; +} + +.wp-filter .drawer-toggle.current:before { + color: #fff; +} + +.filter-drawer, +.wp-filter .favorites-form { + display: none; + margin: 0 -10px 0 -20px; + padding: 20px; + border-top: 1px solid #f0f0f1; + background: #f6f7f7; + overflow: hidden; +} + +.show-filters .filter-drawer, +.show-favorites-form .favorites-form { + display: block; +} + +.show-filters .filter-links a.current { + border-bottom: none; +} + +.show-filters .wp-filter .button.drawer-toggle { + border-radius: 2px; + background: #646970; + color: #fff; +} + +.show-filters .wp-filter .drawer-toggle:hover, +.show-filters .wp-filter .drawer-toggle:focus { + background: #2271b1; +} + +.show-filters .wp-filter .drawer-toggle:before { + color: #fff; +} + +.filter-group { + box-sizing: border-box; + position: relative; + float: left; + margin: 0 1% 0 0; + padding: 20px 10px 10px; + width: 24%; + background: #fff; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +.filter-group legend { + position: absolute; + top: 10px; + display: block; + margin: 0; + padding: 0; + font-size: 1em; + font-weight: 600; +} + +.filter-drawer .filter-group-feature { + margin: 28px 0 0; + list-style-type: none; + font-size: 12px; +} + +.filter-drawer .filter-group-feature input, +.filter-drawer .filter-group-feature label { + line-height: 1.4; +} + +.filter-drawer .filter-group-feature input { + position: absolute; + margin: 0; +} + +.filter-group .filter-group-feature label { + display: block; + margin: 14px 0 14px 23px; +} + +.filter-drawer .buttons { + clear: both; + margin-bottom: 20px; +} + +.filter-drawer .filter-group + .buttons { + margin-bottom: 0; + padding-top: 20px; +} + +.filter-drawer .buttons .button span { + display: inline-block; + opacity: 0.8; + font-size: 12px; + text-indent: 10px; +} + +.wp-filter .button.clear-filters { + display: none; + margin-left: 10px; +} + +.wp-filter .button-link.edit-filters { + padding: 0 5px; + line-height: 2.2; +} + +.filtered-by { + display: none; + margin: 0; +} + +.filtered-by > span { + font-weight: 600; +} + +.filtered-by a { + margin-left: 10px; +} + +.filtered-by .tags { + display: inline; +} + +.filtered-by .tag { + margin: 0 5px; + padding: 4px 8px; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; + font-size: 11px; +} + +.filters-applied .filter-group, +.filters-applied .filter-drawer .buttons, +.filters-applied .filter-drawer br { + display: none; +} + +.filters-applied .filtered-by { + display: block; +} + +.filters-applied .filter-drawer { + padding: 20px; +} + +.show-filters .favorites-form, +.show-filters .content-filterable, +.show-filters.filters-applied.loading-content .content-filterable, +.loading-content .content-filterable, +.error .content-filterable { + display: none; +} + +.show-filters.filters-applied .content-filterable { + display: block; +} + +.loading-content .spinner { + display: block; + margin: 40px auto 0; + float: none; +} + +@media only screen and (max-width: 1120px) { + .filter-drawer { + border-bottom: 1px solid #f0f0f1; + } + + .filter-group { + margin-bottom: 0; + margin-top: 5px; + width: 100%; + } + + .filter-group li { + margin: 10px 0; + } +} + +@media only screen and (max-width: 1000px) { + .filter-items { + float: none; + } + + .wp-filter .media-toolbar-primary, + .wp-filter .media-toolbar-secondary, + .wp-filter .search-form { + float: none; /* Remove float from media-views.css */ + position: relative; + max-width: 100%; + } +} + +@media only screen and (max-width: 782px) { + .filter-group li { + padding: 0; + width: 50%; + } +} + +@media only screen and (max-width: 320px) { + .filter-count { + display: none; + } + + .wp-filter .drawer-toggle { + margin: 10px 0; + } + + .filter-group li, + .wp-filter .search-form input[type="search"] { + width: 100%; + } +} + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +.notice, +div.updated, +div.error { + background: #fff; + border: 1px solid #c3c4c7; + border-left-width: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + margin: 5px 15px 2px; + padding: 1px 12px; +} + +div[class="update-message"] { /* back-compat for pre-4.6 */ + padding: 0.5em 12px 0.5em 0; +} + +.notice p, +.notice-title, +div.updated p, +div.error p, +.form-table td .notice p { + margin: 0.5em 0; + padding: 2px; +} + +.error a { + text-decoration: underline; +} + +.updated a { + padding-bottom: 2px; +} + +.notice-alt { + box-shadow: none; +} + +.notice-large { + padding: 10px 20px; +} + +.notice-title { + display: inline-block; + color: #1d2327; + font-size: 18px; +} + +.wp-core-ui .notice.is-dismissible { + padding-right: 38px; + position: relative; +} + +.notice-dismiss { + position: absolute; + top: 0; + right: 1px; + border: none; + margin: 0; + padding: 9px; + background: none; + color: #787c82; + cursor: pointer; +} + +.notice-dismiss:hover:before, +.notice-dismiss:active:before, +.notice-dismiss:focus:before { + color: #d63638; +} + +.notice-dismiss:focus { + outline: none; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.notice-success, +div.updated { + border-left-color: #00a32a; +} + +.notice-success.notice-alt { + background-color: #edfaef; +} + +.notice-warning { + border-left-color: #dba617; +} + +.notice-warning.notice-alt { + background-color: #fcf9e8; +} + +.notice-error, +div.error { + border-left-color: #d63638; +} + +.notice-error.notice-alt { + background-color: #fcf0f1; +} + +.notice-info { + border-left-color: #72aee6; +} + +.notice-info.notice-alt { + background-color: #f0f6fc; +} + +.update-message p:before, +.updating-message p:before, +.updated-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.updated-message:before, +.button.installed:before, +.button.installing:before { + display: inline-block; + font: normal 20px/1 'dashicons'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.wrap .notice, +.wrap div.updated, +.wrap div.error, +.media-upload-form .notice, +.media-upload-form div.error { + margin: 5px 0 15px; +} + +.wrap #templateside .notice { + display: block; + margin: 0; + padding: 5px 8px; + font-weight: 600; + text-decoration: none; +} + +.wrap #templateside span.notice { + margin-left: -12px; +} + +#templateside li.notice a { + padding: 0; +} + +/* Update icon. */ +.update-message p:before, +.updating-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.installing:before { + color: #d63638; + content: "\f463"; +} + +/* Spins the update icon. */ +.updating-message p:before, +.import-php .updating-message:before, +.button.updating-message:before, +.button.installing:before, +.plugins .column-auto-updates .dashicons-update.spin, +.theme-overlay .theme-autoupdate .dashicons-update.spin { + animation: rotation 2s infinite linear; +} + +@media (prefers-reduced-motion: reduce) { + .updating-message p:before, + .import-php .updating-message:before, + .button.updating-message:before, + .button.installing:before, + .plugins .column-auto-updates .dashicons-update.spin, + .theme-overlay .theme-autoupdate .dashicons-update.spin { + animation: none; + } +} + +.theme-overlay .theme-autoupdate .dashicons-update.spin { + margin-right: 3px; +} + +/* Updated icon (check mark). */ +.updated-message p:before, +.installed p:before, +.button.updated-message:before { + color: #68de7c; + content: "\f147"; +} + +/* Error icon. */ +.update-message.notice-error p:before { + color: #d63638; + content: "\f534"; +} + +.wrap .notice p:before, +.import-php .updating-message:before { + margin-right: 6px; + vertical-align: bottom; +} + +#update-nag, +.update-nag { + display: inline-block; + line-height: 1.4; + padding: 11px 15px; + font-size: 14px; + margin: 25px 20px 0 2px; +} + +ul#dismissed-updates { + display: none; +} + +#dismissed-updates li > p { + margin-top: 0; +} + +#dismiss, +#undismiss { + margin-left: 0.5em; +} + +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em; +} + +.update-php .spinner { + float: none; + margin: -4px 0; +} + +h2.wp-current-version { + margin-bottom: .3em; +} + +p.update-last-checked { + margin-top: 0; +} + +p.auto-update-status { + margin-top: 2em; + line-height: 1.8; +} + +#ajax-loading, +.ajax-loading, +.ajax-feedback, +.imgedit-wait-spin, +.list-ajax-loading { /* deprecated */ + visibility: hidden; +} + +#ajax-response.alignleft { + margin-left: 2em; +} + +.button.updating-message:before, +.button.updated-message:before, +.button.installed:before, +.button.installing:before { + margin: 3px 5px 0 -2px; +} + +.button-primary.updating-message:before { + color: #fff; +} + +.button-primary.updated-message:before { + color: #9ec2e6; +} + +.button.updated-message { + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +@media aural { + .wrap .notice p:before, + .button.installing:before, + .button.installed:before, + .update-message p:before { + speak: never; + } +} + + +/* @todo: this does not need its own section anymore */ +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#adminmenu a, +#taglist a, +#catlist a { + text-decoration: none; +} + +/*------------------------------------------------------------------------------ + 6.1 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0; + padding: 8px 20px 12px; + position: relative; +} + +#contextual-help-wrap { + overflow: auto; + margin-left: 0; +} + +#screen-meta-links { + float: right; + margin: 0 20px 0 0; +} + +/* screen options and help tabs revert */ +#screen-meta { + display: none; + margin: 0 20px -1px 0; + position: relative; + background-color: #fff; + border: 1px solid #c3c4c7; + border-top: none; + box-shadow: 0 0 0 transparent; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: left; + margin: 0 0 0 6px; +} + +#screen-meta-links .screen-meta-toggle { + position: relative; + top: 0; +} + +#screen-meta-links .show-settings { + border: 1px solid #c3c4c7; + border-top: none; + height: auto; + margin-bottom: 0; + padding: 3px 6px 3px 16px; + background: #fff; + border-radius: 0 0 4px 4px; + color: #646970; + line-height: 1.7; + box-shadow: 0 0 0 transparent; + transition: box-shadow 0.1s linear; +} + +#screen-meta-links .show-settings:hover, +#screen-meta-links .show-settings:active, +#screen-meta-links .show-settings:focus { + color: #2c3338; +} + +#screen-meta-links .show-settings:focus { + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); +} + +#screen-meta-links .show-settings:active { + transform: none; +} + +#screen-meta-links .show-settings:after { + right: 0; + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0 5px 0 0; + bottom: 2px; + position: relative; + vertical-align: bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +#screen-meta-links .screen-meta-active:after { + content: "\f142"; +} + +/* end screen options and help tabs */ + +.toggle-arrow { + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} + +.toggle-arrow-active { + background-position: bottom left; +} + +#screen-options-wrap h5, /* Back-compat for old plugins */ +#screen-options-wrap legend, +#contextual-help-wrap h5 { + margin: 0; + padding: 8px 0; + font-size: 13px; + font-weight: 600; +} + +.metabox-prefs label { + display: inline-block; + padding-right: 15px; + line-height: 2.35; +} + +#number-of-columns { + display: inline-block; + vertical-align: middle; + line-height: 30px; +} + +.metabox-prefs input[type=checkbox] { + margin-top: 0; + margin-right: 6px; +} + +.metabox-prefs label input, +.metabox-prefs label input[type=checkbox] { + margin: -4px 5px 0 0; +} + +.metabox-prefs .columns-prefs label input { + margin: -1px 2px 0 0; +} + +.metabox-prefs label a { + display: none; +} + +.metabox-prefs .screen-options input, +.metabox-prefs .screen-options label { + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.metabox-prefs .screen-options .screen-per-page { + margin-right: 15px; + padding-right: 0; +} + +.metabox-prefs .screen-options label { + line-height: 2.2; + padding-right: 0; +} + +.screen-options + .screen-options { + margin-top: 10px; +} + +.metabox-prefs .submit { + margin-top: 1em; + padding: 0; +} + +/*------------------------------------------------------------------------------ + 6.2 - Help Menu +------------------------------------------------------------------------------*/ + +#contextual-help-wrap { + padding: 0; +} + +#contextual-help-columns { + position: relative; +} + +#contextual-help-back { + position: absolute; + top: 0; + bottom: 0; + left: 150px; + right: 170px; + border: 1px solid #c3c4c7; + border-top: none; + border-bottom: none; + background: #f0f6fc; +} + +#contextual-help-wrap.no-sidebar #contextual-help-back { + right: 0; + border-right-width: 0; + border-bottom-right-radius: 2px; +} + +.contextual-help-tabs { + float: left; + width: 150px; + margin: 0; +} + +.contextual-help-tabs ul { + margin: 1em 0; +} + +.contextual-help-tabs li { + margin-bottom: 0; + list-style-type: none; + border-style: solid; + border-width: 0 0 0 2px; + border-color: transparent; +} + +.contextual-help-tabs a { + display: block; + padding: 5px 5px 5px 12px; + line-height: 1.4; + text-decoration: none; + border: 1px solid transparent; + border-right: none; + border-left: none; +} + +.contextual-help-tabs a:hover { + color: #2c3338; +} + +.contextual-help-tabs .active { + padding: 0; + margin: 0 -1px 0 0; + border-left: 2px solid #72aee6; + background: #f0f6fc; + box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.02); +} + +.contextual-help-tabs .active a { + border-color: #c3c4c7; + color: #2c3338; +} + +.contextual-help-tabs-wrap { + padding: 0 20px; + overflow: auto; +} + +.help-tab-content { + display: none; + margin: 0 22px 12px 0; + line-height: 1.6; +} + +.help-tab-content.active { + display: block; +} + +.help-tab-content ul li { + list-style-type: disc; + margin-left: 18px; +} + +.contextual-help-sidebar { + width: 150px; + float: right; + padding: 0 8px 0 12px; + overflow: auto; +} + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +html.wp-toolbar { + padding-top: 32px; + box-sizing: border-box; + -ms-overflow-style: scrollbar; /* See ticket #48545 */ +} + +.widefat th, +.widefat td { + color: #50575e; +} + +.widefat th, +.widefat thead td, +.widefat tfoot td { + font-weight: 400; +} + +.widefat thead tr th, +.widefat thead tr td, +.widefat tfoot tr th, +.widefat tfoot tr td { + color: #2c3338; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat p, +.widefat ol, +.widefat ul { + color: #2c3338; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +.widefat .column-comment ul { + list-style: initial; + margin-left: 2em; +} + +/* Screens with postboxes */ +.postbox-container { + float: left; +} + +.postbox-container .meta-box-sortables { + box-sizing: border-box; +} + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +.metabox-holder .postbox-container .meta-box-sortables { + /* The jQuery UI Sortables need some initial height to work properly. */ + min-height: 1px; + position: relative; +} + +#post-body-content { + width: 100%; + min-width: 463px; + float: left; +} + +#post-body.columns-2 #postbox-container-1 { + float: right; + margin-right: -300px; + width: 280px; +} + +#post-body.columns-2 #side-sortables { + min-height: 250px; +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content .metabox-holder .postbox-container .empty-container { + outline: none; + height: 0; + min-height: 0; + } +} + +.js .widget .widget-top, +.js .postbox .hndle { + cursor: move; +} + +.js .widget .widget-top.is-non-sortable, +.js .postbox .hndle.is-non-sortable { + cursor: auto; +} + +/* Configurable dashboard widgets "Configure" edit-box link. */ +.hndle a { + font-size: 12px; + font-weight: 400; +} + +.postbox-header { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #c3c4c7; +} + +.postbox-header .hndle { + flex-grow: 1; + /* Handle the alignment for the configurable dashboard widgets "Configure" edit-box link. */ + display: flex; + justify-content: space-between; + align-items: center; +} + +.postbox-header .handle-actions { + flex-shrink: 0; +} + +/* Post box order and toggle buttons. */ +.postbox .handle-order-higher, +.postbox .handle-order-lower, +.postbox .handlediv { + width: 36px; + height: 36px; + margin: 0; + padding: 0; + border: 0; + background: none; + cursor: pointer; +} + +.postbox .handle-order-higher, +.postbox .handle-order-lower { + color: #787c82; + width: 1.62rem; +} + +/* Post box order buttons in the block editor meta boxes area. */ +.edit-post-meta-boxes-area .postbox .handle-order-higher, +.edit-post-meta-boxes-area .postbox .handle-order-lower { + width: 44px; + height: 44px; + color: #1d2327 +} + +.postbox .handle-order-higher[aria-disabled="true"], +.postbox .handle-order-lower[aria-disabled="true"] { + cursor: default; + color: #a7aaad; +} + +.sortable-placeholder { + border: 1px dashed #c3c4c7; + margin-bottom: 20px; +} + +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + line-height: 1; +} + +.postbox.closed { + border-bottom: 0; +} + +/* user-select is not a part of the CSS standard - may change behavior in the future */ +.postbox .hndle, +.stuffbox .hndle { + -webkit-user-select: none; + user-select: none; +} + +.postbox .inside { + padding: 0 12px 12px; + line-height: 1.4; + font-size: 13px; +} + +.stuffbox .inside { + padding: 0; + line-height: 1.4; + font-size: 13px; + margin-top: 0; +} + +.postbox .inside { + margin: 11px 0; + position: relative; +} + +.postbox .inside > p:last-child, +.rss-widget ul li:last-child { + margin-bottom: 1px !important; +} + +.postbox.closed h3 { + border: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.postbox table.widefat { + box-shadow: none; +} + +.temp-border { + border: 1px dotted #c3c4c7; +} + +.columns-prefs label { + padding: 0 10px 0 0; +} + +/* @todo: what is this doing here */ +#dashboard_right_now .versions .b, +#post-status-display, +#post-visibility-display, +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover, +.media-item .percent, +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +#ed_reply_toolbar #ed_reply_strong, +.item-controls .item-order a, +.feature-filter .feature-name, +#comment-status-display { + font-weight: 600; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#wpfooter { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 20px; + color: #50575e; +} + +#wpfooter p { + font-size: 13px; + margin: 0; + line-height: 1.55; +} + +#footer-thankyou { + font-style: italic; +} + +/*------------------------------------------------------------------------------ + 25.0 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + float: left; + border: 1px solid #c3c4c7; + border-bottom: none; + margin-left: 0.5em; /* half the font size so set the font size properly */ + padding: 5px 10px; + font-size: 14px; + line-height: 1.71428571; + font-weight: 600; + background: #dcdcde; + color: #50575e; + text-decoration: none; + white-space: nowrap; +} + +h3 .nav-tab, /* Back-compat for pre-4.4 */ +.nav-tab-small .nav-tab { + padding: 5px 14px; + font-size: 12px; + line-height: 1.33; +} + +.nav-tab:hover, +.nav-tab:focus { + background-color: #fff; + color: #3c434a; +} + +.nav-tab-active, +.nav-tab:focus:active { + box-shadow: none; +} + +.nav-tab-active { + margin-bottom: -1px; + color: #3c434a; +} + +.nav-tab-active, +.nav-tab-active:hover, +.nav-tab-active:focus, +.nav-tab-active:focus:active { + border-bottom: 1px solid #f0f0f1; + background: #f0f0f1; + color: #000; +} + +h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ +.wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ +.nav-tab-wrapper { + border-bottom: 1px solid #c3c4c7; + margin: 0; + padding-top: 9px; + padding-bottom: 0; + line-height: inherit; +} + +/* Back-compat for plugins. Deprecated. Use .wp-clearfix instead. */ +.nav-tab-wrapper:not(.wp-clearfix):after { + content: ""; + display: table; + clear: both; +} + +/*------------------------------------------------------------------------------ + 26.0 - Misc +------------------------------------------------------------------------------*/ + +.spinner { + background: url(../images/spinner.gif) no-repeat; + background-size: 20px 20px; + display: inline-block; + visibility: hidden; + float: right; + vertical-align: middle; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 4px 10px 0; +} + +.spinner.is-active, +.loading-content .spinner { + visibility: visible; +} + +#template > div { + margin-right: 16em; +} +#template .notice { + margin-top: 1em; + margin-right: 3%; +} +#template .notice p { + width: auto; +} +#template .submit .spinner { + float: none; +} + +.metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */ +.metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */ +.metabox-holder h3.hndle, /* Back-compat for pre-4.4 */ +.metabox-holder h2.hndle { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +/* Back-compat for nav-menus screen */ +.nav-menus-php .metabox-holder h3 { + padding: 10px 10px 11px 14px; + line-height: 1.5; +} + +#templateside ul li a { + text-decoration: none; +} + +.plugin-install #description, +.plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: left; +} + +.attention, +.error-message { + color: #d63638; + font-weight: 600; +} + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + +/* Upgrader styles, Specific to Language Packs */ +.lp-show-latest p { + display: none; +} +.lp-show-latest p:last-child, +.lp-show-latest .lp-error p { + display: block; +} + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +.media-icon { + width: 62px; /* icon + border */ + text-align: center; +} + +.media-icon img { + border: 1px solid #dcdcde; + border: 1px solid rgba(0, 0, 0, 0.07); +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.importers { + font-size: 16px; + width: auto; +} + +.importers td { + padding-right: 14px; + line-height: 1.4; +} + +.importers .import-system { + max-width: 250px; +} + +.importers td.desc { + max-width: 500px; +} + +.importer-title, +.importer-desc, +.importer-action { + display: block; +} + +.importer-title { + color: #000; + font-size: 14px; + font-weight: 400; + margin-bottom: .2em; +} + +.importer-action { + line-height: 1.55; /* Same as with .updating-message */ + color: #50575e; + margin-bottom: 1em; +} + +#post-body #post-body-content #namediv h3, /* Back-compat for pre-4.4 */ +#post-body #post-body-content #namediv h2 { + margin-top: 0; +} + +.edit-comment-author { + color: #1d2327; + border-bottom: 1px solid #f0f0f1; +} + +#namediv h3 label, /* Back-compat for pre-4.4 */ +#namediv h2 label { + vertical-align: baseline; +} + +#namediv table { + width: 100%; +} + +#namediv td.first { + width: 10px; + white-space: nowrap; +} + +#namediv input { + width: 100%; +} + +#namediv p { + margin: 10px 0; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.zerosize { + height: 0; + width: 0; + margin: 0; + border: 0; + padding: 0; + overflow: hidden; + position: absolute; +} + +br.clear { + height: 2px; + line-height: 0.15; +} + +.checkbox { + border: none; + margin: 0; + padding: 0; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +.post-categories { + display: inline; + margin: 0; + padding: 0; +} + +.post-categories li { + display: inline; +} + +/* Star Ratings - Back-compat for pre-3.8 */ +div.star-holder { + position: relative; + height: 17px; + width: 100px; + background: url(../images/stars.png?ver=20121108) repeat-x bottom left; +} + +div.star-holder .star-rating { + background: url(../images/stars.png?ver=20121108) repeat-x top left; + height: 17px; + float: left; +} + +/* Star Ratings */ +.star-rating { + white-space: nowrap; +} +.star-rating .star { + display: inline-block; + width: 20px; + height: 20px; + -webkit-font-smoothing: antialiased; + font-size: 20px; + line-height: 1; + font-family: dashicons; + text-decoration: inherit; + font-weight: 400; + font-style: normal; + vertical-align: top; + transition: color .1s ease-in; + text-align: center; + color: #dba617; +} + +.star-rating .star-full:before { + content: "\f155"; +} + +.star-rating .star-half:before { + content: "\f459"; +} + +.rtl .star-rating .star-half { + transform: rotateY(180deg); +} + +.star-rating .star-empty:before { + content: "\f154"; +} + +div.action-links { + font-weight: 400; + margin: 6px 0 0; +} + +/* Plugin install thickbox */ +#plugin-information { + background: #fff; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 100%; + padding: 0; +} + +#plugin-information-scrollable { + overflow: auto; + -webkit-overflow-scrolling: touch; + height: 100%; +} + +#plugin-information-title { + padding: 0 26px; + background: #f6f7f7; + font-size: 22px; + font-weight: 600; + line-height: 2.4; + position: relative; + height: 56px; +} + +#plugin-information-title.with-banner { + margin-right: 0; + height: 250px; + background-size: cover; +} + +#plugin-information-title h2 { + font-size: 1em; + font-weight: 600; + padding: 0; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#plugin-information-title.with-banner h2 { + position: relative; + font-family: "Helvetica Neue", sans-serif; + display: inline-block; + font-size: 30px; + line-height: 1.68; + box-sizing: border-box; + max-width: 100%; + padding: 0 15px; + margin-top: 174px; + color: #fff; + background: rgba(29, 35, 39, 0.9); + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + box-shadow: 0 0 30px rgba(255, 255, 255, 0.1); + border-radius: 8px; +} + +#plugin-information-title div.vignette { + display: none; +} + +#plugin-information-title.with-banner div.vignette { + position: absolute; + display: block; + top: 0; + left: 0; + height: 250px; + width: 100%; + background: transparent; + box-shadow: inset 0 0 50px 4px rgba(0, 0, 0, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#plugin-information-tabs { + padding: 0 16px; + position: relative; + right: 0; + left: 0; + min-height: 36px; + font-size: 0; + z-index: 1; + border-bottom: 1px solid #dcdcde; + background: #f6f7f7; +} + +#plugin-information-tabs a { + position: relative; + display: inline-block; + padding: 9px 10px; + margin: 0; + height: 18px; + line-height: 1.3; + font-size: 14px; + text-decoration: none; + transition: none; +} + +#plugin-information-tabs a.current { + margin: 0 -1px -1px; + background: #fff; + border: 1px solid #dcdcde; + border-bottom-color: #fff; + padding-top: 8px; + color: #2c3338; +} + +#plugin-information-tabs.with-banner a.current { + border-top: none; + padding-top: 9px; +} + +#plugin-information-tabs a:active, +#plugin-information-tabs a:focus { + outline: none; +} + +#plugin-information-content { + overflow: hidden; /* equal height column trick */ + background: #fff; + position: relative; + top: 0; + right: 0; + left: 0; + min-height: 100%; + /* Height of title + tabs + install now */ + min-height: calc( 100% - 152px ); +} + +#plugin-information-content.with-banner { + /* Height of banner + tabs + install now */ + min-height: calc( 100% - 346px ); +} + +#section-holder { + position: relative; + top: 0; + right: 250px; + bottom: 0; + left: 0; + margin-top: 10px; + margin-right: 250px; /* FYI box */ + padding: 10px 26px 99999px; /* equal height column trick */ + margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ +} + +#section-holder .notice { + margin: 5px 0 15px; +} + +#section-holder .updated { + margin: 16px 0; +} + +#plugin-information .fyi { + float: right; + position: relative; + top: 0; + right: 0; + padding: 16px 16px 99999px; /* equal height column trick */ + margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ + width: 217px; + border-left: 1px solid #dcdcde; + background: #f6f7f7; + color: #646970; +} + +#plugin-information .fyi strong { + color: #3c434a; +} + +#plugin-information .fyi h3 { + font-weight: 600; + text-transform: uppercase; + font-size: 12px; + color: #646970; + margin: 24px 0 8px; +} + +#plugin-information .fyi h2 { + font-size: 0.9em; + margin-bottom: 0; + margin-right: 0; +} + +#plugin-information .fyi ul { + padding: 0; + margin: 0; + list-style: none; +} + +#plugin-information .fyi li { + margin: 0 0 10px; +} + +#plugin-information .fyi-description { + margin-top: 0; +} + +#plugin-information .counter-container { + margin: 3px 0; +} + +#plugin-information .counter-label { + float: left; + margin-right: 5px; + min-width: 55px; +} + +#plugin-information .counter-back { + height: 17px; + width: 92px; + background-color: #dcdcde; + float: left; +} + +#plugin-information .counter-bar { + height: 17px; + background-color: #f0c33c; /* slightly lighter than stars due to larger expanse */ + float: left; +} + +#plugin-information .counter-count { + margin-left: 5px; +} + +#plugin-information .fyi ul.contributors { + margin-top: 10px; +} + +#plugin-information .fyi ul.contributors li { + display: inline-block; + margin-right: 8px; + vertical-align: middle; +} + +#plugin-information .fyi ul.contributors li { + display: inline-block; + margin-right: 8px; + vertical-align: middle; +} + +#plugin-information .fyi ul.contributors li img { + vertical-align: middle; + margin-right: 4px; +} + +#plugin-information-footer { + padding: 13px 16px; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 40px; /* actual height: 40+13+13+1=67 */ + border-top: 1px solid #dcdcde; + background: #f6f7f7; +} + +/* rtl:ignore */ +#plugin-information .section { + direction: ltr; +} + +/* rtl:ignore */ +#plugin-information .section ul, +#plugin-information .section ol { + list-style-type: disc; + margin-left: 24px; +} + +#plugin-information .section, +#plugin-information .section p { + font-size: 14px; + line-height: 1.7; +} + +#plugin-information #section-screenshots ol { + list-style: none; + margin: 0; +} + +#plugin-information #section-screenshots li img { + vertical-align: text-top; + margin-top: 16px; + max-width: 100%; + width: auto; + height: auto; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +/* rtl:ignore */ +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; +} + +#plugin-information pre { + padding: 7px; + overflow: auto; + border: 1px solid #c3c4c7; +} + +#plugin-information blockquote { + border-left: 2px solid #dcdcde; + color: #646970; + font-style: italic; + margin: 1em 0; + padding: 0 0 0 1em; +} + +/* rtl:ignore */ +#plugin-information .review { + overflow: hidden; /* clearfix */ + width: 100%; + margin-bottom: 20px; + border-bottom: 1px solid #dcdcde; +} + +#plugin-information .review-title-section { + overflow: hidden; /* clearfix */ +} + +/* rtl:ignore */ +#plugin-information .review-title-section h4 { + display: inline-block; + float: left; + margin: 0 6px 0 0; +} + +#plugin-information .reviewer-info p { + clear: both; + margin: 0; + padding-top: 2px; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .avatar { + float: left; + margin: 4px 6px 0 0; +} + +/* rtl:ignore */ +#plugin-information .reviewer-info .star-rating { + float: left; +} + +/* rtl:ignore */ +#plugin-information .review-meta { + float: left; + margin-left: 0.75em; +} + +/* rtl:ignore */ +#plugin-information .review-body { + float: left; + width: 100%; +} + +.plugin-version-author-uri { + font-size: 13px; +} + +/* For non-js plugin installation screen ticket #36430. */ +.update-php .button.button-primary { + margin-right: 1em; +} + +@media screen and (max-width: 771px) { + #plugin-information-title.with-banner { + height: 100px; + } + + #plugin-information-title.with-banner h2 { + margin-top: 30px; + font-size: 20px; + line-height: 2; + max-width: 85%; + } + + #plugin-information-title.with-banner div.vignette { + height: 100px; + } + + #plugin-information-tabs { + overflow: hidden; /* clearfix */ + padding: 0; + height: auto; /* let tabs wrap */ + } + + #plugin-information-tabs a.current { + margin-bottom: 0; + border-bottom: none; + } + + #plugin-information .fyi { + float: none; + border: 1px solid #dcdcde; + position: static; + width: auto; + margin: 26px 26px 0; + padding-bottom: 0; /* reset from the two column height fix */ + } + + #section-holder { + position: static; + margin: 0; + padding-bottom: 70px; /* reset from the two column height fix, plus accommodate footer */ + } + + #plugin-information .fyi h3, + #plugin-information .fyi small { + display: none; + } + + #plugin-information-footer { + padding: 12px 16px 0; + height: 46px; + } +} + +/* Thickbox for the Plugin details modal. */ +#TB_window.plugin-details-modal { + background: #fff; +} + +#TB_window.plugin-details-modal.thickbox-loading:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + left: 50%; + top: 50%; + z-index: -1; + margin: -10px 0 0 -10px; + background: #fff url(../images/spinner.gif) no-repeat center; + background-size: 20px 20px; + transform: translateZ(0); +} + +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + #TB_window.plugin-details-modal.thickbox-loading:before { + background-image: url(../images/spinner-2x.gif); + } +} + +.plugin-details-modal #TB_title { + float: left; + height: 1px; +} + +.plugin-details-modal #TB_ajaxWindowTitle { + display: none; +} + +.plugin-details-modal #TB_closeWindowButton { + left: auto; + right: -30px; + color: #f0f0f1; +} + +.plugin-details-modal #TB_closeWindowButton:hover, +.plugin-details-modal #TB_closeWindowButton:focus { + color: #135e96; + outline: none; + box-shadow: none; +} + +.plugin-details-modal .tb-close-icon { + display: none; +} + +.plugin-details-modal #TB_closeWindowButton:after { + content: "\f335"; + font: normal 32px/29px 'dashicons'; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* move plugin install close icon to top on narrow screens */ +@media screen and (max-width: 830px) { + .plugin-details-modal #TB_closeWindowButton { + right: 0; + top: -30px; + } +} + +/* @todo: move this. */ +img { + border: none; +} + +/* Metabox collapse arrow indicators */ +.sidebar-name .toggle-indicator::before, +.meta-box-sortables .postbox .toggle-indicator::before, +.meta-box-sortables .postbox .order-higher-indicator::before, +.meta-box-sortables .postbox .order-lower-indicator::before, +.bulk-action-notice .toggle-indicator::before, +.privacy-text-box .toggle-indicator::before { + content: "\f142"; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +.js .widgets-holder-wrap.closed .toggle-indicator::before, +.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before, +.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before, +.privacy-text-box.closed .toggle-indicator::before { + content: "\f140"; +} + +.postbox .handle-order-higher .order-higher-indicator::before { + content: "\f343"; + color: inherit; +} + +.postbox .handle-order-lower .order-lower-indicator::before { + content: "\f347"; + color: inherit; +} + +.postbox .handle-order-higher .order-higher-indicator::before, +.postbox .handle-order-lower .order-lower-indicator::before { + position: relative; + top: 0.11rem; + width: 20px; + height: 20px; +} + +.postbox .handlediv .toggle-indicator::before { + width: 20px; + border-radius: 50%; +} + +.postbox .handlediv .toggle-indicator::before { + position: relative; + top: 0.05rem; + text-indent: -1px; /* account for the dashicon glyph uneven horizontal alignment */ +} + +.rtl .postbox .handlediv .toggle-indicator::before { + text-indent: 1px; /* account for the dashicon glyph uneven horizontal alignment */ +} + +.bulk-action-notice .toggle-indicator::before { + line-height: 16px; + vertical-align: top; + color: #787c82; +} + +.postbox .handle-order-higher:focus, +.postbox .handle-order-lower:focus, +.postbox .handlediv:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.postbox .handle-order-higher:focus .order-higher-indicator::before, +.postbox .handle-order-lower:focus .order-lower-indicator::before, +.postbox .handlediv:focus .toggle-indicator::before { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +/* @todo: appears to be Press This only and overridden */ +#photo-add-url-div input[type="text"] { + width: 300px; +} + +/* Theme/Plugin file editor */ +.alignleft h2 { + margin: 0; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 13px; + background: #f6f7f7; + -o-tab-size: 4; + tab-size: 4; +} + +#template textarea, +#template .CodeMirror { + width: 100%; + min-height: 60vh; + height: calc( 100vh - 295px ); + border: 1px solid #dcdcde; + box-sizing: border-box; +} + +#templateside > h2 { + padding-top: 6px; + padding-bottom: 7px; + margin: 0; +} + +#templateside ol, +#templateside ul { + margin: 0; + padding: 0; +} +#templateside > ul { + box-sizing: border-box; + margin-top: 0; + overflow: auto; + padding: 0; + min-height: 60vh; + height: calc(100vh - 295px); + background-color: #f6f7f7; + border: 1px solid #dcdcde; + border-left: none; +} +#templateside ul ul { + padding-left: 12px; +} +#templateside > ul > li > ul[role=group] { + padding-left: 0; +} + +/* + * Styles for Theme and Plugin file editors. + */ + +/* Hide collapsed items. */ +[role="treeitem"][aria-expanded="false"] > ul { + display: none; +} + +/* Use arrow dashicons for folder states, but hide from screen readers. */ +[role="treeitem"] span[aria-hidden] { + display: inline; + font-family: dashicons; + font-size: 20px; + position: absolute; + pointer-events: none; +} +[role="treeitem"][aria-expanded="false"] > .folder-label .icon:after { + content: "\f139"; +} +[role="treeitem"][aria-expanded="true"] > .folder-label .icon:after { + content: "\f140"; +} +[role="treeitem"] .folder-label { + display: block; + padding: 3px 3px 3px 12px; + cursor: pointer; +} + +/* Remove outline, and create our own focus and hover styles */ +[role="treeitem"] { + outline: 0; +} +[role="treeitem"] .folder-label.focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} +[role="treeitem"].hover, +[role="treeitem"] .folder-label.hover { + background-color: #f0f0f1; +} + +.tree-folder { + margin: 0; + position: relative; +} +[role="treeitem"] li { + position: relative; +} + +/* Styles for folder indicators/depth */ +.tree-folder .tree-folder::after { + content: ""; + display: block; + position: absolute; + left: 2px; + border-left: 1px solid #c3c4c7; + top: -13px; + bottom: 10px; +} +.tree-folder > li::before { + content: ""; + position: absolute; + display: block; + border-left: 1px solid #c3c4c7; + left: 2px; + top: -5px; + height: 18px; + width: 7px; + border-bottom: 1px solid #c3c4c7; +} +.tree-folder > li::after { + content: ""; + position: absolute; + display: block; + border-left: 1px solid #c3c4c7; + left: 2px; + bottom: -7px; + top: 0; +} + +/* current-file needs to adjustment for .notice styles */ +#templateside .current-file { + margin: -4px 0 -2px; +} +.tree-folder > .current-file::before { + left: 4px; + height: 15px; + width: 0; + border-left: none; + top: 3px; +} +.tree-folder > .current-file::after { + bottom: -4px; + height: 7px; + left: 2px; + top: auto; +} + +/* Lines shouldn't continue on last item */ +.tree-folder > li:last-child::after, +.tree-folder li:last-child > .tree-folder::after { + display: none; +} + +#theme-plugin-editor-selector, +#theme-plugin-editor-label, +#documentation label { + font-weight: 600; +} + +#theme-plugin-editor-label { + display: inline-block; + margin-bottom: 1em; +} + +/* rtl:ignore */ +#template textarea, +#docs-list { + direction: ltr; +} + +.fileedit-sub #theme, +.fileedit-sub #plugin { + max-width: 40%; +} +.fileedit-sub .alignright { + text-align: right; +} + +#template p { + width: 97%; +} + +#file-editor-linting-error { + margin-top: 1em; + margin-bottom: 1em; +} +#file-editor-linting-error > .notice { + margin: 0; + display: inline-block; +} +#file-editor-linting-error > .notice > p { + width: auto; +} +#template .submit { + margin-top: 1em; + padding: 0; +} + +#template .submit input[type=submit][disabled] { + cursor: not-allowed; +} +#templateside { + float: right; + width: 16em; + word-wrap: break-word; +} + +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside li:not(.howto) a, +.theme-editor-php .highlight { + display: block; + padding: 3px 0 3px 12px; + text-decoration: none; +} + +#templateside li:not(.howto) > a:first-of-type { + padding-top: 0; +} + +#templateside li.howto { + padding: 6px 12px 12px; +} + +.theme-editor-php .highlight { + margin: -3px 3px -3px -12px; +} + +#templateside .highlight { + border: none; + font-weight: 600; +} + +.nonessential { + color: #646970; + font-size: 11px; + font-style: italic; + padding-left: 12px; +} + +#documentation { + margin-top: 10px; +} + +#documentation label { + line-height: 1.8; + vertical-align: baseline; +} + +.fileedit-sub { + padding: 10px 0 8px; + line-height: 180%; +} + +#file-editor-warning .file-editor-warning-content { + margin: 25px; +} + +/* @todo: can we use a common class for these? */ +.nav-menus-php .item-edit:before, +.widget-top .widget-action .toggle-indicator:before, +.control-section .accordion-section-title:after, +.accordion-section-title:after { + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none; +} + +.widget-top .widget-action .toggle-indicator:before { + padding: 1px 2px 1px 0; + border-radius: 50%; +} + +.handlediv, +.postbox .handlediv.button-link, +.item-edit, +.toggle-indicator, +.accordion-section-title:after { + color: #787c82; +} + +.widget-action { + color: #50575e; /* #fafafa background in the Widgets screen */ +} + +.widget-top:hover .widget-action, +.widget-action:focus, +.handlediv:hover, +.handlediv:focus, +.postbox .handlediv.button-link:hover, +.postbox .handlediv.button-link:focus, +.item-edit:hover, +.item-edit:focus, +.sidebar-name:hover .toggle-indicator, +.accordion-section-title:hover:after { + color: #1d2327; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.widget-top .widget-action:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.control-section .accordion-section-title:after, +.accordion-section-title:after { + float: right; + right: 20px; + top: -2px; +} + +.control-section.open .accordion-section-title:after, +#customize-info.open .accordion-section-title:after, +.nav-menus-php .menu-item-edit-active .item-edit:before, +.widget.open .widget-top .widget-action .toggle-indicator:before, +.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before { + content: "\f142"; +} + +/*! + * jQuery UI Draggable/Sortable 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ +.ui-draggable-handle, +.ui-sortable-handle { + touch-action: none; +} + +/* Accordion */ +.accordion-section { + border-bottom: 1px solid #dcdcde; + margin: 0; +} + +.accordion-section.open .accordion-section-content, +.no-js .accordion-section .accordion-section-content { + display: block; +} + +.accordion-section.open:hover { + border-bottom-color: #dcdcde; +} + +.accordion-section-content { + display: none; + padding: 10px 20px 15px; + overflow: hidden; + background: #fff; +} + +.accordion-section-title { + margin: 0; + padding: 12px 15px 15px; + position: relative; + border-left: 1px solid #dcdcde; + border-right: 1px solid #dcdcde; + -webkit-user-select: none; + user-select: none; +} + +.js .accordion-section-title { + cursor: pointer; +} + +.js .accordion-section-title:after { + position: absolute; + top: 12px; + right: 10px; + z-index: 1; +} + +.accordion-section-title:focus { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.accordion-section-title:hover:after, +.accordion-section-title:focus:after { + border-color: #a7aaad transparent; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.cannot-expand .accordion-section-title { + cursor: auto; +} + +.cannot-expand .accordion-section-title:after { + display: none; +} + +.control-section .accordion-section-title, +.customize-pane-child .accordion-section-title { + border-left: none; + border-right: none; + padding: 10px 10px 11px 14px; + line-height: 1.55; + background: #fff; +} + +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { + top: calc(50% - 10px); /* Arrow height is 20px, so use half of that to vertically center */ +} + +.js .control-section:hover .accordion-section-title, +.js .control-section .accordion-section-title:hover, +.js .control-section.open .accordion-section-title, +.js .control-section .accordion-section-title:focus { + color: #1d2327; + background: #f6f7f7; +} + +.control-section.open .accordion-section-title { + /* When expanded */ + border-bottom: 1px solid #dcdcde; +} + +/* Edit Site */ +.network-admin .edit-site-actions { + margin-top: 0; +} + +/* My Sites */ +.my-sites { + display: block; + overflow: auto; + zoom: 1; +} + +.my-sites li { + display: block; + padding: 8px 3%; + min-height: 130px; + margin: 0; +} + +@media only screen and (max-width: 599px) { + .my-sites li { + min-height: 0; + } +} + +@media only screen and (min-width: 600px) { + .my-sites.striped li { + background-color: #fff; + position: relative; + } + .my-sites.striped li:after { + content: ""; + width: 1px; + height: 100%; + position: absolute; + top: 0; + right: 0; + background: #c3c4c7; + } + +} +@media only screen and (min-width: 600px) and (max-width: 699px) { + .my-sites li{ + float: left; + width: 44%; + } + .my-sites.striped li { + background-color: #fff; + } + .my-sites.striped li:nth-of-type(2n+1) { + clear: left; + } + .my-sites.striped li:nth-of-type(2n+2):after { + content: none; + } + .my-sites li:nth-of-type(4n+1), + .my-sites li:nth-of-type(4n+2) { + background-color: #f6f7f7; + } + +} + +@media only screen and (min-width: 700px) and (max-width: 1199px) { + .my-sites li { + float: left; + width: 27.333333%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(3n+3):after { + content: none; + } + .my-sites li:nth-of-type(6n+1), + .my-sites li:nth-of-type(6n+2), + .my-sites li:nth-of-type(6n+3) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1200px) and (max-width: 1399px) { + .my-sites li { + float: left; + width: 21%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(4n+1) { + clear: left; + } + .my-sites.striped li:nth-of-type(4n+4):after { + content: none; + } + .my-sites li:nth-of-type(8n+1), + .my-sites li:nth-of-type(8n+2), + .my-sites li:nth-of-type(8n+3), + .my-sites li:nth-of-type(8n+4) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1400px) and (max-width: 1599px) { + .my-sites li { + float: left; + width: 16%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(5n+1) { + clear: left; + } + .my-sites.striped li:nth-of-type(5n+5):after { + content: none; + } + .my-sites li:nth-of-type(10n+1), + .my-sites li:nth-of-type(10n+2), + .my-sites li:nth-of-type(10n+3), + .my-sites li:nth-of-type(10n+4), + .my-sites li:nth-of-type(10n+5) { + background-color: #f6f7f7; + } +} + +@media only screen and (min-width: 1600px) { + .my-sites li { + float: left; + width: 12.666666%; + padding: 8px 2%; + background-color: #fff; + } + .my-sites.striped li:nth-of-type(6n+1) { + clear: left; + } + .my-sites.striped li:nth-of-type(6n+6):after { + content: none; + } + .my-sites li:nth-of-type(12n+1), + .my-sites li:nth-of-type(12n+2), + .my-sites li:nth-of-type(12n+3), + .my-sites li:nth-of-type(12n+4), + .my-sites li:nth-of-type(12n+5), + .my-sites li:nth-of-type(12n+6) { + background-color: #f6f7f7; + } +} + +.my-sites li a { + text-decoration: none; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + /* Back-compat for pre-3.8 */ + div.star-holder, + div.star-holder .star-rating { + background: url(../images/stars-2x.png?ver=20121108) repeat-x bottom left; + background-size: 21px 37px; + } + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} + +@media screen and (max-width: 782px) { + html.wp-toolbar { + padding-top: 46px; + } + + .screen-reader-shortcut:focus { + top: -39px; + } + + body { + min-width: 240px; + overflow-x: hidden; + } + + body * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important; + } + + #wpcontent { + position: relative; + margin-left: 0; + padding-left: 10px; + } + + #wpbody-content { + padding-bottom: 100px; + } + + .wrap { + clear: both; + margin-right: 12px; + margin-left: 0; + } + + /* categories */ + #col-left, + #col-right { + float: none; + width: auto; + } + + #col-left .col-wrap, + #col-right .col-wrap { + padding: 0; + } + + /* Hidden Elements */ + #collapse-menu, + .post-format-select { + display: none !important; + } + + .wrap h1.wp-heading-inline { + margin-bottom: 0.5em; + } + + .wrap .add-new-h2, /* deprecated */ + .wrap .add-new-h2:active, /* deprecated */ + .wrap .page-title-action, + .wrap .page-title-action:active { + padding: 10px 15px; + font-size: 14px; + white-space: nowrap; + } + + /* Feedback Messages */ + .notice, + .wrap div.updated, + .wrap div.error, + .media-upload-form div.error { + margin: 20px 0 10px; + padding: 5px 10px; + font-size: 14px; + line-height: 175%; + } + + .wp-core-ui .notice.is-dismissible { + padding-right: 46px; + } + + .notice-dismiss { + padding: 13px; + } + + .wrap .icon32 + h2 { + margin-top: -2px; + } + + .wp-responsive-open #wpbody { + right: -16em; + } + + code { + word-wrap: break-word; + word-wrap: anywhere; /* Firefox. Allow breaking long words anywhere */ + word-break: break-word; /* Webkit: Treated similarly to word-wrap: break-word */ + } + + /* General Metabox */ + .postbox { + font-size: 14px; + } + + .metabox-holder h3.hndle, /* Back-compat for pre-4.4 */ + .metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */ + .metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */ + .metabox-holder h2 { + padding: 12px; + } + + .postbox .handlediv { + margin-top: 3px; + } + + /* Subsubsub Nav */ + .subsubsub { + font-size: 16px; + text-align: center; + margin-bottom: 15px; + } + + /* Theme/Plugin File Editor */ + + #template textarea, + #template .CodeMirror { + box-sizing: border-box; + } + + #templateside { + float: none; + width: auto; + } + + #templateside > ul { + border-left: 1px solid #dcdcde; + } + + #templateside li { + margin: 0; + } + + #templateside li:not(.howto) a { + display: block; + padding: 5px; + } + #templateside li.howto { + padding: 12px; + } + + #templateside .highlight { + padding: 5px; + margin-left: -5px; + margin-top: -5px; + } + + #template > div, + #template .notice { + float: none; + margin: 1em 0; + width: auto; + } + + #template .CodeMirror, + #template textarea { + width: 100%; + } + + #templateside ul ul { + padding-left: 1.5em; + } + [role="treeitem"] .folder-label { + display: block; + padding: 5px; + } + .tree-folder > li::before, + .tree-folder > li::after, + .tree-folder .tree-folder::after { + left: -8px; + } + .tree-folder > li::before { + top: 0; + height: 13px; + } + .tree-folder > .current-file::before { + left: -5px; + top: 7px; + width: 4px; + } + .tree-folder > .current-file::after { + height: 9px; + left: -8px; + } + .wrap #templateside span.notice { + margin-left: -5px; + width: 100%; + } + + .fileedit-sub .alignright { + float: left; + margin-top: 15px; + width: 100%; + text-align: left; + } + + .fileedit-sub .alignright label { + display: block; + } + + .fileedit-sub #theme, + .fileedit-sub #plugin { + margin-left: 0; + max-width: 70%; + } + + .fileedit-sub input[type="submit"] { + margin-bottom: 0; + } + + #documentation label[for="docs-list"] { + display: block; + } + + #documentation select[name="docs-list"] { + margin-left: 0; + max-width: 60%; + } + + #documentation input[type="button"] { + margin-bottom: 0; + } + + #wpfooter { + display: none; + } + + #comments-form .checkforspam { + display: none; + } + + .edit-comment-author { + margin: 2px 0 0; + } + + .filter-drawer .filter-group-feature input, + .filter-drawer .filter-group-feature label { + line-height: 2.1; + } + + .filter-drawer .filter-group-feature label { + margin-left: 32px; + } + + .wp-filter .button.drawer-toggle { + font-size: 13px; + line-height: 2; + height: 28px; + } + + /* Fix help tab columns for smaller screens */ + #screen-meta #contextual-help-wrap { + overflow: visible; + } + + #screen-meta #contextual-help-back, + #screen-meta .contextual-help-sidebar { + display: none; + } + + #screen-meta .contextual-help-tabs { + clear: both; + width: 100%; + float: none; + } + + #screen-meta .contextual-help-tabs ul { + margin: 0 0 1em; + padding: 1em 0 0; + } + + #screen-meta .contextual-help-tabs .active { + margin: 0; + } + + #screen-meta .contextual-help-tabs-wrap { + clear: both; + max-width: 100%; + float: none; + } + + #screen-meta, + #screen-meta-links { + margin-right: 10px; + } + + #screen-meta-links { + margin-bottom: 20px; /* Add margins beneath links for better spacing between boxes and elements */ + } + + .wp-filter .search-form input[type="search"] { + font-size: 1rem; + } + + .wp-filter .search-form.search-plugins { + /* This element is a flex item. */ + min-width: 100%; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Disable horizontal scroll when responsive menu is open + since we push the main content off to the right. */ + #wpwrap.wp-responsive-open { + overflow-x: hidden; + } + + html.wp-toolbar { + padding-top: 0; + } + + .screen-reader-shortcut:focus { + top: 7px; + } + + #wpbody { + padding-top: 46px; + } + + /* Keep full-width boxes on Edit Post page from causing horizontal scroll */ + div#post-body.metabox-holder.columns-1 { + overflow-x: hidden; + } + + h1.nav-tab-wrapper, + .wrap h2.nav-tab-wrapper, + .nav-tab-wrapper { + border-bottom: 0; + } + + h1 .nav-tab, + h2 .nav-tab, + h3 .nav-tab, + nav .nav-tab { + margin: 10px 10px 0 0; + border-bottom: 1px solid #c3c4c7; + } + + .nav-tab-active:hover, + .nav-tab-active:focus, + .nav-tab-active:focus:active { + border-bottom: 1px solid #c3c4c7; + } + + .wp-filter .search-form input[type="search"] { + width: 100%; + } +} + +@media screen and (max-width: 320px) { + /* Prevent default center alignment and larger font for the Right Now widget when + the network dashboard is viewed on a small mobile device. */ + #network_dashboard_right_now .subsubsub { + font-size: 14px; + text-align: left; + } +} diff --git a/tools/storybook/wordpress/css/common.min.css b/tools/storybook/wordpress/css/common.min.css new file mode 100644 index 00000000000..e5f156989ee --- /dev/null +++ b/tools/storybook/wordpress/css/common.min.css @@ -0,0 +1,9 @@ +/*! This file is auto-generated */ +#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-left{float:left;width:35%}#col-right{float:right;width:65%}#col-left .col-wrap{padding:0 6px 0 0}#col-right .col-wrap{padding:0 0 0 6px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.button .screen-reader-text{height:auto}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:2px solid transparent;outline-offset:-2px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#135e96}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img,a:focus .plugin-icon{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}#adminmenu a:focus{box-shadow:none;outline:1px solid transparent;outline-offset:-1px}.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}.wp-die-message,p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#1d2327;font-size:2em;margin:.67em 0}h2,h3{color:#1d2327;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:4em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-left:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#f0f0f1;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:left;color:#646970}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#50575e;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #c3c4c7}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #c3c4c7;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.wrap.block-editor-no-js{padding-left:20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:1.3}.wrap h1.wp-heading-inline{display:inline-block;margin-right:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-left:25px;color:#50575e;font-size:14px;font-weight:400;line-height:1}.subtitle strong{word-break:break-all}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:1px solid #2271b1;border-radius:2px;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#2271b1;background:#f6f7f7;cursor:pointer}.wrap .wp-heading-inline+.page-title-action{margin-left:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.page-title-action:focus{color:#0a4b78}.form-table th label[for=WPLANG] .dashicons,.form-table th label[for=locale] .dashicons{margin-left:5px}.wrap .page-title-action:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#c5d9ed}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f6f7f7}.bar{background-color:#f0f0f1;border-right-color:#4f94d4}.highlight{background-color:#f0f6fc;color:#3c434a}.wp-ui-primary{color:#fff;background-color:#2c3338}.wp-ui-text-primary{color:#2c3338}.wp-ui-highlight{color:#fff;background-color:#2271b1}.wp-ui-text-highlight{color:#2271b1}.wp-ui-notification{color:#fff;background-color:#d63638}.wp-ui-text-notification{color:#d63638}.wp-ui-text-icon{color:#8c8f94}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#f6f7f7;color:#1d2327}.stuffbox .hndle{border-bottom:1px solid #c3c4c7}.quicktags{background-color:#c3c4c7;color:#000;font-size:12px}.icon32{display:none}#bulk-titles .ntdelbutton:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:never;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-left:2px;border-radius:50%;color:#2271b1;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles .ntdelbutton:focus:before,#bulk-titles .ntdelbutton:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#d63638}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#646970;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #dcdcde;border-bottom:1px solid #f6f7f7}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.privacy_requests .remove-personal-data .remove-personal-data-handle,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete,a#remove-post-thumbnail{color:#b32d2e}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.privacy_requests .remove-personal-data .remove-personal-data-handle:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,a#remove-post-thumbnail:hover,abbr.required,span.required{color:#b32d2e;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #dcdcde;background:#f6f7f7}#delete-action{float:left;line-height:2.30769231}#delete-link{line-height:2.30769231;vertical-align:middle;text-align:left;margin-left:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:right;float:right;line-height:1.9}#publishing-action .spinner{float:none;margin-top:5px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0;text-align:right}#save-post{float:left}.preview{float:right}#sticky-span{margin-left:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}#misc-publishing-actions .notice{margin-left:10px;margin-right:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;background:#fff;color:#50575e;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#646970;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#646970;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #646970;color:#1d2327}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#135e96}.wp-filter .search-form{float:right;margin:10px 0}.wp-filter .search-form input[type=search]{margin:1px 0;width:280px;max-width:100%}.wp-filter .search-form select{margin:0}.plugin-install-php .wp-filter{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.wp-filter .search-form.search-plugins{margin-top:0}.wp-filter .search-form.search-plugins .wp-filter-search,.wp-filter .search-form.search-plugins select{display:inline-block;margin-top:10px;vertical-align:top}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 10px 0 6px;border-color:transparent;background-color:transparent;color:#646970;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 5px 0 0;color:#646970;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#135e96}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#4f94d4}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -10px 0 -20px;padding:20px;border-top:1px solid #f0f0f1;background:#f6f7f7;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#646970;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2271b1}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:1.4}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 0 14px 23px}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:2.2}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-left:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #f0f0f1}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 12px .5em 0}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#1d2327;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#787c82;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#d63638}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.notice-success,div.updated{border-left-color:#00a32a}.notice-success.notice-alt{background-color:#edfaef}.notice-warning{border-left-color:#dba617}.notice-warning.notice-alt{background-color:#fcf9e8}.notice-error,div.error{border-left-color:#d63638}.notice-error.notice-alt{background-color:#fcf0f1}.notice-info{border-left-color:#72aee6}.notice-info.notice-alt{background-color:#f0f6fc}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-left:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#d63638;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:none}}.theme-overlay .theme-autoupdate .dashicons-update.spin{margin-right:3px}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#68de7c;content:"\f147"}.update-message.notice-error p:before{color:#d63638;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-right:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;margin:25px 20px 0 2px}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-left:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}h2.wp-current-version{margin-bottom:.3em}p.update-last-checked{margin-top:0}p.auto-update-status{margin-top:2em;line-height:1.8}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px 5px 0 -2px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#9ec2e6}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:never}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0}#screen-meta-links{float:right;margin:0 20px 0 0}#screen-meta{display:none;margin:0 20px -1px 0;position:relative;background-color:#fff;border:1px solid #c3c4c7;border-top:none;box-shadow:0 0 0 transparent}#contextual-help-link-wrap,#screen-options-link-wrap{float:left;margin:0 0 0 6px}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:1px solid #c3c4c7;border-top:none;height:auto;margin-bottom:0;padding:3px 6px 3px 16px;background:#fff;border-radius:0 0 4px 4px;color:#646970;line-height:1.7;box-shadow:0 0 0 transparent;transition:box-shadow .1s linear}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#2c3338}#screen-meta-links .show-settings:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}#screen-meta-links .show-settings:active{transform:none}#screen-meta-links .show-settings:after{right:0;content:"\f140";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 5px 0 0;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:2.35}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px;padding-right:0}.metabox-prefs .screen-options label{line-height:2.2;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #c3c4c7;border-top:none;border-bottom:none;background:#f0f6fc}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 0 0 2px;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:1.4;text-decoration:none;border:1px solid transparent;border-right:none;border-left:none}.contextual-help-tabs a:hover{color:#2c3338}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-left:2px solid #72aee6;background:#f0f6fc;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#c3c4c7;color:#2c3338}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box;-ms-overflow-style:scrollbar}.widefat td,.widefat th{color:#50575e}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#2c3338}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#2c3338}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-left:2em}.postbox-container{float:left}.postbox-container .meta-box-sortables{box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .meta-box-sortables{min-height:1px;position:relative}#post-body-content{width:100%;min-width:463px;float:left}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{outline:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .postbox .hndle.is-non-sortable,.js .widget .widget-top.is-non-sortable{cursor:auto}.hndle a{font-size:12px;font-weight:400}.postbox-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #c3c4c7}.postbox-header .hndle{flex-grow:1;display:flex;justify-content:space-between;align-items:center}.postbox-header .handle-actions{flex-shrink:0}.postbox .handle-order-higher,.postbox .handle-order-lower,.postbox .handlediv{width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.postbox .handle-order-higher,.postbox .handle-order-lower{color:#787c82;width:1.62rem}.edit-post-meta-boxes-area .postbox .handle-order-higher,.edit-post-meta-boxes-area .postbox .handle-order-lower{width:44px;height:44px;color:#1d2327}.postbox .handle-order-higher[aria-disabled=true],.postbox .handle-order-lower[aria-disabled=true]{cursor:default;color:#a7aaad}.sortable-placeholder{border:1px dashed #c3c4c7;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox.closed{border-bottom:0}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;user-select:none}.postbox .inside{padding:0 12px 12px;line-height:1.4;font-size:13px}.stuffbox .inside{padding:0;line-height:1.4;font-size:13px;margin-top:0}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #c3c4c7}.columns-prefs label{padding:0 10px 0 0}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#comment-status-display,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#50575e}#wpfooter p{font-size:13px;margin:0;line-height:1.55}#footer-thankyou{font-style:italic}.nav-tab{float:left;border:1px solid #c3c4c7;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:1.71428571;font-weight:600;background:#dcdcde;color:#50575e;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:1.33}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#3c434a}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#3c434a}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f0f0f1;background:#f0f0f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #c3c4c7;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:right;vertical-align:middle;opacity:.7;width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-right:16em}#template .notice{margin-top:1em;margin-right:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 10px 11px 14px;line-height:1.5}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:#d63638;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #dcdcde;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-right:14px;line-height:1.4}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:1.55;color:#50575e;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{color:#1d2327;border-bottom:1px solid #f0f0f1}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:100%}#namediv p{margin:10px 0}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:.15}.checkbox{border:none;margin:0;padding:0}fieldset{border:0;padding:0;margin:0}.post-categories{display:inline;margin:0;padding:0}.post-categories li{display:inline}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom left}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top left;height:17px;float:left}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in;text-align:center;color:#dba617}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f6f7f7;font-size:22px;font-weight:600;line-height:2.4;position:relative;height:56px}#plugin-information-title.with-banner{margin-right:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:1.68;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(29,35,39,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;left:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;right:0;left:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #dcdcde;background:#f6f7f7}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:1.3;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #dcdcde;border-bottom-color:#fff;padding-top:8px;color:#2c3338}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-top:10px;margin-right:250px;padding:10px 26px 99999px;margin-bottom:-99932px}#section-holder .notice{margin:5px 0 15px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99932px;width:217px;border-left:1px solid #dcdcde;background:#f6f7f7;color:#646970}#plugin-information .fyi strong{color:#3c434a}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#dcdcde;float:left}#plugin-information .counter-bar{height:17px;background-color:#f0c33c;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:40px;border-top:1px solid #dcdcde;background:#f6f7f7}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #c3c4c7}#plugin-information blockquote{border-left:2px solid #dcdcde;color:#646970;font-style:italic;margin:1em 0;padding:0 0 0 1em}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #dcdcde}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-right:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:2;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #dcdcde;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fff}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:#fff url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:left;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{left:auto;right:-30px;color:#f0f0f1}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{color:#135e96;outline:0;box-shadow:none}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{right:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator::before,.meta-box-sortables .postbox .order-higher-indicator::before,.meta-box-sortables .postbox .order-lower-indicator::before,.meta-box-sortables .postbox .toggle-indicator::before,.privacy-text-box .toggle-indicator::before,.sidebar-name .toggle-indicator::before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before,.js .widgets-holder-wrap.closed .toggle-indicator::before,.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before,.privacy-text-box.closed .toggle-indicator::before{content:"\f140"}.postbox .handle-order-higher .order-higher-indicator::before{content:"\f343";color:inherit}.postbox .handle-order-lower .order-lower-indicator::before{content:"\f347";color:inherit}.postbox .handle-order-higher .order-higher-indicator::before,.postbox .handle-order-lower .order-lower-indicator::before{position:relative;top:.11rem;width:20px;height:20px}.postbox .handlediv .toggle-indicator::before{width:20px;border-radius:50%}.postbox .handlediv .toggle-indicator::before{position:relative;top:.05rem;text-indent:-1px}.rtl .postbox .handlediv .toggle-indicator::before{text-indent:1px}.bulk-action-notice .toggle-indicator::before{line-height:16px;vertical-align:top;color:#787c82}.postbox .handle-order-higher:focus,.postbox .handle-order-lower:focus,.postbox .handlediv:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.postbox .handle-order-higher:focus .order-higher-indicator::before,.postbox .handle-order-lower:focus .order-lower-indicator::before,.postbox .handlediv:focus .toggle-indicator::before{box-shadow:none;outline:1px solid transparent}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f6f7f7;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #dcdcde;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f6f7f7;border:1px solid #dcdcde;border-left:none}#templateside ul ul{padding-left:12px}#templateside>ul>li>ul[role=group]{padding-left:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f139"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 3px 3px 12px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#f0f0f1}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:"";display:block;position:absolute;left:2px;border-left:1px solid #c3c4c7;top:-13px;bottom:10px}.tree-folder>li::before{content:"";position:absolute;display:block;border-left:1px solid #c3c4c7;left:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #c3c4c7}.tree-folder>li::after{content:"";position:absolute;display:block;border-left:1px solid #c3c4c7;left:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{left:4px;height:15px;width:0;border-left:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;left:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#documentation label,#theme-plugin-editor-label,#theme-plugin-editor-selector{font-weight:600}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:right}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:right;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 0 3px 12px;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#646970;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:1.8;vertical-align:baseline}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.widget-top .widget-action .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#787c82}.widget-action{color:#50575e}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#1d2327;outline:1px solid transparent}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:right;right:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before,.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! + * jQuery UI Draggable/Sortable 1.11.4 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #dcdcde;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dcdcde}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #dcdcde;border-right:1px solid #dcdcde;-webkit-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;right:10px;z-index:1}.accordion-section-title:focus{outline:1px solid transparent}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a7aaad transparent;outline:1px solid transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:1.55;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top:calc(50% - 10px)}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#1d2327;background:#f6f7f7}.control-section.open .accordion-section-title{border-bottom:1px solid #dcdcde}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#c3c4c7}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f6f7f7}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f6f7f7}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f6f7f7}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f6f7f7}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f6f7f7}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom left;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}.screen-reader-shortcut:focus{top:-39px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{clear:both;margin-right:12px;margin-left:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-right:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{right:-16em}code{word-wrap:break-word;word-wrap:anywhere;word-break:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-left:1px solid #dcdcde}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-left:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{left:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{left:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;left:-8px}.wrap #templateside span.notice{margin-left:-5px;width:100%}.fileedit-sub .alignright{float:left;margin-top:15px;width:100%;text-align:left}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-left:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-left:0;max-width:60%}#documentation input[type=button]{margin-bottom:0}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:2.1}.filter-drawer .filter-group-feature label{margin-left:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:2;height:28px}#screen-meta #contextual-help-wrap{overflow:visible}#screen-meta #contextual-help-back,#screen-meta .contextual-help-sidebar{display:none}#screen-meta .contextual-help-tabs{clear:both;width:100%;float:none}#screen-meta .contextual-help-tabs ul{margin:0 0 1em;padding:1em 0 0}#screen-meta .contextual-help-tabs .active{margin:0}#screen-meta .contextual-help-tabs-wrap{clear:both;max-width:100%;float:none}#screen-meta,#screen-meta-links{margin-right:10px}#screen-meta-links{margin-bottom:20px}.wp-filter .search-form input[type=search]{font-size:1rem}.wp-filter .search-form.search-plugins{min-width:100%}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}.screen-reader-shortcut:focus{top:7px}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab,nav .nav-tab{margin:10px 10px 0 0;border-bottom:1px solid #c3c4c7}.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #c3c4c7}.wp-filter .search-form input[type=search]{width:100%}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-controls-rtl.css b/tools/storybook/wordpress/css/customize-controls-rtl.css new file mode 100644 index 00000000000..87e242c410c --- /dev/null +++ b/tools/storybook/wordpress/css/customize-controls-rtl.css @@ -0,0 +1,3003 @@ +/*! This file is auto-generated */ +body { + overflow: hidden; + -webkit-text-size-adjust: 100%; +} + +.customize-controls-close, +.widget-control-actions a { + text-decoration: none; +} + +#customize-controls h3 { + font-size: 14px; +} + +#customize-controls img { + max-width: 100%; +} + +#customize-controls .submit { + text-align: center; +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked { + background-color: rgba(0, 0, 0, 0.7); + padding: 25px; +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message { + margin-right: auto; + margin-left: auto; + max-width: 366px; + min-height: 64px; + width: auto; + padding: 25px 109px 25px 25px; + position: relative; + background: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + line-height: 1.5; + overflow-y: auto; + text-align: right; + top: calc( 50% - 100px ); +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing { + margin-top: 0; +} +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons { + margin-bottom: 0; +} + +.customize-changeset-locked-avatar { + width: 64px; + position: absolute; + right: 25px; + top: 25px; +} + +.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button { + margin-left: 10px; + margin-top: 0; +} + +#customize-controls .description { + color: #50575e; +} + +#customize-save-button-wrapper { + float: left; + margin-top: 9px; +} + +body:not(.ready) #customize-save-button-wrapper .save { + visibility: hidden; +} +#customize-save-button-wrapper .save { + float: right; + border-radius: 3px; + box-shadow: none; /* @todo Adjust box shadow based on the disable states of paired button. */ + margin-top: 0; +} + +#customize-save-button-wrapper .save:focus, #publish-settings:focus { + box-shadow: 0 1px 0 #2271b1, 0 0 2px 1px #72aee6; /* This is default box shadow for focus */ +} + +#customize-save-button-wrapper .save.has-next-sibling { + border-radius: 0 3px 3px 0; +} + +#customize-sidebar-outer-content { + position: absolute; + top: 0; + bottom: 0; + right: 0; + visibility: hidden; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0; + z-index: -1; + background: #f0f0f1; + transition: right .18s; + border-left: 1px solid #dcdcde; + border-right: 1px solid #dcdcde; + height: 100%; +} + +@media (prefers-reduced-motion: reduce) { + #customize-sidebar-outer-content { + transition: none; + } +} + +#customize-theme-controls .control-section-outer { + display: none !important; +} + +#customize-outer-theme-controls .accordion-section-content { + padding: 12px; +} + +#customize-outer-theme-controls .accordion-section-content.open { + display: block; +} + +.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + visibility: visible; + right: 100%; + transition: right .18s; +} + +@media (prefers-reduced-motion: reduce) { + .outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + transition: none; + } +} + +.customize-outer-pane-parent { + margin: 0; +} + +.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main { + right: 300px; + opacity: 0.4; +} + +.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, +.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, +.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { + right: 64%; +} + +#customize-outer-theme-controls li.notice { + padding-top: 8px; + padding-bottom: 8px; + margin-right: 0; + margin-bottom: 10px; +} + +#publish-settings { + text-indent: 0; + border-radius: 3px 0 0 3px; + padding-right: 0; + padding-left: 0; + box-shadow: none; /* @todo Adjust box shadow based on the disable states of paired button. */ + font-size: 14px; + width: 30px; + float: right; + transform: none; + margin-top: 0; + line-height: 2; +} + +body:not(.ready) #publish-settings, +body.trashing #customize-save-button-wrapper .save, +body.trashing #publish-settings { + display: none; +} + +#customize-header-actions .spinner { + margin-top: 13px; + margin-left: 4px; +} + +.saving #customize-header-actions .spinner, +.trashing #customize-header-actions .spinner { + visibility: visible; +} + +#customize-header-actions { + border-bottom: 1px solid #dcdcde; +} + +#customize-controls .wp-full-overlay-sidebar-content { + overflow-y: auto; + overflow-x: hidden; +} + +.outer-section-open #customize-controls .wp-full-overlay-sidebar-content { + background: #f0f0f1; +} + +#customize-controls .customize-info { + border: none; + border-bottom: 1px solid #dcdcde; + margin-bottom: 15px; +} + +#customize-control-changeset_status .customize-inside-control-row, +#customize-control-changeset_preview_link input { + background-color: #fff; + border-bottom: 1px solid #dcdcde; + box-sizing: content-box; + width: 100%; + margin-right: -12px; + padding-right: 12px; + padding-left: 12px; +} + +#customize-control-trash_changeset { + margin-top: 20px; +} +#customize-control-trash_changeset .button-link { + position: relative; + padding-right: 24px; + display: inline-block; +} +#customize-control-trash_changeset .button-link:before { + content: "\f182"; + font: normal 22px dashicons; + text-decoration: none; + position: absolute; + right: 0; + top: -2px; +} + +#customize-controls .date-input:invalid { + border-color: #d63638; +} + +#customize-control-changeset_status .customize-inside-control-row { + padding-top: 10px; + padding-bottom: 10px; + font-weight: 500; +} + +#customize-control-changeset_status .customize-inside-control-row:first-of-type { + border-top: 1px solid #dcdcde; +} + +#customize-control-changeset_status .customize-control-title { + margin-bottom: 6px; +} + +#customize-control-changeset_status input { + margin-right: 0; +} + +#customize-control-changeset_preview_link { + position: relative; + display: block; +} + +.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button { + margin: 0; + position: absolute; + bottom: 9px; + left: 0; +} + +.preview-link-wrapper { + position: relative; +} + +.customize-copy-preview-link:before, +.customize-copy-preview-link:after { + content: ""; + height: 28px; + position: absolute; + background: #fff; + top: -1px; +} + +.customize-copy-preview-link:before { + right: -10px; + width: 9px; + opacity: 0.75; +} + +.customize-copy-preview-link:after { + right: -5px; + width: 4px; + opacity: 0.8; +} + +#customize-control-changeset_preview_link input { + line-height: 2.85714286; /* 40px */ + border-top: 1px solid #dcdcde; + border-right: none; + border-left: none; + text-indent: -999px; + color: #fff; + /* Only necessary for IE11 */ + min-height: 40px; +} + +#customize-control-changeset_preview_link label { + position: relative; + display: block; +} + +#customize-control-changeset_preview_link a { + display: inline-block; + position: absolute; + white-space: nowrap; + overflow: hidden; + width: 90%; + bottom: 14px; + font-size: 14px; + text-decoration: none; +} + +#customize-control-changeset_preview_link a.disabled, +#customize-control-changeset_preview_link a.disabled:active, +#customize-control-changeset_preview_link a.disabled:focus, +#customize-control-changeset_preview_link a.disabled:visited { + color: #000; + opacity: 0.4; + cursor: default; + outline: none; + box-shadow: none; +} + +#sub-accordion-section-publish_settings .customize-section-description-container { + display: none; +} + +#customize-controls .customize-info.section-meta { + margin-bottom: 15px; +} + +.customize-control-date_time .customize-control-description + .date-time-fields.includes-time { + margin-top: 10px; +} + +.customize-control.customize-control-date_time .date-time-fields .date-input.day { + margin-left: 0; +} + +.date-time-fields .date-input.month { + width: auto; + margin: 0; +} + +.date-time-fields .date-input.day, +.date-time-fields .date-input.hour, +.date-time-fields .date-input.minute { + width: 46px; +} + +.date-time-fields .date-input.year { + width: 65px; +} + +.date-time-fields .date-input.meridian { + width: auto; + margin: 0; +} + +.date-time-fields .time-row { + margin-top: 12px; +} + +#customize-control-changeset_preview_link { + margin-top: 6px; +} + +#customize-control-changeset_status { + margin-bottom: 0; + padding-bottom: 0; +} + +#customize-control-changeset_scheduled_date { + box-sizing: content-box; + width: 100%; + margin-right: -12px; + padding: 12px; + background: #fff; + border-bottom: 1px solid #dcdcde; + margin-bottom: 0; +} + +#customize-control-changeset_scheduled_date .customize-control-description { + font-style: normal; +} + +#customize-controls .customize-info.is-in-view, +#customize-controls .customize-section-title.is-in-view { + position: absolute; + z-index: 9; + width: 100%; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} + +#customize-controls .customize-section-title.is-in-view { + margin-top: 0; +} + +#customize-controls .customize-info.is-in-view + .accordion-section { + margin-top: 15px; +} + +#customize-controls .customize-info.is-sticky, +#customize-controls .customize-section-title.is-sticky { + position: fixed; + top: 46px; +} + +#customize-controls .customize-info .accordion-section-title { + background: #fff; + color: #50575e; + border-right: none; + border-left: none; + border-bottom: none; + cursor: default; +} + +#customize-controls .customize-info.open .accordion-section-title:after, +#customize-controls .customize-info .accordion-section-title:hover:after, +#customize-controls .customize-info .accordion-section-title:focus:after { + color: #2c3338; +} + +#customize-controls .customize-info .accordion-section-title:after { + display: none; +} + +#customize-controls .customize-info .preview-notice { + font-size: 13px; + line-height: 1.9; +} + +#customize-controls .customize-pane-child .customize-section-title h3, +#customize-controls .customize-pane-child h3.customize-section-title, +#customize-outer-theme-controls .customize-pane-child .customize-section-title h3, +#customize-outer-theme-controls .customize-pane-child h3.customize-section-title, +#customize-controls .customize-info .panel-title { + font-size: 20px; + font-weight: 200; + line-height: 26px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +#customize-controls .customize-section-title span.customize-action { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +#customize-controls .customize-info .customize-help-toggle { + position: absolute; + top: 4px; + left: 1px; + padding: 20px 10px 10px 20px; + width: 20px; + height: 20px; + cursor: pointer; + box-shadow: none; + -webkit-appearance: none; + background: transparent; + color: #50575e; + border: none; +} + +#customize-controls .customize-info .customize-help-toggle:before { + position: absolute; + top: 5px; + right: 6px; +} + +#customize-controls .customize-info.open .customize-help-toggle, +#customize-controls .customize-info .customize-help-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:hover { + color: #2271b1; +} + +#customize-controls .customize-info .customize-panel-description, +#customize-controls .customize-info .customize-section-description, +#customize-outer-theme-controls .customize-info .customize-section-description, +#customize-controls .no-widget-areas-rendered-notice { + color: #50575e; + display: none; + background: #fff; + padding: 12px 15px; + border-top: 1px solid #dcdcde; +} + +#customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { + border-top: none; +} +.no-widget-areas-rendered-notice { + font-style: italic; +} +.no-widget-areas-rendered-notice p:first-child { + margin-top: 0; +} +.no-widget-areas-rendered-notice p:last-child { + margin-bottom: 0; +} + +#customize-controls .customize-info .customize-section-description { + margin-bottom: 15px; +} + +#customize-controls .customize-info .customize-panel-description p:first-child, +#customize-controls .customize-info .customize-section-description p:first-child { + margin-top: 0; +} + +#customize-controls .customize-info .customize-panel-description p:last-child, +#customize-controls .customize-info .customize-section-description p:last-child { + margin-bottom: 0; +} + +#customize-controls .current-panel .control-section > h3.accordion-section-title { + padding-left: 30px; +} + +#customize-theme-controls .control-section, +#customize-outer-theme-controls .control-section { + border: none; +} + +#customize-theme-controls .accordion-section-title, +#customize-outer-theme-controls .accordion-section-title { + color: #50575e; + background-color: #fff; + border-bottom: 1px solid #dcdcde; + border-right: 4px solid #fff; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + #customize-theme-controls .accordion-section-title, + #customize-outer-theme-controls .accordion-section-title { + transition: none; + } +} + +#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { + color: #50575e; + background-color: #fff; + border-right: 4px solid #fff; +} + +#customize-theme-controls .accordion-section-title:after, +#customize-outer-theme-controls .accordion-section-title:after { + content: "\f341"; + color: #a7aaad; +} + +#customize-theme-controls .accordion-section-content, +#customize-outer-theme-controls .accordion-section-content { + color: #50575e; + background: transparent; +} + +#customize-controls .control-section:hover > .accordion-section-title, +#customize-controls .control-section .accordion-section-title:hover, +#customize-controls .control-section.open .accordion-section-title, +#customize-controls .control-section .accordion-section-title:focus { + color: #2271b1; + background: #f6f7f7; + border-right-color: #2271b1; +} + +#accordion-section-themes + .control-section { + border-top: 1px solid #dcdcde; +} + +.js .control-section:hover .accordion-section-title, +.js .control-section .accordion-section-title:hover, +.js .control-section.open .accordion-section-title, +.js .control-section .accordion-section-title:focus { + background: #f6f7f7; +} + +#customize-theme-controls .control-section:hover > .accordion-section-title:after, +#customize-theme-controls .control-section .accordion-section-title:hover:after, +#customize-theme-controls .control-section.open .accordion-section-title:after, +#customize-theme-controls .control-section .accordion-section-title:focus:after, +#customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +#customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +#customize-outer-theme-controls .control-section.open .accordion-section-title:after, +#customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #2271b1; +} + +#customize-theme-controls .control-section.open { + border-bottom: 1px solid #f0f0f1; +} + +#customize-theme-controls .control-section.open .accordion-section-title, +#customize-outer-theme-controls .control-section.open .accordion-section-title { + border-bottom-color: #f0f0f1 !important; +} + +#customize-theme-controls .control-section:last-of-type.open, +#customize-theme-controls .control-section:last-of-type > .accordion-section-title { + border-bottom-color: #dcdcde; +} + +#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2), +#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu, +#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title { + border-top: 1px solid #dcdcde; +} + +#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu + .control-section-nav_menu { + border-top: none; +} + +#customize-theme-controls > ul { + margin: 0; +} + +#customize-theme-controls .accordion-section-content { + position: absolute; + top: 0; + right: 100%; + width: 100%; + margin: 0; + padding: 12px; + box-sizing: border-box; +} + +#customize-info, +#customize-theme-controls .customize-pane-parent, +#customize-theme-controls .customize-pane-child { + overflow: visible; + width: 100%; + margin: 0; + padding: 0; + box-sizing: border-box; + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ +} + +@media (prefers-reduced-motion: reduce) { + #customize-info, + #customize-theme-controls .customize-pane-parent, + #customize-theme-controls .customize-pane-child { + transition: none; + } +} + +#customize-theme-controls .customize-pane-child.skip-transition { + transition: none; +} + +#customize-info, +#customize-theme-controls .customize-pane-parent { + position: relative; + visibility: visible; + height: auto; + max-height: none; + overflow: auto; + transform: none; +} + +#customize-theme-controls .customize-pane-child { + position: absolute; + top: 0; + right: 0; + visibility: hidden; + height: 0; + max-height: none; + overflow: hidden; + transform: translateX(-100%); +} + +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel { + transform: none; +} + +.section-open #customize-theme-controls .customize-pane-parent, +.in-sub-panel #customize-theme-controls .customize-pane-parent, +.section-open #customize-info, +.in-sub-panel #customize-info, +.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel { + visibility: hidden; + height: 0; + overflow: hidden; + transform: translateX(100%); +} + +.section-open #customize-theme-controls .customize-pane-parent.busy, +.in-sub-panel #customize-theme-controls .customize-pane-parent.busy, +.section-open #customize-info.busy, +.in-sub-panel #customize-info.busy, +.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.busy { + visibility: visible; + height: auto; + overflow: auto; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content, +#customize-theme-controls .customize-pane-child.accordion-sub-container { + display: block; + overflow-x: hidden; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content { + padding: 12px; +} + +#customize-theme-controls .customize-pane-child.menu li { + position: static; +} + +.customize-section-description-container, +.control-section-nav_menu .customize-section-description-container, +.control-section-new_menu .customize-section-description-container { + margin-bottom: 15px; +} + +.control-section-nav_menu .customize-control, +.control-section-new_menu .customize-control { + /* Override default `margin-bottom` for `.customize-control` */ + margin-bottom: 0; +} + +.customize-section-title { + margin: -12px -12px 0; + border-bottom: 1px solid #dcdcde; + background: #fff; +} + +div.customize-section-description { + margin-top: 22px; +} + +.customize-info div.customize-section-description { + margin-top: 0; +} + +div.customize-section-description p:first-child { + margin-top: 0; +} + +div.customize-section-description p:last-child { + margin-bottom: 0; +} + +#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { + border-bottom: 1px solid #dcdcde; + padding: 12px; +} + +.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { + padding: 12px 12px 13px; +} + +.customize-section-title h3, +h3.customize-section-title { + padding: 10px 14px 12px 10px; + margin: 0; + line-height: 21px; + color: #50575e; +} + +.accordion-sub-container.control-panel-content { + display: none; + position: absolute; + top: 0; + width: 100%; +} + +.accordion-sub-container.control-panel-content.busy { + display: block; +} + +.current-panel .accordion-sub-container.control-panel-content { + width: 100%; +} + +.customize-controls-close { + display: block; + position: absolute; + top: 0; + right: 0; + width: 45px; + height: 41px; + padding: 0 0 0 2px; + background: #f0f0f1; + border: none; + border-top: 4px solid #f0f0f1; + border-left: 1px solid #dcdcde; + color: #3c434a; + text-align: right; + cursor: pointer; + transition: + color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + box-sizing: content-box; +} + +.customize-panel-back, +.customize-section-back { + display: block; + float: right; + width: 48px; + height: 71px; + padding: 0 0 0 24px; + margin: 0; + background: #fff; + border: none; + border-left: 1px solid #dcdcde; + border-right: 4px solid #fff; + box-shadow: none; + cursor: pointer; + transition: + color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; +} + +.customize-section-back { + height: 74px; +} + +.ios .customize-panel-back { + display: none; +} + +.ios .expanded.in-sub-panel .customize-panel-back { + display: block; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title { + margin-right: 48px; + border-right: none; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title:hover, +#customize-controls .cannot-expand:hover .accordion-section-title { + background: #fff; + color: #50575e; + border-right-color: #fff; +} + +.customize-controls-close:focus, +.customize-controls-close:hover, +.customize-controls-preview-toggle:focus, +.customize-controls-preview-toggle:hover { + background: #fff; + color: #2271b1; + border-top-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#customize-theme-controls .accordion-section-title:focus .customize-action { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: 1px; +} + +.customize-panel-back:hover, +.customize-panel-back:focus, +.customize-section-back:hover, +.customize-section-back:focus { + color: #2271b1; + background: #f6f7f7; + border-right-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.customize-controls-close:before { + font: normal 22px/45px dashicons; + content: "\f335"; + position: relative; + top: -3px; + right: 13px; +} + +.customize-panel-back:before, +.customize-section-back:before { + font: normal 20px/72px dashicons; + content: "\f345"; + position: relative; + right: 9px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + background-color: #f0f0f1; + transition: padding ease-in-out .18s; +} + +.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header { + padding-right: 62px; +} + +p.customize-section-description { + font-style: normal; + margin-top: 22px; + margin-bottom: 0; +} + +.customize-section-description ul { + margin-right: 1em; +} + +.customize-section-description ul > li { + list-style: disc; +} + +.section-description-buttons { + text-align: left; +} + +.customize-control { + width: 100%; + float: right; + clear: both; + margin-bottom: 12px; +} + +.customize-control input[type="text"], +.customize-control input[type="password"], +.customize-control input[type="email"], +.customize-control input[type="number"], +.customize-control input[type="search"], +.customize-control input[type="tel"], +.customize-control input[type="url"], +.customize-control input[type="range"] { + width: 100%; + margin: 0; +} + +.customize-control-hidden { + margin: 0; +} + +.customize-control-textarea textarea { + width: 100%; + resize: vertical; +} + +.customize-control select { + width: 100%; +} + +.customize-control select[multiple] { + height: auto; +} + +.customize-control-title { + display: block; + font-size: 14px; + line-height: 1.75; + font-weight: 600; + margin-bottom: 4px; +} + +.customize-control-description { + display: block; + font-style: italic; + line-height: 1.4; + margin-top: 0; + margin-bottom: 5px; +} + +.customize-section-description a.external-link:after { + font: 16px/11px dashicons; + content: "\f504"; + top: 3px; + position: relative; + padding-right: 3px; + display: inline-block; + text-decoration: none; +} + +.customize-control-color .color-picker, +.customize-control-upload div { + line-height: 28px; +} + +.customize-control .customize-inside-control-row { + line-height: 1.6; + display: block; + margin-right: 24px; + padding-top: 6px; + padding-bottom: 6px; +} + +.customize-control-radio input, +.customize-control-checkbox input, +.customize-control-nav_menu_auto_add input { + margin-left: 4px; + margin-right: -24px; +} + +.customize-control-radio { + padding: 5px 0 10px; +} + +.customize-control-radio .customize-control-title { + margin-bottom: 0; + line-height: 1.6; +} + +.customize-control-radio .customize-control-title + .customize-control-description { + margin-top: 7px; +} + +.customize-control-radio label, +.customize-control-checkbox label { + vertical-align: top; +} + +.customize-control .attachment-thumb.type-icon { + float: right; + margin: 10px; + width: auto; +} + +.customize-control .attachment-title { + font-weight: 600; + margin: 0; + padding: 5px 10px; +} + +.customize-control .attachment-meta { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0; + padding: 0 10px; +} + +.customize-control .attachment-meta-title { + padding-top: 7px; +} + +/* Remove descender space. */ +.customize-control .thumbnail-image, +.customize-control-header .current, +.customize-control .wp-media-wrapper.wp-video { + line-height: 0; +} + +/* Remove descender space. */ +.customize-control-site_icon .favicon-preview .browser-preview { + vertical-align: top; +} + +.customize-control .thumbnail-image img { + cursor: pointer; +} + +#customize-controls .thumbnail-audio .thumbnail { + max-width: 64px; + max-height: 64px; + margin: 10px; + float: right; +} + +#available-menu-items .accordion-section-content .new-content-item, +.customize-control-dropdown-pages .new-content-item { + width: calc(100% - 30px); + padding: 8px 15px; + position: absolute; + bottom: 0; + z-index: 10; + background: #f0f0f1; + display: flex; +} + +.customize-control-dropdown-pages .new-content-item { + width: 100%; + padding: 5px 1px 5px 0; + position: relative; +} + +#available-menu-items .new-content-item .create-item-input, +.customize-control-dropdown-pages .new-content-item .create-item-input { + flex-grow: 10; +} + +#available-menu-items .new-content-item .add-content, +.customize-control-dropdown-pages .new-content-item .add-content { + margin: 2px 6px 2px 0; + flex-grow: 1; +} + +.customize-control-dropdown-pages .new-content-item .create-item-input.invalid { + border: 1px solid #d63638; +} + +.customize-control-dropdown-pages .add-new-toggle { + margin-right: 1px; + font-weight: 600; + line-height: 2.2; +} + +#customize-preview iframe { + width: 100%; + height: 100%; + position: absolute; +} +#customize-preview iframe + iframe { + visibility: hidden; +} + +.wp-full-overlay-sidebar { + background: #f0f0f1; + border-left: 1px solid #dcdcde; +} + + +/** + * Notifications + */ + +#customize-controls .customize-control-notifications-container { /* Scoped to #customize-controls for specificity over notification styles in common.css. */ + margin: 4px 0 8px; + padding: 0; + cursor: default; +} + +#customize-controls .customize-control-widget_form.has-error .widget .widget-top, +.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle { + box-shadow: inset 0 0 0 2px #d63638; + transition: .15s box-shadow linear; +} + +#customize-controls .customize-control-notifications-container li.notice { + list-style: none; + margin: 0 0 6px; + padding: 9px 14px; + overflow: hidden; +} +#customize-controls .customize-control-notifications-container .notice.is-dismissible { + padding-left: 38px; +} + +.customize-control-notifications-container li.notice:last-child { + margin-bottom: 0; +} + +#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container { + margin-top: 0; +} + +#customize-controls .customize-control-widget_form .customize-control-notifications-container { + margin-top: 8px; +} + +.customize-control-text.has-error input { + outline: 2px solid #d63638; +} + +#customize-controls #customize-notifications-area { + position: absolute; + top: 46px; + width: 100%; + border-bottom: 1px solid #dcdcde; + display: block; + padding: 0; + margin: 0; +} + +.wp-full-overlay.collapsed #customize-controls #customize-notifications-area { + display: none !important; +} + +#customize-controls #customize-notifications-area:not(.has-overlay-notifications), +#customize-controls .customize-section-title > .customize-control-notifications-container:not(.has-overlay-notifications), +#customize-controls .panel-meta > .customize-control-notifications-container:not(.has-overlay-notifications) { + max-height: 210px; + overflow-x: hidden; + overflow-y: auto; +} + +#customize-controls #customize-notifications-area > ul, +#customize-controls #customize-notifications-area .notice, +#customize-controls .panel-meta > .customize-control-notifications-container, +#customize-controls .panel-meta > .customize-control-notifications-container .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice { + margin: 0; +} +#customize-controls .panel-meta > .customize-control-notifications-container, +#customize-controls .customize-section-title > .customize-control-notifications-container { + border-top: 1px solid #dcdcde; +} +#customize-controls #customize-notifications-area .notice, +#customize-controls .panel-meta > .customize-control-notifications-container .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice { + padding: 9px 14px; +} +#customize-controls #customize-notifications-area .notice.is-dismissible, +#customize-controls .panel-meta > .customize-control-notifications-container .notice.is-dismissible, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice.is-dismissible { + padding-left: 38px; +} +#customize-controls #customize-notifications-area .notice + .notice, +#customize-controls .panel-meta > .customize-control-notifications-container .notice + .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice + .notice { + margin-top: 1px; +} + +@keyframes customize-fade-in { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +#customize-controls .notice.notification-overlay, +#customize-controls #customize-notifications-area .notice.notification-overlay { + margin: 0; + border-right: 0; /* @todo Appropriate styles could be added for notice-error, notice-warning, notice-success, etc */ +} + +#customize-controls .customize-control-notifications-container.has-overlay-notifications { + animation: customize-fade-in 0.5s; + z-index: 30; +} + +/* Note: Styles for this are also defined in themes.css */ +#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message { + clear: both; + color: #1d2327; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 2em 0; + text-align: center; + width: 100%; + display: block; + top: 50%; + position: relative; +} + +/* Style for custom settings */ + +/** + * Static front page + */ + +#customize-control-show_on_front.has-error { + margin-bottom: 0; +} +#customize-control-show_on_front.has-error .customize-control-notifications-container { + margin-top: 12px; +} + +/** + * Dropdowns + */ + +.accordion-section .dropdown { + float: right; + display: block; + position: relative; + cursor: pointer; +} + +.accordion-section .dropdown-content { + overflow: hidden; + float: right; + min-width: 30px; + height: 16px; + line-height: 16px; + margin-left: 16px; + padding: 4px 5px; + border: 2px solid #f0f0f1; + -webkit-user-select: none; + user-select: none; +} + +/* @todo maybe no more used? */ +.customize-control .dropdown-arrow { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 20px; + background: #f0f0f1; +} + +.customize-control .dropdown-arrow:after { + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: block; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #2c3338; +} + +.customize-control .dropdown-status { + color: #2c3338; + background: #f0f0f1; + display: none; + max-width: 112px; +} + +.customize-control-color .dropdown { + margin-left: 5px; + margin-bottom: 5px; +} + +.customize-control-color .dropdown .dropdown-content { + background-color: #50575e; + border: 1px solid rgba(0, 0, 0, 0.15); +} + +.customize-control-color .dropdown:hover .dropdown-content { + border-color: rgba(0, 0, 0, 0.25); +} + +/** + * iOS can't scroll iframes, + * instead it expands the iframe size to match the size of the content + */ + +.ios .wp-full-overlay { + position: relative; +} + +.ios #customize-controls .wp-full-overlay-sidebar-content { + -webkit-overflow-scrolling: touch; +} + +/* Media controls */ + +.customize-control .actions .button { + margin-top: 12px; +} + +.customize-control-header .actions, +.customize-control-header .uploaded { + margin-bottom: 18px; +} + +.customize-control-header .uploaded button:not(.random), +.customize-control-header .default button:not(.random) { + width: 100%; + padding: 0; + margin: 0; + background: none; + border: none; + color: inherit; + cursor: pointer; +} + +.customize-control-header button img { + display: block; +} + +.customize-control .attachment-media-view .remove-button, +.customize-control .attachment-media-view .default-button, +.customize-control .attachment-media-view .upload-button, +.customize-control-header button.new, +.customize-control-header button.remove { + width: auto; + height: auto; + white-space: normal; +} + +.customize-control .attachment-media-view .thumbnail, +.customize-control-header .current .container { + overflow: hidden; +} + +.customize-control .attachment-media-view .placeholder, +.customize-control .attachment-media-view .button-add-media, +.customize-control-header .placeholder { + width: 100%; + position: relative; + text-align: center; + cursor: default; + border: 1px dashed #c3c4c7; + box-sizing: border-box; + padding: 9px 0; + line-height: 1.6; +} + +.customize-control .attachment-media-view .button-add-media { + cursor: pointer; + background-color: #f0f0f1; + color: #2c3338; +} + +.customize-control .attachment-media-view .button-add-media:hover { + background-color: #fff; +} + +.customize-control .attachment-media-view .button-add-media:focus { + background-color: #fff; + border-color: #3582c4; + border-style: solid; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.customize-control-header .inner { + display: none; + position: absolute; + width: 100%; + color: #50575e; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.customize-control-header .inner, +.customize-control-header .inner .dashicons { + line-height: 20px; + top: 8px; +} + +.customize-control-header .list .inner, +.customize-control-header .list .inner .dashicons { + top: 9px; +} + +.customize-control-header .header-view { + position: relative; + width: 100%; + margin-bottom: 12px; +} + +.customize-control-header .header-view:last-child { + margin-bottom: 0; +} + +/* Convoluted, but 'outline' support isn't good enough yet */ +.customize-control-header .header-view:after { + border: 0; +} + +.customize-control-header .header-view.selected .choice:focus { + outline: none; +} + +.customize-control-header .header-view.selected:after { + content: ""; + position: absolute; + height: auto; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 4px solid #72aee6; + border-radius: 2px; +} + +.customize-control-header .header-view.button.selected { + border: 0; +} + +/* Header control: overlay "close" button */ + +.customize-control-header .uploaded .header-view .close { + font-size: 20px; + color: #fff; + background: #50575e; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 10px; + right: -999px; + z-index: 1; + width: 26px; + height: 26px; + cursor: pointer; +} + +.customize-control-header .header-view:hover .close, +.customize-control-header .header-view .close:focus { + right: auto; + left: 10px; +} + +.customize-control-header .header-view .close:focus { + outline: 1px solid #4f94d4; +} + +/* Header control: randomiz(s)er */ + +.customize-control-header .random.placeholder { + cursor: pointer; + border-radius: 2px; + height: 40px; +} + +.customize-control-header button.random { + width: 100%; + height: auto; + min-height: 40px; + white-space: normal; +} + +.customize-control-header button.random .dice { + margin-top: 4px; +} + +.customize-control-header .placeholder:hover .dice, +.customize-control-header .header-view:hover > button.random .dice { + animation: dice-color-change 3s infinite; +} + +.button-see-me { + animation: bounce .7s 1; + transform-origin: center bottom; +} + +@keyframes bounce { + from, 20%, 53%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + transform: translate3d(0,0,0); + } + + 40%, 43% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -12px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -6px, 0); + } + + 90% { + transform: translate3d(0,-1px,0); + } +} + +.customize-control-header .choice { + position: relative; + display: block; + margin-bottom: 9px; +} + +.customize-control-header .choice:focus { + outline: none; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 3px 1px rgba(79, 148, 212, 0.8); +} + +.customize-control-header .uploaded div:last-child > .choice { + margin-bottom: 0; +} + +.customize-control .attachment-media-view .thumbnail-image img, +.customize-control-header img { + max-width: 100%; +} + +.customize-control .attachment-media-view .remove-button, +.customize-control .attachment-media-view .default-button, +.customize-control-header .remove { + margin-left: 8px; +} + +/* Background position control */ +.customize-control-background_position .background-position-control .button-group { + display: block; +} + +/** + * Code Editor Control and Custom CSS Section + * + * Modifications to the Section Container to make the textarea full-width and + * full-height, if the control is the only control in the section. + */ + +.customize-control-code_editor textarea { + width: 100%; + font-family: Consolas, Monaco, monospace; + font-size: 12px; + padding: 6px 8px; + -o-tab-size: 2; + tab-size: 2; +} +.customize-control-code_editor textarea, +.customize-control-code_editor .CodeMirror { + height: 14em; +} + +#customize-controls .customize-section-description-container.section-meta.customize-info { + border-bottom: none; +} + +#sub-accordion-section-custom_css .customize-control-notifications-container { + margin-bottom: 15px; +} + +#customize-control-custom_css textarea { + display: block; + height: 500px; +} + +.customize-section-description-container + #customize-control-custom_css .customize-control-title { + margin-right: 12px; +} + +.customize-section-description-container + #customize-control-custom_css:last-child textarea { + border-left: 0; + border-right: 0; + height: calc( 100vh - 185px ); + resize: none; +} + +.customize-section-description-container + #customize-control-custom_css:last-child { + margin-right: -12px; + width: 299px; + width: calc( 100% + 24px ); + margin-bottom: -12px; +} + +.customize-section-description-container + #customize-control-custom_css:last-child .CodeMirror { + height: calc( 100vh - 185px ); +} + +.CodeMirror-lint-tooltip, +.CodeMirror-hints { + z-index: 500000 !important; +} + +.customize-section-description-container + #customize-control-custom_css:last-child .customize-control-notifications-container { + margin-right: 12px; + margin-left: 12px; +} + +.theme-browser .theme.active .theme-actions, +.wp-customizer .theme-browser .theme .theme-actions { + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); +} + +@media screen and (max-width: 640px) { + .customize-section-description-container + #customize-control-custom_css:last-child { + margin-left: 0; + } + + .customize-section-description-container + #customize-control-custom_css:last-child textarea { + height: calc( 100vh - 140px ); + } +} + +/** + * Themes + */ + +#customize-theme-controls .control-panel-themes { + border-bottom: none; +} + +#customize-theme-controls .control-panel-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-panel-themes > .accordion-section-title { + cursor: default; + background: #fff; + color: #50575e; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; + border-right: none; + border-left: none; + margin: 0 0 15px; + padding-left: 100px; /* Space for the button */ +} + +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child { + border-top: 0; +} + +#customize-theme-controls .control-section-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes > .accordion-section-title { + margin: 0 0 15px; +} + +#customize-controls .customize-themes-panel .accordion-section-title:hover, +#customize-controls .customize-themes-panel .accordion-section-title { + margin: 15px -8px; +} + +#customize-controls .control-section-themes .accordion-section-title, +#customize-controls .customize-themes-panel .accordion-section-title { + padding-left: 100px; /* Space for the button */ +} + +.control-panel-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action, +#customize-controls .control-section-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action { + font-size: 13px; + display: block; + font-weight: 400; +} + +#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme { + position: absolute; + left: 10px; + top: 50%; + margin-top: -14px; + font-weight: 400; +} + +#customize-notifications-area .notification-message button.switch-to-editor { + display: block; + margin-top: 6px; + font-weight: 400; +} + +#customize-theme-controls .control-panel-themes > .accordion-section-title:after { + display: none; +} + +.control-panel-themes .customize-themes-full-container { + position: fixed; + top: 0; + right: 0; + transition: .18s right ease-in-out; + margin: 0 300px 0 0; + padding: 71px 0 25px; + overflow-y: scroll; + width: calc(100% - 300px); + height: calc(100% - 96px); + background: #f0f0f1; + z-index: 20; +} + +@media (prefers-reduced-motion: reduce) { + .control-panel-themes .customize-themes-full-container { + transition: none; + } +} + +@media screen and (min-width: 1670px) { + .control-panel-themes .customize-themes-full-container { + width: 82%; + left: 0; + right: initial; + } +} + +.modal-open .control-panel-themes .customize-themes-full-container { + overflow-y: visible; +} + +/* Animations for opening the themes panel */ +#customize-save-button-wrapper, +#customize-header-actions .spinner, +#customize-header-actions .customize-controls-preview-toggle { + transition: .18s margin ease-in-out; +} + +#customize-footer-actions, +#customize-footer-actions .collapse-sidebar { + bottom: 0; + transition: .18s bottom ease-in-out; +} + +.in-themes-panel:not(.animating) #customize-header-actions .spinner, +.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle, +.in-themes-panel:not(.animating) #customize-preview, +.in-themes-panel:not(.animating) #customize-footer-actions { + visibility: hidden; +} + +.wp-full-overlay.in-themes-panel { + background: #f0f0f1; /* Prevents a black flash when fading in the panel */ +} + +.in-themes-panel #customize-save-button-wrapper, +.in-themes-panel #customize-header-actions .spinner, +.in-themes-panel #customize-header-actions .customize-controls-preview-toggle { + margin-top: -46px; /* Height of header actions bar */ +} + +.in-themes-panel #customize-footer-actions, +.in-themes-panel #customize-footer-actions .collapse-sidebar { + bottom: -45px; +} + +/* Don't show the theme count while the panel opens, as it's in the wrong place during the animation */ +.in-themes-panel.animating .control-panel-themes .filter-themes-count { + display: none; +} + +.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content { + bottom: 0; +} + +.themes-filter-bar .feature-filter-toggle { + float: left; + margin: 3px 25px 3px 0; +} + +.themes-filter-bar .feature-filter-toggle:before { + content: "\f111"; + margin: 0 0 0 5px; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.themes-filter-bar .feature-filter-toggle.open { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +.themes-filter-bar .feature-filter-toggle .filter-count-filters { + display: none; +} + +.filter-drawer { + box-sizing: border-box; + width: 100%; + position: absolute; + top: 46px; + right: 0; + padding: 25px 25px 25px 0; + border-top: 0; + margin: 0; + background: #f0f0f1; + border-bottom: 1px solid #dcdcde; +} + +.filter-drawer .filter-group { + margin: 0 0 0 25px; + width: calc( (100% - 75px) / 3); + min-width: 200px; + max-width: 320px; +} + +/* Adds a delay before fading in to avoid it "jumping" */ +@keyframes themes-fade-in { + 0% { + opacity: 0; + } + 50% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.control-panel-themes .customize-themes-full-container.animate { + animation: .6s themes-fade-in 1; +} + +.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count { + animation: .6s themes-fade-in 1; +} + +.control-panel-themes .filter-themes-count { + position: relative; + float: left; + line-height: 2.6; +} + +.control-panel-themes .filter-themes-count .themes-displayed { + font-weight: 600; + color: #50575e; +} + +.customize-themes-notifications { + margin: 0; +} + +.control-panel-themes .customize-themes-notifications .notice { + margin: 0 0 25px; +} + +.customize-themes-full-container .customize-themes-section { + display: none !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */ + overflow: hidden; +} + +.customize-themes-full-container .customize-themes-section.current-section { + display: list-item !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */ +} + +.control-section .customize-section-text-before { + padding: 0 15px 8px 0; + margin: 15px 0 0; + line-height: 16px; + border-bottom: 1px solid #dcdcde; + color: #50575e; +} + +.control-panel-themes .customize-themes-section-title { + width: 100%; + background: #fff; + box-shadow: none; + outline: none; + border-top: none; + border-bottom: 1px solid #dcdcde; + border-right: 4px solid #fff; + border-left: none; + cursor: pointer; + padding: 10px 15px; + position: relative; + text-align: right; + font-size: 14px; + font-weight: 600; + color: #50575e; + text-shadow: none; +} + +.control-panel-themes #accordion-section-installed_themes { + border-top: 1px solid #dcdcde; +} + +.control-panel-themes .theme-section { + margin: 0; + position: relative; +} + +.control-panel-themes .customize-themes-section-title:focus, +.control-panel-themes .customize-themes-section-title:hover { + border-right-color: #2271b1; + color: #2271b1; + background: #f6f7f7; +} + +.customize-themes-section-title:not(.selected):after { + content: ""; + display: block; + position: absolute; + top: 9px; + left: 15px; + width: 18px; + height: 18px; + border-radius: 100%; + border: 1px solid #c3c4c7; + background: #fff; +} + +.control-panel-themes .theme-section .customize-themes-section-title.selected:after { + content: "\f147"; + font: 16px/1 dashicons; + box-sizing: border-box; + width: 20px; + height: 20px; + padding: 3px 1px 1px 3px; /* Re-align the icon to the smaller grid */ + border-radius: 100%; + position: absolute; + top: 9px; + left: 15px; + background: #2271b1; + color: #fff; +} + +.control-panel-themes .customize-themes-section-title.selected { + color: #2271b1; +} + +#customize-theme-controls .themes.accordion-section-content { + position: relative; + right: 0; + padding: 0; + width: 100%; +} + +.loading .customize-themes-section .spinner { + display: block; + visibility: visible; + position: relative; + clear: both; + width: 20px; + height: 20px; + right: calc(50% - 10px); + float: none; + margin-top: 50px; +} + +.customize-themes-section .no-themes, +.customize-themes-section .no-themes-local { + display: none; +} + +.themes-section-installed_themes .theme .notice-success:not(.updated-message) { + display: none; /* Hide "installed" notice on installed themes tab. */ +} + +.customize-control-theme .theme { + width: 100%; + margin: 0; + border: 1px solid #dcdcde; + background: #fff; +} + +.customize-control-theme .theme .theme-name, .customize-control-theme .theme .theme-actions { + background: #fff; + border: none; +} + +.customize-control.customize-control-theme { /* override most properties on .customize-control */ + box-sizing: border-box; + width: 25%; + max-width: 600px; /* Max. screenshot size / 2 */ + margin: 0 0 25px 25px; + padding: 0; + clear: none; +} + +/* 5 columns above 2100px */ +@media screen and (min-width: 2101px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 125px ) / 5 - 1px ); /* 1px offset accounts for browser rounding, typical all grids */ + } +} + +/* 4 columns up to 2100px */ +@media screen and (min-width: 1601px) and (max-width: 2100px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 100px ) / 4 - 1px ); + } +} + +/* 3 columns up to 1600px */ +@media screen and (min-width: 1201px) and (max-width: 1600px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 75px ) / 3 - 1px ); + } +} + +/* 2 columns up to 1200px */ +@media screen and (min-width: 851px) and (max-width: 1200px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 50px ) / 2 - 1px ); + + } +} + +/* 1 column up to 850 px */ +@media screen and (max-width: 850px) { + .customize-control.customize-control-theme { + width: 100%; + } +} + +.wp-customizer .theme-browser .themes { + padding: 0 25px 25px 0; + transition: .18s margin-top linear; +} + +.wp-customizer .theme-browser .theme .theme-actions { + opacity: 1; +} + +#customize-controls h3.theme-name { + font-size: 15px; +} + +#customize-controls .theme-overlay .theme-name { + font-size: 32px; +} + +.customize-preview-header.themes-filter-bar { + position: fixed; + top: 0; + right: 300px; + width: calc(100% - 300px); + height: 46px; + background: #f0f0f1; + z-index: 10; + padding: 6px 25px; + box-sizing: border-box; + border-bottom: 1px solid #dcdcde; +} + +@media screen and (min-width: 1670px) { + .customize-preview-header.themes-filter-bar { + width: 82%; + left: 0; + right: initial; + } +} + +.themes-filter-bar .themes-filter-container { + margin: 0; + padding: 0; +} + +.themes-filter-bar .wp-filter-search { + line-height: 1.8; + padding: 6px 30px 6px 10px; + max-width: 100%; + width: 40%; + min-width: 300px; + position: absolute; + top: 6px; + right: 25px; + height: 32px; + margin: 1px 0; +} + +/* Unstick the filter bar on short windows/screens. This breakpoint is based on the + current length of .org feature filters assuming translations do not wrap lines. */ +@media screen and (max-height: 540px), screen and (max-width: 1018px) { + .customize-preview-header.themes-filter-bar { + position: relative; + right: 0; + width: 100%; + margin: 0 0 25px; + } + .filter-drawer { + top: 46px; + } + .wp-customizer .theme-browser .themes { + padding: 0 25px 25px 0; + overflow: hidden; + } + + .control-panel-themes .customize-themes-full-container { + margin-top: 0; + padding: 0; + height: 100%; + width: calc(100% - 300px); + } +} + +@media screen and (max-width: 1018px) { + .filter-drawer .filter-group { + width: calc( (100% - 50px) / 2); + } +} + +@media screen and (max-width: 900px) { + .customize-preview-header.themes-filter-bar { + height: 86px; + padding-top: 46px; + } + + .themes-filter-bar .wp-filter-search { + width: calc(100% - 50px); + margin: 0; + min-width: 200px; + } + + .filter-drawer { + top: 86px; + } + + .control-panel-themes .filter-themes-count { + float: right; + } +} + +@media screen and (max-width: 792px) { + .filter-drawer .filter-group { + width: calc( 100% - 25px); + } +} + +.control-panel-themes .customize-themes-mobile-back { + display: none; +} + +/* Mobile - toggle between themes and filters */ +@media screen and (max-width: 600px) { + + .filter-drawer { + top: 132px; + } + + .wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes { + display: block; + float: left; + } + + .control-panel-themes .customize-themes-full-container { + width: 100%; + margin: 0; + padding-top: 46px; + height: calc(100% - 46px); + z-index: 1; + display: none; + } + + .showing-themes .control-panel-themes .customize-themes-full-container { + display: block; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back { + display: block; + position: fixed; + top: 0; + right: 0; + background: #f0f0f1; + color: #3c434a; + border-radius: 0; + box-shadow: none; + border: none; + height: 46px; + width: 100%; + z-index: 10; + text-align: right; + text-shadow: none; + border-bottom: 1px solid #dcdcde; + border-right: 4px solid transparent; + margin: 0; + padding: 0; + font-size: 0; + overflow: hidden; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before { + right: 0; + top: 0; + height: 46px; + width: 26px; + display: block; + line-height: 2.3; + padding: 0 8px; + border-left: 1px solid #dcdcde; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover, + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus { + color: #2271b1; + background: #f6f7f7; + border-right-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; + } + + .showing-themes #customize-header-actions { + display: none; + } + + #customize-controls { + width: 100%; + } +} + +/* Details View */ +.wp-customizer .theme-overlay { + display: none; +} + +.wp-customizer.modal-open .theme-overlay { + position: fixed; + right: 0; + top: 0; + left: 0; + bottom: 0; + z-index: 109; +} + +/* Avoid a z-index war by resetting elements that should be under the overlay. + This is likely required because of the way that sections and panels are positioned. */ +.wp-customizer.modal-open #customize-header-actions, +.wp-customizer.modal-open .control-panel-themes .filter-themes-count, +.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after { + z-index: -1; +} + +.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; +} + +.wp-customizer .theme-overlay .theme-backdrop { + background: rgba(240, 240, 241, 0.75); + position: fixed; + z-index: 110; +} + +.wp-customizer .theme-overlay .star-rating { + float: right; + margin-left: 8px; +} + +.wp-customizer .theme-rating .num-ratings { + line-height: 20px; +} + +.wp-customizer .theme-overlay .theme-wrap { + right: 90px; + left: 90px; + top: 45px; + bottom: 45px; + z-index: 120; +} + +.wp-customizer .theme-overlay .theme-actions { + text-align: left; /* Because there're only one or two actions, match the UI pattern of media modals and right-align the action. */ + padding: 10px 25px; + background: #f0f0f1; + border-top: 1px solid #dcdcde; +} + +.wp-customizer .theme-overlay .theme-actions .theme-install.preview { + margin-right: 8px; +} + +.control-panel-themes .theme-actions .delete-theme { + right: 15px; /* these override themes.css on mobile */ + left: auto; + bottom: auto; + position: absolute; +} + +.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */ +} + +.wp-customizer .theme-header { + background: #f0f0f1; +} + +.wp-customizer .theme-overlay .theme-header button, +.wp-customizer .theme-overlay .theme-header .close:before { + color: #3c434a; +} + +.wp-customizer .theme-overlay .theme-header .close:focus, +.wp-customizer .theme-overlay .theme-header .close:hover, +.wp-customizer .theme-overlay .theme-header .right:focus, +.wp-customizer .theme-overlay .theme-header .right:hover, +.wp-customizer .theme-overlay .theme-header .left:focus, +.wp-customizer .theme-overlay .theme-header .left:hover { + background: #fff; + border-bottom: 4px solid #2271b1; + color: #2271b1; +} + +.wp-customizer .theme-overlay .theme-header .close:focus:before, +.wp-customizer .theme-overlay .theme-header .close:hover:before { + color: #2271b1; +} + +.wp-customizer .theme-overlay .theme-header button.disabled, +.wp-customizer .theme-overlay .theme-header button.disabled:hover, +.wp-customizer .theme-overlay .theme-header button.disabled:focus { + border-bottom: none; + background: transparent; + color: #c3c4c7; +} + +/* Small Screens */ +@media (max-width: 850px), (max-height: 472px) { + .wp-customizer .theme-overlay .theme-wrap { + right: 0; + left: 0; + top: 0; + bottom: 0; + } + + .wp-customizer .theme-browser .themes { + padding-left: 25px; + } +} + +/* Handle cheaters. */ +body.cheatin { + font-size: medium; + height: auto; + background: #fff; + border: 1px solid #c3c4c7; + margin: 50px auto 2em; + padding: 1em 2em; + max-width: 700px; + min-width: 0; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +body.cheatin h1 { + border-bottom: 1px solid #dcdcde; + clear: both; + color: #50575e; + font-size: 24px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + margin: 30px 0 0; + padding: 0 0 7px; +} + +body.cheatin p { + font-size: 14px; + line-height: 1.5; + margin: 25px 0 20px; +} + +/** + * Widgets and Menus common styles + */ + +/* higher specificity than .wp-core-ui .button */ +#customize-theme-controls .add-new-widget, +#customize-theme-controls .add-new-menu-item { + cursor: pointer; + float: left; + margin: 0 10px 0 0; + transition: all 0.2s; + -webkit-user-select: none; + user-select: none; + outline: none; +} + +.reordering .add-new-widget, +.reordering .add-new-menu-item { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; /* doesn't work in conjunction with pointer-events */ +} + +.add-new-widget:before, +.add-new-menu-item:before, +#available-menu-items .new-content-item .add-content:before { + content: "\f132"; + display: inline-block; + position: relative; + right: -2px; + top: 0; + font: normal 20px/1 dashicons; + vertical-align: middle; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Reordering */ +.reorder-toggle { + float: left; + padding: 5px 8px; + text-decoration: none; + cursor: pointer; + outline: none; +} + +.reorder, +.reordering .reorder-done { + display: block; + padding: 5px 8px; +} + +.reorder-done, +.reordering .reorder { + display: none; +} + +.widget-reorder-nav span, +.menu-item-reorder-nav button { + position: relative; + overflow: hidden; + float: right; + display: block; + width: 33px; /* was 42px for mobile */ + height: 43px; + color: #8c8f94; + text-indent: -9999px; + cursor: pointer; + outline: none; +} + +.menu-item-reorder-nav button { + width: 30px; + height: 40px; + background: transparent; + border: none; + box-shadow: none; +} + +.widget-reorder-nav span:before, +.menu-item-reorder-nav button:before { + display: inline-block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + font: normal 20px/43px dashicons; + text-align: center; + text-indent: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.widget-reorder-nav span:hover, +.widget-reorder-nav span:focus, +.menu-item-reorder-nav button:hover, +.menu-item-reorder-nav button:focus { + color: #1d2327; + background: #f0f0f1; +} + +.move-widget-down:before, +.menus-move-down:before { + content: "\f347"; +} + +.move-widget-up:before, +.menus-move-up:before { + content: "\f343"; +} + +#customize-theme-controls .first-widget .move-widget-up, +#customize-theme-controls .last-widget .move-widget-down, +.move-up-disabled .menus-move-up, +.move-down-disabled .menus-move-down, +.move-right-disabled .menus-move-right, +.move-left-disabled .menus-move-left { + color: #dcdcde; + background-color: #fff; + cursor: default; + pointer-events: none; +} + +/** + * New widget and Add-menu-items modes and panels + */ + +.wp-full-overlay-main { + left: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */ + width: 100%; +} + +body.adding-widget .add-new-widget, +body.adding-widget .add-new-widget:hover, +.adding-menu-items .add-new-menu-item, +.adding-menu-items .add-new-menu-item:hover, +.add-menu-toggle.open, +.add-menu-toggle.open:hover { + background: #f0f0f1; + border-color: #8c8f94; + color: #2c3338; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +body.adding-widget .add-new-widget:before, +.adding-menu-items .add-new-menu-item:before, +#accordion-section-add_menu .add-new-menu-item.open:before { + transform: rotate(-45deg); +} + +#available-widgets, +#available-menu-items { + position: absolute; + top: 0; + bottom: 0; + right: -301px; + visibility: hidden; + overflow-x: hidden; + overflow-y: auto; + width: 300px; + margin: 0; + z-index: 4; + background: #f0f0f1; + transition: right .18s; + border-left: 1px solid #dcdcde; +} + +#available-widgets .customize-section-title, +#available-menu-items .customize-section-title { + display: none; +} + +#available-widgets-list { + top: 60px; + position: absolute; + overflow: auto; + bottom: 0; + width: 100%; + border-top: 1px solid #dcdcde; +} + +.no-widgets-found #available-widgets-list { + border-top: none; +} + +#available-widgets-filter { + position: fixed; + top: 0; + z-index: 1; + width: 300px; + background: #f0f0f1; +} + +/* search field container */ +#available-widgets-filter, +#available-menu-items-search .accordion-section-title { + padding: 13px 15px; + box-sizing: border-box; +} + +#available-widgets-filter input, +#available-menu-items-search input { + width: 100%; + min-height: 32px; + margin: 1px 0; + padding: 0 30px; +} + +#available-widgets-filter input::-ms-clear, +#available-menu-items-search input::-ms-clear { + display: none; /* remove the "x" in IE, which conflicts with the "x" icon on button.clear-results */ +} + +#available-menu-items-search .search-icon, +#available-widgets-filter .search-icon { + display: block; + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + right: 16px; + width: 30px; + height: 30px; + line-height: 2.1; + text-align: center; + color: #646970; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results { + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + left: 16px; + width: 30px; + height: 30px; + padding: 0; + border: 0; + cursor: pointer; + background: none; + color: #d63638; + text-decoration: none; + outline: 0; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-widgets-filter .clear-results.is-visible, +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-widgets-filter .clear-results:before, +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-widgets-filter .clear-results:hover, +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #d63638; +} + +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +#available-menu-items-search .search-icon:after, +#available-widgets-filter .search-icon:after, +.themes-filter-bar .search-icon:after { + content: "\f179"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.themes-filter-bar .search-icon { + position: absolute; + top: 7px; + right: 26px; + z-index: 1; + color: #646970; + height: 30px; + width: 30px; + line-height: 2; + text-align: center; +} + +.no-widgets-found-message { + display: none; + margin: 0; + padding: 0 15px; + line-height: inherit; +} + +.no-widgets-found .no-widgets-found-message { + display: block; +} + +#available-widgets .widget-top, +#available-widgets .widget-top:hover, +#available-menu-items .item-top, +#available-menu-items .item-top:hover { + border: none; + background: transparent; + box-shadow: none; +} + +#available-widgets .widget-tpl, +#available-menu-items .item-tpl { + position: relative; + padding: 15px 60px 15px 15px; + background: #fff; + border-bottom: 1px solid #dcdcde; + border-right: 4px solid #fff; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + cursor: pointer; + display: none; +} + +#available-widgets .widget, +#available-menu-items .item { + position: static; +} + + +/* Responsive */ +.customize-controls-preview-toggle { + display: none; +} + +@media only screen and (max-width: 782px) { + .wp-customizer .theme:not(.active):hover .theme-actions, + .wp-customizer .theme:not(.active):focus .theme-actions { + display: block; + } + + .wp-customizer .theme-browser .theme.active .theme-name span { + display: inline; + } + + .customize-control-header button.random .dice { + margin-top: 0; + } + + .customize-control-radio .customize-inside-control-row, + .customize-control-checkbox .customize-inside-control-row, + .customize-control-nav_menu_auto_add .customize-inside-control-row { + margin-right: 32px; + } + + .customize-control-radio input, + .customize-control-checkbox input, + .customize-control-nav_menu_auto_add input { + margin-right: -32px; + } + + .customize-control input[type="radio"] + label + br, + .customize-control input[type="checkbox"] + label + br { + line-height: 2.5; /* For widgets checkboxes */ + } + + .customize-control .date-time-fields select { + height: 39px; + } + + .date-time-fields .date-input.month { + width: 79px; + } + + .date-time-fields .date-input.day, + .date-time-fields .date-input.hour, + .date-time-fields .date-input.minute { + width: 55px; + } + + .date-time-fields .date-input.year { + width: 80px; + } + + #customize-control-changeset_preview_link a { + bottom: 16px; + } + + .preview-link-wrapper .customize-copy-preview-link.preview-control-element.button { + bottom: 10px; + } + + .media-widget-control .media-widget-buttons .button.edit-media, + .media-widget-control .media-widget-buttons .button.change-media, + .media-widget-control .media-widget-buttons .button.select-media { + margin-top: 12px; + } + + .wp-core-ui .themes-filter-bar .feature-filter-toggle { + margin: 3px 25px 3px 0; + } +} + +@media screen and (max-width: 1200px) { + .outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, + .adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, + .adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { + right: 67%; + } +} + +@media screen and (max-width: 640px) { + + /* when the sidebar is collapsed and switching to responsive view, + bring it back see ticket #35220 */ + .wp-full-overlay.collapsed #customize-controls { + margin-right: 0; + } + + .wp-full-overlay-sidebar .wp-full-overlay-sidebar-content { + bottom: 0; + } + + .customize-controls-preview-toggle { + display: block; + position: absolute; + top: 0; + right: 48px; + line-height: 2.6; + font-size: 14px; + padding: 0 12px 4px; + margin: 0; + height: 45px; + background: #f0f0f1; + border: 0; + border-left: 1px solid #dcdcde; + border-top: 4px solid #f0f0f1; + color: #50575e; + cursor: pointer; + transition: color .1s ease-in-out, background .1s ease-in-out; + } + + #customize-footer-actions, + /*#customize-preview,*/ + .customize-controls-preview-toggle .controls, + .preview-only .wp-full-overlay-sidebar-content, + .preview-only .customize-controls-preview-toggle .preview { + display: none; + } + + .preview-only #customize-save-button-wrapper { + margin-top: -46px; + } + + .customize-controls-preview-toggle .preview:before, + .customize-controls-preview-toggle .controls:before { + font: normal 20px/1 dashicons; + content: "\f177"; + position: relative; + top: 4px; + margin-left: 6px; + } + + .customize-controls-preview-toggle .controls:before { + content: "\f540"; + } + + .preview-only #customize-controls { + height: 45px; + } + + .preview-only #customize-preview, + .preview-only .customize-controls-preview-toggle .controls { + display: block; + } + + .wp-core-ui.wp-customizer .button { + min-height: 30px; + padding: 0 14px; + line-height: 2; + font-size: 14px; + vertical-align: middle; + } + + #customize-control-changeset_status .customize-inside-control-row { + padding-top: 15px; + } + + body.adding-widget div#available-widgets, + body.adding-menu-items div#available-menu-items, + body.outer-section-open div#customize-sidebar-outer-content { + width: 100%; + } + + #available-widgets .customize-section-title, + #available-menu-items .customize-section-title { + display: block; + margin: 0; + } + + #available-widgets .customize-section-back, + #available-menu-items .customize-section-back { + height: 69px; + } + + #available-widgets .customize-section-title h3, + #available-menu-items .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 14px 12px 10px; + margin: 0; + line-height: 24px; + color: #50575e; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-widgets .customize-section-title .customize-action, + #available-menu-items .customize-section-title .customize-action { + font-size: 13px; + display: block; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-widgets-filter { + position: relative; + width: 100%; + height: auto; + } + + #available-widgets-list { + top: 130px; + } + + #available-menu-items-search .clear-results, + #available-menu-items-search .search-icon { + top: 85px; /* 70 section title height + 13 container padding +1 input margin +1 input border */ + } + + .reorder, + .reordering .reorder-done { + padding: 8px; + } + + .wp-core-ui .themes-filter-bar .feature-filter-toggle { + margin: 0; + } +} + +@media screen and (max-width: 600px) { + .wp-full-overlay.expanded { + margin-right: 0; + } + + body.adding-widget div#available-widgets, + body.adding-menu-items div#available-menu-items, + body.outer-section-open div#customize-sidebar-outer-content { + top: 46px; + z-index: 10; + } + + body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content { + right: -100%; + } + + body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + right: 0; + } +} diff --git a/tools/storybook/wordpress/css/customize-controls-rtl.min.css b/tools/storybook/wordpress/css/customize-controls-rtl.min.css new file mode 100644 index 00000000000..5c42ccc0601 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-controls-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-right:auto;margin-left:auto;max-width:366px;min-height:64px;width:auto;padding:25px 109px 25px 25px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:right;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;right:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-left:10px;margin-top:0}#customize-controls .description{color:#50575e}#customize-save-button-wrapper{float:left;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:right;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}#customize-save-button-wrapper .save.has-next-sibling{border-radius:0 3px 3px 0}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;right:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#f0f0f1;transition:right .18s;border-left:1px solid #dcdcde;border-right:1px solid #dcdcde;height:100%}@media (prefers-reduced-motion:reduce){#customize-sidebar-outer-content{transition:none}}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;right:100%;transition:right .18s}@media (prefers-reduced-motion:reduce){.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{transition:none}}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{right:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{right:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-right:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:3px 0 0 3px;padding-right:0;padding-left:0;box-shadow:none;font-size:14px;width:30px;float:right;transform:none;margin-top:0;line-height:2}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #dcdcde}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#f0f0f1}#customize-controls .customize-info{border:none;border-bottom:1px solid #dcdcde;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #dcdcde;box-sizing:content-box;width:100%;margin-right:-12px;padding-right:12px;padding-left:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-right:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;right:0;top:-2px}#customize-controls .date-input:invalid{border-color:#d63638}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #dcdcde}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-right:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;left:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{right:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{right:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.85714286;border-top:1px solid #dcdcde;border-right:none;border-left:none;text-indent:-999px;color:#fff;min-height:40px}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-left:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:65px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-right:-12px;padding:12px;background:#fff;border-bottom:1px solid #dcdcde;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#50575e;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#2c3338}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:1.9}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;box-shadow:none;-webkit-appearance:none;background:0 0;color:#50575e;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#2271b1}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#50575e;display:none;background:#fff;padding:12px 15px;border-top:1px solid #dcdcde}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#50575e;background-color:#fff;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}@media (prefers-reduced-motion:reduce){#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{transition:none}}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#50575e;background-color:#fff;border-right:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f341";color:#a7aaad}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#50575e;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1}#accordion-section-themes+.control-section{border-top:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f6f7f7}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#2271b1}#customize-theme-controls .control-section.open{border-bottom:1px solid #f0f0f1}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#f0f0f1!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#dcdcde}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #dcdcde}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}@media (prefers-reduced-motion:reduce){#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{transition:none}}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;right:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #dcdcde;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #dcdcde;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 14px 12px 10px;margin:0;line-height:21px;color:#50575e}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:41px;padding:0 0 0 2px;background:#f0f0f1;border:none;border-top:4px solid #f0f0f1;border-left:1px solid #dcdcde;color:#3c434a;text-align:right;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:71px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #dcdcde;border-right:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-right:48px;border-right:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#50575e;border-right-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#2271b1;border-top-color:#2271b1;box-shadow:none;outline:1px solid transparent}#customize-theme-controls .accordion-section-title:focus .customize-action{outline:1px solid transparent;outline-offset:1px}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f345";position:relative;right:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#f0f0f1;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-right:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:left}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=range],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:1.75;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:1.4;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f504";top:3px;position:relative;padding-right:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:1.6;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:1.6}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#f0f0f1;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 1px 5px 0;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 6px 2px 0;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #d63638}.customize-control-dropdown-pages .add-new-toggle{margin-right:1px;font-weight:600;line-height:2.2}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#f0f0f1;border-left:1px solid #dcdcde}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #d63638;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-left:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #d63638}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #dcdcde;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #dcdcde}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-left:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-right:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#1d2327;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:right;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:right;min-width:30px;height:16px;line-height:16px;margin-left:16px;padding:4px 5px;border:2px solid #f0f0f1;-webkit-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;left:0;width:20px;background:#f0f0f1}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#2c3338}.customize-control .dropdown-status{color:#2c3338;background:#f0f0f1;display:none;max-width:112px}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#50575e;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .button-add-media,.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #c3c4c7;box-sizing:border-box;padding:9px 0;line-height:1.6}.customize-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.customize-control .attachment-media-view .button-add-media:hover{background-color:#fff}.customize-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#50575e;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:"";position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #72aee6;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#50575e;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:auto;left:10px}.customize-control-header .header-view .close:focus{outline:1px solid #4f94d4}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 3px 1px rgba(79,148,212,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-left:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-right:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-left:0;border-right:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-right:12px;margin-left:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#50575e;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;border-right:none;border-left:none;margin:0 0 15px;padding-left:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-left:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}#customize-notifications-area .notification-message button.switch-to-editor{display:block;margin-top:6px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;right:0;transition:.18s right ease-in-out;margin:0 300px 0 0;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#f0f0f1;z-index:20}@media (prefers-reduced-motion:reduce){.control-panel-themes .customize-themes-full-container{transition:none}}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;left:0;right:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#f0f0f1}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:left;margin:3px 25px 3px 0}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 0 0 5px;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;right:0;padding:25px 25px 25px 0;border-top:0;margin:0;background:#f0f0f1;border-bottom:1px solid #dcdcde}.filter-drawer .filter-group{margin:0 0 0 25px;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:left;line-height:2.6}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#50575e}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 15px 8px 0;margin:15px 0 0;line-height:16px;border-bottom:1px solid #dcdcde;color:#50575e}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;border-left:none;cursor:pointer;padding:10px 15px;position:relative;text-align:right;font-size:14px;font-weight:600;color:#50575e;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #dcdcde}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-right-color:#2271b1;color:#2271b1;background:#f6f7f7}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;left:15px;width:18px;height:18px;border-radius:100%;border:1px solid #c3c4c7;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 1px 1px 3px;border-radius:100%;position:absolute;top:9px;left:15px;background:#2271b1;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#2271b1}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;right:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #dcdcde;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 0 25px 25px;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;right:300px;width:calc(100% - 300px);height:46px;background:#f0f0f1;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #dcdcde}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;left:0;right:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:1.8;padding:6px 30px 6px 10px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;right:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;right:0;width:100%;margin:0 0 25px}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:right}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:left}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;right:0;background:#f0f0f1;color:#3c434a;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:right;text-shadow:none;border-bottom:1px solid #dcdcde;border-right:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{right:0;top:0;height:46px;width:26px;display:block;line-height:2.3;padding:0 8px;border-left:1px solid #dcdcde}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(240,240,241,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:right;margin-left:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:left;padding:10px 25px;background:#f0f0f1;border-top:1px solid #dcdcde}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-right:8px}.control-panel-themes .theme-actions .delete-theme{right:15px;left:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#f0f0f1}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#3c434a}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #2271b1;color:#2271b1}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#2271b1}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#c3c4c7}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-left:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;border:1px solid #c3c4c7;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 1px rgba(0,0,0,.04)}body.cheatin h1{border-bottom:1px solid #dcdcde;clear:both;color:#50575e;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin:0 10px 0 0;transition:all .2s;-webkit-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#8c8f94;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#1d2327;background:#f0f0f1}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#dcdcde;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{left:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#f0f0f1;border-color:#8c8f94;color:#2c3338;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(-45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#f0f0f1;transition:right .18s;border-left:1px solid #dcdcde}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #dcdcde}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#f0f0f1}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;min-height:32px;margin:1px 0;padding:0 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;right:16px;width:30px;height:30px;line-height:2.1;text-align:center;color:#646970}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;left:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#d63638;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#d63638}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;right:26px;z-index:1;color:#646970;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px 60px 15px 15px;background:#fff;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:2.5}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 25px 3px 0}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{right:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-right:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;right:48px;line-height:2.6;font-size:14px;padding:0 12px 4px;margin:0;height:45px;background:#f0f0f1;border:0;border-left:1px solid #dcdcde;border-top:4px solid #f0f0f1;color:#50575e;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-left:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{min-height:30px;padding:0 14px;line-height:2;font-size:14px;vertical-align:middle}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#50575e;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}}@media screen and (max-width:600px){.wp-full-overlay.expanded{margin-right:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{right:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{right:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-controls.css b/tools/storybook/wordpress/css/customize-controls.css new file mode 100644 index 00000000000..a7129bbafd5 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-controls.css @@ -0,0 +1,3002 @@ +body { + overflow: hidden; + -webkit-text-size-adjust: 100%; +} + +.customize-controls-close, +.widget-control-actions a { + text-decoration: none; +} + +#customize-controls h3 { + font-size: 14px; +} + +#customize-controls img { + max-width: 100%; +} + +#customize-controls .submit { + text-align: center; +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked { + background-color: rgba(0, 0, 0, 0.7); + padding: 25px; +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message { + margin-left: auto; + margin-right: auto; + max-width: 366px; + min-height: 64px; + width: auto; + padding: 25px 25px 25px 109px; + position: relative; + background: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + line-height: 1.5; + overflow-y: auto; + text-align: left; + top: calc( 50% - 100px ); +} + +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing { + margin-top: 0; +} +#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons { + margin-bottom: 0; +} + +.customize-changeset-locked-avatar { + width: 64px; + position: absolute; + left: 25px; + top: 25px; +} + +.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button { + margin-right: 10px; + margin-top: 0; +} + +#customize-controls .description { + color: #50575e; +} + +#customize-save-button-wrapper { + float: right; + margin-top: 9px; +} + +body:not(.ready) #customize-save-button-wrapper .save { + visibility: hidden; +} +#customize-save-button-wrapper .save { + float: left; + border-radius: 3px; + box-shadow: none; /* @todo Adjust box shadow based on the disable states of paired button. */ + margin-top: 0; +} + +#customize-save-button-wrapper .save:focus, #publish-settings:focus { + box-shadow: 0 1px 0 #2271b1, 0 0 2px 1px #72aee6; /* This is default box shadow for focus */ +} + +#customize-save-button-wrapper .save.has-next-sibling { + border-radius: 3px 0 0 3px; +} + +#customize-sidebar-outer-content { + position: absolute; + top: 0; + bottom: 0; + left: 0; + visibility: hidden; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0; + z-index: -1; + background: #f0f0f1; + transition: left .18s; + border-right: 1px solid #dcdcde; + border-left: 1px solid #dcdcde; + height: 100%; +} + +@media (prefers-reduced-motion: reduce) { + #customize-sidebar-outer-content { + transition: none; + } +} + +#customize-theme-controls .control-section-outer { + display: none !important; +} + +#customize-outer-theme-controls .accordion-section-content { + padding: 12px; +} + +#customize-outer-theme-controls .accordion-section-content.open { + display: block; +} + +.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + visibility: visible; + left: 100%; + transition: left .18s; +} + +@media (prefers-reduced-motion: reduce) { + .outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + transition: none; + } +} + +.customize-outer-pane-parent { + margin: 0; +} + +.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main { + left: 300px; + opacity: 0.4; +} + +.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, +.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, +.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main, +.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { + left: 64%; +} + +#customize-outer-theme-controls li.notice { + padding-top: 8px; + padding-bottom: 8px; + margin-left: 0; + margin-bottom: 10px; +} + +#publish-settings { + text-indent: 0; + border-radius: 0 3px 3px 0; + padding-left: 0; + padding-right: 0; + box-shadow: none; /* @todo Adjust box shadow based on the disable states of paired button. */ + font-size: 14px; + width: 30px; + float: left; + transform: none; + margin-top: 0; + line-height: 2; +} + +body:not(.ready) #publish-settings, +body.trashing #customize-save-button-wrapper .save, +body.trashing #publish-settings { + display: none; +} + +#customize-header-actions .spinner { + margin-top: 13px; + margin-right: 4px; +} + +.saving #customize-header-actions .spinner, +.trashing #customize-header-actions .spinner { + visibility: visible; +} + +#customize-header-actions { + border-bottom: 1px solid #dcdcde; +} + +#customize-controls .wp-full-overlay-sidebar-content { + overflow-y: auto; + overflow-x: hidden; +} + +.outer-section-open #customize-controls .wp-full-overlay-sidebar-content { + background: #f0f0f1; +} + +#customize-controls .customize-info { + border: none; + border-bottom: 1px solid #dcdcde; + margin-bottom: 15px; +} + +#customize-control-changeset_status .customize-inside-control-row, +#customize-control-changeset_preview_link input { + background-color: #fff; + border-bottom: 1px solid #dcdcde; + box-sizing: content-box; + width: 100%; + margin-left: -12px; + padding-left: 12px; + padding-right: 12px; +} + +#customize-control-trash_changeset { + margin-top: 20px; +} +#customize-control-trash_changeset .button-link { + position: relative; + padding-left: 24px; + display: inline-block; +} +#customize-control-trash_changeset .button-link:before { + content: "\f182"; + font: normal 22px dashicons; + text-decoration: none; + position: absolute; + left: 0; + top: -2px; +} + +#customize-controls .date-input:invalid { + border-color: #d63638; +} + +#customize-control-changeset_status .customize-inside-control-row { + padding-top: 10px; + padding-bottom: 10px; + font-weight: 500; +} + +#customize-control-changeset_status .customize-inside-control-row:first-of-type { + border-top: 1px solid #dcdcde; +} + +#customize-control-changeset_status .customize-control-title { + margin-bottom: 6px; +} + +#customize-control-changeset_status input { + margin-left: 0; +} + +#customize-control-changeset_preview_link { + position: relative; + display: block; +} + +.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button { + margin: 0; + position: absolute; + bottom: 9px; + right: 0; +} + +.preview-link-wrapper { + position: relative; +} + +.customize-copy-preview-link:before, +.customize-copy-preview-link:after { + content: ""; + height: 28px; + position: absolute; + background: #fff; + top: -1px; +} + +.customize-copy-preview-link:before { + left: -10px; + width: 9px; + opacity: 0.75; +} + +.customize-copy-preview-link:after { + left: -5px; + width: 4px; + opacity: 0.8; +} + +#customize-control-changeset_preview_link input { + line-height: 2.85714286; /* 40px */ + border-top: 1px solid #dcdcde; + border-left: none; + border-right: none; + text-indent: -999px; + color: #fff; + /* Only necessary for IE11 */ + min-height: 40px; +} + +#customize-control-changeset_preview_link label { + position: relative; + display: block; +} + +#customize-control-changeset_preview_link a { + display: inline-block; + position: absolute; + white-space: nowrap; + overflow: hidden; + width: 90%; + bottom: 14px; + font-size: 14px; + text-decoration: none; +} + +#customize-control-changeset_preview_link a.disabled, +#customize-control-changeset_preview_link a.disabled:active, +#customize-control-changeset_preview_link a.disabled:focus, +#customize-control-changeset_preview_link a.disabled:visited { + color: #000; + opacity: 0.4; + cursor: default; + outline: none; + box-shadow: none; +} + +#sub-accordion-section-publish_settings .customize-section-description-container { + display: none; +} + +#customize-controls .customize-info.section-meta { + margin-bottom: 15px; +} + +.customize-control-date_time .customize-control-description + .date-time-fields.includes-time { + margin-top: 10px; +} + +.customize-control.customize-control-date_time .date-time-fields .date-input.day { + margin-right: 0; +} + +.date-time-fields .date-input.month { + width: auto; + margin: 0; +} + +.date-time-fields .date-input.day, +.date-time-fields .date-input.hour, +.date-time-fields .date-input.minute { + width: 46px; +} + +.date-time-fields .date-input.year { + width: 65px; +} + +.date-time-fields .date-input.meridian { + width: auto; + margin: 0; +} + +.date-time-fields .time-row { + margin-top: 12px; +} + +#customize-control-changeset_preview_link { + margin-top: 6px; +} + +#customize-control-changeset_status { + margin-bottom: 0; + padding-bottom: 0; +} + +#customize-control-changeset_scheduled_date { + box-sizing: content-box; + width: 100%; + margin-left: -12px; + padding: 12px; + background: #fff; + border-bottom: 1px solid #dcdcde; + margin-bottom: 0; +} + +#customize-control-changeset_scheduled_date .customize-control-description { + font-style: normal; +} + +#customize-controls .customize-info.is-in-view, +#customize-controls .customize-section-title.is-in-view { + position: absolute; + z-index: 9; + width: 100%; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} + +#customize-controls .customize-section-title.is-in-view { + margin-top: 0; +} + +#customize-controls .customize-info.is-in-view + .accordion-section { + margin-top: 15px; +} + +#customize-controls .customize-info.is-sticky, +#customize-controls .customize-section-title.is-sticky { + position: fixed; + top: 46px; +} + +#customize-controls .customize-info .accordion-section-title { + background: #fff; + color: #50575e; + border-left: none; + border-right: none; + border-bottom: none; + cursor: default; +} + +#customize-controls .customize-info.open .accordion-section-title:after, +#customize-controls .customize-info .accordion-section-title:hover:after, +#customize-controls .customize-info .accordion-section-title:focus:after { + color: #2c3338; +} + +#customize-controls .customize-info .accordion-section-title:after { + display: none; +} + +#customize-controls .customize-info .preview-notice { + font-size: 13px; + line-height: 1.9; +} + +#customize-controls .customize-pane-child .customize-section-title h3, +#customize-controls .customize-pane-child h3.customize-section-title, +#customize-outer-theme-controls .customize-pane-child .customize-section-title h3, +#customize-outer-theme-controls .customize-pane-child h3.customize-section-title, +#customize-controls .customize-info .panel-title { + font-size: 20px; + font-weight: 200; + line-height: 26px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +#customize-controls .customize-section-title span.customize-action { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +#customize-controls .customize-info .customize-help-toggle { + position: absolute; + top: 4px; + right: 1px; + padding: 20px 20px 10px 10px; + width: 20px; + height: 20px; + cursor: pointer; + box-shadow: none; + -webkit-appearance: none; + background: transparent; + color: #50575e; + border: none; +} + +#customize-controls .customize-info .customize-help-toggle:before { + position: absolute; + top: 5px; + left: 6px; +} + +#customize-controls .customize-info.open .customize-help-toggle, +#customize-controls .customize-info .customize-help-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:hover { + color: #2271b1; +} + +#customize-controls .customize-info .customize-panel-description, +#customize-controls .customize-info .customize-section-description, +#customize-outer-theme-controls .customize-info .customize-section-description, +#customize-controls .no-widget-areas-rendered-notice { + color: #50575e; + display: none; + background: #fff; + padding: 12px 15px; + border-top: 1px solid #dcdcde; +} + +#customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { + border-top: none; +} +.no-widget-areas-rendered-notice { + font-style: italic; +} +.no-widget-areas-rendered-notice p:first-child { + margin-top: 0; +} +.no-widget-areas-rendered-notice p:last-child { + margin-bottom: 0; +} + +#customize-controls .customize-info .customize-section-description { + margin-bottom: 15px; +} + +#customize-controls .customize-info .customize-panel-description p:first-child, +#customize-controls .customize-info .customize-section-description p:first-child { + margin-top: 0; +} + +#customize-controls .customize-info .customize-panel-description p:last-child, +#customize-controls .customize-info .customize-section-description p:last-child { + margin-bottom: 0; +} + +#customize-controls .current-panel .control-section > h3.accordion-section-title { + padding-right: 30px; +} + +#customize-theme-controls .control-section, +#customize-outer-theme-controls .control-section { + border: none; +} + +#customize-theme-controls .accordion-section-title, +#customize-outer-theme-controls .accordion-section-title { + color: #50575e; + background-color: #fff; + border-bottom: 1px solid #dcdcde; + border-left: 4px solid #fff; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + #customize-theme-controls .accordion-section-title, + #customize-outer-theme-controls .accordion-section-title { + transition: none; + } +} + +#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { + color: #50575e; + background-color: #fff; + border-left: 4px solid #fff; +} + +#customize-theme-controls .accordion-section-title:after, +#customize-outer-theme-controls .accordion-section-title:after { + content: "\f345"; + color: #a7aaad; +} + +#customize-theme-controls .accordion-section-content, +#customize-outer-theme-controls .accordion-section-content { + color: #50575e; + background: transparent; +} + +#customize-controls .control-section:hover > .accordion-section-title, +#customize-controls .control-section .accordion-section-title:hover, +#customize-controls .control-section.open .accordion-section-title, +#customize-controls .control-section .accordion-section-title:focus { + color: #2271b1; + background: #f6f7f7; + border-left-color: #2271b1; +} + +#accordion-section-themes + .control-section { + border-top: 1px solid #dcdcde; +} + +.js .control-section:hover .accordion-section-title, +.js .control-section .accordion-section-title:hover, +.js .control-section.open .accordion-section-title, +.js .control-section .accordion-section-title:focus { + background: #f6f7f7; +} + +#customize-theme-controls .control-section:hover > .accordion-section-title:after, +#customize-theme-controls .control-section .accordion-section-title:hover:after, +#customize-theme-controls .control-section.open .accordion-section-title:after, +#customize-theme-controls .control-section .accordion-section-title:focus:after, +#customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, +#customize-outer-theme-controls .control-section .accordion-section-title:hover:after, +#customize-outer-theme-controls .control-section.open .accordion-section-title:after, +#customize-outer-theme-controls .control-section .accordion-section-title:focus:after { + color: #2271b1; +} + +#customize-theme-controls .control-section.open { + border-bottom: 1px solid #f0f0f1; +} + +#customize-theme-controls .control-section.open .accordion-section-title, +#customize-outer-theme-controls .control-section.open .accordion-section-title { + border-bottom-color: #f0f0f1 !important; +} + +#customize-theme-controls .control-section:last-of-type.open, +#customize-theme-controls .control-section:last-of-type > .accordion-section-title { + border-bottom-color: #dcdcde; +} + +#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2), +#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu, +#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title { + border-top: 1px solid #dcdcde; +} + +#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu + .control-section-nav_menu { + border-top: none; +} + +#customize-theme-controls > ul { + margin: 0; +} + +#customize-theme-controls .accordion-section-content { + position: absolute; + top: 0; + left: 100%; + width: 100%; + margin: 0; + padding: 12px; + box-sizing: border-box; +} + +#customize-info, +#customize-theme-controls .customize-pane-parent, +#customize-theme-controls .customize-pane-child { + overflow: visible; + width: 100%; + margin: 0; + padding: 0; + box-sizing: border-box; + transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ +} + +@media (prefers-reduced-motion: reduce) { + #customize-info, + #customize-theme-controls .customize-pane-parent, + #customize-theme-controls .customize-pane-child { + transition: none; + } +} + +#customize-theme-controls .customize-pane-child.skip-transition { + transition: none; +} + +#customize-info, +#customize-theme-controls .customize-pane-parent { + position: relative; + visibility: visible; + height: auto; + max-height: none; + overflow: auto; + transform: none; +} + +#customize-theme-controls .customize-pane-child { + position: absolute; + top: 0; + left: 0; + visibility: hidden; + height: 0; + max-height: none; + overflow: hidden; + transform: translateX(100%); +} + +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel { + transform: none; +} + +.section-open #customize-theme-controls .customize-pane-parent, +.in-sub-panel #customize-theme-controls .customize-pane-parent, +.section-open #customize-info, +.in-sub-panel #customize-info, +.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel { + visibility: hidden; + height: 0; + overflow: hidden; + transform: translateX(-100%); +} + +.section-open #customize-theme-controls .customize-pane-parent.busy, +.in-sub-panel #customize-theme-controls .customize-pane-parent.busy, +.section-open #customize-info.busy, +.in-sub-panel #customize-info.busy, +.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.open, +#customize-theme-controls .customize-pane-child.current-panel, +#customize-theme-controls .customize-pane-child.busy { + visibility: visible; + height: auto; + overflow: auto; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content, +#customize-theme-controls .customize-pane-child.accordion-sub-container { + display: block; + overflow-x: hidden; +} + +#customize-theme-controls .customize-pane-child.accordion-section-content { + padding: 12px; +} + +#customize-theme-controls .customize-pane-child.menu li { + position: static; +} + +.customize-section-description-container, +.control-section-nav_menu .customize-section-description-container, +.control-section-new_menu .customize-section-description-container { + margin-bottom: 15px; +} + +.control-section-nav_menu .customize-control, +.control-section-new_menu .customize-control { + /* Override default `margin-bottom` for `.customize-control` */ + margin-bottom: 0; +} + +.customize-section-title { + margin: -12px -12px 0; + border-bottom: 1px solid #dcdcde; + background: #fff; +} + +div.customize-section-description { + margin-top: 22px; +} + +.customize-info div.customize-section-description { + margin-top: 0; +} + +div.customize-section-description p:first-child { + margin-top: 0; +} + +div.customize-section-description p:last-child { + margin-bottom: 0; +} + +#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { + border-bottom: 1px solid #dcdcde; + padding: 12px; +} + +.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { + padding: 12px 12px 13px; +} + +.customize-section-title h3, +h3.customize-section-title { + padding: 10px 10px 12px 14px; + margin: 0; + line-height: 21px; + color: #50575e; +} + +.accordion-sub-container.control-panel-content { + display: none; + position: absolute; + top: 0; + width: 100%; +} + +.accordion-sub-container.control-panel-content.busy { + display: block; +} + +.current-panel .accordion-sub-container.control-panel-content { + width: 100%; +} + +.customize-controls-close { + display: block; + position: absolute; + top: 0; + left: 0; + width: 45px; + height: 41px; + padding: 0 2px 0 0; + background: #f0f0f1; + border: none; + border-top: 4px solid #f0f0f1; + border-right: 1px solid #dcdcde; + color: #3c434a; + text-align: left; + cursor: pointer; + transition: + color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; + box-sizing: content-box; +} + +.customize-panel-back, +.customize-section-back { + display: block; + float: left; + width: 48px; + height: 71px; + padding: 0 24px 0 0; + margin: 0; + background: #fff; + border: none; + border-right: 1px solid #dcdcde; + border-left: 4px solid #fff; + box-shadow: none; + cursor: pointer; + transition: + color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; +} + +.customize-section-back { + height: 74px; +} + +.ios .customize-panel-back { + display: none; +} + +.ios .expanded.in-sub-panel .customize-panel-back { + display: block; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title { + margin-left: 48px; + border-left: none; +} + +#customize-controls .panel-meta.customize-info .accordion-section-title:hover, +#customize-controls .cannot-expand:hover .accordion-section-title { + background: #fff; + color: #50575e; + border-left-color: #fff; +} + +.customize-controls-close:focus, +.customize-controls-close:hover, +.customize-controls-preview-toggle:focus, +.customize-controls-preview-toggle:hover { + background: #fff; + color: #2271b1; + border-top-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#customize-theme-controls .accordion-section-title:focus .customize-action { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; + outline-offset: 1px; +} + +.customize-panel-back:hover, +.customize-panel-back:focus, +.customize-section-back:hover, +.customize-section-back:focus { + color: #2271b1; + background: #f6f7f7; + border-left-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.customize-controls-close:before { + font: normal 22px/45px dashicons; + content: "\f335"; + position: relative; + top: -3px; + left: 13px; +} + +.customize-panel-back:before, +.customize-section-back:before { + font: normal 20px/72px dashicons; + content: "\f341"; + position: relative; + left: 9px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + background-color: #f0f0f1; + transition: padding ease-in-out .18s; +} + +.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header { + padding-left: 62px; +} + +p.customize-section-description { + font-style: normal; + margin-top: 22px; + margin-bottom: 0; +} + +.customize-section-description ul { + margin-left: 1em; +} + +.customize-section-description ul > li { + list-style: disc; +} + +.section-description-buttons { + text-align: right; +} + +.customize-control { + width: 100%; + float: left; + clear: both; + margin-bottom: 12px; +} + +.customize-control input[type="text"], +.customize-control input[type="password"], +.customize-control input[type="email"], +.customize-control input[type="number"], +.customize-control input[type="search"], +.customize-control input[type="tel"], +.customize-control input[type="url"], +.customize-control input[type="range"] { + width: 100%; + margin: 0; +} + +.customize-control-hidden { + margin: 0; +} + +.customize-control-textarea textarea { + width: 100%; + resize: vertical; +} + +.customize-control select { + width: 100%; +} + +.customize-control select[multiple] { + height: auto; +} + +.customize-control-title { + display: block; + font-size: 14px; + line-height: 1.75; + font-weight: 600; + margin-bottom: 4px; +} + +.customize-control-description { + display: block; + font-style: italic; + line-height: 1.4; + margin-top: 0; + margin-bottom: 5px; +} + +.customize-section-description a.external-link:after { + font: 16px/11px dashicons; + content: "\f504"; + top: 3px; + position: relative; + padding-left: 3px; + display: inline-block; + text-decoration: none; +} + +.customize-control-color .color-picker, +.customize-control-upload div { + line-height: 28px; +} + +.customize-control .customize-inside-control-row { + line-height: 1.6; + display: block; + margin-left: 24px; + padding-top: 6px; + padding-bottom: 6px; +} + +.customize-control-radio input, +.customize-control-checkbox input, +.customize-control-nav_menu_auto_add input { + margin-right: 4px; + margin-left: -24px; +} + +.customize-control-radio { + padding: 5px 0 10px; +} + +.customize-control-radio .customize-control-title { + margin-bottom: 0; + line-height: 1.6; +} + +.customize-control-radio .customize-control-title + .customize-control-description { + margin-top: 7px; +} + +.customize-control-radio label, +.customize-control-checkbox label { + vertical-align: top; +} + +.customize-control .attachment-thumb.type-icon { + float: left; + margin: 10px; + width: auto; +} + +.customize-control .attachment-title { + font-weight: 600; + margin: 0; + padding: 5px 10px; +} + +.customize-control .attachment-meta { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin: 0; + padding: 0 10px; +} + +.customize-control .attachment-meta-title { + padding-top: 7px; +} + +/* Remove descender space. */ +.customize-control .thumbnail-image, +.customize-control-header .current, +.customize-control .wp-media-wrapper.wp-video { + line-height: 0; +} + +/* Remove descender space. */ +.customize-control-site_icon .favicon-preview .browser-preview { + vertical-align: top; +} + +.customize-control .thumbnail-image img { + cursor: pointer; +} + +#customize-controls .thumbnail-audio .thumbnail { + max-width: 64px; + max-height: 64px; + margin: 10px; + float: left; +} + +#available-menu-items .accordion-section-content .new-content-item, +.customize-control-dropdown-pages .new-content-item { + width: calc(100% - 30px); + padding: 8px 15px; + position: absolute; + bottom: 0; + z-index: 10; + background: #f0f0f1; + display: flex; +} + +.customize-control-dropdown-pages .new-content-item { + width: 100%; + padding: 5px 0 5px 1px; + position: relative; +} + +#available-menu-items .new-content-item .create-item-input, +.customize-control-dropdown-pages .new-content-item .create-item-input { + flex-grow: 10; +} + +#available-menu-items .new-content-item .add-content, +.customize-control-dropdown-pages .new-content-item .add-content { + margin: 2px 0 2px 6px; + flex-grow: 1; +} + +.customize-control-dropdown-pages .new-content-item .create-item-input.invalid { + border: 1px solid #d63638; +} + +.customize-control-dropdown-pages .add-new-toggle { + margin-left: 1px; + font-weight: 600; + line-height: 2.2; +} + +#customize-preview iframe { + width: 100%; + height: 100%; + position: absolute; +} +#customize-preview iframe + iframe { + visibility: hidden; +} + +.wp-full-overlay-sidebar { + background: #f0f0f1; + border-right: 1px solid #dcdcde; +} + + +/** + * Notifications + */ + +#customize-controls .customize-control-notifications-container { /* Scoped to #customize-controls for specificity over notification styles in common.css. */ + margin: 4px 0 8px; + padding: 0; + cursor: default; +} + +#customize-controls .customize-control-widget_form.has-error .widget .widget-top, +.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle { + box-shadow: inset 0 0 0 2px #d63638; + transition: .15s box-shadow linear; +} + +#customize-controls .customize-control-notifications-container li.notice { + list-style: none; + margin: 0 0 6px; + padding: 9px 14px; + overflow: hidden; +} +#customize-controls .customize-control-notifications-container .notice.is-dismissible { + padding-right: 38px; +} + +.customize-control-notifications-container li.notice:last-child { + margin-bottom: 0; +} + +#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container { + margin-top: 0; +} + +#customize-controls .customize-control-widget_form .customize-control-notifications-container { + margin-top: 8px; +} + +.customize-control-text.has-error input { + outline: 2px solid #d63638; +} + +#customize-controls #customize-notifications-area { + position: absolute; + top: 46px; + width: 100%; + border-bottom: 1px solid #dcdcde; + display: block; + padding: 0; + margin: 0; +} + +.wp-full-overlay.collapsed #customize-controls #customize-notifications-area { + display: none !important; +} + +#customize-controls #customize-notifications-area:not(.has-overlay-notifications), +#customize-controls .customize-section-title > .customize-control-notifications-container:not(.has-overlay-notifications), +#customize-controls .panel-meta > .customize-control-notifications-container:not(.has-overlay-notifications) { + max-height: 210px; + overflow-x: hidden; + overflow-y: auto; +} + +#customize-controls #customize-notifications-area > ul, +#customize-controls #customize-notifications-area .notice, +#customize-controls .panel-meta > .customize-control-notifications-container, +#customize-controls .panel-meta > .customize-control-notifications-container .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice { + margin: 0; +} +#customize-controls .panel-meta > .customize-control-notifications-container, +#customize-controls .customize-section-title > .customize-control-notifications-container { + border-top: 1px solid #dcdcde; +} +#customize-controls #customize-notifications-area .notice, +#customize-controls .panel-meta > .customize-control-notifications-container .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice { + padding: 9px 14px; +} +#customize-controls #customize-notifications-area .notice.is-dismissible, +#customize-controls .panel-meta > .customize-control-notifications-container .notice.is-dismissible, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice.is-dismissible { + padding-right: 38px; +} +#customize-controls #customize-notifications-area .notice + .notice, +#customize-controls .panel-meta > .customize-control-notifications-container .notice + .notice, +#customize-controls .customize-section-title > .customize-control-notifications-container .notice + .notice { + margin-top: 1px; +} + +@keyframes customize-fade-in { + 0% { opacity: 0; } + 100% { opacity: 1; } +} + +#customize-controls .notice.notification-overlay, +#customize-controls #customize-notifications-area .notice.notification-overlay { + margin: 0; + border-left: 0; /* @todo Appropriate styles could be added for notice-error, notice-warning, notice-success, etc */ +} + +#customize-controls .customize-control-notifications-container.has-overlay-notifications { + animation: customize-fade-in 0.5s; + z-index: 30; +} + +/* Note: Styles for this are also defined in themes.css */ +#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message { + clear: both; + color: #1d2327; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 2em 0; + text-align: center; + width: 100%; + display: block; + top: 50%; + position: relative; +} + +/* Style for custom settings */ + +/** + * Static front page + */ + +#customize-control-show_on_front.has-error { + margin-bottom: 0; +} +#customize-control-show_on_front.has-error .customize-control-notifications-container { + margin-top: 12px; +} + +/** + * Dropdowns + */ + +.accordion-section .dropdown { + float: left; + display: block; + position: relative; + cursor: pointer; +} + +.accordion-section .dropdown-content { + overflow: hidden; + float: left; + min-width: 30px; + height: 16px; + line-height: 16px; + margin-right: 16px; + padding: 4px 5px; + border: 2px solid #f0f0f1; + -webkit-user-select: none; + user-select: none; +} + +/* @todo maybe no more used? */ +.customize-control .dropdown-arrow { + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 20px; + background: #f0f0f1; +} + +.customize-control .dropdown-arrow:after { + content: "\f140"; + font: normal 20px/1 dashicons; + speak: never; + display: block; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #2c3338; +} + +.customize-control .dropdown-status { + color: #2c3338; + background: #f0f0f1; + display: none; + max-width: 112px; +} + +.customize-control-color .dropdown { + margin-right: 5px; + margin-bottom: 5px; +} + +.customize-control-color .dropdown .dropdown-content { + background-color: #50575e; + border: 1px solid rgba(0, 0, 0, 0.15); +} + +.customize-control-color .dropdown:hover .dropdown-content { + border-color: rgba(0, 0, 0, 0.25); +} + +/** + * iOS can't scroll iframes, + * instead it expands the iframe size to match the size of the content + */ + +.ios .wp-full-overlay { + position: relative; +} + +.ios #customize-controls .wp-full-overlay-sidebar-content { + -webkit-overflow-scrolling: touch; +} + +/* Media controls */ + +.customize-control .actions .button { + margin-top: 12px; +} + +.customize-control-header .actions, +.customize-control-header .uploaded { + margin-bottom: 18px; +} + +.customize-control-header .uploaded button:not(.random), +.customize-control-header .default button:not(.random) { + width: 100%; + padding: 0; + margin: 0; + background: none; + border: none; + color: inherit; + cursor: pointer; +} + +.customize-control-header button img { + display: block; +} + +.customize-control .attachment-media-view .remove-button, +.customize-control .attachment-media-view .default-button, +.customize-control .attachment-media-view .upload-button, +.customize-control-header button.new, +.customize-control-header button.remove { + width: auto; + height: auto; + white-space: normal; +} + +.customize-control .attachment-media-view .thumbnail, +.customize-control-header .current .container { + overflow: hidden; +} + +.customize-control .attachment-media-view .placeholder, +.customize-control .attachment-media-view .button-add-media, +.customize-control-header .placeholder { + width: 100%; + position: relative; + text-align: center; + cursor: default; + border: 1px dashed #c3c4c7; + box-sizing: border-box; + padding: 9px 0; + line-height: 1.6; +} + +.customize-control .attachment-media-view .button-add-media { + cursor: pointer; + background-color: #f0f0f1; + color: #2c3338; +} + +.customize-control .attachment-media-view .button-add-media:hover { + background-color: #fff; +} + +.customize-control .attachment-media-view .button-add-media:focus { + background-color: #fff; + border-color: #3582c4; + border-style: solid; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.customize-control-header .inner { + display: none; + position: absolute; + width: 100%; + color: #50575e; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.customize-control-header .inner, +.customize-control-header .inner .dashicons { + line-height: 20px; + top: 8px; +} + +.customize-control-header .list .inner, +.customize-control-header .list .inner .dashicons { + top: 9px; +} + +.customize-control-header .header-view { + position: relative; + width: 100%; + margin-bottom: 12px; +} + +.customize-control-header .header-view:last-child { + margin-bottom: 0; +} + +/* Convoluted, but 'outline' support isn't good enough yet */ +.customize-control-header .header-view:after { + border: 0; +} + +.customize-control-header .header-view.selected .choice:focus { + outline: none; +} + +.customize-control-header .header-view.selected:after { + content: ""; + position: absolute; + height: auto; + top: 0; + left: 0; + bottom: 0; + right: 0; + border: 4px solid #72aee6; + border-radius: 2px; +} + +.customize-control-header .header-view.button.selected { + border: 0; +} + +/* Header control: overlay "close" button */ + +.customize-control-header .uploaded .header-view .close { + font-size: 20px; + color: #fff; + background: #50575e; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 10px; + left: -999px; + z-index: 1; + width: 26px; + height: 26px; + cursor: pointer; +} + +.customize-control-header .header-view:hover .close, +.customize-control-header .header-view .close:focus { + left: auto; + right: 10px; +} + +.customize-control-header .header-view .close:focus { + outline: 1px solid #4f94d4; +} + +/* Header control: randomiz(s)er */ + +.customize-control-header .random.placeholder { + cursor: pointer; + border-radius: 2px; + height: 40px; +} + +.customize-control-header button.random { + width: 100%; + height: auto; + min-height: 40px; + white-space: normal; +} + +.customize-control-header button.random .dice { + margin-top: 4px; +} + +.customize-control-header .placeholder:hover .dice, +.customize-control-header .header-view:hover > button.random .dice { + animation: dice-color-change 3s infinite; +} + +.button-see-me { + animation: bounce .7s 1; + transform-origin: center bottom; +} + +@keyframes bounce { + from, 20%, 53%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + transform: translate3d(0,0,0); + } + + 40%, 43% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -12px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -6px, 0); + } + + 90% { + transform: translate3d(0,-1px,0); + } +} + +.customize-control-header .choice { + position: relative; + display: block; + margin-bottom: 9px; +} + +.customize-control-header .choice:focus { + outline: none; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 3px 1px rgba(79, 148, 212, 0.8); +} + +.customize-control-header .uploaded div:last-child > .choice { + margin-bottom: 0; +} + +.customize-control .attachment-media-view .thumbnail-image img, +.customize-control-header img { + max-width: 100%; +} + +.customize-control .attachment-media-view .remove-button, +.customize-control .attachment-media-view .default-button, +.customize-control-header .remove { + margin-right: 8px; +} + +/* Background position control */ +.customize-control-background_position .background-position-control .button-group { + display: block; +} + +/** + * Code Editor Control and Custom CSS Section + * + * Modifications to the Section Container to make the textarea full-width and + * full-height, if the control is the only control in the section. + */ + +.customize-control-code_editor textarea { + width: 100%; + font-family: Consolas, Monaco, monospace; + font-size: 12px; + padding: 6px 8px; + -o-tab-size: 2; + tab-size: 2; +} +.customize-control-code_editor textarea, +.customize-control-code_editor .CodeMirror { + height: 14em; +} + +#customize-controls .customize-section-description-container.section-meta.customize-info { + border-bottom: none; +} + +#sub-accordion-section-custom_css .customize-control-notifications-container { + margin-bottom: 15px; +} + +#customize-control-custom_css textarea { + display: block; + height: 500px; +} + +.customize-section-description-container + #customize-control-custom_css .customize-control-title { + margin-left: 12px; +} + +.customize-section-description-container + #customize-control-custom_css:last-child textarea { + border-right: 0; + border-left: 0; + height: calc( 100vh - 185px ); + resize: none; +} + +.customize-section-description-container + #customize-control-custom_css:last-child { + margin-left: -12px; + width: 299px; + width: calc( 100% + 24px ); + margin-bottom: -12px; +} + +.customize-section-description-container + #customize-control-custom_css:last-child .CodeMirror { + height: calc( 100vh - 185px ); +} + +.CodeMirror-lint-tooltip, +.CodeMirror-hints { + z-index: 500000 !important; +} + +.customize-section-description-container + #customize-control-custom_css:last-child .customize-control-notifications-container { + margin-left: 12px; + margin-right: 12px; +} + +.theme-browser .theme.active .theme-actions, +.wp-customizer .theme-browser .theme .theme-actions { + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); +} + +@media screen and (max-width: 640px) { + .customize-section-description-container + #customize-control-custom_css:last-child { + margin-right: 0; + } + + .customize-section-description-container + #customize-control-custom_css:last-child textarea { + height: calc( 100vh - 140px ); + } +} + +/** + * Themes + */ + +#customize-theme-controls .control-panel-themes { + border-bottom: none; +} + +#customize-theme-controls .control-panel-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-panel-themes > .accordion-section-title { + cursor: default; + background: #fff; + color: #50575e; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; + border-left: none; + border-right: none; + margin: 0 0 15px; + padding-right: 100px; /* Space for the button */ +} + +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child { + border-top: 0; +} + +#customize-theme-controls .control-section-themes > .accordion-section-title:hover, /* Not a focusable element. */ +#customize-theme-controls .control-section-themes > .accordion-section-title { + margin: 0 0 15px; +} + +#customize-controls .customize-themes-panel .accordion-section-title:hover, +#customize-controls .customize-themes-panel .accordion-section-title { + margin: 15px -8px; +} + +#customize-controls .control-section-themes .accordion-section-title, +#customize-controls .customize-themes-panel .accordion-section-title { + padding-right: 100px; /* Space for the button */ +} + +.control-panel-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action, +#customize-controls .control-section-themes .accordion-section-title span.customize-action, +#customize-controls .customize-section-title span.customize-action { + font-size: 13px; + display: block; + font-weight: 400; +} + +#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme { + position: absolute; + right: 10px; + top: 50%; + margin-top: -14px; + font-weight: 400; +} + +#customize-notifications-area .notification-message button.switch-to-editor { + display: block; + margin-top: 6px; + font-weight: 400; +} + +#customize-theme-controls .control-panel-themes > .accordion-section-title:after { + display: none; +} + +.control-panel-themes .customize-themes-full-container { + position: fixed; + top: 0; + left: 0; + transition: .18s left ease-in-out; + margin: 0 0 0 300px; + padding: 71px 0 25px; + overflow-y: scroll; + width: calc(100% - 300px); + height: calc(100% - 96px); + background: #f0f0f1; + z-index: 20; +} + +@media (prefers-reduced-motion: reduce) { + .control-panel-themes .customize-themes-full-container { + transition: none; + } +} + +@media screen and (min-width: 1670px) { + .control-panel-themes .customize-themes-full-container { + width: 82%; + right: 0; + left: initial; + } +} + +.modal-open .control-panel-themes .customize-themes-full-container { + overflow-y: visible; +} + +/* Animations for opening the themes panel */ +#customize-save-button-wrapper, +#customize-header-actions .spinner, +#customize-header-actions .customize-controls-preview-toggle { + transition: .18s margin ease-in-out; +} + +#customize-footer-actions, +#customize-footer-actions .collapse-sidebar { + bottom: 0; + transition: .18s bottom ease-in-out; +} + +.in-themes-panel:not(.animating) #customize-header-actions .spinner, +.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle, +.in-themes-panel:not(.animating) #customize-preview, +.in-themes-panel:not(.animating) #customize-footer-actions { + visibility: hidden; +} + +.wp-full-overlay.in-themes-panel { + background: #f0f0f1; /* Prevents a black flash when fading in the panel */ +} + +.in-themes-panel #customize-save-button-wrapper, +.in-themes-panel #customize-header-actions .spinner, +.in-themes-panel #customize-header-actions .customize-controls-preview-toggle { + margin-top: -46px; /* Height of header actions bar */ +} + +.in-themes-panel #customize-footer-actions, +.in-themes-panel #customize-footer-actions .collapse-sidebar { + bottom: -45px; +} + +/* Don't show the theme count while the panel opens, as it's in the wrong place during the animation */ +.in-themes-panel.animating .control-panel-themes .filter-themes-count { + display: none; +} + +.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content { + bottom: 0; +} + +.themes-filter-bar .feature-filter-toggle { + float: right; + margin: 3px 0 3px 25px; +} + +.themes-filter-bar .feature-filter-toggle:before { + content: "\f111"; + margin: 0 5px 0 0; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.themes-filter-bar .feature-filter-toggle.open { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +.themes-filter-bar .feature-filter-toggle .filter-count-filters { + display: none; +} + +.filter-drawer { + box-sizing: border-box; + width: 100%; + position: absolute; + top: 46px; + left: 0; + padding: 25px 0 25px 25px; + border-top: 0; + margin: 0; + background: #f0f0f1; + border-bottom: 1px solid #dcdcde; +} + +.filter-drawer .filter-group { + margin: 0 25px 0 0; + width: calc( (100% - 75px) / 3); + min-width: 200px; + max-width: 320px; +} + +/* Adds a delay before fading in to avoid it "jumping" */ +@keyframes themes-fade-in { + 0% { + opacity: 0; + } + 50% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.control-panel-themes .customize-themes-full-container.animate { + animation: .6s themes-fade-in 1; +} + +.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count { + animation: .6s themes-fade-in 1; +} + +.control-panel-themes .filter-themes-count { + position: relative; + float: right; + line-height: 2.6; +} + +.control-panel-themes .filter-themes-count .themes-displayed { + font-weight: 600; + color: #50575e; +} + +.customize-themes-notifications { + margin: 0; +} + +.control-panel-themes .customize-themes-notifications .notice { + margin: 0 0 25px; +} + +.customize-themes-full-container .customize-themes-section { + display: none !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */ + overflow: hidden; +} + +.customize-themes-full-container .customize-themes-section.current-section { + display: list-item !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */ +} + +.control-section .customize-section-text-before { + padding: 0 0 8px 15px; + margin: 15px 0 0; + line-height: 16px; + border-bottom: 1px solid #dcdcde; + color: #50575e; +} + +.control-panel-themes .customize-themes-section-title { + width: 100%; + background: #fff; + box-shadow: none; + outline: none; + border-top: none; + border-bottom: 1px solid #dcdcde; + border-left: 4px solid #fff; + border-right: none; + cursor: pointer; + padding: 10px 15px; + position: relative; + text-align: left; + font-size: 14px; + font-weight: 600; + color: #50575e; + text-shadow: none; +} + +.control-panel-themes #accordion-section-installed_themes { + border-top: 1px solid #dcdcde; +} + +.control-panel-themes .theme-section { + margin: 0; + position: relative; +} + +.control-panel-themes .customize-themes-section-title:focus, +.control-panel-themes .customize-themes-section-title:hover { + border-left-color: #2271b1; + color: #2271b1; + background: #f6f7f7; +} + +.customize-themes-section-title:not(.selected):after { + content: ""; + display: block; + position: absolute; + top: 9px; + right: 15px; + width: 18px; + height: 18px; + border-radius: 100%; + border: 1px solid #c3c4c7; + background: #fff; +} + +.control-panel-themes .theme-section .customize-themes-section-title.selected:after { + content: "\f147"; + font: 16px/1 dashicons; + box-sizing: border-box; + width: 20px; + height: 20px; + padding: 3px 3px 1px 1px; /* Re-align the icon to the smaller grid */ + border-radius: 100%; + position: absolute; + top: 9px; + right: 15px; + background: #2271b1; + color: #fff; +} + +.control-panel-themes .customize-themes-section-title.selected { + color: #2271b1; +} + +#customize-theme-controls .themes.accordion-section-content { + position: relative; + left: 0; + padding: 0; + width: 100%; +} + +.loading .customize-themes-section .spinner { + display: block; + visibility: visible; + position: relative; + clear: both; + width: 20px; + height: 20px; + left: calc(50% - 10px); + float: none; + margin-top: 50px; +} + +.customize-themes-section .no-themes, +.customize-themes-section .no-themes-local { + display: none; +} + +.themes-section-installed_themes .theme .notice-success:not(.updated-message) { + display: none; /* Hide "installed" notice on installed themes tab. */ +} + +.customize-control-theme .theme { + width: 100%; + margin: 0; + border: 1px solid #dcdcde; + background: #fff; +} + +.customize-control-theme .theme .theme-name, .customize-control-theme .theme .theme-actions { + background: #fff; + border: none; +} + +.customize-control.customize-control-theme { /* override most properties on .customize-control */ + box-sizing: border-box; + width: 25%; + max-width: 600px; /* Max. screenshot size / 2 */ + margin: 0 25px 25px 0; + padding: 0; + clear: none; +} + +/* 5 columns above 2100px */ +@media screen and (min-width: 2101px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 125px ) / 5 - 1px ); /* 1px offset accounts for browser rounding, typical all grids */ + } +} + +/* 4 columns up to 2100px */ +@media screen and (min-width: 1601px) and (max-width: 2100px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 100px ) / 4 - 1px ); + } +} + +/* 3 columns up to 1600px */ +@media screen and (min-width: 1201px) and (max-width: 1600px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 75px ) / 3 - 1px ); + } +} + +/* 2 columns up to 1200px */ +@media screen and (min-width: 851px) and (max-width: 1200px) { + .customize-control.customize-control-theme { + width: calc( ( 100% - 50px ) / 2 - 1px ); + + } +} + +/* 1 column up to 850 px */ +@media screen and (max-width: 850px) { + .customize-control.customize-control-theme { + width: 100%; + } +} + +.wp-customizer .theme-browser .themes { + padding: 0 0 25px 25px; + transition: .18s margin-top linear; +} + +.wp-customizer .theme-browser .theme .theme-actions { + opacity: 1; +} + +#customize-controls h3.theme-name { + font-size: 15px; +} + +#customize-controls .theme-overlay .theme-name { + font-size: 32px; +} + +.customize-preview-header.themes-filter-bar { + position: fixed; + top: 0; + left: 300px; + width: calc(100% - 300px); + height: 46px; + background: #f0f0f1; + z-index: 10; + padding: 6px 25px; + box-sizing: border-box; + border-bottom: 1px solid #dcdcde; +} + +@media screen and (min-width: 1670px) { + .customize-preview-header.themes-filter-bar { + width: 82%; + right: 0; + left: initial; + } +} + +.themes-filter-bar .themes-filter-container { + margin: 0; + padding: 0; +} + +.themes-filter-bar .wp-filter-search { + line-height: 1.8; + padding: 6px 10px 6px 30px; + max-width: 100%; + width: 40%; + min-width: 300px; + position: absolute; + top: 6px; + left: 25px; + height: 32px; + margin: 1px 0; +} + +/* Unstick the filter bar on short windows/screens. This breakpoint is based on the + current length of .org feature filters assuming translations do not wrap lines. */ +@media screen and (max-height: 540px), screen and (max-width: 1018px) { + .customize-preview-header.themes-filter-bar { + position: relative; + left: 0; + width: 100%; + margin: 0 0 25px; + } + .filter-drawer { + top: 46px; + } + .wp-customizer .theme-browser .themes { + padding: 0 0 25px 25px; + overflow: hidden; + } + + .control-panel-themes .customize-themes-full-container { + margin-top: 0; + padding: 0; + height: 100%; + width: calc(100% - 300px); + } +} + +@media screen and (max-width: 1018px) { + .filter-drawer .filter-group { + width: calc( (100% - 50px) / 2); + } +} + +@media screen and (max-width: 900px) { + .customize-preview-header.themes-filter-bar { + height: 86px; + padding-top: 46px; + } + + .themes-filter-bar .wp-filter-search { + width: calc(100% - 50px); + margin: 0; + min-width: 200px; + } + + .filter-drawer { + top: 86px; + } + + .control-panel-themes .filter-themes-count { + float: left; + } +} + +@media screen and (max-width: 792px) { + .filter-drawer .filter-group { + width: calc( 100% - 25px); + } +} + +.control-panel-themes .customize-themes-mobile-back { + display: none; +} + +/* Mobile - toggle between themes and filters */ +@media screen and (max-width: 600px) { + + .filter-drawer { + top: 132px; + } + + .wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes { + display: block; + float: right; + } + + .control-panel-themes .customize-themes-full-container { + width: 100%; + margin: 0; + padding-top: 46px; + height: calc(100% - 46px); + z-index: 1; + display: none; + } + + .showing-themes .control-panel-themes .customize-themes-full-container { + display: block; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back { + display: block; + position: fixed; + top: 0; + left: 0; + background: #f0f0f1; + color: #3c434a; + border-radius: 0; + box-shadow: none; + border: none; + height: 46px; + width: 100%; + z-index: 10; + text-align: left; + text-shadow: none; + border-bottom: 1px solid #dcdcde; + border-left: 4px solid transparent; + margin: 0; + padding: 0; + font-size: 0; + overflow: hidden; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before { + left: 0; + top: 0; + height: 46px; + width: 26px; + display: block; + line-height: 2.3; + padding: 0 8px; + border-right: 1px solid #dcdcde; + } + + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover, + .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus { + color: #2271b1; + background: #f6f7f7; + border-left-color: #2271b1; + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; + } + + .showing-themes #customize-header-actions { + display: none; + } + + #customize-controls { + width: 100%; + } +} + +/* Details View */ +.wp-customizer .theme-overlay { + display: none; +} + +.wp-customizer.modal-open .theme-overlay { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 109; +} + +/* Avoid a z-index war by resetting elements that should be under the overlay. + This is likely required because of the way that sections and panels are positioned. */ +.wp-customizer.modal-open #customize-header-actions, +.wp-customizer.modal-open .control-panel-themes .filter-themes-count, +.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after { + z-index: -1; +} + +.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; +} + +.wp-customizer .theme-overlay .theme-backdrop { + background: rgba(240, 240, 241, 0.75); + position: fixed; + z-index: 110; +} + +.wp-customizer .theme-overlay .star-rating { + float: left; + margin-right: 8px; +} + +.wp-customizer .theme-rating .num-ratings { + line-height: 20px; +} + +.wp-customizer .theme-overlay .theme-wrap { + left: 90px; + right: 90px; + top: 45px; + bottom: 45px; + z-index: 120; +} + +.wp-customizer .theme-overlay .theme-actions { + text-align: right; /* Because there're only one or two actions, match the UI pattern of media modals and right-align the action. */ + padding: 10px 25px; + background: #f0f0f1; + border-top: 1px solid #dcdcde; +} + +.wp-customizer .theme-overlay .theme-actions .theme-install.preview { + margin-left: 8px; +} + +.control-panel-themes .theme-actions .delete-theme { + left: 15px; /* these override themes.css on mobile */ + right: auto; + bottom: auto; + position: absolute; +} + +.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content { + overflow: visible; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */ +} + +.wp-customizer .theme-header { + background: #f0f0f1; +} + +.wp-customizer .theme-overlay .theme-header button, +.wp-customizer .theme-overlay .theme-header .close:before { + color: #3c434a; +} + +.wp-customizer .theme-overlay .theme-header .close:focus, +.wp-customizer .theme-overlay .theme-header .close:hover, +.wp-customizer .theme-overlay .theme-header .right:focus, +.wp-customizer .theme-overlay .theme-header .right:hover, +.wp-customizer .theme-overlay .theme-header .left:focus, +.wp-customizer .theme-overlay .theme-header .left:hover { + background: #fff; + border-bottom: 4px solid #2271b1; + color: #2271b1; +} + +.wp-customizer .theme-overlay .theme-header .close:focus:before, +.wp-customizer .theme-overlay .theme-header .close:hover:before { + color: #2271b1; +} + +.wp-customizer .theme-overlay .theme-header button.disabled, +.wp-customizer .theme-overlay .theme-header button.disabled:hover, +.wp-customizer .theme-overlay .theme-header button.disabled:focus { + border-bottom: none; + background: transparent; + color: #c3c4c7; +} + +/* Small Screens */ +@media (max-width: 850px), (max-height: 472px) { + .wp-customizer .theme-overlay .theme-wrap { + left: 0; + right: 0; + top: 0; + bottom: 0; + } + + .wp-customizer .theme-browser .themes { + padding-right: 25px; + } +} + +/* Handle cheaters. */ +body.cheatin { + font-size: medium; + height: auto; + background: #fff; + border: 1px solid #c3c4c7; + margin: 50px auto 2em; + padding: 1em 2em; + max-width: 700px; + min-width: 0; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +body.cheatin h1 { + border-bottom: 1px solid #dcdcde; + clear: both; + color: #50575e; + font-size: 24px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + margin: 30px 0 0; + padding: 0 0 7px; +} + +body.cheatin p { + font-size: 14px; + line-height: 1.5; + margin: 25px 0 20px; +} + +/** + * Widgets and Menus common styles + */ + +/* higher specificity than .wp-core-ui .button */ +#customize-theme-controls .add-new-widget, +#customize-theme-controls .add-new-menu-item { + cursor: pointer; + float: right; + margin: 0 0 0 10px; + transition: all 0.2s; + -webkit-user-select: none; + user-select: none; + outline: none; +} + +.reordering .add-new-widget, +.reordering .add-new-menu-item { + opacity: 0.2; + pointer-events: none; + cursor: not-allowed; /* doesn't work in conjunction with pointer-events */ +} + +.add-new-widget:before, +.add-new-menu-item:before, +#available-menu-items .new-content-item .add-content:before { + content: "\f132"; + display: inline-block; + position: relative; + left: -2px; + top: 0; + font: normal 20px/1 dashicons; + vertical-align: middle; + transition: all 0.2s; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Reordering */ +.reorder-toggle { + float: right; + padding: 5px 8px; + text-decoration: none; + cursor: pointer; + outline: none; +} + +.reorder, +.reordering .reorder-done { + display: block; + padding: 5px 8px; +} + +.reorder-done, +.reordering .reorder { + display: none; +} + +.widget-reorder-nav span, +.menu-item-reorder-nav button { + position: relative; + overflow: hidden; + float: left; + display: block; + width: 33px; /* was 42px for mobile */ + height: 43px; + color: #8c8f94; + text-indent: -9999px; + cursor: pointer; + outline: none; +} + +.menu-item-reorder-nav button { + width: 30px; + height: 40px; + background: transparent; + border: none; + box-shadow: none; +} + +.widget-reorder-nav span:before, +.menu-item-reorder-nav button:before { + display: inline-block; + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + font: normal 20px/43px dashicons; + text-align: center; + text-indent: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.widget-reorder-nav span:hover, +.widget-reorder-nav span:focus, +.menu-item-reorder-nav button:hover, +.menu-item-reorder-nav button:focus { + color: #1d2327; + background: #f0f0f1; +} + +.move-widget-down:before, +.menus-move-down:before { + content: "\f347"; +} + +.move-widget-up:before, +.menus-move-up:before { + content: "\f343"; +} + +#customize-theme-controls .first-widget .move-widget-up, +#customize-theme-controls .last-widget .move-widget-down, +.move-up-disabled .menus-move-up, +.move-down-disabled .menus-move-down, +.move-right-disabled .menus-move-right, +.move-left-disabled .menus-move-left { + color: #dcdcde; + background-color: #fff; + cursor: default; + pointer-events: none; +} + +/** + * New widget and Add-menu-items modes and panels + */ + +.wp-full-overlay-main { + right: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */ + width: 100%; +} + +body.adding-widget .add-new-widget, +body.adding-widget .add-new-widget:hover, +.adding-menu-items .add-new-menu-item, +.adding-menu-items .add-new-menu-item:hover, +.add-menu-toggle.open, +.add-menu-toggle.open:hover { + background: #f0f0f1; + border-color: #8c8f94; + color: #2c3338; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); +} + +body.adding-widget .add-new-widget:before, +.adding-menu-items .add-new-menu-item:before, +#accordion-section-add_menu .add-new-menu-item.open:before { + transform: rotate(45deg); +} + +#available-widgets, +#available-menu-items { + position: absolute; + top: 0; + bottom: 0; + left: -301px; + visibility: hidden; + overflow-x: hidden; + overflow-y: auto; + width: 300px; + margin: 0; + z-index: 4; + background: #f0f0f1; + transition: left .18s; + border-right: 1px solid #dcdcde; +} + +#available-widgets .customize-section-title, +#available-menu-items .customize-section-title { + display: none; +} + +#available-widgets-list { + top: 60px; + position: absolute; + overflow: auto; + bottom: 0; + width: 100%; + border-top: 1px solid #dcdcde; +} + +.no-widgets-found #available-widgets-list { + border-top: none; +} + +#available-widgets-filter { + position: fixed; + top: 0; + z-index: 1; + width: 300px; + background: #f0f0f1; +} + +/* search field container */ +#available-widgets-filter, +#available-menu-items-search .accordion-section-title { + padding: 13px 15px; + box-sizing: border-box; +} + +#available-widgets-filter input, +#available-menu-items-search input { + width: 100%; + min-height: 32px; + margin: 1px 0; + padding: 0 30px; +} + +#available-widgets-filter input::-ms-clear, +#available-menu-items-search input::-ms-clear { + display: none; /* remove the "x" in IE, which conflicts with the "x" icon on button.clear-results */ +} + +#available-menu-items-search .search-icon, +#available-widgets-filter .search-icon { + display: block; + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + left: 16px; + width: 30px; + height: 30px; + line-height: 2.1; + text-align: center; + color: #646970; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results { + position: absolute; + top: 15px; /* 13 container padding +1 input margin +1 input border */ + right: 16px; + width: 30px; + height: 30px; + padding: 0; + border: 0; + cursor: pointer; + background: none; + color: #d63638; + text-decoration: none; + outline: 0; +} + +#available-widgets-filter .clear-results, +#available-menu-items-search .clear-results, +#available-menu-items-search.loading .clear-results.is-visible { + display: none; +} + +#available-widgets-filter .clear-results.is-visible, +#available-menu-items-search .clear-results.is-visible { + display: block; +} + +#available-widgets-filter .clear-results:before, +#available-menu-items-search .clear-results:before { + content: "\f335"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#available-widgets-filter .clear-results:hover, +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:hover, +#available-menu-items-search .clear-results:focus { + color: #d63638; +} + +#available-widgets-filter .clear-results:focus, +#available-menu-items-search .clear-results:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +#available-menu-items-search .search-icon:after, +#available-widgets-filter .search-icon:after, +.themes-filter-bar .search-icon:after { + content: "\f179"; + font: normal 20px/1 dashicons; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.themes-filter-bar .search-icon { + position: absolute; + top: 7px; + left: 26px; + z-index: 1; + color: #646970; + height: 30px; + width: 30px; + line-height: 2; + text-align: center; +} + +.no-widgets-found-message { + display: none; + margin: 0; + padding: 0 15px; + line-height: inherit; +} + +.no-widgets-found .no-widgets-found-message { + display: block; +} + +#available-widgets .widget-top, +#available-widgets .widget-top:hover, +#available-menu-items .item-top, +#available-menu-items .item-top:hover { + border: none; + background: transparent; + box-shadow: none; +} + +#available-widgets .widget-tpl, +#available-menu-items .item-tpl { + position: relative; + padding: 15px 15px 15px 60px; + background: #fff; + border-bottom: 1px solid #dcdcde; + border-left: 4px solid #fff; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; + cursor: pointer; + display: none; +} + +#available-widgets .widget, +#available-menu-items .item { + position: static; +} + + +/* Responsive */ +.customize-controls-preview-toggle { + display: none; +} + +@media only screen and (max-width: 782px) { + .wp-customizer .theme:not(.active):hover .theme-actions, + .wp-customizer .theme:not(.active):focus .theme-actions { + display: block; + } + + .wp-customizer .theme-browser .theme.active .theme-name span { + display: inline; + } + + .customize-control-header button.random .dice { + margin-top: 0; + } + + .customize-control-radio .customize-inside-control-row, + .customize-control-checkbox .customize-inside-control-row, + .customize-control-nav_menu_auto_add .customize-inside-control-row { + margin-left: 32px; + } + + .customize-control-radio input, + .customize-control-checkbox input, + .customize-control-nav_menu_auto_add input { + margin-left: -32px; + } + + .customize-control input[type="radio"] + label + br, + .customize-control input[type="checkbox"] + label + br { + line-height: 2.5; /* For widgets checkboxes */ + } + + .customize-control .date-time-fields select { + height: 39px; + } + + .date-time-fields .date-input.month { + width: 79px; + } + + .date-time-fields .date-input.day, + .date-time-fields .date-input.hour, + .date-time-fields .date-input.minute { + width: 55px; + } + + .date-time-fields .date-input.year { + width: 80px; + } + + #customize-control-changeset_preview_link a { + bottom: 16px; + } + + .preview-link-wrapper .customize-copy-preview-link.preview-control-element.button { + bottom: 10px; + } + + .media-widget-control .media-widget-buttons .button.edit-media, + .media-widget-control .media-widget-buttons .button.change-media, + .media-widget-control .media-widget-buttons .button.select-media { + margin-top: 12px; + } + + .wp-core-ui .themes-filter-bar .feature-filter-toggle { + margin: 3px 0 3px 25px; + } +} + +@media screen and (max-width: 1200px) { + .outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, + .adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, + .adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { + left: 67%; + } +} + +@media screen and (max-width: 640px) { + + /* when the sidebar is collapsed and switching to responsive view, + bring it back see ticket #35220 */ + .wp-full-overlay.collapsed #customize-controls { + margin-left: 0; + } + + .wp-full-overlay-sidebar .wp-full-overlay-sidebar-content { + bottom: 0; + } + + .customize-controls-preview-toggle { + display: block; + position: absolute; + top: 0; + left: 48px; + line-height: 2.6; + font-size: 14px; + padding: 0 12px 4px; + margin: 0; + height: 45px; + background: #f0f0f1; + border: 0; + border-right: 1px solid #dcdcde; + border-top: 4px solid #f0f0f1; + color: #50575e; + cursor: pointer; + transition: color .1s ease-in-out, background .1s ease-in-out; + } + + #customize-footer-actions, + /*#customize-preview,*/ + .customize-controls-preview-toggle .controls, + .preview-only .wp-full-overlay-sidebar-content, + .preview-only .customize-controls-preview-toggle .preview { + display: none; + } + + .preview-only #customize-save-button-wrapper { + margin-top: -46px; + } + + .customize-controls-preview-toggle .preview:before, + .customize-controls-preview-toggle .controls:before { + font: normal 20px/1 dashicons; + content: "\f177"; + position: relative; + top: 4px; + margin-right: 6px; + } + + .customize-controls-preview-toggle .controls:before { + content: "\f540"; + } + + .preview-only #customize-controls { + height: 45px; + } + + .preview-only #customize-preview, + .preview-only .customize-controls-preview-toggle .controls { + display: block; + } + + .wp-core-ui.wp-customizer .button { + min-height: 30px; + padding: 0 14px; + line-height: 2; + font-size: 14px; + vertical-align: middle; + } + + #customize-control-changeset_status .customize-inside-control-row { + padding-top: 15px; + } + + body.adding-widget div#available-widgets, + body.adding-menu-items div#available-menu-items, + body.outer-section-open div#customize-sidebar-outer-content { + width: 100%; + } + + #available-widgets .customize-section-title, + #available-menu-items .customize-section-title { + display: block; + margin: 0; + } + + #available-widgets .customize-section-back, + #available-menu-items .customize-section-back { + height: 69px; + } + + #available-widgets .customize-section-title h3, + #available-menu-items .customize-section-title h3 { + font-size: 20px; + font-weight: 200; + padding: 9px 10px 12px 14px; + margin: 0; + line-height: 24px; + color: #50575e; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-widgets .customize-section-title .customize-action, + #available-menu-items .customize-section-title .customize-action { + font-size: 13px; + display: block; + font-weight: 400; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + #available-widgets-filter { + position: relative; + width: 100%; + height: auto; + } + + #available-widgets-list { + top: 130px; + } + + #available-menu-items-search .clear-results, + #available-menu-items-search .search-icon { + top: 85px; /* 70 section title height + 13 container padding +1 input margin +1 input border */ + } + + .reorder, + .reordering .reorder-done { + padding: 8px; + } + + .wp-core-ui .themes-filter-bar .feature-filter-toggle { + margin: 0; + } +} + +@media screen and (max-width: 600px) { + .wp-full-overlay.expanded { + margin-left: 0; + } + + body.adding-widget div#available-widgets, + body.adding-menu-items div#available-menu-items, + body.outer-section-open div#customize-sidebar-outer-content { + top: 46px; + z-index: 10; + } + + body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content { + left: -100%; + } + + body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { + left: 0; + } +} diff --git a/tools/storybook/wordpress/css/customize-controls.min.css b/tools/storybook/wordpress/css/customize-controls.min.css new file mode 100644 index 00000000000..e55d086a5b8 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-controls.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-left:auto;margin-right:auto;max-width:366px;min-height:64px;width:auto;padding:25px 25px 25px 109px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:left;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;left:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-right:10px;margin-top:0}#customize-controls .description{color:#50575e}#customize-save-button-wrapper{float:right;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:left;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}#customize-save-button-wrapper .save.has-next-sibling{border-radius:3px 0 0 3px}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;left:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#f0f0f1;transition:left .18s;border-right:1px solid #dcdcde;border-left:1px solid #dcdcde;height:100%}@media (prefers-reduced-motion:reduce){#customize-sidebar-outer-content{transition:none}}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;left:100%;transition:left .18s}@media (prefers-reduced-motion:reduce){.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{transition:none}}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{left:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{left:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-left:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:0 3px 3px 0;padding-left:0;padding-right:0;box-shadow:none;font-size:14px;width:30px;float:left;transform:none;margin-top:0;line-height:2}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #dcdcde}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#f0f0f1}#customize-controls .customize-info{border:none;border-bottom:1px solid #dcdcde;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #dcdcde;box-sizing:content-box;width:100%;margin-left:-12px;padding-left:12px;padding-right:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-left:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;left:0;top:-2px}#customize-controls .date-input:invalid{border-color:#d63638}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #dcdcde}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-left:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;right:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{left:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{left:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.85714286;border-top:1px solid #dcdcde;border-left:none;border-right:none;text-indent:-999px;color:#fff;min-height:40px}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-right:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:65px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-left:-12px;padding:12px;background:#fff;border-bottom:1px solid #dcdcde;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#50575e;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#2c3338}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:1.9}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;box-shadow:none;-webkit-appearance:none;background:0 0;color:#50575e;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#2271b1}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#50575e;display:none;background:#fff;padding:12px 15px;border-top:1px solid #dcdcde}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#50575e;background-color:#fff;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}@media (prefers-reduced-motion:reduce){#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{transition:none}}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#50575e;background-color:#fff;border-left:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f345";color:#a7aaad}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#50575e;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1}#accordion-section-themes+.control-section{border-top:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f6f7f7}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#2271b1}#customize-theme-controls .control-section.open{border-bottom:1px solid #f0f0f1}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#f0f0f1!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#dcdcde}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #dcdcde}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}@media (prefers-reduced-motion:reduce){#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{transition:none}}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;left:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #dcdcde;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #dcdcde;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 10px 12px 14px;margin:0;line-height:21px;color:#50575e}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:41px;padding:0 2px 0 0;background:#f0f0f1;border:none;border-top:4px solid #f0f0f1;border-right:1px solid #dcdcde;color:#3c434a;text-align:left;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:71px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #dcdcde;border-left:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-left:48px;border-left:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#50575e;border-left-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#2271b1;border-top-color:#2271b1;box-shadow:none;outline:1px solid transparent}#customize-theme-controls .accordion-section-title:focus .customize-action{outline:1px solid transparent;outline-offset:1px}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f341";position:relative;left:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#f0f0f1;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-left:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:right}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=range],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:1.75;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:1.4;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f504";top:3px;position:relative;padding-left:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:1.6;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:1.6}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#f0f0f1;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 0 5px 1px;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 0 2px 6px;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #d63638}.customize-control-dropdown-pages .add-new-toggle{margin-left:1px;font-weight:600;line-height:2.2}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#f0f0f1;border-right:1px solid #dcdcde}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #d63638;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-right:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #d63638}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #dcdcde;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #dcdcde}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-right:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-left:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#1d2327;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;border:2px solid #f0f0f1;-webkit-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:20px;background:#f0f0f1}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#2c3338}.customize-control .dropdown-status{color:#2c3338;background:#f0f0f1;display:none;max-width:112px}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#50575e;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .button-add-media,.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #c3c4c7;box-sizing:border-box;padding:9px 0;line-height:1.6}.customize-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.customize-control .attachment-media-view .button-add-media:hover{background-color:#fff}.customize-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#50575e;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:"";position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #72aee6;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#50575e;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:auto;right:10px}.customize-control-header .header-view .close:focus{outline:1px solid #4f94d4}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 3px 1px rgba(79,148,212,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-right:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-left:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-right:0;border-left:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-left:12px;margin-right:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#50575e;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;border-left:none;border-right:none;margin:0 0 15px;padding-right:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-right:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}#customize-notifications-area .notification-message button.switch-to-editor{display:block;margin-top:6px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;left:0;transition:.18s left ease-in-out;margin:0 0 0 300px;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#f0f0f1;z-index:20}@media (prefers-reduced-motion:reduce){.control-panel-themes .customize-themes-full-container{transition:none}}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;right:0;left:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#f0f0f1}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:right;margin:3px 0 3px 25px}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 5px 0 0;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;left:0;padding:25px 0 25px 25px;border-top:0;margin:0;background:#f0f0f1;border-bottom:1px solid #dcdcde}.filter-drawer .filter-group{margin:0 25px 0 0;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:right;line-height:2.6}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#50575e}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 0 8px 15px;margin:15px 0 0;line-height:16px;border-bottom:1px solid #dcdcde;color:#50575e}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;border-right:none;cursor:pointer;padding:10px 15px;position:relative;text-align:left;font-size:14px;font-weight:600;color:#50575e;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #dcdcde}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-left-color:#2271b1;color:#2271b1;background:#f6f7f7}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;right:15px;width:18px;height:18px;border-radius:100%;border:1px solid #c3c4c7;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 3px 1px 1px;border-radius:100%;position:absolute;top:9px;right:15px;background:#2271b1;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#2271b1}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;left:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #dcdcde;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 25px 25px 0;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;left:300px;width:calc(100% - 300px);height:46px;background:#f0f0f1;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #dcdcde}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;right:0;left:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:1.8;padding:6px 10px 6px 30px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;left:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;left:0;width:100%;margin:0 0 25px}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:left}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:right}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;left:0;background:#f0f0f1;color:#3c434a;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:left;text-shadow:none;border-bottom:1px solid #dcdcde;border-left:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{left:0;top:0;height:46px;width:26px;display:block;line-height:2.3;padding:0 8px;border-right:1px solid #dcdcde}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(240,240,241,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:left;margin-right:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:right;padding:10px 25px;background:#f0f0f1;border-top:1px solid #dcdcde}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-left:8px}.control-panel-themes .theme-actions .delete-theme{left:15px;right:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#f0f0f1}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#3c434a}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #2271b1;color:#2271b1}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#2271b1}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#c3c4c7}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-right:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;border:1px solid #c3c4c7;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 1px rgba(0,0,0,.04)}body.cheatin h1{border-bottom:1px solid #dcdcde;clear:both;color:#50575e;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin:0 0 0 10px;transition:all .2s;-webkit-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#8c8f94;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#1d2327;background:#f0f0f1}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#dcdcde;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{right:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#f0f0f1;border-color:#8c8f94;color:#2c3338;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#f0f0f1;transition:left .18s;border-right:1px solid #dcdcde}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #dcdcde}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#f0f0f1}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;min-height:32px;margin:1px 0;padding:0 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;left:16px;width:30px;height:30px;line-height:2.1;text-align:center;color:#646970}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;right:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#d63638;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#d63638}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;left:26px;z-index:1;color:#646970;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px 15px 15px 60px;background:#fff;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:2.5}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 0 3px 25px}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{left:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-left:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;left:48px;line-height:2.6;font-size:14px;padding:0 12px 4px;margin:0;height:45px;background:#f0f0f1;border:0;border-right:1px solid #dcdcde;border-top:4px solid #f0f0f1;color:#50575e;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-right:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{min-height:30px;padding:0 14px;line-height:2;font-size:14px;vertical-align:middle}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#50575e;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}}@media screen and (max-width:600px){.wp-full-overlay.expanded{margin-left:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{left:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{left:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-nav-menus-rtl.css b/tools/storybook/wordpress/css/customize-nav-menus-rtl.css new file mode 100644 index 00000000000..677a29e22e6 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-nav-menus-rtl.css @@ -0,0 +1,884 @@ +/*! This file is auto-generated */ +#customize-theme-controls #accordion-section-menu_locations { + position: relative; + margin-top: 30px; +} + +#customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { + border-bottom-color: #dcdcde; + margin-top: 15px; +} + +#customize-theme-controls .customize-section-title-nav_menus-heading, +#customize-theme-controls .customize-section-title-menu_locations-heading, +#customize-theme-controls .customize-section-title-menu_locations-description { + padding: 0 12px; +} + +#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description { + /* Override the default italic style for control descriptions */ + font-style: normal; +} + +.menu-in-location, +.menu-in-locations { + display: block; + font-weight: 600; + font-size: 10px; +} + +#customize-controls .theme-location-set, +#customize-controls .control-section .accordion-section-title:focus .menu-in-location, +#customize-controls .control-section .accordion-section-title:hover .menu-in-location { + color: #50575e; +} + +/* The `edit-menu` and `create-menu` buttons also use the `button-link` class. */ +.customize-control-nav_menu_location .edit-menu, +.customize-control-nav_menu_location .create-menu { + margin-right: 6px; + vertical-align: middle; + line-height: 2.2; +} + +#customize-controls .customize-control-nav_menu_name { + margin-bottom: 12px; +} + +.customize-control-nav_menu_name p:last-of-type { + margin-bottom: 0; +} + +#customize-new-menu-submit { + float: left; + min-width: 85px; +} + +.wp-customizer .menu-item-bar .menu-item-handle, +.wp-customizer .menu-item-settings, +.wp-customizer .menu-item-settings .description-thin { + box-sizing: border-box; +} + +.wp-customizer .menu-item-bar { + margin: 0; +} + +.wp-customizer .menu-item-bar .menu-item-handle { + width: 100%; + max-width: 100%; + background: #fff; +} + +.wp-customizer .menu-item-handle .item-title { + margin-left: 0; +} + +.wp-customizer .menu-item-handle .item-type { + padding: 1px 5px 0 21px; + float: left; + text-align: left; +} + +.wp-customizer .menu-item-handle:hover { + z-index: 8; +} + +.customize-control-nav_menu_item.has-notifications .menu-item-handle { + border-right: 4px solid #72aee6; +} + +.wp-customizer .menu-item-settings { + max-width: 100%; + overflow: hidden; + z-index: 8; + padding: 10px; + background: #f0f0f1; + border: 1px solid #8c8f94; + border-top: none; +} + +.wp-customizer .menu-item-settings .description-thin { + width: 100%; + height: auto; + margin: 0 0 8px; +} + +.wp-customizer .menu-item-settings input[type="text"] { + width: 100%; +} + +.wp-customizer .menu-item-settings .submitbox { + margin: 0; + padding: 0; +} + +.wp-customizer .menu-item-settings .link-to-original { + padding: 5px 0; + border: none; + font-style: normal; + margin: 0; + width: 100%; +} + +.wp-customizer .menu-item .submitbox .submitdelete { + float: right; + margin: 6px 0 0; + padding: 0; + cursor: pointer; +} + + +/** + * Menu items reordering styles + */ + +.menu-item-reorder-nav { + display: none; + background-color: #fff; + position: absolute; + top: 0; + left: 0; +} + +.menus-move-left:before { + content: "\f345"; +} + +.menus-move-right:before { + content: "\f341"; +} + +.reordering .menu-item .item-controls, +.reordering .menu-item .item-type { + display: none; +} + +.reordering .menu-item-reorder-nav { + display: block; +} + +.customize-control input.menu-name-field { + width: 100%; /* Override the 98% default for customizer inputs, to align with the size of menu items. */ +} + +.wp-customizer .menu-item .item-edit { + position: absolute; + left: -19px; + top: 2px; + display: block; + width: 30px; + height: 38px; + margin-left: 0 !important; + box-shadow: none; + outline: none; + overflow: hidden; + cursor: pointer; + text-align: center; +} + +.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before { + content: "\f142"; +} + +.wp-customizer .menu-item-settings p.description { + font-style: normal; +} + +.wp-customizer .menu-settings dl { + margin: 12px 0 0; + padding: 0; +} + +.wp-customizer .menu-settings .checkbox-input { + margin-top: 8px; +} + +.wp-customizer .menu-settings .menu-theme-locations { + border-top: 1px solid #c3c4c7; +} + +.wp-customizer .menu-settings { + margin-top: 36px; + border-top: none; +} + +.wp-customizer .menu-location-settings { + margin-top: 12px; + border-top: none; +} + +.wp-customizer .control-section-nav_menu .menu-location-settings { + margin-top: 24px; + border-top: 1px solid #dcdcde; +} + +.wp-customizer .control-section-nav_menu .menu-location-settings, +.customize-control-nav_menu_auto_add { + padding-top: 12px; +} + +.menu-location-settings .customize-control-checkbox .theme-location-set { + line-height: 1; +} + +.customize-control-nav_menu_auto_add label { + vertical-align: top; +} + +.menu-location-settings .new-menu-locations-widget-note { + display: block; +} + +.customize-control-menu { + margin-top: 4px; +} + +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { + color: #50575e; +} + +/* Screen Options */ +.customize-screen-options-toggle { + background: none; + border: none; + color: #50575e; + cursor: pointer; + margin: 0; + padding: 20px; + position: absolute; + left: 0; + top: 30px; +} + +#customize-controls .customize-info .customize-help-toggle { + padding: 20px; +} + +#customize-controls .customize-info .customize-help-toggle:before { + padding: 4px; +} + +.customize-screen-options-toggle:hover, +.customize-screen-options-toggle:active, +.customize-screen-options-toggle:focus, +.active-menu-screen-options .customize-screen-options-toggle, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #2271b1; +} + +.customize-screen-options-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:focus { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.customize-screen-options-toggle:before { + -moz-osx-font-smoothing: grayscale; + border: none; + content: "\f111"; + display: block; + font: 18px/1 dashicons; + padding: 5px; + text-align: center; + text-decoration: none !important; + text-indent: 0; + right: 6px; + position: absolute; + top: 6px; +} + +.customize-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before { + border-radius: 100%; +} + +.wp-customizer #screen-options-wrap { + display: none; + background: #fff; + border-top: 1px solid #dcdcde; + padding: 4px 15px 15px; +} + +.wp-customizer .metabox-prefs label { + display: block; + padding-left: 0; + line-height: 30px; +} + +/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +.wp-customizer .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +.rtl .wp-customizer .toggle-indicator { + text-indent: 1px; /* account for the dashicon alignment */ +} + +.wp-customizer .menu-item .item-edit .toggle-indicator:before, +#available-menu-items .accordion-section-title .toggle-indicator:before { + content: "\f140"; + display: block; + padding: 1px 0 1px 2px; + speak: never; + border-radius: 50%; + color: #787c82; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.control-section-nav_menu .field-link-target, +.control-section-nav_menu .field-title-attribute, +.control-section-nav_menu .field-css-classes, +.control-section-nav_menu .field-xfn, +.control-section-nav_menu .field-description { + display: none; +} + +.control-section-nav_menu.field-link-target-active .field-link-target, +.control-section-nav_menu.field-title-attribute-active .field-title-attribute, +.control-section-nav_menu.field-css-classes-active .field-css-classes, +.control-section-nav_menu.field-xfn-active .field-xfn, +.control-section-nav_menu.field-description-active .field-description { + display: block; +} + +/* WARNING: The 20px factor is hard-coded in JS. */ +.menu-item-depth-0 { margin-right: 0; } +.menu-item-depth-1 { margin-right: 20px; } +.menu-item-depth-2 { margin-right: 40px; } +.menu-item-depth-3 { margin-right: 60px; } +.menu-item-depth-4 { margin-right: 80px; } +.menu-item-depth-5 { margin-right: 100px; } +.menu-item-depth-6 { margin-right: 120px; } +.menu-item-depth-7 { margin-right: 140px; } +.menu-item-depth-8 { margin-right: 160px; } /* Not likely to be used or useful beyond this depth */ +.menu-item-depth-9 { margin-right: 180px; } +.menu-item-depth-10 { margin-right: 200px; } +.menu-item-depth-11 { margin-right: 220px; } + +/* @todo handle .menu-item-settings width */ +.menu-item-depth-0 > .menu-item-bar { margin-left: 0; } +.menu-item-depth-1 > .menu-item-bar { margin-left: 20px; } +.menu-item-depth-2 > .menu-item-bar { margin-left: 40px; } +.menu-item-depth-3 > .menu-item-bar { margin-left: 60px; } +.menu-item-depth-4 > .menu-item-bar { margin-left: 80px; } +.menu-item-depth-5 > .menu-item-bar { margin-left: 100px; } +.menu-item-depth-6 > .menu-item-bar { margin-left: 120px; } +.menu-item-depth-7 > .menu-item-bar { margin-left: 140px; } +.menu-item-depth-8 > .menu-item-bar { margin-left: 160px; } +.menu-item-depth-9 > .menu-item-bar { margin-left: 180px; } +.menu-item-depth-10 > .menu-item-bar { margin-left: 200px; } +.menu-item-depth-11 > .menu-item-bar { margin-left: 220px; } + +/* Submenu left margin. */ +.menu-item-depth-0 .menu-item-transport { margin-right: 0; } +.menu-item-depth-1 .menu-item-transport { margin-right: -20px; } +.menu-item-depth-3 .menu-item-transport { margin-right: -60px; } +.menu-item-depth-4 .menu-item-transport { margin-right: -80px; } +.menu-item-depth-2 .menu-item-transport { margin-right: -40px; } +.menu-item-depth-5 .menu-item-transport { margin-right: -100px; } +.menu-item-depth-6 .menu-item-transport { margin-right: -120px; } +.menu-item-depth-7 .menu-item-transport { margin-right: -140px; } +.menu-item-depth-8 .menu-item-transport { margin-right: -160px; } +.menu-item-depth-9 .menu-item-transport { margin-right: -180px; } +.menu-item-depth-10 .menu-item-transport { margin-right: -200px; } +.menu-item-depth-11 .menu-item-transport { margin-right: -220px; } + +/* WARNING: The 20px factor is hard-coded in JS. */ +.reordering .menu-item-depth-0 { margin-right: 0; } +.reordering .menu-item-depth-1 { margin-right: 15px; } +.reordering .menu-item-depth-2 { margin-right: 30px; } +.reordering .menu-item-depth-3 { margin-right: 45px; } +.reordering .menu-item-depth-4 { margin-right: 60px; } +.reordering .menu-item-depth-5 { margin-right: 75px; } +.reordering .menu-item-depth-6 { margin-right: 90px; } +.reordering .menu-item-depth-7 { margin-right: 105px; } +.reordering .menu-item-depth-8 { margin-right: 120px; } /* Not likely to be used or useful beyond this depth */ +.reordering .menu-item-depth-9 { margin-right: 135px; } +.reordering .menu-item-depth-10 { margin-right: 150px; } +.reordering .menu-item-depth-11 { margin-right: 165px; } + +.reordering .menu-item-depth-0 > .menu-item-bar { margin-left: 0; } +.reordering .menu-item-depth-1 > .menu-item-bar { margin-left: 15px; } +.reordering .menu-item-depth-2 > .menu-item-bar { margin-left: 30px; } +.reordering .menu-item-depth-3 > .menu-item-bar { margin-left: 45px; } +.reordering .menu-item-depth-4 > .menu-item-bar { margin-left: 60px; } +.reordering .menu-item-depth-5 > .menu-item-bar { margin-left: 75px; } +.reordering .menu-item-depth-6 > .menu-item-bar { margin-left: 90px; } +.reordering .menu-item-depth-7 > .menu-item-bar { margin-left: 105px; } +.reordering .menu-item-depth-8 > .menu-item-bar { margin-left: 120px; } +.reordering .menu-item-depth-9 > .menu-item-bar { margin-left: 135px; } +.reordering .menu-item-depth-10 > .menu-item-bar { margin-left: 150px; } +.reordering .menu-item-depth-11 > .menu-item-bar { margin-left: 165px; } + +.control-section-nav_menu.menu .menu-item-edit-active { + margin-right: 0; +} + +.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar { + margin-left: 0; +} + +.control-section-nav_menu.menu .sortable-placeholder { + margin-top: 0; + margin-bottom: 1px; + max-width: calc(100% - 2px); + float: right; + display: list-item; + border-color: #a7aaad; +} + +.menu-item-transport li.customize-control { + float: none; +} + +.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar { + margin-top: 0; +} + +/** + * Add-menu-items mode + */ + +.adding-menu-items .control-section { + opacity: .4; +} + +.adding-menu-items .control-panel.control-section, +.adding-menu-items .control-section.open { + opacity: 1; +} + +.menu-item-bar .item-delete { + color: #d63638; + position: absolute; + top: 2px; + left: -19px; + width: 30px; + height: 38px; + cursor: pointer; + display: none; +} + +.menu-item-bar .item-delete:before { + content: "\f335"; + position: absolute; + top: 9px; + right: 5px; + border-radius: 50%; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.menu-item-bar .item-delete:hover, +.menu-item-bar .item-delete:focus { + box-shadow: none; + outline: none; + color: #d63638; +} + +.adding-menu-items .menu-item-bar .item-edit { + display: none; +} + +.adding-menu-items .menu-item-bar .item-delete { + display: block; +} + +/** + * Styles for menu-item addition panel + */ + +#available-menu-items.opening { + overflow-y: hidden; /* avoid scrollbar jitter with animating heights */ +} + +#available-menu-items #available-menu-items-search.open { + height: 100%; + border-bottom: none; +} + +#available-menu-items .accordion-section-title { + border-right: none; + border-left: none; + background: #fff; + transition: background-color 0.15s; + /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + -webkit-user-select: auto; + user-select: auto; +} + +#available-menu-items .open .accordion-section-title, +#available-menu-items #available-menu-items-search .accordion-section-title { + background: #f0f0f1; +} + +/* rework the arrow indicator implementation for NVDA bug see #32715 */ +#available-menu-items .accordion-section-title:after { + content: none !important; +} + +#available-menu-items .accordion-section-title:hover .toggle-indicator:before, +#available-menu-items .button-link:hover .toggle-indicator:before, +#available-menu-items .button-link:focus .toggle-indicator:before { + color: #1d2327; +} + +#available-menu-items .open .accordion-section-title .toggle-indicator:before { + content: "\f142"; + color: #1d2327; +} + +#available-menu-items .available-menu-items-list { + overflow-y: auto; + max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ + background: transparent; +} + +#available-menu-items .accordion-section-title button { + display: block; + width: 28px; + height: 35px; + position: absolute; + top: 5px; + left: 5px; + box-shadow: none; + outline: none; + cursor: pointer; + text-align: center; +} + +#available-menu-items .accordion-section-title .no-items, +#available-menu-items .cannot-expand .accordion-section-title .spinner, +#available-menu-items .cannot-expand .accordion-section-title > button { + display: none; +} + +#available-menu-items-search.cannot-expand .accordion-section-title .spinner { + display: block; +} + +#available-menu-items .cannot-expand .accordion-section-title .no-items { + float: left; + color: #50575e; + font-weight: 400; + margin-right: 5px; +} + +#available-menu-items .accordion-section-content { + max-height: 290px; + margin: 0; + padding: 0; + position: relative; + background: transparent; +} + +#available-menu-items .accordion-section-content .available-menu-items-list { + margin: 0 0 45px; + padding: 1px 15px 15px; +} + +#available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ + margin-bottom: 0; +} + +#new-custom-menu-item .accordion-section-content { + padding: 0 15px 15px; +} + +#available-menu-items .menu-item-tpl { + margin: 0; +} + +#custom-menu-item-name.invalid, +#custom-menu-item-url.invalid, +.edit-menu-item-url.invalid, +.menu-name-field.invalid, +.menu-name-field.invalid:focus, +#available-menu-items .new-content-item .create-item-input.invalid, +#available-menu-items .new-content-item .create-item-input.invalid:focus { + border: 1px solid #d63638; +} + +#available-menu-items .menu-item-handle .item-type { + padding-left: 0; +} + +#available-menu-items .menu-item-handle .item-title { + padding-right: 20px; +} + +#available-menu-items .menu-item-handle { + cursor: pointer; +} + +#available-menu-items .menu-item-handle { + box-shadow: none; + margin-top: -1px; +} + +#available-menu-items .menu-item-handle:hover { + z-index: 1; +} + +#available-menu-items .item-title h4 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-menu-items .item-add { + position: absolute; + top: 1px; + right: 1px; + color: #8c8f94; + width: 30px; + height: 38px; + box-shadow: none; + outline: none; + cursor: pointer; + text-align: center; +} + +#available-menu-items .menu-item-handle .item-add:focus { + color: #1d2327; +} + +#available-menu-items .item-add:before { + content: "\f543"; + position: relative; + right: 2px; + top: 3px; + display: inline-block; + height: 20px; + border-radius: 50%; + font: normal 20px/1.05 dashicons; /* line height is to account for the dashicon's vertical alignment */ +} + +#available-menu-items .menu-item-handle.item-added .item-type, +#available-menu-items .menu-item-handle.item-added .item-title, +#available-menu-items .menu-item-handle.item-added:hover .item-add, +#available-menu-items .menu-item-handle.item-added .item-add:focus { + color: #8c8f94; +} + +#available-menu-items .menu-item-handle.item-added .item-add:before { + content: "\f147"; +} + +#available-menu-items .accordion-section-title.loading .spinner, +#available-menu-items-search.loading .accordion-section-title .spinner { + visibility: visible; + margin: 0 20px; +} + +#available-menu-items-search .spinner { + position: absolute; + top: 20px; /* 13 container padding +1 input margin +6 ( ( 32 input height - 20 spinner height ) / 2 ) */ + left: 21px; + margin: 0 !important; +} + +/* search results list */ +#available-menu-items #available-menu-items-search .accordion-section-content { + position: absolute; + right: 0; + top: 60px; /* below title div / search input */ + bottom: 0; /* 100% height that still triggers lazy load */ + max-height: none; + width: 100%; + padding: 1px 15px 15px; + box-sizing: border-box; +} + +#available-menu-items-search .nothing-found { + /* Compensate the 1px top padding of the container. */ + margin-top: -1px; +} + +#available-menu-items-search .accordion-section-title:after { + display: none; +} + +#available-menu-items-search .accordion-section-content:empty { + min-height: 0; + padding: 0; +} + +#available-menu-items-search.loading .accordion-section-content div { + opacity: .5; +} + +#available-menu-items-search.loading.loading-more .accordion-section-content div { + opacity: 1; +} + +#customize-preview { + transition: all 0.2s; +} + +body.adding-menu-items #available-menu-items { + right: 0; + visibility: visible; +} + +body.adding-menu-items .wp-full-overlay-main { + right: 300px; +} + +body.adding-menu-items #customize-preview { + opacity: 0.4; +} + +body.adding-menu-items #customize-preview iframe { + pointer-events: none; +} + +.menu-item-handle .spinner { + display: none; + float: right; + margin: 0 0 0 8px; +} + +.nav-menu-inserted-item-loading .spinner { + display: block; +} + +.nav-menu-inserted-item-loading .menu-item-handle .item-type { + padding: 0 8px 0 0; +} + +.nav-menu-inserted-item-loading .menu-item-handle, +.added-menu-item .menu-item-handle.loading { + padding: 10px 8px 10px 15px; + cursor: default; + opacity: .5; + background: #fff; + color: #787c82; +} + +.added-menu-item .menu-item-handle { + transition-property: opacity, background, color; + transition-duration: 1.25s; + transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); /* Replacement for .hide().fadeIn('slow') in JS to add emphasis when it's loaded. */ +} + +/* Add/delete Menus */ + +#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { + border-bottom-color: #dcdcde; +} + +/* @todo update selector */ +#accordion-section-add_menu { + margin: 15px 12px; +} + +#accordion-section-add_menu h3 { + text-align: left; +} + +#accordion-section-add_menu h3, +#accordion-section-add_menu .customize-add-menu-button { + margin: 0; +} + +#accordion-section-add_menu .customize-add-menu-button { + font-weight: 400; +} + +#create-new-menu-submit { + float: left; + margin: 0 0 12px; +} + +.menu-delete-item { + float: right; + padding: 1em 0; + width: 100%; +} + +.assigned-menu-locations-title p { + margin: 0 0 8px; +} + +li.assigned-to-menu-location .menu-delete-item { + display: none; +} + +li.assigned-to-menu-location .add-new-menu-item { + margin-bottom: 1em; +} + +.menu-item-handle { + margin-top: -1px; +} +.ui-sortable-disabled .menu-item-handle { + cursor: default; +} + +.menu-item-handle:hover { + position: relative; + z-index: 10; + color: #2271b1; +} + +.menu-item-handle:hover .item-type, +.menu-item-handle:hover .item-edit, +#available-menu-items .menu-item-handle:hover .item-add { + color: #2271b1; +} + +.menu-item-edit-active .menu-item-handle { + border-color: #8c8f94; + border-bottom: none; +} + +.customize-control-nav_menu_item { + margin-bottom: 0; +} + +.customize-control-nav_menu .new-menu-item-invitation { + margin-top: 0; + margin-bottom: 0; +} + +.customize-control-nav_menu .customize-control-nav_menu-buttons { + margin-top: 12px; +} + +/** + * box-shadows + */ + +.wp-customizer .menu-item .submitbox .submitdelete:focus, +.customize-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before, +.wp-customizer button:focus .toggle-indicator:before, +.menu-delete:focus, +.menu-item-bar .item-delete:focus:before, +#available-menu-items .item-add:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + + +@media screen and (max-width: 782px) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 63px; + } +} + +@media screen and (max-width: 640px) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 130px; + } +} diff --git a/tools/storybook/wordpress/css/customize-nav-menus-rtl.min.css b/tools/storybook/wordpress/css/customize-nav-menus-rtl.min.css new file mode 100644 index 00000000000..e5af0a370ac --- /dev/null +++ b/tools/storybook/wordpress/css/customize-nav-menus-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#dcdcde;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#50575e}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-right:6px;vertical-align:middle;line-height:2.2}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:left;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;max-width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-left:0}.wp-customizer .menu-item-handle .item-type{padding:1px 5px 0 21px;float:left;text-align:left}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-right:4px solid #72aee6}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#f0f0f1;border:1px solid #8c8f94;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:right;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #c3c4c7}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #dcdcde}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#50575e}.customize-screen-options-toggle{background:0 0;border:none;color:#50575e;cursor:pointer;margin:0;padding:20px;position:absolute;left:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#2271b1}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:1px solid transparent}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;right:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #dcdcde;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 0 1px 2px;speak:never;border-radius:50%;color:#787c82;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:right;display:list-item;border-color:#a7aaad}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#d63638;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#d63638}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#f0f0f1}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#1d2327}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#1d2327}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:left;color:#50575e;font-weight:400;margin-right:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #d63638}#available-menu-items .menu-item-handle .item-type{padding-left:0}#available-menu-items .menu-item-handle .item-title{padding-right:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;right:1px;color:#8c8f94;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#1d2327}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#8c8f94}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;left:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{right:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{right:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:right;margin:0 0 0 8px}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 8px 0 0}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 8px 10px 15px;cursor:default;opacity:.5;background:#fff;color:#787c82}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#dcdcde}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:left}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:left;margin:0 0 12px}.menu-delete-item{float:right;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#2271b1}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#2271b1}.menu-item-edit-active .menu-item-handle{border-color:#8c8f94;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-nav-menus.css b/tools/storybook/wordpress/css/customize-nav-menus.css new file mode 100644 index 00000000000..46ac3066efd --- /dev/null +++ b/tools/storybook/wordpress/css/customize-nav-menus.css @@ -0,0 +1,883 @@ +#customize-theme-controls #accordion-section-menu_locations { + position: relative; + margin-top: 30px; +} + +#customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { + border-bottom-color: #dcdcde; + margin-top: 15px; +} + +#customize-theme-controls .customize-section-title-nav_menus-heading, +#customize-theme-controls .customize-section-title-menu_locations-heading, +#customize-theme-controls .customize-section-title-menu_locations-description { + padding: 0 12px; +} + +#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description { + /* Override the default italic style for control descriptions */ + font-style: normal; +} + +.menu-in-location, +.menu-in-locations { + display: block; + font-weight: 600; + font-size: 10px; +} + +#customize-controls .theme-location-set, +#customize-controls .control-section .accordion-section-title:focus .menu-in-location, +#customize-controls .control-section .accordion-section-title:hover .menu-in-location { + color: #50575e; +} + +/* The `edit-menu` and `create-menu` buttons also use the `button-link` class. */ +.customize-control-nav_menu_location .edit-menu, +.customize-control-nav_menu_location .create-menu { + margin-left: 6px; + vertical-align: middle; + line-height: 2.2; +} + +#customize-controls .customize-control-nav_menu_name { + margin-bottom: 12px; +} + +.customize-control-nav_menu_name p:last-of-type { + margin-bottom: 0; +} + +#customize-new-menu-submit { + float: right; + min-width: 85px; +} + +.wp-customizer .menu-item-bar .menu-item-handle, +.wp-customizer .menu-item-settings, +.wp-customizer .menu-item-settings .description-thin { + box-sizing: border-box; +} + +.wp-customizer .menu-item-bar { + margin: 0; +} + +.wp-customizer .menu-item-bar .menu-item-handle { + width: 100%; + max-width: 100%; + background: #fff; +} + +.wp-customizer .menu-item-handle .item-title { + margin-right: 0; +} + +.wp-customizer .menu-item-handle .item-type { + padding: 1px 21px 0 5px; + float: right; + text-align: right; +} + +.wp-customizer .menu-item-handle:hover { + z-index: 8; +} + +.customize-control-nav_menu_item.has-notifications .menu-item-handle { + border-left: 4px solid #72aee6; +} + +.wp-customizer .menu-item-settings { + max-width: 100%; + overflow: hidden; + z-index: 8; + padding: 10px; + background: #f0f0f1; + border: 1px solid #8c8f94; + border-top: none; +} + +.wp-customizer .menu-item-settings .description-thin { + width: 100%; + height: auto; + margin: 0 0 8px; +} + +.wp-customizer .menu-item-settings input[type="text"] { + width: 100%; +} + +.wp-customizer .menu-item-settings .submitbox { + margin: 0; + padding: 0; +} + +.wp-customizer .menu-item-settings .link-to-original { + padding: 5px 0; + border: none; + font-style: normal; + margin: 0; + width: 100%; +} + +.wp-customizer .menu-item .submitbox .submitdelete { + float: left; + margin: 6px 0 0; + padding: 0; + cursor: pointer; +} + + +/** + * Menu items reordering styles + */ + +.menu-item-reorder-nav { + display: none; + background-color: #fff; + position: absolute; + top: 0; + right: 0; +} + +.menus-move-left:before { + content: "\f341"; +} + +.menus-move-right:before { + content: "\f345"; +} + +.reordering .menu-item .item-controls, +.reordering .menu-item .item-type { + display: none; +} + +.reordering .menu-item-reorder-nav { + display: block; +} + +.customize-control input.menu-name-field { + width: 100%; /* Override the 98% default for customizer inputs, to align with the size of menu items. */ +} + +.wp-customizer .menu-item .item-edit { + position: absolute; + right: -19px; + top: 2px; + display: block; + width: 30px; + height: 38px; + margin-right: 0 !important; + box-shadow: none; + outline: none; + overflow: hidden; + cursor: pointer; + text-align: center; +} + +.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before { + content: "\f142"; +} + +.wp-customizer .menu-item-settings p.description { + font-style: normal; +} + +.wp-customizer .menu-settings dl { + margin: 12px 0 0; + padding: 0; +} + +.wp-customizer .menu-settings .checkbox-input { + margin-top: 8px; +} + +.wp-customizer .menu-settings .menu-theme-locations { + border-top: 1px solid #c3c4c7; +} + +.wp-customizer .menu-settings { + margin-top: 36px; + border-top: none; +} + +.wp-customizer .menu-location-settings { + margin-top: 12px; + border-top: none; +} + +.wp-customizer .control-section-nav_menu .menu-location-settings { + margin-top: 24px; + border-top: 1px solid #dcdcde; +} + +.wp-customizer .control-section-nav_menu .menu-location-settings, +.customize-control-nav_menu_auto_add { + padding-top: 12px; +} + +.menu-location-settings .customize-control-checkbox .theme-location-set { + line-height: 1; +} + +.customize-control-nav_menu_auto_add label { + vertical-align: top; +} + +.menu-location-settings .new-menu-locations-widget-note { + display: block; +} + +.customize-control-menu { + margin-top: 4px; +} + +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { + color: #50575e; +} + +/* Screen Options */ +.customize-screen-options-toggle { + background: none; + border: none; + color: #50575e; + cursor: pointer; + margin: 0; + padding: 20px; + position: absolute; + right: 0; + top: 30px; +} + +#customize-controls .customize-info .customize-help-toggle { + padding: 20px; +} + +#customize-controls .customize-info .customize-help-toggle:before { + padding: 4px; +} + +.customize-screen-options-toggle:hover, +.customize-screen-options-toggle:active, +.customize-screen-options-toggle:focus, +.active-menu-screen-options .customize-screen-options-toggle, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, +#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { + color: #2271b1; +} + +.customize-screen-options-toggle:focus, +#customize-controls .customize-info .customize-help-toggle:focus { + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +.customize-screen-options-toggle:before { + -moz-osx-font-smoothing: grayscale; + border: none; + content: "\f111"; + display: block; + font: 18px/1 dashicons; + padding: 5px; + text-align: center; + text-decoration: none !important; + text-indent: 0; + left: 6px; + position: absolute; + top: 6px; +} + +.customize-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before { + border-radius: 100%; +} + +.wp-customizer #screen-options-wrap { + display: none; + background: #fff; + border-top: 1px solid #dcdcde; + padding: 4px 15px 15px; +} + +.wp-customizer .metabox-prefs label { + display: block; + padding-right: 0; + line-height: 30px; +} + +/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +.wp-customizer .toggle-indicator { + display: inline-block; + font-size: 20px; + line-height: 1; +} + +.rtl .wp-customizer .toggle-indicator { + text-indent: 1px; /* account for the dashicon alignment */ +} + +.wp-customizer .menu-item .item-edit .toggle-indicator:before, +#available-menu-items .accordion-section-title .toggle-indicator:before { + content: "\f140"; + display: block; + padding: 1px 2px 1px 0; + speak: never; + border-radius: 50%; + color: #787c82; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; +} + +.control-section-nav_menu .field-link-target, +.control-section-nav_menu .field-title-attribute, +.control-section-nav_menu .field-css-classes, +.control-section-nav_menu .field-xfn, +.control-section-nav_menu .field-description { + display: none; +} + +.control-section-nav_menu.field-link-target-active .field-link-target, +.control-section-nav_menu.field-title-attribute-active .field-title-attribute, +.control-section-nav_menu.field-css-classes-active .field-css-classes, +.control-section-nav_menu.field-xfn-active .field-xfn, +.control-section-nav_menu.field-description-active .field-description { + display: block; +} + +/* WARNING: The 20px factor is hard-coded in JS. */ +.menu-item-depth-0 { margin-left: 0; } +.menu-item-depth-1 { margin-left: 20px; } +.menu-item-depth-2 { margin-left: 40px; } +.menu-item-depth-3 { margin-left: 60px; } +.menu-item-depth-4 { margin-left: 80px; } +.menu-item-depth-5 { margin-left: 100px; } +.menu-item-depth-6 { margin-left: 120px; } +.menu-item-depth-7 { margin-left: 140px; } +.menu-item-depth-8 { margin-left: 160px; } /* Not likely to be used or useful beyond this depth */ +.menu-item-depth-9 { margin-left: 180px; } +.menu-item-depth-10 { margin-left: 200px; } +.menu-item-depth-11 { margin-left: 220px; } + +/* @todo handle .menu-item-settings width */ +.menu-item-depth-0 > .menu-item-bar { margin-right: 0; } +.menu-item-depth-1 > .menu-item-bar { margin-right: 20px; } +.menu-item-depth-2 > .menu-item-bar { margin-right: 40px; } +.menu-item-depth-3 > .menu-item-bar { margin-right: 60px; } +.menu-item-depth-4 > .menu-item-bar { margin-right: 80px; } +.menu-item-depth-5 > .menu-item-bar { margin-right: 100px; } +.menu-item-depth-6 > .menu-item-bar { margin-right: 120px; } +.menu-item-depth-7 > .menu-item-bar { margin-right: 140px; } +.menu-item-depth-8 > .menu-item-bar { margin-right: 160px; } +.menu-item-depth-9 > .menu-item-bar { margin-right: 180px; } +.menu-item-depth-10 > .menu-item-bar { margin-right: 200px; } +.menu-item-depth-11 > .menu-item-bar { margin-right: 220px; } + +/* Submenu left margin. */ +.menu-item-depth-0 .menu-item-transport { margin-left: 0; } +.menu-item-depth-1 .menu-item-transport { margin-left: -20px; } +.menu-item-depth-3 .menu-item-transport { margin-left: -60px; } +.menu-item-depth-4 .menu-item-transport { margin-left: -80px; } +.menu-item-depth-2 .menu-item-transport { margin-left: -40px; } +.menu-item-depth-5 .menu-item-transport { margin-left: -100px; } +.menu-item-depth-6 .menu-item-transport { margin-left: -120px; } +.menu-item-depth-7 .menu-item-transport { margin-left: -140px; } +.menu-item-depth-8 .menu-item-transport { margin-left: -160px; } +.menu-item-depth-9 .menu-item-transport { margin-left: -180px; } +.menu-item-depth-10 .menu-item-transport { margin-left: -200px; } +.menu-item-depth-11 .menu-item-transport { margin-left: -220px; } + +/* WARNING: The 20px factor is hard-coded in JS. */ +.reordering .menu-item-depth-0 { margin-left: 0; } +.reordering .menu-item-depth-1 { margin-left: 15px; } +.reordering .menu-item-depth-2 { margin-left: 30px; } +.reordering .menu-item-depth-3 { margin-left: 45px; } +.reordering .menu-item-depth-4 { margin-left: 60px; } +.reordering .menu-item-depth-5 { margin-left: 75px; } +.reordering .menu-item-depth-6 { margin-left: 90px; } +.reordering .menu-item-depth-7 { margin-left: 105px; } +.reordering .menu-item-depth-8 { margin-left: 120px; } /* Not likely to be used or useful beyond this depth */ +.reordering .menu-item-depth-9 { margin-left: 135px; } +.reordering .menu-item-depth-10 { margin-left: 150px; } +.reordering .menu-item-depth-11 { margin-left: 165px; } + +.reordering .menu-item-depth-0 > .menu-item-bar { margin-right: 0; } +.reordering .menu-item-depth-1 > .menu-item-bar { margin-right: 15px; } +.reordering .menu-item-depth-2 > .menu-item-bar { margin-right: 30px; } +.reordering .menu-item-depth-3 > .menu-item-bar { margin-right: 45px; } +.reordering .menu-item-depth-4 > .menu-item-bar { margin-right: 60px; } +.reordering .menu-item-depth-5 > .menu-item-bar { margin-right: 75px; } +.reordering .menu-item-depth-6 > .menu-item-bar { margin-right: 90px; } +.reordering .menu-item-depth-7 > .menu-item-bar { margin-right: 105px; } +.reordering .menu-item-depth-8 > .menu-item-bar { margin-right: 120px; } +.reordering .menu-item-depth-9 > .menu-item-bar { margin-right: 135px; } +.reordering .menu-item-depth-10 > .menu-item-bar { margin-right: 150px; } +.reordering .menu-item-depth-11 > .menu-item-bar { margin-right: 165px; } + +.control-section-nav_menu.menu .menu-item-edit-active { + margin-left: 0; +} + +.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar { + margin-right: 0; +} + +.control-section-nav_menu.menu .sortable-placeholder { + margin-top: 0; + margin-bottom: 1px; + max-width: calc(100% - 2px); + float: left; + display: list-item; + border-color: #a7aaad; +} + +.menu-item-transport li.customize-control { + float: none; +} + +.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar { + margin-top: 0; +} + +/** + * Add-menu-items mode + */ + +.adding-menu-items .control-section { + opacity: .4; +} + +.adding-menu-items .control-panel.control-section, +.adding-menu-items .control-section.open { + opacity: 1; +} + +.menu-item-bar .item-delete { + color: #d63638; + position: absolute; + top: 2px; + right: -19px; + width: 30px; + height: 38px; + cursor: pointer; + display: none; +} + +.menu-item-bar .item-delete:before { + content: "\f335"; + position: absolute; + top: 9px; + left: 5px; + border-radius: 50%; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.menu-item-bar .item-delete:hover, +.menu-item-bar .item-delete:focus { + box-shadow: none; + outline: none; + color: #d63638; +} + +.adding-menu-items .menu-item-bar .item-edit { + display: none; +} + +.adding-menu-items .menu-item-bar .item-delete { + display: block; +} + +/** + * Styles for menu-item addition panel + */ + +#available-menu-items.opening { + overflow-y: hidden; /* avoid scrollbar jitter with animating heights */ +} + +#available-menu-items #available-menu-items-search.open { + height: 100%; + border-bottom: none; +} + +#available-menu-items .accordion-section-title { + border-left: none; + border-right: none; + background: #fff; + transition: background-color 0.15s; + /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + -webkit-user-select: auto; + user-select: auto; +} + +#available-menu-items .open .accordion-section-title, +#available-menu-items #available-menu-items-search .accordion-section-title { + background: #f0f0f1; +} + +/* rework the arrow indicator implementation for NVDA bug see #32715 */ +#available-menu-items .accordion-section-title:after { + content: none !important; +} + +#available-menu-items .accordion-section-title:hover .toggle-indicator:before, +#available-menu-items .button-link:hover .toggle-indicator:before, +#available-menu-items .button-link:focus .toggle-indicator:before { + color: #1d2327; +} + +#available-menu-items .open .accordion-section-title .toggle-indicator:before { + content: "\f142"; + color: #1d2327; +} + +#available-menu-items .available-menu-items-list { + overflow-y: auto; + max-height: 200px; /* This gets set in JS to fit the screen size, and based on # of sections. */ + background: transparent; +} + +#available-menu-items .accordion-section-title button { + display: block; + width: 28px; + height: 35px; + position: absolute; + top: 5px; + right: 5px; + box-shadow: none; + outline: none; + cursor: pointer; + text-align: center; +} + +#available-menu-items .accordion-section-title .no-items, +#available-menu-items .cannot-expand .accordion-section-title .spinner, +#available-menu-items .cannot-expand .accordion-section-title > button { + display: none; +} + +#available-menu-items-search.cannot-expand .accordion-section-title .spinner { + display: block; +} + +#available-menu-items .cannot-expand .accordion-section-title .no-items { + float: right; + color: #50575e; + font-weight: 400; + margin-left: 5px; +} + +#available-menu-items .accordion-section-content { + max-height: 290px; + margin: 0; + padding: 0; + position: relative; + background: transparent; +} + +#available-menu-items .accordion-section-content .available-menu-items-list { + margin: 0 0 45px; + padding: 1px 15px 15px; +} + +#available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ + margin-bottom: 0; +} + +#new-custom-menu-item .accordion-section-content { + padding: 0 15px 15px; +} + +#available-menu-items .menu-item-tpl { + margin: 0; +} + +#custom-menu-item-name.invalid, +#custom-menu-item-url.invalid, +.edit-menu-item-url.invalid, +.menu-name-field.invalid, +.menu-name-field.invalid:focus, +#available-menu-items .new-content-item .create-item-input.invalid, +#available-menu-items .new-content-item .create-item-input.invalid:focus { + border: 1px solid #d63638; +} + +#available-menu-items .menu-item-handle .item-type { + padding-right: 0; +} + +#available-menu-items .menu-item-handle .item-title { + padding-left: 20px; +} + +#available-menu-items .menu-item-handle { + cursor: pointer; +} + +#available-menu-items .menu-item-handle { + box-shadow: none; + margin-top: -1px; +} + +#available-menu-items .menu-item-handle:hover { + z-index: 1; +} + +#available-menu-items .item-title h4 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-menu-items .item-add { + position: absolute; + top: 1px; + left: 1px; + color: #8c8f94; + width: 30px; + height: 38px; + box-shadow: none; + outline: none; + cursor: pointer; + text-align: center; +} + +#available-menu-items .menu-item-handle .item-add:focus { + color: #1d2327; +} + +#available-menu-items .item-add:before { + content: "\f543"; + position: relative; + left: 2px; + top: 3px; + display: inline-block; + height: 20px; + border-radius: 50%; + font: normal 20px/1.05 dashicons; /* line height is to account for the dashicon's vertical alignment */ +} + +#available-menu-items .menu-item-handle.item-added .item-type, +#available-menu-items .menu-item-handle.item-added .item-title, +#available-menu-items .menu-item-handle.item-added:hover .item-add, +#available-menu-items .menu-item-handle.item-added .item-add:focus { + color: #8c8f94; +} + +#available-menu-items .menu-item-handle.item-added .item-add:before { + content: "\f147"; +} + +#available-menu-items .accordion-section-title.loading .spinner, +#available-menu-items-search.loading .accordion-section-title .spinner { + visibility: visible; + margin: 0 20px; +} + +#available-menu-items-search .spinner { + position: absolute; + top: 20px; /* 13 container padding +1 input margin +6 ( ( 32 input height - 20 spinner height ) / 2 ) */ + right: 21px; + margin: 0 !important; +} + +/* search results list */ +#available-menu-items #available-menu-items-search .accordion-section-content { + position: absolute; + left: 0; + top: 60px; /* below title div / search input */ + bottom: 0; /* 100% height that still triggers lazy load */ + max-height: none; + width: 100%; + padding: 1px 15px 15px; + box-sizing: border-box; +} + +#available-menu-items-search .nothing-found { + /* Compensate the 1px top padding of the container. */ + margin-top: -1px; +} + +#available-menu-items-search .accordion-section-title:after { + display: none; +} + +#available-menu-items-search .accordion-section-content:empty { + min-height: 0; + padding: 0; +} + +#available-menu-items-search.loading .accordion-section-content div { + opacity: .5; +} + +#available-menu-items-search.loading.loading-more .accordion-section-content div { + opacity: 1; +} + +#customize-preview { + transition: all 0.2s; +} + +body.adding-menu-items #available-menu-items { + left: 0; + visibility: visible; +} + +body.adding-menu-items .wp-full-overlay-main { + left: 300px; +} + +body.adding-menu-items #customize-preview { + opacity: 0.4; +} + +body.adding-menu-items #customize-preview iframe { + pointer-events: none; +} + +.menu-item-handle .spinner { + display: none; + float: left; + margin: 0 8px 0 0; +} + +.nav-menu-inserted-item-loading .spinner { + display: block; +} + +.nav-menu-inserted-item-loading .menu-item-handle .item-type { + padding: 0 0 0 8px; +} + +.nav-menu-inserted-item-loading .menu-item-handle, +.added-menu-item .menu-item-handle.loading { + padding: 10px 15px 10px 8px; + cursor: default; + opacity: .5; + background: #fff; + color: #787c82; +} + +.added-menu-item .menu-item-handle { + transition-property: opacity, background, color; + transition-duration: 1.25s; + transition-timing-function: cubic-bezier( .25, -2.5, .75, 8 ); /* Replacement for .hide().fadeIn('slow') in JS to add emphasis when it's loaded. */ +} + +/* Add/delete Menus */ + +#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { + border-bottom-color: #dcdcde; +} + +/* @todo update selector */ +#accordion-section-add_menu { + margin: 15px 12px; +} + +#accordion-section-add_menu h3 { + text-align: right; +} + +#accordion-section-add_menu h3, +#accordion-section-add_menu .customize-add-menu-button { + margin: 0; +} + +#accordion-section-add_menu .customize-add-menu-button { + font-weight: 400; +} + +#create-new-menu-submit { + float: right; + margin: 0 0 12px; +} + +.menu-delete-item { + float: left; + padding: 1em 0; + width: 100%; +} + +.assigned-menu-locations-title p { + margin: 0 0 8px; +} + +li.assigned-to-menu-location .menu-delete-item { + display: none; +} + +li.assigned-to-menu-location .add-new-menu-item { + margin-bottom: 1em; +} + +.menu-item-handle { + margin-top: -1px; +} +.ui-sortable-disabled .menu-item-handle { + cursor: default; +} + +.menu-item-handle:hover { + position: relative; + z-index: 10; + color: #2271b1; +} + +.menu-item-handle:hover .item-type, +.menu-item-handle:hover .item-edit, +#available-menu-items .menu-item-handle:hover .item-add { + color: #2271b1; +} + +.menu-item-edit-active .menu-item-handle { + border-color: #8c8f94; + border-bottom: none; +} + +.customize-control-nav_menu_item { + margin-bottom: 0; +} + +.customize-control-nav_menu .new-menu-item-invitation { + margin-top: 0; + margin-bottom: 0; +} + +.customize-control-nav_menu .customize-control-nav_menu-buttons { + margin-top: 12px; +} + +/** + * box-shadows + */ + +.wp-customizer .menu-item .submitbox .submitdelete:focus, +.customize-screen-options-toggle:focus:before, +#customize-controls .customize-info .customize-help-toggle:focus:before, +.wp-customizer button:focus .toggle-indicator:before, +.menu-delete:focus, +.menu-item-bar .item-delete:focus:before, +#available-menu-items .item-add:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + + +@media screen and (max-width: 782px) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 63px; + } +} + +@media screen and (max-width: 640px) { + #available-menu-items #available-menu-items-search .accordion-section-content { + top: 130px; + } +} diff --git a/tools/storybook/wordpress/css/customize-nav-menus.min.css b/tools/storybook/wordpress/css/customize-nav-menus.min.css new file mode 100644 index 00000000000..613dca605b0 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-nav-menus.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#dcdcde;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#50575e}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-left:6px;vertical-align:middle;line-height:2.2}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:right;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;max-width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-right:0}.wp-customizer .menu-item-handle .item-type{padding:1px 21px 0 5px;float:right;text-align:right}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-left:4px solid #72aee6}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#f0f0f1;border:1px solid #8c8f94;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:left;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #c3c4c7}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #dcdcde}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#50575e}.customize-screen-options-toggle{background:0 0;border:none;color:#50575e;cursor:pointer;margin:0;padding:20px;position:absolute;right:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#2271b1}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:1px solid transparent}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;left:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #dcdcde;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 2px 1px 0;speak:never;border-radius:50%;color:#787c82;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:left;display:list-item;border-color:#a7aaad}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#d63638;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#d63638}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#f0f0f1}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#1d2327}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#1d2327}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:right;color:#50575e;font-weight:400;margin-left:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #d63638}#available-menu-items .menu-item-handle .item-type{padding-right:0}#available-menu-items .menu-item-handle .item-title{padding-left:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;left:1px;color:#8c8f94;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#1d2327}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#8c8f94}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;right:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{left:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{left:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:left;margin:0 8px 0 0}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 0 0 8px}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 15px 10px 8px;cursor:default;opacity:.5;background:#fff;color:#787c82}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#dcdcde}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:right}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:right;margin:0 0 12px}.menu-delete-item{float:left;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#2271b1}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#2271b1}.menu-item-edit-active .menu-item-handle{border-color:#8c8f94;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-widgets-rtl.css b/tools/storybook/wordpress/css/customize-widgets-rtl.css new file mode 100644 index 00000000000..baec34a1465 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-widgets-rtl.css @@ -0,0 +1,479 @@ +/*! This file is auto-generated */ +.wp-full-overlay-sidebar { + overflow: visible; +} + +/** + * Hide all sidebar sections by default, only show them (via JS) once the + * preview loads and we know whether the sidebars are used in the template. + */ + +.control-section.control-section-sidebar, +.customize-control-sidebar_widgets label, +.customize-control-sidebar_widgets .hide-if-js { + /* The link in .customize-control-sidebar_widgets .hide-if-js will fail if it ever gets used. */ + display: none; +} + +.control-section.control-section-sidebar .accordion-section-content.ui-sortable { + overflow: visible; +} + +/* Note: widget-tops are more compact when (max-height: 700px) and (min-width: 981px). */ +.customize-control-widget_form .widget-top { + background: #fff; + transition: opacity 0.5s; +} + +.customize-control .widget-action { + color: #787c82; +} + +.customize-control .widget-top:hover .widget-action, +.customize-control .widget-action:focus { + color: #1d2327; +} + +.customize-control-widget_form:not(.widget-rendered) .widget-top { + opacity: 0.5; +} + +.customize-control-widget_form .widget-control-save { + display: none; +} + +.customize-control-widget_form .spinner { + visibility: hidden; + margin-top: 0; +} + +.customize-control-widget_form.previewer-loading .spinner { + visibility: visible; +} + +.customize-control-widget_form.widget-form-disabled .widget-content { + opacity: 0.7; + pointer-events: none; + -webkit-user-select: none; + user-select: none; +} + +.customize-control-widget_form .widget { + margin-bottom: 0; +} + +.customize-control-widget_form.wide-widget-control .widget-inside { + position: fixed; + right: 299px; + top: 25%; + border: 1px solid #dcdcde; + overflow: auto; +} +.customize-control-widget_form.wide-widget-control .widget-inside > .form { + padding: 20px; +} + +.customize-control-widget_form.wide-widget-control .widget-top { + transition: background-color 0.4s; +} +.customize-control-widget_form.wide-widget-control.expanding .widget-top, +.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { + background-color: #dcdcde; +} + +.widget-inside { + padding: 1px 10px 10px; + border-top: none; + line-height: 1.23076923; +} + +.customize-control-widget_form.expanded .widget-action .toggle-indicator:before { + content: "\f142"; +} + +.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before { + content: "\f141"; +} + +.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before { + content: "\f139"; +} + +.widget-title-action { + cursor: pointer; +} + +.widget-top, +.customize-control-widget_form .widget .customize-control-title { + cursor: move; +} + +.control-section.accordion-section.highlighted > .accordion-section-title, +.customize-control-widget_form.highlighted { + outline: none; + box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + position: relative; + z-index: 1; +} + +#widget-customizer-control-templates { + display: none; +} + +/** + * Widget reordering styles + */ + +#customize-theme-controls .widget-reorder-nav { + display: none; + float: left; + background-color: #f6f7f7; +} + +.move-widget:before { + content: "\f504"; +} + +#customize-theme-controls .move-widget-area { + display: none; + background: #fff; + border: 1px solid #c3c4c7; + border-top: none; + cursor: auto; +} + +#customize-theme-controls .reordering .move-widget-area.active { + display: block; +} + +#customize-theme-controls .move-widget-area .description { + margin: 0; + padding: 15px 20px; + font-weight: 400; +} + +#customize-theme-controls .widget-area-select { + margin: 0; + padding: 0; + list-style: none; +} + +#customize-theme-controls .widget-area-select li { + position: relative; + margin: 0; + padding: 13px 42px 15px 15px; + color: #50575e; + border-top: 1px solid #c3c4c7; + cursor: pointer; + -webkit-user-select: none; + user-select: none; +} + +#customize-theme-controls .widget-area-select li:before { + display: none; + content: "\f147"; + position: absolute; + top: 12px; + right: 10px; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#customize-theme-controls .widget-area-select li:last-child { + border-bottom: 1px solid #c3c4c7; +} + +#customize-theme-controls .widget-area-select .selected { + color: #fff; + background: #2271b1; +} + +#customize-theme-controls .widget-area-select .selected:before { + display: block; +} + +#customize-theme-controls .move-widget-actions { + text-align: left; + padding: 12px; +} + +#customize-theme-controls .reordering .widget-title-action { + display: none; +} + +#customize-theme-controls .reordering .widget-reorder-nav { + display: block; +} + +/* Text Widget */ +.wp-customizer div.mce-inline-toolbar-grp, +.wp-customizer div.mce-tooltip { + z-index: 500100 !important; +} +.wp-customizer .ui-autocomplete.wplink-autocomplete { + z-index: 500110; /* originally 100110, but z-index of .wp-full-overlay is 500000 */ +} +.wp-customizer #wp-link-backdrop { + z-index: 500100; /* originally 100100, but z-index of .wp-full-overlay is 500000 */ +} +.wp-customizer #wp-link-wrap { + z-index: 500105; /* originally 100105, but z-index of .wp-full-overlay is 500000 */ +} + +/** + * Styles for new widget addition panel + */ + +/* override widgets admin page rules in wp-admin/css/widgets.css */ +#widgets-left #available-widgets .widget { + float: none !important; + width: auto !important; +} + +/* Keep rule that is no longer necessary on widgets.php. */ +#available-widgets .widget-action { + display: none; +} + +.ios #available-widgets { + transition: right 0s; +} + +#available-widgets .widget-tpl:hover, +#available-widgets .widget-tpl.selected { + background: #f6f7f7; + border-bottom-color: #c3c4c7; + color: #2271b1; + border-right: 4px solid #2271b1; +} + +#customize-controls .widget-title h3 { + font-size: 1em; +} + +#available-widgets .widget-title h3 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-widgets .widget .widget-description { + padding: 0; + color: #646970; +} + +#customize-preview { + transition: all 0.2s; +} + +body.adding-widget #available-widgets { + right: 0; + visibility: visible; +} + +body.adding-widget .wp-full-overlay-main { + right: 300px; +} + +body.adding-widget #customize-preview { + opacity: 0.4; +} + + +/** + * Widget Icon styling + * No plurals in naming. + * Ordered from lowest to highest specificity. + */ + +#available-widgets .widget-title { + position: relative; +} + +#available-widgets .widget-title:before { + content: "\f132"; + position: absolute; + top: -3px; + left: 100%; + margin-left: 20px; + width: 20px; + height: 20px; + color: #2c3338; + font: normal 20px/1 dashicons; + text-align: center; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* dashicons-smiley */ +#available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } + +/* dashicons-star-filled */ +#available-widgets [class*="super"] .widget-title:before, +#available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } + +/* dashicons-wordpress */ +#available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } + +/* dashicons-archive */ +#available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } + +/* dashicons-category */ +#available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } + +/* dashicons-admin-comments */ +#available-widgets [class*="comment"] .widget-title:before, +#available-widgets [class*="testimonial"] .widget-title:before, +#available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } + +/* dashicons-admin-post */ +#available-widgets [class*="post"] .widget-title:before { content: "\f109"; } + +/* dashicons-admin-page */ +#available-widgets [class*="page"] .widget-title:before { content: "\f105"; } + +/* dashicons-text */ +#available-widgets [class*="text"] .widget-title:before { content: "\f478"; } + +/* dashicons-admin-links */ +#available-widgets [class*="link"] .widget-title:before { content: "\f103"; } + +/* dashicons-search */ +#available-widgets [class*="search"] .widget-title:before { content: "\f179"; } + +/* dashicons-menu */ +#available-widgets [class*="menu"] .widget-title:before, +#available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } + +/* dashicons-tagcloud */ +#available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } + +/* dashicons-rss */ +#available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } + +/* dashicons-calendar */ +#available-widgets [class*="event"] .widget-title:before, +#available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} + +/* dashicons-format-image */ +#available-widgets [class*="image"] .widget-title:before, +#available-widgets [class*="photo"] .widget-title:before, +#available-widgets [class*="slide"] .widget-title:before, +#available-widgets [class*="instagram"] .widget-title:before { content: "\f128"; } + +/* dashicons-format-gallery */ +#available-widgets [class*="album"] .widget-title:before, +#available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } + +/* dashicons-format-video */ +#available-widgets [class*="video"] .widget-title:before, +#available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } + +/* dashicons-format-audio */ +#available-widgets [class*="music"] .widget-title:before, +#available-widgets [class*="radio"] .widget-title:before, +#available-widgets [class*="audio"] .widget-title:before { content: "\f127"; } + +/* dashicons-admin-users */ +#available-widgets [class*="login"] .widget-title:before, +#available-widgets [class*="user"] .widget-title:before, +#available-widgets [class*="member"] .widget-title:before, +#available-widgets [class*="avatar"] .widget-title:before, +#available-widgets [class*="subscriber"] .widget-title:before, +#available-widgets [class*="profile"] .widget-title:before, +#available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } + +/* dashicons-cart */ +#available-widgets [class*="commerce"] .widget-title:before, +#available-widgets [class*="shop"] .widget-title:before, +#available-widgets [class*="cart"] .widget-title:before { content: "\f174"; top: -4px; } + +/* dashicons-shield */ +#available-widgets [class*="secur"] .widget-title:before, +#available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } + +/* dashicons-chart-bar */ +#available-widgets [class*="analytic"] .widget-title:before, +#available-widgets [class*="stat"] .widget-title:before, +#available-widgets [class*="poll"] .widget-title:before { content: "\f185"; } + +/* dashicons-feedback */ +#available-widgets [class*="form"] .widget-title:before { content: "\f175"; } + +/* dashicons-email-alt */ +#available-widgets [class*="subscribe"] .widget-title:before, +#available-widgets [class*="news"] .widget-title:before, +#available-widgets [class*="contact"] .widget-title:before, +#available-widgets [class*="mail"] .widget-title:before { content: "\f466"; } + +/* dashicons-share */ +#available-widgets [class*="share"] .widget-title:before, +#available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } + +/* dashicons-translation */ +#available-widgets [class*="lang"] .widget-title:before, +#available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } + +/* dashicons-location-alt */ +#available-widgets [class*="locat"] .widget-title:before, +#available-widgets [class*="map"] .widget-title:before { content: "\f231"; } + +/* dashicons-download */ +#available-widgets [class*="download"] .widget-title:before { content: "\f316"; } + +/* dashicons-cloud */ +#available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} + +/* dashicons-facebook */ +#available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } + +/* dashicons-twitter */ +#available-widgets [class*="tweet"] .widget-title:before, +#available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } + +@media screen and (max-height: 700px) and (min-width: 981px) { + /* Compact widget-tops on smaller laptops, but not tablets. See ticket #27112#comment:4 */ + .customize-control-widget_form { + margin-bottom: 0; + } + + .widget-top { + box-shadow: none; + margin-top: -1px; + } + + .widget-top:hover { + position: relative; + z-index: 1; + } + + .last-widget { + margin-bottom: 15px; + } + + .widget-title h3 { + padding: 13px 15px; + } + + .widget-top .widget-action { + padding: 8px 10px; + } + + .widget-reorder-nav span { + height: 39px; + } + + .widget-reorder-nav span:before { + line-height: 39px; + } + + /* Compact the move widget areas. */ + #customize-theme-controls .widget-area-select li { + padding: 9px 42px 11px 15px; + } + + #customize-theme-controls .widget-area-select li:before { + top: 8px; + } +} diff --git a/tools/storybook/wordpress/css/customize-widgets-rtl.min.css b/tools/storybook/wordpress/css/customize-widgets-rtl.min.css new file mode 100644 index 00000000000..255d2c854df --- /dev/null +++ b/tools/storybook/wordpress/css/customize-widgets-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#787c82}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#1d2327}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-webkit-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;right:299px;top:25%;border:1px solid #dcdcde;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#dcdcde}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:1.23076923}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(79,148,212,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#f6f7f7}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #c3c4c7;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#50575e;border-top:1px solid #c3c4c7;cursor:pointer;-webkit-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;right:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #c3c4c7}#customize-theme-controls .widget-area-select .selected{color:#fff;background:#2271b1}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:left;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets .widget-action{display:none}.ios #available-widgets{transition:right 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f6f7f7;border-bottom-color:#c3c4c7;color:#2271b1;border-right:4px solid #2271b1}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#646970}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{right:0;visibility:visible}body.adding-widget .wp-full-overlay-main{right:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;left:100%;margin-left:20px;width:20px;height:20px;color:#2c3338;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/customize-widgets.css b/tools/storybook/wordpress/css/customize-widgets.css new file mode 100644 index 00000000000..3bd7a46b28e --- /dev/null +++ b/tools/storybook/wordpress/css/customize-widgets.css @@ -0,0 +1,478 @@ +.wp-full-overlay-sidebar { + overflow: visible; +} + +/** + * Hide all sidebar sections by default, only show them (via JS) once the + * preview loads and we know whether the sidebars are used in the template. + */ + +.control-section.control-section-sidebar, +.customize-control-sidebar_widgets label, +.customize-control-sidebar_widgets .hide-if-js { + /* The link in .customize-control-sidebar_widgets .hide-if-js will fail if it ever gets used. */ + display: none; +} + +.control-section.control-section-sidebar .accordion-section-content.ui-sortable { + overflow: visible; +} + +/* Note: widget-tops are more compact when (max-height: 700px) and (min-width: 981px). */ +.customize-control-widget_form .widget-top { + background: #fff; + transition: opacity 0.5s; +} + +.customize-control .widget-action { + color: #787c82; +} + +.customize-control .widget-top:hover .widget-action, +.customize-control .widget-action:focus { + color: #1d2327; +} + +.customize-control-widget_form:not(.widget-rendered) .widget-top { + opacity: 0.5; +} + +.customize-control-widget_form .widget-control-save { + display: none; +} + +.customize-control-widget_form .spinner { + visibility: hidden; + margin-top: 0; +} + +.customize-control-widget_form.previewer-loading .spinner { + visibility: visible; +} + +.customize-control-widget_form.widget-form-disabled .widget-content { + opacity: 0.7; + pointer-events: none; + -webkit-user-select: none; + user-select: none; +} + +.customize-control-widget_form .widget { + margin-bottom: 0; +} + +.customize-control-widget_form.wide-widget-control .widget-inside { + position: fixed; + left: 299px; + top: 25%; + border: 1px solid #dcdcde; + overflow: auto; +} +.customize-control-widget_form.wide-widget-control .widget-inside > .form { + padding: 20px; +} + +.customize-control-widget_form.wide-widget-control .widget-top { + transition: background-color 0.4s; +} +.customize-control-widget_form.wide-widget-control.expanding .widget-top, +.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { + background-color: #dcdcde; +} + +.widget-inside { + padding: 1px 10px 10px; + border-top: none; + line-height: 1.23076923; +} + +.customize-control-widget_form.expanded .widget-action .toggle-indicator:before { + content: "\f142"; +} + +.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before { + content: "\f139"; +} + +.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before { + content: "\f141"; +} + +.widget-title-action { + cursor: pointer; +} + +.widget-top, +.customize-control-widget_form .widget .customize-control-title { + cursor: move; +} + +.control-section.accordion-section.highlighted > .accordion-section-title, +.customize-control-widget_form.highlighted { + outline: none; + box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + position: relative; + z-index: 1; +} + +#widget-customizer-control-templates { + display: none; +} + +/** + * Widget reordering styles + */ + +#customize-theme-controls .widget-reorder-nav { + display: none; + float: right; + background-color: #f6f7f7; +} + +.move-widget:before { + content: "\f504"; +} + +#customize-theme-controls .move-widget-area { + display: none; + background: #fff; + border: 1px solid #c3c4c7; + border-top: none; + cursor: auto; +} + +#customize-theme-controls .reordering .move-widget-area.active { + display: block; +} + +#customize-theme-controls .move-widget-area .description { + margin: 0; + padding: 15px 20px; + font-weight: 400; +} + +#customize-theme-controls .widget-area-select { + margin: 0; + padding: 0; + list-style: none; +} + +#customize-theme-controls .widget-area-select li { + position: relative; + margin: 0; + padding: 13px 15px 15px 42px; + color: #50575e; + border-top: 1px solid #c3c4c7; + cursor: pointer; + -webkit-user-select: none; + user-select: none; +} + +#customize-theme-controls .widget-area-select li:before { + display: none; + content: "\f147"; + position: absolute; + top: 12px; + left: 10px; + font: normal 20px/1 dashicons; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#customize-theme-controls .widget-area-select li:last-child { + border-bottom: 1px solid #c3c4c7; +} + +#customize-theme-controls .widget-area-select .selected { + color: #fff; + background: #2271b1; +} + +#customize-theme-controls .widget-area-select .selected:before { + display: block; +} + +#customize-theme-controls .move-widget-actions { + text-align: right; + padding: 12px; +} + +#customize-theme-controls .reordering .widget-title-action { + display: none; +} + +#customize-theme-controls .reordering .widget-reorder-nav { + display: block; +} + +/* Text Widget */ +.wp-customizer div.mce-inline-toolbar-grp, +.wp-customizer div.mce-tooltip { + z-index: 500100 !important; +} +.wp-customizer .ui-autocomplete.wplink-autocomplete { + z-index: 500110; /* originally 100110, but z-index of .wp-full-overlay is 500000 */ +} +.wp-customizer #wp-link-backdrop { + z-index: 500100; /* originally 100100, but z-index of .wp-full-overlay is 500000 */ +} +.wp-customizer #wp-link-wrap { + z-index: 500105; /* originally 100105, but z-index of .wp-full-overlay is 500000 */ +} + +/** + * Styles for new widget addition panel + */ + +/* override widgets admin page rules in wp-admin/css/widgets.css */ +#widgets-left #available-widgets .widget { + float: none !important; + width: auto !important; +} + +/* Keep rule that is no longer necessary on widgets.php. */ +#available-widgets .widget-action { + display: none; +} + +.ios #available-widgets { + transition: left 0s; +} + +#available-widgets .widget-tpl:hover, +#available-widgets .widget-tpl.selected { + background: #f6f7f7; + border-bottom-color: #c3c4c7; + color: #2271b1; + border-left: 4px solid #2271b1; +} + +#customize-controls .widget-title h3 { + font-size: 1em; +} + +#available-widgets .widget-title h3 { + padding: 0 0 5px; + font-size: 14px; +} + +#available-widgets .widget .widget-description { + padding: 0; + color: #646970; +} + +#customize-preview { + transition: all 0.2s; +} + +body.adding-widget #available-widgets { + left: 0; + visibility: visible; +} + +body.adding-widget .wp-full-overlay-main { + left: 300px; +} + +body.adding-widget #customize-preview { + opacity: 0.4; +} + + +/** + * Widget Icon styling + * No plurals in naming. + * Ordered from lowest to highest specificity. + */ + +#available-widgets .widget-title { + position: relative; +} + +#available-widgets .widget-title:before { + content: "\f132"; + position: absolute; + top: -3px; + right: 100%; + margin-right: 20px; + width: 20px; + height: 20px; + color: #2c3338; + font: normal 20px/1 dashicons; + text-align: center; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* dashicons-smiley */ +#available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } + +/* dashicons-star-filled */ +#available-widgets [class*="super"] .widget-title:before, +#available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } + +/* dashicons-wordpress */ +#available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } + +/* dashicons-archive */ +#available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } + +/* dashicons-category */ +#available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } + +/* dashicons-admin-comments */ +#available-widgets [class*="comment"] .widget-title:before, +#available-widgets [class*="testimonial"] .widget-title:before, +#available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } + +/* dashicons-admin-post */ +#available-widgets [class*="post"] .widget-title:before { content: "\f109"; } + +/* dashicons-admin-page */ +#available-widgets [class*="page"] .widget-title:before { content: "\f105"; } + +/* dashicons-text */ +#available-widgets [class*="text"] .widget-title:before { content: "\f478"; } + +/* dashicons-admin-links */ +#available-widgets [class*="link"] .widget-title:before { content: "\f103"; } + +/* dashicons-search */ +#available-widgets [class*="search"] .widget-title:before { content: "\f179"; } + +/* dashicons-menu */ +#available-widgets [class*="menu"] .widget-title:before, +#available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } + +/* dashicons-tagcloud */ +#available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } + +/* dashicons-rss */ +#available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } + +/* dashicons-calendar */ +#available-widgets [class*="event"] .widget-title:before, +#available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} + +/* dashicons-format-image */ +#available-widgets [class*="image"] .widget-title:before, +#available-widgets [class*="photo"] .widget-title:before, +#available-widgets [class*="slide"] .widget-title:before, +#available-widgets [class*="instagram"] .widget-title:before { content: "\f128"; } + +/* dashicons-format-gallery */ +#available-widgets [class*="album"] .widget-title:before, +#available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } + +/* dashicons-format-video */ +#available-widgets [class*="video"] .widget-title:before, +#available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } + +/* dashicons-format-audio */ +#available-widgets [class*="music"] .widget-title:before, +#available-widgets [class*="radio"] .widget-title:before, +#available-widgets [class*="audio"] .widget-title:before { content: "\f127"; } + +/* dashicons-admin-users */ +#available-widgets [class*="login"] .widget-title:before, +#available-widgets [class*="user"] .widget-title:before, +#available-widgets [class*="member"] .widget-title:before, +#available-widgets [class*="avatar"] .widget-title:before, +#available-widgets [class*="subscriber"] .widget-title:before, +#available-widgets [class*="profile"] .widget-title:before, +#available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } + +/* dashicons-cart */ +#available-widgets [class*="commerce"] .widget-title:before, +#available-widgets [class*="shop"] .widget-title:before, +#available-widgets [class*="cart"] .widget-title:before { content: "\f174"; top: -4px; } + +/* dashicons-shield */ +#available-widgets [class*="secur"] .widget-title:before, +#available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } + +/* dashicons-chart-bar */ +#available-widgets [class*="analytic"] .widget-title:before, +#available-widgets [class*="stat"] .widget-title:before, +#available-widgets [class*="poll"] .widget-title:before { content: "\f185"; } + +/* dashicons-feedback */ +#available-widgets [class*="form"] .widget-title:before { content: "\f175"; } + +/* dashicons-email-alt */ +#available-widgets [class*="subscribe"] .widget-title:before, +#available-widgets [class*="news"] .widget-title:before, +#available-widgets [class*="contact"] .widget-title:before, +#available-widgets [class*="mail"] .widget-title:before { content: "\f466"; } + +/* dashicons-share */ +#available-widgets [class*="share"] .widget-title:before, +#available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } + +/* dashicons-translation */ +#available-widgets [class*="lang"] .widget-title:before, +#available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } + +/* dashicons-location-alt */ +#available-widgets [class*="locat"] .widget-title:before, +#available-widgets [class*="map"] .widget-title:before { content: "\f231"; } + +/* dashicons-download */ +#available-widgets [class*="download"] .widget-title:before { content: "\f316"; } + +/* dashicons-cloud */ +#available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} + +/* dashicons-facebook */ +#available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } + +/* dashicons-twitter */ +#available-widgets [class*="tweet"] .widget-title:before, +#available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } + +@media screen and (max-height: 700px) and (min-width: 981px) { + /* Compact widget-tops on smaller laptops, but not tablets. See ticket #27112#comment:4 */ + .customize-control-widget_form { + margin-bottom: 0; + } + + .widget-top { + box-shadow: none; + margin-top: -1px; + } + + .widget-top:hover { + position: relative; + z-index: 1; + } + + .last-widget { + margin-bottom: 15px; + } + + .widget-title h3 { + padding: 13px 15px; + } + + .widget-top .widget-action { + padding: 8px 10px; + } + + .widget-reorder-nav span { + height: 39px; + } + + .widget-reorder-nav span:before { + line-height: 39px; + } + + /* Compact the move widget areas. */ + #customize-theme-controls .widget-area-select li { + padding: 9px 15px 11px 42px; + } + + #customize-theme-controls .widget-area-select li:before { + top: 8px; + } +} diff --git a/tools/storybook/wordpress/css/customize-widgets.min.css b/tools/storybook/wordpress/css/customize-widgets.min.css new file mode 100644 index 00000000000..657e21dffe8 --- /dev/null +++ b/tools/storybook/wordpress/css/customize-widgets.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#787c82}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#1d2327}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-webkit-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;left:299px;top:25%;border:1px solid #dcdcde;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#dcdcde}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:1.23076923}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(79,148,212,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#f6f7f7}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #c3c4c7;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#50575e;border-top:1px solid #c3c4c7;cursor:pointer;-webkit-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;left:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #c3c4c7}#customize-theme-controls .widget-area-select .selected{color:#fff;background:#2271b1}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:right;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets .widget-action{display:none}.ios #available-widgets{transition:left 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f6f7f7;border-bottom-color:#c3c4c7;color:#2271b1;border-left:4px solid #2271b1}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#646970}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{left:0;visibility:visible}body.adding-widget .wp-full-overlay-main{left:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;right:100%;margin-right:20px;width:20px;height:20px;color:#2c3338;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/dashboard-rtl.css b/tools/storybook/wordpress/css/dashboard-rtl.css new file mode 100644 index 00000000000..3ec1be84723 --- /dev/null +++ b/tools/storybook/wordpress/css/dashboard-rtl.css @@ -0,0 +1,1488 @@ +/*! This file is auto-generated */ +#wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; +} + +#wpbody-content #dashboard-widgets.columns-2 .postbox-container { + width: 49.5%; +} + +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2, +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3, +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4 { + float: left; + width: 50.5%; +} + +#wpbody-content #dashboard-widgets.columns-3 .postbox-container { + width: 33.5%; +} + +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1 { + width: 33%; +} + +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3, +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4 { + float: left; +} + +#wpbody-content #dashboard-widgets.columns-4 .postbox-container { + width: 25%; +} + +#dashboard-widgets .postbox-container { + width: 25%; +} + +#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container { + border: none !important; +} + +#dashboard-widgets-wrap { + overflow: hidden; + margin: 0 -8px; +} + +#dashboard-widgets .postbox .inside { + margin-bottom: 0; +} + +#dashboard-widgets .meta-box-sortables { + display: flow-root; /* avoid margin collapsing between parent and first/last child elements */ + /* Required min-height to make the jQuery UI Sortable drop zone work. */ + min-height: 100px; + margin: 0 8px 20px; +} + +#dashboard-widgets .postbox-container .empty-container { + outline: 3px dashed #c3c4c7; + height: 250px; +} + +/* Only highlight drop zones when dragging and only in the 2 columns layout. */ +.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { + outline: 3px dashed #646970; + /* Prevent margin on the child from collapsing with margin on the parent. */ + display: flow-root; +} + +#dashboard-widgets .postbox-container .empty-container:after { + content: attr(data-emptystring); + margin: auto; + position: absolute; + top: 50%; + right: 0; + left: 0; + transform: translateY( -50% ); + padding: 0 2em; + text-align: center; + color: #646970; + font-size: 16px; + line-height: 1.5; + display: none; +} + + +/* @todo: this was originally in this section, but likely belongs elsewhere */ +#the-comment-list td.comment p.comment-author { + margin-top: 0; + margin-right: 0; +} + +#the-comment-list p.comment-author img { + float: right; + margin-left: 8px; +} + +#the-comment-list p.comment-author strong a { + border: none; +} + +#the-comment-list td { + vertical-align: top; +} + +#the-comment-list td.comment { + word-wrap: break-word; +} + +#the-comment-list td.comment img { + max-width: 100%; +} + +/* Screen meta exception for when the "Dashboard" heading is missing or located below the Welcome Panel. */ +.index-php #screen-meta-links { + margin: 0 0 8px 20px; +} + +/* Welcome Panel */ +.welcome-panel { + position: relative; + overflow: auto; + margin: 16px 0; + background: #2271b1 url(../images/about-texture.png) center repeat; + background-size: 500px 500px; + background-blend-mode: overlay; + font-size: 14px; + line-height: 1.3; + clear: both; +} + +.welcome-panel::before { + content: ""; + position: absolute; + top: -16px; + left: 96px; + z-index: 0; + width: 300px; + height: 382px; + background: url(../images/about-header-about.svg) no-repeat center; + background-size: contain; +} + +.welcome-panel h2 { + margin: 0; + font-size: 48px; + font-weight: 600; + line-height: 1.25; + color: #fff; +} + +.welcome-panel h3 { + margin: 0; + font-size: 20px; + font-weight: 400; + line-height: 1.4; +} + +.welcome-panel p { + font-size: inherit; + line-height: inherit; +} + +.welcome-panel-header { + color: #fff; +} + +.welcome-panel-header a { + color: #fff; +} + +.welcome-panel-header a:focus, +.welcome-panel-header a:hover { + color: #f5e6ab; + text-decoration: none; +} + +.welcome-panel-header a:focus, +.welcome-panel .welcome-panel-close:focus { + outline-color: currentColor; + outline-offset: 1px; + box-shadow: none; +} + +.welcome-panel-header p { + margin: 0.5em 0 0; + font-size: 20px; + line-height: 1.4; +} + +.welcome-panel .welcome-panel-close { + position: absolute; + top: 10px; + left: 10px; + padding: 10px 24px 10px 15px; + font-size: 13px; + line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ + text-decoration: none; +} + +.welcome-panel .welcome-panel-close:before { + position: absolute; + top: 8px; + right: 0; + transition: all .1s ease-in-out; + content: '\f335'; + font-size: 24px; + color: #fff; +} + +.welcome-panel .welcome-panel-close { + color: #fff; +} + +.welcome-panel .welcome-panel-close:hover, +.welcome-panel .welcome-panel-close:focus, +.welcome-panel .welcome-panel-close:hover::before, +.welcome-panel .welcome-panel-close:focus::before { + color: #f5e6ab; +} + +/* @deprecated 5.9.0 -- Button removed from panel. */ +.wp-core-ui .welcome-panel .button.button-hero { + margin: 15px 0 3px 13px; + padding: 12px 36px; + height: auto; + line-height: 1.4285714; + white-space: normal; +} + +.welcome-panel-content { + min-height: 400px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.welcome-panel-header { + box-sizing: border-box; + margin-right: auto; + margin-left: auto; + max-width: 1500px; + width: 100%; + /* 408px = 300px (balloon width) + 96px (offset from edge) + 16px (spacing). */ + padding: 48px 48px 48px 408px; +} + +.welcome-panel .welcome-panel-column-container { + box-sizing: border-box; + width: 100%; + clear: both; + display: grid; + z-index: 1; + margin-top: 32px; + padding: 48px; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + align-self: flex-end; + background: #fff; +} + +[class*="welcome-panel-icon"] { + height: 60px; + width: 60px; + background-color: #1d2327; + background-position: center; + background-size: 24px 24px; + background-repeat: no-repeat; + border-radius: 100%; +} + +.welcome-panel-column { + display: grid; + grid-template-columns: min-content 1fr; + gap: 24px; +} + +.welcome-panel-icon-pages { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E"); +} + +.welcome-panel-icon-layout { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E"); +} + +.welcome-panel-icon-styles { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E"); +} + +/* @deprecated 5.9.0 -- Section removed from welcome panel. */ +.welcome-panel .welcome-widgets-menus { + line-height: 1.14285714; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel .welcome-panel-column ul { + margin: 0.8em 0 1em 1em; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel li { + font-size: 14px; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel li a { + text-decoration: none; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel .welcome-panel-column li { + line-height: 1.14285714; + list-style-type: none; + padding: 0 0 8px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-icon { + background: transparent !important; +} + +/* Welcome Panel and Right Now common Icons style */ + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-icon:before, +#dashboard_right_now li a:before, +#dashboard_right_now li span:before, +#dashboard_right_now .search-engines-info:before { + color: #646970; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0 0 0 10px; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + vertical-align: top; +} + +/* Welcome Panel specific Icons styles */ + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-write-blog:before, +.welcome-panel .welcome-edit-page:before { + content: "\f119"; + top: -3px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-add-page:before { + content: "\f132"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-setup-home:before { + content: "\f102"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-view-site:before { + content: "\f115"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-widgets-menus:before { + content: "\f116"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-widgets:before { + content: "\f538"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-menus:before { + content: "\f163"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-comments:before { + content: "\f117"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-learn-more:before { + content: "\f118"; + top: -1px; +} + +/* Right Now specific Icons styles */ + +#dashboard_right_now .search-engines-info:before, +#dashboard_right_now li a:before, +#dashboard_right_now li > span:before { /* get only the first level span to exclude screen-reader-text in mu-storage */ + content: "\f159"; /* generic icon for items added by CPTs ? */ + padding: 0 0 0 5px; +} + +#dashboard_right_now .page-count a:before, +#dashboard_right_now .page-count span:before { + content: "\f105"; +} + +#dashboard_right_now .post-count a:before, +#dashboard_right_now .post-count span:before { + content: "\f109"; +} + +#dashboard_right_now .comment-count a:before { + content: "\f101"; +} + +#dashboard_right_now .comment-mod-count a:before { + content: "\f125"; +} + +#dashboard_right_now .storage-count a:before { + content: "\f104"; +} + +#dashboard_right_now .storage-count.warning a:before { + content: "\f153"; +} + +#dashboard_right_now .search-engines-info:before { + content: "\f348"; +} + +/* Dashboard WordPress events */ + +.community-events-errors { + margin: 0; +} + +.community-events-loading { + padding: 10px 12px 8px; +} + +.community-events { + margin-bottom: 6px; + padding: 0 12px; +} + +.community-events .spinner { + float: none; + margin: 5px 2px 0; + vertical-align: top; +} + +.community-events-errors[aria-hidden="true"], +.community-events-errors [aria-hidden="true"], +.community-events-loading[aria-hidden="true"], +.community-events[aria-hidden="true"], +.community-events form[aria-hidden="true"] { + display: none; +} + +.community-events .activity-block:first-child, +.community-events h2 { + padding-top: 12px; + padding-bottom: 10px; +} + +.community-events-form { + margin: 15px 0 5px; +} + +.community-events-form .regular-text { + width: 40%; + height: 29px; + margin: 0; + vertical-align: top; +} + +.community-events li.event-none { + border-right: 4px solid #72aee6; +} + +#dashboard-widgets .community-events li.event-none a { + text-decoration: underline; +} + +.community-events-form label { + display: inline-block; + vertical-align: top; + line-height: 2.15384615; + height: 28px; +} + +.community-events .activity-block > p { + margin-bottom: 0; + display: inline; +} + +.community-events-toggle-location { + vertical-align: middle; +} + +#community-events-submit { + margin-right: 3px; + margin-left: 3px; +} + +/* Needs higher specificity than #dashboard-widgets .button-link */ +#dashboard-widgets .community-events-cancel.button-link { + vertical-align: top; + /* Same properties as the submit button for cross-browsers alignment. */ + line-height: 2; + height: 28px; + text-decoration: underline; +} + +.community-events ul { + background-color: #f6f7f7; + padding-right: 0; + padding-left: 0; + padding-bottom: 0; +} + +.community-events li { + margin: 0; + padding: 8px 12px; + color: #2c3338; +} +.community-events li:first-child { + border-top: 1px solid #f0f0f1; +} + +.community-events li ~ li { + border-top: 1px solid #f0f0f1; +} + +.community-events .activity-block.last { + border-bottom: 1px solid #f0f0f1; + padding-top: 0; + margin-top: -1px; +} + +.community-events .event-info { + display: block; +} + +.event-icon { + height: 18px; + padding-left: 10px; + width: 18px; + display: none; /* Hide on smaller screens */ +} + +.event-icon:before { + color: #646970; + font-size: 18px; +} +.event-meetup .event-icon:before { + content: "\f484"; +} +.event-wordcamp .event-icon:before { + content: "\f486"; +} + +.community-events .event-title { + font-weight: 600; + display: block; +} + +.community-events .event-date, +.community-events .event-time { + display: block; +} + +.community-events-footer { + margin-top: 0; + margin-bottom: 0; + padding: 12px; + border-top: 1px solid #f0f0f1; + color: #dcdcde; +} + +/* Safari 10 + VoiceOver specific: without this, the hidden text gets read out before the link. */ +.community-events-footer .screen-reader-text { + height: inherit; + white-space: nowrap; +} + +/* Dashboard WordPress news */ + +#dashboard_primary .inside { + margin: 0; + padding: 0; +} + +#dashboard_primary .widget-loading { + padding: 12px 12px 0; + margin-bottom: 1em !important; /* Needs to override `.postbox .inside > p:last-child` in common.css */ +} + +/* Notice when JS is off. */ +#dashboard_primary .inside .notice { + margin: 0; +} + +body #dashboard-widgets .postbox form .submit { + margin: 0; +} + +/* Used only for configurable widgets. */ +.dashboard-widget-control-form p { + margin-top: 0; +} + +.rssSummary { + color: #646970; + margin-top: 4px; +} + +#dashboard_primary .rss-widget { + font-size: 13px; + padding: 0 12px; +} + +#dashboard_primary .rss-widget:last-child { + border-bottom: none; + padding-bottom: 8px; +} + +#dashboard_primary .rss-widget a { + font-weight: 400; +} + +#dashboard_primary .rss-widget span, +#dashboard_primary .rss-widget span.rss-date { + color: #646970; +} + +#dashboard_primary .rss-widget span.rss-date { + margin-right: 12px; +} + +#dashboard_primary .rss-widget ul li { + padding: 4px 0; + margin: 0; +} + +/* Dashboard right now */ + +#dashboard_right_now ul { + margin: 0; + /* contain floats but don't use overflow: hidden */ + display: inline-block; + width: 100%; +} + +#dashboard_right_now li { + width: 50%; + float: right; + margin-bottom: 10px; +} + +#dashboard_right_now .inside { + padding: 0; +} + +#dashboard_right_now .main { + padding: 0 12px 11px; +} + +#dashboard_right_now .main p { + margin: 0; +} + +#dashboard_right_now #wp-version-message .button { + float: left; + position: relative; + top: -5px; + margin-right: 5px; +} + +#dashboard_right_now p.search-engines-info { + margin: 1em 0; +} + +.mu-storage { + overflow: hidden; +} + +#dashboard-widgets h3.mu-storage { + margin: 0 0 10px; + padding: 0; + font-size: 14px; + font-weight: 400; +} + +/* Dashboard right now - Colors */ + +#dashboard_right_now .sub { + color: #50575e; + background: #f6f7f7; + border-top: 1px solid #f0f0f1; + padding: 10px 12px 6px; +} + +#dashboard_right_now .sub h3 { + color: #50575e; +} + +#dashboard_right_now .sub p { + margin: 0 0 1em; +} + +#dashboard_right_now .warning a:before, +#dashboard_right_now .warning span:before { + color: #d63638; +} + +/* Dashboard Quick Draft */ + +#dashboard_quick_press .inside { + margin: 0; + padding: 0; +} + +#dashboard_quick_press div.updated { + margin-bottom: 10px; + border: 1px solid #f0f0f1; + border-width: 1px 0 1px 1px; +} + +#dashboard_quick_press form { + margin: 12px; +} + +#dashboard_quick_press .drafts { + padding: 10px 0 0; +} + +/* Dashboard Quick Draft - Form styling */ + +#dashboard_quick_press label { + display: inline-block; + margin-bottom: 4px; +} + +#dashboard_quick_press input, +#dashboard_quick_press textarea { + box-sizing: border-box; + margin: 0; +} + +#dashboard-widgets .postbox form .submit { + margin: -39px 0; + float: left; +} + +#description-wrap { + margin-top: 12px; +} + +#quick-press textarea#content { + min-height: 90px; + max-height: 1300px; + margin: 0 0 8px; + padding: 6px 7px; + resize: none; +} + +/* Dashboard Quick Draft - Drafts list */ + +.js #dashboard_quick_press .drafts { + border-top: 1px solid #f0f0f1; +} + +#dashboard_quick_press .drafts abbr { + border: none; +} + +#dashboard_quick_press .drafts .view-all { + float: left; + margin: 0 0 0 12px; +} + +#dashboard_primary a.rsswidget { + font-weight: 400; +} + +#dashboard_quick_press .drafts ul { + margin: 0 12px; +} + +#dashboard_quick_press .drafts li { + margin-bottom: 1em; +} +#dashboard_quick_press .drafts li time { + color: #646970; +} + +#dashboard_quick_press .drafts p { + margin: 0; + word-wrap: break-word; +} + +#dashboard_quick_press .draft-title { + word-wrap: break-word; +} + +#dashboard_quick_press .draft-title a, +#dashboard_quick_press .draft-title time { + margin: 0 0 0 5px; +} + +/* Dashboard common styles */ + +#dashboard-widgets h4, /* Back-compat for pre-4.4 */ +#dashboard-widgets h3, +#dashboard_quick_press .drafts h2 { + margin: 0 12px 8px; + padding: 0; + font-size: 14px; + font-weight: 400; + color: #1d2327; +} + +#dashboard_quick_press .drafts h2 { + line-height: inherit; +} + +#dashboard-widgets .inside h4, /* Back-compat for pre-4.4 */ +#dashboard-widgets .inside h3 { + margin-right: 0; + margin-left: 0; +} + +/* Dashboard activity widget */ + +#dashboard_activity .comment-meta span.approve:before { + content: "\f227"; + font: 20px/.5 dashicons; + margin-right: 5px; + vertical-align: middle; + position: relative; + top: -1px; + margin-left: 2px; +} + +#dashboard_activity .inside { + margin: 0; + padding-bottom: 0; +} + +#dashboard_activity .no-activity { + overflow: hidden; + padding: 12px 0; + text-align: center; +} + +#dashboard_activity .no-activity p { + color: #646970; + font-size: 16px; +} + +#dashboard_activity .subsubsub { + float: none; + border-top: 1px solid #f0f0f1; + margin: 0 -12px; + padding: 8px 12px 4px; +} + +#dashboard_activity .subsubsub a .count, +#dashboard_activity .subsubsub a.current .count { + color: #646970; /* white background on the dashboard but #f0f0f1 on list tables */ +} + +#future-posts ul, +#published-posts ul { + clear: both; + margin-bottom: 0; +} + +#future-posts li, +#published-posts li { + margin-bottom: 8px; +} + +#future-posts ul span, +#published-posts ul span { + display: inline-block; + margin-left: 5px; + min-width: 150px; + color: #646970; +} + +.activity-block { + border-bottom: 1px solid #f0f0f1; + margin: 0 -12px; + padding: 8px 12px 4px; +} + +.activity-block:last-child { + border-bottom: none; +} + +.activity-block .subsubsub li { + color: #dcdcde; +} + +/* Dashboard activity widget - Comments */ +/* @todo: needs serious de-duplication */ + +#activity-widget #the-comment-list tr.undo, +#activity-widget #the-comment-list div.undo { + background: none; + padding: 6px 0; + margin-right: 12px; +} + +#activity-widget #the-comment-list .comment-item { + background: #f6f7f7; + padding: 12px; + position: relative; +} + +#activity-widget #the-comment-list .avatar { + position: absolute; + top: 12px; +} + +#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar { + padding-right: 63px; +} + +#activity-widget #the-comment-list .dashboard-comment-wrap blockquote { + margin: 1em 0; +} + +#activity-widget #the-comment-list .comment-item p.row-actions { + margin: 4px 0 0; +} + +#activity-widget #the-comment-list .comment-item:first-child { + border-top: 1px solid #f0f0f1; +} + +#activity-widget #the-comment-list .unapproved { + background-color: #fcf9e8; +} + +#activity-widget #the-comment-list .unapproved:before { + content: ""; + display: block; + position: absolute; + right: 0; + top: 0; + bottom: 0; + background: #d63638; + width: 4px; +} + +#activity-widget #the-comment-list .spam-undo-inside .avatar, +#activity-widget #the-comment-list .trash-undo-inside .avatar { + position: relative; + top: 0; +} + +/* Browse happy box */ + +#dashboard-widgets #dashboard_browser_nag.postbox .inside { + margin: 10px; +} + +.postbox .button-link .edit-box { + display: none; +} + +.edit-box { + opacity: 0; +} + +.hndle:hover .edit-box, +.edit-box:focus { + opacity: 1; +} + +#dashboard-widgets form .input-text-wrap input { + width: 100%; +} + +#dashboard-widgets form .textarea-wrap textarea { + width: 100%; +} + +#dashboard-widgets .postbox form .submit { + float: none; + margin: .5em 0 0; + padding: 0; + border: none; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { + min-width: 0; +} + +#dashboard-widgets li a, +#dashboard-widgets .button-link, +.community-events-footer a { + text-decoration: none; +} + +#dashboard-widgets h2 a { + text-decoration: underline; +} + +#dashboard-widgets .hndle .postbox-title-action { + float: left; + line-height: 1.2; +} + +#dashboard_plugins h5 { + font-size: 14px; +} + +/* Recent Comments */ + +#latest-comments #the-comment-list { + position: relative; + margin: 0 -12px; +} + +#activity-widget #the-comment-list .comment, +#activity-widget #the-comment-list .pingback { + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); +} + +#activity-widget .comments #the-comment-list .alt { + background-color: transparent; +} + +#activity-widget #latest-comments #the-comment-list .comment-item { + /* the row-actions paragraph is output only for users with 'edit_comment' capabilities, + for other users this needs a min height equal to the gravatar image */ + min-height: 50px; + margin: 0; + padding: 12px; +} + +#latest-comments #the-comment-list .pingback { + padding-right: 12px !important; +} + +#latest-comments #the-comment-list .comment-item:first-child { + border-top: none; +} + +#latest-comments #the-comment-list .comment-meta { + line-height: 1.5; + margin: 0; + color: #646970; +} + +#latest-comments #the-comment-list .comment-meta cite { + font-style: normal; + font-weight: 400; +} + +#latest-comments #the-comment-list .comment-item blockquote, +#latest-comments #the-comment-list .comment-item blockquote p { + margin: 0; + padding: 0; + display: inline; +} + +#latest-comments #the-comment-list .comment-item p.row-actions { + margin: 3px 0 0; + padding: 0; + font-size: 13px; +} + +/* Feeds */ +.rss-widget ul { + margin: 0; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 13px; + font-weight: 600; + line-height: 1.4; +} + +.rss-widget ul li { + line-height: 1.5; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #646970; + font-size: 13px; + margin-right: 3px; +} + +.rss-widget cite { + display: block; + text-align: left; + margin: 0 0 1em; + padding: 0; +} + +.rss-widget cite:before { + content: "\2014"; +} + +.dashboard-comment-wrap { + word-wrap: break-word; +} + +/* Browser Nag */ +#dashboard_browser_nag a.update-browser-link { + font-size: 1.2em; + font-weight: 600; +} + +#dashboard_browser_nag a { + text-decoration: underline; +} + +#dashboard_browser_nag p.browser-update-nag.has-browser-icon { + padding-left: 128px; +} + +#dashboard_browser_nag .browser-icon { + margin-top: -32px; +} + +#dashboard_browser_nag.postbox { + background-color: #b32d2e; + background-image: none; + border-color: #b32d2e; + color: #fff; + box-shadow: none; +} + +#dashboard_browser_nag.postbox h2 { + border-bottom-color: transparent; + background: transparent none; + color: #fff; + box-shadow: none; +} + +#dashboard_browser_nag a { + color: #fff; +} + +#dashboard_browser_nag.postbox .postbox-header { + border-color: transparent; +} + +#dashboard_browser_nag h2.hndle { + border: none; + font-weight: 600; + font-size: 20px; + padding-top: 10px; +} + +.postbox#dashboard_browser_nag p a.dismiss { + font-size: 14px; +} + +.postbox#dashboard_browser_nag p, +.postbox#dashboard_browser_nag a, +.postbox#dashboard_browser_nag p.browser-update-nag { + font-size: 16px; +} + +/* PHP Nag */ +#dashboard_php_nag .dashicons-warning { + color: #dba617; + padding-left: 6px; +} + +#dashboard_php_nag.php-insecure .dashicons-warning { + color: #d63638; +} + +#dashboard_php_nag h2 { + display: inline-block; +} + +#dashboard_php_nag p { + margin: 12px 0; +} + +#dashboard_php_nag h3 { + font-weight: 600; +} + +#dashboard_php_nag .button .dashicons-external { + line-height: 25px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media only screen and (min-width: 1600px) { + .welcome-panel .welcome-panel-column-container { + display: flex; + justify-content: center; + } + + .welcome-panel-column { + width: 100%; + max-width: 460px; + } +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 100%; + } + + #dashboard-widgets .meta-box-sortables { + min-height: 0; + } + + .is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { + min-height: 100px; + } + + #dashboard-widgets .meta-box-sortables.empty-container { + margin-bottom: 0; + } +} + +/* two columns on the dash, but keep the setting if one is selected */ +@media only screen and (min-width: 800px) and (max-width: 1499px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 49.5%; + } + + #wpbody-content #dashboard-widgets #postbox-container-2, + #wpbody-content #dashboard-widgets #postbox-container-3, + #wpbody-content #dashboard-widgets #postbox-container-4 { + float: left; + width: 50.5%; + } + + #dashboard-widgets #postbox-container-3 .empty-container, + #dashboard-widgets #postbox-container-4 .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + #dashboard-widgets #postbox-container-3 .empty-container:after, + #dashboard-widgets #postbox-container-4 .empty-container:after { + display: none; + } + + #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; + } + + #wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + /* show the radio buttons for column prefs only for one or two columns */ + .index-php .screen-layout, + .index-php .columns-prefs { + display: block; + } + + .columns-prefs .columns-prefs-3, + .columns-prefs .columns-prefs-4 { + display: none; + } + + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +/* three columns on the dash */ +@media only screen and (min-width: 1500px) and (max-width: 1800px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 33.5%; + } + + #wpbody-content #dashboard-widgets #postbox-container-1 { + width: 33%; + } + + #wpbody-content #dashboard-widgets #postbox-container-3, + #wpbody-content #dashboard-widgets #postbox-container-4 { + float: left; + } + + #dashboard-widgets #postbox-container-4 .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + #dashboard-widgets #postbox-container-4 .empty-container:after { + display: none; + } + + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +/* Always show the "Drag boxes here" CSS generated content on large screens. */ +@media only screen and (min-width: 1801px) { + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +@media screen and (max-width: 870px) { + /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ + .welcome-panel .welcome-panel-column li { + display: inline-block; + margin-left: 13px; + } + + /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ + .welcome-panel .welcome-panel-column ul { + margin: 0.4em 0 0; + } + +} + +@media screen and (max-width: 1180px) and (min-width: 783px) { + .welcome-panel-column { + grid-template-columns: 1fr; + } + + [class*="welcome-panel-icon"] { + display: none; + } +} + +@media screen and (max-width: 782px) { + .welcome-panel::before { + width: 240px; + height: 305px; + left: 32px; + } + + .welcome-panel-header { + /* 288px = 240px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding: 32px 32px 32px 288px; + } + + .welcome-panel .welcome-panel-column-container { + grid-template-columns: 1fr; + box-sizing: border-box; + padding: 32px; + width: 100%; + } + + .welcome-panel .welcome-panel-column-content { + max-width: 520px; + } + + /* Keep the close icon from overlapping the Welcome text. */ + .welcome-panel .welcome-panel-close { + overflow: hidden; + text-indent: 40px; + white-space: nowrap; + width: 20px; + height: 20px; + padding: 5px; + top: 5px; + left: 5px; + } + + .welcome-panel .welcome-panel-close::before { + top: 5px; + right: -35px; + } + + #dashboard-widgets h2 { + padding: 12px; + } + + #dashboard_recent_comments #the-comment-list .comment-item .avatar { + height: 30px; + width: 30px; + margin: 4px 0 5px 10px; + } + + .community-events-toggle-location { + height: 38px; + vertical-align: baseline; + } + + .community-events-form .regular-text { + height: 32px; + } + + #community-events-submit { + margin-bottom: 0; + /* Override .wp-core-ui .button */ + vertical-align: top; + } + + .community-events-form label, + #dashboard-widgets .community-events-cancel.button-link { + /* Same properties as the submit button for cross-browsers alignment. */ + font-size: 14px; + line-height: normal; + height: auto; + padding: 6px 0; + border: 1px solid transparent; + } + + .community-events .spinner { + margin-top: 7px; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + .welcome-panel::before { + display: none; + } + + .welcome-panel-header { + padding: 32px; + } +} + +@media screen and (max-width: 480px) { + .welcome-panel-column { + gap: 16px; + } +} + +@media screen and (max-width: 360px) { + .welcome-panel-column { + grid-template-columns: 1fr; + } + + [class*="welcome-panel-icon"] { + display: none; + } +} + +@media screen and (min-width: 355px) { + .community-events .event-info { + display: table-row; + float: right; + max-width: 59%; + } + + .event-icon, + .event-icon[aria-hidden="true"] { + display: table-cell; + } + + .event-info-inner { + display: table-cell; + } + + .community-events .event-date-time { + float: left; + max-width: 39%; + } + + .community-events .event-date, + .community-events .event-time { + text-align: left; + } +} diff --git a/tools/storybook/wordpress/css/dashboard-rtl.min.css b/tools/storybook/wordpress/css/dashboard-rtl.min.css new file mode 100644 index 00000000000..5ddca8b7789 --- /dev/null +++ b/tools/storybook/wordpress/css/dashboard-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:left;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:left}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{display:flow-root;min-height:100px;margin:0 8px 20px}#dashboard-widgets .postbox-container .empty-container{outline:3px dashed #c3c4c7;height:250px}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{outline:3px dashed #646970;display:flow-root}#dashboard-widgets .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:50%;right:0;left:0;transform:translateY(-50%);padding:0 2em;text-align:center;color:#646970;font-size:16px;line-height:1.5;display:none}#the-comment-list td.comment p.comment-author{margin-top:0;margin-right:0}#the-comment-list p.comment-author img{float:right;margin-left:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}#the-comment-list td.comment img{max-width:100%}.index-php #screen-meta-links{margin:0 0 8px 20px}.welcome-panel{position:relative;overflow:auto;margin:16px 0;background:#2271b1 url(../images/about-texture.png) center repeat;background-size:500px 500px;background-blend-mode:overlay;font-size:14px;line-height:1.3;clear:both}.welcome-panel::before{content:"";position:absolute;top:-16px;left:96px;z-index:0;width:300px;height:382px;background:url(../images/about-header-about.svg) no-repeat center;background-size:contain}.welcome-panel h2{margin:0;font-size:48px;font-weight:600;line-height:1.25;color:#fff}.welcome-panel h3{margin:0;font-size:20px;font-weight:400;line-height:1.4}.welcome-panel p{font-size:inherit;line-height:inherit}.welcome-panel-header{color:#fff}.welcome-panel-header a{color:#fff}.welcome-panel-header a:focus,.welcome-panel-header a:hover{color:#f5e6ab;text-decoration:none}.welcome-panel .welcome-panel-close:focus,.welcome-panel-header a:focus{outline-color:currentColor;outline-offset:1px;box-shadow:none}.welcome-panel-header p{margin:.5em 0 0;font-size:20px;line-height:1.4}.welcome-panel .welcome-panel-close{position:absolute;top:10px;left:10px;padding:10px 24px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;right:0;transition:all .1s ease-in-out;content:'\f335';font-size:24px;color:#fff}.welcome-panel .welcome-panel-close{color:#fff}.welcome-panel .welcome-panel-close:focus,.welcome-panel .welcome-panel-close:focus::before,.welcome-panel .welcome-panel-close:hover,.welcome-panel .welcome-panel-close:hover::before{color:#f5e6ab}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px 13px;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{min-height:400px;display:flex;flex-direction:column;justify-content:space-between}.welcome-panel-header{box-sizing:border-box;margin-right:auto;margin-left:auto;max-width:1500px;width:100%;padding:48px 48px 48px 408px}.welcome-panel .welcome-panel-column-container{box-sizing:border-box;width:100%;clear:both;display:grid;z-index:1;margin-top:32px;padding:48px;grid-template-columns:repeat(3,1fr);gap:32px;align-self:flex-end;background:#fff}[class*=welcome-panel-icon]{height:60px;width:60px;background-color:#1d2327;background-position:center;background-size:24px 24px;background-repeat:no-repeat;border-radius:100%}.welcome-panel-column{display:grid;grid-template-columns:min-content 1fr;gap:24px}.welcome-panel-icon-pages{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E")}.welcome-panel-icon-layout{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E")}.welcome-panel-icon-styles{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E")}.welcome-panel .welcome-widgets-menus{line-height:1.14285714}.welcome-panel .welcome-panel-column ul{margin:.8em 0 1em 1em}.welcome-panel li{font-size:14px}.welcome-panel li a{text-decoration:none}.welcome-panel .welcome-panel-column li{line-height:1.14285714;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#646970;font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 0 0 10px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-setup-home:before{content:"\f102";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-widgets:before{content:"\f538";top:-2px}.welcome-panel .welcome-menus:before{content:"\f163";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 0 0 5px}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_right_now .search-engines-info:before{content:"\f348"}.community-events-errors{margin:0}.community-events-loading{padding:10px 12px 8px}.community-events{margin-bottom:6px;padding:0 12px}.community-events .spinner{float:none;margin:5px 2px 0;vertical-align:top}.community-events form[aria-hidden=true],.community-events-errors [aria-hidden=true],.community-events-errors[aria-hidden=true],.community-events-loading[aria-hidden=true],.community-events[aria-hidden=true]{display:none}.community-events .activity-block:first-child,.community-events h2{padding-top:12px;padding-bottom:10px}.community-events-form{margin:15px 0 5px}.community-events-form .regular-text{width:40%;height:29px;margin:0;vertical-align:top}.community-events li.event-none{border-right:4px solid #72aee6}#dashboard-widgets .community-events li.event-none a{text-decoration:underline}.community-events-form label{display:inline-block;vertical-align:top;line-height:2.15384615;height:28px}.community-events .activity-block>p{margin-bottom:0;display:inline}.community-events-toggle-location{vertical-align:middle}#community-events-submit{margin-right:3px;margin-left:3px}#dashboard-widgets .community-events-cancel.button-link{vertical-align:top;line-height:2;height:28px;text-decoration:underline}.community-events ul{background-color:#f6f7f7;padding-right:0;padding-left:0;padding-bottom:0}.community-events li{margin:0;padding:8px 12px;color:#2c3338}.community-events li:first-child{border-top:1px solid #f0f0f1}.community-events li~li{border-top:1px solid #f0f0f1}.community-events .activity-block.last{border-bottom:1px solid #f0f0f1;padding-top:0;margin-top:-1px}.community-events .event-info{display:block}.event-icon{height:18px;padding-left:10px;width:18px;display:none}.event-icon:before{color:#646970;font-size:18px}.event-meetup .event-icon:before{content:"\f484"}.event-wordcamp .event-icon:before{content:"\f486"}.community-events .event-title{font-weight:600;display:block}.community-events .event-date,.community-events .event-time{display:block}.community-events-footer{margin-top:0;margin-bottom:0;padding:12px;border-top:1px solid #f0f0f1;color:#dcdcde}.community-events-footer .screen-reader-text{height:inherit;white-space:nowrap}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#646970;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#646970}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:right;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:left;position:relative;top:-5px;margin-right:5px}#dashboard_right_now p.search-engines-info{margin:1em 0}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#50575e;background:#f6f7f7;border-top:1px solid #f0f0f1;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#50575e}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d63638}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #f0f0f1;border-width:1px 0 1px 1px}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts{padding:10px 0 0}#dashboard_quick_press label{display:inline-block;margin-bottom:4px}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:left}#description-wrap{margin-top:12px}#quick-press textarea#content{min-height:90px;max-height:1300px;margin:0 0 8px;padding:6px 7px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #f0f0f1}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:left;margin:0 0 0 12px}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#646970}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#1d2327}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-right:0;margin-left:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-right:5px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:12px 0;text-align:center}#dashboard_activity .no-activity p{color:#646970;font-size:16px}#dashboard_activity .subsubsub{float:none;border-top:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#646970}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-left:5px;min-width:150px;color:#646970}.activity-block{border-bottom:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#dcdcde}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-right:12px}#activity-widget #the-comment-list .comment-item{background:#f6f7f7;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar{padding-right:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #f0f0f1}#activity-widget #the-comment-list .unapproved{background-color:#fcf9e8}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;background:#d63638;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets li a,.community-events-footer a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:left;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-right:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5;margin:0;color:#646970}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4}.rss-widget ul li{line-height:1.5;margin-bottom:12px}.rss-widget span.rss-date{color:#646970;font-size:13px;margin-right:3px}.rss-widget cite{display:block;text-align:left;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-left:128px}#dashboard_browser_nag .browser-icon{margin-top:-32px}#dashboard_browser_nag.postbox{background-color:#b32d2e;background-image:none;border-color:#b32d2e;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox h2{border-bottom-color:transparent;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.postbox .postbox-header{border-color:transparent}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_php_nag .dashicons-warning{color:#dba617;padding-left:6px}#dashboard_php_nag.php-insecure .dashicons-warning{color:#d63638}#dashboard_php_nag h2{display:inline-block}#dashboard_php_nag p{margin:12px 0}#dashboard_php_nag h3{font-weight:600}#dashboard_php_nag .button .dashicons-external{line-height:25px}@media only screen and (min-width:1600px){.welcome-panel .welcome-panel-column-container{display:flex;justify-content:center}.welcome-panel-column{width:100%;max-width:460px}}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#dashboard-widgets .meta-box-sortables{min-height:0}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{min-height:100px}#dashboard-widgets .meta-box-sortables.empty-container{margin-bottom:0}}@media only screen and (min-width:800px) and (max-width:1499px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left}#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1801px){#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{display:inline-block;margin-left:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:1180px) and (min-width:783px){.welcome-panel-column{grid-template-columns:1fr}[class*=welcome-panel-icon]{display:none}}@media screen and (max-width:782px){.welcome-panel::before{width:240px;height:305px;left:32px}.welcome-panel-header{padding:32px 32px 32px 288px}.welcome-panel .welcome-panel-column-container{grid-template-columns:1fr;box-sizing:border-box;padding:32px;width:100%}.welcome-panel .welcome-panel-column-content{max-width:520px}.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;left:5px}.welcome-panel .welcome-panel-close::before{top:5px;right:-35px}#dashboard-widgets h2{padding:12px}#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 0 5px 10px}.community-events-toggle-location{height:38px;vertical-align:baseline}.community-events-form .regular-text{height:32px}#community-events-submit{margin-bottom:0;vertical-align:top}#dashboard-widgets .community-events-cancel.button-link,.community-events-form label{font-size:14px;line-height:normal;height:auto;padding:6px 0;border:1px solid transparent}.community-events .spinner{margin-top:7px}}@media screen and (max-width:600px){.welcome-panel::before{display:none}.welcome-panel-header{padding:32px}}@media screen and (max-width:480px){.welcome-panel-column{gap:16px}}@media screen and (max-width:360px){.welcome-panel-column{grid-template-columns:1fr}[class*=welcome-panel-icon]{display:none}}@media screen and (min-width:355px){.community-events .event-info{display:table-row;float:right;max-width:59%}.event-icon,.event-icon[aria-hidden=true]{display:table-cell}.event-info-inner{display:table-cell}.community-events .event-date-time{float:left;max-width:39%}.community-events .event-date,.community-events .event-time{text-align:left}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/dashboard.css b/tools/storybook/wordpress/css/dashboard.css new file mode 100644 index 00000000000..e8f414a9f53 --- /dev/null +++ b/tools/storybook/wordpress/css/dashboard.css @@ -0,0 +1,1487 @@ +#wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; +} + +#wpbody-content #dashboard-widgets.columns-2 .postbox-container { + width: 49.5%; +} + +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2, +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3, +#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4 { + float: right; + width: 50.5%; +} + +#wpbody-content #dashboard-widgets.columns-3 .postbox-container { + width: 33.5%; +} + +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1 { + width: 33%; +} + +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3, +#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4 { + float: right; +} + +#wpbody-content #dashboard-widgets.columns-4 .postbox-container { + width: 25%; +} + +#dashboard-widgets .postbox-container { + width: 25%; +} + +#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container { + border: none !important; +} + +#dashboard-widgets-wrap { + overflow: hidden; + margin: 0 -8px; +} + +#dashboard-widgets .postbox .inside { + margin-bottom: 0; +} + +#dashboard-widgets .meta-box-sortables { + display: flow-root; /* avoid margin collapsing between parent and first/last child elements */ + /* Required min-height to make the jQuery UI Sortable drop zone work. */ + min-height: 100px; + margin: 0 8px 20px; +} + +#dashboard-widgets .postbox-container .empty-container { + outline: 3px dashed #c3c4c7; + height: 250px; +} + +/* Only highlight drop zones when dragging and only in the 2 columns layout. */ +.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { + outline: 3px dashed #646970; + /* Prevent margin on the child from collapsing with margin on the parent. */ + display: flow-root; +} + +#dashboard-widgets .postbox-container .empty-container:after { + content: attr(data-emptystring); + margin: auto; + position: absolute; + top: 50%; + left: 0; + right: 0; + transform: translateY( -50% ); + padding: 0 2em; + text-align: center; + color: #646970; + font-size: 16px; + line-height: 1.5; + display: none; +} + + +/* @todo: this was originally in this section, but likely belongs elsewhere */ +#the-comment-list td.comment p.comment-author { + margin-top: 0; + margin-left: 0; +} + +#the-comment-list p.comment-author img { + float: left; + margin-right: 8px; +} + +#the-comment-list p.comment-author strong a { + border: none; +} + +#the-comment-list td { + vertical-align: top; +} + +#the-comment-list td.comment { + word-wrap: break-word; +} + +#the-comment-list td.comment img { + max-width: 100%; +} + +/* Screen meta exception for when the "Dashboard" heading is missing or located below the Welcome Panel. */ +.index-php #screen-meta-links { + margin: 0 20px 8px 0; +} + +/* Welcome Panel */ +.welcome-panel { + position: relative; + overflow: auto; + margin: 16px 0; + background: #2271b1 url(../images/about-texture.png) center repeat; + background-size: 500px 500px; + background-blend-mode: overlay; + font-size: 14px; + line-height: 1.3; + clear: both; +} + +.welcome-panel::before { + content: ""; + position: absolute; + top: -16px; + right: 96px; + z-index: 0; + width: 300px; + height: 382px; + background: url(../images/about-header-about.svg) no-repeat center; + background-size: contain; +} + +.welcome-panel h2 { + margin: 0; + font-size: 48px; + font-weight: 600; + line-height: 1.25; + color: #fff; +} + +.welcome-panel h3 { + margin: 0; + font-size: 20px; + font-weight: 400; + line-height: 1.4; +} + +.welcome-panel p { + font-size: inherit; + line-height: inherit; +} + +.welcome-panel-header { + color: #fff; +} + +.welcome-panel-header a { + color: #fff; +} + +.welcome-panel-header a:focus, +.welcome-panel-header a:hover { + color: #f5e6ab; + text-decoration: none; +} + +.welcome-panel-header a:focus, +.welcome-panel .welcome-panel-close:focus { + outline-color: currentColor; + outline-offset: 1px; + box-shadow: none; +} + +.welcome-panel-header p { + margin: 0.5em 0 0; + font-size: 20px; + line-height: 1.4; +} + +.welcome-panel .welcome-panel-close { + position: absolute; + top: 10px; + right: 10px; + padding: 10px 15px 10px 24px; + font-size: 13px; + line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ + text-decoration: none; +} + +.welcome-panel .welcome-panel-close:before { + position: absolute; + top: 8px; + left: 0; + transition: all .1s ease-in-out; + content: '\f335'; + font-size: 24px; + color: #fff; +} + +.welcome-panel .welcome-panel-close { + color: #fff; +} + +.welcome-panel .welcome-panel-close:hover, +.welcome-panel .welcome-panel-close:focus, +.welcome-panel .welcome-panel-close:hover::before, +.welcome-panel .welcome-panel-close:focus::before { + color: #f5e6ab; +} + +/* @deprecated 5.9.0 -- Button removed from panel. */ +.wp-core-ui .welcome-panel .button.button-hero { + margin: 15px 13px 3px 0; + padding: 12px 36px; + height: auto; + line-height: 1.4285714; + white-space: normal; +} + +.welcome-panel-content { + min-height: 400px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.welcome-panel-header { + box-sizing: border-box; + margin-left: auto; + margin-right: auto; + max-width: 1500px; + width: 100%; + /* 408px = 300px (balloon width) + 96px (offset from edge) + 16px (spacing). */ + padding: 48px 408px 48px 48px; +} + +.welcome-panel .welcome-panel-column-container { + box-sizing: border-box; + width: 100%; + clear: both; + display: grid; + z-index: 1; + margin-top: 32px; + padding: 48px; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + align-self: flex-end; + background: #fff; +} + +[class*="welcome-panel-icon"] { + height: 60px; + width: 60px; + background-color: #1d2327; + background-position: center; + background-size: 24px 24px; + background-repeat: no-repeat; + border-radius: 100%; +} + +.welcome-panel-column { + display: grid; + grid-template-columns: min-content 1fr; + gap: 24px; +} + +.welcome-panel-icon-pages { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E"); +} + +.welcome-panel-icon-layout { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E"); +} + +.welcome-panel-icon-styles { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E"); +} + +/* @deprecated 5.9.0 -- Section removed from welcome panel. */ +.welcome-panel .welcome-widgets-menus { + line-height: 1.14285714; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel .welcome-panel-column ul { + margin: 0.8em 1em 1em 0; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel li { + font-size: 14px; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel li a { + text-decoration: none; +} + +/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ +.welcome-panel .welcome-panel-column li { + line-height: 1.14285714; + list-style-type: none; + padding: 0 0 8px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-icon { + background: transparent !important; +} + +/* Welcome Panel and Right Now common Icons style */ + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-icon:before, +#dashboard_right_now li a:before, +#dashboard_right_now li span:before, +#dashboard_right_now .search-engines-info:before { + color: #646970; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0 10px 0 0; + position: relative; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + vertical-align: top; +} + +/* Welcome Panel specific Icons styles */ + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-write-blog:before, +.welcome-panel .welcome-edit-page:before { + content: "\f119"; + top: -3px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-add-page:before { + content: "\f132"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-setup-home:before { + content: "\f102"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-view-site:before { + content: "\f115"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-widgets-menus:before { + content: "\f116"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-widgets:before { + content: "\f538"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-menus:before { + content: "\f163"; + top: -2px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-comments:before { + content: "\f117"; + top: -1px; +} + +/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ +.welcome-panel .welcome-learn-more:before { + content: "\f118"; + top: -1px; +} + +/* Right Now specific Icons styles */ + +#dashboard_right_now .search-engines-info:before, +#dashboard_right_now li a:before, +#dashboard_right_now li > span:before { /* get only the first level span to exclude screen-reader-text in mu-storage */ + content: "\f159"; /* generic icon for items added by CPTs ? */ + padding: 0 5px 0 0; +} + +#dashboard_right_now .page-count a:before, +#dashboard_right_now .page-count span:before { + content: "\f105"; +} + +#dashboard_right_now .post-count a:before, +#dashboard_right_now .post-count span:before { + content: "\f109"; +} + +#dashboard_right_now .comment-count a:before { + content: "\f101"; +} + +#dashboard_right_now .comment-mod-count a:before { + content: "\f125"; +} + +#dashboard_right_now .storage-count a:before { + content: "\f104"; +} + +#dashboard_right_now .storage-count.warning a:before { + content: "\f153"; +} + +#dashboard_right_now .search-engines-info:before { + content: "\f348"; +} + +/* Dashboard WordPress events */ + +.community-events-errors { + margin: 0; +} + +.community-events-loading { + padding: 10px 12px 8px; +} + +.community-events { + margin-bottom: 6px; + padding: 0 12px; +} + +.community-events .spinner { + float: none; + margin: 5px 2px 0; + vertical-align: top; +} + +.community-events-errors[aria-hidden="true"], +.community-events-errors [aria-hidden="true"], +.community-events-loading[aria-hidden="true"], +.community-events[aria-hidden="true"], +.community-events form[aria-hidden="true"] { + display: none; +} + +.community-events .activity-block:first-child, +.community-events h2 { + padding-top: 12px; + padding-bottom: 10px; +} + +.community-events-form { + margin: 15px 0 5px; +} + +.community-events-form .regular-text { + width: 40%; + height: 29px; + margin: 0; + vertical-align: top; +} + +.community-events li.event-none { + border-left: 4px solid #72aee6; +} + +#dashboard-widgets .community-events li.event-none a { + text-decoration: underline; +} + +.community-events-form label { + display: inline-block; + vertical-align: top; + line-height: 2.15384615; + height: 28px; +} + +.community-events .activity-block > p { + margin-bottom: 0; + display: inline; +} + +.community-events-toggle-location { + vertical-align: middle; +} + +#community-events-submit { + margin-left: 3px; + margin-right: 3px; +} + +/* Needs higher specificity than #dashboard-widgets .button-link */ +#dashboard-widgets .community-events-cancel.button-link { + vertical-align: top; + /* Same properties as the submit button for cross-browsers alignment. */ + line-height: 2; + height: 28px; + text-decoration: underline; +} + +.community-events ul { + background-color: #f6f7f7; + padding-left: 0; + padding-right: 0; + padding-bottom: 0; +} + +.community-events li { + margin: 0; + padding: 8px 12px; + color: #2c3338; +} +.community-events li:first-child { + border-top: 1px solid #f0f0f1; +} + +.community-events li ~ li { + border-top: 1px solid #f0f0f1; +} + +.community-events .activity-block.last { + border-bottom: 1px solid #f0f0f1; + padding-top: 0; + margin-top: -1px; +} + +.community-events .event-info { + display: block; +} + +.event-icon { + height: 18px; + padding-right: 10px; + width: 18px; + display: none; /* Hide on smaller screens */ +} + +.event-icon:before { + color: #646970; + font-size: 18px; +} +.event-meetup .event-icon:before { + content: "\f484"; +} +.event-wordcamp .event-icon:before { + content: "\f486"; +} + +.community-events .event-title { + font-weight: 600; + display: block; +} + +.community-events .event-date, +.community-events .event-time { + display: block; +} + +.community-events-footer { + margin-top: 0; + margin-bottom: 0; + padding: 12px; + border-top: 1px solid #f0f0f1; + color: #dcdcde; +} + +/* Safari 10 + VoiceOver specific: without this, the hidden text gets read out before the link. */ +.community-events-footer .screen-reader-text { + height: inherit; + white-space: nowrap; +} + +/* Dashboard WordPress news */ + +#dashboard_primary .inside { + margin: 0; + padding: 0; +} + +#dashboard_primary .widget-loading { + padding: 12px 12px 0; + margin-bottom: 1em !important; /* Needs to override `.postbox .inside > p:last-child` in common.css */ +} + +/* Notice when JS is off. */ +#dashboard_primary .inside .notice { + margin: 0; +} + +body #dashboard-widgets .postbox form .submit { + margin: 0; +} + +/* Used only for configurable widgets. */ +.dashboard-widget-control-form p { + margin-top: 0; +} + +.rssSummary { + color: #646970; + margin-top: 4px; +} + +#dashboard_primary .rss-widget { + font-size: 13px; + padding: 0 12px; +} + +#dashboard_primary .rss-widget:last-child { + border-bottom: none; + padding-bottom: 8px; +} + +#dashboard_primary .rss-widget a { + font-weight: 400; +} + +#dashboard_primary .rss-widget span, +#dashboard_primary .rss-widget span.rss-date { + color: #646970; +} + +#dashboard_primary .rss-widget span.rss-date { + margin-left: 12px; +} + +#dashboard_primary .rss-widget ul li { + padding: 4px 0; + margin: 0; +} + +/* Dashboard right now */ + +#dashboard_right_now ul { + margin: 0; + /* contain floats but don't use overflow: hidden */ + display: inline-block; + width: 100%; +} + +#dashboard_right_now li { + width: 50%; + float: left; + margin-bottom: 10px; +} + +#dashboard_right_now .inside { + padding: 0; +} + +#dashboard_right_now .main { + padding: 0 12px 11px; +} + +#dashboard_right_now .main p { + margin: 0; +} + +#dashboard_right_now #wp-version-message .button { + float: right; + position: relative; + top: -5px; + margin-left: 5px; +} + +#dashboard_right_now p.search-engines-info { + margin: 1em 0; +} + +.mu-storage { + overflow: hidden; +} + +#dashboard-widgets h3.mu-storage { + margin: 0 0 10px; + padding: 0; + font-size: 14px; + font-weight: 400; +} + +/* Dashboard right now - Colors */ + +#dashboard_right_now .sub { + color: #50575e; + background: #f6f7f7; + border-top: 1px solid #f0f0f1; + padding: 10px 12px 6px; +} + +#dashboard_right_now .sub h3 { + color: #50575e; +} + +#dashboard_right_now .sub p { + margin: 0 0 1em; +} + +#dashboard_right_now .warning a:before, +#dashboard_right_now .warning span:before { + color: #d63638; +} + +/* Dashboard Quick Draft */ + +#dashboard_quick_press .inside { + margin: 0; + padding: 0; +} + +#dashboard_quick_press div.updated { + margin-bottom: 10px; + border: 1px solid #f0f0f1; + border-width: 1px 1px 1px 0; +} + +#dashboard_quick_press form { + margin: 12px; +} + +#dashboard_quick_press .drafts { + padding: 10px 0 0; +} + +/* Dashboard Quick Draft - Form styling */ + +#dashboard_quick_press label { + display: inline-block; + margin-bottom: 4px; +} + +#dashboard_quick_press input, +#dashboard_quick_press textarea { + box-sizing: border-box; + margin: 0; +} + +#dashboard-widgets .postbox form .submit { + margin: -39px 0; + float: right; +} + +#description-wrap { + margin-top: 12px; +} + +#quick-press textarea#content { + min-height: 90px; + max-height: 1300px; + margin: 0 0 8px; + padding: 6px 7px; + resize: none; +} + +/* Dashboard Quick Draft - Drafts list */ + +.js #dashboard_quick_press .drafts { + border-top: 1px solid #f0f0f1; +} + +#dashboard_quick_press .drafts abbr { + border: none; +} + +#dashboard_quick_press .drafts .view-all { + float: right; + margin: 0 12px 0 0; +} + +#dashboard_primary a.rsswidget { + font-weight: 400; +} + +#dashboard_quick_press .drafts ul { + margin: 0 12px; +} + +#dashboard_quick_press .drafts li { + margin-bottom: 1em; +} +#dashboard_quick_press .drafts li time { + color: #646970; +} + +#dashboard_quick_press .drafts p { + margin: 0; + word-wrap: break-word; +} + +#dashboard_quick_press .draft-title { + word-wrap: break-word; +} + +#dashboard_quick_press .draft-title a, +#dashboard_quick_press .draft-title time { + margin: 0 5px 0 0; +} + +/* Dashboard common styles */ + +#dashboard-widgets h4, /* Back-compat for pre-4.4 */ +#dashboard-widgets h3, +#dashboard_quick_press .drafts h2 { + margin: 0 12px 8px; + padding: 0; + font-size: 14px; + font-weight: 400; + color: #1d2327; +} + +#dashboard_quick_press .drafts h2 { + line-height: inherit; +} + +#dashboard-widgets .inside h4, /* Back-compat for pre-4.4 */ +#dashboard-widgets .inside h3 { + margin-left: 0; + margin-right: 0; +} + +/* Dashboard activity widget */ + +#dashboard_activity .comment-meta span.approve:before { + content: "\f227"; + font: 20px/.5 dashicons; + margin-left: 5px; + vertical-align: middle; + position: relative; + top: -1px; + margin-right: 2px; +} + +#dashboard_activity .inside { + margin: 0; + padding-bottom: 0; +} + +#dashboard_activity .no-activity { + overflow: hidden; + padding: 12px 0; + text-align: center; +} + +#dashboard_activity .no-activity p { + color: #646970; + font-size: 16px; +} + +#dashboard_activity .subsubsub { + float: none; + border-top: 1px solid #f0f0f1; + margin: 0 -12px; + padding: 8px 12px 4px; +} + +#dashboard_activity .subsubsub a .count, +#dashboard_activity .subsubsub a.current .count { + color: #646970; /* white background on the dashboard but #f0f0f1 on list tables */ +} + +#future-posts ul, +#published-posts ul { + clear: both; + margin-bottom: 0; +} + +#future-posts li, +#published-posts li { + margin-bottom: 8px; +} + +#future-posts ul span, +#published-posts ul span { + display: inline-block; + margin-right: 5px; + min-width: 150px; + color: #646970; +} + +.activity-block { + border-bottom: 1px solid #f0f0f1; + margin: 0 -12px; + padding: 8px 12px 4px; +} + +.activity-block:last-child { + border-bottom: none; +} + +.activity-block .subsubsub li { + color: #dcdcde; +} + +/* Dashboard activity widget - Comments */ +/* @todo: needs serious de-duplication */ + +#activity-widget #the-comment-list tr.undo, +#activity-widget #the-comment-list div.undo { + background: none; + padding: 6px 0; + margin-left: 12px; +} + +#activity-widget #the-comment-list .comment-item { + background: #f6f7f7; + padding: 12px; + position: relative; +} + +#activity-widget #the-comment-list .avatar { + position: absolute; + top: 12px; +} + +#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar { + padding-left: 63px; +} + +#activity-widget #the-comment-list .dashboard-comment-wrap blockquote { + margin: 1em 0; +} + +#activity-widget #the-comment-list .comment-item p.row-actions { + margin: 4px 0 0; +} + +#activity-widget #the-comment-list .comment-item:first-child { + border-top: 1px solid #f0f0f1; +} + +#activity-widget #the-comment-list .unapproved { + background-color: #fcf9e8; +} + +#activity-widget #the-comment-list .unapproved:before { + content: ""; + display: block; + position: absolute; + left: 0; + top: 0; + bottom: 0; + background: #d63638; + width: 4px; +} + +#activity-widget #the-comment-list .spam-undo-inside .avatar, +#activity-widget #the-comment-list .trash-undo-inside .avatar { + position: relative; + top: 0; +} + +/* Browse happy box */ + +#dashboard-widgets #dashboard_browser_nag.postbox .inside { + margin: 10px; +} + +.postbox .button-link .edit-box { + display: none; +} + +.edit-box { + opacity: 0; +} + +.hndle:hover .edit-box, +.edit-box:focus { + opacity: 1; +} + +#dashboard-widgets form .input-text-wrap input { + width: 100%; +} + +#dashboard-widgets form .textarea-wrap textarea { + width: 100%; +} + +#dashboard-widgets .postbox form .submit { + float: none; + margin: .5em 0 0; + padding: 0; + border: none; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { + min-width: 0; +} + +#dashboard-widgets li a, +#dashboard-widgets .button-link, +.community-events-footer a { + text-decoration: none; +} + +#dashboard-widgets h2 a { + text-decoration: underline; +} + +#dashboard-widgets .hndle .postbox-title-action { + float: right; + line-height: 1.2; +} + +#dashboard_plugins h5 { + font-size: 14px; +} + +/* Recent Comments */ + +#latest-comments #the-comment-list { + position: relative; + margin: 0 -12px; +} + +#activity-widget #the-comment-list .comment, +#activity-widget #the-comment-list .pingback { + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.06); +} + +#activity-widget .comments #the-comment-list .alt { + background-color: transparent; +} + +#activity-widget #latest-comments #the-comment-list .comment-item { + /* the row-actions paragraph is output only for users with 'edit_comment' capabilities, + for other users this needs a min height equal to the gravatar image */ + min-height: 50px; + margin: 0; + padding: 12px; +} + +#latest-comments #the-comment-list .pingback { + padding-left: 12px !important; +} + +#latest-comments #the-comment-list .comment-item:first-child { + border-top: none; +} + +#latest-comments #the-comment-list .comment-meta { + line-height: 1.5; + margin: 0; + color: #646970; +} + +#latest-comments #the-comment-list .comment-meta cite { + font-style: normal; + font-weight: 400; +} + +#latest-comments #the-comment-list .comment-item blockquote, +#latest-comments #the-comment-list .comment-item blockquote p { + margin: 0; + padding: 0; + display: inline; +} + +#latest-comments #the-comment-list .comment-item p.row-actions { + margin: 3px 0 0; + padding: 0; + font-size: 13px; +} + +/* Feeds */ +.rss-widget ul { + margin: 0; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 13px; + font-weight: 600; + line-height: 1.4; +} + +.rss-widget ul li { + line-height: 1.5; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #646970; + font-size: 13px; + margin-left: 3px; +} + +.rss-widget cite { + display: block; + text-align: right; + margin: 0 0 1em; + padding: 0; +} + +.rss-widget cite:before { + content: "\2014"; +} + +.dashboard-comment-wrap { + word-wrap: break-word; +} + +/* Browser Nag */ +#dashboard_browser_nag a.update-browser-link { + font-size: 1.2em; + font-weight: 600; +} + +#dashboard_browser_nag a { + text-decoration: underline; +} + +#dashboard_browser_nag p.browser-update-nag.has-browser-icon { + padding-right: 128px; +} + +#dashboard_browser_nag .browser-icon { + margin-top: -32px; +} + +#dashboard_browser_nag.postbox { + background-color: #b32d2e; + background-image: none; + border-color: #b32d2e; + color: #fff; + box-shadow: none; +} + +#dashboard_browser_nag.postbox h2 { + border-bottom-color: transparent; + background: transparent none; + color: #fff; + box-shadow: none; +} + +#dashboard_browser_nag a { + color: #fff; +} + +#dashboard_browser_nag.postbox .postbox-header { + border-color: transparent; +} + +#dashboard_browser_nag h2.hndle { + border: none; + font-weight: 600; + font-size: 20px; + padding-top: 10px; +} + +.postbox#dashboard_browser_nag p a.dismiss { + font-size: 14px; +} + +.postbox#dashboard_browser_nag p, +.postbox#dashboard_browser_nag a, +.postbox#dashboard_browser_nag p.browser-update-nag { + font-size: 16px; +} + +/* PHP Nag */ +#dashboard_php_nag .dashicons-warning { + color: #dba617; + padding-right: 6px; +} + +#dashboard_php_nag.php-insecure .dashicons-warning { + color: #d63638; +} + +#dashboard_php_nag h2 { + display: inline-block; +} + +#dashboard_php_nag p { + margin: 12px 0; +} + +#dashboard_php_nag h3 { + font-weight: 600; +} + +#dashboard_php_nag .button .dashicons-external { + line-height: 25px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media only screen and (min-width: 1600px) { + .welcome-panel .welcome-panel-column-container { + display: flex; + justify-content: center; + } + + .welcome-panel-column { + width: 100%; + max-width: 460px; + } +} + +/* one column on the dash */ +@media only screen and (max-width: 799px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 100%; + } + + #dashboard-widgets .meta-box-sortables { + min-height: 0; + } + + .is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { + min-height: 100px; + } + + #dashboard-widgets .meta-box-sortables.empty-container { + margin-bottom: 0; + } +} + +/* two columns on the dash, but keep the setting if one is selected */ +@media only screen and (min-width: 800px) and (max-width: 1499px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 49.5%; + } + + #wpbody-content #dashboard-widgets #postbox-container-2, + #wpbody-content #dashboard-widgets #postbox-container-3, + #wpbody-content #dashboard-widgets #postbox-container-4 { + float: right; + width: 50.5%; + } + + #dashboard-widgets #postbox-container-3 .empty-container, + #dashboard-widgets #postbox-container-4 .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + #dashboard-widgets #postbox-container-3 .empty-container:after, + #dashboard-widgets #postbox-container-4 .empty-container:after { + display: none; + } + + #wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container { + width: 100%; + } + + #wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + /* show the radio buttons for column prefs only for one or two columns */ + .index-php .screen-layout, + .index-php .columns-prefs { + display: block; + } + + .columns-prefs .columns-prefs-3, + .columns-prefs .columns-prefs-4 { + display: none; + } + + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +/* three columns on the dash */ +@media only screen and (min-width: 1500px) and (max-width: 1800px) { + #wpbody-content #dashboard-widgets .postbox-container { + width: 33.5%; + } + + #wpbody-content #dashboard-widgets #postbox-container-1 { + width: 33%; + } + + #wpbody-content #dashboard-widgets #postbox-container-3, + #wpbody-content #dashboard-widgets #postbox-container-4 { + float: right; + } + + #dashboard-widgets #postbox-container-4 .empty-container { + outline: none; + height: 0; + min-height: 0; + margin-bottom: 0; + } + + #dashboard-widgets #postbox-container-4 .empty-container:after { + display: none; + } + + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +/* Always show the "Drag boxes here" CSS generated content on large screens. */ +@media only screen and (min-width: 1801px) { + #dashboard-widgets .postbox-container .empty-container:after { + display: block; + } +} + +@media screen and (max-width: 870px) { + /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ + .welcome-panel .welcome-panel-column li { + display: inline-block; + margin-right: 13px; + } + + /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ + .welcome-panel .welcome-panel-column ul { + margin: 0.4em 0 0; + } + +} + +@media screen and (max-width: 1180px) and (min-width: 783px) { + .welcome-panel-column { + grid-template-columns: 1fr; + } + + [class*="welcome-panel-icon"] { + display: none; + } +} + +@media screen and (max-width: 782px) { + .welcome-panel::before { + width: 240px; + height: 305px; + right: 32px; + } + + .welcome-panel-header { + /* 288px = 240px (balloon width) + 32px (offset from edge) + 16px (spacing). */ + padding: 32px 288px 32px 32px; + } + + .welcome-panel .welcome-panel-column-container { + grid-template-columns: 1fr; + box-sizing: border-box; + padding: 32px; + width: 100%; + } + + .welcome-panel .welcome-panel-column-content { + max-width: 520px; + } + + /* Keep the close icon from overlapping the Welcome text. */ + .welcome-panel .welcome-panel-close { + overflow: hidden; + text-indent: 40px; + white-space: nowrap; + width: 20px; + height: 20px; + padding: 5px; + top: 5px; + right: 5px; + } + + .welcome-panel .welcome-panel-close::before { + top: 5px; + left: -35px; + } + + #dashboard-widgets h2 { + padding: 12px; + } + + #dashboard_recent_comments #the-comment-list .comment-item .avatar { + height: 30px; + width: 30px; + margin: 4px 10px 5px 0; + } + + .community-events-toggle-location { + height: 38px; + vertical-align: baseline; + } + + .community-events-form .regular-text { + height: 32px; + } + + #community-events-submit { + margin-bottom: 0; + /* Override .wp-core-ui .button */ + vertical-align: top; + } + + .community-events-form label, + #dashboard-widgets .community-events-cancel.button-link { + /* Same properties as the submit button for cross-browsers alignment. */ + font-size: 14px; + line-height: normal; + height: auto; + padding: 6px 0; + border: 1px solid transparent; + } + + .community-events .spinner { + margin-top: 7px; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + .welcome-panel::before { + display: none; + } + + .welcome-panel-header { + padding: 32px; + } +} + +@media screen and (max-width: 480px) { + .welcome-panel-column { + gap: 16px; + } +} + +@media screen and (max-width: 360px) { + .welcome-panel-column { + grid-template-columns: 1fr; + } + + [class*="welcome-panel-icon"] { + display: none; + } +} + +@media screen and (min-width: 355px) { + .community-events .event-info { + display: table-row; + float: left; + max-width: 59%; + } + + .event-icon, + .event-icon[aria-hidden="true"] { + display: table-cell; + } + + .event-info-inner { + display: table-cell; + } + + .community-events .event-date-time { + float: right; + max-width: 39%; + } + + .community-events .event-date, + .community-events .event-time { + text-align: right; + } +} diff --git a/tools/storybook/wordpress/css/dashboard.min.css b/tools/storybook/wordpress/css/dashboard.min.css new file mode 100644 index 00000000000..4e8bb145ba1 --- /dev/null +++ b/tools/storybook/wordpress/css/dashboard.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:right}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{display:flow-root;min-height:100px;margin:0 8px 20px}#dashboard-widgets .postbox-container .empty-container{outline:3px dashed #c3c4c7;height:250px}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{outline:3px dashed #646970;display:flow-root}#dashboard-widgets .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);padding:0 2em;text-align:center;color:#646970;font-size:16px;line-height:1.5;display:none}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}#the-comment-list td.comment{word-wrap:break-word}#the-comment-list td.comment img{max-width:100%}.index-php #screen-meta-links{margin:0 20px 8px 0}.welcome-panel{position:relative;overflow:auto;margin:16px 0;background:#2271b1 url(../images/about-texture.png) center repeat;background-size:500px 500px;background-blend-mode:overlay;font-size:14px;line-height:1.3;clear:both}.welcome-panel::before{content:"";position:absolute;top:-16px;right:96px;z-index:0;width:300px;height:382px;background:url(../images/about-header-about.svg) no-repeat center;background-size:contain}.welcome-panel h2{margin:0;font-size:48px;font-weight:600;line-height:1.25;color:#fff}.welcome-panel h3{margin:0;font-size:20px;font-weight:400;line-height:1.4}.welcome-panel p{font-size:inherit;line-height:inherit}.welcome-panel-header{color:#fff}.welcome-panel-header a{color:#fff}.welcome-panel-header a:focus,.welcome-panel-header a:hover{color:#f5e6ab;text-decoration:none}.welcome-panel .welcome-panel-close:focus,.welcome-panel-header a:focus{outline-color:currentColor;outline-offset:1px;box-shadow:none}.welcome-panel-header p{margin:.5em 0 0;font-size:20px;line-height:1.4}.welcome-panel .welcome-panel-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 24px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;left:0;transition:all .1s ease-in-out;content:'\f335';font-size:24px;color:#fff}.welcome-panel .welcome-panel-close{color:#fff}.welcome-panel .welcome-panel-close:focus,.welcome-panel .welcome-panel-close:focus::before,.welcome-panel .welcome-panel-close:hover,.welcome-panel .welcome-panel-close:hover::before{color:#f5e6ab}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 13px 3px 0;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{min-height:400px;display:flex;flex-direction:column;justify-content:space-between}.welcome-panel-header{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:1500px;width:100%;padding:48px 408px 48px 48px}.welcome-panel .welcome-panel-column-container{box-sizing:border-box;width:100%;clear:both;display:grid;z-index:1;margin-top:32px;padding:48px;grid-template-columns:repeat(3,1fr);gap:32px;align-self:flex-end;background:#fff}[class*=welcome-panel-icon]{height:60px;width:60px;background-color:#1d2327;background-position:center;background-size:24px 24px;background-repeat:no-repeat;border-radius:100%}.welcome-panel-column{display:grid;grid-template-columns:min-content 1fr;gap:24px}.welcome-panel-icon-pages{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E")}.welcome-panel-icon-layout{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E")}.welcome-panel-icon-styles{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E")}.welcome-panel .welcome-widgets-menus{line-height:1.14285714}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel li{font-size:14px}.welcome-panel li a{text-decoration:none}.welcome-panel .welcome-panel-column li{line-height:1.14285714;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#646970;font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 10px 0 0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-setup-home:before{content:"\f102";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-widgets:before{content:"\f538";top:-2px}.welcome-panel .welcome-menus:before{content:"\f163";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 5px 0 0}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_right_now .search-engines-info:before{content:"\f348"}.community-events-errors{margin:0}.community-events-loading{padding:10px 12px 8px}.community-events{margin-bottom:6px;padding:0 12px}.community-events .spinner{float:none;margin:5px 2px 0;vertical-align:top}.community-events form[aria-hidden=true],.community-events-errors [aria-hidden=true],.community-events-errors[aria-hidden=true],.community-events-loading[aria-hidden=true],.community-events[aria-hidden=true]{display:none}.community-events .activity-block:first-child,.community-events h2{padding-top:12px;padding-bottom:10px}.community-events-form{margin:15px 0 5px}.community-events-form .regular-text{width:40%;height:29px;margin:0;vertical-align:top}.community-events li.event-none{border-left:4px solid #72aee6}#dashboard-widgets .community-events li.event-none a{text-decoration:underline}.community-events-form label{display:inline-block;vertical-align:top;line-height:2.15384615;height:28px}.community-events .activity-block>p{margin-bottom:0;display:inline}.community-events-toggle-location{vertical-align:middle}#community-events-submit{margin-left:3px;margin-right:3px}#dashboard-widgets .community-events-cancel.button-link{vertical-align:top;line-height:2;height:28px;text-decoration:underline}.community-events ul{background-color:#f6f7f7;padding-left:0;padding-right:0;padding-bottom:0}.community-events li{margin:0;padding:8px 12px;color:#2c3338}.community-events li:first-child{border-top:1px solid #f0f0f1}.community-events li~li{border-top:1px solid #f0f0f1}.community-events .activity-block.last{border-bottom:1px solid #f0f0f1;padding-top:0;margin-top:-1px}.community-events .event-info{display:block}.event-icon{height:18px;padding-right:10px;width:18px;display:none}.event-icon:before{color:#646970;font-size:18px}.event-meetup .event-icon:before{content:"\f484"}.event-wordcamp .event-icon:before{content:"\f486"}.community-events .event-title{font-weight:600;display:block}.community-events .event-date,.community-events .event-time{display:block}.community-events-footer{margin-top:0;margin-bottom:0;padding:12px;border-top:1px solid #f0f0f1;color:#dcdcde}.community-events-footer .screen-reader-text{height:inherit;white-space:nowrap}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#646970;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#646970}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:left;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:right;position:relative;top:-5px;margin-left:5px}#dashboard_right_now p.search-engines-info{margin:1em 0}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#50575e;background:#f6f7f7;border-top:1px solid #f0f0f1;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#50575e}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d63638}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #f0f0f1;border-width:1px 1px 1px 0}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts{padding:10px 0 0}#dashboard_quick_press label{display:inline-block;margin-bottom:4px}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:right}#description-wrap{margin-top:12px}#quick-press textarea#content{min-height:90px;max-height:1300px;margin:0 0 8px;padding:6px 7px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #f0f0f1}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:right;margin:0 12px 0 0}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#646970}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#1d2327}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-left:0;margin-right:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-left:5px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:12px 0;text-align:center}#dashboard_activity .no-activity p{color:#646970;font-size:16px}#dashboard_activity .subsubsub{float:none;border-top:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#646970}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-right:5px;min-width:150px;color:#646970}.activity-block{border-bottom:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#dcdcde}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-left:12px}#activity-widget #the-comment-list .comment-item{background:#f6f7f7;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar{padding-left:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #f0f0f1}#activity-widget #the-comment-list .unapproved{background-color:#fcf9e8}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;background:#d63638;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets li a,.community-events-footer a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:right;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-left:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5;margin:0;color:#646970}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4}.rss-widget ul li{line-height:1.5;margin-bottom:12px}.rss-widget span.rss-date{color:#646970;font-size:13px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:128px}#dashboard_browser_nag .browser-icon{margin-top:-32px}#dashboard_browser_nag.postbox{background-color:#b32d2e;background-image:none;border-color:#b32d2e;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox h2{border-bottom-color:transparent;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.postbox .postbox-header{border-color:transparent}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_php_nag .dashicons-warning{color:#dba617;padding-right:6px}#dashboard_php_nag.php-insecure .dashicons-warning{color:#d63638}#dashboard_php_nag h2{display:inline-block}#dashboard_php_nag p{margin:12px 0}#dashboard_php_nag h3{font-weight:600}#dashboard_php_nag .button .dashicons-external{line-height:25px}@media only screen and (min-width:1600px){.welcome-panel .welcome-panel-column-container{display:flex;justify-content:center}.welcome-panel-column{width:100%;max-width:460px}}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#dashboard-widgets .meta-box-sortables{min-height:0}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{min-height:100px}#dashboard-widgets .meta-box-sortables.empty-container{margin-bottom:0}}@media only screen and (min-width:800px) and (max-width:1499px){#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right}#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1801px){#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:1180px) and (min-width:783px){.welcome-panel-column{grid-template-columns:1fr}[class*=welcome-panel-icon]{display:none}}@media screen and (max-width:782px){.welcome-panel::before{width:240px;height:305px;right:32px}.welcome-panel-header{padding:32px 288px 32px 32px}.welcome-panel .welcome-panel-column-container{grid-template-columns:1fr;box-sizing:border-box;padding:32px;width:100%}.welcome-panel .welcome-panel-column-content{max-width:520px}.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;right:5px}.welcome-panel .welcome-panel-close::before{top:5px;left:-35px}#dashboard-widgets h2{padding:12px}#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 10px 5px 0}.community-events-toggle-location{height:38px;vertical-align:baseline}.community-events-form .regular-text{height:32px}#community-events-submit{margin-bottom:0;vertical-align:top}#dashboard-widgets .community-events-cancel.button-link,.community-events-form label{font-size:14px;line-height:normal;height:auto;padding:6px 0;border:1px solid transparent}.community-events .spinner{margin-top:7px}}@media screen and (max-width:600px){.welcome-panel::before{display:none}.welcome-panel-header{padding:32px}}@media screen and (max-width:480px){.welcome-panel-column{gap:16px}}@media screen and (max-width:360px){.welcome-panel-column{grid-template-columns:1fr}[class*=welcome-panel-icon]{display:none}}@media screen and (min-width:355px){.community-events .event-info{display:table-row;float:left;max-width:59%}.event-icon,.event-icon[aria-hidden=true]{display:table-cell}.event-info-inner{display:table-cell}.community-events .event-date-time{float:right;max-width:39%}.community-events .event-date,.community-events .event-time{text-align:right}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/deprecated-media-rtl.css b/tools/storybook/wordpress/css/deprecated-media-rtl.css new file mode 100644 index 00000000000..3211e7db4c3 --- /dev/null +++ b/tools/storybook/wordpress/css/deprecated-media-rtl.css @@ -0,0 +1,430 @@ +/*! This file is auto-generated */ +/* Styles for the media library iframe (not used on the Library screen) */ + +div#media-upload-header { + margin: 0; + padding: 5px 5px 0; + font-weight: 600; + position: relative; + border-bottom: 1px solid #dcdcde; + background: #f6f7f7; +} + +#sidemenu { + overflow: hidden; + float: none; + position: relative; + right: 0; + bottom: -1px; + margin: 0 5px; + padding-right: 10px; + list-style: none; + font-size: 12px; + font-weight: 400; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: right; + line-height: 28px; + border-top: 1px solid #f6f7f7; + border-bottom: 1px solid #dcdcde; + background-color: #f6f7f7; + text-decoration: none; + transition: none; +} + +#sidemenu li { + display: inline; + line-height: 200%; + list-style: none; + text-align: center; + white-space: nowrap; + margin: 0; + padding: 0; +} + +#sidemenu a.current { + font-weight: 400; + padding-right: 6px; + padding-left: 6px; + border: 1px solid #dcdcde; + border-bottom-color: #f0f0f1; + background-color: #f0f0f1; + color: #000; +} + +#media-upload:after { /* clearfix */ + content: ""; + display: table; + clear: both; +} + +#media-upload .slidetoggle { + border-top-color: #dcdcde; +} + +#media-upload input[type="radio"] { + padding: 0; +} + +.media-upload-form label.form-help, +td.help { + color: #646970; +} + +form { + margin: 1em; +} + +#search-filter { + text-align: left; +} + +th { + position: relative; +} + +.media-upload-form label.form-help, td.help { + font-family: sans-serif; + font-style: italic; + font-weight: 400; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em; + padding: 0; +} + +/* specific to the image upload form */ + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center right; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center right; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center right; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center right; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + margin: 0 0 5px; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required, +span.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: 400; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#media-upload .tablenav-pages a, +#media-upload .tablenav-pages .current { + display: inline-block; + padding: 4px 5px 6px; + font-size: 16px; + line-height: 1; + text-align: center; + text-decoration: none; +} + +#media-upload .tablenav-pages a { + min-width: 17px; + border: 1px solid #c3c4c7; + background: #f6f7f7; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: left; + font-size: 11px; + margin: 8px 10px 0; +} + +.menu_order_input { + border: 1px solid #dcdcde; + font-size: 10px; + padding: 1px; + width: 23px; +} + +.ui-sortable-helper { + background-color: #fff; + border: 1px solid #a7aaad; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#media-upload th.order-head { + width: 20%; + text-align: center; +} + +#media-upload th.actions-head { + width: 25%; + text-align: center; +} + +#media-upload a.wp-post-thumbnail { + margin: 0 20px; +} + +#media-upload .widefat { + border-style: solid solid none; +} + +.sorthelper { + height: 37px; + width: 623px; + display: block; +} + +#gallery-settings th.label { + width: 160px; +} + +#gallery-settings #basic th.label { + padding: 5px 0 5px 5px; +} + +#gallery-settings .title { + clear: both; + padding: 0 0 3px; + font-size: 1.6em; + border-bottom: 1px solid #dcdcde; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #dcdcde; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: 400; + color: #50575e; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: right; +} + +#gallery-settings .describe { + padding: 5px; + width: 100%; + clear: both; + cursor: default; + background: #fff; +} + +#gallery-settings .describe select { + width: 15em; +} + +#gallery-settings .describe select option, +#gallery-settings .describe td { + padding: 0; +} + +#gallery-settings label, +#gallery-settings legend { + font-size: 13px; + color: #3c434a; + margin-left: 15px; +} + +#gallery-settings .align .field label { + margin: 0 3px 0 1em; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dcdcde; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.8em; + margin: 3px 0 -8px 25px; + text-align: left; + max-width: 625px; +} + +#sort-buttons a { + text-decoration: none; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-right: 5px; +} + +#sort-buttons span { + margin-left: 25px; +} + +p.media-types { + margin: 0; + padding: 1em; +} + +p.media-types-required-info { + padding-top: 0; +} + +tr.not-image { + display: none; +} + +table.not-image tr.not-image { + display: table-row; +} + +table.not-image tr.image-only { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .image-align-none-label { + background-image: url(../images/align-none-2x.png?ver=20120916); + background-size: 21px 15px; + } + + .image-align-left-label { + background-image: url(../images/align-left-2x.png?ver=20120916); + background-size: 22px 15px; + } + + .image-align-center-label { + background-image: url(../images/align-center-2x.png?ver=20120916); + background-size: 21px 15px; + } + + .image-align-right-label { + background-image: url(../images/align-right-2x.png?ver=20120916); + background-size: 22px 15px; + } +} diff --git a/tools/storybook/wordpress/css/deprecated-media-rtl.min.css b/tools/storybook/wordpress/css/deprecated-media-rtl.min.css new file mode 100644 index 00000000000..d08a18838b3 --- /dev/null +++ b/tools/storybook/wordpress/css/deprecated-media-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7}#sidemenu{overflow:hidden;float:none;position:relative;right:0;bottom:-1px;margin:0 5px;padding-right:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:right;line-height:28px;border-top:1px solid #f6f7f7;border-bottom:1px solid #dcdcde;background-color:#f6f7f7;text-decoration:none;transition:none}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:400;padding-right:6px;padding-left:6px;border:1px solid #dcdcde;border-bottom-color:#f0f0f1;background-color:#f0f0f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dcdcde}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#646970}form{margin:1em}#search-filter{text-align:left}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:400}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center right}.image-align-left-label{background:url(../images/align-left.png) no-repeat center right}.image-align-center-label{background:url(../images/align-center.png) no-repeat center right}.image-align-right-label{background:url(../images/align-right.png) no-repeat center right}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required,span.required{text-decoration:none;border:none}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type=text],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #c3c4c7;background:#f6f7f7}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:left;font-size:11px;margin:8px 10px 0}.menu_order_input{border:1px solid #dcdcde;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #a7aaad;opacity:.6}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-upload .widefat{border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 0 5px 5px}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dcdcde}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dcdcde;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:400;color:#50575e}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:right}#gallery-settings .describe{padding:5px;width:100%;clear:both;cursor:default;background:#fff}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#3c434a;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#gallery-settings p.ml-submit{border-top:1px solid #dcdcde}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 0 -8px 25px;text-align:left;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-right:5px}#sort-buttons span{margin-left:25px}p.media-types{margin:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/deprecated-media.css b/tools/storybook/wordpress/css/deprecated-media.css new file mode 100644 index 00000000000..359fc59e3c3 --- /dev/null +++ b/tools/storybook/wordpress/css/deprecated-media.css @@ -0,0 +1,429 @@ +/* Styles for the media library iframe (not used on the Library screen) */ + +div#media-upload-header { + margin: 0; + padding: 5px 5px 0; + font-weight: 600; + position: relative; + border-bottom: 1px solid #dcdcde; + background: #f6f7f7; +} + +#sidemenu { + overflow: hidden; + float: none; + position: relative; + left: 0; + bottom: -1px; + margin: 0 5px; + padding-left: 10px; + list-style: none; + font-size: 12px; + font-weight: 400; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: left; + line-height: 28px; + border-top: 1px solid #f6f7f7; + border-bottom: 1px solid #dcdcde; + background-color: #f6f7f7; + text-decoration: none; + transition: none; +} + +#sidemenu li { + display: inline; + line-height: 200%; + list-style: none; + text-align: center; + white-space: nowrap; + margin: 0; + padding: 0; +} + +#sidemenu a.current { + font-weight: 400; + padding-left: 6px; + padding-right: 6px; + border: 1px solid #dcdcde; + border-bottom-color: #f0f0f1; + background-color: #f0f0f1; + color: #000; +} + +#media-upload:after { /* clearfix */ + content: ""; + display: table; + clear: both; +} + +#media-upload .slidetoggle { + border-top-color: #dcdcde; +} + +#media-upload input[type="radio"] { + padding: 0; +} + +.media-upload-form label.form-help, +td.help { + color: #646970; +} + +form { + margin: 1em; +} + +#search-filter { + text-align: right; +} + +th { + position: relative; +} + +.media-upload-form label.form-help, td.help { + font-family: sans-serif; + font-style: italic; + font-weight: 400; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em; + padding: 0; +} + +/* specific to the image upload form */ + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center left; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center left; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center left; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center left; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + margin: 0 0 5px; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required, +span.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: 400; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#media-upload .tablenav-pages a, +#media-upload .tablenav-pages .current { + display: inline-block; + padding: 4px 5px 6px; + font-size: 16px; + line-height: 1; + text-align: center; + text-decoration: none; +} + +#media-upload .tablenav-pages a { + min-width: 17px; + border: 1px solid #c3c4c7; + background: #f6f7f7; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: right; + font-size: 11px; + margin: 8px 10px 0; +} + +.menu_order_input { + border: 1px solid #dcdcde; + font-size: 10px; + padding: 1px; + width: 23px; +} + +.ui-sortable-helper { + background-color: #fff; + border: 1px solid #a7aaad; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#media-upload th.order-head { + width: 20%; + text-align: center; +} + +#media-upload th.actions-head { + width: 25%; + text-align: center; +} + +#media-upload a.wp-post-thumbnail { + margin: 0 20px; +} + +#media-upload .widefat { + border-style: solid solid none; +} + +.sorthelper { + height: 37px; + width: 623px; + display: block; +} + +#gallery-settings th.label { + width: 160px; +} + +#gallery-settings #basic th.label { + padding: 5px 5px 5px 0; +} + +#gallery-settings .title { + clear: both; + padding: 0 0 3px; + font-size: 1.6em; + border-bottom: 1px solid #dcdcde; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #dcdcde; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: 400; + color: #50575e; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: left; +} + +#gallery-settings .describe { + padding: 5px; + width: 100%; + clear: both; + cursor: default; + background: #fff; +} + +#gallery-settings .describe select { + width: 15em; +} + +#gallery-settings .describe select option, +#gallery-settings .describe td { + padding: 0; +} + +#gallery-settings label, +#gallery-settings legend { + font-size: 13px; + color: #3c434a; + margin-right: 15px; +} + +#gallery-settings .align .field label { + margin: 0 1em 0 3px; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dcdcde; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.8em; + margin: 3px 25px -8px 0; + text-align: right; + max-width: 625px; +} + +#sort-buttons a { + text-decoration: none; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-left: 5px; +} + +#sort-buttons span { + margin-right: 25px; +} + +p.media-types { + margin: 0; + padding: 1em; +} + +p.media-types-required-info { + padding-top: 0; +} + +tr.not-image { + display: none; +} + +table.not-image tr.not-image { + display: table-row; +} + +table.not-image tr.image-only { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .image-align-none-label { + background-image: url(../images/align-none-2x.png?ver=20120916); + background-size: 21px 15px; + } + + .image-align-left-label { + background-image: url(../images/align-left-2x.png?ver=20120916); + background-size: 22px 15px; + } + + .image-align-center-label { + background-image: url(../images/align-center-2x.png?ver=20120916); + background-size: 21px 15px; + } + + .image-align-right-label { + background-image: url(../images/align-right-2x.png?ver=20120916); + background-size: 22px 15px; + } +} diff --git a/tools/storybook/wordpress/css/deprecated-media.min.css b/tools/storybook/wordpress/css/deprecated-media.min.css new file mode 100644 index 00000000000..77543f742d7 --- /dev/null +++ b/tools/storybook/wordpress/css/deprecated-media.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7}#sidemenu{overflow:hidden;float:none;position:relative;left:0;bottom:-1px;margin:0 5px;padding-left:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top:1px solid #f6f7f7;border-bottom:1px solid #dcdcde;background-color:#f6f7f7;text-decoration:none;transition:none}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0}#sidemenu a.current{font-weight:400;padding-left:6px;padding-right:6px;border:1px solid #dcdcde;border-bottom-color:#f0f0f1;background-color:#f0f0f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dcdcde}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#646970}form{margin:1em}#search-filter{text-align:right}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:400}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{display:none}.media-item .thumbnail{max-width:128px;max-height:128px}thead.media-item-info tr{background-color:transparent}.form-table thead.media-item-info{border:8px solid #fff}abbr.required,span.required{text-decoration:none;border:none}.describe label{display:inline}.describe td.error{padding:2px 8px}.describe td.A1{width:132px}.describe input[type=text],.describe textarea{width:460px;border-width:1px;border-style:solid}#media-upload p.ml-submit{padding:1em 0}#media-upload label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#media-upload .ui-sortable .media-item{cursor:move}#media-upload tr.image-size{margin-bottom:1em;height:3em}#media-upload #filter{width:623px}#media-upload #filter .subsubsub{margin:8px 0}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #c3c4c7;background:#f6f7f7}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto}#media-upload .del-attachment{display:none;margin:5px 0}.menu_order{float:right;font-size:11px;margin:8px 10px 0}.menu_order_input{border:1px solid #dcdcde;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #a7aaad;opacity:.6}#media-upload th.order-head{width:20%;text-align:center}#media-upload th.actions-head{width:25%;text-align:center}#media-upload a.wp-post-thumbnail{margin:0 20px}#media-upload .widefat{border-style:solid solid none}.sorthelper{height:37px;width:623px;display:block}#gallery-settings th.label{width:160px}#gallery-settings #basic th.label{padding:5px 5px 5px 0}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dcdcde}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dcdcde;font-size:1.3em;margin:12px;padding:0 0 3px}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:400;color:#50575e}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:left}#gallery-settings .describe{padding:5px;width:100%;clear:both;cursor:default;background:#fff}#gallery-settings .describe select{width:15em}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#3c434a;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dcdcde}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px}#sort-buttons span{margin-right:25px}p.media-types{margin:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/edit-rtl.css b/tools/storybook/wordpress/css/edit-rtl.css new file mode 100644 index 00000000000..31eaaa07da9 --- /dev/null +++ b/tools/storybook/wordpress/css/edit-rtl.css @@ -0,0 +1,2022 @@ +/*! This file is auto-generated */ +#poststuff { + padding-top: 10px; + min-width: 763px; +} + +#poststuff #post-body { + padding: 0; +} + +#poststuff .postbox-container { + width: 100%; +} + +#poststuff #post-body.columns-2 { + margin-left: 300px; +} + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#show-comments { + overflow: hidden; +} + +#save-action .spinner, +#show-comments a { + float: right; +} + +#show-comments .spinner { + float: none; + margin-top: 0; +} + +#lost-connection-notice .spinner { + visibility: visible; + float: right; + margin: 0 0 0 5px; +} + +#titlediv { + position: relative; +} + +#titlediv label { + cursor: text; +} + +#titlediv div.inside { + margin: 0; +} + +#poststuff #titlewrap { + border: 0; + padding: 0; +} + +#titlediv #title { + padding: 3px 8px; + font-size: 1.7em; + line-height: 100%; + height: 1.7em; + width: 100%; + outline: none; + margin: 0 0 3px; + background-color: #fff; +} + +#titlediv #title-prompt-text { + color: #646970; + position: absolute; + font-size: 1.7em; + padding: 10px; + pointer-events: none; +} + +input#link_description, +input#link_url { + width: 100%; +} + +#pending { + background: 100% none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box, +#comment-link-box { + line-height: 1.84615384; + min-height: 25px; + margin-top: 5px; + padding: 0 10px; + color: #646970; +} + +#sample-permalink { + display: inline-block; + max-width: 100%; + word-wrap: break-word; +} + +#edit-slug-box .cancel { + margin-left: 10px; + padding: 0; + font-size: 11px; +} + +#comment-link-box { + margin: 5px 0; + padding: 0 5px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name { + font-weight: 600; +} + +#editable-post-name input { + font-size: 13px; + font-weight: 400; + height: 24px; + margin: 0; + width: 16em; +} + +.postarea h3 label { + float: right; +} + +body.post-new-php .submitbox .submitdelete { + display: none; +} + +.submitbox .submit a:hover { + text-decoration: underline; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-left: 4px; + padding: 6px; +} + +#post-status-select { + margin-top: 3px; +} + +body.post-type-wp_navigation div#minor-publishing, +body.post-type-wp_navigation .inline-edit-status { + display: none; +} + +/* Post Screen */ + +/* Only highlight drop zones when dragging and only in the 2 columns layout. */ +.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables { + outline: 3px dashed #646970; + /* Prevent margin on the child from collapsing with margin on the parent. */ + display: flow-root; + /* + * This min-height is meant to limit jumpiness while dragging. It's equivalent + * to the minimum height of the sortable-placeholder which is given by the height + * of a collapsed post box (36px + 1px top and bottom borders) + the placeholder + * bottom margin (20px) + 2 additional pixels to compensate browsers rounding. + */ + min-height: 60px; + margin-bottom: 20px; +} + +.postbox { + position: relative; + min-width: 255px; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; +} + +#trackback_url { + width: 99%; +} + +#normal-sortables .postbox .submit { + background: transparent none; + border: 0 none; + float: left; + padding: 0 12px; + margin: 0; +} + +.category-add input[type="text"], +.category-add select { + width: 100%; + max-width: 260px; + vertical-align: baseline; +} + +#side-sortables .category-add input[type="text"], +#side-sortables .category-add select { + margin: 0 0 1em; +} + +ul.category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35; +} + +.no-js .category-tabs li.hide-if-no-js { + display: none; +} + +.category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +/* @todo: do these really need to be so specific? */ +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a, +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a { + color: #2c3338; +} + +.category-tabs { + margin: 8px 0 5px; +} + +/* Back-compat for pre-4.4 */ +#category-adder h4 { + margin: 0; +} + +.taxonomy-add-new { + display: inline-block; + margin: 10px 0; + font-weight: 600; +} + +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 5px 7px 10px; + overflow: hidden; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +/* @todo: make this a more generic class */ +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li { + border: solid 1px transparent; + position: relative; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border: 1px solid #dcdcde; + border-bottom-color: #fff; + background-color: #fff; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 3px 5px 6px; +} + +#set-post-thumbnail { + display: inline-block; + max-width: 100%; +} + +#postimagediv .inside img { + max-width: 100%; + height: auto; + width: auto; + vertical-align: top; + background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 100% 0, 10px 10px; + background-size: 20px 20px; +} + +form#tags-filter { + position: relative; +} + +/* Global classes */ +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + display: none; +} + +#post-body .tagsdiv #newtag { + margin-left: 5px; + width: 16em; +} + +#side-sortables input#post_password { + width: 94% +} + +#side-sortables .tagsdiv #newtag { + width: 68%; +} + +#post-status-info { + width: 100%; + border-spacing: 0; + border: 1px solid #c3c4c7; + border-top: none; + background-color: #f6f7f7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + z-index: 999; +} + +#post-status-info td { + font-size: 12px; +} + +.autosave-info { + padding: 2px 10px; + text-align: left; +} + +#editorcontent #post-status-info { + border: none; +} + +#content-resize-handle { + background: transparent url(../images/resize.gif) no-repeat scroll left bottom; + width: 12px; + cursor: row-resize; +} + +/*rtl:ignore*/ +.rtl #content-resize-handle { + background-image: url(../images/resize-rtl.gif); + background-position: left bottom; +} + +.wp-editor-expand #content-resize-handle { + display: none; +} + +#postdivrich #content { + resize: none; +} + +#wp-word-count { + padding: 2px 10px; +} + +#wp-content-editor-container { + position: relative; +} + +.wp-editor-expand #wp-content-editor-tools { + z-index: 1000; + border-bottom: 1px solid #c3c4c7; +} + +.wp-editor-expand #wp-content-editor-container { + box-shadow: none; + margin-top: -1px; +} + +.wp-editor-expand #wp-content-editor-container { + border-bottom: 0 none; +} + +.wp-editor-expand div.mce-statusbar { + z-index: 1; +} + +.wp-editor-expand #post-status-info { + border-top: 1px solid #c3c4c7; +} + +.wp-editor-expand div.mce-toolbar-grp { + z-index: 999; +} + +/* TinyMCE native fullscreen mode override */ +.mce-fullscreen #wp-content-wrap .mce-menubar, +.mce-fullscreen #wp-content-wrap .mce-toolbar-grp, +.mce-fullscreen #wp-content-wrap .mce-edit-area, +.mce-fullscreen #wp-content-wrap .mce-statusbar { + position: static !important; + width: auto !important; + padding: 0 !important; +} + +.mce-fullscreen #wp-content-wrap .mce-statusbar { + visibility: visible !important; +} + +.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw { + display: none; +} + +.post-php.mce-fullscreen #wpadminbar, +.mce-fullscreen #wp-content-wrap .mce-wp-dfw { + display: none; +} +/* End TinyMCE native fullscreen mode override */ + +#wp-content-editor-tools { + background-color: #f0f0f1; + padding-top: 20px; +} + +#poststuff #post-body.columns-2 #side-sortables { + width: 280px; +} + +#timestampdiv select { + vertical-align: top; + font-size: 12px; + line-height: 2.33333333; /* 28px */ +} + +#aa, #jj, #hh, #mn { + padding: 6px 1px; + font-size: 12px; + line-height: 1.16666666; /* 14px */ +} + +#jj, #hh, #mn { + width: 2em; +} + +#aa { + width: 3.4em; +} + +.curtime #timestamp { + padding: 2px 0 1px; + display: inline !important; + height: auto !important; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-uploadedby:before, +#post-body .misc-pub-uploadedto:before, +#post-body .misc-pub-revisions:before, +#post-body .misc-pub-response-to:before, +#post-body .misc-pub-comment-status:before { + color: #8c8f94; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-uploadedby:before, +#post-body .misc-pub-uploadedto:before, +#post-body .misc-pub-revisions:before, +#post-body .misc-pub-response-to:before, +#post-body .misc-pub-comment-status:before { + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + margin-right: -1px; + padding-left: 3px; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#post-body .misc-pub-post-status:before, +#post-body .misc-pub-comment-status:before { + content: "\f173"; +} + +#post-body #visibility:before { + content: "\f177"; +} + +.curtime #timestamp:before { + content: "\f145"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-uploadedby:before { + content: "\f110"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-uploadedto:before { + content: "\f318"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-revisions:before { + content: "\f321"; +} + +#post-body .misc-pub-response-to:before { + content: "\f101"; +} + +#timestampdiv { + padding-top: 5px; + line-height: 1.76923076; +} + +#timestampdiv p { + margin: 8px 0 6px; +} + +#timestampdiv input { + text-align: center; +} + +.notification-dialog { + position: fixed; + top: 30%; + max-height: 70%; + right: 50%; + width: 450px; + margin-right: -225px; + background: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + line-height: 1.5; + z-index: 1000005; + overflow-y: auto; +} + +.notification-dialog-background { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 1000000; +} + +#post-lock-dialog .post-locked-message, +#post-lock-dialog .post-taken-over { + margin: 25px; +} + +#post-lock-dialog .post-locked-message a.button, +#file-editor-warning .button { + margin-left: 10px; +} + +#post-lock-dialog .post-locked-avatar { + float: right; + margin: 0 0 20px 20px; +} + +#post-lock-dialog .wp-tab-first { + outline: 0; +} + +#post-lock-dialog .locked-saving img { + float: right; + margin-left: 3px; +} + +#post-lock-dialog.saving .locked-saving, +#post-lock-dialog.saved .locked-saved { + display: inline; +} + +#excerpt { + display: block; + margin: 12px 0 0; + height: 4em; + width: 100%; +} + +.tagchecklist { + margin-right: 14px; + font-size: 12px; + overflow: auto; +} + +.tagchecklist br { + display: none; +} + +.tagchecklist strong { + margin-right: -8px; + position: absolute; +} + +.tagchecklist > li { + float: right; + margin-left: 25px; + font-size: 13px; + line-height: 1.8; + cursor: default; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.tagchecklist .ntdelbutton { + position: absolute; + width: 24px; + height: 24px; + border: none; + margin: 0 -19px 0 0; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0; +} + +#poststuff h3.hndle, /* Back-compat for pre-4.4 */ +#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ +#poststuff h2 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#poststuff .stuffbox h2 { + padding: 8px 10px; +} + +#poststuff .stuffbox > h2 { + border-bottom: 1px solid #f0f0f1; +} + +#poststuff .inside { + margin: 6px 0 0; +} + +.link-php #poststuff .inside, +.link-add-php #poststuff .inside { + margin-top: 12px; +} + +#poststuff .stuffbox .inside { + margin: 0; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template { + max-width: 100%; +} + +.post-attributes-label-wrapper { + margin-bottom: 0.5em; +} + +.post-attributes-label { + vertical-align: baseline; + font-weight: 600; +} + +#post-visibility-select, +#comment-status-radio { + line-height: 1.5; + margin-top: 3px; +} + +#linksubmitdiv .inside, /* Old Link Manager back-compat. */ +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#post-body-content, +.edit-form-section { + margin-bottom: 20px; +} + +.wp_attachment_details .attachment-content-description { + margin-top: 0.5385em; + display: inline-block; + min-height: 1.6923em; +} + +/** +* Privacy Settings section +* +* Note: This section includes selectors from +* Site Health where duplicate styling is used. +*/ + +/* General */ +.privacy-settings #wpcontent, +.privacy-settings.auto-fold #wpcontent, +.site-health #wpcontent, +.site-health.auto-fold #wpcontent { + padding-right: 0; +} + +/* Emulates .wrap h1 styling */ +.privacy-settings-header h1, +.health-check-header h1 { + display: inline-block; + font-weight: 600; + margin: 0 0.8rem 1rem; + font-size: 23px; + padding: 9px 0 4px; + line-height: 1.3; +} + +/* Header */ +.privacy-settings-header, +.health-check-header { + text-align: center; + margin: 0 0 1rem; + background: #fff; + border-bottom: 1px solid #dcdcde; +} + +.privacy-settings-title-section, +.health-check-title-section { + display: flex; + align-items: center; + justify-content: center; + clear: both; + padding-top: 8px; +} + +.privacy-settings-tabs-wrapper { + /* IE 11 */ + display: -ms-inline-grid; + -ms-grid-columns: 1fr 1fr; + vertical-align: top; + /* modern browsers */ + display: inline-grid; + grid-template-columns: 1fr 1fr; +} + +.privacy-settings-tab { + display: block; /* IE 11 */ + text-decoration: none; + color: inherit; + padding: 0.5rem 1rem 1rem; + margin: 0 1rem; + transition: box-shadow 0.5s ease-in-out; +} + +.privacy-settings-tab:nth-child(1), +.health-check-tab:nth-child(1) { + -ms-grid-column: 1; /* IE 11 */ +} + +.privacy-settings-tab:nth-child(2), +.health-check-tab:nth-child(2) { + -ms-grid-column: 2; /* IE 11 */ +} + +.privacy-settings-tab:focus, +.health-check-tab:focus { + color: #1d2327; + outline: 1px solid #787c82; + box-shadow: none; +} + +.privacy-settings-tab.active, +.health-check-tab.active { + box-shadow: inset 0 -3px #3582c4; + font-weight: 600; +} + +/* Body */ +.privacy-settings-body, +.health-check-body { + max-width: 800px; + margin: 0 auto; +} + +.tools-privacy-policy-page th { + min-width: 230px; +} + +.hr-separator { + margin-top: 20px; + margin-bottom: 15px; +} + +/* Accordions */ +.privacy-settings-accordion, +.health-check-accordion { + border: 1px solid #c3c4c7; +} + +.privacy-settings-accordion-heading, +.health-check-accordion-heading { + margin: 0; + border-top: 1px solid #c3c4c7; + font-size: inherit; + line-height: inherit; + font-weight: 600; + color: inherit; +} + +.privacy-settings-accordion-heading:first-child, +.health-check-accordion-heading:first-child { + border-top: none; +} + +.privacy-settings-accordion-trigger, +.health-check-accordion-trigger { + background: #fff; + border: 0; + color: #2c3338; + cursor: pointer; + display: flex; + font-weight: 400; + margin: 0; + padding: 1em 1.5em 1em 3.5em; + min-height: 46px; + position: relative; + text-align: right; + width: 100%; + align-items: center; + justify-content: space-between; + -webkit-user-select: auto; + user-select: auto; +} + +.privacy-settings-accordion-trigger:hover, +.privacy-settings-accordion-trigger:active, +.health-check-accordion-trigger:hover, +.health-check-accordion-trigger:active { + background: #f6f7f7; +} + +.privacy-settings-accordion-trigger:focus, +.health-check-accordion-trigger:focus { + color: #1d2327; + border: none; + box-shadow: none; + outline-offset: -1px; + outline: 2px solid #2271b1; + background-color: #f6f7f7; +} + +.privacy-settings-accordion-trigger .title, +.health-check-accordion-trigger .title { + pointer-events: none; + font-weight: 600; + flex-grow: 1; +} + +.privacy-settings-accordion-trigger .icon, +.privacy-settings-view-read .icon, +.health-check-accordion-trigger .icon, +.site-health-view-passed .icon { + border: solid #50575e; + border-width: 0 0 2px 2px; + height: 0.5rem; + pointer-events: none; + position: absolute; + left: 1.5em; + top: 50%; + transform: translateY(-70%) rotate(-45deg); + width: 0.5rem; +} + +.privacy-settings-accordion-trigger .badge, +.health-check-accordion-trigger .badge { + padding: 0.1rem 0.5rem 0.15rem; + color: #2c3338; + font-weight: 600; +} + +.privacy-settings-accordion-trigger .badge { + margin-right: 0.5rem; +} + +.privacy-settings-accordion-trigger .badge.blue, +.health-check-accordion-trigger .badge.blue { + border: 1px solid #72aee6; +} + +.privacy-settings-accordion-trigger .badge.orange, +.health-check-accordion-trigger .badge.orange { + border: 1px solid #dba617; +} + +.privacy-settings-accordion-trigger .badge.red, +.health-check-accordion-trigger .badge.red { + border: 1px solid #e65054; +} + +.privacy-settings-accordion-trigger .badge.green, +.health-check-accordion-trigger .badge.green { + border: 1px solid #00ba37; +} + +.privacy-settings-accordion-trigger .badge.purple, +.health-check-accordion-trigger .badge.purple { + border: 1px solid #2271b1; +} + +.privacy-settings-accordion-trigger .badge.gray, +.health-check-accordion-trigger .badge.gray { + border: 1px solid #c3c4c7; +} + +.privacy-settings-accordion-trigger[aria-expanded="true"] .icon, +.privacy-settings-view-passed[aria-expanded="true"] .icon, +.health-check-accordion-trigger[aria-expanded="true"] .icon, +.site-health-view-passed[aria-expanded="true"] .icon { + transform: translateY(-30%) rotate(135deg) +} + +.privacy-settings-accordion-panel, +.health-check-accordion-panel { + margin: 0; + padding: 1em 1.5em; + background: #fff; +} + +.privacy-settings-accordion-panel[hidden], +.health-check-accordion-panel[hidden] { + display: none; +} + +.privacy-settings-accordion-panel a .dashicons, +.health-check-accordion-panel a .dashicons { + text-decoration: none; +} + +.privacy-settings-accordion-actions { + text-align: left; + display: block; +} + +.privacy-settings-accordion-actions .success { + display: none; + color: #008a20; + padding-left: 1em; + padding-top: 6px; +} + +.privacy-settings-accordion-actions .success.visible { + display: inline-block; +} + +/* Suggested text for privacy policy */ +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help, /* For back-compat, see #49282 */ +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial, +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy { + display: none; +} + +.privacy-settings-accordion-panel strong.wp-policy-help, /* For back-compat, see #49282 */ +.privacy-settings-accordion-panel strong.privacy-policy-tutorial { + display: block; + margin: 0 0 1em; +} + +.privacy-text-copy span { + pointer-events: none; +} + +.privacy-settings-accordion-panel .wp-suggested-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel .wp-suggested-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p) { + margin: 0; + padding: 1em; + border-right: 2px solid #787c82; +} + +/* Media queries */ +@media screen and (max-width: 782px) { + + .privacy-settings-body, + .health-check-body { + margin: 0 12px; + width: auto; + } + + .privacy-settings .notice, + .site-health .notice { + margin: 5px 10px 15px; + } + + .privacy-settings .update-nag, + .site-health .update-nag { + margin-left: 10px; + margin-right: 10px; + } + + input#create-page { + margin-top: 10px; + } + + .wp-core-ui button.privacy-text-copy { + white-space: normal; + line-height: 1.8; + } +} + +@media only screen and (max-width: 1004px) { + + .privacy-settings-body, + .health-check-body { + margin: 0 22px; + width: auto; + } +} + +/** +* End Privacy Settings section +*/ + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff thead th { + padding: 5px 8px 8px; + background-color: #f0f0f1; +} + +#postcustom #postcustomstuff .submit { + border: 0 none; + float: none; + padding: 0 8px 8px; +} + +#side-sortables #postcustom #postcustomstuff .submit { + margin: 0; + padding: 0; +} + +#side-sortables #postcustom #postcustomstuff #the-list textarea { + height: 85px; +} + +#side-sortables #postcustom #postcustomstuff td.left input, +#side-sortables #postcustom #postcustomstuff td.left select, +#side-sortables #postcustomstuff #newmetaleft a { + margin: 3px 3px 0; +} + +#postcustomstuff table { + margin: 0; + width: 100%; + border: 1px solid #dcdcde; + border-spacing: 0; + background-color: #f6f7f7; +} + +#postcustomstuff tr { + vertical-align: top; +} + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + width: 96%; + margin: 8px; +} + +#side-sortables #postcustomstuff table input, +#side-sortables #postcustomstuff table select, +#side-sortables #postcustomstuff table textarea { + margin: 3px; +} + +#postcustomstuff th.left, +#postcustomstuff td.left { + width: 38%; +} + +#postcustomstuff .submit input { + margin: 0; + width: auto; +} + +#postcustomstuff #newmetaleft a { + display: inline-block; + margin: 0 8px 8px; + text-decoration: none; +} + +.no-js #postcustomstuff #enternew { + display: none; +} + +#post-body-content .compat-attachment-fields { + margin-bottom: 20px; +} + +.compat-attachment-fields th { + padding-top: 5px; + padding-left: 10px; +} + +/*------------------------------------------------------------------------------ + 11.3 - Featured Images +------------------------------------------------------------------------------*/ + +#select-featured-image { + padding: 4px 0; + overflow: hidden; +} + +#select-featured-image img { + max-width: 100%; + height: auto; + margin-bottom: 10px; +} + +#select-featured-image a { + float: right; + clear: both; +} + +#select-featured-image .remove { + display: none; + margin-top: 10px; +} + +.js #select-featured-image.has-featured-image .remove { + display: inline-block; +} + +.no-js #select-featured-image .choose { + display: none; +} + +/*------------------------------------------------------------------------------ + 11.4 - Post formats +------------------------------------------------------------------------------*/ + +.post-format-icon::before { + display: inline-block; + vertical-align: middle; + height: 20px; + width: 20px; + margin-top: -4px; + margin-left: 7px; + color: #dcdcde; + font: normal 20px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a.post-format-icon:hover:before { + color: #135e96; +} + +#post-formats-select { + line-height: 2; +} + +#post-formats-select .post-format-icon::before { + top: 5px; +} + +input.post-format { + margin-top: 1px; +} + +label.post-format-icon { + margin-right: 0; + padding: 2px 0; +} + +.post-format-icon.post-format-standard::before { + content: "\f109"; +} + +.post-format-icon.post-format-image::before { + content: "\f128"; +} + +.post-format-icon.post-format-gallery::before { + content: "\f161"; +} + +.post-format-icon.post-format-audio::before { + content: "\f127"; +} + +.post-format-icon.post-format-video::before { + content: "\f126"; +} + +.post-format-icon.post-format-chat::before { + content: "\f125"; +} + +.post-format-icon.post-format-status::before { + content: "\f130"; +} + +.post-format-icon.post-format-aside::before { + content: "\f123"; +} + +.post-format-icon.post-format-quote::before { + content: "\f122"; +} + +.post-format-icon.post-format-link::before { + content: "\f103"; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-right: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel { + min-height: 42px; + max-height: 200px; + overflow: auto; + padding: 0 0.9em; + border: solid 1px #dcdcde; + background-color: #fff; +} + +div.tabs-panel-active { + display: block; +} + +div.tabs-panel-inactive { + display: none; +} + +div.tabs-panel-active:focus { + box-shadow: inset 0 0 0 1px #4f94d4, inset 0 0 2px 1px rgba(79, 148, 212, 0.8); + outline: 0 none; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-right: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 1.69230769; + word-wrap: break-word; +} + +.categorydiv .tabs-panel, +.customlinkdiv .tabs-panel, +.posttypediv .tabs-panel, +.taxonomydiv .tabs-panel { + border-width: 3px; + border-style: solid; +} + +.form-wrap label { + display: block; + padding: 2px 0; +} + +.form-field input[type="text"], +.form-field input[type="password"], +.form-field input[type="email"], +.form-field input[type="number"], +.form-field input[type="search"], +.form-field input[type="tel"], +.form-field input[type="url"], +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +.form-field select, +.form-field p { + max-width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; + color: #646970; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 13px; +} + +p.description code { + font-style: normal; +} + +.form-wrap .form-field { + margin: 1em 0; + padding: 0; +} + +.col-wrap h2 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + +.edit-term-notes { + margin-top: 2em; +} + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +#poststuff .tagsdiv .ajaxtag { + margin-top: 1em; +} + +#poststuff .tagsdiv .howto { + margin: 1em 0 6px; +} + +.ajaxtag .newtag { + position: relative; +} + +.tagsdiv .newtag { + width: 180px; +} + +.tagsdiv .the-tags { + display: block; + height: 60px; + margin: 0 auto; + overflow: auto; + width: 260px; +} + +#post-body-content .tagsdiv .the-tags { + margin: 0 5px; +} + +p.popular-tags { + border: none; + line-height: 2em; + padding: 8px 12px 12px; + text-align: justify; +} + +p.popular-tags a { + padding: 0 3px; +} + +.tagcloud { + width: 97%; + margin: 0 0 40px; + text-align: justify; +} + +.tagcloud h2 { + margin: 2px 0 12px; +} + +#poststuff .inside .the-tagcloud { + margin: 5px 0 10px; + padding: 8px; + border: 1px solid #dcdcde; + line-height: 1.2; + word-spacing: 3px; +} + +.the-tagcloud ul { + margin: 0; +} + +.the-tagcloud ul li { + display: inline-block; +} + +/* Back-compat styles from deprecated jQuery.suggest, see ticket #40260. */ +.ac_results { + display: none; + margin: -1px 0 0; + padding: 0; + list-style: none; + position: absolute; + z-index: 10000; + border: 1px solid #4f94d4; + background-color: #fff; +} + +.wp-customizer .ac_results { + z-index: 500000; +} + +.ac_results li { + margin: 0; + padding: 5px 10px; + white-space: nowrap; + text-align: right; +} + +.ac_results .ac_over, +.ac_over .ac_match { + background-color: #2271b1; + color: #fff; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +#addtag .spinner { + float: none; + vertical-align: top; +} + +#edittag { + max-width: 800px; +} + +.edit-tag-actions { + margin-top: 20px; +} + +/* Comments */ + +.comment-php .wp-editor-area { + height: 200px; +} + +.comment-ays th, +.comment-ays td { + padding: 10px 15px; +} + +.comment-ays .comment-content ul { + list-style: initial; + margin-right: 2em; +} + +.comment-ays .comment-content a[href]:after { + content: "(" attr( href ) ")"; + display: inline-block; + padding: 0 4px; + color: #646970; + font-size: 13px; + word-break: break-all; +} + +.comment-ays .comment-content p.edit-comment { + margin-top: 10px; +} + +.comment-ays .comment-content p.edit-comment a[href]:after { + content: ""; + padding: 0; +} + +.comment-ays-submit .button-cancel { + margin-right: 1em; +} + +.trash-undo-inside, +.spam-undo-inside { + margin: 1px 0 1px 8px; + line-height: 1.23076923; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + height: 20px; + width: 20px; + margin-left: 8px; + vertical-align: middle; +} + +.stuffbox .editcomment { + clear: none; + margin-top: 0; +} + +#namediv.stuffbox .editcomment input { + width: 100%; +} + +#namediv.stuffbox .editcomment.form-table td { + padding: 10px; +} + +#comment-status-radio p { + margin: 3px 0 5px; +} + +#comment-status-radio input { + margin: 2px 0 5px 3px; + vertical-align: middle; +} + +#comment-status-radio label { + padding: 5px 0; +} + +/* links tables */ +table.links-table { + width: 100%; + border-spacing: 0; +} + +.links-table th { + font-weight: 400; + text-align: right; + vertical-align: top; + min-width: 80px; + width: 20%; + word-wrap: break-word; +} + +.links-table th, +.links-table td { + padding: 5px 0; +} + +.links-table td label { + margin-left: 8px; +} + +.links-table td input[type="text"], +.links-table td textarea { + width: 100%; +} + +.links-table #link_rel { + max-width: 280px; +} + +/* DFW 2 +-------------------------------------------------------------- */ + +#qt_content_dfw { + display: none; +} + +.wp-editor-expand #qt_content_dfw { + display: inline-block; +} + +.focus-on .wrap > h1, +.focus-on .page-title-action, +.focus-on #wpfooter, +.focus-on .postbox-container > *, +.focus-on div.updated, +.focus-on div.error, +.focus-on div.notice, +.focus-on .update-nag, +.focus-on #wp-toolbar, +.focus-on #screen-meta-links, +.focus-on #screen-meta { + opacity: 0; + transition-duration: 0.6s; + transition-property: opacity; + transition-timing-function: ease-in-out; +} + +.focus-on #wp-toolbar { + opacity: 0.3; +} + +.focus-off .wrap > h1, +.focus-off .page-title-action, +.focus-off #wpfooter, +.focus-off .postbox-container > *, +.focus-off div.updated, +.focus-off div.error, +.focus-off div.notice, +.focus-off .update-nag, +.focus-off #wp-toolbar, +.focus-off #screen-meta-links, +.focus-off #screen-meta { + opacity: 1; + transition-duration: 0.2s; + transition-property: opacity; + transition-timing-function: ease-in-out; +} + +.focus-off #wp-toolbar { + -webkit-transform: translate(0, 0); +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + transition-duration: 0.6s; + transition-property: transform; + transition-timing-function: ease-in-out; +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + transform: translateX( 100% ); +} + +.focus-off #adminmenuback, +.focus-off #adminmenuwrap { + transform: translateX( 0 ); + transition-duration: 0.2s; + transition-property: transform; + transition-timing-function: ease-in-out; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + #content-resize-handle, + #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-2x.gif) no-repeat scroll left bottom; + background-size: 11px 11px; + } + + /*rtl:ignore*/ + .rtl #content-resize-handle, + .rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background-image: url(../images/resize-rtl-2x.gif); + background-position: left bottom; + } +} + +/* + * The edit attachment screen auto-switches to one column layout when the + * viewport is smaller than 1200 pixels. + */ +@media only screen and (max-width: 1200px) { + .post-type-attachment #poststuff { + min-width: 0; + } + + .post-type-attachment #wpbody-content #poststuff #post-body { + margin: 0; + } + + .post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-left: 0; + width: 100%; + } + + .post-type-attachment #poststuff #postbox-container-1 .empty-container, + .post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty { + outline: none; + height: 0; + min-height: 0; + } + + .post-type-attachment #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + .is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables { + outline: none; + min-height: 0; + margin-bottom: 0; + } + + /* hide the radio buttons for column prefs */ + .post-type-attachment .screen-layout, + .post-type-attachment .columns-prefs { + display: none; + } +} + +/* one column on the post write/edit screen */ +@media only screen and (max-width: 850px) { + #poststuff { + min-width: 0; + } + + #wpbody-content #poststuff #post-body { + margin: 0; + } + + #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-left: 0; + width: 100%; + } + + #poststuff #postbox-container-1 .empty-container, + #poststuff #postbox-container-1 #side-sortables:empty { + height: 0; + min-height: 0; + } + + #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + /* Increase min-height while dragging for the #side-sortables and any potential sortables area with custom ID. */ + .is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container, + .is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty, + .is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables, + .is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables { + height: auto; + min-height: 60px; + } + + /* hide the radio buttons for column prefs */ + .screen-layout, + .columns-prefs { + display: none; + } +} + +@media screen and (max-width: 782px) { + .wp-core-ui .edit-tag-actions .button-primary { + margin-bottom: 0; + } + + #post-body-content { + min-width: 0; + } + + #titlediv #title-prompt-text { + padding: 10px; + } + + #poststuff .stuffbox .inside { + padding: 0 0 4px 2px; + } + + #poststuff h3.hndle, /* Back-compat for pre-4.4 */ + #poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ + #poststuff h2 { + padding: 12px; + } + + #namediv.stuffbox .editcomment.form-table td { + padding: 5px 10px; + } + + .post-format-options { + padding-left: 0; + } + + .post-format-options a { + margin-left: 5px; + margin-bottom: 5px; + min-width: 52px; + } + + .post-format-options .post-format-title { + font-size: 11px; + } + + .post-format-options a div { + height: 28px; + width: 28px; + } + + .post-format-options a div:before { + font-size: 26px !important; + } + + /* Publish Metabox Options */ + #post-visibility-select { + line-height: 280%; + } + + .wp-core-ui .save-post-visibility, + .wp-core-ui .save-timestamp { + vertical-align: middle; + margin-left: 15px; + } + + .timestamp-wrap select#mm { + display: block; + width: 100%; + margin-bottom: 10px; + } + + .timestamp-wrap #jj, + .timestamp-wrap #aa, + .timestamp-wrap #hh, + .timestamp-wrap #mn { + padding: 12px 3px; + font-size: 14px; + margin-bottom: 5px; + width: auto; + text-align: center; + } + + /* Categories Metabox */ + ul.category-tabs { + margin: 30px 0 15px; + } + + ul.category-tabs li.tabs { + padding: 15px; + } + + ul.categorychecklist li { + margin-bottom: 15px; + } + + ul.categorychecklist ul { + margin-top: 15px; + } + + .category-add input[type=text], + .category-add select { + max-width: none; + margin-bottom: 15px; + } + + /* Tags Metabox */ + .tagsdiv .newtag { + width: 100%; + height: auto; + margin-bottom: 15px; + } + + .tagchecklist { + margin: 25px 10px; + } + + .tagchecklist > li { + font-size: 16px; + line-height: 1.4; + } + + /* Discussion */ + #commentstatusdiv p { + line-height: 2.8; + } + + /* TinyMCE Adjustments */ + .mceToolbar * { + white-space: normal !important; + } + + .mceToolbar tr, + .mceToolbar td { + float: right !important; + } + + .wp_themeSkin a.mceButton { + width: 30px; + height: 30px; + } + + .wp_themeSkin .mceButton .mceIcon { + margin-top: 5px; + margin-right: 5px; + } + + .wp_themeSkin .mceSplitButton { + margin-top: 1px; + } + + .wp_themeSkin .mceSplitButton td a.mceAction { + padding: 6px 6px 6px 3px; + } + + .wp_themeSkin .mceSplitButton td a.mceOpen, + .wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen { + padding-top: 6px; + padding-bottom: 6px; + background-position: 1px 6px; + } + + .wp_themeSkin table.mceListBox { + margin: 5px; + } + + div.quicktags-toolbar input { + padding: 10px 20px; + } + + button.wp-switch-editor { + font-size: 16px; + line-height: 1; + margin: 7px 7px 0 0; + padding: 8px 12px; + } + + #wp-content-media-buttons a { + font-size: 14px; + padding: 6px 10px; + } + + .wp-media-buttons span.wp-media-buttons-icon, + .wp-media-buttons span.jetpack-contact-form-icon { + width: 22px !important; + margin-right: -2px !important; + } + + .wp-media-buttons .add_media span.wp-media-buttons-icon:before, + .wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before { + font-size: 20px !important; + } + + #content_wp_fullscreen { + display: none; + } + + .misc-pub-section { + padding: 20px 10px; + } + + #delete-action, + #publishing-action { + line-height: 3.61538461; + } + + #publishing-action .spinner { + float: none; + margin-top: -2px; /* Half of the Publish button's bottom margin. */ + } + + /* Moderate Comment */ + .comment-ays th, + .comment-ays td { + padding-bottom: 0; + } + + .comment-ays td { + padding-top: 6px; + } + + /* Links */ + .links-table #link_rel { + max-width: none; + } + + .links-table th, + .links-table td { + padding: 10px 0; + } + + .edit-term-notes { + display: none; + } + + .privacy-text-box { + width: auto; + } + + .privacy-text-box-toc { + float: none; + width: auto; + height: 100%; + display: flex; + flex-direction: column; + } + + .privacy-text-section .return-to-top { + margin: 2em 0 0; + } +} diff --git a/tools/storybook/wordpress/css/edit-rtl.min.css b/tools/storybook/wordpress/css/edit-rtl.min.css new file mode 100644 index 00000000000..f5e6966bbe9 --- /dev/null +++ b/tools/storybook/wordpress/css/edit-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv{position:relative}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#646970;position:absolute;font-size:1.7em;padding:10px;pointer-events:none}input#link_description,input#link_url{width:100%}#pending{background:100% none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:1.84615384;min-height:25px;margin-top:5px;padding:0 10px;color:#646970}#sample-permalink{display:inline-block;max-width:100%;word-wrap:break-word}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:right}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}#post-status-select{margin-top:3px}body.post-type-wp_navigation .inline-edit-status,body.post-type-wp_navigation div#minor-publishing{display:none}.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables{outline:3px dashed #646970;display:flow-root;min-height:60px;margin-bottom:20px}.postbox{position:relative;min-width:255px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:left;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#2c3338}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dcdcde;border-bottom-color:#fff;background-color:#fff}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#post-body .tagsdiv #newtag{margin-left:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #c3c4c7;border-top:none;background-color:#f6f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:left}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll left bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #c3c4c7}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #c3c4c7}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f0f0f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{vertical-align:top;font-size:12px;line-height:2.33333333}#aa,#hh,#jj,#mn{padding:6px 1px;font-size:12px;line-height:1.16666666}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{color:#8c8f94}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:never;display:inline-block;margin-right:-1px;padding-left:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-uploadedby:before{content:"\f110";position:relative;top:-1px}#post-body .misc-pub-uploadedto:before{content:"\f318";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#post-body .misc-pub-response-to:before{content:"\f101"}#timestampdiv{padding-top:5px;line-height:1.76923076}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{text-align:center}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:right;margin-left:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-right:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist>li{float:right;margin-left:25px;font-size:13px;line-height:1.8;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 -19px 0 0;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .stuffbox h2{padding:8px 10px}#poststuff .stuffbox>h2{border-bottom:1px solid #f0f0f1}#poststuff .inside{margin:6px 0 0}.link-add-php #poststuff .inside,.link-php #poststuff .inside{margin-top:12px}#poststuff .stuffbox .inside{margin:0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#comment-status-radio,#post-visibility-select{line-height:1.5;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp_attachment_details .attachment-content-description{margin-top:.5385em;display:inline-block;min-height:1.6923em}.privacy-settings #wpcontent,.privacy-settings.auto-fold #wpcontent,.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-right:0}.health-check-header h1,.privacy-settings-header h1{display:inline-block;font-weight:600;margin:0 .8rem 1rem;font-size:23px;padding:9px 0 4px;line-height:1.3}.health-check-header,.privacy-settings-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #dcdcde}.health-check-title-section,.privacy-settings-title-section{display:flex;align-items:center;justify-content:center;clear:both;padding-top:8px}.privacy-settings-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr}.privacy-settings-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:nth-child(1),.privacy-settings-tab:nth-child(1){-ms-grid-column:1}.health-check-tab:nth-child(2),.privacy-settings-tab:nth-child(2){-ms-grid-column:2}.health-check-tab:focus,.privacy-settings-tab:focus{color:#1d2327;outline:1px solid #787c82;box-shadow:none}.health-check-tab.active,.privacy-settings-tab.active{box-shadow:inset 0 -3px #3582c4;font-weight:600}.health-check-body,.privacy-settings-body{max-width:800px;margin:0 auto}.tools-privacy-policy-page th{min-width:230px}.hr-separator{margin-top:20px;margin-bottom:15px}.health-check-accordion,.privacy-settings-accordion{border:1px solid #c3c4c7}.health-check-accordion-heading,.privacy-settings-accordion-heading{margin:0;border-top:1px solid #c3c4c7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child,.privacy-settings-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger,.privacy-settings-accordion-trigger{background:#fff;border:0;color:#2c3338;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 1.5em 1em 3.5em;min-height:46px;position:relative;text-align:right;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;user-select:auto}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover,.privacy-settings-accordion-trigger:active,.privacy-settings-accordion-trigger:hover{background:#f6f7f7}.health-check-accordion-trigger:focus,.privacy-settings-accordion-trigger:focus{color:#1d2327;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #2271b1;background-color:#f6f7f7}.health-check-accordion-trigger .title,.privacy-settings-accordion-trigger .title{pointer-events:none;font-weight:600;flex-grow:1}.health-check-accordion-trigger .icon,.privacy-settings-accordion-trigger .icon,.privacy-settings-view-read .icon,.site-health-view-passed .icon{border:solid #50575e;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}.health-check-accordion-trigger .badge,.privacy-settings-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#2c3338;font-weight:600}.privacy-settings-accordion-trigger .badge{margin-right:.5rem}.health-check-accordion-trigger .badge.blue,.privacy-settings-accordion-trigger .badge.blue{border:1px solid #72aee6}.health-check-accordion-trigger .badge.orange,.privacy-settings-accordion-trigger .badge.orange{border:1px solid #dba617}.health-check-accordion-trigger .badge.red,.privacy-settings-accordion-trigger .badge.red{border:1px solid #e65054}.health-check-accordion-trigger .badge.green,.privacy-settings-accordion-trigger .badge.green{border:1px solid #00ba37}.health-check-accordion-trigger .badge.purple,.privacy-settings-accordion-trigger .badge.purple{border:1px solid #2271b1}.health-check-accordion-trigger .badge.gray,.privacy-settings-accordion-trigger .badge.gray{border:1px solid #c3c4c7}.health-check-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-view-passed[aria-expanded=true] .icon,.site-health-view-passed[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}.health-check-accordion-panel,.privacy-settings-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden],.privacy-settings-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons,.privacy-settings-accordion-panel a .dashicons{text-decoration:none}.privacy-settings-accordion-actions{text-align:left;display:block}.privacy-settings-accordion-actions .success{display:none;color:#008a20;padding-left:1em;padding-top:6px}.privacy-settings-accordion-actions .success.visible{display:inline-block}.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help{display:none}.privacy-settings-accordion-panel strong.privacy-policy-tutorial,.privacy-settings-accordion-panel strong.wp-policy-help{display:block;margin:0 0 1em}.privacy-text-copy span{pointer-events:none}.privacy-settings-accordion-panel .wp-suggested-text div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel .wp-suggested-text>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep){margin:0;padding:1em;border-right:2px solid #787c82}@media screen and (max-width:782px){.health-check-body,.privacy-settings-body{margin:0 12px;width:auto}.privacy-settings .notice,.site-health .notice{margin:5px 10px 15px}.privacy-settings .update-nag,.site-health .update-nag{margin-left:10px;margin-right:10px}input#create-page{margin-top:10px}.wp-core-ui button.privacy-text-copy{white-space:normal;line-height:1.8}}@media only screen and (max-width:1004px){.health-check-body,.privacy-settings-body{margin:0 22px;width:auto}}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f0f0f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dcdcde;border-spacing:0;background-color:#f6f7f7}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-format-icon::before{display:inline-block;vertical-align:middle;height:20px;width:20px;margin-top:-4px;margin-left:7px;color:#dcdcde;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a.post-format-icon:hover:before{color:#135e96}#post-formats-select{line-height:2}#post-formats-select .post-format-icon::before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-right:0;padding:2px 0}.post-format-icon.post-format-standard::before{content:"\f109"}.post-format-icon.post-format-image::before{content:"\f128"}.post-format-icon.post-format-gallery::before{content:"\f161"}.post-format-icon.post-format-audio::before{content:"\f127"}.post-format-icon.post-format-video::before{content:"\f126"}.post-format-icon.post-format-chat::before{content:"\f125"}.post-format-icon.post-format-status::before{content:"\f130"}.post-format-icon.post-format-aside::before{content:"\f123"}.post-format-icon.post-format-quote::before{content:"\f122"}.post-format-icon.post-format-link::before{content:"\f103"}.category-adder{margin-right:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #dcdcde;background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #4f94d4,inset 0 0 2px 1px rgba(79,148,212,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-right:18px}ul.categorychecklist li{margin:0;padding:0;line-height:1.69230769;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-field p,.form-field select{max-width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#646970}.form-wrap p,p.description,p.help,span.description{font-size:13px}p.description code{font-style:normal}.form-wrap .form-field{margin:1em 0;padding:0}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .ajaxtag{margin-top:1em}#poststuff .tagsdiv .howto{margin:1em 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #dcdcde;line-height:1.2;word-spacing:3px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:right}.ac_over .ac_match,.ac_results .ac_over{background-color:#2271b1;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#addtag .spinner{float:none;vertical-align:top}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-right:2em}.comment-ays .comment-content a[href]:after{content:"(" attr(href) ")";display:inline-block;padding:0 4px;color:#646970;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:"";padding:0}.comment-ays-submit .button-cancel{margin-right:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 0 1px 8px;line-height:1.23076923}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-left:8px;vertical-align:middle}.stuffbox .editcomment{clear:none;margin-top:0}#namediv.stuffbox .editcomment input{width:100%}#namediv.stuffbox .editcomment.form-table td{padding:10px}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 0 5px 3px;vertical-align:middle}#comment-status-radio label{padding:5px 0}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:right;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{padding:5px 0}.links-table td label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}#qt_content_dfw{display:none}.wp-editor-expand #qt_content_dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll left bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:1200px){.post-type-attachment #poststuff{min-width:0}.post-type-attachment #wpbody-content #poststuff #post-body{margin:0}.post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}.post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty,.post-type-attachment #poststuff #postbox-container-1 .empty-container{outline:0;height:0;min-height:0}.post-type-attachment #poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables{outline:0;min-height:0;margin-bottom:0}.post-type-attachment .columns-prefs,.post-type-attachment .screen-layout{display:none}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables,.is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables,.is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty,.is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container{height:auto;min-height:60px}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox .inside{padding:0 0 4px 2px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}#namediv.stuffbox .editcomment.form-table td{padding:5px 10px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:right!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-right:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 6px 6px 3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-right:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}#delete-action,#publishing-action{line-height:3.61538461}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.edit-term-notes{display:none}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%;display:flex;flex-direction:column}.privacy-text-section .return-to-top{margin:2em 0 0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/edit.css b/tools/storybook/wordpress/css/edit.css new file mode 100644 index 00000000000..7fa904ae1a3 --- /dev/null +++ b/tools/storybook/wordpress/css/edit.css @@ -0,0 +1,2021 @@ +#poststuff { + padding-top: 10px; + min-width: 763px; +} + +#poststuff #post-body { + padding: 0; +} + +#poststuff .postbox-container { + width: 100%; +} + +#poststuff #post-body.columns-2 { + margin-right: 300px; +} + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#show-comments { + overflow: hidden; +} + +#save-action .spinner, +#show-comments a { + float: left; +} + +#show-comments .spinner { + float: none; + margin-top: 0; +} + +#lost-connection-notice .spinner { + visibility: visible; + float: left; + margin: 0 5px 0 0; +} + +#titlediv { + position: relative; +} + +#titlediv label { + cursor: text; +} + +#titlediv div.inside { + margin: 0; +} + +#poststuff #titlewrap { + border: 0; + padding: 0; +} + +#titlediv #title { + padding: 3px 8px; + font-size: 1.7em; + line-height: 100%; + height: 1.7em; + width: 100%; + outline: none; + margin: 0 0 3px; + background-color: #fff; +} + +#titlediv #title-prompt-text { + color: #646970; + position: absolute; + font-size: 1.7em; + padding: 10px; + pointer-events: none; +} + +input#link_description, +input#link_url { + width: 100%; +} + +#pending { + background: 0 none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box, +#comment-link-box { + line-height: 1.84615384; + min-height: 25px; + margin-top: 5px; + padding: 0 10px; + color: #646970; +} + +#sample-permalink { + display: inline-block; + max-width: 100%; + word-wrap: break-word; +} + +#edit-slug-box .cancel { + margin-right: 10px; + padding: 0; + font-size: 11px; +} + +#comment-link-box { + margin: 5px 0; + padding: 0 5px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name { + font-weight: 600; +} + +#editable-post-name input { + font-size: 13px; + font-weight: 400; + height: 24px; + margin: 0; + width: 16em; +} + +.postarea h3 label { + float: left; +} + +body.post-new-php .submitbox .submitdelete { + display: none; +} + +.submitbox .submit a:hover { + text-decoration: underline; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-right: 4px; + padding: 6px; +} + +#post-status-select { + margin-top: 3px; +} + +body.post-type-wp_navigation div#minor-publishing, +body.post-type-wp_navigation .inline-edit-status { + display: none; +} + +/* Post Screen */ + +/* Only highlight drop zones when dragging and only in the 2 columns layout. */ +.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables { + outline: 3px dashed #646970; + /* Prevent margin on the child from collapsing with margin on the parent. */ + display: flow-root; + /* + * This min-height is meant to limit jumpiness while dragging. It's equivalent + * to the minimum height of the sortable-placeholder which is given by the height + * of a collapsed post box (36px + 1px top and bottom borders) + the placeholder + * bottom margin (20px) + 2 additional pixels to compensate browsers rounding. + */ + min-height: 60px; + margin-bottom: 20px; +} + +.postbox { + position: relative; + min-width: 255px; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; +} + +#trackback_url { + width: 99%; +} + +#normal-sortables .postbox .submit { + background: transparent none; + border: 0 none; + float: right; + padding: 0 12px; + margin: 0; +} + +.category-add input[type="text"], +.category-add select { + width: 100%; + max-width: 260px; + vertical-align: baseline; +} + +#side-sortables .category-add input[type="text"], +#side-sortables .category-add select { + margin: 0 0 1em; +} + +ul.category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35; +} + +.no-js .category-tabs li.hide-if-no-js { + display: none; +} + +.category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +/* @todo: do these really need to be so specific? */ +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a, +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a { + color: #2c3338; +} + +.category-tabs { + margin: 8px 0 5px; +} + +/* Back-compat for pre-4.4 */ +#category-adder h4 { + margin: 0; +} + +.taxonomy-add-new { + display: inline-block; + margin: 10px 0; + font-weight: 600; +} + +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 5px 7px 10px; + overflow: hidden; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +/* @todo: make this a more generic class */ +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li { + border: solid 1px transparent; + position: relative; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border: 1px solid #dcdcde; + border-bottom-color: #fff; + background-color: #fff; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 3px 5px 6px; +} + +#set-post-thumbnail { + display: inline-block; + max-width: 100%; +} + +#postimagediv .inside img { + max-width: 100%; + height: auto; + width: auto; + vertical-align: top; + background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; +} + +form#tags-filter { + position: relative; +} + +/* Global classes */ +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + display: none; +} + +#post-body .tagsdiv #newtag { + margin-right: 5px; + width: 16em; +} + +#side-sortables input#post_password { + width: 94% +} + +#side-sortables .tagsdiv #newtag { + width: 68%; +} + +#post-status-info { + width: 100%; + border-spacing: 0; + border: 1px solid #c3c4c7; + border-top: none; + background-color: #f6f7f7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + z-index: 999; +} + +#post-status-info td { + font-size: 12px; +} + +.autosave-info { + padding: 2px 10px; + text-align: right; +} + +#editorcontent #post-status-info { + border: none; +} + +#content-resize-handle { + background: transparent url(../images/resize.gif) no-repeat scroll right bottom; + width: 12px; + cursor: row-resize; +} + +/*rtl:ignore*/ +.rtl #content-resize-handle { + background-image: url(../images/resize-rtl.gif); + background-position: left bottom; +} + +.wp-editor-expand #content-resize-handle { + display: none; +} + +#postdivrich #content { + resize: none; +} + +#wp-word-count { + padding: 2px 10px; +} + +#wp-content-editor-container { + position: relative; +} + +.wp-editor-expand #wp-content-editor-tools { + z-index: 1000; + border-bottom: 1px solid #c3c4c7; +} + +.wp-editor-expand #wp-content-editor-container { + box-shadow: none; + margin-top: -1px; +} + +.wp-editor-expand #wp-content-editor-container { + border-bottom: 0 none; +} + +.wp-editor-expand div.mce-statusbar { + z-index: 1; +} + +.wp-editor-expand #post-status-info { + border-top: 1px solid #c3c4c7; +} + +.wp-editor-expand div.mce-toolbar-grp { + z-index: 999; +} + +/* TinyMCE native fullscreen mode override */ +.mce-fullscreen #wp-content-wrap .mce-menubar, +.mce-fullscreen #wp-content-wrap .mce-toolbar-grp, +.mce-fullscreen #wp-content-wrap .mce-edit-area, +.mce-fullscreen #wp-content-wrap .mce-statusbar { + position: static !important; + width: auto !important; + padding: 0 !important; +} + +.mce-fullscreen #wp-content-wrap .mce-statusbar { + visibility: visible !important; +} + +.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw { + display: none; +} + +.post-php.mce-fullscreen #wpadminbar, +.mce-fullscreen #wp-content-wrap .mce-wp-dfw { + display: none; +} +/* End TinyMCE native fullscreen mode override */ + +#wp-content-editor-tools { + background-color: #f0f0f1; + padding-top: 20px; +} + +#poststuff #post-body.columns-2 #side-sortables { + width: 280px; +} + +#timestampdiv select { + vertical-align: top; + font-size: 12px; + line-height: 2.33333333; /* 28px */ +} + +#aa, #jj, #hh, #mn { + padding: 6px 1px; + font-size: 12px; + line-height: 1.16666666; /* 14px */ +} + +#jj, #hh, #mn { + width: 2em; +} + +#aa { + width: 3.4em; +} + +.curtime #timestamp { + padding: 2px 0 1px; + display: inline !important; + height: auto !important; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-uploadedby:before, +#post-body .misc-pub-uploadedto:before, +#post-body .misc-pub-revisions:before, +#post-body .misc-pub-response-to:before, +#post-body .misc-pub-comment-status:before { + color: #8c8f94; +} + +#post-body .misc-pub-post-status:before, +#post-body #visibility:before, +.curtime #timestamp:before, +#post-body .misc-pub-uploadedby:before, +#post-body .misc-pub-uploadedto:before, +#post-body .misc-pub-revisions:before, +#post-body .misc-pub-response-to:before, +#post-body .misc-pub-comment-status:before { + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + margin-left: -1px; + padding-right: 3px; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +#post-body .misc-pub-post-status:before, +#post-body .misc-pub-comment-status:before { + content: "\f173"; +} + +#post-body #visibility:before { + content: "\f177"; +} + +.curtime #timestamp:before { + content: "\f145"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-uploadedby:before { + content: "\f110"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-uploadedto:before { + content: "\f318"; + position: relative; + top: -1px; +} + +#post-body .misc-pub-revisions:before { + content: "\f321"; +} + +#post-body .misc-pub-response-to:before { + content: "\f101"; +} + +#timestampdiv { + padding-top: 5px; + line-height: 1.76923076; +} + +#timestampdiv p { + margin: 8px 0 6px; +} + +#timestampdiv input { + text-align: center; +} + +.notification-dialog { + position: fixed; + top: 30%; + max-height: 70%; + left: 50%; + width: 450px; + margin-left: -225px; + background: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + line-height: 1.5; + z-index: 1000005; + overflow-y: auto; +} + +.notification-dialog-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 1000000; +} + +#post-lock-dialog .post-locked-message, +#post-lock-dialog .post-taken-over { + margin: 25px; +} + +#post-lock-dialog .post-locked-message a.button, +#file-editor-warning .button { + margin-right: 10px; +} + +#post-lock-dialog .post-locked-avatar { + float: left; + margin: 0 20px 20px 0; +} + +#post-lock-dialog .wp-tab-first { + outline: 0; +} + +#post-lock-dialog .locked-saving img { + float: left; + margin-right: 3px; +} + +#post-lock-dialog.saving .locked-saving, +#post-lock-dialog.saved .locked-saved { + display: inline; +} + +#excerpt { + display: block; + margin: 12px 0 0; + height: 4em; + width: 100%; +} + +.tagchecklist { + margin-left: 14px; + font-size: 12px; + overflow: auto; +} + +.tagchecklist br { + display: none; +} + +.tagchecklist strong { + margin-left: -8px; + position: absolute; +} + +.tagchecklist > li { + float: left; + margin-right: 25px; + font-size: 13px; + line-height: 1.8; + cursor: default; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; +} + +.tagchecklist .ntdelbutton { + position: absolute; + width: 24px; + height: 24px; + border: none; + margin: 0 0 0 -19px; + padding: 0; + background: none; + cursor: pointer; + text-indent: 0; +} + +#poststuff h3.hndle, /* Back-compat for pre-4.4 */ +#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ +#poststuff h2 { + font-size: 14px; + padding: 8px 12px; + margin: 0; + line-height: 1.4; +} + +#poststuff .stuffbox h2 { + padding: 8px 10px; +} + +#poststuff .stuffbox > h2 { + border-bottom: 1px solid #f0f0f1; +} + +#poststuff .inside { + margin: 6px 0 0; +} + +.link-php #poststuff .inside, +.link-add-php #poststuff .inside { + margin-top: 12px; +} + +#poststuff .stuffbox .inside { + margin: 0; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template { + max-width: 100%; +} + +.post-attributes-label-wrapper { + margin-bottom: 0.5em; +} + +.post-attributes-label { + vertical-align: baseline; + font-weight: 600; +} + +#post-visibility-select, +#comment-status-radio { + line-height: 1.5; + margin-top: 3px; +} + +#linksubmitdiv .inside, /* Old Link Manager back-compat. */ +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#post-body-content, +.edit-form-section { + margin-bottom: 20px; +} + +.wp_attachment_details .attachment-content-description { + margin-top: 0.5385em; + display: inline-block; + min-height: 1.6923em; +} + +/** +* Privacy Settings section +* +* Note: This section includes selectors from +* Site Health where duplicate styling is used. +*/ + +/* General */ +.privacy-settings #wpcontent, +.privacy-settings.auto-fold #wpcontent, +.site-health #wpcontent, +.site-health.auto-fold #wpcontent { + padding-left: 0; +} + +/* Emulates .wrap h1 styling */ +.privacy-settings-header h1, +.health-check-header h1 { + display: inline-block; + font-weight: 600; + margin: 0 0.8rem 1rem; + font-size: 23px; + padding: 9px 0 4px; + line-height: 1.3; +} + +/* Header */ +.privacy-settings-header, +.health-check-header { + text-align: center; + margin: 0 0 1rem; + background: #fff; + border-bottom: 1px solid #dcdcde; +} + +.privacy-settings-title-section, +.health-check-title-section { + display: flex; + align-items: center; + justify-content: center; + clear: both; + padding-top: 8px; +} + +.privacy-settings-tabs-wrapper { + /* IE 11 */ + display: -ms-inline-grid; + -ms-grid-columns: 1fr 1fr; + vertical-align: top; + /* modern browsers */ + display: inline-grid; + grid-template-columns: 1fr 1fr; +} + +.privacy-settings-tab { + display: block; /* IE 11 */ + text-decoration: none; + color: inherit; + padding: 0.5rem 1rem 1rem; + margin: 0 1rem; + transition: box-shadow 0.5s ease-in-out; +} + +.privacy-settings-tab:nth-child(1), +.health-check-tab:nth-child(1) { + -ms-grid-column: 1; /* IE 11 */ +} + +.privacy-settings-tab:nth-child(2), +.health-check-tab:nth-child(2) { + -ms-grid-column: 2; /* IE 11 */ +} + +.privacy-settings-tab:focus, +.health-check-tab:focus { + color: #1d2327; + outline: 1px solid #787c82; + box-shadow: none; +} + +.privacy-settings-tab.active, +.health-check-tab.active { + box-shadow: inset 0 -3px #3582c4; + font-weight: 600; +} + +/* Body */ +.privacy-settings-body, +.health-check-body { + max-width: 800px; + margin: 0 auto; +} + +.tools-privacy-policy-page th { + min-width: 230px; +} + +.hr-separator { + margin-top: 20px; + margin-bottom: 15px; +} + +/* Accordions */ +.privacy-settings-accordion, +.health-check-accordion { + border: 1px solid #c3c4c7; +} + +.privacy-settings-accordion-heading, +.health-check-accordion-heading { + margin: 0; + border-top: 1px solid #c3c4c7; + font-size: inherit; + line-height: inherit; + font-weight: 600; + color: inherit; +} + +.privacy-settings-accordion-heading:first-child, +.health-check-accordion-heading:first-child { + border-top: none; +} + +.privacy-settings-accordion-trigger, +.health-check-accordion-trigger { + background: #fff; + border: 0; + color: #2c3338; + cursor: pointer; + display: flex; + font-weight: 400; + margin: 0; + padding: 1em 3.5em 1em 1.5em; + min-height: 46px; + position: relative; + text-align: left; + width: 100%; + align-items: center; + justify-content: space-between; + -webkit-user-select: auto; + user-select: auto; +} + +.privacy-settings-accordion-trigger:hover, +.privacy-settings-accordion-trigger:active, +.health-check-accordion-trigger:hover, +.health-check-accordion-trigger:active { + background: #f6f7f7; +} + +.privacy-settings-accordion-trigger:focus, +.health-check-accordion-trigger:focus { + color: #1d2327; + border: none; + box-shadow: none; + outline-offset: -1px; + outline: 2px solid #2271b1; + background-color: #f6f7f7; +} + +.privacy-settings-accordion-trigger .title, +.health-check-accordion-trigger .title { + pointer-events: none; + font-weight: 600; + flex-grow: 1; +} + +.privacy-settings-accordion-trigger .icon, +.privacy-settings-view-read .icon, +.health-check-accordion-trigger .icon, +.site-health-view-passed .icon { + border: solid #50575e; + border-width: 0 2px 2px 0; + height: 0.5rem; + pointer-events: none; + position: absolute; + right: 1.5em; + top: 50%; + transform: translateY(-70%) rotate(45deg); + width: 0.5rem; +} + +.privacy-settings-accordion-trigger .badge, +.health-check-accordion-trigger .badge { + padding: 0.1rem 0.5rem 0.15rem; + color: #2c3338; + font-weight: 600; +} + +.privacy-settings-accordion-trigger .badge { + margin-left: 0.5rem; +} + +.privacy-settings-accordion-trigger .badge.blue, +.health-check-accordion-trigger .badge.blue { + border: 1px solid #72aee6; +} + +.privacy-settings-accordion-trigger .badge.orange, +.health-check-accordion-trigger .badge.orange { + border: 1px solid #dba617; +} + +.privacy-settings-accordion-trigger .badge.red, +.health-check-accordion-trigger .badge.red { + border: 1px solid #e65054; +} + +.privacy-settings-accordion-trigger .badge.green, +.health-check-accordion-trigger .badge.green { + border: 1px solid #00ba37; +} + +.privacy-settings-accordion-trigger .badge.purple, +.health-check-accordion-trigger .badge.purple { + border: 1px solid #2271b1; +} + +.privacy-settings-accordion-trigger .badge.gray, +.health-check-accordion-trigger .badge.gray { + border: 1px solid #c3c4c7; +} + +.privacy-settings-accordion-trigger[aria-expanded="true"] .icon, +.privacy-settings-view-passed[aria-expanded="true"] .icon, +.health-check-accordion-trigger[aria-expanded="true"] .icon, +.site-health-view-passed[aria-expanded="true"] .icon { + transform: translateY(-30%) rotate(-135deg) +} + +.privacy-settings-accordion-panel, +.health-check-accordion-panel { + margin: 0; + padding: 1em 1.5em; + background: #fff; +} + +.privacy-settings-accordion-panel[hidden], +.health-check-accordion-panel[hidden] { + display: none; +} + +.privacy-settings-accordion-panel a .dashicons, +.health-check-accordion-panel a .dashicons { + text-decoration: none; +} + +.privacy-settings-accordion-actions { + text-align: right; + display: block; +} + +.privacy-settings-accordion-actions .success { + display: none; + color: #008a20; + padding-right: 1em; + padding-top: 6px; +} + +.privacy-settings-accordion-actions .success.visible { + display: inline-block; +} + +/* Suggested text for privacy policy */ +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help, /* For back-compat, see #49282 */ +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial, +.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy { + display: none; +} + +.privacy-settings-accordion-panel strong.wp-policy-help, /* For back-compat, see #49282 */ +.privacy-settings-accordion-panel strong.privacy-policy-tutorial { + display: block; + margin: 0 0 1em; +} + +.privacy-text-copy span { + pointer-events: none; +} + +.privacy-settings-accordion-panel .wp-suggested-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel .wp-suggested-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), +.privacy-settings-accordion-panel div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p) { + margin: 0; + padding: 1em; + border-left: 2px solid #787c82; +} + +/* Media queries */ +@media screen and (max-width: 782px) { + + .privacy-settings-body, + .health-check-body { + margin: 0 12px; + width: auto; + } + + .privacy-settings .notice, + .site-health .notice { + margin: 5px 10px 15px; + } + + .privacy-settings .update-nag, + .site-health .update-nag { + margin-right: 10px; + margin-left: 10px; + } + + input#create-page { + margin-top: 10px; + } + + .wp-core-ui button.privacy-text-copy { + white-space: normal; + line-height: 1.8; + } +} + +@media only screen and (max-width: 1004px) { + + .privacy-settings-body, + .health-check-body { + margin: 0 22px; + width: auto; + } +} + +/** +* End Privacy Settings section +*/ + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff thead th { + padding: 5px 8px 8px; + background-color: #f0f0f1; +} + +#postcustom #postcustomstuff .submit { + border: 0 none; + float: none; + padding: 0 8px 8px; +} + +#side-sortables #postcustom #postcustomstuff .submit { + margin: 0; + padding: 0; +} + +#side-sortables #postcustom #postcustomstuff #the-list textarea { + height: 85px; +} + +#side-sortables #postcustom #postcustomstuff td.left input, +#side-sortables #postcustom #postcustomstuff td.left select, +#side-sortables #postcustomstuff #newmetaleft a { + margin: 3px 3px 0; +} + +#postcustomstuff table { + margin: 0; + width: 100%; + border: 1px solid #dcdcde; + border-spacing: 0; + background-color: #f6f7f7; +} + +#postcustomstuff tr { + vertical-align: top; +} + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + width: 96%; + margin: 8px; +} + +#side-sortables #postcustomstuff table input, +#side-sortables #postcustomstuff table select, +#side-sortables #postcustomstuff table textarea { + margin: 3px; +} + +#postcustomstuff th.left, +#postcustomstuff td.left { + width: 38%; +} + +#postcustomstuff .submit input { + margin: 0; + width: auto; +} + +#postcustomstuff #newmetaleft a { + display: inline-block; + margin: 0 8px 8px; + text-decoration: none; +} + +.no-js #postcustomstuff #enternew { + display: none; +} + +#post-body-content .compat-attachment-fields { + margin-bottom: 20px; +} + +.compat-attachment-fields th { + padding-top: 5px; + padding-right: 10px; +} + +/*------------------------------------------------------------------------------ + 11.3 - Featured Images +------------------------------------------------------------------------------*/ + +#select-featured-image { + padding: 4px 0; + overflow: hidden; +} + +#select-featured-image img { + max-width: 100%; + height: auto; + margin-bottom: 10px; +} + +#select-featured-image a { + float: left; + clear: both; +} + +#select-featured-image .remove { + display: none; + margin-top: 10px; +} + +.js #select-featured-image.has-featured-image .remove { + display: inline-block; +} + +.no-js #select-featured-image .choose { + display: none; +} + +/*------------------------------------------------------------------------------ + 11.4 - Post formats +------------------------------------------------------------------------------*/ + +.post-format-icon::before { + display: inline-block; + vertical-align: middle; + height: 20px; + width: 20px; + margin-top: -4px; + margin-right: 7px; + color: #dcdcde; + font: normal 20px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a.post-format-icon:hover:before { + color: #135e96; +} + +#post-formats-select { + line-height: 2; +} + +#post-formats-select .post-format-icon::before { + top: 5px; +} + +input.post-format { + margin-top: 1px; +} + +label.post-format-icon { + margin-left: 0; + padding: 2px 0; +} + +.post-format-icon.post-format-standard::before { + content: "\f109"; +} + +.post-format-icon.post-format-image::before { + content: "\f128"; +} + +.post-format-icon.post-format-gallery::before { + content: "\f161"; +} + +.post-format-icon.post-format-audio::before { + content: "\f127"; +} + +.post-format-icon.post-format-video::before { + content: "\f126"; +} + +.post-format-icon.post-format-chat::before { + content: "\f125"; +} + +.post-format-icon.post-format-status::before { + content: "\f130"; +} + +.post-format-icon.post-format-aside::before { + content: "\f123"; +} + +.post-format-icon.post-format-quote::before { + content: "\f122"; +} + +.post-format-icon.post-format-link::before { + content: "\f103"; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel { + min-height: 42px; + max-height: 200px; + overflow: auto; + padding: 0 0.9em; + border: solid 1px #dcdcde; + background-color: #fff; +} + +div.tabs-panel-active { + display: block; +} + +div.tabs-panel-inactive { + display: none; +} + +div.tabs-panel-active:focus { + box-shadow: inset 0 0 0 1px #4f94d4, inset 0 0 2px 1px rgba(79, 148, 212, 0.8); + outline: 0 none; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul { + margin-left: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 1.69230769; + word-wrap: break-word; +} + +.categorydiv .tabs-panel, +.customlinkdiv .tabs-panel, +.posttypediv .tabs-panel, +.taxonomydiv .tabs-panel { + border-width: 3px; + border-style: solid; +} + +.form-wrap label { + display: block; + padding: 2px 0; +} + +.form-field input[type="text"], +.form-field input[type="password"], +.form-field input[type="email"], +.form-field input[type="number"], +.form-field input[type="search"], +.form-field input[type="tel"], +.form-field input[type="url"], +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +.form-field select, +.form-field p { + max-width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; + color: #646970; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 13px; +} + +p.description code { + font-style: normal; +} + +.form-wrap .form-field { + margin: 1em 0; + padding: 0; +} + +.col-wrap h2 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + +.edit-term-notes { + margin-top: 2em; +} + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +#poststuff .tagsdiv .ajaxtag { + margin-top: 1em; +} + +#poststuff .tagsdiv .howto { + margin: 1em 0 6px; +} + +.ajaxtag .newtag { + position: relative; +} + +.tagsdiv .newtag { + width: 180px; +} + +.tagsdiv .the-tags { + display: block; + height: 60px; + margin: 0 auto; + overflow: auto; + width: 260px; +} + +#post-body-content .tagsdiv .the-tags { + margin: 0 5px; +} + +p.popular-tags { + border: none; + line-height: 2em; + padding: 8px 12px 12px; + text-align: justify; +} + +p.popular-tags a { + padding: 0 3px; +} + +.tagcloud { + width: 97%; + margin: 0 0 40px; + text-align: justify; +} + +.tagcloud h2 { + margin: 2px 0 12px; +} + +#poststuff .inside .the-tagcloud { + margin: 5px 0 10px; + padding: 8px; + border: 1px solid #dcdcde; + line-height: 1.2; + word-spacing: 3px; +} + +.the-tagcloud ul { + margin: 0; +} + +.the-tagcloud ul li { + display: inline-block; +} + +/* Back-compat styles from deprecated jQuery.suggest, see ticket #40260. */ +.ac_results { + display: none; + margin: -1px 0 0; + padding: 0; + list-style: none; + position: absolute; + z-index: 10000; + border: 1px solid #4f94d4; + background-color: #fff; +} + +.wp-customizer .ac_results { + z-index: 500000; +} + +.ac_results li { + margin: 0; + padding: 5px 10px; + white-space: nowrap; + text-align: left; +} + +.ac_results .ac_over, +.ac_over .ac_match { + background-color: #2271b1; + color: #fff; + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +#addtag .spinner { + float: none; + vertical-align: top; +} + +#edittag { + max-width: 800px; +} + +.edit-tag-actions { + margin-top: 20px; +} + +/* Comments */ + +.comment-php .wp-editor-area { + height: 200px; +} + +.comment-ays th, +.comment-ays td { + padding: 10px 15px; +} + +.comment-ays .comment-content ul { + list-style: initial; + margin-left: 2em; +} + +.comment-ays .comment-content a[href]:after { + content: "(" attr( href ) ")"; + display: inline-block; + padding: 0 4px; + color: #646970; + font-size: 13px; + word-break: break-all; +} + +.comment-ays .comment-content p.edit-comment { + margin-top: 10px; +} + +.comment-ays .comment-content p.edit-comment a[href]:after { + content: ""; + padding: 0; +} + +.comment-ays-submit .button-cancel { + margin-left: 1em; +} + +.trash-undo-inside, +.spam-undo-inside { + margin: 1px 8px 1px 0; + line-height: 1.23076923; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + height: 20px; + width: 20px; + margin-right: 8px; + vertical-align: middle; +} + +.stuffbox .editcomment { + clear: none; + margin-top: 0; +} + +#namediv.stuffbox .editcomment input { + width: 100%; +} + +#namediv.stuffbox .editcomment.form-table td { + padding: 10px; +} + +#comment-status-radio p { + margin: 3px 0 5px; +} + +#comment-status-radio input { + margin: 2px 3px 5px 0; + vertical-align: middle; +} + +#comment-status-radio label { + padding: 5px 0; +} + +/* links tables */ +table.links-table { + width: 100%; + border-spacing: 0; +} + +.links-table th { + font-weight: 400; + text-align: left; + vertical-align: top; + min-width: 80px; + width: 20%; + word-wrap: break-word; +} + +.links-table th, +.links-table td { + padding: 5px 0; +} + +.links-table td label { + margin-right: 8px; +} + +.links-table td input[type="text"], +.links-table td textarea { + width: 100%; +} + +.links-table #link_rel { + max-width: 280px; +} + +/* DFW 2 +-------------------------------------------------------------- */ + +#qt_content_dfw { + display: none; +} + +.wp-editor-expand #qt_content_dfw { + display: inline-block; +} + +.focus-on .wrap > h1, +.focus-on .page-title-action, +.focus-on #wpfooter, +.focus-on .postbox-container > *, +.focus-on div.updated, +.focus-on div.error, +.focus-on div.notice, +.focus-on .update-nag, +.focus-on #wp-toolbar, +.focus-on #screen-meta-links, +.focus-on #screen-meta { + opacity: 0; + transition-duration: 0.6s; + transition-property: opacity; + transition-timing-function: ease-in-out; +} + +.focus-on #wp-toolbar { + opacity: 0.3; +} + +.focus-off .wrap > h1, +.focus-off .page-title-action, +.focus-off #wpfooter, +.focus-off .postbox-container > *, +.focus-off div.updated, +.focus-off div.error, +.focus-off div.notice, +.focus-off .update-nag, +.focus-off #wp-toolbar, +.focus-off #screen-meta-links, +.focus-off #screen-meta { + opacity: 1; + transition-duration: 0.2s; + transition-property: opacity; + transition-timing-function: ease-in-out; +} + +.focus-off #wp-toolbar { + -webkit-transform: translate(0, 0); +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + transition-duration: 0.6s; + transition-property: transform; + transition-timing-function: ease-in-out; +} + +.focus-on #adminmenuback, +.focus-on #adminmenuwrap { + transform: translateX( -100% ); +} + +.focus-off #adminmenuback, +.focus-off #adminmenuwrap { + transform: translateX( 0 ); + transition-duration: 0.2s; + transition-property: transform; + transition-timing-function: ease-in-out; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + #content-resize-handle, + #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-2x.gif) no-repeat scroll right bottom; + background-size: 11px 11px; + } + + /*rtl:ignore*/ + .rtl #content-resize-handle, + .rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize { + background-image: url(../images/resize-rtl-2x.gif); + background-position: left bottom; + } +} + +/* + * The edit attachment screen auto-switches to one column layout when the + * viewport is smaller than 1200 pixels. + */ +@media only screen and (max-width: 1200px) { + .post-type-attachment #poststuff { + min-width: 0; + } + + .post-type-attachment #wpbody-content #poststuff #post-body { + margin: 0; + } + + .post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-right: 0; + width: 100%; + } + + .post-type-attachment #poststuff #postbox-container-1 .empty-container, + .post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty { + outline: none; + height: 0; + min-height: 0; + } + + .post-type-attachment #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + .is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables { + outline: none; + min-height: 0; + margin-bottom: 0; + } + + /* hide the radio buttons for column prefs */ + .post-type-attachment .screen-layout, + .post-type-attachment .columns-prefs { + display: none; + } +} + +/* one column on the post write/edit screen */ +@media only screen and (max-width: 850px) { + #poststuff { + min-width: 0; + } + + #wpbody-content #poststuff #post-body { + margin: 0; + } + + #wpbody-content #post-body.columns-2 #postbox-container-1 { + margin-right: 0; + width: 100%; + } + + #poststuff #postbox-container-1 .empty-container, + #poststuff #postbox-container-1 #side-sortables:empty { + height: 0; + min-height: 0; + } + + #poststuff #post-body.columns-2 #side-sortables { + min-height: 0; + width: auto; + } + + /* Increase min-height while dragging for the #side-sortables and any potential sortables area with custom ID. */ + .is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container, + .is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty, + .is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables, + .is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables { + height: auto; + min-height: 60px; + } + + /* hide the radio buttons for column prefs */ + .screen-layout, + .columns-prefs { + display: none; + } +} + +@media screen and (max-width: 782px) { + .wp-core-ui .edit-tag-actions .button-primary { + margin-bottom: 0; + } + + #post-body-content { + min-width: 0; + } + + #titlediv #title-prompt-text { + padding: 10px; + } + + #poststuff .stuffbox .inside { + padding: 0 2px 4px 0; + } + + #poststuff h3.hndle, /* Back-compat for pre-4.4 */ + #poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ + #poststuff h2 { + padding: 12px; + } + + #namediv.stuffbox .editcomment.form-table td { + padding: 5px 10px; + } + + .post-format-options { + padding-right: 0; + } + + .post-format-options a { + margin-right: 5px; + margin-bottom: 5px; + min-width: 52px; + } + + .post-format-options .post-format-title { + font-size: 11px; + } + + .post-format-options a div { + height: 28px; + width: 28px; + } + + .post-format-options a div:before { + font-size: 26px !important; + } + + /* Publish Metabox Options */ + #post-visibility-select { + line-height: 280%; + } + + .wp-core-ui .save-post-visibility, + .wp-core-ui .save-timestamp { + vertical-align: middle; + margin-right: 15px; + } + + .timestamp-wrap select#mm { + display: block; + width: 100%; + margin-bottom: 10px; + } + + .timestamp-wrap #jj, + .timestamp-wrap #aa, + .timestamp-wrap #hh, + .timestamp-wrap #mn { + padding: 12px 3px; + font-size: 14px; + margin-bottom: 5px; + width: auto; + text-align: center; + } + + /* Categories Metabox */ + ul.category-tabs { + margin: 30px 0 15px; + } + + ul.category-tabs li.tabs { + padding: 15px; + } + + ul.categorychecklist li { + margin-bottom: 15px; + } + + ul.categorychecklist ul { + margin-top: 15px; + } + + .category-add input[type=text], + .category-add select { + max-width: none; + margin-bottom: 15px; + } + + /* Tags Metabox */ + .tagsdiv .newtag { + width: 100%; + height: auto; + margin-bottom: 15px; + } + + .tagchecklist { + margin: 25px 10px; + } + + .tagchecklist > li { + font-size: 16px; + line-height: 1.4; + } + + /* Discussion */ + #commentstatusdiv p { + line-height: 2.8; + } + + /* TinyMCE Adjustments */ + .mceToolbar * { + white-space: normal !important; + } + + .mceToolbar tr, + .mceToolbar td { + float: left !important; + } + + .wp_themeSkin a.mceButton { + width: 30px; + height: 30px; + } + + .wp_themeSkin .mceButton .mceIcon { + margin-top: 5px; + margin-left: 5px; + } + + .wp_themeSkin .mceSplitButton { + margin-top: 1px; + } + + .wp_themeSkin .mceSplitButton td a.mceAction { + padding: 6px 3px 6px 6px; + } + + .wp_themeSkin .mceSplitButton td a.mceOpen, + .wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen { + padding-top: 6px; + padding-bottom: 6px; + background-position: 1px 6px; + } + + .wp_themeSkin table.mceListBox { + margin: 5px; + } + + div.quicktags-toolbar input { + padding: 10px 20px; + } + + button.wp-switch-editor { + font-size: 16px; + line-height: 1; + margin: 7px 0 0 7px; + padding: 8px 12px; + } + + #wp-content-media-buttons a { + font-size: 14px; + padding: 6px 10px; + } + + .wp-media-buttons span.wp-media-buttons-icon, + .wp-media-buttons span.jetpack-contact-form-icon { + width: 22px !important; + margin-left: -2px !important; + } + + .wp-media-buttons .add_media span.wp-media-buttons-icon:before, + .wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before { + font-size: 20px !important; + } + + #content_wp_fullscreen { + display: none; + } + + .misc-pub-section { + padding: 20px 10px; + } + + #delete-action, + #publishing-action { + line-height: 3.61538461; + } + + #publishing-action .spinner { + float: none; + margin-top: -2px; /* Half of the Publish button's bottom margin. */ + } + + /* Moderate Comment */ + .comment-ays th, + .comment-ays td { + padding-bottom: 0; + } + + .comment-ays td { + padding-top: 6px; + } + + /* Links */ + .links-table #link_rel { + max-width: none; + } + + .links-table th, + .links-table td { + padding: 10px 0; + } + + .edit-term-notes { + display: none; + } + + .privacy-text-box { + width: auto; + } + + .privacy-text-box-toc { + float: none; + width: auto; + height: 100%; + display: flex; + flex-direction: column; + } + + .privacy-text-section .return-to-top { + margin: 2em 0 0; + } +} diff --git a/tools/storybook/wordpress/css/edit.min.css b/tools/storybook/wordpress/css/edit.min.css new file mode 100644 index 00000000000..f9c161352c3 --- /dev/null +++ b/tools/storybook/wordpress/css/edit.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv{position:relative}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#646970;position:absolute;font-size:1.7em;padding:10px;pointer-events:none}input#link_description,input#link_url{width:100%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:1.84615384;min-height:25px;margin-top:5px;padding:0 10px;color:#646970}#sample-permalink{display:inline-block;max-width:100%;word-wrap:break-word}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:left}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}#post-status-select{margin-top:3px}body.post-type-wp_navigation .inline-edit-status,body.post-type-wp_navigation div#minor-publishing{display:none}.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables{outline:3px dashed #646970;display:flow-root;min-height:60px;margin-bottom:20px}.postbox{position:relative;min-width:255px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#2c3338}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dcdcde;border-bottom-color:#fff;background-color:#fff}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #c3c4c7;border-top:none;background-color:#f6f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:right}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #c3c4c7}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #c3c4c7}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f0f0f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{vertical-align:top;font-size:12px;line-height:2.33333333}#aa,#hh,#jj,#mn{padding:6px 1px;font-size:12px;line-height:1.16666666}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{color:#8c8f94}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:never;display:inline-block;margin-left:-1px;padding-right:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-uploadedby:before{content:"\f110";position:relative;top:-1px}#post-body .misc-pub-uploadedto:before{content:"\f318";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#post-body .misc-pub-response-to:before{content:"\f101"}#timestampdiv{padding-top:5px;line-height:1.76923076}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{text-align:center}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-right:10px}#post-lock-dialog .post-locked-avatar{float:left;margin:0 20px 20px 0}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:left;margin-right:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist>li{float:left;margin-right:25px;font-size:13px;line-height:1.8;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 0 0 -19px;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .stuffbox h2{padding:8px 10px}#poststuff .stuffbox>h2{border-bottom:1px solid #f0f0f1}#poststuff .inside{margin:6px 0 0}.link-add-php #poststuff .inside,.link-php #poststuff .inside{margin-top:12px}#poststuff .stuffbox .inside{margin:0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#comment-status-radio,#post-visibility-select{line-height:1.5;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp_attachment_details .attachment-content-description{margin-top:.5385em;display:inline-block;min-height:1.6923em}.privacy-settings #wpcontent,.privacy-settings.auto-fold #wpcontent,.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-left:0}.health-check-header h1,.privacy-settings-header h1{display:inline-block;font-weight:600;margin:0 .8rem 1rem;font-size:23px;padding:9px 0 4px;line-height:1.3}.health-check-header,.privacy-settings-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #dcdcde}.health-check-title-section,.privacy-settings-title-section{display:flex;align-items:center;justify-content:center;clear:both;padding-top:8px}.privacy-settings-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr}.privacy-settings-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:nth-child(1),.privacy-settings-tab:nth-child(1){-ms-grid-column:1}.health-check-tab:nth-child(2),.privacy-settings-tab:nth-child(2){-ms-grid-column:2}.health-check-tab:focus,.privacy-settings-tab:focus{color:#1d2327;outline:1px solid #787c82;box-shadow:none}.health-check-tab.active,.privacy-settings-tab.active{box-shadow:inset 0 -3px #3582c4;font-weight:600}.health-check-body,.privacy-settings-body{max-width:800px;margin:0 auto}.tools-privacy-policy-page th{min-width:230px}.hr-separator{margin-top:20px;margin-bottom:15px}.health-check-accordion,.privacy-settings-accordion{border:1px solid #c3c4c7}.health-check-accordion-heading,.privacy-settings-accordion-heading{margin:0;border-top:1px solid #c3c4c7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child,.privacy-settings-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger,.privacy-settings-accordion-trigger{background:#fff;border:0;color:#2c3338;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 3.5em 1em 1.5em;min-height:46px;position:relative;text-align:left;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;user-select:auto}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover,.privacy-settings-accordion-trigger:active,.privacy-settings-accordion-trigger:hover{background:#f6f7f7}.health-check-accordion-trigger:focus,.privacy-settings-accordion-trigger:focus{color:#1d2327;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #2271b1;background-color:#f6f7f7}.health-check-accordion-trigger .title,.privacy-settings-accordion-trigger .title{pointer-events:none;font-weight:600;flex-grow:1}.health-check-accordion-trigger .icon,.privacy-settings-accordion-trigger .icon,.privacy-settings-view-read .icon,.site-health-view-passed .icon{border:solid #50575e;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.health-check-accordion-trigger .badge,.privacy-settings-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#2c3338;font-weight:600}.privacy-settings-accordion-trigger .badge{margin-left:.5rem}.health-check-accordion-trigger .badge.blue,.privacy-settings-accordion-trigger .badge.blue{border:1px solid #72aee6}.health-check-accordion-trigger .badge.orange,.privacy-settings-accordion-trigger .badge.orange{border:1px solid #dba617}.health-check-accordion-trigger .badge.red,.privacy-settings-accordion-trigger .badge.red{border:1px solid #e65054}.health-check-accordion-trigger .badge.green,.privacy-settings-accordion-trigger .badge.green{border:1px solid #00ba37}.health-check-accordion-trigger .badge.purple,.privacy-settings-accordion-trigger .badge.purple{border:1px solid #2271b1}.health-check-accordion-trigger .badge.gray,.privacy-settings-accordion-trigger .badge.gray{border:1px solid #c3c4c7}.health-check-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-view-passed[aria-expanded=true] .icon,.site-health-view-passed[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.health-check-accordion-panel,.privacy-settings-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden],.privacy-settings-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons,.privacy-settings-accordion-panel a .dashicons{text-decoration:none}.privacy-settings-accordion-actions{text-align:right;display:block}.privacy-settings-accordion-actions .success{display:none;color:#008a20;padding-right:1em;padding-top:6px}.privacy-settings-accordion-actions .success.visible{display:inline-block}.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help{display:none}.privacy-settings-accordion-panel strong.privacy-policy-tutorial,.privacy-settings-accordion-panel strong.wp-policy-help{display:block;margin:0 0 1em}.privacy-text-copy span{pointer-events:none}.privacy-settings-accordion-panel .wp-suggested-text div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel .wp-suggested-text>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep),.privacy-settings-accordion-panel>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.noticep){margin:0;padding:1em;border-left:2px solid #787c82}@media screen and (max-width:782px){.health-check-body,.privacy-settings-body{margin:0 12px;width:auto}.privacy-settings .notice,.site-health .notice{margin:5px 10px 15px}.privacy-settings .update-nag,.site-health .update-nag{margin-right:10px;margin-left:10px}input#create-page{margin-top:10px}.wp-core-ui button.privacy-text-copy{white-space:normal;line-height:1.8}}@media only screen and (max-width:1004px){.health-check-body,.privacy-settings-body{margin:0 22px;width:auto}}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f0f0f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dcdcde;border-spacing:0;background-color:#f6f7f7}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-format-icon::before{display:inline-block;vertical-align:middle;height:20px;width:20px;margin-top:-4px;margin-right:7px;color:#dcdcde;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a.post-format-icon:hover:before{color:#135e96}#post-formats-select{line-height:2}#post-formats-select .post-format-icon::before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-left:0;padding:2px 0}.post-format-icon.post-format-standard::before{content:"\f109"}.post-format-icon.post-format-image::before{content:"\f128"}.post-format-icon.post-format-gallery::before{content:"\f161"}.post-format-icon.post-format-audio::before{content:"\f127"}.post-format-icon.post-format-video::before{content:"\f126"}.post-format-icon.post-format-chat::before{content:"\f125"}.post-format-icon.post-format-status::before{content:"\f130"}.post-format-icon.post-format-aside::before{content:"\f123"}.post-format-icon.post-format-quote::before{content:"\f122"}.post-format-icon.post-format-link::before{content:"\f103"}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #dcdcde;background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #4f94d4,inset 0 0 2px 1px rgba(79,148,212,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:1.69230769;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-field p,.form-field select{max-width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#646970}.form-wrap p,p.description,p.help,span.description{font-size:13px}p.description code{font-style:normal}.form-wrap .form-field{margin:1em 0;padding:0}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .ajaxtag{margin-top:1em}#poststuff .tagsdiv .howto{margin:1em 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #dcdcde;line-height:1.2;word-spacing:3px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:left}.ac_over .ac_match,.ac_results .ac_over{background-color:#2271b1;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#addtag .spinner{float:none;vertical-align:top}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-left:2em}.comment-ays .comment-content a[href]:after{content:"(" attr(href) ")";display:inline-block;padding:0 4px;color:#646970;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:"";padding:0}.comment-ays-submit .button-cancel{margin-left:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 8px 1px 0;line-height:1.23076923}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none;margin-top:0}#namediv.stuffbox .editcomment input{width:100%}#namediv.stuffbox .editcomment.form-table td{padding:10px}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}#comment-status-radio label{padding:5px 0}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{padding:5px 0}.links-table td label{margin-right:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}#qt_content_dfw{display:none}.wp-editor-expand #qt_content_dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll right bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:1200px){.post-type-attachment #poststuff{min-width:0}.post-type-attachment #wpbody-content #poststuff #post-body{margin:0}.post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}.post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty,.post-type-attachment #poststuff #postbox-container-1 .empty-container{outline:0;height:0;min-height:0}.post-type-attachment #poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables{outline:0;min-height:0;margin-bottom:0}.post-type-attachment .columns-prefs,.post-type-attachment .screen-layout{display:none}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables,.is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables,.is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty,.is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container{height:auto;min-height:60px}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox .inside{padding:0 2px 4px 0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}#namediv.stuffbox .editcomment.form-table td{padding:5px 10px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:left!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-left:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 3px 6px 6px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-left:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}#delete-action,#publishing-action{line-height:3.61538461}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.edit-term-notes{display:none}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%;display:flex;flex-direction:column}.privacy-text-section .return-to-top{margin:2em 0 0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/farbtastic-rtl.css b/tools/storybook/wordpress/css/farbtastic-rtl.css new file mode 100644 index 00000000000..e7c1c829b9d --- /dev/null +++ b/tools/storybook/wordpress/css/farbtastic-rtl.css @@ -0,0 +1,42 @@ +/*! This file is auto-generated */ + +.farbtastic { + position: relative; +} + +.farbtastic * { + position: absolute; + cursor: crosshair; +} + +.farbtastic, +.farbtastic .wheel { + width: 195px; + height: 195px; +} + +.farbtastic .color, +.farbtastic .overlay { + top: 47px; + right: 47px; + width: 101px; + height: 101px; +} + +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} + +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} + +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px -8px 0 0; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} diff --git a/tools/storybook/wordpress/css/farbtastic-rtl.min.css b/tools/storybook/wordpress/css/farbtastic-rtl.min.css new file mode 100644 index 00000000000..26cc0c401d8 --- /dev/null +++ b/tools/storybook/wordpress/css/farbtastic-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.farbtastic{position:relative}.farbtastic *{position:absolute;cursor:crosshair}.farbtastic,.farbtastic .wheel{width:195px;height:195px}.farbtastic .color,.farbtastic .overlay{top:47px;right:47px;width:101px;height:101px}.farbtastic .wheel{background:url(../images/wheel.png) no-repeat;width:195px;height:195px}.farbtastic .overlay{background:url(../images/mask.png) no-repeat}.farbtastic .marker{width:17px;height:17px;margin:-8px -8px 0 0;overflow:hidden;background:url(../images/marker.png) no-repeat} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/farbtastic.css b/tools/storybook/wordpress/css/farbtastic.css new file mode 100644 index 00000000000..2bb73bfc7ce --- /dev/null +++ b/tools/storybook/wordpress/css/farbtastic.css @@ -0,0 +1,41 @@ + +.farbtastic { + position: relative; +} + +.farbtastic * { + position: absolute; + cursor: crosshair; +} + +.farbtastic, +.farbtastic .wheel { + width: 195px; + height: 195px; +} + +.farbtastic .color, +.farbtastic .overlay { + top: 47px; + left: 47px; + width: 101px; + height: 101px; +} + +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} + +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} + +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px 0 0 -8px; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} diff --git a/tools/storybook/wordpress/css/farbtastic.min.css b/tools/storybook/wordpress/css/farbtastic.min.css new file mode 100644 index 00000000000..e2768088a8f --- /dev/null +++ b/tools/storybook/wordpress/css/farbtastic.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.farbtastic{position:relative}.farbtastic *{position:absolute;cursor:crosshair}.farbtastic,.farbtastic .wheel{width:195px;height:195px}.farbtastic .color,.farbtastic .overlay{top:47px;left:47px;width:101px;height:101px}.farbtastic .wheel{background:url(../images/wheel.png) no-repeat;width:195px;height:195px}.farbtastic .overlay{background:url(../images/mask.png) no-repeat}.farbtastic .marker{width:17px;height:17px;margin:-8px 0 0 -8px;overflow:hidden;background:url(../images/marker.png) no-repeat} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/forms-rtl.css b/tools/storybook/wordpress/css/forms-rtl.css new file mode 100644 index 00000000000..f665f2fba9f --- /dev/null +++ b/tools/storybook/wordpress/css/forms-rtl.css @@ -0,0 +1,1766 @@ +/*! This file is auto-generated */ +/* Include margin and padding in the width calculation of input and textarea. */ +input, +select, +textarea, +button { + box-sizing: border-box; + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} + +textarea, +input { + font-size: 14px; +} + +textarea { + overflow: auto; + padding: 2px 6px; + /* inherits font size 14px */ + line-height: 1.42857143; /* 20px */ + resize: vertical; +} + +label { + cursor: pointer; +} + +input, +select { + margin: 0 1px; +} + +textarea.code { + padding: 4px 6px 1px; +} + +input[type="text"], +input[type="password"], +input[type="color"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="time"], +input[type="url"], +input[type="week"], +select, +textarea { + box-shadow: 0 0 0 transparent; + border-radius: 4px; + border: 1px solid #8c8f94; + background-color: #fff; + color: #2c3338; +} + +input[type="text"], +input[type="password"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="time"], +input[type="url"], +input[type="week"] { + padding: 0 8px; + /* inherits font size 14px */ + line-height: 2; /* 28px */ + /* Only necessary for IE11 */ + min-height: 30px; +} + +::-webkit-datetime-edit { + /* inherits font size 14px */ + line-height: 1.85714286; /* 26px */ +} + +input[type="text"]:focus, +input[type="password"]:focus, +input[type="color"]:focus, +input[type="date"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="email"]:focus, +input[type="month"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="time"]:focus, +input[type="url"]:focus, +input[type="week"]:focus, +input[type="checkbox"]:focus, +input[type="radio"]:focus, +select:focus, +textarea:focus { + border-color: #2271b1; + box-shadow: 0 0 0 1px #2271b1; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +/* rtl:ignore */ +input[type="email"], +input[type="url"] { + direction: ltr; +} + +input[type="checkbox"], +input[type="radio"] { + border: 1px solid #8c8f94; + border-radius: 4px; + background: #fff; + color: #50575e; + clear: none; + cursor: pointer; + display: inline-block; + line-height: 0; + height: 1rem; + margin: -0.25rem 0 0 0.25rem; + outline: 0; + padding: 0 !important; + text-align: center; + vertical-align: middle; + width: 1rem; + min-width: 1rem; + -webkit-appearance: none; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + transition: .05s border-color ease-in-out; +} + +input[type="radio"]:checked + label:before { + color: #8c8f94; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #135e96; +} + +td > input[type="checkbox"], +.wp-admin p input[type="checkbox"], +.wp-admin p input[type="radio"] { + margin-top: 0; +} + +.wp-admin p label input[type="checkbox"] { + margin-top: -4px; +} + +.wp-admin p label input[type="radio"] { + margin-top: -2px; +} + +input[type="radio"] { + border-radius: 50%; + margin-left: 0.25rem; + /* 10px not sure if still necessary, comes from the MP6 redesign in r26072 */ + line-height: 0.71428571; +} + +input[type="checkbox"]:checked::before, +input[type="radio"]:checked::before { + float: right; + display: inline-block; + vertical-align: middle; + width: 1rem; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +input[type="checkbox"]:checked::before { + /* Use the "Yes" SVG Dashicon */ + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E"); + margin: -0.1875rem -0.25rem 0 0; + height: 1.3125rem; + width: 1.3125rem; +} + +input[type="radio"]:checked::before { + content: ""; + border-radius: 50%; + width: 0.5rem; /* 8px */ + height: 0.5rem; /* 8px */ + margin: 0.1875rem; /* 3px */ + background-color: #3582c4; + /* 16px not sure if still necessary, comes from the MP6 redesign in r26072 */ + line-height: 1.14285714; +} + +@-moz-document url-prefix() { + input[type="checkbox"], + input[type="radio"], + .form-table input.tog { + margin-bottom: -1px; + } +} + +/* Search */ +input[type="search"] { + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration { + display: none; +} + +.wp-admin input[type="file"] { + padding: 3px 0; + cursor: pointer; +} + +input.readonly, +input[readonly], +textarea.readonly, +textarea[readonly] { + background-color: #f0f0f1; +} + +::-webkit-input-placeholder { + color: #646970; +} + +::-moz-placeholder { + color: #646970; + opacity: 1; +} + +:-ms-input-placeholder { + color: #646970; +} + +.form-invalid .form-required, +.form-invalid .form-required:focus, +.form-invalid.form-required input, +.form-invalid.form-required input:focus, +.form-invalid.form-required select, +.form-invalid.form-required select:focus { + border-color: #d63638 !important; + box-shadow: 0 0 2px rgba(214, 54, 56, 0.8); +} + +.form-table .form-required.form-invalid td:after { + content: "\f534"; + font: normal 20px/1 dashicons; + color: #d63638; + margin-right: -25px; + vertical-align: middle; +} + +/* Adjust error indicator for password layout */ +.form-table .form-required.user-pass1-wrap.form-invalid td:after { + content: ""; +} + +.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after { + content: "\f534"; + font: normal 20px/1 dashicons; + color: #d63638; + margin: 0 -29px 0 6px; + vertical-align: middle; +} + +.form-input-tip { + color: #646970; +} + +input:disabled, +input.disabled, +select:disabled, +select.disabled, +textarea:disabled, +textarea.disabled { + background: rgba(255, 255, 255, 0.5); + border-color: rgba(220, 220, 222, 0.75); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04); + color: rgba(44, 51, 56, 0.5); +} + +input[type="file"]:disabled, +input[type="file"].disabled, +input[type="range"]:disabled, +input[type="range"].disabled { + background: none; + box-shadow: none; + cursor: default; +} + +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +input[type="radio"]:disabled, +input[type="radio"].disabled, +input[type="checkbox"]:disabled:checked:before, +input[type="checkbox"].disabled:checked:before, +input[type="radio"]:disabled:checked:before, +input[type="radio"].disabled:checked:before { + opacity: 0.7; +} + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + +/* Select styles are based on the default button in buttons.css */ +.wp-core-ui select { + font-size: 14px; + line-height: 2; /* 28px */ + color: #2c3338; + border-color: #8c8f94; + box-shadow: none; + border-radius: 3px; + padding: 0 8px 0 24px; + min-height: 30px; + max-width: 25rem; + -webkit-appearance: none; + /* The SVG is arrow-down-alt2 from Dashicons. */ + background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat left 5px top 55%; + background-size: 16px 16px; + cursor: pointer; + vertical-align: middle; +} + +.wp-core-ui select:hover { + color: #2271b1; +} + +.wp-core-ui select:focus { + border-color: #2271b1; + color: #0a4b78; + box-shadow: 0 0 0 1px #2271b1; +} + +.wp-core-ui select:active { + border-color: #8c8f94; + box-shadow: none; +} + +.wp-core-ui select.disabled, +.wp-core-ui select:disabled { + color: #a7aaad; + border-color: #dcdcde; + background-color: #f6f7f7; + /* The SVG is arrow-down-alt2 from Dashicons. */ + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E'); + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; + transform: none; +} + +/* Reset Firefox inner outline that appears on :focus. */ +/* This ruleset overrides the color change on :focus thus needs to be after select:focus. */ +.wp-core-ui select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #0a4b78; +} + +/* Remove background focus style from IE11 while keeping focus style available on option elements. */ +.wp-core-ui select::-ms-value { + background: transparent; + color: #50575e; +} + +.wp-core-ui select:hover::-ms-value { + color: #2271b1; +} + +.wp-core-ui select:focus::-ms-value { + color: #0a4b78; +} + +.wp-core-ui select.disabled::-ms-value, +.wp-core-ui select:disabled::-ms-value { + color: #a7aaad; +} + +/* Hide the native down arrow for select element on IE. */ +.wp-core-ui select::-ms-expand { + display: none; +} + +.wp-admin .button-cancel { + display: inline-block; + min-height: 28px; + padding: 0 5px; + line-height: 2; +} + +.meta-box-sortables select { + max-width: 100%; +} + +.meta-box-sortables input { + vertical-align: middle; +} + +.misc-pub-post-status select { + margin-top: 0; +} + +.wp-core-ui select[multiple] { + height: auto; + padding-left: 8px; + background: #fff; +} + +.submit { + padding: 1.5em 0; + margin: 5px 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border: none; +} + +form p.submit a.cancel:hover { + text-decoration: none; +} + +p.submit { + text-align: right; + max-width: 100%; + margin-top: 20px; + padding-top: 10px; +} + +.textright p.submit { + border: none; + text-align: left; +} + +table.form-table + p.submit, +table.form-table + input + p.submit, +table.form-table + input + input + p.submit { + border-top: none; + padding-top: 0; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + text-align: center; +} + +textarea.all-options, +input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +.regular-text { + width: 25em; +} + +input.small-text { + width: 50px; + padding: 0 6px; +} + +label input.small-text { + margin-top: -4px; +} + +input[type="number"].small-text { + width: 65px; + padding-left: 0; +} + +input.tiny-text { + width: 35px; +} + +input[type="number"].tiny-text { + width: 45px; + padding-left: 0; +} + +#doaction, +#doaction2, +#post-query-submit { + margin: 0 0 0 8px; +} + +/* @since 5.7.0 secondary bulk action controls require JS. */ +.no-js label[for="bulk-action-selector-bottom"], +.no-js select#bulk-action-selector-bottom, +.no-js input#doaction2, +.no-js label[for="new_role2"], +.no-js select#new_role2, +.no-js input#changeit2 { + display: none; +} + +.tablenav .actions select { + float: right; + margin-left: 6px; + max-width: 12.5rem; +} + +#timezone_string option { + margin-right: 1em; +} + +.wp-hide-pw > .dashicons, +.wp-cancel-pw > .dashicons { + position: relative; + top: 3px; + width: 1.25rem; + height: 1.25rem; + top: 0.25rem; + font-size: 20px; +} + +.wp-cancel-pw .dashicons-no { + display: none; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +fieldset label, +#your-profile label + a { + vertical-align: middle; +} + +.options-media-php [for*="_size_"] { + min-width: 10em; + vertical-align: baseline; +} + +.options-media-php .small-text[name*="_size_"] { + margin: 0 0 1em; +} + +.wp-generate-pw { + margin-top: 1em; +} + +.wp-pwd { + margin-top: 1em; +} + +#misc-publishing-actions label { + vertical-align: baseline; +} + +#pass-strength-result { + background-color: #f0f0f1; + border: 1px solid #dcdcde; + color: #1d2327; + margin: -1px 1px 5px; + padding: 3px 5px; + text-align: center; + width: 25em; + box-sizing: border-box; + opacity: 0; +} + +#pass-strength-result.short { + background-color: #ffabaf; + border-color: #e65054; + opacity: 1; +} + +#pass-strength-result.bad { + background-color: #facfd2; + border-color: #f86368; + opacity: 1; +} + +#pass-strength-result.good { + background-color: #f5e6ab; + border-color: #f0c33c; + opacity: 1; +} + +#pass-strength-result.strong { + background-color: #b8e6bf; + border-color: #68de7c; + opacity: 1; +} + +.password-input-wrapper input { + font-family: Consolas, Monaco, monospace; +} + +#pass1.short, #pass1-text.short { + border-color: #e65054; +} + +#pass1.bad, #pass1-text.bad { + border-color: #f86368; +} + +#pass1.good, #pass1-text.good { + border-color: #f0c33c; +} + +#pass1.strong, #pass1-text.strong { + border-color: #68de7c; +} + +.pw-weak { + display: none; +} + +.indicator-hint { + padding-top: 8px; +} + +.wp-pwd [type="text"], +.wp-pwd [type="password"] { + margin-bottom: 0; + /* Same height as the buttons */ + min-height: 30px; +} + +/* Hide the Edge "reveal password" native button */ +.wp-pwd input::-ms-reveal { + display: none; +} + +#pass1-text, +.show-password #pass1 { + display: none; +} + +#pass1-text::-ms-clear { + display: none; +} + +.show-password #pass1-text { + display: inline-block; +} + +p.search-box { + float: left; + margin: 0; +} + +.network-admin.themes-php p.search-box { + clear: right; +} + +.search-box input[name="s"], +.tablenav .search-plugins input[name="s"], +.tagsdiv .newtag { + float: right; + margin: 0 0 0 4px; +} + +.js.plugins-php .search-box .wp-filter-search { + margin: 0; + width: 280px; +} + +input[type="text"].ui-autocomplete-loading, +input[type="email"].ui-autocomplete-loading { + background-image: url(../images/loading.gif); + background-repeat: no-repeat; + background-position: left center; + visibility: visible; +} + +input.ui-autocomplete-input.open { + border-bottom-color: transparent; +} + +ul#add-to-blog-users { + margin: 0 14px 0 0; +} + +.ui-autocomplete { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + border: 1px solid #4f94d4; + box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + background-color: #fff; +} + +.ui-autocomplete li { + margin-bottom: 0; + padding: 4px 10px; + white-space: nowrap; + text-align: right; + cursor: pointer; +} + +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { + background-color: #dcdcde; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus, +.wp-tags-autocomplete [aria-selected="true"] { + background-color: #2271b1; + color: #fff; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + clear: both; +} + +.form-table, +.form-table td, +.form-table th, +.form-table td p { + font-size: 14px; +} + +.form-table td { + margin-bottom: 9px; + padding: 15px 10px; + line-height: 1.3; + vertical-align: middle; +} + +.form-table th, +.form-wrap label { + color: #1d2327; + font-weight: 400; + text-shadow: none; + vertical-align: baseline; +} + +.form-table th { + vertical-align: top; + text-align: right; + padding: 20px 0 20px 10px; + width: 200px; + line-height: 1.3; + font-weight: 600; +} + +.form-table th.th-full, /* Not used by core. Back-compat for pre-4.8 */ +.form-table .td-full { + width: auto; + padding: 20px 0 20px 10px; + font-weight: 400; +} + +.form-table td p { + margin-top: 4px; + margin-bottom: 0; +} + +.form-table .date-time-doc { + margin-top: 1em; +} + +.form-table p.timezone-info { + margin: 1em 0; +} + +.form-table td fieldset label { + margin: 0.35em 0 0.5em !important; + display: inline-block; +} + +.form-table td fieldset p label { + margin-top: 0 !important; +} + +.form-table td fieldset label, +.form-table td fieldset p, +.form-table td fieldset li { + line-height: 1.4; +} + +.form-table input.tog, +.form-table input[type="radio"] { + margin-top: -4px; + margin-left: 4px; + float: none; +} + +.form-table .pre { + padding: 8px; + margin: 0; +} + +table.form-table td .updated { + font-size: 13px; +} + +table.form-table td .updated p { + font-size: 13px; + margin: 0.3em 0; +} + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table textarea { + width: 500px; + margin-bottom: 6px; +} + +#profile-page .form-table #rich_editing { + margin-left: 5px +} + +#your-profile legend { + font-size: 22px; +} + +#display_name { + width: 15em; +} + +#adduser .form-field input, +#createuser .form-field input { + width: 25em; +} + +.color-option { + display: inline-block; + width: 24%; + padding: 5px 15px 15px; + box-sizing: border-box; + margin-bottom: 3px; +} + +.color-option:hover, +.color-option.selected { + background: #dcdcde; +} + +.color-palette { + width: 100%; + border-spacing: 0; + border-collapse: collapse; +} +.color-palette td { + height: 20px; + padding: 0; + border: none; +} + +.color-option { + cursor: pointer; +} + +.create-application-password .form-field { + max-width: 25em; +} + +.create-application-password label { + font-weight: 600; +} + +.create-application-password p.submit { + margin-bottom: 0; + padding-bottom: 0; + display: block; +} + +#application-passwords-section .notice { + margin-top: 20px; + margin-bottom: 0; +} + +.application-password-display input.code { + width: 19em; +} + +.auth-app-card.card { + max-width: 768px; +} + +.authorize-application-php .form-wrap p { + display: block; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.tool-box .title { + margin: 8px 0; + font-size: 18px; + font-weight: 400; + line-height: 24px; +} + +.label-responsive { + vertical-align: middle; +} + +#export-filters p { + margin: 0 0 1em; +} + +#export-filters p.submit { + margin: 7px 0 5px; +} + +/* Card styles */ + +.card { + position: relative; + margin-top: 20px; + padding: 0.7em 2em 1em; + min-width: 255px; + max-width: 520px; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; + box-sizing: border-box; +} + +/* Press this styles */ + +.pressthis h4 { + margin: 2em 0 1em; +} + +.pressthis textarea { + width: 100%; + font-size: 1em; +} + +#pressthis-code-wrap { + overflow: auto; +} + +.pressthis-bookmarklet-wrapper { + margin: 20px 0 8px; + vertical-align: top; + position: relative; + z-index: 1; +} + +.pressthis-bookmarklet, +.pressthis-bookmarklet:hover, +.pressthis-bookmarklet:focus, +.pressthis-bookmarklet:active { + display: inline-block; + position: relative; + cursor: move; + color: #2c3338; + background: #dcdcde; + border-radius: 5px; + border: 1px solid #c3c4c7; + font-style: normal; + line-height: 16px; + font-size: 14px; + text-decoration: none; +} + +.pressthis-bookmarklet:active { + outline: none; +} + +.pressthis-bookmarklet:after { + content: ""; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + left: 10px; + bottom: 9px; + background: transparent; + transform: skew(-20deg) rotate(-6deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + +.pressthis-bookmarklet:hover:after { + transform: skew(-20deg) rotate(-9deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis-bookmarklet span { + display: inline-block; + margin: 0; + padding: 0 9px 8px 12px; +} + +.pressthis-bookmarklet span:before { + color: #787c82; + font: normal 20px/1 dashicons; + content: "\f157"; + position: relative; + display: inline-block; + top: 4px; + margin-left: 4px; +} + +.pressthis-js-toggle { + margin-right: 10px; + padding: 0; + height: auto; + vertical-align: top; +} + +/* to override the button class being applied */ +.pressthis-js-toggle.button.button { + margin-right: 10px; + padding: 0; + height: auto; + vertical-align: top; +} + +.pressthis-js-toggle .dashicons { + margin: 5px 7px 6px 8px; + color: #50575e; +} + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +.timezone-info code { + white-space: nowrap; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + +.options-general-php .date-time-text { + display: inline-block; + min-width: 10em; +} + +.options-general-php input.small-text { + width: 56px; + margin: -2px 0; +} + +.options-general-php .spinner { + float: none; + margin: -3px 3px 0; +} + +.settings-php .language-install-spinner, +.options-general-php .language-install-spinner { + display: inline-block; + float: none; + margin: -3px 5px 0; + vertical-align: middle; +} + +.form-table.permalink-structure .available-structure-tags li { + float: right; + margin-left: 5px; +} + +/*------------------------------------------------------------------------------ + 21.0 - Network Admin +------------------------------------------------------------------------------*/ + +.setup-php textarea { + max-width: 100%; +} + +.form-field #site-address { + max-width: 25em; +} + +.form-field #domain { + max-width: 22em; +} + +.form-field #site-title, +.form-field #admin-email, +.form-field #path, +.form-field #blog_registered, +.form-field #blog_last_updated { + max-width: 25em; +} + +.form-field #path { + margin-bottom: 5px; +} + +#search-users, +#search-sites { + max-width: 60%; +} + +/*------------------------------------------------------------------------------ + Credentials check dialog for Install and Updates +------------------------------------------------------------------------------*/ + +.request-filesystem-credentials-dialog { + display: none; + /* The customizer uses visibility: hidden on the body for full-overlays. */ + visibility: visible; +} + +.request-filesystem-credentials-dialog .notification-dialog { + top: 10%; + max-height: 85%; +} + +.request-filesystem-credentials-dialog-content { + margin: 25px; +} + +#request-filesystem-credentials-title { + font-size: 1.3em; + margin: 1em 0; +} + +.request-filesystem-credentials-form legend { + font-size: 1em; + padding: 1.33em 0; + font-weight: 600; +} + +.request-filesystem-credentials-form input[type="text"], +.request-filesystem-credentials-form input[type="password"] { + display: block; +} + +.request-filesystem-credentials-dialog input[type="text"], +.request-filesystem-credentials-dialog input[type="password"] { + width: 100%; +} + +.request-filesystem-credentials-form .field-title { + font-weight: 600; +} + +.request-filesystem-credentials-dialog label[for="hostname"], +.request-filesystem-credentials-dialog label[for="public_key"], +.request-filesystem-credentials-dialog label[for="private_key"] { + display: block; + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + float: right; + width: 48%; +} + +.request-filesystem-credentials-dialog .ftp-password { + margin-right: 4%; +} + +.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons { + text-align: left; +} + +.request-filesystem-credentials-dialog label[for="ftp"] { + margin-left: 10px; +} + +.request-filesystem-credentials-dialog #auth-keys-desc { + margin-bottom: 0; +} + +#request-filesystem-credentials-dialog .button:not(:last-child) { + margin-left: 10px; +} + +#request-filesystem-credentials-form .cancel-button { + display: none; +} + +#request-filesystem-credentials-dialog .cancel-button { + display: inline; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + float: none; + width: auto; +} + +.request-filesystem-credentials-dialog .ftp-username { + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-password { + margin: 0; +} + +.request-filesystem-credentials-dialog .ftp-password em { + color: #8c8f94; +} + +.request-filesystem-credentials-dialog label { + display: block; + line-height: 1.5; + margin-bottom: 1em; +} + +.request-filesystem-credentials-form legend { + padding-bottom: 0; +} + +.request-filesystem-credentials-form #ssh-keys legend { + font-size: 1.3em; +} + +.request-filesystem-credentials-form .notice { + margin: 0 0 20px; + clear: both; +} + +/*------------------------------------------------------------------------------ + Privacy Policy settings screen +------------------------------------------------------------------------------*/ +.tools-privacy-policy-page form { + margin-bottom: 1.3em; +} + +.tools-privacy-policy-page input.button { + margin: 0 6px 0 1px; +} + +.tools-privacy-policy-page select { + margin: 0 6px 0.5em 1px; +} + +.tools-privacy-edit { + margin: 1.5em 0; +} + +.tools-privacy-policy-page span { + line-height: 2; +} + +.privacy_requests .column-email { + width: 40%; +} + +.privacy_requests .column-type { + text-align: center; +} + +.privacy_requests thead td:first-child, +.privacy_requests tfoot td:first-child { + border-right: 4px solid #fff; +} + +.privacy_requests tbody th { + border-right: 4px solid #fff; + background: #fff; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.privacy_requests .row-actions { + color: #787c82; +} + +.privacy_requests .row-actions.processing { + position: static; +} + +.privacy_requests tbody .has-request-results th { + box-shadow: none; +} + +.privacy_requests tbody .request-results th .notice { + margin: 0 0 5px; +} + +.privacy_requests tbody td { + background: #fff; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.privacy_requests tbody .has-request-results td { + box-shadow: none; +} + +.privacy_requests .next_steps .button { + word-wrap: break-word; + white-space: normal; +} + +.privacy_requests .status-request-confirmed th, +.privacy_requests .status-request-confirmed td { + background-color: #fff; + border-right-color: #72aee6; +} + +.privacy_requests .status-request-failed th, +.privacy_requests .status-request-failed td { + background-color: #f6f7f7; + border-right-color: #d63638; +} + +.privacy_requests .export_personal_data_failed a { + vertical-align: baseline; +} + +.status-label { + font-weight: 600; +} + +.status-label.status-request-pending { + font-weight: 400; + font-style: italic; + color: #646970; +} + +.status-label.status-request-failed { + color: #d63638; + font-weight: 600; +} + +.wp-privacy-request-form { + clear: both; +} + +.wp-privacy-request-form-field { + margin: 1.5em 0; +} + +.wp-privacy-request-form input { + margin: 0; +} + +.email-personal-data::before { + display: inline-block; + font: normal 20px/1 dashicons; + margin: 3px -2px 0 5px; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.email-personal-data--sending::before { + color: #d63638; + content: "\f463"; + animation: rotation 2s infinite linear; +} + +.email-personal-data--sent::before { + color: #68de7c; + content: "\f147"; +} + + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 782px) { + /* Input Elements */ + textarea { + -webkit-appearance: none; + } + + input[type="text"], + input[type="password"], + input[type="date"], + input[type="datetime"], + input[type="datetime-local"], + input[type="email"], + input[type="month"], + input[type="number"], + input[type="search"], + input[type="tel"], + input[type="time"], + input[type="url"], + input[type="week"] { + -webkit-appearance: none; + padding: 3px 10px; + /* Only necessary for IE11 */ + min-height: 40px; + } + + ::-webkit-datetime-edit { + line-height: 1.875; /* 30px */ + } + + input[type="checkbox"], + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + -webkit-appearance: none; + } + + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + margin-bottom: 8px; + } + + input[type="checkbox"]:checked:before, + .widefat th input[type="checkbox"]:before, + .widefat thead td input[type="checkbox"]:before, + .widefat tfoot td input[type="checkbox"]:before { + width: 1.875rem; + height: 1.875rem; + margin: -0.1875rem -0.3125rem; + } + + input[type="radio"], + input[type="checkbox"] { + height: 1.5625rem; + width: 1.5625rem; + } + + .wp-admin p input[type="checkbox"], + .wp-admin p input[type="radio"] { + margin-top: -0.1875rem; + } + + input[type="radio"]:checked:before { + vertical-align: middle; + width: 0.5625rem; + height: 0.5625rem; + margin: 0.4375rem; + line-height: 0.76190476; + } + + .wp-upload-form input[type="submit"] { + margin-top: 10px; + } + + .wp-core-ui select, + .wp-admin .form-table select { + min-height: 40px; + font-size: 16px; + line-height: 1.625; /* 26px */ + padding: 5px 8px 5px 24px; + } + + .wp-admin .button-cancel { + margin-bottom: 0; + padding: 2px 0; + font-size: 14px; + vertical-align: middle; + } + + #adduser .form-field input, + #createuser .form-field input { + width: 100%; + } + + .form-table { + box-sizing: border-box; + } + + .form-table th, + .form-table td, + .label-responsive { + display: block; + width: auto; + vertical-align: middle; + } + + .label-responsive { + margin: 0.5em 0; + } + + .export-filters li { + margin-bottom: 0; + } + + .form-table .color-palette td { + display: table-cell; + width: 15px; + } + + .form-table table.color-palette { + margin-left: 10px; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description, + #profile-page .form-table textarea { + width: 100%; + display: block; + max-width: none; + box-sizing: border-box; + } + + .form-table .form-required.form-invalid td:after { + float: left; + margin: -30px 0 0 3px; + } + + input[type="text"].small-text, + input[type="search"].small-text, + input[type="password"].small-text, + input[type="number"].small-text, + input[type="number"].small-text, + .form-table input[type="text"].small-text { + width: auto; + max-width: 4.375em; /* 70px, enough for 4 digits to fit comfortably */ + display: inline; + padding: 3px 6px; + margin: 0 3px; + } + + .form-table .regular-text ~ input[type="text"].small-text { + margin-top: 5px; + } + + #pass-strength-result { + width: 100%; + box-sizing: border-box; + padding: 8px; + } + + p.search-box { + float: none; + position: absolute; + bottom: 0; + width: 98%; + height: 90px; + margin-bottom: 20px; + } + + p.search-box input[name="s"] { + float: none; + width: 100%; + margin-bottom: 10px; + vertical-align: middle; + } + + p.search-box input[type="submit"] { + margin-bottom: 10px; + } + + .form-table span.description { + display: inline; + padding: 4px 0 0; + line-height: 1.4; + font-size: 14px; + } + + .form-table th { + padding: 10px 0 0; + border-bottom: 0; + } + + .form-table td { + margin-bottom: 0; + padding: 4px 0 6px; + } + + .form-table.permalink-structure td code { + margin-right: 32px; + display: inline-block; + } + + .form-table.permalink-structure td input[type="text"] { + margin-right: 32px; + margin-top: 4px; + width: 96%; + } + + .form-table input.regular-text { + width: 100%; + } + + .form-table label { + font-size: 14px; + } + + .background-position-control .button-group > label { + font-size: 0; + } + + .form-table fieldset label { + display: block; + } + + #utc-time, + #local-time { + display: block; + float: none; + margin-top: 0.5em; + } + + .form-field #domain { + max-width: none; + } + + /* New Password */ + .wp-pwd { + position: relative; + } + + /* Needs higher specificity than normal input type text and password. */ + #profile-page .form-table #pass1 { + padding-left: 90px; + } + + .wp-pwd button.button { + background: transparent; + border: 1px solid transparent; + box-shadow: none; + line-height: 2; + margin: 0; + padding: 5px 9px; + position: absolute; + left: 0; + top: 0; + width: 2.375rem; + height: 2.375rem; + min-width: 40px; + min-height: 40px; + } + + .wp-pwd button.wp-hide-pw { + left: 2.5rem; + } + + .wp-pwd button.button:hover, + .wp-pwd button.button:focus { + background: transparent; + } + + .wp-pwd button.button:active { + background: transparent; + box-shadow: none; + transform: none; + } + + .wp-pwd .button .text { + display: none; + } + + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + line-height: 2; + padding-left: 5rem; + } + + .wp-cancel-pw .dashicons-no { + display: inline-block; + } + + .options-general-php input[type="text"].small-text { + max-width: 6.25em; + margin: 0; + } + + /* Privacy Policy settings screen */ + .tools-privacy-policy-page form.wp-create-privacy-page { + margin-bottom: 1em; + } + + .tools-privacy-policy-page input#set-page, + .tools-privacy-policy-page select { + margin: 10px 0 0; + } + + .tools-privacy-policy-page .wp-create-privacy-page span { + display: block; + margin-bottom: 1em; + } + + .tools-privacy-policy-page .wp-create-privacy-page .button { + margin-right: 0; + } + + .wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column) { + display: table-cell; + } + + .wp-list-table.privacy_requests.widefat th input, + .wp-list-table.privacy_requests.widefat thead td input { + margin-right: 5px; + } + + .wp-privacy-request-form-field input[type="text"] { + width: 100%; + margin-bottom: 10px; + vertical-align: middle; + } + + .regular-text { + max-width: 100%; + } +} + +@media only screen and (max-width: 768px) { + .form-field input[type="text"], + .form-field input[type="email"], + .form-field input[type="password"], + .form-field select, + .form-field textarea { + width: 99%; + } + + .form-wrap .form-field { + padding: 0; + } +} + +@media only screen and (max-height: 480px), screen and (max-width: 450px) { + /* Request Credentials / File Editor Warning */ + .request-filesystem-credentials-dialog .notification-dialog, + .file-editor-warning .notification-dialog { + width: 100%; + height: 100%; + max-height: 100%; + position: fixed; + top: 0; + margin: 0; + right: 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Color Picker Options */ + .color-option { + width: 49%; + } +} + +@media only screen and (max-width: 320px) { + .options-general-php .date-time-text.date-time-custom-text { + min-width: 0; + margin-left: 0.5em; + } +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-359deg); + } +} diff --git a/tools/storybook/wordpress/css/forms-rtl.min.css b/tools/storybook/wordpress/css/forms-rtl.min.css new file mode 100644 index 00000000000..60023c3163d --- /dev/null +++ b/tools/storybook/wordpress/css/forms-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +button,input,select,textarea{box-sizing:border-box;font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea{font-size:14px}textarea{overflow:auto;padding:2px 6px;line-height:1.42857143;resize:vertical}label{cursor:pointer}input,select{margin:0 1px}textarea.code{padding:4px 6px 1px}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{padding:0 8px;line-height:2;min-height:30px}::-webkit-datetime-edit{line-height:1.85714286}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #8c8f94;border-radius:4px;background:#fff;color:#50575e;clear:none;cursor:pointer;display:inline-block;line-height:0;height:1rem;margin:-.25rem 0 0 .25rem;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:1rem;min-width:1rem;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#8c8f94}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#135e96}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-left:.25rem;line-height:.71428571}input[type=checkbox]:checked::before,input[type=radio]:checked::before{float:right;display:inline-block;vertical-align:middle;width:1rem;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E");margin:-.1875rem -.25rem 0 0;height:1.3125rem;width:1.3125rem}input[type=radio]:checked::before{content:"";border-radius:50%;width:.5rem;height:.5rem;margin:.1875rem;background-color:#3582c4;line-height:1.14285714}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#f0f0f1}::-webkit-input-placeholder{color:#646970}::-moz-placeholder{color:#646970;opacity:1}:-ms-input-placeholder{color:#646970}.form-invalid .form-required,.form-invalid .form-required:focus,.form-invalid.form-required input,.form-invalid.form-required input:focus,.form-invalid.form-required select,.form-invalid.form-required select:focus{border-color:#d63638!important;box-shadow:0 0 2px rgba(214,54,56,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:""}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#646970}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(220,220,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(44,51,56,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-core-ui select{font-size:14px;line-height:2;color:#2c3338;border-color:#8c8f94;box-shadow:none;border-radius:3px;padding:0 8px 0 24px;min-height:30px;max-width:25rem;-webkit-appearance:none;background:#fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat left 5px top 55%;background-size:16px 16px;cursor:pointer;vertical-align:middle}.wp-core-ui select:hover{color:#2271b1}.wp-core-ui select:focus{border-color:#2271b1;color:#0a4b78;box-shadow:0 0 0 1px #2271b1}.wp-core-ui select:active{border-color:#8c8f94;box-shadow:none}.wp-core-ui select.disabled,.wp-core-ui select:disabled{color:#a7aaad;border-color:#dcdcde;background-color:#f6f7f7;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E');box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.wp-core-ui select:-moz-focusring{color:transparent;text-shadow:0 0 0 #0a4b78}.wp-core-ui select::-ms-value{background:0 0;color:#50575e}.wp-core-ui select:hover::-ms-value{color:#2271b1}.wp-core-ui select:focus::-ms-value{color:#0a4b78}.wp-core-ui select.disabled::-ms-value,.wp-core-ui select:disabled::-ms-value{color:#a7aaad}.wp-core-ui select::-ms-expand{display:none}.wp-admin .button-cancel{display:inline-block;min-height:28px;padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.meta-box-sortables input{vertical-align:middle}.misc-pub-post-status select{margin-top:0}.wp-core-ui select[multiple]{height:auto;padding-left:8px;background:#fff}.submit{padding:1.5em 0;margin:5px 0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:0 6px}label input.small-text{margin-top:-4px}input[type=number].small-text{width:65px;padding-left:0}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px;padding-left:0}#doaction,#doaction2,#post-query-submit{margin:0 0 0 8px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:right;margin-left:6px;max-width:12.5rem}#timezone_string option{margin-right:1em}.wp-cancel-pw>.dashicons,.wp-hide-pw>.dashicons{position:relative;top:3px;width:1.25rem;height:1.25rem;top:.25rem;font-size:20px}.wp-cancel-pw .dashicons-no{display:none}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}.wp-generate-pw{margin-top:1em}.wp-pwd{margin-top:1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#f0f0f1;border:1px solid #dcdcde;color:#1d2327;margin:-1px 1px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#ffabaf;border-color:#e65054;opacity:1}#pass-strength-result.bad{background-color:#facfd2;border-color:#f86368;opacity:1}#pass-strength-result.good{background-color:#f5e6ab;border-color:#f0c33c;opacity:1}#pass-strength-result.strong{background-color:#b8e6bf;border-color:#68de7c;opacity:1}.password-input-wrapper input{font-family:Consolas,Monaco,monospace}#pass1-text.short,#pass1.short{border-color:#e65054}#pass1-text.bad,#pass1.bad{border-color:#f86368}#pass1-text.good,#pass1.good{border-color:#f0c33c}#pass1-text.strong,#pass1.strong{border-color:#68de7c}.pw-weak{display:none}.indicator-hint{padding-top:8px}.wp-pwd [type=password],.wp-pwd [type=text]{margin-bottom:0;min-height:30px}.wp-pwd input::-ms-reveal{display:none}#pass1-text,.show-password #pass1{display:none}#pass1-text::-ms-clear{display:none}.show-password #pass1-text{display:inline-block}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;margin:0 0 0 4px}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#dcdcde}.wp-tags-autocomplete .ui-state-focus,.wp-tags-autocomplete [aria-selected=true]{background-color:#2271b1;color:#fff;outline:2px solid transparent}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#1d2327;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 0 20px 10px;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.35em 0 .5em!important;display:inline-block}.form-table td fieldset p label{margin-top:0!important}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#dcdcde}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.create-application-password .form-field{max-width:25em}.create-application-password label{font-weight:600}.create-application-password p.submit{margin-bottom:0;padding-bottom:0;display:block}#application-passwords-section .notice{margin-top:20px;margin-bottom:0}.application-password-display input.code{width:19em}.auth-app-card.card{max-width:768px}.authorize-application-php .form-wrap p{display:block}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;box-sizing:border-box}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#2c3338;background:#dcdcde;border-radius:5px;border:1px solid #c3c4c7;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;transform:skew(-20deg) rotate(-6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(-20deg) rotate(-9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-bookmarklet span:before{color:#787c82;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#50575e}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px;margin:-2px 0}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.form-table.permalink-structure .available-structure-tags li{float:right;margin-left:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:60%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#8c8f94}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button{margin:0 6px 0 1px}.tools-privacy-policy-page select{margin:0 6px .5em 1px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-right:4px solid #fff}.privacy_requests tbody th{border-right:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests .row-actions{color:#787c82}.privacy_requests .row-actions.processing{position:static}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{word-wrap:break-word;white-space:normal}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#fff;border-right-color:#72aee6}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#f6f7f7;border-right-color:#d63638}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:600}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#646970}.status-label.status-request-failed{color:#d63638;font-weight:600}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form input{margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#d63638;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#68de7c;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:3px 10px;min-height:40px}::-webkit-datetime-edit{line-height:1.875}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{width:1.875rem;height:1.875rem;margin:-.1875rem -.3125rem}input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-.1875rem}input[type=radio]:checked:before{vertical-align:middle;width:.5625rem;height:.5625rem;margin:.4375rem;line-height:.76190476}.wp-upload-form input[type=submit]{margin-top:10px}.wp-admin .form-table select,.wp-core-ui select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 8px 5px 24px}.wp-admin .button-cancel{margin-bottom:0;padding:2px 0;font-size:14px;vertical-align:middle}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}.form-table .regular-text~input[type=text].small-text{margin-top:5px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{float:none;width:100%;margin-bottom:10px;vertical-align:middle}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4;font-size:14px}.form-table th{padding:10px 0 0;border-bottom:0}.form-table td{margin-bottom:0;padding:4px 0 6px}.form-table.permalink-structure td code{margin-right:32px;display:inline-block}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.background-position-control .button-group>label{font-size:0}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}#profile-page .form-table #pass1{padding-left:90px}.wp-pwd button.button{background:0 0;border:1px solid transparent;box-shadow:none;line-height:2;margin:0;padding:5px 9px;position:absolute;left:0;top:0;width:2.375rem;height:2.375rem;min-width:40px;min-height:40px}.wp-pwd button.wp-hide-pw{left:2.5rem}.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd button.button:active{background:0 0;box-shadow:none;transform:none}.wp-pwd .button .text{display:none}.wp-pwd [type=password],.wp-pwd [type=text]{line-height:2;padding-left:5rem}.wp-cancel-pw .dashicons-no{display:inline-block}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-right:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-right:5px}.wp-privacy-request-form-field input[type=text]{width:100%;margin-bottom:10px;vertical-align:middle}.regular-text{max-width:100%}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/forms.css b/tools/storybook/wordpress/css/forms.css new file mode 100644 index 00000000000..6349c1e8645 --- /dev/null +++ b/tools/storybook/wordpress/css/forms.css @@ -0,0 +1,1765 @@ +/* Include margin and padding in the width calculation of input and textarea. */ +input, +select, +textarea, +button { + box-sizing: border-box; + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} + +textarea, +input { + font-size: 14px; +} + +textarea { + overflow: auto; + padding: 2px 6px; + /* inherits font size 14px */ + line-height: 1.42857143; /* 20px */ + resize: vertical; +} + +label { + cursor: pointer; +} + +input, +select { + margin: 0 1px; +} + +textarea.code { + padding: 4px 6px 1px; +} + +input[type="text"], +input[type="password"], +input[type="color"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="time"], +input[type="url"], +input[type="week"], +select, +textarea { + box-shadow: 0 0 0 transparent; + border-radius: 4px; + border: 1px solid #8c8f94; + background-color: #fff; + color: #2c3338; +} + +input[type="text"], +input[type="password"], +input[type="date"], +input[type="datetime"], +input[type="datetime-local"], +input[type="email"], +input[type="month"], +input[type="number"], +input[type="search"], +input[type="tel"], +input[type="time"], +input[type="url"], +input[type="week"] { + padding: 0 8px; + /* inherits font size 14px */ + line-height: 2; /* 28px */ + /* Only necessary for IE11 */ + min-height: 30px; +} + +::-webkit-datetime-edit { + /* inherits font size 14px */ + line-height: 1.85714286; /* 26px */ +} + +input[type="text"]:focus, +input[type="password"]:focus, +input[type="color"]:focus, +input[type="date"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="email"]:focus, +input[type="month"]:focus, +input[type="number"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="time"]:focus, +input[type="url"]:focus, +input[type="week"]:focus, +input[type="checkbox"]:focus, +input[type="radio"]:focus, +select:focus, +textarea:focus { + border-color: #2271b1; + box-shadow: 0 0 0 1px #2271b1; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +/* rtl:ignore */ +input[type="email"], +input[type="url"] { + direction: ltr; +} + +input[type="checkbox"], +input[type="radio"] { + border: 1px solid #8c8f94; + border-radius: 4px; + background: #fff; + color: #50575e; + clear: none; + cursor: pointer; + display: inline-block; + line-height: 0; + height: 1rem; + margin: -0.25rem 0.25rem 0 0; + outline: 0; + padding: 0 !important; + text-align: center; + vertical-align: middle; + width: 1rem; + min-width: 1rem; + -webkit-appearance: none; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + transition: .05s border-color ease-in-out; +} + +input[type="radio"]:checked + label:before { + color: #8c8f94; +} + +.wp-core-ui input[type="reset"]:hover, +.wp-core-ui input[type="reset"]:active { + color: #135e96; +} + +td > input[type="checkbox"], +.wp-admin p input[type="checkbox"], +.wp-admin p input[type="radio"] { + margin-top: 0; +} + +.wp-admin p label input[type="checkbox"] { + margin-top: -4px; +} + +.wp-admin p label input[type="radio"] { + margin-top: -2px; +} + +input[type="radio"] { + border-radius: 50%; + margin-right: 0.25rem; + /* 10px not sure if still necessary, comes from the MP6 redesign in r26072 */ + line-height: 0.71428571; +} + +input[type="checkbox"]:checked::before, +input[type="radio"]:checked::before { + float: left; + display: inline-block; + vertical-align: middle; + width: 1rem; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +input[type="checkbox"]:checked::before { + /* Use the "Yes" SVG Dashicon */ + content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E"); + margin: -0.1875rem 0 0 -0.25rem; + height: 1.3125rem; + width: 1.3125rem; +} + +input[type="radio"]:checked::before { + content: ""; + border-radius: 50%; + width: 0.5rem; /* 8px */ + height: 0.5rem; /* 8px */ + margin: 0.1875rem; /* 3px */ + background-color: #3582c4; + /* 16px not sure if still necessary, comes from the MP6 redesign in r26072 */ + line-height: 1.14285714; +} + +@-moz-document url-prefix() { + input[type="checkbox"], + input[type="radio"], + .form-table input.tog { + margin-bottom: -1px; + } +} + +/* Search */ +input[type="search"] { + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration { + display: none; +} + +.wp-admin input[type="file"] { + padding: 3px 0; + cursor: pointer; +} + +input.readonly, +input[readonly], +textarea.readonly, +textarea[readonly] { + background-color: #f0f0f1; +} + +::-webkit-input-placeholder { + color: #646970; +} + +::-moz-placeholder { + color: #646970; + opacity: 1; +} + +:-ms-input-placeholder { + color: #646970; +} + +.form-invalid .form-required, +.form-invalid .form-required:focus, +.form-invalid.form-required input, +.form-invalid.form-required input:focus, +.form-invalid.form-required select, +.form-invalid.form-required select:focus { + border-color: #d63638 !important; + box-shadow: 0 0 2px rgba(214, 54, 56, 0.8); +} + +.form-table .form-required.form-invalid td:after { + content: "\f534"; + font: normal 20px/1 dashicons; + color: #d63638; + margin-left: -25px; + vertical-align: middle; +} + +/* Adjust error indicator for password layout */ +.form-table .form-required.user-pass1-wrap.form-invalid td:after { + content: ""; +} + +.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after { + content: "\f534"; + font: normal 20px/1 dashicons; + color: #d63638; + margin: 0 6px 0 -29px; + vertical-align: middle; +} + +.form-input-tip { + color: #646970; +} + +input:disabled, +input.disabled, +select:disabled, +select.disabled, +textarea:disabled, +textarea.disabled { + background: rgba(255, 255, 255, 0.5); + border-color: rgba(220, 220, 222, 0.75); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04); + color: rgba(44, 51, 56, 0.5); +} + +input[type="file"]:disabled, +input[type="file"].disabled, +input[type="range"]:disabled, +input[type="range"].disabled { + background: none; + box-shadow: none; + cursor: default; +} + +input[type="checkbox"]:disabled, +input[type="checkbox"].disabled, +input[type="radio"]:disabled, +input[type="radio"].disabled, +input[type="checkbox"]:disabled:checked:before, +input[type="checkbox"].disabled:checked:before, +input[type="radio"]:disabled:checked:before, +input[type="radio"].disabled:checked:before { + opacity: 0.7; +} + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + +/* Select styles are based on the default button in buttons.css */ +.wp-core-ui select { + font-size: 14px; + line-height: 2; /* 28px */ + color: #2c3338; + border-color: #8c8f94; + box-shadow: none; + border-radius: 3px; + padding: 0 24px 0 8px; + min-height: 30px; + max-width: 25rem; + -webkit-appearance: none; + /* The SVG is arrow-down-alt2 from Dashicons. */ + background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55%; + background-size: 16px 16px; + cursor: pointer; + vertical-align: middle; +} + +.wp-core-ui select:hover { + color: #2271b1; +} + +.wp-core-ui select:focus { + border-color: #2271b1; + color: #0a4b78; + box-shadow: 0 0 0 1px #2271b1; +} + +.wp-core-ui select:active { + border-color: #8c8f94; + box-shadow: none; +} + +.wp-core-ui select.disabled, +.wp-core-ui select:disabled { + color: #a7aaad; + border-color: #dcdcde; + background-color: #f6f7f7; + /* The SVG is arrow-down-alt2 from Dashicons. */ + background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E'); + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; + transform: none; +} + +/* Reset Firefox inner outline that appears on :focus. */ +/* This ruleset overrides the color change on :focus thus needs to be after select:focus. */ +.wp-core-ui select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #0a4b78; +} + +/* Remove background focus style from IE11 while keeping focus style available on option elements. */ +.wp-core-ui select::-ms-value { + background: transparent; + color: #50575e; +} + +.wp-core-ui select:hover::-ms-value { + color: #2271b1; +} + +.wp-core-ui select:focus::-ms-value { + color: #0a4b78; +} + +.wp-core-ui select.disabled::-ms-value, +.wp-core-ui select:disabled::-ms-value { + color: #a7aaad; +} + +/* Hide the native down arrow for select element on IE. */ +.wp-core-ui select::-ms-expand { + display: none; +} + +.wp-admin .button-cancel { + display: inline-block; + min-height: 28px; + padding: 0 5px; + line-height: 2; +} + +.meta-box-sortables select { + max-width: 100%; +} + +.meta-box-sortables input { + vertical-align: middle; +} + +.misc-pub-post-status select { + margin-top: 0; +} + +.wp-core-ui select[multiple] { + height: auto; + padding-right: 8px; + background: #fff; +} + +.submit { + padding: 1.5em 0; + margin: 5px 0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border: none; +} + +form p.submit a.cancel:hover { + text-decoration: none; +} + +p.submit { + text-align: left; + max-width: 100%; + margin-top: 20px; + padding-top: 10px; +} + +.textright p.submit { + border: none; + text-align: right; +} + +table.form-table + p.submit, +table.form-table + input + p.submit, +table.form-table + input + input + p.submit { + border-top: none; + padding-top: 0; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + text-align: center; +} + +textarea.all-options, +input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +.regular-text { + width: 25em; +} + +input.small-text { + width: 50px; + padding: 0 6px; +} + +label input.small-text { + margin-top: -4px; +} + +input[type="number"].small-text { + width: 65px; + padding-right: 0; +} + +input.tiny-text { + width: 35px; +} + +input[type="number"].tiny-text { + width: 45px; + padding-right: 0; +} + +#doaction, +#doaction2, +#post-query-submit { + margin: 0 8px 0 0; +} + +/* @since 5.7.0 secondary bulk action controls require JS. */ +.no-js label[for="bulk-action-selector-bottom"], +.no-js select#bulk-action-selector-bottom, +.no-js input#doaction2, +.no-js label[for="new_role2"], +.no-js select#new_role2, +.no-js input#changeit2 { + display: none; +} + +.tablenav .actions select { + float: left; + margin-right: 6px; + max-width: 12.5rem; +} + +#timezone_string option { + margin-left: 1em; +} + +.wp-hide-pw > .dashicons, +.wp-cancel-pw > .dashicons { + position: relative; + top: 3px; + width: 1.25rem; + height: 1.25rem; + top: 0.25rem; + font-size: 20px; +} + +.wp-cancel-pw .dashicons-no { + display: none; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +fieldset label, +#your-profile label + a { + vertical-align: middle; +} + +.options-media-php [for*="_size_"] { + min-width: 10em; + vertical-align: baseline; +} + +.options-media-php .small-text[name*="_size_"] { + margin: 0 0 1em; +} + +.wp-generate-pw { + margin-top: 1em; +} + +.wp-pwd { + margin-top: 1em; +} + +#misc-publishing-actions label { + vertical-align: baseline; +} + +#pass-strength-result { + background-color: #f0f0f1; + border: 1px solid #dcdcde; + color: #1d2327; + margin: -1px 1px 5px; + padding: 3px 5px; + text-align: center; + width: 25em; + box-sizing: border-box; + opacity: 0; +} + +#pass-strength-result.short { + background-color: #ffabaf; + border-color: #e65054; + opacity: 1; +} + +#pass-strength-result.bad { + background-color: #facfd2; + border-color: #f86368; + opacity: 1; +} + +#pass-strength-result.good { + background-color: #f5e6ab; + border-color: #f0c33c; + opacity: 1; +} + +#pass-strength-result.strong { + background-color: #b8e6bf; + border-color: #68de7c; + opacity: 1; +} + +.password-input-wrapper input { + font-family: Consolas, Monaco, monospace; +} + +#pass1.short, #pass1-text.short { + border-color: #e65054; +} + +#pass1.bad, #pass1-text.bad { + border-color: #f86368; +} + +#pass1.good, #pass1-text.good { + border-color: #f0c33c; +} + +#pass1.strong, #pass1-text.strong { + border-color: #68de7c; +} + +.pw-weak { + display: none; +} + +.indicator-hint { + padding-top: 8px; +} + +.wp-pwd [type="text"], +.wp-pwd [type="password"] { + margin-bottom: 0; + /* Same height as the buttons */ + min-height: 30px; +} + +/* Hide the Edge "reveal password" native button */ +.wp-pwd input::-ms-reveal { + display: none; +} + +#pass1-text, +.show-password #pass1 { + display: none; +} + +#pass1-text::-ms-clear { + display: none; +} + +.show-password #pass1-text { + display: inline-block; +} + +p.search-box { + float: right; + margin: 0; +} + +.network-admin.themes-php p.search-box { + clear: left; +} + +.search-box input[name="s"], +.tablenav .search-plugins input[name="s"], +.tagsdiv .newtag { + float: left; + margin: 0 4px 0 0; +} + +.js.plugins-php .search-box .wp-filter-search { + margin: 0; + width: 280px; +} + +input[type="text"].ui-autocomplete-loading, +input[type="email"].ui-autocomplete-loading { + background-image: url(../images/loading.gif); + background-repeat: no-repeat; + background-position: right center; + visibility: visible; +} + +input.ui-autocomplete-input.open { + border-bottom-color: transparent; +} + +ul#add-to-blog-users { + margin: 0 0 0 14px; +} + +.ui-autocomplete { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + border: 1px solid #4f94d4; + box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + background-color: #fff; +} + +.ui-autocomplete li { + margin-bottom: 0; + padding: 4px 10px; + white-space: nowrap; + text-align: left; + cursor: pointer; +} + +/* Colors for the wplink toolbar autocomplete. */ +.ui-autocomplete .ui-state-focus { + background-color: #dcdcde; +} + +/* Colors for the tags autocomplete. */ +.wp-tags-autocomplete .ui-state-focus, +.wp-tags-autocomplete [aria-selected="true"] { + background-color: #2271b1; + color: #fff; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + clear: both; +} + +.form-table, +.form-table td, +.form-table th, +.form-table td p { + font-size: 14px; +} + +.form-table td { + margin-bottom: 9px; + padding: 15px 10px; + line-height: 1.3; + vertical-align: middle; +} + +.form-table th, +.form-wrap label { + color: #1d2327; + font-weight: 400; + text-shadow: none; + vertical-align: baseline; +} + +.form-table th { + vertical-align: top; + text-align: left; + padding: 20px 10px 20px 0; + width: 200px; + line-height: 1.3; + font-weight: 600; +} + +.form-table th.th-full, /* Not used by core. Back-compat for pre-4.8 */ +.form-table .td-full { + width: auto; + padding: 20px 10px 20px 0; + font-weight: 400; +} + +.form-table td p { + margin-top: 4px; + margin-bottom: 0; +} + +.form-table .date-time-doc { + margin-top: 1em; +} + +.form-table p.timezone-info { + margin: 1em 0; +} + +.form-table td fieldset label { + margin: 0.35em 0 0.5em !important; + display: inline-block; +} + +.form-table td fieldset p label { + margin-top: 0 !important; +} + +.form-table td fieldset label, +.form-table td fieldset p, +.form-table td fieldset li { + line-height: 1.4; +} + +.form-table input.tog, +.form-table input[type="radio"] { + margin-top: -4px; + margin-right: 4px; + float: none; +} + +.form-table .pre { + padding: 8px; + margin: 0; +} + +table.form-table td .updated { + font-size: 13px; +} + +table.form-table td .updated p { + font-size: 13px; + margin: 0.3em 0; +} + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table textarea { + width: 500px; + margin-bottom: 6px; +} + +#profile-page .form-table #rich_editing { + margin-right: 5px +} + +#your-profile legend { + font-size: 22px; +} + +#display_name { + width: 15em; +} + +#adduser .form-field input, +#createuser .form-field input { + width: 25em; +} + +.color-option { + display: inline-block; + width: 24%; + padding: 5px 15px 15px; + box-sizing: border-box; + margin-bottom: 3px; +} + +.color-option:hover, +.color-option.selected { + background: #dcdcde; +} + +.color-palette { + width: 100%; + border-spacing: 0; + border-collapse: collapse; +} +.color-palette td { + height: 20px; + padding: 0; + border: none; +} + +.color-option { + cursor: pointer; +} + +.create-application-password .form-field { + max-width: 25em; +} + +.create-application-password label { + font-weight: 600; +} + +.create-application-password p.submit { + margin-bottom: 0; + padding-bottom: 0; + display: block; +} + +#application-passwords-section .notice { + margin-top: 20px; + margin-bottom: 0; +} + +.application-password-display input.code { + width: 19em; +} + +.auth-app-card.card { + max-width: 768px; +} + +.authorize-application-php .form-wrap p { + display: block; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.tool-box .title { + margin: 8px 0; + font-size: 18px; + font-weight: 400; + line-height: 24px; +} + +.label-responsive { + vertical-align: middle; +} + +#export-filters p { + margin: 0 0 1em; +} + +#export-filters p.submit { + margin: 7px 0 5px; +} + +/* Card styles */ + +.card { + position: relative; + margin-top: 20px; + padding: 0.7em 2em 1em; + min-width: 255px; + max-width: 520px; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background: #fff; + box-sizing: border-box; +} + +/* Press this styles */ + +.pressthis h4 { + margin: 2em 0 1em; +} + +.pressthis textarea { + width: 100%; + font-size: 1em; +} + +#pressthis-code-wrap { + overflow: auto; +} + +.pressthis-bookmarklet-wrapper { + margin: 20px 0 8px; + vertical-align: top; + position: relative; + z-index: 1; +} + +.pressthis-bookmarklet, +.pressthis-bookmarklet:hover, +.pressthis-bookmarklet:focus, +.pressthis-bookmarklet:active { + display: inline-block; + position: relative; + cursor: move; + color: #2c3338; + background: #dcdcde; + border-radius: 5px; + border: 1px solid #c3c4c7; + font-style: normal; + line-height: 16px; + font-size: 14px; + text-decoration: none; +} + +.pressthis-bookmarklet:active { + outline: none; +} + +.pressthis-bookmarklet:after { + content: ""; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + right: 10px; + bottom: 9px; + background: transparent; + transform: skew(20deg) rotate(6deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + +.pressthis-bookmarklet:hover:after { + transform: skew(20deg) rotate(9deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis-bookmarklet span { + display: inline-block; + margin: 0; + padding: 0 12px 8px 9px; +} + +.pressthis-bookmarklet span:before { + color: #787c82; + font: normal 20px/1 dashicons; + content: "\f157"; + position: relative; + display: inline-block; + top: 4px; + margin-right: 4px; +} + +.pressthis-js-toggle { + margin-left: 10px; + padding: 0; + height: auto; + vertical-align: top; +} + +/* to override the button class being applied */ +.pressthis-js-toggle.button.button { + margin-left: 10px; + padding: 0; + height: auto; + vertical-align: top; +} + +.pressthis-js-toggle .dashicons { + margin: 5px 8px 6px 7px; + color: #50575e; +} + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +.timezone-info code { + white-space: nowrap; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + +.options-general-php .date-time-text { + display: inline-block; + min-width: 10em; +} + +.options-general-php input.small-text { + width: 56px; + margin: -2px 0; +} + +.options-general-php .spinner { + float: none; + margin: -3px 3px 0; +} + +.settings-php .language-install-spinner, +.options-general-php .language-install-spinner { + display: inline-block; + float: none; + margin: -3px 5px 0; + vertical-align: middle; +} + +.form-table.permalink-structure .available-structure-tags li { + float: left; + margin-right: 5px; +} + +/*------------------------------------------------------------------------------ + 21.0 - Network Admin +------------------------------------------------------------------------------*/ + +.setup-php textarea { + max-width: 100%; +} + +.form-field #site-address { + max-width: 25em; +} + +.form-field #domain { + max-width: 22em; +} + +.form-field #site-title, +.form-field #admin-email, +.form-field #path, +.form-field #blog_registered, +.form-field #blog_last_updated { + max-width: 25em; +} + +.form-field #path { + margin-bottom: 5px; +} + +#search-users, +#search-sites { + max-width: 60%; +} + +/*------------------------------------------------------------------------------ + Credentials check dialog for Install and Updates +------------------------------------------------------------------------------*/ + +.request-filesystem-credentials-dialog { + display: none; + /* The customizer uses visibility: hidden on the body for full-overlays. */ + visibility: visible; +} + +.request-filesystem-credentials-dialog .notification-dialog { + top: 10%; + max-height: 85%; +} + +.request-filesystem-credentials-dialog-content { + margin: 25px; +} + +#request-filesystem-credentials-title { + font-size: 1.3em; + margin: 1em 0; +} + +.request-filesystem-credentials-form legend { + font-size: 1em; + padding: 1.33em 0; + font-weight: 600; +} + +.request-filesystem-credentials-form input[type="text"], +.request-filesystem-credentials-form input[type="password"] { + display: block; +} + +.request-filesystem-credentials-dialog input[type="text"], +.request-filesystem-credentials-dialog input[type="password"] { + width: 100%; +} + +.request-filesystem-credentials-form .field-title { + font-weight: 600; +} + +.request-filesystem-credentials-dialog label[for="hostname"], +.request-filesystem-credentials-dialog label[for="public_key"], +.request-filesystem-credentials-dialog label[for="private_key"] { + display: block; + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + float: left; + width: 48%; +} + +.request-filesystem-credentials-dialog .ftp-password { + margin-left: 4%; +} + +.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons { + text-align: right; +} + +.request-filesystem-credentials-dialog label[for="ftp"] { + margin-right: 10px; +} + +.request-filesystem-credentials-dialog #auth-keys-desc { + margin-bottom: 0; +} + +#request-filesystem-credentials-dialog .button:not(:last-child) { + margin-right: 10px; +} + +#request-filesystem-credentials-form .cancel-button { + display: none; +} + +#request-filesystem-credentials-dialog .cancel-button { + display: inline; +} + +.request-filesystem-credentials-dialog .ftp-username, +.request-filesystem-credentials-dialog .ftp-password { + float: none; + width: auto; +} + +.request-filesystem-credentials-dialog .ftp-username { + margin-bottom: 1em; +} + +.request-filesystem-credentials-dialog .ftp-password { + margin: 0; +} + +.request-filesystem-credentials-dialog .ftp-password em { + color: #8c8f94; +} + +.request-filesystem-credentials-dialog label { + display: block; + line-height: 1.5; + margin-bottom: 1em; +} + +.request-filesystem-credentials-form legend { + padding-bottom: 0; +} + +.request-filesystem-credentials-form #ssh-keys legend { + font-size: 1.3em; +} + +.request-filesystem-credentials-form .notice { + margin: 0 0 20px; + clear: both; +} + +/*------------------------------------------------------------------------------ + Privacy Policy settings screen +------------------------------------------------------------------------------*/ +.tools-privacy-policy-page form { + margin-bottom: 1.3em; +} + +.tools-privacy-policy-page input.button { + margin: 0 1px 0 6px; +} + +.tools-privacy-policy-page select { + margin: 0 1px 0.5em 6px; +} + +.tools-privacy-edit { + margin: 1.5em 0; +} + +.tools-privacy-policy-page span { + line-height: 2; +} + +.privacy_requests .column-email { + width: 40%; +} + +.privacy_requests .column-type { + text-align: center; +} + +.privacy_requests thead td:first-child, +.privacy_requests tfoot td:first-child { + border-left: 4px solid #fff; +} + +.privacy_requests tbody th { + border-left: 4px solid #fff; + background: #fff; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.privacy_requests .row-actions { + color: #787c82; +} + +.privacy_requests .row-actions.processing { + position: static; +} + +.privacy_requests tbody .has-request-results th { + box-shadow: none; +} + +.privacy_requests tbody .request-results th .notice { + margin: 0 0 5px; +} + +.privacy_requests tbody td { + background: #fff; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.privacy_requests tbody .has-request-results td { + box-shadow: none; +} + +.privacy_requests .next_steps .button { + word-wrap: break-word; + white-space: normal; +} + +.privacy_requests .status-request-confirmed th, +.privacy_requests .status-request-confirmed td { + background-color: #fff; + border-left-color: #72aee6; +} + +.privacy_requests .status-request-failed th, +.privacy_requests .status-request-failed td { + background-color: #f6f7f7; + border-left-color: #d63638; +} + +.privacy_requests .export_personal_data_failed a { + vertical-align: baseline; +} + +.status-label { + font-weight: 600; +} + +.status-label.status-request-pending { + font-weight: 400; + font-style: italic; + color: #646970; +} + +.status-label.status-request-failed { + color: #d63638; + font-weight: 600; +} + +.wp-privacy-request-form { + clear: both; +} + +.wp-privacy-request-form-field { + margin: 1.5em 0; +} + +.wp-privacy-request-form input { + margin: 0; +} + +.email-personal-data::before { + display: inline-block; + font: normal 20px/1 dashicons; + margin: 3px 5px 0 -2px; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.email-personal-data--sending::before { + color: #d63638; + content: "\f463"; + animation: rotation 2s infinite linear; +} + +.email-personal-data--sent::before { + color: #68de7c; + content: "\f147"; +} + + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 782px) { + /* Input Elements */ + textarea { + -webkit-appearance: none; + } + + input[type="text"], + input[type="password"], + input[type="date"], + input[type="datetime"], + input[type="datetime-local"], + input[type="email"], + input[type="month"], + input[type="number"], + input[type="search"], + input[type="tel"], + input[type="time"], + input[type="url"], + input[type="week"] { + -webkit-appearance: none; + padding: 3px 10px; + /* Only necessary for IE11 */ + min-height: 40px; + } + + ::-webkit-datetime-edit { + line-height: 1.875; /* 30px */ + } + + input[type="checkbox"], + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + -webkit-appearance: none; + } + + .widefat th input[type="checkbox"], + .widefat thead td input[type="checkbox"], + .widefat tfoot td input[type="checkbox"] { + margin-bottom: 8px; + } + + input[type="checkbox"]:checked:before, + .widefat th input[type="checkbox"]:before, + .widefat thead td input[type="checkbox"]:before, + .widefat tfoot td input[type="checkbox"]:before { + width: 1.875rem; + height: 1.875rem; + margin: -0.1875rem -0.3125rem; + } + + input[type="radio"], + input[type="checkbox"] { + height: 1.5625rem; + width: 1.5625rem; + } + + .wp-admin p input[type="checkbox"], + .wp-admin p input[type="radio"] { + margin-top: -0.1875rem; + } + + input[type="radio"]:checked:before { + vertical-align: middle; + width: 0.5625rem; + height: 0.5625rem; + margin: 0.4375rem; + line-height: 0.76190476; + } + + .wp-upload-form input[type="submit"] { + margin-top: 10px; + } + + .wp-core-ui select, + .wp-admin .form-table select { + min-height: 40px; + font-size: 16px; + line-height: 1.625; /* 26px */ + padding: 5px 24px 5px 8px; + } + + .wp-admin .button-cancel { + margin-bottom: 0; + padding: 2px 0; + font-size: 14px; + vertical-align: middle; + } + + #adduser .form-field input, + #createuser .form-field input { + width: 100%; + } + + .form-table { + box-sizing: border-box; + } + + .form-table th, + .form-table td, + .label-responsive { + display: block; + width: auto; + vertical-align: middle; + } + + .label-responsive { + margin: 0.5em 0; + } + + .export-filters li { + margin-bottom: 0; + } + + .form-table .color-palette td { + display: table-cell; + width: 15px; + } + + .form-table table.color-palette { + margin-right: 10px; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description, + #profile-page .form-table textarea { + width: 100%; + display: block; + max-width: none; + box-sizing: border-box; + } + + .form-table .form-required.form-invalid td:after { + float: right; + margin: -30px 3px 0 0; + } + + input[type="text"].small-text, + input[type="search"].small-text, + input[type="password"].small-text, + input[type="number"].small-text, + input[type="number"].small-text, + .form-table input[type="text"].small-text { + width: auto; + max-width: 4.375em; /* 70px, enough for 4 digits to fit comfortably */ + display: inline; + padding: 3px 6px; + margin: 0 3px; + } + + .form-table .regular-text ~ input[type="text"].small-text { + margin-top: 5px; + } + + #pass-strength-result { + width: 100%; + box-sizing: border-box; + padding: 8px; + } + + p.search-box { + float: none; + position: absolute; + bottom: 0; + width: 98%; + height: 90px; + margin-bottom: 20px; + } + + p.search-box input[name="s"] { + float: none; + width: 100%; + margin-bottom: 10px; + vertical-align: middle; + } + + p.search-box input[type="submit"] { + margin-bottom: 10px; + } + + .form-table span.description { + display: inline; + padding: 4px 0 0; + line-height: 1.4; + font-size: 14px; + } + + .form-table th { + padding: 10px 0 0; + border-bottom: 0; + } + + .form-table td { + margin-bottom: 0; + padding: 4px 0 6px; + } + + .form-table.permalink-structure td code { + margin-left: 32px; + display: inline-block; + } + + .form-table.permalink-structure td input[type="text"] { + margin-left: 32px; + margin-top: 4px; + width: 96%; + } + + .form-table input.regular-text { + width: 100%; + } + + .form-table label { + font-size: 14px; + } + + .background-position-control .button-group > label { + font-size: 0; + } + + .form-table fieldset label { + display: block; + } + + #utc-time, + #local-time { + display: block; + float: none; + margin-top: 0.5em; + } + + .form-field #domain { + max-width: none; + } + + /* New Password */ + .wp-pwd { + position: relative; + } + + /* Needs higher specificity than normal input type text and password. */ + #profile-page .form-table #pass1 { + padding-right: 90px; + } + + .wp-pwd button.button { + background: transparent; + border: 1px solid transparent; + box-shadow: none; + line-height: 2; + margin: 0; + padding: 5px 9px; + position: absolute; + right: 0; + top: 0; + width: 2.375rem; + height: 2.375rem; + min-width: 40px; + min-height: 40px; + } + + .wp-pwd button.wp-hide-pw { + right: 2.5rem; + } + + .wp-pwd button.button:hover, + .wp-pwd button.button:focus { + background: transparent; + } + + .wp-pwd button.button:active { + background: transparent; + box-shadow: none; + transform: none; + } + + .wp-pwd .button .text { + display: none; + } + + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + line-height: 2; + padding-right: 5rem; + } + + .wp-cancel-pw .dashicons-no { + display: inline-block; + } + + .options-general-php input[type="text"].small-text { + max-width: 6.25em; + margin: 0; + } + + /* Privacy Policy settings screen */ + .tools-privacy-policy-page form.wp-create-privacy-page { + margin-bottom: 1em; + } + + .tools-privacy-policy-page input#set-page, + .tools-privacy-policy-page select { + margin: 10px 0 0; + } + + .tools-privacy-policy-page .wp-create-privacy-page span { + display: block; + margin-bottom: 1em; + } + + .tools-privacy-policy-page .wp-create-privacy-page .button { + margin-left: 0; + } + + .wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column) { + display: table-cell; + } + + .wp-list-table.privacy_requests.widefat th input, + .wp-list-table.privacy_requests.widefat thead td input { + margin-left: 5px; + } + + .wp-privacy-request-form-field input[type="text"] { + width: 100%; + margin-bottom: 10px; + vertical-align: middle; + } + + .regular-text { + max-width: 100%; + } +} + +@media only screen and (max-width: 768px) { + .form-field input[type="text"], + .form-field input[type="email"], + .form-field input[type="password"], + .form-field select, + .form-field textarea { + width: 99%; + } + + .form-wrap .form-field { + padding: 0; + } +} + +@media only screen and (max-height: 480px), screen and (max-width: 450px) { + /* Request Credentials / File Editor Warning */ + .request-filesystem-credentials-dialog .notification-dialog, + .file-editor-warning .notification-dialog { + width: 100%; + height: 100%; + max-height: 100%; + position: fixed; + top: 0; + margin: 0; + left: 0; + } +} + +/* Smartphone */ +@media screen and (max-width: 600px) { + /* Color Picker Options */ + .color-option { + width: 49%; + } +} + +@media only screen and (max-width: 320px) { + .options-general-php .date-time-text.date-time-custom-text { + min-width: 0; + margin-right: 0.5em; + } +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} diff --git a/tools/storybook/wordpress/css/forms.min.css b/tools/storybook/wordpress/css/forms.min.css new file mode 100644 index 00000000000..d212ee50a4b --- /dev/null +++ b/tools/storybook/wordpress/css/forms.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +button,input,select,textarea{box-sizing:border-box;font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea{font-size:14px}textarea{overflow:auto;padding:2px 6px;line-height:1.42857143;resize:vertical}label{cursor:pointer}input,select{margin:0 1px}textarea.code{padding:4px 6px 1px}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{padding:0 8px;line-height:2;min-height:30px}::-webkit-datetime-edit{line-height:1.85714286}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #8c8f94;border-radius:4px;background:#fff;color:#50575e;clear:none;cursor:pointer;display:inline-block;line-height:0;height:1rem;margin:-.25rem .25rem 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:1rem;min-width:1rem;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#8c8f94}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#135e96}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-right:.25rem;line-height:.71428571}input[type=checkbox]:checked::before,input[type=radio]:checked::before{float:left;display:inline-block;vertical-align:middle;width:1rem;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E");margin:-.1875rem 0 0 -.25rem;height:1.3125rem;width:1.3125rem}input[type=radio]:checked::before{content:"";border-radius:50%;width:.5rem;height:.5rem;margin:.1875rem;background-color:#3582c4;line-height:1.14285714}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#f0f0f1}::-webkit-input-placeholder{color:#646970}::-moz-placeholder{color:#646970;opacity:1}:-ms-input-placeholder{color:#646970}.form-invalid .form-required,.form-invalid .form-required:focus,.form-invalid.form-required input,.form-invalid.form-required input:focus,.form-invalid.form-required select,.form-invalid.form-required select:focus{border-color:#d63638!important;box-shadow:0 0 2px rgba(214,54,56,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:""}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#646970}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(220,220,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(44,51,56,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-core-ui select{font-size:14px;line-height:2;color:#2c3338;border-color:#8c8f94;box-shadow:none;border-radius:3px;padding:0 24px 0 8px;min-height:30px;max-width:25rem;-webkit-appearance:none;background:#fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55%;background-size:16px 16px;cursor:pointer;vertical-align:middle}.wp-core-ui select:hover{color:#2271b1}.wp-core-ui select:focus{border-color:#2271b1;color:#0a4b78;box-shadow:0 0 0 1px #2271b1}.wp-core-ui select:active{border-color:#8c8f94;box-shadow:none}.wp-core-ui select.disabled,.wp-core-ui select:disabled{color:#a7aaad;border-color:#dcdcde;background-color:#f6f7f7;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E');box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.wp-core-ui select:-moz-focusring{color:transparent;text-shadow:0 0 0 #0a4b78}.wp-core-ui select::-ms-value{background:0 0;color:#50575e}.wp-core-ui select:hover::-ms-value{color:#2271b1}.wp-core-ui select:focus::-ms-value{color:#0a4b78}.wp-core-ui select.disabled::-ms-value,.wp-core-ui select:disabled::-ms-value{color:#a7aaad}.wp-core-ui select::-ms-expand{display:none}.wp-admin .button-cancel{display:inline-block;min-height:28px;padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.meta-box-sortables input{vertical-align:middle}.misc-pub-post-status select{margin-top:0}.wp-core-ui select[multiple]{height:auto;padding-right:8px;background:#fff}.submit{padding:1.5em 0;margin:5px 0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:0 6px}label input.small-text{margin-top:-4px}input[type=number].small-text{width:65px;padding-right:0}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px;padding-right:0}#doaction,#doaction2,#post-query-submit{margin:0 8px 0 0}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:left;margin-right:6px;max-width:12.5rem}#timezone_string option{margin-left:1em}.wp-cancel-pw>.dashicons,.wp-hide-pw>.dashicons{position:relative;top:3px;width:1.25rem;height:1.25rem;top:.25rem;font-size:20px}.wp-cancel-pw .dashicons-no{display:none}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}.wp-generate-pw{margin-top:1em}.wp-pwd{margin-top:1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#f0f0f1;border:1px solid #dcdcde;color:#1d2327;margin:-1px 1px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#ffabaf;border-color:#e65054;opacity:1}#pass-strength-result.bad{background-color:#facfd2;border-color:#f86368;opacity:1}#pass-strength-result.good{background-color:#f5e6ab;border-color:#f0c33c;opacity:1}#pass-strength-result.strong{background-color:#b8e6bf;border-color:#68de7c;opacity:1}.password-input-wrapper input{font-family:Consolas,Monaco,monospace}#pass1-text.short,#pass1.short{border-color:#e65054}#pass1-text.bad,#pass1.bad{border-color:#f86368}#pass1-text.good,#pass1.good{border-color:#f0c33c}#pass1-text.strong,#pass1.strong{border-color:#68de7c}.pw-weak{display:none}.indicator-hint{padding-top:8px}.wp-pwd [type=password],.wp-pwd [type=text]{margin-bottom:0;min-height:30px}.wp-pwd input::-ms-reveal{display:none}#pass1-text,.show-password #pass1{display:none}#pass1-text::-ms-clear{display:none}.show-password #pass1-text{display:inline-block}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;margin:0 4px 0 0}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#dcdcde}.wp-tags-autocomplete .ui-state-focus,.wp-tags-autocomplete [aria-selected=true]{background-color:#2271b1;color:#fff;outline:2px solid transparent}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#1d2327;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 10px 20px 0;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.35em 0 .5em!important;display:inline-block}.form-table td fieldset p label{margin-top:0!important}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#dcdcde}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.create-application-password .form-field{max-width:25em}.create-application-password label{font-weight:600}.create-application-password p.submit{margin-bottom:0;padding-bottom:0;display:block}#application-passwords-section .notice{margin-top:20px;margin-bottom:0}.application-password-display input.code{width:19em}.auth-app-card.card{max-width:768px}.authorize-application-php .form-wrap p{display:block}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;box-sizing:border-box}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#2c3338;background:#dcdcde;border-radius:5px;border:1px solid #c3c4c7;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-bookmarklet span:before{color:#787c82;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#50575e}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px;margin:-2px 0}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.form-table.permalink-structure .available-structure-tags li{float:left;margin-right:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:60%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#8c8f94}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button{margin:0 1px 0 6px}.tools-privacy-policy-page select{margin:0 1px .5em 6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-left:4px solid #fff}.privacy_requests tbody th{border-left:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests .row-actions{color:#787c82}.privacy_requests .row-actions.processing{position:static}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{word-wrap:break-word;white-space:normal}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#fff;border-left-color:#72aee6}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#f6f7f7;border-left-color:#d63638}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:600}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#646970}.status-label.status-request-failed{color:#d63638;font-weight:600}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form input{margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#d63638;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#68de7c;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:3px 10px;min-height:40px}::-webkit-datetime-edit{line-height:1.875}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{width:1.875rem;height:1.875rem;margin:-.1875rem -.3125rem}input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-.1875rem}input[type=radio]:checked:before{vertical-align:middle;width:.5625rem;height:.5625rem;margin:.4375rem;line-height:.76190476}.wp-upload-form input[type=submit]{margin-top:10px}.wp-admin .form-table select,.wp-core-ui select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 24px 5px 8px}.wp-admin .button-cancel{margin-bottom:0;padding:2px 0;font-size:14px;vertical-align:middle}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}.form-table .regular-text~input[type=text].small-text{margin-top:5px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{float:none;width:100%;margin-bottom:10px;vertical-align:middle}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4;font-size:14px}.form-table th{padding:10px 0 0;border-bottom:0}.form-table td{margin-bottom:0;padding:4px 0 6px}.form-table.permalink-structure td code{margin-left:32px;display:inline-block}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.background-position-control .button-group>label{font-size:0}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}#profile-page .form-table #pass1{padding-right:90px}.wp-pwd button.button{background:0 0;border:1px solid transparent;box-shadow:none;line-height:2;margin:0;padding:5px 9px;position:absolute;right:0;top:0;width:2.375rem;height:2.375rem;min-width:40px;min-height:40px}.wp-pwd button.wp-hide-pw{right:2.5rem}.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd button.button:active{background:0 0;box-shadow:none;transform:none}.wp-pwd .button .text{display:none}.wp-pwd [type=password],.wp-pwd [type=text]{line-height:2;padding-right:5rem}.wp-cancel-pw .dashicons-no{display:inline-block}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-left:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-left:5px}.wp-privacy-request-form-field input[type=text]{width:100%;margin-bottom:10px;vertical-align:middle}.regular-text{max-width:100%}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/install-rtl.css b/tools/storybook/wordpress/css/install-rtl.css new file mode 100644 index 00000000000..e7b9466da81 --- /dev/null +++ b/tools/storybook/wordpress/css/install-rtl.css @@ -0,0 +1,380 @@ +/*! This file is auto-generated */ +html { + background: #f0f0f1; + margin: 0 20px; +} + +body { + background: #fff; + border: 1px solid #c3c4c7; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + margin: 140px auto 25px; + padding: 20px 20px 10px; + max-width: 700px; + -webkit-font-smoothing: subpixel-antialiased; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +a { + color: #2271b1; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +h1, h2 { + border-bottom: 1px solid #dcdcde; + clear: both; + color: #646970; + font-size: 24px; + padding: 0 0 7px; + font-weight: 400; +} + +h3 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; +} + +code, .code { + font-family: Consolas, Monaco, monospace; +} + +ul, ol, dl { + padding: 5px 22px 5px 5px; +} + +a img { + border: 0 +} +abbr { + border: 0; + font-variant: normal; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +label { + cursor: pointer; +} + +#logo { + margin: -130px auto 25px; + padding: 0 0 25px; + width: 84px; + height: 84px; + overflow: hidden; + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #3c434a; /* same as login.css */ + font-size: 20px; + font-weight: 400; + line-height: 1.3em; + text-decoration: none; + text-align: center; + text-indent: -9999px; + outline: none; +} + +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: right; + padding: 0; +} +.language-chooser.wp-core-ui .step .button.button-large { + font-size: 14px; +} +textarea { + border: 1px solid #dcdcde; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + width: 100%; + box-sizing: border-box; +} + +.form-table { + border-collapse: collapse; + margin-top: 1em; + width: 100%; +} + +.form-table td { + margin-bottom: 9px; + padding: 10px 0 10px 20px; + font-size: 14px; + vertical-align: top +} + +.form-table th { + font-size: 14px; + text-align: right; + padding: 10px 0 10px 20px; + width: 140px; + vertical-align: top; +} + +.form-table code { + line-height: 1.28571428; + font-size: 14px; +} + +.form-table p { + margin: 4px 0 0; + font-size: 11px; +} + +.form-table input { + line-height: 1.33333333; + font-size: 15px; + padding: 3px 5px; +} + +input, +submit { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; +} + +.form-table input[type=text], +.form-table input[type=email], +.form-table input[type=url], +.form-table input[type=password], +#pass-strength-result { + width: 218px; +} + +.form-table th p { + font-weight: 400; +} + +.form-table.install-success th, +.form-table.install-success td { + vertical-align: middle; + padding: 16px 0 16px 20px; +} + +.form-table.install-success td p { + margin: 0; + font-size: 14px; +} + +.form-table.install-success td code { + margin: 0; + font-size: 18px; +} + +#error-page { + margin-top: 50px; +} + +#error-page p { + font-size: 14px; + line-height: 1.28571428; + margin: 25px 0 20px; +} + +#error-page code, .code { + font-family: Consolas, Monaco, monospace; +} + +.message { + border-right: 4px solid #d63638; + padding: .7em .6em; + background-color: #fcf0f1; +} + +/* rtl:ignore */ +#dbname, +#uname, +#pwd, +#dbhost, +#prefix, +#user_login, +#admin_email, +#pass1, +#pass2 { + direction: ltr; +} + + +/* localization */ +body.rtl, +.rtl textarea, +.rtl input, +.rtl submit { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) body.rtl, +:lang(he-il) .rtl textarea, +:lang(he-il) .rtl input, +:lang(he-il) .rtl submit { + font-family: Arial, sans-serif; +} + +@media only screen and (max-width: 799px) { + body { + margin-top: 115px; + } + #logo a { + margin: -125px auto 30px; + } +} + +@media screen and (max-width: 782px) { + + .form-table { + margin-top: 0; + } + + .form-table th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table th { + padding: 20px 0 0; + } + + .form-table td { + padding: 5px 0; + border: 0; + margin: 0; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="url"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description { + width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; + display: block; + max-width: none; + box-sizing: border-box; + } + + .wp-pwd #pass1 { + padding-left: 50px; + } + + .wp-pwd .button.wp-hide-pw { + left: 0; + } + + #pass-strength-result { + width: 100%; + } +} + +body.language-chooser { + max-width: 300px; +} + +.language-chooser select { + padding: 8px; + width: 100%; + display: block; + border: 1px solid #dcdcde; + background: #fff; + color: #2c3338; + font-size: 16px; + font-family: Arial, sans-serif; + font-weight: 400; +} + +.language-chooser select:focus { + color: #2c3338; +} + +.language-chooser select option:hover, +.language-chooser select option:focus { + color: #0a4b78; +} + +.language-chooser .step { + text-align: left; +} + +.screen-reader-input, +.screen-reader-text { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; +} + +.spinner { + background: url(../images/spinner.gif) no-repeat; + background-size: 20px 20px; + visibility: hidden; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 2px 5px 0; +} + +.step .spinner { + display: inline-block; + vertical-align: middle; + margin-left: 15px; +} + +.button.hide-if-no-js, +.hide-if-no-js { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} diff --git a/tools/storybook/wordpress/css/install-rtl.min.css b/tools/storybook/wordpress/css/install-rtl.min.css new file mode 100644 index 00000000000..37ec3a1fb7d --- /dev/null +++ b/tools/storybook/wordpress/css/install-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +html{background:#f0f0f1;margin:0 20px}body{background:#fff;border:1px solid #c3c4c7;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;box-shadow:0 1px 1px rgba(0,0,0,.04)}a{color:#2271b1}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}h1,h2{border-bottom:1px solid #dcdcde;clear:both;color:#646970;font-size:24px;padding:0 0 7px;font-weight:400}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:5px 22px 5px 5px}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}#logo{margin:-130px auto 25px;padding:0 0 25px;width:84px;height:84px;overflow:hidden;background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;font-size:20px;font-weight:400;line-height:1.3em;text-decoration:none;text-align:center;text-indent:-9999px;outline:0}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{font-size:14px}textarea{border:1px solid #dcdcde;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 0 10px 20px;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:right;padding:10px 0 10px 20px;width:140px;vertical-align:top}.form-table code{line-height:1.28571428;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:1.33333333;font-size:15px;padding:3px 5px}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}#pass-strength-result,.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:218px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:1.28571428;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.message{border-right:4px solid #d63638;padding:.7em .6em;background-color:#fcf0f1}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.wp-pwd #pass1{padding-left:50px}.wp-pwd .button.wp-hide-pw{left:0}#pass-strength-result{width:100%}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #dcdcde;background:#fff;color:#2c3338;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser select:focus{color:#2c3338}.language-chooser select option:focus,.language-chooser select option:hover{color:#0a4b78}.language-chooser .step{text-align:left}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-left:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/install.css b/tools/storybook/wordpress/css/install.css new file mode 100644 index 00000000000..62a596f0fe1 --- /dev/null +++ b/tools/storybook/wordpress/css/install.css @@ -0,0 +1,379 @@ +html { + background: #f0f0f1; + margin: 0 20px; +} + +body { + background: #fff; + border: 1px solid #c3c4c7; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + margin: 140px auto 25px; + padding: 20px 20px 10px; + max-width: 700px; + -webkit-font-smoothing: subpixel-antialiased; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +a { + color: #2271b1; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +h1, h2 { + border-bottom: 1px solid #dcdcde; + clear: both; + color: #646970; + font-size: 24px; + padding: 0 0 7px; + font-weight: 400; +} + +h3 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; +} + +code, .code { + font-family: Consolas, Monaco, monospace; +} + +ul, ol, dl { + padding: 5px 5px 5px 22px; +} + +a img { + border: 0 +} +abbr { + border: 0; + font-variant: normal; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +label { + cursor: pointer; +} + +#logo { + margin: -130px auto 25px; + padding: 0 0 25px; + width: 84px; + height: 84px; + overflow: hidden; + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #3c434a; /* same as login.css */ + font-size: 20px; + font-weight: 400; + line-height: 1.3em; + text-decoration: none; + text-align: center; + text-indent: -9999px; + outline: none; +} + +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: left; + padding: 0; +} +.language-chooser.wp-core-ui .step .button.button-large { + font-size: 14px; +} +textarea { + border: 1px solid #dcdcde; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + width: 100%; + box-sizing: border-box; +} + +.form-table { + border-collapse: collapse; + margin-top: 1em; + width: 100%; +} + +.form-table td { + margin-bottom: 9px; + padding: 10px 20px 10px 0; + font-size: 14px; + vertical-align: top +} + +.form-table th { + font-size: 14px; + text-align: left; + padding: 10px 20px 10px 0; + width: 140px; + vertical-align: top; +} + +.form-table code { + line-height: 1.28571428; + font-size: 14px; +} + +.form-table p { + margin: 4px 0 0; + font-size: 11px; +} + +.form-table input { + line-height: 1.33333333; + font-size: 15px; + padding: 3px 5px; +} + +input, +submit { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; +} + +.form-table input[type=text], +.form-table input[type=email], +.form-table input[type=url], +.form-table input[type=password], +#pass-strength-result { + width: 218px; +} + +.form-table th p { + font-weight: 400; +} + +.form-table.install-success th, +.form-table.install-success td { + vertical-align: middle; + padding: 16px 20px 16px 0; +} + +.form-table.install-success td p { + margin: 0; + font-size: 14px; +} + +.form-table.install-success td code { + margin: 0; + font-size: 18px; +} + +#error-page { + margin-top: 50px; +} + +#error-page p { + font-size: 14px; + line-height: 1.28571428; + margin: 25px 0 20px; +} + +#error-page code, .code { + font-family: Consolas, Monaco, monospace; +} + +.message { + border-left: 4px solid #d63638; + padding: .7em .6em; + background-color: #fcf0f1; +} + +/* rtl:ignore */ +#dbname, +#uname, +#pwd, +#dbhost, +#prefix, +#user_login, +#admin_email, +#pass1, +#pass2 { + direction: ltr; +} + + +/* localization */ +body.rtl, +.rtl textarea, +.rtl input, +.rtl submit { + font-family: Tahoma, sans-serif; +} + +:lang(he-il) body.rtl, +:lang(he-il) .rtl textarea, +:lang(he-il) .rtl input, +:lang(he-il) .rtl submit { + font-family: Arial, sans-serif; +} + +@media only screen and (max-width: 799px) { + body { + margin-top: 115px; + } + #logo a { + margin: -125px auto 30px; + } +} + +@media screen and (max-width: 782px) { + + .form-table { + margin-top: 0; + } + + .form-table th, + .form-table td { + display: block; + width: auto; + vertical-align: middle; + } + + .form-table th { + padding: 20px 0 0; + } + + .form-table td { + padding: 5px 0; + border: 0; + margin: 0; + } + + textarea, + input { + font-size: 16px; + } + + .form-table td input[type="text"], + .form-table td input[type="email"], + .form-table td input[type="url"], + .form-table td input[type="password"], + .form-table td select, + .form-table td textarea, + .form-table span.description { + width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; + display: block; + max-width: none; + box-sizing: border-box; + } + + .wp-pwd #pass1 { + padding-right: 50px; + } + + .wp-pwd .button.wp-hide-pw { + right: 0; + } + + #pass-strength-result { + width: 100%; + } +} + +body.language-chooser { + max-width: 300px; +} + +.language-chooser select { + padding: 8px; + width: 100%; + display: block; + border: 1px solid #dcdcde; + background: #fff; + color: #2c3338; + font-size: 16px; + font-family: Arial, sans-serif; + font-weight: 400; +} + +.language-chooser select:focus { + color: #2c3338; +} + +.language-chooser select option:hover, +.language-chooser select option:focus { + color: #0a4b78; +} + +.language-chooser .step { + text-align: right; +} + +.screen-reader-input, +.screen-reader-text { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; +} + +.spinner { + background: url(../images/spinner.gif) no-repeat; + background-size: 20px 20px; + visibility: hidden; + opacity: 0.7; + filter: alpha(opacity=70); + width: 20px; + height: 20px; + margin: 2px 5px 0; +} + +.step .spinner { + display: inline-block; + vertical-align: middle; + margin-right: 15px; +} + +.button.hide-if-no-js, +.hide-if-no-js { + display: none; +} + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + + .spinner { + background-image: url(../images/spinner-2x.gif); + } + +} diff --git a/tools/storybook/wordpress/css/install.min.css b/tools/storybook/wordpress/css/install.min.css new file mode 100644 index 00000000000..6cbb6dcb747 --- /dev/null +++ b/tools/storybook/wordpress/css/install.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +html{background:#f0f0f1;margin:0 20px}body{background:#fff;border:1px solid #c3c4c7;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;box-shadow:0 1px 1px rgba(0,0,0,.04)}a{color:#2271b1}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}h1,h2{border-bottom:1px solid #dcdcde;clear:both;color:#646970;font-size:24px;padding:0 0 7px;font-weight:400}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}#logo{margin:-130px auto 25px;padding:0 0 25px;width:84px;height:84px;overflow:hidden;background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;font-size:20px;font-weight:400;line-height:1.3em;text-decoration:none;text-align:center;text-indent:-9999px;outline:0}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{font-size:14px}textarea{border:1px solid #dcdcde;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:10px 20px 10px 0;width:140px;vertical-align:top}.form-table code{line-height:1.28571428;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:1.33333333;font-size:15px;padding:3px 5px}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}#pass-strength-result,.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:218px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:1.28571428;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.message{border-left:4px solid #d63638;padding:.7em .6em;background-color:#fcf0f1}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.wp-pwd #pass1{padding-right:50px}.wp-pwd .button.wp-hide-pw{right:0}#pass-strength-result{width:100%}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #dcdcde;background:#fff;color:#2c3338;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser select:focus{color:#2c3338}.language-chooser select option:focus,.language-chooser select option:hover{color:#0a4b78}.language-chooser .step{text-align:right}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-right:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/l10n-rtl.css b/tools/storybook/wordpress/css/l10n-rtl.css new file mode 100644 index 00000000000..eaefa4eddc2 --- /dev/null +++ b/tools/storybook/wordpress/css/l10n-rtl.css @@ -0,0 +1,121 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 27.0 - Localization +------------------------------------------------------------------------------*/ + +/* RTL except Hebrew (see below): Tahoma as the first font; */ +body.rtl, +body.rtl .press-this a.wp-switch-editor { + font-family: Tahoma, Arial, sans-serif; +} + +/* Arial is best for RTL headings. */ +.rtl h1, +.rtl h2, +.rtl h3, +.rtl h4, +.rtl h5, +.rtl h6 { + font-family: Arial, sans-serif; + font-weight: 600; +} + +/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */ +body.locale-he-il, +body.locale-he-il .press-this a.wp-switch-editor { + font-family: Arial, sans-serif; +} + +/* he_IL: Have be bold rather than italic. */ +.locale-he-il em { + font-style: normal; + font-weight: 600; +} + +/* zh_CN: Remove italic properties. */ +.locale-zh-cn .howto, +.locale-zh-cn .tablenav .displaying-num, +.locale-zh-cn .js .input-with-default-title, +.locale-zh-cn .link-to-original, +.locale-zh-cn .inline-edit-row fieldset span.title, +.locale-zh-cn .inline-edit-row fieldset span.checkbox-title, +.locale-zh-cn #utc-time, +.locale-zh-cn #local-time, +.locale-zh-cn p.install-help, +.locale-zh-cn p.help, +.locale-zh-cn p.description, +.locale-zh-cn span.description, +.locale-zh-cn .form-wrap p { + font-style: normal; +} + +/* zh_CN: Enlarge dashboard widget 'Configure' link */ +.locale-zh-cn .hdnle a { font-size: 12px; } + +/* zn_CH: Enlarge font size, set font-size: normal */ +.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; } + +/* zh_CN: Enlarge font-size. */ +.locale-zh-cn #sort-buttons { font-size: 1em !important; } + +/* de_DE: Text needs more space for translation */ +.locale-de-de #customize-header-actions .button, +.locale-de-de-formal #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-de-de #customize-header-actions .spinner, +.locale-de-de-formal #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* ru_RU: Text needs more room to breathe. */ +.locale-ru-ru #adminmenu { + width: inherit; /* back-compat for pre-3.2 */ +} +.locale-ru-ru #adminmenu, +.locale-ru-ru #wpbody { + margin-right: 0; /* back-compat for pre-3.2 */ +} +.locale-ru-ru .inline-edit-row fieldset label span.title, +.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, +.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap { + margin-right: 8em; /* default 6em */ +} +.locale-ru-ru.post-php .tagsdiv .newtag, +.locale-ru-ru.post-new-php .tagsdiv .newtag { + width: 165px; /* default 180px - 15px */ +} +.locale-ru-ru.press-this .posting { + margin-left: 277px; /* default 252px + 25px */ +} +.locale-ru-ru .press-this-sidebar { + width: 265px; /* default 240px + 25px */ +} +.locale-ru-ru #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-ru-ru #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* lt_LT: QuickEdit */ +.locale-lt-lt .inline-edit-row fieldset label span.title, +.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, +.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-right: 8em; /* default 6em */ +} + +@media screen and (max-width: 782px) { + .locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, + .locale-ru-ru .inline-edit-row fieldset .timestamp-wrap, + .locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, + .locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-right: 0; + } +} diff --git a/tools/storybook/wordpress/css/l10n-rtl.min.css b/tools/storybook/wordpress/css/l10n-rtl.min.css new file mode 100644 index 00000000000..3ac11f8e2d3 --- /dev/null +++ b/tools/storybook/wordpress/css/l10n-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:600}.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button{padding:0 5px 1px}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/l10n.css b/tools/storybook/wordpress/css/l10n.css new file mode 100644 index 00000000000..967fb4c6c65 --- /dev/null +++ b/tools/storybook/wordpress/css/l10n.css @@ -0,0 +1,120 @@ +/*------------------------------------------------------------------------------ + 27.0 - Localization +------------------------------------------------------------------------------*/ + +/* RTL except Hebrew (see below): Tahoma as the first font; */ +body.rtl, +body.rtl .press-this a.wp-switch-editor { + font-family: Tahoma, Arial, sans-serif; +} + +/* Arial is best for RTL headings. */ +.rtl h1, +.rtl h2, +.rtl h3, +.rtl h4, +.rtl h5, +.rtl h6 { + font-family: Arial, sans-serif; + font-weight: 600; +} + +/* he_IL: Remove Tahoma from the font stack. Arial is best for Hebrew. */ +body.locale-he-il, +body.locale-he-il .press-this a.wp-switch-editor { + font-family: Arial, sans-serif; +} + +/* he_IL: Have be bold rather than italic. */ +.locale-he-il em { + font-style: normal; + font-weight: 600; +} + +/* zh_CN: Remove italic properties. */ +.locale-zh-cn .howto, +.locale-zh-cn .tablenav .displaying-num, +.locale-zh-cn .js .input-with-default-title, +.locale-zh-cn .link-to-original, +.locale-zh-cn .inline-edit-row fieldset span.title, +.locale-zh-cn .inline-edit-row fieldset span.checkbox-title, +.locale-zh-cn #utc-time, +.locale-zh-cn #local-time, +.locale-zh-cn p.install-help, +.locale-zh-cn p.help, +.locale-zh-cn p.description, +.locale-zh-cn span.description, +.locale-zh-cn .form-wrap p { + font-style: normal; +} + +/* zh_CN: Enlarge dashboard widget 'Configure' link */ +.locale-zh-cn .hdnle a { font-size: 12px; } + +/* zn_CH: Enlarge font size, set font-size: normal */ +.locale-zh-cn form.upgrade .hint { font-style: normal; font-size: 100%; } + +/* zh_CN: Enlarge font-size. */ +.locale-zh-cn #sort-buttons { font-size: 1em !important; } + +/* de_DE: Text needs more space for translation */ +.locale-de-de #customize-header-actions .button, +.locale-de-de-formal #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-de-de #customize-header-actions .spinner, +.locale-de-de-formal #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* ru_RU: Text needs more room to breathe. */ +.locale-ru-ru #adminmenu { + width: inherit; /* back-compat for pre-3.2 */ +} +.locale-ru-ru #adminmenu, +.locale-ru-ru #wpbody { + margin-left: 0; /* back-compat for pre-3.2 */ +} +.locale-ru-ru .inline-edit-row fieldset label span.title, +.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, +.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap { + margin-left: 8em; /* default 6em */ +} +.locale-ru-ru.post-php .tagsdiv .newtag, +.locale-ru-ru.post-new-php .tagsdiv .newtag { + width: 165px; /* default 180px - 15px */ +} +.locale-ru-ru.press-this .posting { + margin-right: 277px; /* default 252px + 25px */ +} +.locale-ru-ru .press-this-sidebar { + width: 265px; /* default 240px + 25px */ +} +.locale-ru-ru #customize-header-actions .button { + padding: 0 5px 1px; /* default 0 10px 1px */ +} +.locale-ru-ru #customize-header-actions .spinner { + margin: 16px 3px 0; /* default 16px 4px 0 5px */ +} + +/* lt_LT: QuickEdit */ +.locale-lt-lt .inline-edit-row fieldset label span.title, +.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend { + width: 8em; /* default 6em */ +} +.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, +.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-left: 8em; /* default 6em */ +} + +@media screen and (max-width: 782px) { + .locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap, + .locale-ru-ru .inline-edit-row fieldset .timestamp-wrap, + .locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap, + .locale-lt-lt .inline-edit-row fieldset .timestamp-wrap { + margin-left: 0; + } +} diff --git a/tools/storybook/wordpress/css/l10n.min.css b/tools/storybook/wordpress/css/l10n.min.css new file mode 100644 index 00000000000..6a427f4c331 --- /dev/null +++ b/tools/storybook/wordpress/css/l10n.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:600}.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button{padding:0 5px 1px}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/list-tables-rtl.css b/tools/storybook/wordpress/css/list-tables-rtl.css new file mode 100644 index 00000000000..47375209462 --- /dev/null +++ b/tools/storybook/wordpress/css/list-tables-rtl.css @@ -0,0 +1,2247 @@ +/*! This file is auto-generated */ +.response-links { + display: block; + margin-bottom: 1em; +} + +.response-links a { + display: block; +} + +.response-links a.comments-edit-item-link { + font-weight: 600; +} + +.response-links a.comments-view-item-link { + font-size: 12px; +} + +.post-com-count-wrapper strong { + font-weight: 400; +} + +.comments-view-item-link { + display: inline-block; + clear: both; +} + +.column-response .post-com-count-wrapper, +.column-comments .post-com-count-wrapper { + white-space: nowrap; + word-wrap: normal; +} + +/* comments bubble common */ +.column-response .post-com-count, +.column-comments .post-com-count { + display: inline-block; + vertical-align: top; +} + +/* comments bubble approved */ +.column-response .post-com-count-no-comments, +.column-response .post-com-count-approved, +.column-comments .post-com-count-no-comments, +.column-comments .post-com-count-approved { + margin-top: 5px; +} + +.column-response .comment-count-no-comments, +.column-response .comment-count-approved, +.column-comments .comment-count-no-comments, +.column-comments .comment-count-approved { + box-sizing: border-box; + display: block; + padding: 0 8px; + min-width: 24px; + height: 2em; + border-radius: 5px; + background-color: #646970; + color: #fff; + font-size: 11px; + line-height: 1.90909090; + text-align: center; +} + +.column-response .post-com-count-no-comments:after, +.column-response .post-com-count-approved:after, +.column-comments .post-com-count-no-comments:after, +.column-comments .post-com-count-approved:after { + content: ""; + display: block; + margin-right: 8px; + width: 0; + height: 0; + border-top: 5px solid #646970; + border-left: 5px solid transparent; +} + +.column-response a.post-com-count-approved:hover .comment-count-approved, +.column-response a.post-com-count-approved:focus .comment-count-approved, +.column-comments a.post-com-count-approved:hover .comment-count-approved, +.column-comments a.post-com-count-approved:focus .comment-count-approved { + background: #2271b1; +} + +.column-response a.post-com-count-approved:hover:after, +.column-response a.post-com-count-approved:focus:after, +.column-comments a.post-com-count-approved:hover:after, +.column-comments a.post-com-count-approved:focus:after { + border-top-color: #2271b1; +} + +/* @todo: consider to use a single rule for these counters and the admin menu counters. */ +.column-response .post-com-count-pending, +.column-comments .post-com-count-pending { + position: relative; + right: -3px; + padding: 0 5px; + min-width: 7px; + height: 17px; + border: 2px solid #fff; + border-radius: 11px; + background: #d63638; + color: #fff; + font-size: 9px; + line-height: 1.88888888; + text-align: center; +} + +.column-response .post-com-count-no-pending, +.column-comments .post-com-count-no-pending { + display: none; +} + +/* comments */ + +.commentlist li { + padding: 1em 1em .2em; + margin: 0; + border-bottom: 1px solid #c3c4c7; +} + +.commentlist li li { + border-bottom: 0; + padding: 0; +} + +.commentlist p { + padding: 0; + margin: 0 0 .8em; +} + +#submitted-on, +.submitted-on { + color: #50575e; +} + +/* reply to comments */ +#replyrow td { + padding: 2px; +} + +#replysubmit { + margin: 0; + padding: 5px 7px 10px; + overflow: hidden; +} + +#replysubmit .reply-submit-buttons { + margin-bottom: 0; +} + +#replysubmit .button { + margin-left: 5px; +} + +#replysubmit .spinner { + float: none; + margin: -4px 0 0; +} + +#replyrow.inline-edit-row fieldset.comment-reply { + font-size: inherit; + line-height: inherit; +} + +#replyrow legend { + margin: 0; + padding: .2em 5px 0; + font-size: 13px; + line-height: 1.4; + font-weight: 600; +} + +#replyrow.inline-edit-row label { + display: inline; + vertical-align: baseline; + line-height: inherit; +} + +#edithead .inside, +#commentsdiv #edithead .inside { + float: right; + padding: 3px 5px 2px 0; + margin: 0; + text-align: center; +} + +#edithead .inside input { + width: 180px; +} + +#edithead label { + padding: 2px 0; +} + +#replycontainer { + padding: 5px; +} + +#replycontent { + height: 120px; + box-shadow: none; +} + +#replyerror { + border-color: #dcdcde; + background-color: #f6f7f7; +} + +/* @todo: is this used? */ +.commentlist .avatar { + vertical-align: text-top; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f6f7f7; +} + +#the-comment-list .unapproved th, +#the-comment-list .unapproved td { + background-color: #fcf9e8; +} + +#the-comment-list .unapproved th.check-column { + border-right: 4px solid #d63638; +} + +#the-comment-list .unapproved th.check-column input { + margin-right: 4px; +} + +#the-comment-list .approve a { + color: #007017; +} + +#the-comment-list .unapprove a { + color: #996800; +} + +#the-comment-list th, +#the-comment-list td { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#the-comment-list tr:last-child th, +#the-comment-list tr:last-child td { + box-shadow: none; +} + +#the-comment-list tr.unapproved + tr.approved th, +#the-comment-list tr.unapproved + tr.approved td { + border-top: 1px solid rgba(0, 0, 0, 0.03); +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #f0f6fc !important; +} + +th .comment-grey-bubble { + height: 16px; + width: 16px; +} + +th .comment-grey-bubble:before { + content: "\f101"; + font: normal 20px/.5 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: 4px; + right: -4px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} + +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} + +.fixed .column-posts, +.fixed .column-parent, +.fixed .column-links, +.fixed .column-author, +.fixed .column-format { + width: 10%; +} + +.fixed .column-date { + width: 14%; +} + +.column-date span[title] { + -webkit-text-decoration: dotted underline; + text-decoration: dotted underline; +} + +.fixed .column-posts { + width: 74px; +} + +.fixed .column-role, +.fixed .column-posts { + -webkit-hyphens: auto; + hyphens: auto; +} + +.fixed .column-comment .comment-author { + display: none; +} + +.fixed .column-response, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + width: 15%; +} + +.fixed .column-slug { + width: 25%; +} + +.fixed .column-locations { + width: 35%; +} + +.fixed .column-comments { + width: 5.5em; + padding: 8px 0; + text-align: right; +} + +.fixed .column-comments .vers { + padding-right: 3px; +} + +td.column-title strong, +td.plugin-title strong { + display: block; + margin-bottom: .2em; + font-size: 14px; +} + +td.column-title p, +td.plugin-title p { + margin: 6px 0; +} + +/* Media file column */ +table.media .column-title .media-icon { + float: right; + min-height: 60px; + margin: 0 0 0 9px; +} + +table.media .column-title .media-icon img { + max-width: 60px; + height: auto; + vertical-align: top; /* Remove descender white-space. */ +} + +table.media .column-title .has-media-icon ~ .row-actions { + margin-right: 70px; /* 60px image + margin */ +} + +table.media .column-title .filename { + margin-bottom: 0.2em; +} + +/* Media Copy to clipboard row action */ +.media .row-actions .copy-to-clipboard-container { + display: inline; + position: relative; +} + +.media .row-actions .copy-to-clipboard-container .success { + position: absolute; + right: 50%; + transform: translate(50%, -100%); + background: #000; + color: #fff; + border-radius: 5px; + margin: 0; + padding: 2px 5px; +} + +/* @todo: pick a consistent list table selector */ +.wp-list-table a { + transition: none; +} + +#the-list tr:last-child td, +#the-list tr:last-child th { + border-bottom: none !important; + box-shadow: none; +} + +#comments-form .fixed .column-author { + width: 20%; +} + +#commentsdiv.postbox .inside { + margin: 0; + padding: 0; +} + +#commentsdiv .inside .row-actions { + line-height: 1.38461538; +} + +#commentsdiv .inside .column-author { + width: 25%; +} + +#commentsdiv .column-comment p { + margin: 0.6em 0; + padding: 0; +} + +#commentsdiv #replyrow td { + padding: 0; +} + +#commentsdiv p { + padding: 8px 10px; + margin: 0; +} + +#commentsdiv .comments-box { + border: 0 none; +} + +#commentsdiv .comments-box thead th, +#commentsdiv .comments-box thead td { + background: transparent; + padding: 0 7px 4px; +} + +#commentsdiv .comments-box tr:last-child td { + border-bottom: 0 none; +} + +#commentsdiv #edithead .inside input { + width: 160px; +} + +.sorting-indicator { + display: block; + visibility: hidden; + width: 10px; + height: 4px; + margin-top: 8px; + margin-right: 7px; +} + +.sorting-indicator:before { + content: "\f142"; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: -4px; + right: -8px; + color: #3c434a; + line-height: 0.5; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +.column-comments .sorting-indicator:before { + top: 0; + right: -10px; +} + +th.sorted.asc .sorting-indicator:before, +th.desc:hover span.sorting-indicator:before, +th.desc a:focus span.sorting-indicator:before { + content: "\f142"; +} + +th.sorted.desc .sorting-indicator:before, +th.asc:hover span.sorting-indicator:before, +th.asc a:focus span.sorting-indicator:before { + content: "\f140"; +} + +.wp-list-table .toggle-row { + position: absolute; + left: 8px; + top: 10px; + display: none; + padding: 0; + width: 40px; + height: 40px; + border: none; + outline: none; + background: transparent; +} + +.wp-list-table .toggle-row:hover { + cursor: pointer; +} + +.wp-list-table .toggle-row:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.wp-list-table .toggle-row:active { + box-shadow: none; +} + +.wp-list-table .toggle-row:before { + position: absolute; + top: -5px; + right: 10px; + border-radius: 50%; + display: block; + padding: 1px 0 1px 2px; + color: #3c434a; /* same as table headers sort arrows */ + content: "\f140"; + font: normal 20px/1 dashicons; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + speak: never; +} + +.wp-list-table .is-expanded .toggle-row:before { + content: "\f142"; +} + +.locked-indicator { + display: none; + margin-right: 6px; + height: 20px; + width: 16px; +} + +.locked-indicator-icon:before { + color: #8c8f94; + content: "\f160"; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.locked-info { + display: none; + margin-top: 4px; +} + +.locked-text { + vertical-align: top; +} + +.wp-locked .locked-indicator, +.wp-locked .locked-info { + display: block; +} + +tr.wp-locked .check-column label, +tr.wp-locked .check-column input[type="checkbox"], +tr.wp-locked .row-actions .inline, +tr.wp-locked .row-actions .trash { + display: none; +} + +.fixed .column-comments .sorting-indicator { + margin-top: 3px; +} + +#menu-locations-wrap .widefat { + width: 60%; +} + +.widefat th.sortable, +.widefat th.sorted { + padding: 0; +} + +th.sortable a, +th.sorted a { + display: block; + overflow: hidden; + padding: 8px; +} + +.fixed .column-comments.sortable a, +.fixed .column-comments.sorted a { + padding: 8px 0; +} + +th.sortable a span, +th.sorted a span { + float: right; + cursor: pointer; +} + +th.sorted .sorting-indicator, +th.desc:hover span.sorting-indicator, +th.desc a:focus span.sorting-indicator, +th.asc:hover span.sorting-indicator, +th.asc a:focus span.sorting-indicator { + visibility: visible; +} + +.tablenav-pages .current-page { + margin: 0 0 0 2px; + font-size: 13px; + text-align: center; +} + +.tablenav .total-pages { + margin-left: 2px; +} + +.tablenav #table-paging { + margin-right: 2px; +} + +.tablenav { + clear: both; + height: 30px; + margin: 6px 0 4px; + padding-top: 5px; + vertical-align: middle; +} + +.tablenav.themes { + max-width: 98%; +} + +.tablenav .tablenav-pages { + float: left; + margin: 0 0 9px; +} + +.tablenav .no-pages, +.tablenav .one-page .pagination-links { + display: none; +} + +.tablenav .tablenav-pages .button, +.tablenav .tablenav-pages .tablenav-pages-navspan { + display: inline-block; + vertical-align: baseline; + min-width: 30px; + min-height: 30px; + margin: 0; + padding: 0 4px; + font-size: 16px; + line-height: 1.625; /* 26px */ + text-align: center; +} + +.tablenav .displaying-num { + margin-left: 7px; +} + +.tablenav .one-page .displaying-num { + display: inline-block; + margin: 5px 0; +} + +.tablenav .actions { + padding: 0 0 0 8px; +} + +.wp-filter .actions { + display: inline-block; + vertical-align: middle; +} + +.tablenav .delete { + margin-left: 20px; +} + +/* This view-switcher is still used on multisite. */ +.tablenav .view-switch { + float: left; + margin: 0 5px; + padding-top: 3px; +} + +.wp-filter .view-switch { + display: inline-block; + vertical-align: middle; + padding: 12px 0; + margin: 0 2px 0 8px; +} + +.media-toolbar.wp-filter .view-switch { + margin: 0 2px 0 12px; +} + +.view-switch a { + float: right; + width: 28px; + height: 28px; + text-align: center; + line-height: 1.84615384; + text-decoration: none; +} + +.view-switch a:before { + color: #c3c4c7; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.view-switch a:hover:before, +.view-switch a:focus:before { + color: #787c82; +} + +.view-switch a.current:before { + color: #2271b1; +} + +.view-switch .view-list:before { + content: "\f163"; +} + +.view-switch .view-excerpt:before { + content: "\f164"; +} + +.view-switch .view-grid:before { + content: "\f509"; +} + +.filter { + float: right; + margin: -5px 10px 0 0; +} + +.filter .subsubsub { + margin-right: -10px; + margin-top: 13px; +} +.screen-per-page { + width: 4em; +} + +#posts-filter .wp-filter { + margin-bottom: 0; +} + +#posts-filter fieldset { + float: right; + margin: 0 0 1em 1.5ex; + padding: 0; +} + +#posts-filter fieldset legend { + padding: 0 1px .2em 0; +} + +p.pagenav { + margin: 0; + display: inline; +} + +.pagenav span { + font-weight: 600; + margin: 0 6px; +} + +.row-title { + font-size: 14px !important; + font-weight: 600; +} + +.column-comment .comment-author { + margin-bottom: 0.6em; +} + +.column-author img, +.column-username img, +.column-comment .comment-author img { + float: right; + margin-left: 10px; + margin-top: 1px; +} + +.row-actions { + color: #a7aaad; + font-size: 13px; + padding: 2px 0 0; + position: relative; + right: -9999em; +} + +/* ticket #34150 */ +.rtl .row-actions a { + display: inline-block; +} + +.row-actions .network_only, +.row-actions .network_active { + color: #000; +} + +.no-js .row-actions, +tr:hover .row-actions, +.mobile .row-actions, +.row-actions.visible, +.comment-item:hover .row-actions { + position: static; +} + +/* deprecated */ +.row-actions-visible { + padding: 2px 0 0; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ + +#wpbody-content .inline-edit-row fieldset { + float: right; + margin: 0; + padding: 0 0 0 12px; + width: 100%; + box-sizing: border-box; +} + +#wpbody-content .inline-edit-row td fieldset:last-of-type { + padding-left: 0; +} + +tr.inline-edit-row td { + padding: 0; + /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ + position: relative; +} + +.inline-edit-wrapper { + display: flow-root; + padding: 0 12px; + border: 1px solid transparent; + border-radius: 4px; +} + +.inline-edit-wrapper:focus { + border-color: #2271b1; + box-shadow: 0 0 0 1px #2271b1; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 40%; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-right { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 20%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 50%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 50%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: left; + width: 69%; +} + +#wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 27px; +} + +.inline-edit-row fieldset .inline-edit-group { + clear: both; + line-height: 2.5; +} + +.inline-edit-row .submit { + display: flex; + flex-wrap: wrap; + align-items: center; + clear: both; + margin: 0; + padding: 0.5em 0 1em; +} + +.inline-edit-save.submit .button { + margin-left: 8px; +} + +.inline-edit-save .spinner { + float: none; + margin: 0; +} + +.inline-edit-row .notice-error { + box-sizing: border-box; + min-width: 100%; + margin-top: 1em; +} + +.inline-edit-row .notice-error .error { + margin: 0.5em 0; + padding: 2px; +} + +/* Positioning */ + +/* Needs higher specificity for the padding */ +#the-list .inline-edit-row .inline-edit-legend { + margin: 0; + padding: 0.2em 0; + line-height: 2.5; + font-weight: 600; +} + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + margin: 0; + padding: 0; +} + +.inline-edit-row fieldset label, +.inline-edit-row fieldset span.inline-edit-categories-label { + display: block; + margin: .2em 0; + line-height: 2.5; +} + +.inline-edit-row fieldset.inline-edit-date label { + display: inline-block; + margin: 0; + vertical-align: baseline; + line-height: 2; +} + +.inline-edit-row fieldset label.inline-edit-tags { + margin-top: 0; +} + +.inline-edit-row fieldset label.inline-edit-tags span.title { + margin: .2em 0; + width: auto; +} + +.inline-edit-row fieldset label span.title, +.inline-edit-row fieldset.inline-edit-date legend { + display: block; + float: right; + width: 6em; + line-height: 2.5; +} + +#posts-filter fieldset.inline-edit-date legend { + padding: 0; +} + +.inline-edit-row fieldset label span.input-text-wrap, +.inline-edit-row fieldset .timestamp-wrap { + display: block; + margin-right: 6em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-left: 0.5em; +} + +.inline-edit-row .inline-edit-or { + margin: .2em 0 .2em 6px; + line-height: 2.5; +} + +.inline-edit-row .input-text-wrap input[type=text] { + width: 100%; +} + +.inline-edit-row fieldset label input[type=checkbox] { + vertical-align: middle; +} + +.inline-edit-row fieldset label textarea { + width: 100%; + height: 4em; + vertical-align: top; +} + +#wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: 50%; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-left: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + +/* Styling */ +.inline-edit-row .inline-edit-legend { + text-transform: uppercase; +} + +/* Specific Elements */ +.inline-edit-row fieldset .inline-edit-date { + float: right; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn], +.inline-edit-row fieldset input[name=aa] { + vertical-align: middle; + text-align: center; + padding: 0 4px; +} + +.inline-edit-row fieldset label input.inline-edit-password-input { + width: 8em; +} + +#bulk-titles-list, +#bulk-titles-list li, +.inline-edit-row fieldset ul.cat-checklist li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; + position: relative; /* RTL fix, #WP27629 */ +} + +.inline-edit-row fieldset ul.cat-checklist input { + margin-top: -1px; + margin-right: 3px; +} + +.inline-edit-row fieldset label input.inline-edit-menu-order-input { + width: 3em; +} + +.inline-edit-row fieldset label input.inline-edit-slug-input { + width: 75%; +} + +.inline-edit-row #post_parent, +.inline-edit-row select[name="page_template"] { + max-width: 80%; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: right; +} + +#bulk-titles, +ul.cat-checklist { + height: 14em; + border: 1px solid #ddd; + margin: 0 0 5px; + padding: 0.2em 5px; + overflow-y: scroll; +} + +#bulk-titles .ntdelbutton, +#bulk-titles .ntdeltitle, +.inline-edit-row fieldset ul.cat-checklist label { + display: inline-block; + margin: 0; + padding: 3px 0; + line-height: 20px; + vertical-align: top; +} + +#bulk-titles .ntdelitem { + padding-right: 23px; +} + +#bulk-titles .ntdelbutton { + width: 26px; + height: 26px; + margin: 0 -26px 0 0; + text-align: center; + border-radius: 3px; +} + +#bulk-titles .ntdelbutton:before { + display: inline-block; + vertical-align: top; +} + +#bulk-titles .ntdelbutton:focus { + box-shadow: 0 0 0 2px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + /* Reset inherited offset from Gutenberg */ + outline-offset: 0; +} + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins tbody th.check-column, +.plugins tbody { + padding: 8px 2px 0 0; +} + +.plugins tbody th.check-column input[type=checkbox] { + margin-top: 4px; +} + +.updates-table .plugin-title p { + margin-top: 0; +} + +.plugins thead td.check-column, +.plugins tfoot td.check-column, +.plugins .inactive th.check-column { + padding-right: 6px; +} + +.plugins, +.plugins th, +.plugins td { + color: #000; +} + +.plugins tr { + background: #fff; +} + +.plugins p { + margin: 0 4px; + padding: 0; +} + +.plugins .desc p { + margin: 0 0 8px; +} + +.plugins td.desc { + line-height: 1.5; +} + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 2em 0 0; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions { + font-size: 13px; + padding: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + padding: 10px 9px; +} + +.plugins .active td, +.plugins .active th { + background-color: #f0f6fc; +} + +.plugins .update th, +.plugins .update td { + border-bottom: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th, +.plugin-install #the-list td, +.upgrade .plugins td, +.upgrade .plugins th { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.plugins tr.active.plugin-update-tr + tr.inactive th, +.plugins tr.active.plugin-update-tr + tr.inactive td, +.plugins tr.active + tr.inactive th, +.plugins tr.active + tr.inactive td { + border-top: 1px solid rgba(0, 0, 0, 0.03); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02), inset 0 -1px 0 #dcdcde; +} + +.plugins .update td, +.plugins .update th, +.upgrade .plugins tr:last-of-type td, +.upgrade .plugins tr:last-of-type th, +.plugins tr.active + tr.inactive.update th, +.plugins tr.active + tr.inactive.update td, +.plugins .updated td, +.plugins .updated th, +.plugins tr.active + tr.inactive.updated th, +.plugins tr.active + tr.inactive.updated td { + box-shadow: none; +} + +.plugins .active th.check-column, +.plugin-update-tr.active td { + border-right: 4px solid #72aee6; +} + +.wp-list-table.plugins .plugin-title, +.wp-list-table.plugins .theme-title { + padding-left: 12px; + white-space: nowrap; +} + +.plugins .plugin-title img, +.plugins .plugin-title .dashicons { + float: right; + padding: 0 0 0 10px; + width: 64px; + height: 64px; +} + +.plugins .plugin-title .dashicons:before { + padding: 2px; + background-color: #f0f0f1; + box-shadow: inset 0 0 10px rgba(167, 170, 173, 0.15); + font-size: 60px; + color: #c3c4c7; +} + +#update-themes-table .plugin-title img, +#update-themes-table .plugin-title .dashicons { + width: 85px; +} + +.plugins .column-auto-updates { + width: 14.2em; +} + +.plugins .inactive .plugin-title strong { + font-weight: 400; +} + +.plugins .second, +.plugins .row-actions { + padding: 0 0 5px; +} + +.plugins .row-actions { + white-space: normal; + min-width: 12em; +} + +.plugins .update .second, +.plugins .update .row-actions, +.plugins .updated .second, +.plugins .updated .row-actions { + padding-bottom: 0; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugins .plugin-update-tr .plugin-update { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + overflow: hidden; /* clearfix */ + padding: 0; +} + +.plugins .plugin-update-tr .notice, +.plugins .plugin-update-tr div[class="update-message"] { /* back-compat for pre-4.6 */ + margin: 5px 40px 15px 20px; +} + +.plugins .notice p { + margin: 0.5em 0; +} + +.plugins .plugin-description a, +.plugins .plugin-update a, +.updates-table .plugin-title a { + text-decoration: underline; +} + +.plugins tr.paused th.check-column { + border-right: 4px solid #d63638; +} + +.plugins tr.paused th, +.plugins tr.paused td { + background-color: #f6f7f7; +} + +.plugins tr.paused .plugin-title, +.plugins .paused .dashicons-warning { + color: #d63638; +} + +.plugins .paused .error-display p, +.plugins .paused .error-display code { + font-size: 90%; + color: rgba(0, 0, 0, 0.7); +} + +.plugins .resume-link { + color: #d63638; +} + +.plugin-card .update-now:before { + color: #d63638; + content: "\f463"; + display: inline-block; + font: normal 20px/1 dashicons; + margin: 3px -2px 0 5px; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.plugin-card .updating-message:before { + content: "\f463"; + animation: rotation 2s infinite linear; +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-359deg); + } +} + +.plugin-card .updated-message:before { + color: #68de7c; + content: "\f147"; +} + +.plugin-install-php h2 { + clear: both; +} + +.plugin-install-php h3 { + margin: 2.5em 0 8px; +} + +.plugin-install-php .wp-filter { + margin-bottom: 0; +} + +/* Plugin card table view */ +.plugin-group { + overflow: hidden; /* clearfix */ + margin-top: 1.5em; +} + +.plugin-group h3 { + margin-top: 0; +} + +.plugin-card { + float: right; + margin: 0 8px 16px; + width: 48.5%; + width: calc( 50% - 8px ); + background-color: #fff; + border: 1px solid #dcdcde; + box-sizing: border-box; +} + +.plugin-card:nth-child(odd) { + clear: both; + margin-right: 0; +} + +.plugin-card:nth-child(even) { + margin-left: 0; +} + +@media screen and (min-width: 1600px) and ( max-width: 2299px ) { + .plugin-card { + width: 30%; + width: calc( 33.1% - 8px ); + } + + .plugin-card:nth-child(odd) { + clear: none; + margin-right: 8px; + } + + .plugin-card:nth-child(even) { + margin-left: 8px; + } + + .plugin-card:nth-child(3n+1) { + clear: both; + margin-right: 0; + } + + .plugin-card:nth-child(3n) { + margin-left: 0; + } +} + +@media screen and (min-width: 2300px) { + .plugin-card { + width: 25%; + width: calc( 25% - 12px ); + } + + .plugin-card:nth-child(odd) { + clear: none; + margin-right: 8px; + } + + .plugin-card:nth-child(even) { + margin-left: 8px; + } + + .plugin-card:nth-child(4n+1) { + clear: both; + margin-right: 0; + } + + .plugin-card:nth-child(4n) { + margin-left: 0; + } +} + +.plugin-card-top { + position: relative; + padding: 20px 20px 10px; + min-height: 135px; +} + +div.action-links, +.plugin-action-buttons { + margin: 0; /* Override existing margins */ +} + +.plugin-card h3 { + margin: 0 0 12px 12px; + font-size: 18px; + line-height: 1.3; +} + +.plugin-card .name, +.plugin-card .desc { + margin-right: 148px; /* icon + margin */ + margin-left: 128px; /* action links + margin */ +} + +.plugin-card .action-links { + position: absolute; + top: 20px; + left: 20px; + width: 120px; +} + +.plugin-action-buttons { + clear: left; + float: left; + margin-bottom: 1em; + text-align: left; +} + +.plugin-action-buttons li { + margin-bottom: 10px; +} + +.plugin-card-bottom { + clear: both; + padding: 12px 20px; + background-color: #f6f7f7; + border-top: 1px solid #dcdcde; + overflow: hidden; +} + +.plugin-card-bottom .star-rating { + display: inline; +} + +.plugin-card-update-failed .update-now { + font-weight: 600; +} + +.plugin-card-update-failed .notice-error { + margin: 0; + padding-right: 16px; + box-shadow: 0 -1px 0 #dcdcde; +} + +.plugin-card-update-failed .plugin-card-bottom { + display: none; +} + +.plugin-card .column-rating { + line-height: 1.76923076; +} + +.plugin-card .column-rating, +.plugin-card .column-updated { + margin-bottom: 4px; +} + +.plugin-card .column-rating, +.plugin-card .column-downloaded { + float: right; + clear: right; + max-width: 180px; +} + +.plugin-card .column-updated, +.plugin-card .column-compatibility { + text-align: left; + float: left; + clear: left; + width: 65%; + width: calc( 100% - 180px ); +} + +.plugin-card .column-compatibility span:before { + font: normal 20px/.5 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: 4px; + right: -2px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +.plugin-card .column-compatibility .compatibility-incompatible:before { + content: "\f158"; + color: #d63638; +} + +.plugin-card .column-compatibility .compatibility-compatible:before { + content: "\f147"; + color: #007017; +} + +.plugin-card .notice { + margin: 20px 20px 0; +} + +.plugin-icon { + position: absolute; + top: 20px; + right: 20px; + width: 128px; + height: 128px; + margin: 0 0 20px 20px; +} + +.no-plugin-results { + color: #646970; /* same as no themes and no media */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/* ms */ +/* Background Color for Site Status */ +.wp-list-table .site-deleted, +.wp-list-table tr.site-deleted, +.wp-list-table .site-archived, +.wp-list-table tr.site-archived { + background: #fcf0f1; +} +.wp-list-table .site-spammed, +.wp-list-table tr.site-spammed, +.wp-list-table .site-mature, +.wp-list-table tr.site-mature { + background: #fcf9e8; +} + +.sites.fixed .column-lastupdated, +.sites.fixed .column-registered { + width: 20%; +} + +.sites.fixed .column-users { + width: 80px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) { + .plugin-card .action-links { + position: static; + margin-right: 148px; + width: auto; + } + + .plugin-action-buttons { + float: none; + margin: 1em 0 0; + text-align: right; + } + + .plugin-action-buttons li { + display: inline-block; + vertical-align: middle; + } + + .plugin-action-buttons li .button { + margin-left: 20px; + } + + .plugin-card h3 { + margin-left: 24px; + } + + .plugin-card .name, + .plugin-card .desc { + margin-left: 0; + } + + .plugin-card .desc p:first-of-type { + margin-top: 0; + } +} + +@media screen and (max-width: 782px) { + /* WP List Table Options & Filters */ + .tablenav { + height: auto; + } + + .tablenav.top { + margin: 20px 0 5px; + } + + .tablenav.bottom { + position: relative; + margin-top: 15px; + } + + .tablenav br { + display: none; + } + + .tablenav br.clear { + display: block; + } + + .tablenav.top .actions, + .tablenav .view-switch { + display: none; + } + + .view-switch a { + width: 36px; + height: 36px; + line-height: 2.53846153; + } + + /* Pagination */ + .tablenav.top .displaying-num { + display: none; + } + + .tablenav.bottom .displaying-num { + position: absolute; + left: 0; + top: 11px; + margin: 0; + font-size: 14px; + } + + .tablenav .tablenav-pages { + width: 100%; + text-align: center; + margin: 0 0 25px; + } + + .tablenav.bottom .tablenav-pages { + margin-top: 25px; + } + + .tablenav.top .tablenav-pages.one-page { + display: none; + } + + .tablenav.bottom .tablenav-pages.one-page { + margin-top: 15px; + height: 0; + } + + .tablenav-pages .pagination-links { + font-size: 16px; + } + + .tablenav .tablenav-pages .button, + .tablenav .tablenav-pages .tablenav-pages-navspan { + min-width: 44px; + padding: 12px 8px; + font-size: 18px; + line-height: 1; + } + + .tablenav-pages .pagination-links .current-page { + min-width: 44px; + padding: 12px 6px; + font-size: 16px; + line-height: 1.125; + } + + /* WP List Table Adjustments: General */ + .form-wrap > p { + display: none; + } + + .wp-list-table th.column-primary ~ th, + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { + display: none; + } + + .wp-list-table thead th.column-primary { + width: 100%; + } + + /* Checkboxes need to show */ + .wp-list-table tr th.check-column { + display: table-cell; + } + + .wp-list-table .check-column { + width: 2.5em; + } + + .wp-list-table .column-primary .toggle-row { + display: block; + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { + position: relative; + clear: both; + width: auto !important; /* needs to override some columns that are more specifically targeted */ + } + + .wp-list-table td.column-primary { + padding-left: 50px; /* space for toggle button */ + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { + padding: 3px 35% 3px 8px; + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before { + position: absolute; + right: 10px; /* match padding of regular table cell */ + display: block; + overflow: hidden; + width: 32%; /* leave a little space for a gutter */ + content: attr(data-colname); + white-space: nowrap; + text-overflow: ellipsis; + } + + .wp-list-table .is-expanded td:not(.hidden) { + display: block !important; + overflow: hidden; /* clearfix */ + } + + /* Special cases */ + .widefat .num, + .column-posts { + text-align: right; + } + + #comments-form .fixed .column-author, + #commentsdiv .fixed .column-author { + display: none !important; + } + + .fixed .column-comment .comment-author { + display: block; + } + + /* Comment author hidden via Screen Options */ + .fixed .column-author.hidden ~ .column-comment .comment-author { + display: none; + } + + #the-comment-list .is-expanded td { + box-shadow: none; + } + + #the-comment-list .is-expanded td:last-child { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + /* Show comment bubble as text instead */ + .post-com-count .screen-reader-text { + position: static; + -webkit-clip-path: none; + clip-path: none; + width: auto; + height: auto; + margin: 0; + } + + .column-response .post-com-count-no-comments:after, + .column-response .post-com-count-approved:after, + .column-comments .post-com-count-no-comments:after, + .column-comments .post-com-count-approved:after { + content: none; + } + + .column-response .post-com-count [aria-hidden="true"], + .column-comments .post-com-count [aria-hidden="true"] { + display: none; + } + + .column-response .post-com-count-wrapper, + .column-comments .post-com-count-wrapper { + white-space: normal; + } + + .column-response .post-com-count-wrapper > a, + .column-comments .post-com-count-wrapper > a { + display: block; + } + + .column-response .post-com-count-no-comments, + .column-response .post-com-count-approved, + .column-comments .post-com-count-no-comments, + .column-comments .post-com-count-approved { + margin-top: 0; + margin-left: 0.5em; + } + + .column-response .post-com-count-pending, + .column-comments .post-com-count-pending { + position: static; + height: auto; + min-width: 0; + padding: 0; + border: none; + border-radius: 0; + background: none; + color: #b32d2e; + font-size: inherit; + line-height: inherit; + text-align: right; + } + + .column-response .post-com-count-pending:hover, + .column-comments .post-com-count-pending:hover { + color: #d63638; + } + + .widefat thead td.check-column, + .widefat tfoot td.check-column { + padding-top: 10px; + } + + .row-actions { + margin-right: -8px; + margin-left: -8px; + padding-top: 4px; + } + + /* Make row actions more easy to select on mobile */ + body:not(.plugins-php) .row-actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + color: transparent; + } + + .row-actions span a, + .row-actions span .button-link { + display: inline-block; + padding: 4px 8px; + line-height: 1.5; + } + + .row-actions span.approve:before, + .row-actions span.unapprove:before { + content: "| "; + } + + /* Quick Edit and Bulk Edit */ + #wpbody-content .quick-edit-row-post .inline-edit-col-left, + #wpbody-content .quick-edit-row-post .inline-edit-col-right, + #wpbody-content .inline-edit-row-post .inline-edit-col-center, + #wpbody-content .quick-edit-row-page .inline-edit-col-left, + #wpbody-content .quick-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row-post .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-left, + #wpbody-content .bulk-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: none; + width: 100%; + padding: 0; + } + + #the-list .inline-edit-row .inline-edit-legend, + .inline-edit-row span.title { + font-size: 16px; + } + + .inline-edit-row p.howto { + font-size: 14px; + } + + #wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 0; + } + + #wpbody-content .quick-edit-row fieldset .inline-edit-col label, + #wpbody-content .quick-edit-row fieldset .inline-edit-group label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-col label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: none; + float: none; + margin-bottom: 5px; + } + + #wpbody .bulk-edit-row fieldset select { + display: block; + width: 100%; + max-width: none; + box-sizing: border-box; + } + + .inline-edit-row fieldset input[name=jj], + .inline-edit-row fieldset input[name=hh], + .inline-edit-row fieldset input[name=mn], + .inline-edit-row fieldset input[name=aa] { + font-size: 16px; + line-height: 2; + padding: 3px 4px; + } + + #bulk-titles .ntdelbutton, + #bulk-titles .ntdeltitle, + .inline-edit-row fieldset ul.cat-checklist label { + padding: 6px 0; + font-size: 16px; + line-height: 28px; + } + + #bulk-titles .ntdelitem { + padding-right: 37px; + } + + #bulk-titles .ntdelbutton { + width: 40px; + height: 40px; + margin: 0 -40px 0 0; + overflow: hidden; + } + + #bulk-titles .ntdelbutton:before { + font-size: 20px; + line-height: 28px; + } + + .inline-edit-row fieldset label span.title, + .inline-edit-row fieldset.inline-edit-date legend { + float: none; + } + + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { + padding: 0; + } + + .inline-edit-row fieldset label span.input-text-wrap, + .inline-edit-row fieldset .timestamp-wrap { + margin-right: 0; + } + + .inline-edit-row .inline-edit-or { + margin: 0 0 0 6px; + } + + #edithead .inside, + #commentsdiv #edithead .inside { + float: none; + text-align: right; + padding: 3px 5px; + } + + #commentsdiv #edithead .inside input, + #edithead .inside input { + width: 100%; + } + + #edithead label { + display: block; + } + + /* Updates */ + #wpbody-content .updates-table .plugin-title { + width: auto; + white-space: normal; + } + + /* Links */ + .link-manager-php #posts-filter { + margin-top: 25px; + } + + .link-manager-php .tablenav.bottom { + overflow: hidden; + } + + /* List tables that don't toggle rows */ + .comments-box .toggle-row, + .wp-list-table.plugins .toggle-row { + display: none; + } + + /* Plugin/Theme Management */ + #wpbody-content .wp-list-table.plugins td { + display: block; + width: auto; + padding: 10px 9px; /* reset from other list tables that have a label at this width */ + } + + /* Plugin description hidden via Screen Options */ + #wpbody-content .wp-list-table.plugins .desc.hidden { + display: none; + } + + #wpbody-content .wp-list-table.plugins .column-description { + padding-top: 2px; + } + + #wpbody-content .wp-list-table.plugins .plugin-title, + #wpbody-content .wp-list-table.plugins .theme-title { + padding-left: 12px; + white-space: normal; + } + + .wp-list-table.plugins .plugin-title, + .wp-list-table.plugins .theme-title { + padding-top: 13px; + padding-bottom: 4px; + } + + .plugins #the-list tr > td:not(:last-child), + .plugins #the-list .update th, + .plugins #the-list .update td, + .wp-list-table.plugins #the-list .theme-title { + box-shadow: none; + border-top: none; + } + + .plugins #the-list tr td { + border-top: none; + } + + .plugins tbody { + padding: 1px 0 0; + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td.column-description, + .plugins .plugin-update-tr:before { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td { + border-top: none; + } + + /* mimic the checkbox th */ + .plugins .plugin-update-tr:before { + content: ""; + display: table-cell; + } + + .plugins #the-list .plugin-update-tr .plugin-update { + border-right: none; + } + + .plugin-update-tr .update-message { + margin-right: 0; + } + + .plugins .active.update + .plugin-update-tr:before, + .plugins .active.updated + .plugin-update-tr:before { + background-color: #f0f6fc; + border-right: 4px solid #72aee6; + } + + .plugins .plugin-update-tr .update-message { + margin-right: 0; + } + + .wp-list-table.plugins .plugin-title strong, + .wp-list-table.plugins .theme-title strong { + font-size: 1.4em; + line-height: 1.5; + } + + .plugins tbody th.check-column { + padding: 8px 5px 0 0; + } + + .plugins thead td.check-column, + .plugins tfoot td.check-column, + .plugins .inactive th.check-column { + padding-right: 9px; + } + + /* Add New plugins page */ + table.plugin-install .column-name, + table.plugin-install .column-version, + table.plugin-install .column-rating, + table.plugin-install .column-description { + display: block; + width: auto; + } + + table.plugin-install th.column-name, + table.plugin-install th.column-version, + table.plugin-install th.column-rating, + table.plugin-install th.column-description { + display: none; + } + + table.plugin-install td.column-name strong { + font-size: 1.4em; + line-height: 1.6em; + } + + table.plugin-install #the-list td { + box-shadow: none; + } + + table.plugin-install #the-list tr { + display: block; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + .plugin-card { + margin-right: 0; + margin-left: 0; + width: 100%; + } + + table.media .column-title .has-media-icon ~ .row-actions { + margin-right: 0; + clear: both; + } +} + +@media screen and (max-width: 480px) { + .tablenav-pages .current-page { + margin: 0; + } + + .tablenav.bottom .displaying-num { + position: relative; + top: 0; + display: block; + text-align: left; + padding-bottom: 0.5em; + } + + .tablenav.bottom .tablenav-pages.one-page { + height: auto; + } + + .tablenav-pages .tablenav-paging-text { + float: right; + width: 100%; + padding-top: 0.5em; + } +} diff --git a/tools/storybook/wordpress/css/list-tables-rtl.min.css b/tools/storybook/wordpress/css/list-tables-rtl.min.css new file mode 100644 index 00000000000..f81d176c945 --- /dev/null +++ b/tools/storybook/wordpress/css/list-tables-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#646970;color:#fff;font-size:11px;line-height:1.90909090;text-align:center}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-right:8px;width:0;height:0;border-top:5px solid #646970;border-left:5px solid transparent}.column-comments a.post-com-count-approved:focus .comment-count-approved,.column-comments a.post-com-count-approved:hover .comment-count-approved,.column-response a.post-com-count-approved:focus .comment-count-approved,.column-response a.post-com-count-approved:hover .comment-count-approved{background:#2271b1}.column-comments a.post-com-count-approved:focus:after,.column-comments a.post-com-count-approved:hover:after,.column-response a.post-com-count-approved:focus:after,.column-response a.post-com-count-approved:hover:after{border-top-color:#2271b1}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;right:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#d63638;color:#fff;font-size:9px;line-height:1.88888888;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #c3c4c7}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#50575e}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .reply-submit-buttons{margin-bottom:0}#replysubmit .button{margin-left:5px}#replysubmit .spinner{float:none;margin:-4px 0 0}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;box-shadow:none}#replyerror{border-color:#dcdcde;background-color:#f6f7f7}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f6f7f7}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fcf9e8}#the-comment-list .unapproved th.check-column{border-right:4px solid #d63638}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#007017}#the-comment-list .unapprove a{color:#996800}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#f0f6fc!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-date{width:14%}.column-date span[title]{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:right}.fixed .column-comments .vers{padding-right:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:right;min-height:60px;margin:0 0 0 9px}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-right:70px}table.media .column-title .filename{margin-bottom:.2em}.media .row-actions .copy-to-clipboard-container{display:inline;position:relative}.media .row-actions .copy-to-clipboard-container .success{position:absolute;right:50%;transform:translate(50%,-100%);background:#000;color:#fff;border-radius:5px;margin:0;padding:2px 5px}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:1.38461538}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0;top:-4px;right:-8px;color:#3c434a;line-height:.5;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#3c434a;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:never}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}.locked-indicator{display:none;margin-right:6px;height:20px;width:16px}.locked-indicator-icon:before{color:#8c8f94;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.locked-info{display:none;margin-top:4px}.locked-text{vertical-align:top}.wp-locked .locked-indicator,.wp-locked .locked-info{display:block}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages .current-page{margin:0 0 0 2px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav{clear:both;height:30px;margin:6px 0 4px;padding-top:5px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;margin:0 0 9px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{display:inline-block;vertical-align:baseline;min-width:30px;min-height:30px;margin:0;padding:0 4px;font-size:16px;line-height:1.625;text-align:center}.tablenav .displaying-num{margin-left:7px}.tablenav .one-page .displaying-num{display:inline-block;margin:5px 0}.tablenav .actions{padding:0 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:1.84615384;text-decoration:none}.view-switch a:before{color:#c3c4c7;display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#787c82}.view-switch a.current:before{color:#2271b1}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-right:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;padding:0}#posts-filter fieldset legend{padding:0 1px .2em 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:right;margin-left:10px;margin-top:1px}.row-actions{color:#a7aaad;font-size:13px;padding:2px 0 0;position:relative;right:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{float:right;margin:0;padding:0 0 0 12px;width:100%;box-sizing:border-box}#wpbody-content .inline-edit-row td fieldset:last-of-type{padding-left:0}tr.inline-edit-row td{padding:0;position:relative}.inline-edit-wrapper{display:flow-root;padding:0 12px;border:1px solid transparent;border-radius:4px}.inline-edit-wrapper:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:50%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row .submit{display:flex;flex-wrap:wrap;align-items:center;clear:both;margin:0;padding:.5em 0 1em}.inline-edit-save.submit .button{margin-left:8px}.inline-edit-save .spinner{float:none;margin:0}.inline-edit-row .notice-error{box-sizing:border-box;min-width:100%;margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em 0;line-height:2.5;font-weight:600}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;vertical-align:baseline;line-height:2}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:right;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-right:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-left:.5em}.inline-edit-row .inline-edit-or{margin:.2em 0 .2em 6px;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-left:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{vertical-align:middle;text-align:center;padding:0 4px}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}#bulk-titles-list,#bulk-titles-list li,.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row fieldset ul.cat-checklist input{margin-top:-1px;margin-right:3px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles,ul.cat-checklist{height:14em;border:1px solid #ddd;margin:0 0 5px;padding:.2em 5px;overflow-y:scroll}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{display:inline-block;margin:0;padding:3px 0;line-height:20px;vertical-align:top}#bulk-titles .ntdelitem{padding-right:23px}#bulk-titles .ntdelbutton{width:26px;height:26px;margin:0 -26px 0 0;text-align:center;border-radius:3px}#bulk-titles .ntdelbutton:before{display:inline-block;vertical-align:top}#bulk-titles .ntdelbutton:focus{box-shadow:0 0 0 2px #3582c4;outline:2px solid transparent;outline-offset:0}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5}.plugins .desc ol,.plugins .desc ul{margin:0 2em 0 0}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f0f6fc}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #dcdcde}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #72aee6}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-left:12px;white-space:nowrap}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:right;padding:0 0 0 10px;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#f0f0f1;box-shadow:inset 0 0 10px rgba(167,170,173,.15);font-size:60px;color:#c3c4c7}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .column-auto-updates{width:14.2em}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .row-actions{white-space:normal;min-width:12em}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 40px 15px 20px}.plugins .notice p{margin:.5em 0}.plugins .plugin-description a,.plugins .plugin-update a,.updates-table .plugin-title a{text-decoration:underline}.plugins tr.paused th.check-column{border-right:4px solid #d63638}.plugins tr.paused td,.plugins tr.paused th{background-color:#f6f7f7}.plugins .paused .dashicons-warning,.plugins tr.paused .plugin-title{color:#d63638}.plugins .paused .error-display code,.plugins .paused .error-display p{font-size:90%;color:rgba(0,0,0,.7)}.plugins .resume-link{color:#d63638}.plugin-card .update-now:before{color:#d63638;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}}.plugin-card .updated-message:before{color:#68de7c;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:right;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #dcdcde;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-right:0}.plugin-card:nth-child(even){margin-left:0}@media screen and (min-width:1600px) and (max-width:2299px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(even){margin-left:8px}.plugin-card:nth-child(3n+1){clear:both;margin-right:0}.plugin-card:nth-child(3n){margin-left:0}}@media screen and (min-width:2300px){.plugin-card{width:25%;width:calc(25% - 12px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(even){margin-left:8px}.plugin-card:nth-child(4n+1){clear:both;margin-right:0}.plugin-card:nth-child(4n){margin-left:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:128px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#f6f7f7;border-top:1px solid #dcdcde;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;box-shadow:0 -1px 0 #dcdcde}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:1.76923076}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;right:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.plugin-card .column-compatibility .compatibility-incompatible:before{content:"\f158";color:#d63638}.plugin-card .column-compatibility .compatibility-compatible:before{content:"\f147";color:#007017}.plugin-card .notice{margin:20px 20px 0}.plugin-icon{position:absolute;top:20px;right:20px;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-archived,.wp-list-table .site-deleted,.wp-list-table tr.site-archived,.wp-list-table tr.site-deleted{background:#fcf0f1}.wp-list-table .site-mature,.wp-list-table .site-spammed,.wp-list-table tr.site-mature,.wp-list-table tr.site-spammed{background:#fcf9e8}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card h3{margin-left:24px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:2.53846153}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;left:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .tablenav-pages.one-page{margin-top:15px;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{min-width:44px;padding:12px 8px;font-size:18px;line-height:1}.tablenav-pages .pagination-links .current-page{min-width:44px;padding:12px 6px;font-size:16px;line-height:1.125}.form-wrap>p{display:none}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell}.wp-list-table .check-column{width:2.5em}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}.fixed .column-author.hidden~.column-comment .comment-author{display:none}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-left:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#b32d2e;font-size:inherit;line-height:inherit;text-align:right}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#d63638}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.row-actions{margin-right:-8px;margin-left:-8px;padding-top:4px}body:not(.plugins-php) .row-actions{display:flex;flex-wrap:wrap;gap:8px;color:transparent}.row-actions span .button-link,.row-actions span a{display:inline-block;padding:4px 8px;line-height:1.5}.row-actions span.approve:before,.row-actions span.unapprove:before{content:"| "}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%;padding:0}#the-list .inline-edit-row .inline-edit-legend,.inline-edit-row span.title{font-size:16px}.inline-edit-row p.howto{font-size:14px}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:0}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:16px;line-height:2;padding:3px 4px}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{padding:6px 0;font-size:16px;line-height:28px}#bulk-titles .ntdelitem{padding-right:37px}#bulk-titles .ntdelbutton{width:40px;height:40px;margin:0 -40px 0 0;overflow:hidden}#bulk-titles .ntdelbutton:before{font-size:20px;line-height:28px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .desc.hidden{display:none}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-left:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins #the-list .plugin-update-tr .plugin-update{border-right:none}.plugin-update-tr .update-message{margin-right:0}.plugins .active.update+.plugin-update-tr:before,.plugins .active.updated+.plugin-update-tr:before{background-color:#f0f6fc;border-right:4px solid #72aee6}.plugins .plugin-update-tr .update-message{margin-right:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}.plugins tbody th.check-column{padding:8px 5px 0 0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:9px}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;margin-left:0;width:100%}table.media .column-title .has-media-icon~.row-actions{margin-right:0;clear:both}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav.bottom .displaying-num{position:relative;top:0;display:block;text-align:left;padding-bottom:.5em}.tablenav.bottom .tablenav-pages.one-page{height:auto}.tablenav-pages .tablenav-paging-text{float:right;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/list-tables.css b/tools/storybook/wordpress/css/list-tables.css new file mode 100644 index 00000000000..84e390d83eb --- /dev/null +++ b/tools/storybook/wordpress/css/list-tables.css @@ -0,0 +1,2246 @@ +.response-links { + display: block; + margin-bottom: 1em; +} + +.response-links a { + display: block; +} + +.response-links a.comments-edit-item-link { + font-weight: 600; +} + +.response-links a.comments-view-item-link { + font-size: 12px; +} + +.post-com-count-wrapper strong { + font-weight: 400; +} + +.comments-view-item-link { + display: inline-block; + clear: both; +} + +.column-response .post-com-count-wrapper, +.column-comments .post-com-count-wrapper { + white-space: nowrap; + word-wrap: normal; +} + +/* comments bubble common */ +.column-response .post-com-count, +.column-comments .post-com-count { + display: inline-block; + vertical-align: top; +} + +/* comments bubble approved */ +.column-response .post-com-count-no-comments, +.column-response .post-com-count-approved, +.column-comments .post-com-count-no-comments, +.column-comments .post-com-count-approved { + margin-top: 5px; +} + +.column-response .comment-count-no-comments, +.column-response .comment-count-approved, +.column-comments .comment-count-no-comments, +.column-comments .comment-count-approved { + box-sizing: border-box; + display: block; + padding: 0 8px; + min-width: 24px; + height: 2em; + border-radius: 5px; + background-color: #646970; + color: #fff; + font-size: 11px; + line-height: 1.90909090; + text-align: center; +} + +.column-response .post-com-count-no-comments:after, +.column-response .post-com-count-approved:after, +.column-comments .post-com-count-no-comments:after, +.column-comments .post-com-count-approved:after { + content: ""; + display: block; + margin-left: 8px; + width: 0; + height: 0; + border-top: 5px solid #646970; + border-right: 5px solid transparent; +} + +.column-response a.post-com-count-approved:hover .comment-count-approved, +.column-response a.post-com-count-approved:focus .comment-count-approved, +.column-comments a.post-com-count-approved:hover .comment-count-approved, +.column-comments a.post-com-count-approved:focus .comment-count-approved { + background: #2271b1; +} + +.column-response a.post-com-count-approved:hover:after, +.column-response a.post-com-count-approved:focus:after, +.column-comments a.post-com-count-approved:hover:after, +.column-comments a.post-com-count-approved:focus:after { + border-top-color: #2271b1; +} + +/* @todo: consider to use a single rule for these counters and the admin menu counters. */ +.column-response .post-com-count-pending, +.column-comments .post-com-count-pending { + position: relative; + left: -3px; + padding: 0 5px; + min-width: 7px; + height: 17px; + border: 2px solid #fff; + border-radius: 11px; + background: #d63638; + color: #fff; + font-size: 9px; + line-height: 1.88888888; + text-align: center; +} + +.column-response .post-com-count-no-pending, +.column-comments .post-com-count-no-pending { + display: none; +} + +/* comments */ + +.commentlist li { + padding: 1em 1em .2em; + margin: 0; + border-bottom: 1px solid #c3c4c7; +} + +.commentlist li li { + border-bottom: 0; + padding: 0; +} + +.commentlist p { + padding: 0; + margin: 0 0 .8em; +} + +#submitted-on, +.submitted-on { + color: #50575e; +} + +/* reply to comments */ +#replyrow td { + padding: 2px; +} + +#replysubmit { + margin: 0; + padding: 5px 7px 10px; + overflow: hidden; +} + +#replysubmit .reply-submit-buttons { + margin-bottom: 0; +} + +#replysubmit .button { + margin-right: 5px; +} + +#replysubmit .spinner { + float: none; + margin: -4px 0 0; +} + +#replyrow.inline-edit-row fieldset.comment-reply { + font-size: inherit; + line-height: inherit; +} + +#replyrow legend { + margin: 0; + padding: .2em 5px 0; + font-size: 13px; + line-height: 1.4; + font-weight: 600; +} + +#replyrow.inline-edit-row label { + display: inline; + vertical-align: baseline; + line-height: inherit; +} + +#edithead .inside, +#commentsdiv #edithead .inside { + float: left; + padding: 3px 0 2px 5px; + margin: 0; + text-align: center; +} + +#edithead .inside input { + width: 180px; +} + +#edithead label { + padding: 2px 0; +} + +#replycontainer { + padding: 5px; +} + +#replycontent { + height: 120px; + box-shadow: none; +} + +#replyerror { + border-color: #dcdcde; + background-color: #f6f7f7; +} + +/* @todo: is this used? */ +.commentlist .avatar { + vertical-align: text-top; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f6f7f7; +} + +#the-comment-list .unapproved th, +#the-comment-list .unapproved td { + background-color: #fcf9e8; +} + +#the-comment-list .unapproved th.check-column { + border-left: 4px solid #d63638; +} + +#the-comment-list .unapproved th.check-column input { + margin-left: 4px; +} + +#the-comment-list .approve a { + color: #007017; +} + +#the-comment-list .unapprove a { + color: #996800; +} + +#the-comment-list th, +#the-comment-list td { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +#the-comment-list tr:last-child th, +#the-comment-list tr:last-child td { + box-shadow: none; +} + +#the-comment-list tr.unapproved + tr.approved th, +#the-comment-list tr.unapproved + tr.approved td { + border-top: 1px solid rgba(0, 0, 0, 0.03); +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #f0f6fc !important; +} + +th .comment-grey-bubble { + height: 16px; + width: 16px; +} + +th .comment-grey-bubble:before { + content: "\f101"; + font: normal 20px/.5 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: 4px; + left: -4px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} + +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} + +.fixed .column-posts, +.fixed .column-parent, +.fixed .column-links, +.fixed .column-author, +.fixed .column-format { + width: 10%; +} + +.fixed .column-date { + width: 14%; +} + +.column-date span[title] { + -webkit-text-decoration: dotted underline; + text-decoration: dotted underline; +} + +.fixed .column-posts { + width: 74px; +} + +.fixed .column-role, +.fixed .column-posts { + -webkit-hyphens: auto; + hyphens: auto; +} + +.fixed .column-comment .comment-author { + display: none; +} + +.fixed .column-response, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + width: 15%; +} + +.fixed .column-slug { + width: 25%; +} + +.fixed .column-locations { + width: 35%; +} + +.fixed .column-comments { + width: 5.5em; + padding: 8px 0; + text-align: left; +} + +.fixed .column-comments .vers { + padding-left: 3px; +} + +td.column-title strong, +td.plugin-title strong { + display: block; + margin-bottom: .2em; + font-size: 14px; +} + +td.column-title p, +td.plugin-title p { + margin: 6px 0; +} + +/* Media file column */ +table.media .column-title .media-icon { + float: left; + min-height: 60px; + margin: 0 9px 0 0; +} + +table.media .column-title .media-icon img { + max-width: 60px; + height: auto; + vertical-align: top; /* Remove descender white-space. */ +} + +table.media .column-title .has-media-icon ~ .row-actions { + margin-left: 70px; /* 60px image + margin */ +} + +table.media .column-title .filename { + margin-bottom: 0.2em; +} + +/* Media Copy to clipboard row action */ +.media .row-actions .copy-to-clipboard-container { + display: inline; + position: relative; +} + +.media .row-actions .copy-to-clipboard-container .success { + position: absolute; + left: 50%; + transform: translate(-50%, -100%); + background: #000; + color: #fff; + border-radius: 5px; + margin: 0; + padding: 2px 5px; +} + +/* @todo: pick a consistent list table selector */ +.wp-list-table a { + transition: none; +} + +#the-list tr:last-child td, +#the-list tr:last-child th { + border-bottom: none !important; + box-shadow: none; +} + +#comments-form .fixed .column-author { + width: 20%; +} + +#commentsdiv.postbox .inside { + margin: 0; + padding: 0; +} + +#commentsdiv .inside .row-actions { + line-height: 1.38461538; +} + +#commentsdiv .inside .column-author { + width: 25%; +} + +#commentsdiv .column-comment p { + margin: 0.6em 0; + padding: 0; +} + +#commentsdiv #replyrow td { + padding: 0; +} + +#commentsdiv p { + padding: 8px 10px; + margin: 0; +} + +#commentsdiv .comments-box { + border: 0 none; +} + +#commentsdiv .comments-box thead th, +#commentsdiv .comments-box thead td { + background: transparent; + padding: 0 7px 4px; +} + +#commentsdiv .comments-box tr:last-child td { + border-bottom: 0 none; +} + +#commentsdiv #edithead .inside input { + width: 160px; +} + +.sorting-indicator { + display: block; + visibility: hidden; + width: 10px; + height: 4px; + margin-top: 8px; + margin-left: 7px; +} + +.sorting-indicator:before { + content: "\f142"; + font: normal 20px/1 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: -4px; + left: -8px; + color: #3c434a; + line-height: 0.5; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +.column-comments .sorting-indicator:before { + top: 0; + left: -10px; +} + +th.sorted.asc .sorting-indicator:before, +th.desc:hover span.sorting-indicator:before, +th.desc a:focus span.sorting-indicator:before { + content: "\f142"; +} + +th.sorted.desc .sorting-indicator:before, +th.asc:hover span.sorting-indicator:before, +th.asc a:focus span.sorting-indicator:before { + content: "\f140"; +} + +.wp-list-table .toggle-row { + position: absolute; + right: 8px; + top: 10px; + display: none; + padding: 0; + width: 40px; + height: 40px; + border: none; + outline: none; + background: transparent; +} + +.wp-list-table .toggle-row:hover { + cursor: pointer; +} + +.wp-list-table .toggle-row:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.wp-list-table .toggle-row:active { + box-shadow: none; +} + +.wp-list-table .toggle-row:before { + position: absolute; + top: -5px; + left: 10px; + border-radius: 50%; + display: block; + padding: 1px 2px 1px 0; + color: #3c434a; /* same as table headers sort arrows */ + content: "\f140"; + font: normal 20px/1 dashicons; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + speak: never; +} + +.wp-list-table .is-expanded .toggle-row:before { + content: "\f142"; +} + +.locked-indicator { + display: none; + margin-left: 6px; + height: 20px; + width: 16px; +} + +.locked-indicator-icon:before { + color: #8c8f94; + content: "\f160"; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.locked-info { + display: none; + margin-top: 4px; +} + +.locked-text { + vertical-align: top; +} + +.wp-locked .locked-indicator, +.wp-locked .locked-info { + display: block; +} + +tr.wp-locked .check-column label, +tr.wp-locked .check-column input[type="checkbox"], +tr.wp-locked .row-actions .inline, +tr.wp-locked .row-actions .trash { + display: none; +} + +.fixed .column-comments .sorting-indicator { + margin-top: 3px; +} + +#menu-locations-wrap .widefat { + width: 60%; +} + +.widefat th.sortable, +.widefat th.sorted { + padding: 0; +} + +th.sortable a, +th.sorted a { + display: block; + overflow: hidden; + padding: 8px; +} + +.fixed .column-comments.sortable a, +.fixed .column-comments.sorted a { + padding: 8px 0; +} + +th.sortable a span, +th.sorted a span { + float: left; + cursor: pointer; +} + +th.sorted .sorting-indicator, +th.desc:hover span.sorting-indicator, +th.desc a:focus span.sorting-indicator, +th.asc:hover span.sorting-indicator, +th.asc a:focus span.sorting-indicator { + visibility: visible; +} + +.tablenav-pages .current-page { + margin: 0 2px 0 0; + font-size: 13px; + text-align: center; +} + +.tablenav .total-pages { + margin-right: 2px; +} + +.tablenav #table-paging { + margin-left: 2px; +} + +.tablenav { + clear: both; + height: 30px; + margin: 6px 0 4px; + padding-top: 5px; + vertical-align: middle; +} + +.tablenav.themes { + max-width: 98%; +} + +.tablenav .tablenav-pages { + float: right; + margin: 0 0 9px; +} + +.tablenav .no-pages, +.tablenav .one-page .pagination-links { + display: none; +} + +.tablenav .tablenav-pages .button, +.tablenav .tablenav-pages .tablenav-pages-navspan { + display: inline-block; + vertical-align: baseline; + min-width: 30px; + min-height: 30px; + margin: 0; + padding: 0 4px; + font-size: 16px; + line-height: 1.625; /* 26px */ + text-align: center; +} + +.tablenav .displaying-num { + margin-right: 7px; +} + +.tablenav .one-page .displaying-num { + display: inline-block; + margin: 5px 0; +} + +.tablenav .actions { + padding: 0 8px 0 0; +} + +.wp-filter .actions { + display: inline-block; + vertical-align: middle; +} + +.tablenav .delete { + margin-right: 20px; +} + +/* This view-switcher is still used on multisite. */ +.tablenav .view-switch { + float: right; + margin: 0 5px; + padding-top: 3px; +} + +.wp-filter .view-switch { + display: inline-block; + vertical-align: middle; + padding: 12px 0; + margin: 0 8px 0 2px; +} + +.media-toolbar.wp-filter .view-switch { + margin: 0 12px 0 2px; +} + +.view-switch a { + float: left; + width: 28px; + height: 28px; + text-align: center; + line-height: 1.84615384; + text-decoration: none; +} + +.view-switch a:before { + color: #c3c4c7; + display: inline-block; + font: normal 20px/1 dashicons; + speak: never; + vertical-align: middle; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.view-switch a:hover:before, +.view-switch a:focus:before { + color: #787c82; +} + +.view-switch a.current:before { + color: #2271b1; +} + +.view-switch .view-list:before { + content: "\f163"; +} + +.view-switch .view-excerpt:before { + content: "\f164"; +} + +.view-switch .view-grid:before { + content: "\f509"; +} + +.filter { + float: left; + margin: -5px 0 0 10px; +} + +.filter .subsubsub { + margin-left: -10px; + margin-top: 13px; +} +.screen-per-page { + width: 4em; +} + +#posts-filter .wp-filter { + margin-bottom: 0; +} + +#posts-filter fieldset { + float: left; + margin: 0 1.5ex 1em 0; + padding: 0; +} + +#posts-filter fieldset legend { + padding: 0 0 .2em 1px; +} + +p.pagenav { + margin: 0; + display: inline; +} + +.pagenav span { + font-weight: 600; + margin: 0 6px; +} + +.row-title { + font-size: 14px !important; + font-weight: 600; +} + +.column-comment .comment-author { + margin-bottom: 0.6em; +} + +.column-author img, +.column-username img, +.column-comment .comment-author img { + float: left; + margin-right: 10px; + margin-top: 1px; +} + +.row-actions { + color: #a7aaad; + font-size: 13px; + padding: 2px 0 0; + position: relative; + left: -9999em; +} + +/* ticket #34150 */ +.rtl .row-actions a { + display: inline-block; +} + +.row-actions .network_only, +.row-actions .network_active { + color: #000; +} + +.no-js .row-actions, +tr:hover .row-actions, +.mobile .row-actions, +.row-actions.visible, +.comment-item:hover .row-actions { + position: static; +} + +/* deprecated */ +.row-actions-visible { + padding: 2px 0 0; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ + +#wpbody-content .inline-edit-row fieldset { + float: left; + margin: 0; + padding: 0 12px 0 0; + width: 100%; + box-sizing: border-box; +} + +#wpbody-content .inline-edit-row td fieldset:last-of-type { + padding-right: 0; +} + +tr.inline-edit-row td { + padding: 0; + /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ + position: relative; +} + +.inline-edit-wrapper { + display: flow-root; + padding: 0 12px; + border: 1px solid transparent; + border-radius: 4px; +} + +.inline-edit-wrapper:focus { + border-color: #2271b1; + box-shadow: 0 0 0 1px #2271b1; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 40%; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-right { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 20%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 50%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 50%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: right; + width: 69%; +} + +#wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 27px; +} + +.inline-edit-row fieldset .inline-edit-group { + clear: both; + line-height: 2.5; +} + +.inline-edit-row .submit { + display: flex; + flex-wrap: wrap; + align-items: center; + clear: both; + margin: 0; + padding: 0.5em 0 1em; +} + +.inline-edit-save.submit .button { + margin-right: 8px; +} + +.inline-edit-save .spinner { + float: none; + margin: 0; +} + +.inline-edit-row .notice-error { + box-sizing: border-box; + min-width: 100%; + margin-top: 1em; +} + +.inline-edit-row .notice-error .error { + margin: 0.5em 0; + padding: 2px; +} + +/* Positioning */ + +/* Needs higher specificity for the padding */ +#the-list .inline-edit-row .inline-edit-legend { + margin: 0; + padding: 0.2em 0; + line-height: 2.5; + font-weight: 600; +} + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + margin: 0; + padding: 0; +} + +.inline-edit-row fieldset label, +.inline-edit-row fieldset span.inline-edit-categories-label { + display: block; + margin: .2em 0; + line-height: 2.5; +} + +.inline-edit-row fieldset.inline-edit-date label { + display: inline-block; + margin: 0; + vertical-align: baseline; + line-height: 2; +} + +.inline-edit-row fieldset label.inline-edit-tags { + margin-top: 0; +} + +.inline-edit-row fieldset label.inline-edit-tags span.title { + margin: .2em 0; + width: auto; +} + +.inline-edit-row fieldset label span.title, +.inline-edit-row fieldset.inline-edit-date legend { + display: block; + float: left; + width: 6em; + line-height: 2.5; +} + +#posts-filter fieldset.inline-edit-date legend { + padding: 0; +} + +.inline-edit-row fieldset label span.input-text-wrap, +.inline-edit-row fieldset .timestamp-wrap { + display: block; + margin-left: 6em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-right: 0.5em; +} + +.inline-edit-row .inline-edit-or { + margin: .2em 6px .2em 0; + line-height: 2.5; +} + +.inline-edit-row .input-text-wrap input[type=text] { + width: 100%; +} + +.inline-edit-row fieldset label input[type=checkbox] { + vertical-align: middle; +} + +.inline-edit-row fieldset label textarea { + width: 100%; + height: 4em; + vertical-align: top; +} + +#wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: 50%; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-right: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + +/* Styling */ +.inline-edit-row .inline-edit-legend { + text-transform: uppercase; +} + +/* Specific Elements */ +.inline-edit-row fieldset .inline-edit-date { + float: left; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn], +.inline-edit-row fieldset input[name=aa] { + vertical-align: middle; + text-align: center; + padding: 0 4px; +} + +.inline-edit-row fieldset label input.inline-edit-password-input { + width: 8em; +} + +#bulk-titles-list, +#bulk-titles-list li, +.inline-edit-row fieldset ul.cat-checklist li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; + position: relative; /* RTL fix, #WP27629 */ +} + +.inline-edit-row fieldset ul.cat-checklist input { + margin-top: -1px; + margin-left: 3px; +} + +.inline-edit-row fieldset label input.inline-edit-menu-order-input { + width: 3em; +} + +.inline-edit-row fieldset label input.inline-edit-slug-input { + width: 75%; +} + +.inline-edit-row #post_parent, +.inline-edit-row select[name="page_template"] { + max-width: 80%; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: left; +} + +#bulk-titles, +ul.cat-checklist { + height: 14em; + border: 1px solid #ddd; + margin: 0 0 5px; + padding: 0.2em 5px; + overflow-y: scroll; +} + +#bulk-titles .ntdelbutton, +#bulk-titles .ntdeltitle, +.inline-edit-row fieldset ul.cat-checklist label { + display: inline-block; + margin: 0; + padding: 3px 0; + line-height: 20px; + vertical-align: top; +} + +#bulk-titles .ntdelitem { + padding-left: 23px; +} + +#bulk-titles .ntdelbutton { + width: 26px; + height: 26px; + margin: 0 0 0 -26px; + text-align: center; + border-radius: 3px; +} + +#bulk-titles .ntdelbutton:before { + display: inline-block; + vertical-align: top; +} + +#bulk-titles .ntdelbutton:focus { + box-shadow: 0 0 0 2px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + /* Reset inherited offset from Gutenberg */ + outline-offset: 0; +} + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins tbody th.check-column, +.plugins tbody { + padding: 8px 0 0 2px; +} + +.plugins tbody th.check-column input[type=checkbox] { + margin-top: 4px; +} + +.updates-table .plugin-title p { + margin-top: 0; +} + +.plugins thead td.check-column, +.plugins tfoot td.check-column, +.plugins .inactive th.check-column { + padding-left: 6px; +} + +.plugins, +.plugins th, +.plugins td { + color: #000; +} + +.plugins tr { + background: #fff; +} + +.plugins p { + margin: 0 4px; + padding: 0; +} + +.plugins .desc p { + margin: 0 0 8px; +} + +.plugins td.desc { + line-height: 1.5; +} + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 0 0 2em; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions { + font-size: 13px; + padding: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + padding: 10px 9px; +} + +.plugins .active td, +.plugins .active th { + background-color: #f0f6fc; +} + +.plugins .update th, +.plugins .update td { + border-bottom: 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th, +.plugin-install #the-list td, +.upgrade .plugins td, +.upgrade .plugins th { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.plugins tr.active.plugin-update-tr + tr.inactive th, +.plugins tr.active.plugin-update-tr + tr.inactive td, +.plugins tr.active + tr.inactive th, +.plugins tr.active + tr.inactive td { + border-top: 1px solid rgba(0, 0, 0, 0.03); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02), inset 0 -1px 0 #dcdcde; +} + +.plugins .update td, +.plugins .update th, +.upgrade .plugins tr:last-of-type td, +.upgrade .plugins tr:last-of-type th, +.plugins tr.active + tr.inactive.update th, +.plugins tr.active + tr.inactive.update td, +.plugins .updated td, +.plugins .updated th, +.plugins tr.active + tr.inactive.updated th, +.plugins tr.active + tr.inactive.updated td { + box-shadow: none; +} + +.plugins .active th.check-column, +.plugin-update-tr.active td { + border-left: 4px solid #72aee6; +} + +.wp-list-table.plugins .plugin-title, +.wp-list-table.plugins .theme-title { + padding-right: 12px; + white-space: nowrap; +} + +.plugins .plugin-title img, +.plugins .plugin-title .dashicons { + float: left; + padding: 0 10px 0 0; + width: 64px; + height: 64px; +} + +.plugins .plugin-title .dashicons:before { + padding: 2px; + background-color: #f0f0f1; + box-shadow: inset 0 0 10px rgba(167, 170, 173, 0.15); + font-size: 60px; + color: #c3c4c7; +} + +#update-themes-table .plugin-title img, +#update-themes-table .plugin-title .dashicons { + width: 85px; +} + +.plugins .column-auto-updates { + width: 14.2em; +} + +.plugins .inactive .plugin-title strong { + font-weight: 400; +} + +.plugins .second, +.plugins .row-actions { + padding: 0 0 5px; +} + +.plugins .row-actions { + white-space: normal; + min-width: 12em; +} + +.plugins .update .second, +.plugins .update .row-actions, +.plugins .updated .second, +.plugins .updated .row-actions { + padding-bottom: 0; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugins .plugin-update-tr .plugin-update { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + overflow: hidden; /* clearfix */ + padding: 0; +} + +.plugins .plugin-update-tr .notice, +.plugins .plugin-update-tr div[class="update-message"] { /* back-compat for pre-4.6 */ + margin: 5px 20px 15px 40px; +} + +.plugins .notice p { + margin: 0.5em 0; +} + +.plugins .plugin-description a, +.plugins .plugin-update a, +.updates-table .plugin-title a { + text-decoration: underline; +} + +.plugins tr.paused th.check-column { + border-left: 4px solid #d63638; +} + +.plugins tr.paused th, +.plugins tr.paused td { + background-color: #f6f7f7; +} + +.plugins tr.paused .plugin-title, +.plugins .paused .dashicons-warning { + color: #d63638; +} + +.plugins .paused .error-display p, +.plugins .paused .error-display code { + font-size: 90%; + color: rgba(0, 0, 0, 0.7); +} + +.plugins .resume-link { + color: #d63638; +} + +.plugin-card .update-now:before { + color: #d63638; + content: "\f463"; + display: inline-block; + font: normal 20px/1 dashicons; + margin: 3px 5px 0 -2px; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.plugin-card .updating-message:before { + content: "\f463"; + animation: rotation 2s infinite linear; +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} + +.plugin-card .updated-message:before { + color: #68de7c; + content: "\f147"; +} + +.plugin-install-php h2 { + clear: both; +} + +.plugin-install-php h3 { + margin: 2.5em 0 8px; +} + +.plugin-install-php .wp-filter { + margin-bottom: 0; +} + +/* Plugin card table view */ +.plugin-group { + overflow: hidden; /* clearfix */ + margin-top: 1.5em; +} + +.plugin-group h3 { + margin-top: 0; +} + +.plugin-card { + float: left; + margin: 0 8px 16px; + width: 48.5%; + width: calc( 50% - 8px ); + background-color: #fff; + border: 1px solid #dcdcde; + box-sizing: border-box; +} + +.plugin-card:nth-child(odd) { + clear: both; + margin-left: 0; +} + +.plugin-card:nth-child(even) { + margin-right: 0; +} + +@media screen and (min-width: 1600px) and ( max-width: 2299px ) { + .plugin-card { + width: 30%; + width: calc( 33.1% - 8px ); + } + + .plugin-card:nth-child(odd) { + clear: none; + margin-left: 8px; + } + + .plugin-card:nth-child(even) { + margin-right: 8px; + } + + .plugin-card:nth-child(3n+1) { + clear: both; + margin-left: 0; + } + + .plugin-card:nth-child(3n) { + margin-right: 0; + } +} + +@media screen and (min-width: 2300px) { + .plugin-card { + width: 25%; + width: calc( 25% - 12px ); + } + + .plugin-card:nth-child(odd) { + clear: none; + margin-left: 8px; + } + + .plugin-card:nth-child(even) { + margin-right: 8px; + } + + .plugin-card:nth-child(4n+1) { + clear: both; + margin-left: 0; + } + + .plugin-card:nth-child(4n) { + margin-right: 0; + } +} + +.plugin-card-top { + position: relative; + padding: 20px 20px 10px; + min-height: 135px; +} + +div.action-links, +.plugin-action-buttons { + margin: 0; /* Override existing margins */ +} + +.plugin-card h3 { + margin: 0 12px 12px 0; + font-size: 18px; + line-height: 1.3; +} + +.plugin-card .name, +.plugin-card .desc { + margin-left: 148px; /* icon + margin */ + margin-right: 128px; /* action links + margin */ +} + +.plugin-card .action-links { + position: absolute; + top: 20px; + right: 20px; + width: 120px; +} + +.plugin-action-buttons { + clear: right; + float: right; + margin-bottom: 1em; + text-align: right; +} + +.plugin-action-buttons li { + margin-bottom: 10px; +} + +.plugin-card-bottom { + clear: both; + padding: 12px 20px; + background-color: #f6f7f7; + border-top: 1px solid #dcdcde; + overflow: hidden; +} + +.plugin-card-bottom .star-rating { + display: inline; +} + +.plugin-card-update-failed .update-now { + font-weight: 600; +} + +.plugin-card-update-failed .notice-error { + margin: 0; + padding-left: 16px; + box-shadow: 0 -1px 0 #dcdcde; +} + +.plugin-card-update-failed .plugin-card-bottom { + display: none; +} + +.plugin-card .column-rating { + line-height: 1.76923076; +} + +.plugin-card .column-rating, +.plugin-card .column-updated { + margin-bottom: 4px; +} + +.plugin-card .column-rating, +.plugin-card .column-downloaded { + float: left; + clear: left; + max-width: 180px; +} + +.plugin-card .column-updated, +.plugin-card .column-compatibility { + text-align: right; + float: right; + clear: right; + width: 65%; + width: calc( 100% - 180px ); +} + +.plugin-card .column-compatibility span:before { + font: normal 20px/.5 dashicons; + speak: never; + display: inline-block; + padding: 0; + top: 4px; + left: -2px; + position: relative; + vertical-align: top; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: none !important; + color: #3c434a; +} + +.plugin-card .column-compatibility .compatibility-incompatible:before { + content: "\f158"; + color: #d63638; +} + +.plugin-card .column-compatibility .compatibility-compatible:before { + content: "\f147"; + color: #007017; +} + +.plugin-card .notice { + margin: 20px 20px 0; +} + +.plugin-icon { + position: absolute; + top: 20px; + left: 20px; + width: 128px; + height: 128px; + margin: 0 20px 20px 0; +} + +.no-plugin-results { + color: #646970; /* same as no themes and no media */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/* ms */ +/* Background Color for Site Status */ +.wp-list-table .site-deleted, +.wp-list-table tr.site-deleted, +.wp-list-table .site-archived, +.wp-list-table tr.site-archived { + background: #fcf0f1; +} +.wp-list-table .site-spammed, +.wp-list-table tr.site-spammed, +.wp-list-table .site-mature, +.wp-list-table tr.site-mature { + background: #fcf9e8; +} + +.sites.fixed .column-lastupdated, +.sites.fixed .column-registered { + width: 20%; +} + +.sites.fixed .column-users { + width: 80px; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) { + .plugin-card .action-links { + position: static; + margin-left: 148px; + width: auto; + } + + .plugin-action-buttons { + float: none; + margin: 1em 0 0; + text-align: left; + } + + .plugin-action-buttons li { + display: inline-block; + vertical-align: middle; + } + + .plugin-action-buttons li .button { + margin-right: 20px; + } + + .plugin-card h3 { + margin-right: 24px; + } + + .plugin-card .name, + .plugin-card .desc { + margin-right: 0; + } + + .plugin-card .desc p:first-of-type { + margin-top: 0; + } +} + +@media screen and (max-width: 782px) { + /* WP List Table Options & Filters */ + .tablenav { + height: auto; + } + + .tablenav.top { + margin: 20px 0 5px; + } + + .tablenav.bottom { + position: relative; + margin-top: 15px; + } + + .tablenav br { + display: none; + } + + .tablenav br.clear { + display: block; + } + + .tablenav.top .actions, + .tablenav .view-switch { + display: none; + } + + .view-switch a { + width: 36px; + height: 36px; + line-height: 2.53846153; + } + + /* Pagination */ + .tablenav.top .displaying-num { + display: none; + } + + .tablenav.bottom .displaying-num { + position: absolute; + right: 0; + top: 11px; + margin: 0; + font-size: 14px; + } + + .tablenav .tablenav-pages { + width: 100%; + text-align: center; + margin: 0 0 25px; + } + + .tablenav.bottom .tablenav-pages { + margin-top: 25px; + } + + .tablenav.top .tablenav-pages.one-page { + display: none; + } + + .tablenav.bottom .tablenav-pages.one-page { + margin-top: 15px; + height: 0; + } + + .tablenav-pages .pagination-links { + font-size: 16px; + } + + .tablenav .tablenav-pages .button, + .tablenav .tablenav-pages .tablenav-pages-navspan { + min-width: 44px; + padding: 12px 8px; + font-size: 18px; + line-height: 1; + } + + .tablenav-pages .pagination-links .current-page { + min-width: 44px; + padding: 12px 6px; + font-size: 16px; + line-height: 1.125; + } + + /* WP List Table Adjustments: General */ + .form-wrap > p { + display: none; + } + + .wp-list-table th.column-primary ~ th, + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { + display: none; + } + + .wp-list-table thead th.column-primary { + width: 100%; + } + + /* Checkboxes need to show */ + .wp-list-table tr th.check-column { + display: table-cell; + } + + .wp-list-table .check-column { + width: 2.5em; + } + + .wp-list-table .column-primary .toggle-row { + display: block; + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { + position: relative; + clear: both; + width: auto !important; /* needs to override some columns that are more specifically targeted */ + } + + .wp-list-table td.column-primary { + padding-right: 50px; /* space for toggle button */ + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { + padding: 3px 8px 3px 35%; + } + + .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before { + position: absolute; + left: 10px; /* match padding of regular table cell */ + display: block; + overflow: hidden; + width: 32%; /* leave a little space for a gutter */ + content: attr(data-colname); + white-space: nowrap; + text-overflow: ellipsis; + } + + .wp-list-table .is-expanded td:not(.hidden) { + display: block !important; + overflow: hidden; /* clearfix */ + } + + /* Special cases */ + .widefat .num, + .column-posts { + text-align: left; + } + + #comments-form .fixed .column-author, + #commentsdiv .fixed .column-author { + display: none !important; + } + + .fixed .column-comment .comment-author { + display: block; + } + + /* Comment author hidden via Screen Options */ + .fixed .column-author.hidden ~ .column-comment .comment-author { + display: none; + } + + #the-comment-list .is-expanded td { + box-shadow: none; + } + + #the-comment-list .is-expanded td:last-child { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + /* Show comment bubble as text instead */ + .post-com-count .screen-reader-text { + position: static; + -webkit-clip-path: none; + clip-path: none; + width: auto; + height: auto; + margin: 0; + } + + .column-response .post-com-count-no-comments:after, + .column-response .post-com-count-approved:after, + .column-comments .post-com-count-no-comments:after, + .column-comments .post-com-count-approved:after { + content: none; + } + + .column-response .post-com-count [aria-hidden="true"], + .column-comments .post-com-count [aria-hidden="true"] { + display: none; + } + + .column-response .post-com-count-wrapper, + .column-comments .post-com-count-wrapper { + white-space: normal; + } + + .column-response .post-com-count-wrapper > a, + .column-comments .post-com-count-wrapper > a { + display: block; + } + + .column-response .post-com-count-no-comments, + .column-response .post-com-count-approved, + .column-comments .post-com-count-no-comments, + .column-comments .post-com-count-approved { + margin-top: 0; + margin-right: 0.5em; + } + + .column-response .post-com-count-pending, + .column-comments .post-com-count-pending { + position: static; + height: auto; + min-width: 0; + padding: 0; + border: none; + border-radius: 0; + background: none; + color: #b32d2e; + font-size: inherit; + line-height: inherit; + text-align: left; + } + + .column-response .post-com-count-pending:hover, + .column-comments .post-com-count-pending:hover { + color: #d63638; + } + + .widefat thead td.check-column, + .widefat tfoot td.check-column { + padding-top: 10px; + } + + .row-actions { + margin-left: -8px; + margin-right: -8px; + padding-top: 4px; + } + + /* Make row actions more easy to select on mobile */ + body:not(.plugins-php) .row-actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + color: transparent; + } + + .row-actions span a, + .row-actions span .button-link { + display: inline-block; + padding: 4px 8px; + line-height: 1.5; + } + + .row-actions span.approve:before, + .row-actions span.unapprove:before { + content: "| "; + } + + /* Quick Edit and Bulk Edit */ + #wpbody-content .quick-edit-row-post .inline-edit-col-left, + #wpbody-content .quick-edit-row-post .inline-edit-col-right, + #wpbody-content .inline-edit-row-post .inline-edit-col-center, + #wpbody-content .quick-edit-row-page .inline-edit-col-left, + #wpbody-content .quick-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row-post .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-left, + #wpbody-content .bulk-edit-row-page .inline-edit-col-right, + #wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: none; + width: 100%; + padding: 0; + } + + #the-list .inline-edit-row .inline-edit-legend, + .inline-edit-row span.title { + font-size: 16px; + } + + .inline-edit-row p.howto { + font-size: 14px; + } + + #wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 0; + } + + #wpbody-content .quick-edit-row fieldset .inline-edit-col label, + #wpbody-content .quick-edit-row fieldset .inline-edit-group label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-col label, + #wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: none; + float: none; + margin-bottom: 5px; + } + + #wpbody .bulk-edit-row fieldset select { + display: block; + width: 100%; + max-width: none; + box-sizing: border-box; + } + + .inline-edit-row fieldset input[name=jj], + .inline-edit-row fieldset input[name=hh], + .inline-edit-row fieldset input[name=mn], + .inline-edit-row fieldset input[name=aa] { + font-size: 16px; + line-height: 2; + padding: 3px 4px; + } + + #bulk-titles .ntdelbutton, + #bulk-titles .ntdeltitle, + .inline-edit-row fieldset ul.cat-checklist label { + padding: 6px 0; + font-size: 16px; + line-height: 28px; + } + + #bulk-titles .ntdelitem { + padding-left: 37px; + } + + #bulk-titles .ntdelbutton { + width: 40px; + height: 40px; + margin: 0 0 0 -40px; + overflow: hidden; + } + + #bulk-titles .ntdelbutton:before { + font-size: 20px; + line-height: 28px; + } + + .inline-edit-row fieldset label span.title, + .inline-edit-row fieldset.inline-edit-date legend { + float: none; + } + + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { + padding: 0; + } + + .inline-edit-row fieldset label span.input-text-wrap, + .inline-edit-row fieldset .timestamp-wrap { + margin-left: 0; + } + + .inline-edit-row .inline-edit-or { + margin: 0 6px 0 0; + } + + #edithead .inside, + #commentsdiv #edithead .inside { + float: none; + text-align: left; + padding: 3px 5px; + } + + #commentsdiv #edithead .inside input, + #edithead .inside input { + width: 100%; + } + + #edithead label { + display: block; + } + + /* Updates */ + #wpbody-content .updates-table .plugin-title { + width: auto; + white-space: normal; + } + + /* Links */ + .link-manager-php #posts-filter { + margin-top: 25px; + } + + .link-manager-php .tablenav.bottom { + overflow: hidden; + } + + /* List tables that don't toggle rows */ + .comments-box .toggle-row, + .wp-list-table.plugins .toggle-row { + display: none; + } + + /* Plugin/Theme Management */ + #wpbody-content .wp-list-table.plugins td { + display: block; + width: auto; + padding: 10px 9px; /* reset from other list tables that have a label at this width */ + } + + /* Plugin description hidden via Screen Options */ + #wpbody-content .wp-list-table.plugins .desc.hidden { + display: none; + } + + #wpbody-content .wp-list-table.plugins .column-description { + padding-top: 2px; + } + + #wpbody-content .wp-list-table.plugins .plugin-title, + #wpbody-content .wp-list-table.plugins .theme-title { + padding-right: 12px; + white-space: normal; + } + + .wp-list-table.plugins .plugin-title, + .wp-list-table.plugins .theme-title { + padding-top: 13px; + padding-bottom: 4px; + } + + .plugins #the-list tr > td:not(:last-child), + .plugins #the-list .update th, + .plugins #the-list .update td, + .wp-list-table.plugins #the-list .theme-title { + box-shadow: none; + border-top: none; + } + + .plugins #the-list tr td { + border-top: none; + } + + .plugins tbody { + padding: 1px 0 0; + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td.column-description, + .plugins .plugin-update-tr:before { + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + .plugins tr.active + tr.inactive th.check-column, + .plugins tr.active + tr.inactive td { + border-top: none; + } + + /* mimic the checkbox th */ + .plugins .plugin-update-tr:before { + content: ""; + display: table-cell; + } + + .plugins #the-list .plugin-update-tr .plugin-update { + border-left: none; + } + + .plugin-update-tr .update-message { + margin-left: 0; + } + + .plugins .active.update + .plugin-update-tr:before, + .plugins .active.updated + .plugin-update-tr:before { + background-color: #f0f6fc; + border-left: 4px solid #72aee6; + } + + .plugins .plugin-update-tr .update-message { + margin-left: 0; + } + + .wp-list-table.plugins .plugin-title strong, + .wp-list-table.plugins .theme-title strong { + font-size: 1.4em; + line-height: 1.5; + } + + .plugins tbody th.check-column { + padding: 8px 0 0 5px; + } + + .plugins thead td.check-column, + .plugins tfoot td.check-column, + .plugins .inactive th.check-column { + padding-left: 9px; + } + + /* Add New plugins page */ + table.plugin-install .column-name, + table.plugin-install .column-version, + table.plugin-install .column-rating, + table.plugin-install .column-description { + display: block; + width: auto; + } + + table.plugin-install th.column-name, + table.plugin-install th.column-version, + table.plugin-install th.column-rating, + table.plugin-install th.column-description { + display: none; + } + + table.plugin-install td.column-name strong { + font-size: 1.4em; + line-height: 1.6em; + } + + table.plugin-install #the-list td { + box-shadow: none; + } + + table.plugin-install #the-list tr { + display: block; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + } + + .plugin-card { + margin-left: 0; + margin-right: 0; + width: 100%; + } + + table.media .column-title .has-media-icon ~ .row-actions { + margin-left: 0; + clear: both; + } +} + +@media screen and (max-width: 480px) { + .tablenav-pages .current-page { + margin: 0; + } + + .tablenav.bottom .displaying-num { + position: relative; + top: 0; + display: block; + text-align: right; + padding-bottom: 0.5em; + } + + .tablenav.bottom .tablenav-pages.one-page { + height: auto; + } + + .tablenav-pages .tablenav-paging-text { + float: left; + width: 100%; + padding-top: 0.5em; + } +} diff --git a/tools/storybook/wordpress/css/list-tables.min.css b/tools/storybook/wordpress/css/list-tables.min.css new file mode 100644 index 00000000000..9ebad6f5a91 --- /dev/null +++ b/tools/storybook/wordpress/css/list-tables.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#646970;color:#fff;font-size:11px;line-height:1.90909090;text-align:center}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-left:8px;width:0;height:0;border-top:5px solid #646970;border-right:5px solid transparent}.column-comments a.post-com-count-approved:focus .comment-count-approved,.column-comments a.post-com-count-approved:hover .comment-count-approved,.column-response a.post-com-count-approved:focus .comment-count-approved,.column-response a.post-com-count-approved:hover .comment-count-approved{background:#2271b1}.column-comments a.post-com-count-approved:focus:after,.column-comments a.post-com-count-approved:hover:after,.column-response a.post-com-count-approved:focus:after,.column-response a.post-com-count-approved:hover:after{border-top-color:#2271b1}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;left:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#d63638;color:#fff;font-size:9px;line-height:1.88888888;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #c3c4c7}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#50575e}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .reply-submit-buttons{margin-bottom:0}#replysubmit .button{margin-right:5px}#replysubmit .spinner{float:none;margin:-4px 0 0}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;box-shadow:none}#replyerror{border-color:#dcdcde;background-color:#f6f7f7}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f6f7f7}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fcf9e8}#the-comment-list .unapproved th.check-column{border-left:4px solid #d63638}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#007017}#the-comment-list .unapprove a{color:#996800}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#f0f6fc!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-date{width:14%}.column-date span[title]{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:left;min-height:60px;margin:0 9px 0 0}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-left:70px}table.media .column-title .filename{margin-bottom:.2em}.media .row-actions .copy-to-clipboard-container{display:inline;position:relative}.media .row-actions .copy-to-clipboard-container .success{position:absolute;left:50%;transform:translate(-50%,-100%);background:#000;color:#fff;border-radius:5px;margin:0;padding:2px 5px}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:1.38461538}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0;top:-4px;left:-8px;color:#3c434a;line-height:.5;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#3c434a;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:never}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}.locked-indicator{display:none;margin-left:6px;height:20px;width:16px}.locked-indicator-icon:before{color:#8c8f94;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.locked-info{display:none;margin-top:4px}.locked-text{vertical-align:top}.wp-locked .locked-indicator,.wp-locked .locked-info{display:block}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages .current-page{margin:0 2px 0 0;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav{clear:both;height:30px;margin:6px 0 4px;padding-top:5px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;margin:0 0 9px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{display:inline-block;vertical-align:baseline;min-width:30px;min-height:30px;margin:0;padding:0 4px;font-size:16px;line-height:1.625;text-align:center}.tablenav .displaying-num{margin-right:7px}.tablenav .one-page .displaying-num{display:inline-block;margin:5px 0}.tablenav .actions{padding:0 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:1.84615384;text-decoration:none}.view-switch a:before{color:#c3c4c7;display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#787c82}.view-switch a.current:before{color:#2271b1}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{color:#a7aaad;font-size:13px;padding:2px 0 0;position:relative;left:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{float:left;margin:0;padding:0 12px 0 0;width:100%;box-sizing:border-box}#wpbody-content .inline-edit-row td fieldset:last-of-type{padding-right:0}tr.inline-edit-row td{padding:0;position:relative}.inline-edit-wrapper{display:flow-root;padding:0 12px;border:1px solid transparent;border-radius:4px}.inline-edit-wrapper:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:50%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row .submit{display:flex;flex-wrap:wrap;align-items:center;clear:both;margin:0;padding:.5em 0 1em}.inline-edit-save.submit .button{margin-right:8px}.inline-edit-save .spinner{float:none;margin:0}.inline-edit-row .notice-error{box-sizing:border-box;min-width:100%;margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em 0;line-height:2.5;font-weight:600}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;vertical-align:baseline;line-height:2}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:left;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .inline-edit-or{margin:.2em 6px .2em 0;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{vertical-align:middle;text-align:center;padding:0 4px}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}#bulk-titles-list,#bulk-titles-list li,.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row fieldset ul.cat-checklist input{margin-top:-1px;margin-left:3px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles,ul.cat-checklist{height:14em;border:1px solid #ddd;margin:0 0 5px;padding:.2em 5px;overflow-y:scroll}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{display:inline-block;margin:0;padding:3px 0;line-height:20px;vertical-align:top}#bulk-titles .ntdelitem{padding-left:23px}#bulk-titles .ntdelbutton{width:26px;height:26px;margin:0 0 0 -26px;text-align:center;border-radius:3px}#bulk-titles .ntdelbutton:before{display:inline-block;vertical-align:top}#bulk-titles .ntdelbutton:focus{box-shadow:0 0 0 2px #3582c4;outline:2px solid transparent;outline-offset:0}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5}.plugins .desc ol,.plugins .desc ul{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f0f6fc}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #dcdcde}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #72aee6}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:left;padding:0 10px 0 0;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#f0f0f1;box-shadow:inset 0 0 10px rgba(167,170,173,.15);font-size:60px;color:#c3c4c7}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .column-auto-updates{width:14.2em}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .row-actions{white-space:normal;min-width:12em}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 20px 15px 40px}.plugins .notice p{margin:.5em 0}.plugins .plugin-description a,.plugins .plugin-update a,.updates-table .plugin-title a{text-decoration:underline}.plugins tr.paused th.check-column{border-left:4px solid #d63638}.plugins tr.paused td,.plugins tr.paused th{background-color:#f6f7f7}.plugins .paused .dashicons-warning,.plugins tr.paused .plugin-title{color:#d63638}.plugins .paused .error-display code,.plugins .paused .error-display p{font-size:90%;color:rgba(0,0,0,.7)}.plugins .resume-link{color:#d63638}.plugin-card .update-now:before{color:#d63638;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.plugin-card .updated-message:before{color:#68de7c;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:left;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #dcdcde;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-left:0}.plugin-card:nth-child(even){margin-right:0}@media screen and (min-width:1600px) and (max-width:2299px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(even){margin-right:8px}.plugin-card:nth-child(3n+1){clear:both;margin-left:0}.plugin-card:nth-child(3n){margin-right:0}}@media screen and (min-width:2300px){.plugin-card{width:25%;width:calc(25% - 12px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(even){margin-right:8px}.plugin-card:nth-child(4n+1){clear:both;margin-left:0}.plugin-card:nth-child(4n){margin-right:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 12px 12px 0;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:128px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#f6f7f7;border-top:1px solid #dcdcde;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;box-shadow:0 -1px 0 #dcdcde}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:1.76923076}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;left:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.plugin-card .column-compatibility .compatibility-incompatible:before{content:"\f158";color:#d63638}.plugin-card .column-compatibility .compatibility-compatible:before{content:"\f147";color:#007017}.plugin-card .notice{margin:20px 20px 0}.plugin-icon{position:absolute;top:20px;left:20px;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-archived,.wp-list-table .site-deleted,.wp-list-table tr.site-archived,.wp-list-table tr.site-deleted{background:#fcf0f1}.wp-list-table .site-mature,.wp-list-table .site-spammed,.wp-list-table tr.site-mature,.wp-list-table tr.site-spammed{background:#fcf9e8}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card h3{margin-right:24px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:2.53846153}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;right:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .tablenav-pages.one-page{margin-top:15px;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{min-width:44px;padding:12px 8px;font-size:18px;line-height:1}.tablenav-pages .pagination-links .current-page{min-width:44px;padding:12px 6px;font-size:16px;line-height:1.125}.form-wrap>p{display:none}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell}.wp-list-table .check-column{width:2.5em}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}.fixed .column-author.hidden~.column-comment .comment-author{display:none}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-right:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#b32d2e;font-size:inherit;line-height:inherit;text-align:left}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#d63638}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.row-actions{margin-left:-8px;margin-right:-8px;padding-top:4px}body:not(.plugins-php) .row-actions{display:flex;flex-wrap:wrap;gap:8px;color:transparent}.row-actions span .button-link,.row-actions span a{display:inline-block;padding:4px 8px;line-height:1.5}.row-actions span.approve:before,.row-actions span.unapprove:before{content:"| "}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%;padding:0}#the-list .inline-edit-row .inline-edit-legend,.inline-edit-row span.title{font-size:16px}.inline-edit-row p.howto{font-size:14px}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:0}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:16px;line-height:2;padding:3px 4px}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{padding:6px 0;font-size:16px;line-height:28px}#bulk-titles .ntdelitem{padding-left:37px}#bulk-titles .ntdelbutton{width:40px;height:40px;margin:0 0 0 -40px;overflow:hidden}#bulk-titles .ntdelbutton:before{font-size:20px;line-height:28px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .desc.hidden{display:none}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-right:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins #the-list .plugin-update-tr .plugin-update{border-left:none}.plugin-update-tr .update-message{margin-left:0}.plugins .active.update+.plugin-update-tr:before,.plugins .active.updated+.plugin-update-tr:before{background-color:#f0f6fc;border-left:4px solid #72aee6}.plugins .plugin-update-tr .update-message{margin-left:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}.plugins tbody th.check-column{padding:8px 0 0 5px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:9px}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;margin-right:0;width:100%}table.media .column-title .has-media-icon~.row-actions{margin-left:0;clear:both}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav.bottom .displaying-num{position:relative;top:0;display:block;text-align:right;padding-bottom:.5em}.tablenav.bottom .tablenav-pages.one-page{height:auto}.tablenav-pages .tablenav-paging-text{float:left;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/login-rtl.css b/tools/storybook/wordpress/css/login-rtl.css new file mode 100644 index 00000000000..bfef5c91c1e --- /dev/null +++ b/tools/storybook/wordpress/css/login-rtl.css @@ -0,0 +1,480 @@ +/*! This file is auto-generated */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + background: #f0f0f1; + min-width: 0; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 13px; + line-height: 1.4; +} + +a { + color: #2271b1; + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +a { + outline: 0; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +p { + line-height: 1.5; +} + +.login .message, +.login .success, +.login #login_error { + border-right: 4px solid #72aee6; + padding: 12px; + margin-right: 0; + margin-bottom: 20px; + background-color: #fff; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + word-wrap: break-word; +} + +.login .success { + border-right-color: #00a32a; +} + +.login #login_error { + border-right-color: #d63638; +} + +#loginform p.submit, +.login-action-lostpassword p.submit { + border: none; + margin: -10px 0 20px; /* May want to revisit this */ +} + +.login * { + margin: 0; + padding: 0; +} + +.login .input::-ms-clear { + display: none; +} + +.login .pw-weak { + margin-bottom: 15px; +} + +.login .button.wp-hide-pw { + background: transparent; + border: 1px solid transparent; + box-shadow: none; + font-size: 14px; + line-height: 2; + width: 2.5rem; + height: 2.5rem; + min-width: 40px; + min-height: 40px; + margin: 0; + padding: 5px 9px; + position: absolute; + left: 0; + top: 0; +} + +.login .button.wp-hide-pw:hover { + background: transparent; +} + +.login .button.wp-hide-pw:focus { + background: transparent; + border-color: #3582c4; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.login .button.wp-hide-pw:active { + background: transparent; + box-shadow: none; + transform: none; +} + +.login .button.wp-hide-pw .dashicons { + width: 1.25rem; + height: 1.25rem; + top: 0.25rem; +} + +.login .wp-pwd { + position: relative; +} + +.no-js .hide-if-no-js { + display: none; +} + +.login form { + margin-top: 20px; + margin-right: 0; + padding: 26px 24px 34px; + font-weight: 400; + overflow: hidden; + background: #fff; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); +} + +.login form.shake { + animation: shake 0.2s cubic-bezier(.19,.49,.38,.79) both; + animation-iteration-count: 3; + transform: translateX(0); +} + +@keyframes shake { + 25% { + transform: translateX(20px); + } + 75% { + transform: translateX(-20px); + } + 100% { + transform: translateX(0); + } +} + +@media (prefers-reduced-motion: reduce) { + .login form.shake { + animation: none; + transform: none; + } +} + +.login-action-confirm_admin_email #login { + width: 60vw; + max-width: 650px; + margin-top: -2vh; +} + +@media screen and (max-width: 782px) { + .login-action-confirm_admin_email #login { + box-sizing: border-box; + margin-top: 0; + padding-right: 4vw; + padding-left: 4vw; + width: 100vw; + } +} + +.login form .forgetmenot { + font-weight: 400; + float: right; + margin-bottom: 0; +} + +.login .button-primary { + float: left; +} + +.login .reset-pass-submit { + display: flex; + flex-flow: row wrap; + justify-content: space-between; +} + +.login .reset-pass-submit .button { + display: inline-block; + float: none; + margin-bottom: 6px; +} + +.login .admin-email-confirm-form .submit { + text-align: center; +} + +.admin-email__later { + text-align: right; +} + +.login form p.admin-email__details { + margin: 1.1em 0; +} + +.login h1.admin-email__heading { + border-bottom: 1px #f0f0f1 solid; + color: #50575e; + font-weight: normal; + padding-bottom: 0.5em; + text-align: right; +} + +.admin-email__actions div { + padding-top: 1.5em; +} + +.login .admin-email__actions .button-primary { + float: none; + margin-right: 0.25em; + margin-left: 0.25em; +} + +#login form p { + margin-bottom: 0; +} + +#login form p.submit { + margin: 0; + padding: 0; +} + +.login label { + font-size: 14px; + line-height: 1.5; + display: inline-block; + margin-bottom: 3px; +} + +.login .forgetmenot label, +.login .pw-weak label { + line-height: 1.5; + vertical-align: baseline; +} + +.login h1 { + text-align: center; +} + +.login h1 a { + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #3c434a; + height: 84px; + font-size: 20px; + font-weight: 400; + line-height: 1.3; + margin: 0 auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} + +#login { + width: 320px; + padding: 5% 0 0; + margin: auto; +} + +.login #nav, +.login #backtoblog { + font-size: 13px; + padding: 0 24px; +} + +.login #nav { + margin: 24px 0 0; +} + +#backtoblog { + margin: 16px 0; + word-wrap: break-word; +} + +.login #nav a, +.login #backtoblog a { + text-decoration: none; + color: #50575e; +} + +.login #nav a:hover, +.login #backtoblog a:hover, +.login h1 a:hover { + color: #135e96; +} + +.login #nav a:focus, +.login #backtoblog a:focus, +.login h1 a:focus { + color: #043959; +} + +.login .privacy-policy-page-link { + text-align: center; + width: 100%; + margin: 3em 0 2em; +} + +.login form .input, +.login input[type="text"], +.login input[type="password"] { + font-size: 24px; + line-height: 1.33333333; /* 32px */ + width: 100%; + border-width: 0.0625rem; + padding: 0.1875rem 0.3125rem; /* 3px 5px */ + margin: 0 0 16px 6px; + min-height: 40px; + max-height: none; +} + +.login input.password-input { + font-family: Consolas, Monaco, monospace; +} + +.js.login input.password-input, +.js.login-action-rp form .input, +.js.login-action-rp input[type="text"] { + padding-left: 2.5rem; +} + +.login form .input, +.login input[type="text"], +.login form input[type="checkbox"] { + background: #fff; +} + +.js.login-action-rp input[type="text"], +.js.login-action-rp input[type="password"] { + margin-bottom: 0; +} + +.login #pass-strength-result { + font-weight: 600; + margin: -1px 0 16px 5px; + padding: 6px 5px; + text-align: center; + width: 100%; +} + +body.interim-login { + height: auto; +} + +.interim-login #login { + padding: 0; + margin: 5px auto 20px; +} + +.interim-login.login h1 a { + width: auto; +} + +.interim-login #login_error, +.interim-login.login .message { + margin: 0 0 16px; +} + +.interim-login.login form { + margin: 0; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +/* Hide the Edge "reveal password" native button */ +input::-ms-reveal { + display: none; +} + +#language-switcher { + padding: 0; + overflow: visible; + background: none; + border: none; + box-shadow: none; +} + +#language-switcher select { + margin-left: 0.25em; +} + +.language-switcher { + margin: 0 auto; + padding: 0 0 24px; + text-align: center; +} + +.language-switcher label { + margin-left: 0.25em; +} + +.language-switcher label .dashicons { + width: auto; + height: auto; +} + +.login .language-switcher .button-primary { + float: none; + margin-bottom: 0; +} + +@media screen and (max-height: 550px) { + #login { + padding: 20px 0; + } + + #language-switcher { + margin-top: 0; + } +} + + +@media screen and (max-width: 782px) { + .interim-login input[type=checkbox] { + width: 1rem; + height: 1rem; + } + + .interim-login input[type=checkbox]:checked:before { + width: 1.3125rem; + height: 1.3125rem; + margin: -0.1875rem -0.25rem 0 0; + } + + #language-switcher label, + #language-switcher select { + margin-left: 0; + } +} + +@media screen and (max-width: 400px) { + .login .language-switcher .button-primary { + display: block; + margin: 5px auto 0; + } +} diff --git a/tools/storybook/wordpress/css/login-rtl.min.css b/tools/storybook/wordpress/css/login-rtl.min.css new file mode 100644 index 00000000000..d4fe0dadfb3 --- /dev/null +++ b/tools/storybook/wordpress/css/login-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;min-width:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-right:4px solid #72aee6;padding:12px;margin-right:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);word-wrap:break-word}.login .success{border-right-color:#00a32a}.login #login_error{border-right-color:#d63638}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .input::-ms-clear{display:none}.login .pw-weak{margin-bottom:15px}.login .button.wp-hide-pw{background:0 0;border:1px solid transparent;box-shadow:none;font-size:14px;line-height:2;width:2.5rem;height:2.5rem;min-width:40px;min-height:40px;margin:0;padding:5px 9px;position:absolute;left:0;top:0}.login .button.wp-hide-pw:hover{background:0 0}.login .button.wp-hide-pw:focus{background:0 0;border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.login .button.wp-hide-pw:active{background:0 0;box-shadow:none;transform:none}.login .button.wp-hide-pw .dashicons{width:1.25rem;height:1.25rem;top:.25rem}.login .wp-pwd{position:relative}.no-js .hide-if-no-js{display:none}.login form{margin-top:20px;margin-right:0;padding:26px 24px 34px;font-weight:400;overflow:hidden;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 3px rgba(0,0,0,.04)}.login form.shake{animation:shake .2s cubic-bezier(.19,.49,.38,.79) both;animation-iteration-count:3;transform:translateX(0)}@keyframes shake{25%{transform:translateX(20px)}75%{transform:translateX(-20px)}100%{transform:translateX(0)}}@media (prefers-reduced-motion:reduce){.login form.shake{animation:none;transform:none}}.login-action-confirm_admin_email #login{width:60vw;max-width:650px;margin-top:-2vh}@media screen and (max-width:782px){.login-action-confirm_admin_email #login{box-sizing:border-box;margin-top:0;padding-right:4vw;padding-left:4vw;width:100vw}}.login form .forgetmenot{font-weight:400;float:right;margin-bottom:0}.login .button-primary{float:left}.login .reset-pass-submit{display:flex;flex-flow:row wrap;justify-content:space-between}.login .reset-pass-submit .button{display:inline-block;float:none;margin-bottom:6px}.login .admin-email-confirm-form .submit{text-align:center}.admin-email__later{text-align:right}.login form p.admin-email__details{margin:1.1em 0}.login h1.admin-email__heading{border-bottom:1px #f0f0f1 solid;color:#50575e;font-weight:400;padding-bottom:.5em;text-align:right}.admin-email__actions div{padding-top:1.5em}.login .admin-email__actions .button-primary{float:none;margin-right:.25em;margin-left:.25em}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{font-size:14px;line-height:1.5;display:inline-block;margin-bottom:3px}.login .forgetmenot label,.login .pw-weak label{line-height:1.5;vertical-align:baseline}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;height:84px;font-size:20px;font-weight:400;line-height:1.3;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:5% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0;word-wrap:break-word}.login #backtoblog a,.login #nav a{text-decoration:none;color:#50575e}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#135e96}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#043959}.login .privacy-policy-page-link{text-align:center;width:100%;margin:3em 0 2em}.login form .input,.login input[type=password],.login input[type=text]{font-size:24px;line-height:1.33333333;width:100%;border-width:.0625rem;padding:.1875rem .3125rem;margin:0 0 16px 6px;min-height:40px;max-height:none}.login input.password-input{font-family:Consolas,Monaco,monospace}.js.login input.password-input,.js.login-action-rp form .input,.js.login-action-rp input[type=text]{padding-left:2.5rem}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fff}.js.login-action-rp input[type=password],.js.login-action-rp input[type=text]{margin-bottom:0}.login #pass-strength-result{font-weight:600;margin:-1px 0 16px 5px;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}.screen-reader-text,.screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}input::-ms-reveal{display:none}#language-switcher{padding:0;overflow:visible;background:0 0;border:none;box-shadow:none}#language-switcher select{margin-left:.25em}.language-switcher{margin:0 auto;padding:0 0 24px;text-align:center}.language-switcher label{margin-left:.25em}.language-switcher label .dashicons{width:auto;height:auto}.login .language-switcher .button-primary{float:none;margin-bottom:0}@media screen and (max-height:550px){#login{padding:20px 0}#language-switcher{margin-top:0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{width:1rem;height:1rem}.interim-login input[type=checkbox]:checked:before{width:1.3125rem;height:1.3125rem;margin:-.1875rem -.25rem 0 0}#language-switcher label,#language-switcher select{margin-left:0}}@media screen and (max-width:400px){.login .language-switcher .button-primary{display:block;margin:5px auto 0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/login.css b/tools/storybook/wordpress/css/login.css new file mode 100644 index 00000000000..1f89db216ed --- /dev/null +++ b/tools/storybook/wordpress/css/login.css @@ -0,0 +1,479 @@ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +body { + background: #f0f0f1; + min-width: 0; + color: #3c434a; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 13px; + line-height: 1.4; +} + +a { + color: #2271b1; + transition-property: border, background, color; + transition-duration: .05s; + transition-timing-function: ease-in-out; +} + +a { + outline: 0; +} + +a:hover, +a:active { + color: #135e96; +} + +a:focus { + color: #043959; + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +p { + line-height: 1.5; +} + +.login .message, +.login .success, +.login #login_error { + border-left: 4px solid #72aee6; + padding: 12px; + margin-left: 0; + margin-bottom: 20px; + background-color: #fff; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + word-wrap: break-word; +} + +.login .success { + border-left-color: #00a32a; +} + +.login #login_error { + border-left-color: #d63638; +} + +#loginform p.submit, +.login-action-lostpassword p.submit { + border: none; + margin: -10px 0 20px; /* May want to revisit this */ +} + +.login * { + margin: 0; + padding: 0; +} + +.login .input::-ms-clear { + display: none; +} + +.login .pw-weak { + margin-bottom: 15px; +} + +.login .button.wp-hide-pw { + background: transparent; + border: 1px solid transparent; + box-shadow: none; + font-size: 14px; + line-height: 2; + width: 2.5rem; + height: 2.5rem; + min-width: 40px; + min-height: 40px; + margin: 0; + padding: 5px 9px; + position: absolute; + right: 0; + top: 0; +} + +.login .button.wp-hide-pw:hover { + background: transparent; +} + +.login .button.wp-hide-pw:focus { + background: transparent; + border-color: #3582c4; + box-shadow: 0 0 0 1px #3582c4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.login .button.wp-hide-pw:active { + background: transparent; + box-shadow: none; + transform: none; +} + +.login .button.wp-hide-pw .dashicons { + width: 1.25rem; + height: 1.25rem; + top: 0.25rem; +} + +.login .wp-pwd { + position: relative; +} + +.no-js .hide-if-no-js { + display: none; +} + +.login form { + margin-top: 20px; + margin-left: 0; + padding: 26px 24px 34px; + font-weight: 400; + overflow: hidden; + background: #fff; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); +} + +.login form.shake { + animation: shake 0.2s cubic-bezier(.19,.49,.38,.79) both; + animation-iteration-count: 3; + transform: translateX(0); +} + +@keyframes shake { + 25% { + transform: translateX(-20px); + } + 75% { + transform: translateX(20px); + } + 100% { + transform: translateX(0); + } +} + +@media (prefers-reduced-motion: reduce) { + .login form.shake { + animation: none; + transform: none; + } +} + +.login-action-confirm_admin_email #login { + width: 60vw; + max-width: 650px; + margin-top: -2vh; +} + +@media screen and (max-width: 782px) { + .login-action-confirm_admin_email #login { + box-sizing: border-box; + margin-top: 0; + padding-left: 4vw; + padding-right: 4vw; + width: 100vw; + } +} + +.login form .forgetmenot { + font-weight: 400; + float: left; + margin-bottom: 0; +} + +.login .button-primary { + float: right; +} + +.login .reset-pass-submit { + display: flex; + flex-flow: row wrap; + justify-content: space-between; +} + +.login .reset-pass-submit .button { + display: inline-block; + float: none; + margin-bottom: 6px; +} + +.login .admin-email-confirm-form .submit { + text-align: center; +} + +.admin-email__later { + text-align: left; +} + +.login form p.admin-email__details { + margin: 1.1em 0; +} + +.login h1.admin-email__heading { + border-bottom: 1px #f0f0f1 solid; + color: #50575e; + font-weight: normal; + padding-bottom: 0.5em; + text-align: left; +} + +.admin-email__actions div { + padding-top: 1.5em; +} + +.login .admin-email__actions .button-primary { + float: none; + margin-left: 0.25em; + margin-right: 0.25em; +} + +#login form p { + margin-bottom: 0; +} + +#login form p.submit { + margin: 0; + padding: 0; +} + +.login label { + font-size: 14px; + line-height: 1.5; + display: inline-block; + margin-bottom: 3px; +} + +.login .forgetmenot label, +.login .pw-weak label { + line-height: 1.5; + vertical-align: baseline; +} + +.login h1 { + text-align: center; +} + +.login h1 a { + background-image: url(../images/w-logo-blue.png?ver=20131202); + background-image: none, url(../images/wordpress-logo.svg?ver=20131107); + background-size: 84px; + background-position: center top; + background-repeat: no-repeat; + color: #3c434a; + height: 84px; + font-size: 20px; + font-weight: 400; + line-height: 1.3; + margin: 0 auto 25px; + padding: 0; + text-decoration: none; + width: 84px; + text-indent: -9999px; + outline: none; + overflow: hidden; + display: block; +} + +#login { + width: 320px; + padding: 5% 0 0; + margin: auto; +} + +.login #nav, +.login #backtoblog { + font-size: 13px; + padding: 0 24px; +} + +.login #nav { + margin: 24px 0 0; +} + +#backtoblog { + margin: 16px 0; + word-wrap: break-word; +} + +.login #nav a, +.login #backtoblog a { + text-decoration: none; + color: #50575e; +} + +.login #nav a:hover, +.login #backtoblog a:hover, +.login h1 a:hover { + color: #135e96; +} + +.login #nav a:focus, +.login #backtoblog a:focus, +.login h1 a:focus { + color: #043959; +} + +.login .privacy-policy-page-link { + text-align: center; + width: 100%; + margin: 3em 0 2em; +} + +.login form .input, +.login input[type="text"], +.login input[type="password"] { + font-size: 24px; + line-height: 1.33333333; /* 32px */ + width: 100%; + border-width: 0.0625rem; + padding: 0.1875rem 0.3125rem; /* 3px 5px */ + margin: 0 6px 16px 0; + min-height: 40px; + max-height: none; +} + +.login input.password-input { + font-family: Consolas, Monaco, monospace; +} + +.js.login input.password-input, +.js.login-action-rp form .input, +.js.login-action-rp input[type="text"] { + padding-right: 2.5rem; +} + +.login form .input, +.login input[type="text"], +.login form input[type="checkbox"] { + background: #fff; +} + +.js.login-action-rp input[type="text"], +.js.login-action-rp input[type="password"] { + margin-bottom: 0; +} + +.login #pass-strength-result { + font-weight: 600; + margin: -1px 5px 16px 0; + padding: 6px 5px; + text-align: center; + width: 100%; +} + +body.interim-login { + height: auto; +} + +.interim-login #login { + padding: 0; + margin: 5px auto 20px; +} + +.interim-login.login h1 a { + width: auto; +} + +.interim-login #login_error, +.interim-login.login .message { + margin: 0 0 16px; +} + +.interim-login.login form { + margin: 0; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ +} + +/* Hide the Edge "reveal password" native button */ +input::-ms-reveal { + display: none; +} + +#language-switcher { + padding: 0; + overflow: visible; + background: none; + border: none; + box-shadow: none; +} + +#language-switcher select { + margin-right: 0.25em; +} + +.language-switcher { + margin: 0 auto; + padding: 0 0 24px; + text-align: center; +} + +.language-switcher label { + margin-right: 0.25em; +} + +.language-switcher label .dashicons { + width: auto; + height: auto; +} + +.login .language-switcher .button-primary { + float: none; + margin-bottom: 0; +} + +@media screen and (max-height: 550px) { + #login { + padding: 20px 0; + } + + #language-switcher { + margin-top: 0; + } +} + + +@media screen and (max-width: 782px) { + .interim-login input[type=checkbox] { + width: 1rem; + height: 1rem; + } + + .interim-login input[type=checkbox]:checked:before { + width: 1.3125rem; + height: 1.3125rem; + margin: -0.1875rem 0 0 -0.25rem; + } + + #language-switcher label, + #language-switcher select { + margin-right: 0; + } +} + +@media screen and (max-width: 400px) { + .login .language-switcher .button-primary { + display: block; + margin: 5px auto 0; + } +} diff --git a/tools/storybook/wordpress/css/login.min.css b/tools/storybook/wordpress/css/login.min.css new file mode 100644 index 00000000000..b9e3211eb17 --- /dev/null +++ b/tools/storybook/wordpress/css/login.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;min-width:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-left:4px solid #72aee6;padding:12px;margin-left:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);word-wrap:break-word}.login .success{border-left-color:#00a32a}.login #login_error{border-left-color:#d63638}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .input::-ms-clear{display:none}.login .pw-weak{margin-bottom:15px}.login .button.wp-hide-pw{background:0 0;border:1px solid transparent;box-shadow:none;font-size:14px;line-height:2;width:2.5rem;height:2.5rem;min-width:40px;min-height:40px;margin:0;padding:5px 9px;position:absolute;right:0;top:0}.login .button.wp-hide-pw:hover{background:0 0}.login .button.wp-hide-pw:focus{background:0 0;border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.login .button.wp-hide-pw:active{background:0 0;box-shadow:none;transform:none}.login .button.wp-hide-pw .dashicons{width:1.25rem;height:1.25rem;top:.25rem}.login .wp-pwd{position:relative}.no-js .hide-if-no-js{display:none}.login form{margin-top:20px;margin-left:0;padding:26px 24px 34px;font-weight:400;overflow:hidden;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 3px rgba(0,0,0,.04)}.login form.shake{animation:shake .2s cubic-bezier(.19,.49,.38,.79) both;animation-iteration-count:3;transform:translateX(0)}@keyframes shake{25%{transform:translateX(-20px)}75%{transform:translateX(20px)}100%{transform:translateX(0)}}@media (prefers-reduced-motion:reduce){.login form.shake{animation:none;transform:none}}.login-action-confirm_admin_email #login{width:60vw;max-width:650px;margin-top:-2vh}@media screen and (max-width:782px){.login-action-confirm_admin_email #login{box-sizing:border-box;margin-top:0;padding-left:4vw;padding-right:4vw;width:100vw}}.login form .forgetmenot{font-weight:400;float:left;margin-bottom:0}.login .button-primary{float:right}.login .reset-pass-submit{display:flex;flex-flow:row wrap;justify-content:space-between}.login .reset-pass-submit .button{display:inline-block;float:none;margin-bottom:6px}.login .admin-email-confirm-form .submit{text-align:center}.admin-email__later{text-align:left}.login form p.admin-email__details{margin:1.1em 0}.login h1.admin-email__heading{border-bottom:1px #f0f0f1 solid;color:#50575e;font-weight:400;padding-bottom:.5em;text-align:left}.admin-email__actions div{padding-top:1.5em}.login .admin-email__actions .button-primary{float:none;margin-left:.25em;margin-right:.25em}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{font-size:14px;line-height:1.5;display:inline-block;margin-bottom:3px}.login .forgetmenot label,.login .pw-weak label{line-height:1.5;vertical-align:baseline}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;height:84px;font-size:20px;font-weight:400;line-height:1.3;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:5% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0;word-wrap:break-word}.login #backtoblog a,.login #nav a{text-decoration:none;color:#50575e}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#135e96}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#043959}.login .privacy-policy-page-link{text-align:center;width:100%;margin:3em 0 2em}.login form .input,.login input[type=password],.login input[type=text]{font-size:24px;line-height:1.33333333;width:100%;border-width:.0625rem;padding:.1875rem .3125rem;margin:0 6px 16px 0;min-height:40px;max-height:none}.login input.password-input{font-family:Consolas,Monaco,monospace}.js.login input.password-input,.js.login-action-rp form .input,.js.login-action-rp input[type=text]{padding-right:2.5rem}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fff}.js.login-action-rp input[type=password],.js.login-action-rp input[type=text]{margin-bottom:0}.login #pass-strength-result{font-weight:600;margin:-1px 5px 16px 0;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}.screen-reader-text,.screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}input::-ms-reveal{display:none}#language-switcher{padding:0;overflow:visible;background:0 0;border:none;box-shadow:none}#language-switcher select{margin-right:.25em}.language-switcher{margin:0 auto;padding:0 0 24px;text-align:center}.language-switcher label{margin-right:.25em}.language-switcher label .dashicons{width:auto;height:auto}.login .language-switcher .button-primary{float:none;margin-bottom:0}@media screen and (max-height:550px){#login{padding:20px 0}#language-switcher{margin-top:0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{width:1rem;height:1rem}.interim-login input[type=checkbox]:checked:before{width:1.3125rem;height:1.3125rem;margin:-.1875rem 0 0 -.25rem}#language-switcher label,#language-switcher select{margin-right:0}}@media screen and (max-width:400px){.login .language-switcher .button-primary{display:block;margin:5px auto 0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/media-rtl.css b/tools/storybook/wordpress/css/media-rtl.css new file mode 100644 index 00000000000..e3d70fec827 --- /dev/null +++ b/tools/storybook/wordpress/css/media-rtl.css @@ -0,0 +1,1368 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +.media-item .describe { + border-collapse: collapse; + width: 100%; + border-top: 1px solid #dcdcde; + clear: both; + cursor: default; +} + +.media-item.media-blank .describe { + border: 0; +} + +.media-item .describe th { + vertical-align: top; + text-align: right; + padding: 5px 10px 10px; + width: 140px; +} + +.media-item .describe .align th { + padding-top: 0; +} + +.media-item .media-item-info tr { + background-color: transparent; +} + +.media-item .describe td { + padding: 0 0 8px 8px; + vertical-align: top; +} + +.media-item thead.media-item-info td { + padding: 4px 10px 0; +} + +.media-item .media-item-info .A1B1 { + padding: 0 10px 0 0; +} + +.media-item td.savesend { + padding-bottom: 15px; +} + +.media-item .thumbnail { + max-height: 128px; + max-width: 128px; +} + +.media-list-subtitle { + display: block; +} + +.media-list-title { + display: block; +} + +#wpbody-content #async-upload-wrap a { + display: none; +} + +.media-upload-form { + margin-top: 20px; +} + +.media-upload-form td label { + margin-left: 6px; + margin-right: 2px; +} + +.media-upload-form .align .field label { + display: inline; + padding: 0 23px 0 0; + margin: 0 3px 0 1em; + font-weight: 600; +} + +.media-upload-form tr.image-size label { + margin: 0 5px 0 0; + font-weight: 600; +} + +.media-upload-form th.label label { + font-weight: 600; + margin: 0.5em; + font-size: 13px; +} + +.media-upload-form th.label label span { + padding: 0 5px; +} + +.media-item .describe input[type="text"], +.media-item .describe textarea { + width: 460px; +} + +.media-item .describe p.help { + margin: 0; + padding: 0 5px 0 0; +} + +.describe-toggle-on, +.describe-toggle-off { + display: block; + line-height: 2.76923076; + float: left; + margin-left: 10px; +} + +.media-item-wrapper { + display: grid; + grid-template-columns: 1fr 1fr; +} + +.media-item .attachment-tools { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.media-item .edit-attachment { + padding: 14px 0; + display: block; + margin-left: 10px; +} + +.media-item .edit-attachment.copy-to-clipboard-container { + margin-top: 0; +} + +.media-item-copy-container .success { + line-height: 0; +} + +.media-item button .copy-attachment-url { + margin-top: 14px; +} + +.media-item .copy-to-clipboard-container { + margin-top: 7px; +} + +.media-item .describe-toggle-off, +.media-item.open .describe-toggle-on { + display: none; +} + +.media-item.open .describe-toggle-off { + display: block; +} + +.media-upload-form .media-item { + min-height: 70px; + margin-bottom: 1px; + position: relative; + width: 100%; + background: #fff; +} + +.media-upload-form .media-item, +.media-upload-form .media-item .error { + box-shadow: 0 1px 0 #dcdcde; +} + +#media-items:empty { + border: 0 none; +} + +.media-item .filename { + padding: 14px 0; + overflow: hidden; + margin-right: 6px; +} + +.media-item .pinkynail { + float: right; + margin: 0 0 0 10px; + max-height: 70px; + max-width: 70px; +} + +.media-item .startopen, +.media-item .startclosed { + display: none; +} + +.media-item .original { + position: relative; + height: 34px; +} + +.media-item .progress { + float: left; + height: 22px; + margin: 7px 6px; + width: 200px; + line-height: 2em; + padding: 0; + overflow: hidden; + border-radius: 22px; + background: #dcdcde; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.media-item .bar { + z-index: 9; + width: 0; + height: 100%; + margin-top: -22px; + border-radius: 22px; + background-color: #2271b1; + box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3); +} + +.media-item .progress .percent { + z-index: 10; + position: relative; + width: 200px; + padding: 0; + color: #fff; + text-align: center; + line-height: 22px; + font-weight: 400; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.upload-php .fixed .column-parent { + width: 15%; +} + +.js .html-uploader #plupload-upload-ui { + display: none; +} + +.js .html-uploader #html-upload-ui { + display: block; +} + +#html-upload-ui #async-upload { + font-size: 1em; +} + +.media-upload-form .media-item.error, +.media-upload-form .media-item .error { + width: auto; + margin: 0 0 1px; +} + +.media-upload-form .media-item .error { + padding: 10px 14px 10px 0; + min-height: 50px; +} + +.media-item .error-div button.dismiss { + float: left; + margin: 0 15px 0 10px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Library +------------------------------------------------------------------------------*/ + +.find-box { + background-color: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + width: 600px; + overflow: hidden; + margin-right: -300px; + position: fixed; + top: 30px; + bottom: 30px; + right: 50%; + z-index: 100105; +} + +.find-box-head { + background: #fff; + border-bottom: 1px solid #dcdcde; + height: 36px; + font-size: 18px; + font-weight: 600; + line-height: 2; + padding: 0 16px 0 36px; + position: absolute; + top: 0; + right: 0; + left: 0; +} + +.find-box-inside { + overflow: auto; + padding: 16px; + background-color: #fff; + position: absolute; + top: 37px; + bottom: 45px; + overflow-y: scroll; + width: 100%; + box-sizing: border-box; +} + +.find-box-search { + padding-bottom: 16px; +} + +.find-box-search .spinner { + float: none; + right: 105px; + position: absolute; +} + +.find-box-search, +#find-posts-response { + position: relative; /* RTL fix, #WP28010 */ +} + +#find-posts-input, +#find-posts-search { + float: right; +} + +#find-posts-input { + width: 140px; + height: 28px; + margin: 0 0 0 4px; +} + +.widefat .found-radio { + padding-left: 0; + width: 16px; +} + +#find-posts-close { + width: 36px; + height: 36px; + border: none; + padding: 0; + position: absolute; + top: 0; + left: 0; + cursor: pointer; + text-align: center; + background: none; + color: #646970; +} + +#find-posts-close:hover, +#find-posts-close:focus { + color: #135e96; +} + +#find-posts-close:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +#find-posts-close:before { + font: normal 20px/36px dashicons; + vertical-align: top; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f158"; +} + +.find-box-buttons { + padding: 8px 16px; + background: #fff; + border-top: 1px solid #dcdcde; + position: absolute; + bottom: 0; + right: 0; + left: 0; +} + +@media screen and (max-width: 782px) { + .find-box-inside { + bottom: 57px; + } +} + +@media screen and (max-width: 660px) { + + .find-box { + top: 0; + bottom: 0; + right: 0; + left: 0; + margin: 0; + width: 100%; + } + +} + +.ui-find-overlay { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 100100; +} + +.drag-drop #drag-drop-area { + border: 4px dashed #c3c4c7; + height: 200px; +} + +.drag-drop .drag-drop-inside { + margin: 60px auto 0; + width: 250px; +} + +.drag-drop-inside p { + font-size: 14px; + margin: 5px 0; + display: none; +} + +.drag-drop .drag-drop-inside p { + text-align: center; +} + +.drag-drop-inside p.drag-drop-info { + font-size: 20px; +} + +.drag-drop .drag-drop-inside p, +.drag-drop-inside p.drag-drop-buttons { + display: block; +} + +/* +#drag-drop-area:-moz-drag-over { + border-color: #83b4d8; +} +border color while dragging a file over the uploader drop area */ +.drag-drop.drag-over #drag-drop-area { + border-color: #9ec2e6; +} + +#plupload-upload-ui { + position: relative; +} + +/** + * Media Library grid view + */ + +.media-frame.mode-grid, +.media-frame.mode-grid .media-frame-content, +.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments, +.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper, +.media-frame.mode-grid .uploader-inline-content { + position: static; +} + +/* Regions we don't use at all */ +.media-frame.mode-grid .media-frame-title, +.media-frame.mode-grid .media-frame-router, +.media-frame.mode-grid .media-frame-menu { + display: none; +} + +.media-frame.mode-grid .media-frame-content { + background-color: transparent; + border: none; +} + +.upload-php .mode-grid .media-sidebar { + position: relative; + width: auto; + margin-top: 12px; + padding: 0 16px; + border-right: 4px solid #d63638; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + background-color: #fff; +} + +.upload-php .mode-grid .hide-sidebar .media-sidebar { + display: none; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status { + border-bottom: none; + padding-bottom: 0; + max-width: 100%; +} + +.upload-php .mode-grid .media-sidebar .upload-error { + margin: 12px 0; + padding: 4px 0 0; + border: none; + box-shadow: none; + background: none; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 { + display: none; +} + +.media-frame.mode-grid .uploader-inline { + position: relative; + top: auto; + left: auto; + right: auto; + bottom: auto; + padding-top: 0; + margin-top: 20px; + border: 4px dashed #c3c4c7; +} + +.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments, +.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper { + position: relative; + top: 94px; /* prevent jumping up when the toolbar becomes fixed */ + padding-bottom: 94px; /* offset for above so the bottom doesn't get cut off */ +} + +.media-frame.mode-grid .attachment:focus, +.media-frame.mode-grid .selected.attachment:focus, +.media-frame.mode-grid .attachment.details:focus { + box-shadow: + inset 0 0 2px 3px #f0f0f1, + inset 0 0 0 7px #4f94d4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -6px; +} + +.media-frame.mode-grid .selected.attachment { + box-shadow: + inset 0 0 0 5px #f0f0f1, + inset 0 0 0 7px #c3c4c7; +} + +.media-frame.mode-grid .attachment.details { + box-shadow: + inset 0 0 0 3px #f0f0f1, + inset 0 0 0 7px #4f94d4; +} + +.media-frame.mode-grid.mode-select .attachment .thumbnail { + opacity: 0.65; +} + +.media-frame.mode-select .attachment.selected .thumbnail { + opacity: 1; +} + +.media-frame.mode-grid .media-toolbar { + margin-bottom: 15px; + height: auto; +} + +.media-frame.mode-grid .media-toolbar select { + margin: 0 0 0 10px; +} + +.media-frame.mode-grid.mode-edit .media-toolbar-secondary > .select-mode-toggle-button { + margin: 0 0 0 8px; + vertical-align: middle; +} + +.media-frame.mode-grid .attachments-browser .bulk-select { + display: inline-block; + margin: 0 0 0 10px; +} + +.media-frame.mode-grid .search { + margin-top: 0; +} + +.media-search-input-label { + margin: 0 0 0 .2em; + vertical-align: baseline; +} + +.media-frame.mode-grid .media-search-input-label { + position: static; + margin: 0 0 0 .5em; +} + +.attachments-browser .media-toolbar-secondary > .media-button { + margin-left: 10px; +} + +.media-frame.mode-select .attachments-browser.fixed .media-toolbar { + position: fixed; + top: 32px; + right: auto; + left: 20px; + margin-top: 0; +} + +.media-frame.mode-grid .attachments-browser { + padding: 0; +} + +.media-frame.mode-grid .attachments-browser .attachments { + padding: 2px; +} + +.media-frame.mode-grid .attachments-browser .no-media { + color: #646970; /* same as no plugins and no themes */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/** + * Attachment details modal + */ + +.edit-attachment-frame { + display: block; + height: 100%; + width: 100%; +} + +.edit-attachment-frame .edit-media-header { + overflow: hidden; +} + +.upload-php .media-modal-close .media-modal-icon:before { + content: "\f335"; + font-size: 22px; +} + +.upload-php .media-modal-close, +.edit-attachment-frame .edit-media-header .left, +.edit-attachment-frame .edit-media-header .right { + cursor: pointer; + color: #787c82; + background-color: transparent; + height: 50px; + width: 50px; + padding: 0; + position: absolute; + text-align: center; + border: 0; + border-right: 1px solid #dcdcde; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.upload-php .media-modal-close { + top: 0; + left: 0; +} + +.edit-attachment-frame .edit-media-header .left { + left: 102px; +} + +.edit-attachment-frame .edit-media-header .right { + left: 51px; +} + +.edit-attachment-frame .media-frame-title { + right: 0; + left: 150px; /* leave space for prev/next/close */ +} + +.edit-attachment-frame .edit-media-header .right:before, +.edit-attachment-frame .edit-media-header .left:before { + font: normal 20px/50px dashicons !important; + display: inline; + font-weight: 300; +} + +.upload-php .media-modal-close:hover, +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:hover, +.edit-attachment-frame .edit-media-header .right:hover, +.edit-attachment-frame .edit-media-header .left:focus, +.edit-attachment-frame .edit-media-header .right:focus { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; + outline: none; + box-shadow: none; +} + +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:focus, +.edit-attachment-frame .edit-media-header .right:focus { + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.upload-php .media-modal-close:focus .media-modal-icon:before, +.upload-php .media-modal-close:hover .media-modal-icon:before { + color: #000; +} + +.edit-attachment-frame .edit-media-header .left:before { + content: "\f345"; +} + +.edit-attachment-frame .edit-media-header .right:before { + content: "\f341"; +} + +.edit-attachment-frame .edit-media-header [disabled], +.edit-attachment-frame .edit-media-header [disabled]:hover { + color: #c3c4c7; + background: inherit; + cursor: default; +} + +.edit-attachment-frame .media-frame-content, +.edit-attachment-frame .media-frame-router { + right: 0; +} + +.edit-attachment-frame .media-frame-content { + border-bottom: none; + bottom: 0; + top: 50px; +} + +.edit-attachment-frame .attachment-details { + position: absolute; + overflow: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); +} + +.edit-attachment-frame .attachment-media-view { + float: right; + width: 65%; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .thumbnail { + box-sizing: border-box; + padding: 16px; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .details-image { + display: block; + margin: 0 auto 16px; + max-width: 100%; + max-height: 90%; + max-height: calc( 100% - 42px ); /* leave space for actions underneath */ + background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 100% 0, 10px 10px; + background-size: 20px 20px; +} + +.edit-attachment-frame .attachment-media-view .details-image.icon { + background: none; +} + +.edit-attachment-frame .attachment-media-view .attachment-actions { + text-align: center; +} + +.edit-attachment-frame .wp-media-wrapper { + margin-bottom: 12px; +} + +.edit-attachment-frame input, +.edit-attachment-frame textarea { + padding: 6px 8px; + line-height: 1.14285714; +} + +.edit-attachment-frame .attachment-info { + overflow: auto; + box-sizing: border-box; + margin-bottom: 0; + padding: 12px 16px 0; + width: 35%; + height: 100%; + box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + border-bottom: 0; + border-right: 1px solid #dcdcde; + background: #f6f7f7; +} + +.edit-attachment-frame .attachment-info .details, +.edit-attachment-frame .attachment-info .settings { + position: relative; /* RTL fix, #WP29352 */ + overflow: hidden; + float: none; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #dcdcde; +} + +.edit-attachment-frame .attachment-info .filename { + font-weight: 400; + color: #646970; +} + +.edit-attachment-frame .attachment-info .thumbnail { + margin-bottom: 12px; +} + +.attachment-info .actions { + margin-bottom: 16px; +} + +.attachment-info .actions a { + display: inline; + text-decoration: none; +} + +.copy-to-clipboard-container { + display: flex; + align-items: center; + margin-top: 8px; + clear: both; +} + +.copy-to-clipboard-container .copy-attachment-url { + white-space: normal; +} + +.copy-to-clipboard-container .success { + color: #008a20; + margin-right: 8px; +} + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ +.wp_attachment_details .attachment-alt-text { + margin-bottom: 5px; +} + +.wp_attachment_details .attachment-alt-text-description { + margin-top: 5px; +} + +.wp_attachment_details label[for="content"] { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +.wp_attachment_details #attachment_caption { + height: 4em; +} + +.describe .image-editor { + vertical-align: top; +} + +.imgedit-wrap { + position: relative; + padding-top: 10px; +} + +.imgedit-settings p, +.imgedit-settings fieldset { + margin: 8px 0; +} + +.imgedit-settings legend { + margin-bottom: 5px; +} + +.describe .imgedit-wrap .imgedit-settings { + padding: 0 5px; +} + +.wp_attachment_holder div.updated { + margin-top: 0; +} + +.wp_attachment_holder .imgedit-wrap > div { + height: auto; +} + +.wp_attachment_holder .imgedit-wrap .imgedit-panel-content { + float: right; + padding: 3px 0 0 16px; + min-width: 400px; + max-width: calc( 100% - 266px ); +} + +.wp_attachment_holder .imgedit-wrap .imgedit-settings { + float: left; + width: 250px; +} + +.imgedit-settings input { + margin-top: 0; + vertical-align: middle; +} + +.imgedit-wait { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + background: #fff; + opacity: 0.7; + filter: alpha(opacity=70); + display: none; +} + +.imgedit-wait:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + right: 50%; + top: 50%; + margin: -10px -10px 0 0; + background: transparent url(../images/spinner.gif) no-repeat center; + background-size: 20px 20px; + transform: translateZ(0); +} + +.no-float { + float: none; +} + +.media-disabled, +.imgedit-settings .disabled { + /* WCAG 1.4.3 Text or images of text that are part of an inactive user + interface component ... have no contrast requirement. */ + color: #a7aaad; +} + +.A1B1 { + overflow: hidden; +} + +.wp_attachment_image .button, +.A1B1 .button { + float: right; +} + +.no-js .wp_attachment_image .button { + display: none; +} + +.wp_attachment_image .spinner, +.A1B1 .spinner { + float: right; +} + +.imgedit-menu { + margin: 0 0 12px; +} + +.imgedit-menu .note-no-rotate { + clear: both; + margin: 0; + padding: 1em 0 0; +} + +.image-editor .imgedit-menu .button { + display: inline-block; + width: auto; + min-height: 28px; + font-size: 13px; + line-height: 2; + margin: 0 0 8px 8px; + padding: 0 10px; +} + +.imgedit-menu .button:before { + font: normal 16px/1 dashicons; + margin-left: 8px; + speak: never; + vertical-align: middle; + position: relative; + top: -2px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.imgedit-menu .button.disabled { + color: #a7aaad; + border-color: #dcdcde; + background: #f6f7f7; + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; + transform: none; +} + +.imgedit-crop:before { + content: "\f165"; +} + +.imgedit-rleft:before { + content: "\f166"; +} + +.imgedit-rright:before { + content: "\f167"; +} + +.imgedit-flipv:before { + content: "\f168"; +} + +.imgedit-fliph:before { + content: "\f169"; +} + +.imgedit-undo:before { + content: "\f171"; +} + +.imgedit-redo:before { + content: "\f172"; +} + +.imgedit-crop-wrap { + position: relative; +} + +.imgedit-crop-wrap img { + background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 100% 0, 10px 10px; + background-size: 20px 20px; +} + +.imgedit-crop { + margin: 0 0 0 8px; +} + +.imgedit-rleft { + margin: 0 3px; +} + +.imgedit-rright { + margin: 0 3px 0 8px; +} + +.imgedit-flipv { + margin: 0 3px; +} + +.imgedit-fliph { + margin: 0 3px 0 8px; +} + +.imgedit-undo { + margin: 0 3px; +} + +.imgedit-redo { + margin: 0 3px 0 8px; +} + +.imgedit-thumbnail-preview { + margin: 10px 0 0 8px; +} + +.imgedit-thumbnail-preview-caption { + display: block; +} + +#poststuff .imgedit-group-top h2 { + display: inline-block; + margin: 0; + padding: 0; + font-size: 14px; + line-height: 1.4; +} + +#poststuff .imgedit-group-top .button-link { + text-decoration: none; + color: #1d2327; +} + +.imgedit-applyto .imgedit-label { + display: block; + padding: .5em 0 0; +} + +.imgedit-help { + display: none; + padding-bottom: 8px; +} + +.imgedit-help.imgedit-restore { + padding-bottom: 0; +} + +/* higher specificity than buttons */ +.image-editor .imgedit-settings .imgedit-help-toggle, +.image-editor .imgedit-settings .imgedit-help-toggle:hover, +.image-editor .imgedit-settings .imgedit-help-toggle:active { + border: 1px solid transparent; + margin: -1px -1px 0 0; + padding: 0; + background: transparent; + color: #2271b1; + font-size: 20px; + line-height: 1; + cursor: pointer; + box-sizing: content-box; + box-shadow: none; +} + +.image-editor .imgedit-settings .imgedit-help-toggle:focus { + color: #2271b1; + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.form-table td.imgedit-response { + padding: 0; +} + +.imgedit-submit { + margin: 8px 0 0; +} + +.imgedit-submit-btn { + margin-right: 20px; +} + +.imgedit-wrap .nowrap { + white-space: nowrap; + font-size: 12px; + line-height: inherit; +} + +span.imgedit-scale-warn { + color: #d63638; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-save-target { + margin: 8px 0; +} + +.imgedit-save-target legend { + font-weight: 600; +} + +.imgedit-group { + margin-bottom: 8px; + padding: 10px; +} + +.imgedit-settings .imgedit-original-dimensions { + display: inline-block; +} + +.imgedit-settings .imgedit-scale input[type="text"], +.imgedit-settings .imgedit-crop-ratio input[type="text"], +.imgedit-settings .imgedit-crop-sel input[type="text"] { + width: 80px; + font-size: 14px; + padding: 0 8px; +} + +.imgedit-separator { + display: inline-block; + width: 7px; + text-align: center; + font-size: 13px; + color: #3c434a; +} + +.imgedit-settings .imgedit-scale-button-wrapper { + margin-top: 0.3077em; + display: block; +} + +.imgedit-settings .imgedit-scale .button { + margin-bottom: 0; +} + +audio, video { + display: inline-block; + max-width: 100%; +} + +.wp-core-ui .mejs-container { + width: 100%; + max-width: 100%; +} + +.wp-core-ui .mejs-container * { + box-sizing: border-box; +} + +.wp-core-ui .mejs-time { + box-sizing: content-box; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .imgedit-wait:before { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + .wp_attachment_details label[for="content"] { + font-size: 14px; + line-height: 1.5; + } + + .media-upload-form .media-item.error, + .media-upload-form .media-item .error { + font-size: 13px; + line-height: 1.5; + } + + .media-upload-form .media-item.error { + padding: 1px 10px; + } + + .media-upload-form .media-item .error { + padding: 10px 12px 10px 0; + } + + .imgedit-settings .imgedit-scale input[type="text"], + .imgedit-settings .imgedit-crop-ratio input[type="text"], + .imgedit-settings .imgedit-crop-sel input[type="text"] { + font-size: 16px; + padding: 6px 10px; + } + + .wp_attachment_holder .imgedit-wrap .imgedit-panel-content, + .wp_attachment_holder .imgedit-wrap .imgedit-settings { + float: none; + width: auto; + max-width: none; + padding-bottom: 16px; + } + + .copy-to-clipboard-container .success { + font-size: 14px; + } + + /* Restructure image editor on narrow viewports. */ + .imgedit-crop-wrap img{ + width: 100%; + } + + .media-modal .imgedit-wrap .imgedit-panel-content, + .media-modal .imgedit-wrap .imgedit-settings { + position: initial !important; + } + + .media-modal .imgedit-wrap .imgedit-settings { + box-sizing: border-box; + width: 100% !important; + } + + .imgedit-settings .imgedit-scale-button-wrapper { + display: inline-block; + } +} + +@media only screen and (max-width: 600px) { + .media-item-wrapper { + grid-template-columns: 1fr; + } +} + +/** + * Media queries for media grid. + */ + +@media only screen and (max-width: 1120px) { + /* override for media-views.css */ + #wp-media-grid .wp-filter .attachment-filters { + max-width: 100%; + } +} + +@media only screen and (max-width: 782px) { + .media-frame.mode-select .attachments-browser.fixed .media-toolbar { + top: 46px; + left: 10px; + } +} + +@media only screen and (max-width: 600px) { + .media-frame.mode-select .attachments-browser.fixed .media-toolbar { + top: 0; + } +} + +@media only screen and (max-width: 480px) { + .edit-attachment-frame .media-frame-title { + left: 110px; + } + + .upload-php .media-modal-close, + .edit-attachment-frame .edit-media-header .left, + .edit-attachment-frame .edit-media-header .right { + width: 40px; + height: 40px; + } + + .edit-attachment-frame .edit-media-header .right:before, + .edit-attachment-frame .edit-media-header .left:before { + line-height: 40px !important; + } + + .edit-attachment-frame .edit-media-header .left { + left: 82px; + } + + .edit-attachment-frame .edit-media-header .right { + left: 41px; + } + + .edit-attachment-frame .media-frame-content { + top: 40px; + } + + .edit-attachment-frame .attachment-media-view { + float: none; + height: auto; + width: 100%; + } + + .edit-attachment-frame .attachment-info { + height: auto; + width: 100%; + } +} + +@media only screen and (max-width: 640px), screen and (max-height: 400px) { + .upload-php .mode-grid .media-sidebar{ + max-width: 100%; + } +} diff --git a/tools/storybook/wordpress/css/media-rtl.min.css b/tools/storybook/wordpress/css/media-rtl.min.css new file mode 100644 index 00000000000..4ee4e4edb70 --- /dev/null +++ b/tools/storybook/wordpress/css/media-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #dcdcde;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}.media-list-subtitle{display:block}.media-list-title{display:block}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on{display:block;line-height:2.76923076;float:left;margin-left:10px}.media-item-wrapper{display:grid;grid-template-columns:1fr 1fr}.media-item .attachment-tools{display:flex;justify-content:flex-end;align-items:center}.media-item .edit-attachment{padding:14px 0;display:block;margin-left:10px}.media-item .edit-attachment.copy-to-clipboard-container{margin-top:0}.media-item-copy-container .success{line-height:0}.media-item button .copy-attachment-url{margin-top:14px}.media-item .copy-to-clipboard-container{margin-top:7px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:70px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #dcdcde}#media-items:empty{border:0 none}.media-item .filename{padding:14px 0;overflow:hidden;margin-right:6px}.media-item .pinkynail{float:right;margin:0 0 0 10px;max-height:70px;max-width:70px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#dcdcde;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#2271b1;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}#html-upload-ui #async-upload{font-size:1em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 14px 10px 0;min-height:50px}.media-item .error-div button.dismiss{float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-right:-300px;position:fixed;top:30px;bottom:30px;right:50%;z-index:100105}.find-box-head{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;right:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:right}#find-posts-input{width:140px;height:28px;margin:0 0 0 4px}.widefat .found-radio{padding-left:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;left:0;cursor:pointer;text-align:center;background:0 0;color:#646970}#find-posts-close:focus,#find-posts-close:hover{color:#135e96}#find-posts-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;z-index:100100}.drag-drop #drag-drop-area{border:4px dashed #c3c4c7;height:200px}.drag-drop .drag-drop-inside{margin:60px auto 0;width:250px}.drag-drop-inside p{font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#9ec2e6}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper,.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-right:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #c3c4c7}.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments,.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f0f0f1,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f0f0f1,inset 0 0 0 7px #c3c4c7}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f0f0f1,inset 0 0 0 7px #4f94d4}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 0 0 10px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 0 0 8px;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 0 0 10px}.media-frame.mode-grid .search{margin-top:0}.media-search-input-label{margin:0 0 0 .2em;vertical-align:baseline}.media-frame.mode-grid .media-search-input-label{position:static;margin:0 0 0 .5em}.attachments-browser .media-toolbar-secondary>.media-button{margin-left:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;right:auto;left:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#787c82;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;left:0}.edit-attachment-frame .edit-media-header .left{left:102px}.edit-attachment-frame .edit-media-header .right{left:51px}.edit-attachment-frame .media-frame-title{right:0;left:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .right:focus,.upload-php .media-modal-close:focus{outline:2px solid transparent;outline-offset:-2px}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before{content:"\f345"}.edit-attachment-frame .edit-media-header .right:before{content:"\f341"}.edit-attachment-frame .edit-media-header [disabled],.edit-attachment-frame .edit-media-header [disabled]:hover{color:#c3c4c7;background:inherit;cursor:default}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:right;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .details-image.icon{background:0 0}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:1.14285714}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-right:1px solid #dcdcde;background:#f6f7f7}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #dcdcde}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#646970}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.copy-to-clipboard-container{display:flex;align-items:center;margin-top:8px;clear:both}.copy-to-clipboard-container .copy-attachment-url{white-space:normal}.copy-to-clipboard-container .success{color:#008a20;margin-right:8px}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{float:right;padding:3px 0 0 16px;min-width:400px;max-width:calc(100% - 266px)}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a7aaad}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:right}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:right}.imgedit-menu{margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{display:inline-block;width:auto;min-height:28px;font-size:13px;line-height:2;margin:0 0 8px 8px;padding:0 10px}.imgedit-menu .button:before{font:normal 16px/1 dashicons;margin-left:8px;speak:never;vertical-align:middle;position:relative;top:-2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.imgedit-menu .button.disabled{color:#a7aaad;border-color:#dcdcde;background:#f6f7f7;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#1d2327}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;padding-bottom:8px}.imgedit-help.imgedit-restore{padding-bottom:0}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px -1px 0 0;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#d63638;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-save-target legend{font-weight:600}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-original-dimensions{display:inline-block}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:80px;font-size:14px;padding:0 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;font-size:13px;color:#3c434a}.imgedit-settings .imgedit-scale-button-wrapper{margin-top:.3077em;display:block}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.wp-core-ui .mejs-container{width:100%;max-width:100%}.wp-core-ui .mejs-container *{box-sizing:border-box}.wp-core-ui .mejs-time{box-sizing:content-box}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{font-size:16px;padding:6px 10px}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content,.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:none;width:auto;max-width:none;padding-bottom:16px}.copy-to-clipboard-container .success{font-size:14px}.imgedit-crop-wrap img{width:100%}.media-modal .imgedit-wrap .imgedit-panel-content,.media-modal .imgedit-wrap .imgedit-settings{position:initial!important}.media-modal .imgedit-wrap .imgedit-settings{box-sizing:border-box;width:100%!important}.imgedit-settings .imgedit-scale-button-wrapper{display:inline-block}}@media only screen and (max-width:600px){.media-item-wrapper{grid-template-columns:1fr}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/media.css b/tools/storybook/wordpress/css/media.css new file mode 100644 index 00000000000..d1f333e3431 --- /dev/null +++ b/tools/storybook/wordpress/css/media.css @@ -0,0 +1,1367 @@ +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +.media-item .describe { + border-collapse: collapse; + width: 100%; + border-top: 1px solid #dcdcde; + clear: both; + cursor: default; +} + +.media-item.media-blank .describe { + border: 0; +} + +.media-item .describe th { + vertical-align: top; + text-align: left; + padding: 5px 10px 10px; + width: 140px; +} + +.media-item .describe .align th { + padding-top: 0; +} + +.media-item .media-item-info tr { + background-color: transparent; +} + +.media-item .describe td { + padding: 0 8px 8px 0; + vertical-align: top; +} + +.media-item thead.media-item-info td { + padding: 4px 10px 0; +} + +.media-item .media-item-info .A1B1 { + padding: 0 0 0 10px; +} + +.media-item td.savesend { + padding-bottom: 15px; +} + +.media-item .thumbnail { + max-height: 128px; + max-width: 128px; +} + +.media-list-subtitle { + display: block; +} + +.media-list-title { + display: block; +} + +#wpbody-content #async-upload-wrap a { + display: none; +} + +.media-upload-form { + margin-top: 20px; +} + +.media-upload-form td label { + margin-right: 6px; + margin-left: 2px; +} + +.media-upload-form .align .field label { + display: inline; + padding: 0 0 0 23px; + margin: 0 1em 0 3px; + font-weight: 600; +} + +.media-upload-form tr.image-size label { + margin: 0 0 0 5px; + font-weight: 600; +} + +.media-upload-form th.label label { + font-weight: 600; + margin: 0.5em; + font-size: 13px; +} + +.media-upload-form th.label label span { + padding: 0 5px; +} + +.media-item .describe input[type="text"], +.media-item .describe textarea { + width: 460px; +} + +.media-item .describe p.help { + margin: 0; + padding: 0 0 0 5px; +} + +.describe-toggle-on, +.describe-toggle-off { + display: block; + line-height: 2.76923076; + float: right; + margin-right: 10px; +} + +.media-item-wrapper { + display: grid; + grid-template-columns: 1fr 1fr; +} + +.media-item .attachment-tools { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.media-item .edit-attachment { + padding: 14px 0; + display: block; + margin-right: 10px; +} + +.media-item .edit-attachment.copy-to-clipboard-container { + margin-top: 0; +} + +.media-item-copy-container .success { + line-height: 0; +} + +.media-item button .copy-attachment-url { + margin-top: 14px; +} + +.media-item .copy-to-clipboard-container { + margin-top: 7px; +} + +.media-item .describe-toggle-off, +.media-item.open .describe-toggle-on { + display: none; +} + +.media-item.open .describe-toggle-off { + display: block; +} + +.media-upload-form .media-item { + min-height: 70px; + margin-bottom: 1px; + position: relative; + width: 100%; + background: #fff; +} + +.media-upload-form .media-item, +.media-upload-form .media-item .error { + box-shadow: 0 1px 0 #dcdcde; +} + +#media-items:empty { + border: 0 none; +} + +.media-item .filename { + padding: 14px 0; + overflow: hidden; + margin-left: 6px; +} + +.media-item .pinkynail { + float: left; + margin: 0 10px 0 0; + max-height: 70px; + max-width: 70px; +} + +.media-item .startopen, +.media-item .startclosed { + display: none; +} + +.media-item .original { + position: relative; + height: 34px; +} + +.media-item .progress { + float: right; + height: 22px; + margin: 7px 6px; + width: 200px; + line-height: 2em; + padding: 0; + overflow: hidden; + border-radius: 22px; + background: #dcdcde; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.media-item .bar { + z-index: 9; + width: 0; + height: 100%; + margin-top: -22px; + border-radius: 22px; + background-color: #2271b1; + box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3); +} + +.media-item .progress .percent { + z-index: 10; + position: relative; + width: 200px; + padding: 0; + color: #fff; + text-align: center; + line-height: 22px; + font-weight: 400; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.upload-php .fixed .column-parent { + width: 15%; +} + +.js .html-uploader #plupload-upload-ui { + display: none; +} + +.js .html-uploader #html-upload-ui { + display: block; +} + +#html-upload-ui #async-upload { + font-size: 1em; +} + +.media-upload-form .media-item.error, +.media-upload-form .media-item .error { + width: auto; + margin: 0 0 1px; +} + +.media-upload-form .media-item .error { + padding: 10px 0 10px 14px; + min-height: 50px; +} + +.media-item .error-div button.dismiss { + float: right; + margin: 0 10px 0 15px; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Library +------------------------------------------------------------------------------*/ + +.find-box { + background-color: #fff; + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + width: 600px; + overflow: hidden; + margin-left: -300px; + position: fixed; + top: 30px; + bottom: 30px; + left: 50%; + z-index: 100105; +} + +.find-box-head { + background: #fff; + border-bottom: 1px solid #dcdcde; + height: 36px; + font-size: 18px; + font-weight: 600; + line-height: 2; + padding: 0 36px 0 16px; + position: absolute; + top: 0; + left: 0; + right: 0; +} + +.find-box-inside { + overflow: auto; + padding: 16px; + background-color: #fff; + position: absolute; + top: 37px; + bottom: 45px; + overflow-y: scroll; + width: 100%; + box-sizing: border-box; +} + +.find-box-search { + padding-bottom: 16px; +} + +.find-box-search .spinner { + float: none; + left: 105px; + position: absolute; +} + +.find-box-search, +#find-posts-response { + position: relative; /* RTL fix, #WP28010 */ +} + +#find-posts-input, +#find-posts-search { + float: left; +} + +#find-posts-input { + width: 140px; + height: 28px; + margin: 0 4px 0 0; +} + +.widefat .found-radio { + padding-right: 0; + width: 16px; +} + +#find-posts-close { + width: 36px; + height: 36px; + border: none; + padding: 0; + position: absolute; + top: 0; + right: 0; + cursor: pointer; + text-align: center; + background: none; + color: #646970; +} + +#find-posts-close:hover, +#find-posts-close:focus { + color: #135e96; +} + +#find-posts-close:focus { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +#find-posts-close:before { + font: normal 20px/36px dashicons; + vertical-align: top; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\f158"; +} + +.find-box-buttons { + padding: 8px 16px; + background: #fff; + border-top: 1px solid #dcdcde; + position: absolute; + bottom: 0; + left: 0; + right: 0; +} + +@media screen and (max-width: 782px) { + .find-box-inside { + bottom: 57px; + } +} + +@media screen and (max-width: 660px) { + + .find-box { + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 0; + width: 100%; + } + +} + +.ui-find-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: #000; + opacity: 0.7; + filter: alpha(opacity=70); + z-index: 100100; +} + +.drag-drop #drag-drop-area { + border: 4px dashed #c3c4c7; + height: 200px; +} + +.drag-drop .drag-drop-inside { + margin: 60px auto 0; + width: 250px; +} + +.drag-drop-inside p { + font-size: 14px; + margin: 5px 0; + display: none; +} + +.drag-drop .drag-drop-inside p { + text-align: center; +} + +.drag-drop-inside p.drag-drop-info { + font-size: 20px; +} + +.drag-drop .drag-drop-inside p, +.drag-drop-inside p.drag-drop-buttons { + display: block; +} + +/* +#drag-drop-area:-moz-drag-over { + border-color: #83b4d8; +} +border color while dragging a file over the uploader drop area */ +.drag-drop.drag-over #drag-drop-area { + border-color: #9ec2e6; +} + +#plupload-upload-ui { + position: relative; +} + +/** + * Media Library grid view + */ + +.media-frame.mode-grid, +.media-frame.mode-grid .media-frame-content, +.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments, +.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper, +.media-frame.mode-grid .uploader-inline-content { + position: static; +} + +/* Regions we don't use at all */ +.media-frame.mode-grid .media-frame-title, +.media-frame.mode-grid .media-frame-router, +.media-frame.mode-grid .media-frame-menu { + display: none; +} + +.media-frame.mode-grid .media-frame-content { + background-color: transparent; + border: none; +} + +.upload-php .mode-grid .media-sidebar { + position: relative; + width: auto; + margin-top: 12px; + padding: 0 16px; + border-left: 4px solid #d63638; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + background-color: #fff; +} + +.upload-php .mode-grid .hide-sidebar .media-sidebar { + display: none; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status { + border-bottom: none; + padding-bottom: 0; + max-width: 100%; +} + +.upload-php .mode-grid .media-sidebar .upload-error { + margin: 12px 0; + padding: 4px 0 0; + border: none; + box-shadow: none; + background: none; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 { + display: none; +} + +.media-frame.mode-grid .uploader-inline { + position: relative; + top: auto; + right: auto; + left: auto; + bottom: auto; + padding-top: 0; + margin-top: 20px; + border: 4px dashed #c3c4c7; +} + +.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments, +.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper { + position: relative; + top: 94px; /* prevent jumping up when the toolbar becomes fixed */ + padding-bottom: 94px; /* offset for above so the bottom doesn't get cut off */ +} + +.media-frame.mode-grid .attachment:focus, +.media-frame.mode-grid .selected.attachment:focus, +.media-frame.mode-grid .attachment.details:focus { + box-shadow: + inset 0 0 2px 3px #f0f0f1, + inset 0 0 0 7px #4f94d4; + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -6px; +} + +.media-frame.mode-grid .selected.attachment { + box-shadow: + inset 0 0 0 5px #f0f0f1, + inset 0 0 0 7px #c3c4c7; +} + +.media-frame.mode-grid .attachment.details { + box-shadow: + inset 0 0 0 3px #f0f0f1, + inset 0 0 0 7px #4f94d4; +} + +.media-frame.mode-grid.mode-select .attachment .thumbnail { + opacity: 0.65; +} + +.media-frame.mode-select .attachment.selected .thumbnail { + opacity: 1; +} + +.media-frame.mode-grid .media-toolbar { + margin-bottom: 15px; + height: auto; +} + +.media-frame.mode-grid .media-toolbar select { + margin: 0 10px 0 0; +} + +.media-frame.mode-grid.mode-edit .media-toolbar-secondary > .select-mode-toggle-button { + margin: 0 8px 0 0; + vertical-align: middle; +} + +.media-frame.mode-grid .attachments-browser .bulk-select { + display: inline-block; + margin: 0 10px 0 0; +} + +.media-frame.mode-grid .search { + margin-top: 0; +} + +.media-search-input-label { + margin: 0 .2em 0 0; + vertical-align: baseline; +} + +.media-frame.mode-grid .media-search-input-label { + position: static; + margin: 0 .5em 0 0; +} + +.attachments-browser .media-toolbar-secondary > .media-button { + margin-right: 10px; +} + +.media-frame.mode-select .attachments-browser.fixed .media-toolbar { + position: fixed; + top: 32px; + left: auto; + right: 20px; + margin-top: 0; +} + +.media-frame.mode-grid .attachments-browser { + padding: 0; +} + +.media-frame.mode-grid .attachments-browser .attachments { + padding: 2px; +} + +.media-frame.mode-grid .attachments-browser .no-media { + color: #646970; /* same as no plugins and no themes */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0 0; + text-align: center; +} + +/** + * Attachment details modal + */ + +.edit-attachment-frame { + display: block; + height: 100%; + width: 100%; +} + +.edit-attachment-frame .edit-media-header { + overflow: hidden; +} + +.upload-php .media-modal-close .media-modal-icon:before { + content: "\f335"; + font-size: 22px; +} + +.upload-php .media-modal-close, +.edit-attachment-frame .edit-media-header .left, +.edit-attachment-frame .edit-media-header .right { + cursor: pointer; + color: #787c82; + background-color: transparent; + height: 50px; + width: 50px; + padding: 0; + position: absolute; + text-align: center; + border: 0; + border-left: 1px solid #dcdcde; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.upload-php .media-modal-close { + top: 0; + right: 0; +} + +.edit-attachment-frame .edit-media-header .left { + right: 102px; +} + +.edit-attachment-frame .edit-media-header .right { + right: 51px; +} + +.edit-attachment-frame .media-frame-title { + left: 0; + right: 150px; /* leave space for prev/next/close */ +} + +.edit-attachment-frame .edit-media-header .right:before, +.edit-attachment-frame .edit-media-header .left:before { + font: normal 20px/50px dashicons !important; + display: inline; + font-weight: 300; +} + +.upload-php .media-modal-close:hover, +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:hover, +.edit-attachment-frame .edit-media-header .right:hover, +.edit-attachment-frame .edit-media-header .left:focus, +.edit-attachment-frame .edit-media-header .right:focus { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; + outline: none; + box-shadow: none; +} + +.upload-php .media-modal-close:focus, +.edit-attachment-frame .edit-media-header .left:focus, +.edit-attachment-frame .edit-media-header .right:focus { + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.upload-php .media-modal-close:focus .media-modal-icon:before, +.upload-php .media-modal-close:hover .media-modal-icon:before { + color: #000; +} + +.edit-attachment-frame .edit-media-header .left:before { + content: "\f341"; +} + +.edit-attachment-frame .edit-media-header .right:before { + content: "\f345"; +} + +.edit-attachment-frame .edit-media-header [disabled], +.edit-attachment-frame .edit-media-header [disabled]:hover { + color: #c3c4c7; + background: inherit; + cursor: default; +} + +.edit-attachment-frame .media-frame-content, +.edit-attachment-frame .media-frame-router { + left: 0; +} + +.edit-attachment-frame .media-frame-content { + border-bottom: none; + bottom: 0; + top: 50px; +} + +.edit-attachment-frame .attachment-details { + position: absolute; + overflow: auto; + top: 0; + bottom: 0; + right: 0; + left: 0; + box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); +} + +.edit-attachment-frame .attachment-media-view { + float: left; + width: 65%; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .thumbnail { + box-sizing: border-box; + padding: 16px; + height: 100%; +} + +.edit-attachment-frame .attachment-media-view .details-image { + display: block; + margin: 0 auto 16px; + max-width: 100%; + max-height: 90%; + max-height: calc( 100% - 42px ); /* leave space for actions underneath */ + background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; +} + +.edit-attachment-frame .attachment-media-view .details-image.icon { + background: none; +} + +.edit-attachment-frame .attachment-media-view .attachment-actions { + text-align: center; +} + +.edit-attachment-frame .wp-media-wrapper { + margin-bottom: 12px; +} + +.edit-attachment-frame input, +.edit-attachment-frame textarea { + padding: 6px 8px; + line-height: 1.14285714; +} + +.edit-attachment-frame .attachment-info { + overflow: auto; + box-sizing: border-box; + margin-bottom: 0; + padding: 12px 16px 0; + width: 35%; + height: 100%; + box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + border-bottom: 0; + border-left: 1px solid #dcdcde; + background: #f6f7f7; +} + +.edit-attachment-frame .attachment-info .details, +.edit-attachment-frame .attachment-info .settings { + position: relative; /* RTL fix, #WP29352 */ + overflow: hidden; + float: none; + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #dcdcde; +} + +.edit-attachment-frame .attachment-info .filename { + font-weight: 400; + color: #646970; +} + +.edit-attachment-frame .attachment-info .thumbnail { + margin-bottom: 12px; +} + +.attachment-info .actions { + margin-bottom: 16px; +} + +.attachment-info .actions a { + display: inline; + text-decoration: none; +} + +.copy-to-clipboard-container { + display: flex; + align-items: center; + margin-top: 8px; + clear: both; +} + +.copy-to-clipboard-container .copy-attachment-url { + white-space: normal; +} + +.copy-to-clipboard-container .success { + color: #008a20; + margin-left: 8px; +} + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ +.wp_attachment_details .attachment-alt-text { + margin-bottom: 5px; +} + +.wp_attachment_details .attachment-alt-text-description { + margin-top: 5px; +} + +.wp_attachment_details label[for="content"] { + font-size: 13px; + line-height: 1.5; + margin: 1em 0; +} + +.wp_attachment_details #attachment_caption { + height: 4em; +} + +.describe .image-editor { + vertical-align: top; +} + +.imgedit-wrap { + position: relative; + padding-top: 10px; +} + +.imgedit-settings p, +.imgedit-settings fieldset { + margin: 8px 0; +} + +.imgedit-settings legend { + margin-bottom: 5px; +} + +.describe .imgedit-wrap .imgedit-settings { + padding: 0 5px; +} + +.wp_attachment_holder div.updated { + margin-top: 0; +} + +.wp_attachment_holder .imgedit-wrap > div { + height: auto; +} + +.wp_attachment_holder .imgedit-wrap .imgedit-panel-content { + float: left; + padding: 3px 16px 0 0; + min-width: 400px; + max-width: calc( 100% - 266px ); +} + +.wp_attachment_holder .imgedit-wrap .imgedit-settings { + float: right; + width: 250px; +} + +.imgedit-settings input { + margin-top: 0; + vertical-align: middle; +} + +.imgedit-wait { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + background: #fff; + opacity: 0.7; + filter: alpha(opacity=70); + display: none; +} + +.imgedit-wait:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + left: 50%; + top: 50%; + margin: -10px 0 0 -10px; + background: transparent url(../images/spinner.gif) no-repeat center; + background-size: 20px 20px; + transform: translateZ(0); +} + +.no-float { + float: none; +} + +.media-disabled, +.imgedit-settings .disabled { + /* WCAG 1.4.3 Text or images of text that are part of an inactive user + interface component ... have no contrast requirement. */ + color: #a7aaad; +} + +.A1B1 { + overflow: hidden; +} + +.wp_attachment_image .button, +.A1B1 .button { + float: left; +} + +.no-js .wp_attachment_image .button { + display: none; +} + +.wp_attachment_image .spinner, +.A1B1 .spinner { + float: left; +} + +.imgedit-menu { + margin: 0 0 12px; +} + +.imgedit-menu .note-no-rotate { + clear: both; + margin: 0; + padding: 1em 0 0; +} + +.image-editor .imgedit-menu .button { + display: inline-block; + width: auto; + min-height: 28px; + font-size: 13px; + line-height: 2; + margin: 0 8px 8px 0; + padding: 0 10px; +} + +.imgedit-menu .button:before { + font: normal 16px/1 dashicons; + margin-right: 8px; + speak: never; + vertical-align: middle; + position: relative; + top: -2px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.imgedit-menu .button.disabled { + color: #a7aaad; + border-color: #dcdcde; + background: #f6f7f7; + box-shadow: none; + text-shadow: 0 1px 0 #fff; + cursor: default; + transform: none; +} + +.imgedit-crop:before { + content: "\f165"; +} + +.imgedit-rleft:before { + content: "\f166"; +} + +.imgedit-rright:before { + content: "\f167"; +} + +.imgedit-flipv:before { + content: "\f168"; +} + +.imgedit-fliph:before { + content: "\f169"; +} + +.imgedit-undo:before { + content: "\f171"; +} + +.imgedit-redo:before { + content: "\f172"; +} + +.imgedit-crop-wrap { + position: relative; +} + +.imgedit-crop-wrap img { + background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; +} + +.imgedit-crop { + margin: 0 8px 0 0; +} + +.imgedit-rleft { + margin: 0 3px; +} + +.imgedit-rright { + margin: 0 8px 0 3px; +} + +.imgedit-flipv { + margin: 0 3px; +} + +.imgedit-fliph { + margin: 0 8px 0 3px; +} + +.imgedit-undo { + margin: 0 3px; +} + +.imgedit-redo { + margin: 0 8px 0 3px; +} + +.imgedit-thumbnail-preview { + margin: 10px 8px 0 0; +} + +.imgedit-thumbnail-preview-caption { + display: block; +} + +#poststuff .imgedit-group-top h2 { + display: inline-block; + margin: 0; + padding: 0; + font-size: 14px; + line-height: 1.4; +} + +#poststuff .imgedit-group-top .button-link { + text-decoration: none; + color: #1d2327; +} + +.imgedit-applyto .imgedit-label { + display: block; + padding: .5em 0 0; +} + +.imgedit-help { + display: none; + padding-bottom: 8px; +} + +.imgedit-help.imgedit-restore { + padding-bottom: 0; +} + +/* higher specificity than buttons */ +.image-editor .imgedit-settings .imgedit-help-toggle, +.image-editor .imgedit-settings .imgedit-help-toggle:hover, +.image-editor .imgedit-settings .imgedit-help-toggle:active { + border: 1px solid transparent; + margin: -1px 0 0 -1px; + padding: 0; + background: transparent; + color: #2271b1; + font-size: 20px; + line-height: 1; + cursor: pointer; + box-sizing: content-box; + box-shadow: none; +} + +.image-editor .imgedit-settings .imgedit-help-toggle:focus { + color: #2271b1; + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; +} + +.form-table td.imgedit-response { + padding: 0; +} + +.imgedit-submit { + margin: 8px 0 0; +} + +.imgedit-submit-btn { + margin-left: 20px; +} + +.imgedit-wrap .nowrap { + white-space: nowrap; + font-size: 12px; + line-height: inherit; +} + +span.imgedit-scale-warn { + color: #d63638; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-save-target { + margin: 8px 0; +} + +.imgedit-save-target legend { + font-weight: 600; +} + +.imgedit-group { + margin-bottom: 8px; + padding: 10px; +} + +.imgedit-settings .imgedit-original-dimensions { + display: inline-block; +} + +.imgedit-settings .imgedit-scale input[type="text"], +.imgedit-settings .imgedit-crop-ratio input[type="text"], +.imgedit-settings .imgedit-crop-sel input[type="text"] { + width: 80px; + font-size: 14px; + padding: 0 8px; +} + +.imgedit-separator { + display: inline-block; + width: 7px; + text-align: center; + font-size: 13px; + color: #3c434a; +} + +.imgedit-settings .imgedit-scale-button-wrapper { + margin-top: 0.3077em; + display: block; +} + +.imgedit-settings .imgedit-scale .button { + margin-bottom: 0; +} + +audio, video { + display: inline-block; + max-width: 100%; +} + +.wp-core-ui .mejs-container { + width: 100%; + max-width: 100%; +} + +.wp-core-ui .mejs-container * { + box-sizing: border-box; +} + +.wp-core-ui .mejs-time { + box-sizing: content-box; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .imgedit-wait:before { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + .wp_attachment_details label[for="content"] { + font-size: 14px; + line-height: 1.5; + } + + .media-upload-form .media-item.error, + .media-upload-form .media-item .error { + font-size: 13px; + line-height: 1.5; + } + + .media-upload-form .media-item.error { + padding: 1px 10px; + } + + .media-upload-form .media-item .error { + padding: 10px 0 10px 12px; + } + + .imgedit-settings .imgedit-scale input[type="text"], + .imgedit-settings .imgedit-crop-ratio input[type="text"], + .imgedit-settings .imgedit-crop-sel input[type="text"] { + font-size: 16px; + padding: 6px 10px; + } + + .wp_attachment_holder .imgedit-wrap .imgedit-panel-content, + .wp_attachment_holder .imgedit-wrap .imgedit-settings { + float: none; + width: auto; + max-width: none; + padding-bottom: 16px; + } + + .copy-to-clipboard-container .success { + font-size: 14px; + } + + /* Restructure image editor on narrow viewports. */ + .imgedit-crop-wrap img{ + width: 100%; + } + + .media-modal .imgedit-wrap .imgedit-panel-content, + .media-modal .imgedit-wrap .imgedit-settings { + position: initial !important; + } + + .media-modal .imgedit-wrap .imgedit-settings { + box-sizing: border-box; + width: 100% !important; + } + + .imgedit-settings .imgedit-scale-button-wrapper { + display: inline-block; + } +} + +@media only screen and (max-width: 600px) { + .media-item-wrapper { + grid-template-columns: 1fr; + } +} + +/** + * Media queries for media grid. + */ + +@media only screen and (max-width: 1120px) { + /* override for media-views.css */ + #wp-media-grid .wp-filter .attachment-filters { + max-width: 100%; + } +} + +@media only screen and (max-width: 782px) { + .media-frame.mode-select .attachments-browser.fixed .media-toolbar { + top: 46px; + right: 10px; + } +} + +@media only screen and (max-width: 600px) { + .media-frame.mode-select .attachments-browser.fixed .media-toolbar { + top: 0; + } +} + +@media only screen and (max-width: 480px) { + .edit-attachment-frame .media-frame-title { + right: 110px; + } + + .upload-php .media-modal-close, + .edit-attachment-frame .edit-media-header .left, + .edit-attachment-frame .edit-media-header .right { + width: 40px; + height: 40px; + } + + .edit-attachment-frame .edit-media-header .right:before, + .edit-attachment-frame .edit-media-header .left:before { + line-height: 40px !important; + } + + .edit-attachment-frame .edit-media-header .left { + right: 82px; + } + + .edit-attachment-frame .edit-media-header .right { + right: 41px; + } + + .edit-attachment-frame .media-frame-content { + top: 40px; + } + + .edit-attachment-frame .attachment-media-view { + float: none; + height: auto; + width: 100%; + } + + .edit-attachment-frame .attachment-info { + height: auto; + width: 100%; + } +} + +@media only screen and (max-width: 640px), screen and (max-height: 400px) { + .upload-php .mode-grid .media-sidebar{ + max-width: 100%; + } +} diff --git a/tools/storybook/wordpress/css/media.min.css b/tools/storybook/wordpress/css/media.min.css new file mode 100644 index 00000000000..ab1226e6f34 --- /dev/null +++ b/tools/storybook/wordpress/css/media.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #dcdcde;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .media-item-info tr{background-color:transparent}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}.media-list-subtitle{display:block}.media-list-title{display:block}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-off,.describe-toggle-on{display:block;line-height:2.76923076;float:right;margin-right:10px}.media-item-wrapper{display:grid;grid-template-columns:1fr 1fr}.media-item .attachment-tools{display:flex;justify-content:flex-end;align-items:center}.media-item .edit-attachment{padding:14px 0;display:block;margin-right:10px}.media-item .edit-attachment.copy-to-clipboard-container{margin-top:0}.media-item-copy-container .success{line-height:0}.media-item button .copy-attachment-url{margin-top:14px}.media-item .copy-to-clipboard-container{margin-top:7px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:70px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #dcdcde}#media-items:empty{border:0 none}.media-item .filename{padding:14px 0;overflow:hidden;margin-left:6px}.media-item .pinkynail{float:left;margin:0 10px 0 0;max-height:70px;max-width:70px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#dcdcde;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#2271b1;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}#html-upload-ui #async-upload{font-size:1em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 0 10px 14px;min-height:50px}.media-item .error-div button.dismiss{float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-left:-300px;position:fixed;top:30px;bottom:30px;left:50%;z-index:100105}.find-box-head{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;left:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:left}#find-posts-input{width:140px;height:28px;margin:0 4px 0 0}.widefat .found-radio{padding-right:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;right:0;cursor:pointer;text-align:center;background:0 0;color:#646970}#find-posts-close:focus,#find-posts-close:hover{color:#135e96}#find-posts-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;z-index:100100}.drag-drop #drag-drop-area{border:4px dashed #c3c4c7;height:200px}.drag-drop .drag-drop-inside{margin:60px auto 0;width:250px}.drag-drop-inside p{font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.drag-drop.drag-over #drag-drop-area{border-color:#9ec2e6}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper,.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-left:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #c3c4c7}.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments,.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f0f0f1,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f0f0f1,inset 0 0 0 7px #c3c4c7}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f0f0f1,inset 0 0 0 7px #4f94d4}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 10px 0 0}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 8px 0 0;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 10px 0 0}.media-frame.mode-grid .search{margin-top:0}.media-search-input-label{margin:0 .2em 0 0;vertical-align:baseline}.media-frame.mode-grid .media-search-input-label{position:static;margin:0 .5em 0 0}.attachments-browser .media-toolbar-secondary>.media-button{margin-right:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;left:auto;right:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#787c82;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;right:0}.edit-attachment-frame .edit-media-header .left{right:102px}.edit-attachment-frame .edit-media-header .right{right:51px}.edit-attachment-frame .media-frame-title{left:0;right:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .right:focus,.upload-php .media-modal-close:focus{outline:2px solid transparent;outline-offset:-2px}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .right:before{content:"\f345"}.edit-attachment-frame .edit-media-header [disabled],.edit-attachment-frame .edit-media-header [disabled]:hover{color:#c3c4c7;background:inherit;cursor:default}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{left:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;right:0;left:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:left;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .details-image.icon{background:0 0}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:1.14285714}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-left:1px solid #dcdcde;background:#f6f7f7}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #dcdcde}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#646970}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.copy-to-clipboard-container{display:flex;align-items:center;margin-top:8px;clear:both}.copy-to-clipboard-container .copy-attachment-url{white-space:normal}.copy-to-clipboard-container .success{color:#008a20;margin-left:8px}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{float:left;padding:3px 16px 0 0;min-width:400px;max-width:calc(100% - 266px)}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a7aaad}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:left}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:left}.imgedit-menu{margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{display:inline-block;width:auto;min-height:28px;font-size:13px;line-height:2;margin:0 8px 8px 0;padding:0 10px}.imgedit-menu .button:before{font:normal 16px/1 dashicons;margin-right:8px;speak:never;vertical-align:middle;position:relative;top:-2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.imgedit-menu .button.disabled{color:#a7aaad;border-color:#dcdcde;background:#f6f7f7;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#1d2327}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;padding-bottom:8px}.imgedit-help.imgedit-restore{padding-bottom:0}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px 0 0 -1px;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#d63638;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-save-target legend{font-weight:600}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-original-dimensions{display:inline-block}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:80px;font-size:14px;padding:0 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;font-size:13px;color:#3c434a}.imgedit-settings .imgedit-scale-button-wrapper{margin-top:.3077em;display:block}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.wp-core-ui .mejs-container{width:100%;max-width:100%}.wp-core-ui .mejs-container *{box-sizing:border-box}.wp-core-ui .mejs-time{box-sizing:content-box}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{font-size:16px;padding:6px 10px}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content,.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:none;width:auto;max-width:none;padding-bottom:16px}.copy-to-clipboard-container .success{font-size:14px}.imgedit-crop-wrap img{width:100%}.media-modal .imgedit-wrap .imgedit-panel-content,.media-modal .imgedit-wrap .imgedit-settings{position:initial!important}.media-modal .imgedit-wrap .imgedit-settings{box-sizing:border-box;width:100%!important}.imgedit-settings .imgedit-scale-button-wrapper{display:inline-block}}@media only screen and (max-width:600px){.media-item-wrapper{grid-template-columns:1fr}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/nav-menus-rtl.css b/tools/storybook/wordpress/css/nav-menus-rtl.css new file mode 100644 index 00000000000..05087e828e1 --- /dev/null +++ b/tools/storybook/wordpress/css/nav-menus-rtl.css @@ -0,0 +1,1027 @@ +/*! This file is auto-generated */ +/* nav-menu */ + +/* @todo: determine if this is truly for nav menus only */ +.no-js #message { + display: block; +} + +ul.add-menu-item-tabs li { + padding: 3px 8px 4px 5px; +} + +.accordion-section ul.category-tabs, +.accordion-section ul.add-menu-item-tabs, +.accordion-section ul.wp-tab-bar { + margin: 0; +} + +.accordion-section .categorychecklist { + margin: 13px 0; +} + +#nav-menu-meta .accordion-section-content { + padding: 18px 13px; +} + +#nav-menu-meta .button-controls { + margin-bottom: 0; +} + +.has-no-menu-item .button-controls { + display: none; +} + +#nav-menus-frame { + margin-right: 300px; + margin-top: 23px; +} + +#wpbody-content #menu-settings-column { + display: inline; + width: 281px; + margin-right: -300px; + clear: both; + float: right; + padding-top: 0; +} + +#menu-settings-column .inside { + clear: both; + margin: 10px 0 0; +} + +.metabox-holder-disabled .postbox, +.metabox-holder-disabled .accordion-section-content, +.metabox-holder-disabled .accordion-section-title { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} + +#wpbody { + position: relative; +} + +.is-submenu { + color: #50575e; /* #fafafa background */ + font-style: italic; + font-weight: 400; + margin-right: 4px; +} + +.manage-menus { + margin-top: 23px; + padding: 10px; + overflow: hidden; + background: #fff; +} + +.manage-menus .selected-menu, +.manage-menus select, +.manage-menus .submit-btn, +.nav-menus-php .add-new-menu-action { + display: inline-block; + margin-left: 3px; + vertical-align: middle; +} + +.manage-menus select, +.menu-location-menus select { + max-width: 100%; +} + +.menu-edit #post-body-content h3 { + margin: 1em 0 10px; +} + +#nav-menu-bulk-actions-top { + margin: 1em 0; +} + +#nav-menu-bulk-actions-bottom { + margin: 1em 0; + margin: calc( 1em + 9px ) 0 ; +} + +.bulk-actions input.button { + margin-left: 12px; +} + +.bulk-select-button { + position: relative; + display: inline-block; + padding: 0 10px; + font-size: 13px; + line-height: 2.15384615; + height: auto; + min-height: 30px; + background: #f6f7f7; + vertical-align: top; + border: 1px solid #dcdcde; + margin: 0; + cursor: pointer; + border-radius: 3px; + white-space: nowrap; + box-sizing: border-box; +} + +.bulk-selection .bulk-select-button { + color: #2271b1; + border-color: #2271b1; + background: #f6f7f7; + vertical-align: top; +} + +#pending-menu-items-to-delete { + display: none; +} + +.bulk-selection #pending-menu-items-to-delete { + display: block; + margin-top: 1em; +} + +#pending-menu-items-to-delete p { + margin-bottom: 0; +} + +#pending-menu-items-to-delete ul { + margin-top: 0; + list-style: none; +} + +#pending-menu-items-to-delete ul li { + display: inline; +} + +input.bulk-select-switcher + .bulk-select-button-label { + vertical-align: inherit; +} + +label.bulk-select-button:hover, +label.bulk-select-button:active, +label.bulk-select-button:focus-within { + background: #f0f0f1; + border-color: #0a4b78; + color: #0a4b78; +} + +input.bulk-select-switcher:focus + .bulk-select-button-label{ + color: #0a4b78; +} + +.bulk-actions input.menu-items-delete { + -webkit-appearance: none; + appearance: none; + font-size: inherit; + border: 0; + line-height: 2.1em; + background: none; + cursor: pointer; + text-decoration: underline; + color: #b32d2e; +} + +.bulk-actions input.menu-items-delete:hover { + color: #b32d2e; + border: none; +} + +.bulk-actions input.menu-items-delete.disabled { + cursor: default; + color: #a7aaad; + box-shadow: none; +} + +.menu-settings { + border-top: 1px solid #f0f0f1; + margin-top: 2em; +} + +.menu-settings-group { + margin: 0 0 10px; + overflow: hidden; + padding-right: 20%; +} + +.menu-settings-group:last-of-type { + margin-bottom: 0; +} + +.menu-settings-input { + float: right; + margin: 0; + width: 100%; +} + +.menu-settings-group-name { + float: right; + clear: both; + width: 25%; + padding: 3px 0 0; + margin-right: -25%; /* 20 container left padding x ( 100 container % width / 80 this % width ) */ +} + +.menu-settings label { + vertical-align: baseline; +} + +.menu-edit .checkbox-input { + margin-top: 4px; +} + +.theme-location-set { + color: #646970; + font-size: 11px; +} + +/* Menu Container */ + +/* @todo: responsive view. */ +#menu-management-liquid { + float: right; + min-width: 100%; + margin-top: 3px; +} + +/* @todo: responsive view. */ +#menu-management { + position: relative; + margin-left: 20px; + margin-top: -3px; + width: 100%; +} + +#menu-management .menu-edit { + margin-bottom: 20px; +} + +.nav-menus-php #post-body { + padding: 0 10px; + border-top: 1px solid #fff; + border-bottom: 1px solid #dcdcde; + background: #fff; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; + background: #f6f7f7; +} + +#nav-menu-header { + border-bottom: 1px solid #dcdcde; + margin-bottom: 0; +} + +#nav-menu-header .menu-name-label { + display: inline-block; + vertical-align: middle; + margin-left: 7px; +} + +.nav-menus-php #post-body div.updated, +.nav-menus-php #post-body div.error { + margin: 0; +} + +.nav-menus-php #post-body-content { + position: relative; + float: none; +} + +.nav-menus-php #post-body-content .post-body-plain { + margin-bottom: 0; +} + +#menu-management .menu-add-new abbr { + font-weight: 600; +} + +#select-nav-menu-container { + text-align: left; + padding: 0 10px 3px; + margin-bottom: 5px; +} + +#select-nav-menu { + width: 100px; + display: inline; +} + +#menu-name-label { + margin-top: -2px; +} + +.widefat .menu-locations .menu-location-title { + padding: 13px 10px 0; +} + +.menu-location-title label { + font-weight: 600; +} + +.menu-location-menus select { + float: right; +} + +#locations-nav-menu-wrapper { + padding: 5px 0; +} + +.locations-nav-menu-select select { + float: right; + width: 160px; + margin-left: 5px; +} + +.locations-row-links { + float: right; + margin: 6px 6px 0 0; +} + +.locations-edit-menu-link, +.locations-add-menu-link { + margin: 0 3px; +} + +.locations-edit-menu-link { + padding-left: 3px; + border-left: 1px solid #c3c4c7; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input, +.customlinkdiv .menu-item-textbox { + width: 180px; + float: left; +} + +.accordion-container .outer-border { + margin: 0; +} + +.customlinkdiv p { + margin-top: 0 +} + +#nav-menu-theme-locations .howto select { + width: 100%; +} + +#nav-menu-theme-locations .button-controls { + text-align: left; +} + +.add-menu-item-view-all { + height: 400px; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0 0 10px; + padding: 0; +} + +/* @todo: is this actually used? */ +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-right: 20px; + margin-top: 5px; +} + +.button.right, .button-secondary.right, .button-primary.right { + float: left; +} + +/* Button Secondary Actions */ +.list-controls { + float: right; + margin-top: 5px; +} + +.add-to-menu { + float: left; +} + +.button-controls { + clear: both; + margin: 10px 0; +} + +.show-all, +.hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; + vertical-align: middle; +} + +#manage-menu .inside { + padding: 0; +} + +/* Custom Links */ +#available-links dt { + display: block; +} + +#add-custom-link .howto { + font-size: 12px; +} + +#add-custom-link label span { + display: block; + float: right; + margin-top: 5px; + padding-left: 5px; +} + +.menu-item-textbox { + width: 180px; +} + +.customlinkdiv label, +.nav-menus-php .howto span { + float: right; + margin-top: 6px; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.quick-search-wrap .spinner { + float: none; + margin: -3px 0 0 -10px; +} + +.nav-menus-php .list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.nav-menus-php .postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.nav-menus-php .list li { + display: none; + margin: 0 0 5px; +} + +.nav-menus-php .list li .menu-item-title { + cursor: pointer; + display: block; +} + +.nav-menus-php .list li .menu-item-title input { + margin-left: 3px; + margin-top: -3px; +} + +.menu-item-title input[type=checkbox] { + display: inline-block; + margin-top: -4px; +} + +.menu-item-title .post-state { + font-weight: 600; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top: 1em; +} + +#menu-to-edit { + margin: 0; + padding: 0.1em 0; +} + +.menu ul { + width: 100%; +} + +.menu li { + margin-bottom: 0; + position: relative; +} + +.menu-item-bar { + clear: both; + line-height: 1.5; + position: relative; + margin: 9px 0 0; +} + +.menu-item-bar .menu-item-handle { + border: 1px solid #dcdcde; + position: relative; + padding: 10px 15px; + height: auto; + min-height: 20px; + max-width: 382px; + line-height: 2.30769230; + overflow: hidden; + word-wrap: break-word; +} + +.menu-item-bar .menu-item-handle:hover { + border-color: #8c8f94; +} + +#menu-to-edit .menu-item-invalid .menu-item-handle { + background: #fcf0f1; + border-color: #d63638; +} + +.no-js .menu-item-edit-active .item-edit { + display: none; +} + +.js .menu-item-handle { + cursor: move; +} + +.menu li.deleting .menu-item-handle { + background-image: none; + background-color: #f86368; +} + +.menu-item-handle .item-title { + font-size: 13px; + font-weight: 600; + line-height: 1.53846153; + display: block; + /* @todo: responsive view. */ + margin-left: 13em; +} + +.menu-item-handle .menu-item-checkbox { + display: none; +} + +.bulk-selection .menu-item-handle .menu-item-checkbox { + display: inline-block; + margin-left: 6px; +} + +.menu-item-handle .menu-item-title.no-title { + color: #646970; +} + +/* Sortables */ +li.menu-item.ui-sortable-helper .menu-item-bar { + margin-top: 0; +} + +li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { + margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ +} + +.menu .sortable-placeholder { + height: 35px; + width: 410px; + margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ +} + +/* Hide the transport list when it's empty */ +.menu-item .menu-item-transport:empty { + display: none; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ +.menu-item-depth-0 { margin-right: 0; } +.menu-item-depth-1 { margin-right: 30px; } +.menu-item-depth-2 { margin-right: 60px; } +.menu-item-depth-3 { margin-right: 90px; } +.menu-item-depth-4 { margin-right: 120px; } +.menu-item-depth-5 { margin-right: 150px; } +.menu-item-depth-6 { margin-right: 180px; } +.menu-item-depth-7 { margin-right: 210px; } +.menu-item-depth-8 { margin-right: 240px; } +.menu-item-depth-9 { margin-right: 270px; } +.menu-item-depth-10 { margin-right: 300px; } +.menu-item-depth-11 { margin-right: 330px; } + +.menu-item-depth-0 .menu-item-transport { margin-right: 0; } +.menu-item-depth-1 .menu-item-transport { margin-right: -30px; } +.menu-item-depth-2 .menu-item-transport { margin-right: -60px; } +.menu-item-depth-3 .menu-item-transport { margin-right: -90px; } +.menu-item-depth-4 .menu-item-transport { margin-right: -120px; } +.menu-item-depth-5 .menu-item-transport { margin-right: -150px; } +.menu-item-depth-6 .menu-item-transport { margin-right: -180px; } +.menu-item-depth-7 .menu-item-transport { margin-right: -210px; } +.menu-item-depth-8 .menu-item-transport { margin-right: -240px; } +.menu-item-depth-9 .menu-item-transport { margin-right: -270px; } +.menu-item-depth-10 .menu-item-transport { margin-right: -300px; } +.menu-item-depth-11 .menu-item-transport { margin-right: -330px; } + +body.menu-max-depth-0 { min-width: 950px !important; } +body.menu-max-depth-1 { min-width: 980px !important; } +body.menu-max-depth-2 { min-width: 1010px !important; } +body.menu-max-depth-3 { min-width: 1040px !important; } +body.menu-max-depth-4 { min-width: 1070px !important; } +body.menu-max-depth-5 { min-width: 1100px !important; } +body.menu-max-depth-6 { min-width: 1130px !important; } +body.menu-max-depth-7 { min-width: 1160px !important; } +body.menu-max-depth-8 { min-width: 1190px !important; } +body.menu-max-depth-9 { min-width: 1220px !important; } +body.menu-max-depth-10 { min-width: 1250px !important; } +body.menu-max-depth-11 { min-width: 1280px !important; } + +/* Menu item controls */ +.item-type { + display: inline-block; + padding: 12px 16px; + color: #646970; + font-size: 12px; + line-height: 1.5; +} + +.item-controls { + font-size: 12px; + position: absolute; + left: 20px; + top: -1px; +} + +.item-controls a { + text-decoration: none; +} + +.item-controls a:hover { + cursor: pointer; +} + +.item-controls .item-order { + padding-left: 10px; +} + +.nav-menus-php .item-edit { + position: absolute; + left: -20px; + top: 0; + display: block; + width: 30px; + height: 40px; + outline: none; +} + +.no-js.nav-menus-php .item-edit { + position: static; + float: left; + width: auto; + height: auto; + margin: 12px 0 12px -10px; + padding: 0; + color: #2271b1; + text-decoration: underline; + font-size: 12px; + line-height: 1.5; +} + +.no-js.nav-menus-php .item-edit .screen-reader-text { + position: static; + -webkit-clip-path: none; + clip-path: none; + width: auto; + height: auto; + margin: 0; +} + +.nav-menus-php .item-edit:before { + margin-top: 10px; + margin-right: 4px; + width: 20px; + border-radius: 50%; + text-indent: -1px; /* account for the dashicon alignment */ +} + +.no-js.nav-menus-php .item-edit:before { + display: none; +} + +.rtl .nav-menus-php .item-edit:before { + text-indent: 1px; /* account for the dashicon alignment */ +} + +.js.nav-menus-php .item-edit:focus { + box-shadow: none; +} + +.nav-menus-php .item-edit:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display: block; + max-width: 392px; + padding: 10px; + position: relative; + z-index: 10; /* Keep .item-title's shadow from appearing on top of .menu-item-settings */ + border: 1px solid #c3c4c7; + border-top: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +.menu-item-settings .field-move { + margin: 3px 0 5px; + line-height: 1.5; +} + +.field-move-visual-label { + float: right; + margin-left: 4px; +} + +.menu-item-settings .field-move .button-link { + display: none; + margin: 0 2px; +} + +.menu-item-edit-active .menu-item-settings { + display: block; +} + +.menu-item-edit-inactive .menu-item-settings { + display: none; +} + +.add-menu-item-pagelinks { + margin: .5em -10px; + text-align: center; +} + +.add-menu-item-pagelinks .page-numbers { + display: inline-block; + min-width: 20px; +} + +.add-menu-item-pagelinks .page-numbers.dots { + min-width: 0; +} + +.link-to-original { + display: block; + margin: 0 0 15px; + padding: 3px 5px 5px; + border: 1px solid #dcdcde; + color: #646970; + font-size: 12px; +} + +.link-to-original a { + padding-right: 4px; + font-style: normal; +} + +.hidden-field { + display: none; +} + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-left: 10px; + float: right; +} + +.description-thin { + width: calc(50% - 5px); +} + +.menu-item-settings .description-thin + .description-thin { + margin-left: 0; +} + +.description-wide { + width: 100%; +} + +.menu-item-actions { + padding-top: 15px; + padding-bottom: 7px; +} + +#cancel-save { + cursor: pointer; +} + +/* Major/minor publishing actions (classes) */ +.nav-menus-php .major-publishing-actions { + clear: both; + padding: 10px 0; + line-height: 2.15384615; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + text-align: left; + float: left; +} + +/* Same as the Publish Meta Box #delete-action */ +.nav-menus-php .delete-action { + float: right; + line-height: 2.1; +} + +.nav-menus-php .major-publishing-actions .form-invalid { + padding-right: 4px; + margin-right: -4px; +} + +#nav-menus-frame, +.button-controls, +#menu-item-url-wrap, +#menu-item-name-wrap { + display: block; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media only screen and (min-width: 769px) and (max-width: 1000px) { + body.menu-max-depth-0 { + min-width: 0 !important; + } + + #menu-management-liquid { + width: 100%; + } + + .nav-menus-php #post-body-content { + min-width: 0; + } +} + +@media screen and (max-width: 782px) { + body.nav-menus-php, + body.wp-customizer { + min-width: 0 !important; + } + + #nav-menus-frame { + margin-right: 0; + float: none; + width: 100%; + } + + #wpbody-content #menu-settings-column { + display: block; + width: 100%; + float: none; + margin-right: 0; + } + + #side-sortables .add-menu-item-tabs { + margin: 15px 0 14px; + } + + ul.add-menu-item-tabs li.tabs { + padding: 13px 15px 14px; + } + + .nav-menus-php .customlinkdiv .howto input { + width: 65%; + } + + .nav-menus-php .quick-search { + width: 85%; + } + + #menu-management-liquid { + margin-top: 25px; + } + + .nav-menus-php .menu-name-label.howto span { + margin-top: 13px + } + + #menu-name { + width: 100%; + } + + .nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action { + padding-top: 1em; + } + + .nav-menus-php .delete-action { + font-size: 14px; + line-height: 2.14285714; + } + + .menu-item-bar .menu-item-handle, + .menu-item-settings, + .description-wide { + width: auto; + } + + .menu-item-settings { + padding: 10px; + } + + .menu-item-settings .description-thin, + .menu-item-settings .description-wide { + width: 100%; + } + + .menu-item-settings input { + width: 100%; + } + + .menu-item-settings input[type="checkbox"], + .menu-item-settings input[type="radio"] { + width: 25px; + } + + .menu-settings-group { + padding-right: 0; + overflow: visible; + } + + .menu-settings-group-name { + float: none; + width: auto; + margin-right: 0; + margin-bottom: 15px; + } + + .menu-settings-input { + float: none; + margin-bottom: 15px; + } + + .menu-edit .checkbox-input { + margin-top: 0; + } + + .manage-menus select { + margin: 0.5em 0; + } + + .wp-core-ui .manage-menus .button { + margin-bottom: 0; + } + + .widefat .menu-locations .menu-location-title { + padding-top: 16px; + } +} + +@media only screen and (min-width: 783px) { + @supports (position: sticky) and (scroll-margin-bottom: 130px) { + + #nav-menu-footer { + position: sticky; + bottom: 0; + z-index: 10; + box-shadow: 0 -1px 0 0 #ddd; + } + + #save_menu_header { + display: none; + } + } +} + +@media only screen and (max-width: 768px) { + /* menu locations */ + #menu-locations-wrap .widefat { + width: 100%; + } + + .bulk-select-button { + padding: 5px 10px; + } +} diff --git a/tools/storybook/wordpress/css/nav-menus-rtl.min.css b/tools/storybook/wordpress/css/nav-menus-rtl.min.css new file mode 100644 index 00000000000..eaf7300e355 --- /dev/null +++ b/tools/storybook/wordpress/css/nav-menus-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 4px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.is-submenu{color:#50575e;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fff}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-left:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}#nav-menu-bulk-actions-top{margin:1em 0}#nav-menu-bulk-actions-bottom{margin:1em 0;margin:calc(1em + 9px) 0}.bulk-actions input.button{margin-left:12px}.bulk-select-button{position:relative;display:inline-block;padding:0 10px;font-size:13px;line-height:2.15384615;height:auto;min-height:30px;background:#f6f7f7;vertical-align:top;border:1px solid #dcdcde;margin:0;cursor:pointer;border-radius:3px;white-space:nowrap;box-sizing:border-box}.bulk-selection .bulk-select-button{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}#pending-menu-items-to-delete{display:none}.bulk-selection #pending-menu-items-to-delete{display:block;margin-top:1em}#pending-menu-items-to-delete p{margin-bottom:0}#pending-menu-items-to-delete ul{margin-top:0;list-style:none}#pending-menu-items-to-delete ul li{display:inline}input.bulk-select-switcher+.bulk-select-button-label{vertical-align:inherit}label.bulk-select-button:active,label.bulk-select-button:focus-within,label.bulk-select-button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}input.bulk-select-switcher:focus+.bulk-select-button-label{color:#0a4b78}.bulk-actions input.menu-items-delete{-webkit-appearance:none;appearance:none;font-size:inherit;border:0;line-height:2.1em;background:0 0;cursor:pointer;text-decoration:underline;color:#b32d2e}.bulk-actions input.menu-items-delete:hover{color:#b32d2e;border:none}.bulk-actions input.menu-items-delete.disabled{cursor:default;color:#a7aaad;box-shadow:none}.menu-settings{border-top:1px solid #f0f0f1;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-right:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:right;margin:0;width:100%}.menu-settings-group-name{float:right;clear:both;width:25%;padding:3px 0 0;margin-right:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#646970;font-size:11px}#menu-management-liquid{float:right;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-left:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px;border-top:1px solid #fff;border-bottom:1px solid #dcdcde;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px;background:#f6f7f7}#nav-menu-header{border-bottom:1px solid #dcdcde;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-left:7px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}.nav-menus-php #post-body-content .post-body-plain{margin-bottom:0}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #c3c4c7}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;font-size:12px;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:right;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}.menu-item-title .post-state{font-weight:600}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dcdcde;position:relative;padding:10px 15px;height:auto;min-height:20px;max-width:382px;line-height:2.30769230;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#8c8f94}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#fcf0f1;border-color:#d63638}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f86368}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:1.53846153;display:block;margin-left:13em}.menu-item-handle .menu-item-checkbox{display:none}.bulk-selection .menu-item-handle .menu-item-checkbox{display:inline-block;margin-left:6px}.menu-item-handle .menu-item-title.no-title{color:#646970}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:9px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:9px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#646970;font-size:12px;line-height:1.5}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:left;width:auto;height:auto;margin:12px 0 12px -10px;padding:0;color:#2271b1;text-decoration:underline;font-size:12px;line-height:1.5}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;max-width:392px;padding:10px;position:relative;z-index:10;border:1px solid #c3c4c7;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:right;margin-left:4px}.menu-item-settings .field-move .button-link{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #dcdcde;color:#646970;font-size:12px}.link-to-original a{padding-right:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;float:right}.description-thin{width:calc(50% - 5px)}.menu-item-settings .description-thin+.description-thin{margin-left:0}.description-wide{width:100%}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:2.15384615}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left}.nav-menus-php .delete-action{float:right;line-height:2.1}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-right:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-right:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:2.14285714}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-right:0;overflow:visible}.menu-settings-group-name{float:none;width:auto;margin-right:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.wp-core-ui .manage-menus .button{margin-bottom:0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (min-width:783px){@supports (position:sticky) and (scroll-margin-bottom:130px){#nav-menu-footer{position:sticky;bottom:0;z-index:10;box-shadow:0 -1px 0 0 #ddd}#save_menu_header{display:none}}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}.bulk-select-button{padding:5px 10px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/nav-menus.css b/tools/storybook/wordpress/css/nav-menus.css new file mode 100644 index 00000000000..8dfe84d1532 --- /dev/null +++ b/tools/storybook/wordpress/css/nav-menus.css @@ -0,0 +1,1026 @@ +/* nav-menu */ + +/* @todo: determine if this is truly for nav menus only */ +.no-js #message { + display: block; +} + +ul.add-menu-item-tabs li { + padding: 3px 5px 4px 8px; +} + +.accordion-section ul.category-tabs, +.accordion-section ul.add-menu-item-tabs, +.accordion-section ul.wp-tab-bar { + margin: 0; +} + +.accordion-section .categorychecklist { + margin: 13px 0; +} + +#nav-menu-meta .accordion-section-content { + padding: 18px 13px; +} + +#nav-menu-meta .button-controls { + margin-bottom: 0; +} + +.has-no-menu-item .button-controls { + display: none; +} + +#nav-menus-frame { + margin-left: 300px; + margin-top: 23px; +} + +#wpbody-content #menu-settings-column { + display: inline; + width: 281px; + margin-left: -300px; + clear: both; + float: left; + padding-top: 0; +} + +#menu-settings-column .inside { + clear: both; + margin: 10px 0 0; +} + +.metabox-holder-disabled .postbox, +.metabox-holder-disabled .accordion-section-content, +.metabox-holder-disabled .accordion-section-title { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} + +#wpbody { + position: relative; +} + +.is-submenu { + color: #50575e; /* #fafafa background */ + font-style: italic; + font-weight: 400; + margin-left: 4px; +} + +.manage-menus { + margin-top: 23px; + padding: 10px; + overflow: hidden; + background: #fff; +} + +.manage-menus .selected-menu, +.manage-menus select, +.manage-menus .submit-btn, +.nav-menus-php .add-new-menu-action { + display: inline-block; + margin-right: 3px; + vertical-align: middle; +} + +.manage-menus select, +.menu-location-menus select { + max-width: 100%; +} + +.menu-edit #post-body-content h3 { + margin: 1em 0 10px; +} + +#nav-menu-bulk-actions-top { + margin: 1em 0; +} + +#nav-menu-bulk-actions-bottom { + margin: 1em 0; + margin: calc( 1em + 9px ) 0 ; +} + +.bulk-actions input.button { + margin-right: 12px; +} + +.bulk-select-button { + position: relative; + display: inline-block; + padding: 0 10px; + font-size: 13px; + line-height: 2.15384615; + height: auto; + min-height: 30px; + background: #f6f7f7; + vertical-align: top; + border: 1px solid #dcdcde; + margin: 0; + cursor: pointer; + border-radius: 3px; + white-space: nowrap; + box-sizing: border-box; +} + +.bulk-selection .bulk-select-button { + color: #2271b1; + border-color: #2271b1; + background: #f6f7f7; + vertical-align: top; +} + +#pending-menu-items-to-delete { + display: none; +} + +.bulk-selection #pending-menu-items-to-delete { + display: block; + margin-top: 1em; +} + +#pending-menu-items-to-delete p { + margin-bottom: 0; +} + +#pending-menu-items-to-delete ul { + margin-top: 0; + list-style: none; +} + +#pending-menu-items-to-delete ul li { + display: inline; +} + +input.bulk-select-switcher + .bulk-select-button-label { + vertical-align: inherit; +} + +label.bulk-select-button:hover, +label.bulk-select-button:active, +label.bulk-select-button:focus-within { + background: #f0f0f1; + border-color: #0a4b78; + color: #0a4b78; +} + +input.bulk-select-switcher:focus + .bulk-select-button-label{ + color: #0a4b78; +} + +.bulk-actions input.menu-items-delete { + -webkit-appearance: none; + appearance: none; + font-size: inherit; + border: 0; + line-height: 2.1em; + background: none; + cursor: pointer; + text-decoration: underline; + color: #b32d2e; +} + +.bulk-actions input.menu-items-delete:hover { + color: #b32d2e; + border: none; +} + +.bulk-actions input.menu-items-delete.disabled { + cursor: default; + color: #a7aaad; + box-shadow: none; +} + +.menu-settings { + border-top: 1px solid #f0f0f1; + margin-top: 2em; +} + +.menu-settings-group { + margin: 0 0 10px; + overflow: hidden; + padding-left: 20%; +} + +.menu-settings-group:last-of-type { + margin-bottom: 0; +} + +.menu-settings-input { + float: left; + margin: 0; + width: 100%; +} + +.menu-settings-group-name { + float: left; + clear: both; + width: 25%; + padding: 3px 0 0; + margin-left: -25%; /* 20 container left padding x ( 100 container % width / 80 this % width ) */ +} + +.menu-settings label { + vertical-align: baseline; +} + +.menu-edit .checkbox-input { + margin-top: 4px; +} + +.theme-location-set { + color: #646970; + font-size: 11px; +} + +/* Menu Container */ + +/* @todo: responsive view. */ +#menu-management-liquid { + float: left; + min-width: 100%; + margin-top: 3px; +} + +/* @todo: responsive view. */ +#menu-management { + position: relative; + margin-right: 20px; + margin-top: -3px; + width: 100%; +} + +#menu-management .menu-edit { + margin-bottom: 20px; +} + +.nav-menus-php #post-body { + padding: 0 10px; + border-top: 1px solid #fff; + border-bottom: 1px solid #dcdcde; + background: #fff; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; + background: #f6f7f7; +} + +#nav-menu-header { + border-bottom: 1px solid #dcdcde; + margin-bottom: 0; +} + +#nav-menu-header .menu-name-label { + display: inline-block; + vertical-align: middle; + margin-right: 7px; +} + +.nav-menus-php #post-body div.updated, +.nav-menus-php #post-body div.error { + margin: 0; +} + +.nav-menus-php #post-body-content { + position: relative; + float: none; +} + +.nav-menus-php #post-body-content .post-body-plain { + margin-bottom: 0; +} + +#menu-management .menu-add-new abbr { + font-weight: 600; +} + +#select-nav-menu-container { + text-align: right; + padding: 0 10px 3px; + margin-bottom: 5px; +} + +#select-nav-menu { + width: 100px; + display: inline; +} + +#menu-name-label { + margin-top: -2px; +} + +.widefat .menu-locations .menu-location-title { + padding: 13px 10px 0; +} + +.menu-location-title label { + font-weight: 600; +} + +.menu-location-menus select { + float: left; +} + +#locations-nav-menu-wrapper { + padding: 5px 0; +} + +.locations-nav-menu-select select { + float: left; + width: 160px; + margin-right: 5px; +} + +.locations-row-links { + float: left; + margin: 6px 0 0 6px; +} + +.locations-edit-menu-link, +.locations-add-menu-link { + margin: 0 3px; +} + +.locations-edit-menu-link { + padding-right: 3px; + border-right: 1px solid #c3c4c7; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input, +.customlinkdiv .menu-item-textbox { + width: 180px; + float: right; +} + +.accordion-container .outer-border { + margin: 0; +} + +.customlinkdiv p { + margin-top: 0 +} + +#nav-menu-theme-locations .howto select { + width: 100%; +} + +#nav-menu-theme-locations .button-controls { + text-align: right; +} + +.add-menu-item-view-all { + height: 400px; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0 0 10px; + padding: 0; +} + +/* @todo: is this actually used? */ +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-left: 20px; + margin-top: 5px; +} + +.button.right, .button-secondary.right, .button-primary.right { + float: right; +} + +/* Button Secondary Actions */ +.list-controls { + float: left; + margin-top: 5px; +} + +.add-to-menu { + float: right; +} + +.button-controls { + clear: both; + margin: 10px 0; +} + +.show-all, +.hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; + vertical-align: middle; +} + +#manage-menu .inside { + padding: 0; +} + +/* Custom Links */ +#available-links dt { + display: block; +} + +#add-custom-link .howto { + font-size: 12px; +} + +#add-custom-link label span { + display: block; + float: left; + margin-top: 5px; + padding-right: 5px; +} + +.menu-item-textbox { + width: 180px; +} + +.customlinkdiv label, +.nav-menus-php .howto span { + float: left; + margin-top: 6px; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.quick-search-wrap .spinner { + float: none; + margin: -3px -10px 0 0; +} + +.nav-menus-php .list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.nav-menus-php .postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.nav-menus-php .list li { + display: none; + margin: 0 0 5px; +} + +.nav-menus-php .list li .menu-item-title { + cursor: pointer; + display: block; +} + +.nav-menus-php .list li .menu-item-title input { + margin-right: 3px; + margin-top: -3px; +} + +.menu-item-title input[type=checkbox] { + display: inline-block; + margin-top: -4px; +} + +.menu-item-title .post-state { + font-weight: 600; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top: 1em; +} + +#menu-to-edit { + margin: 0; + padding: 0.1em 0; +} + +.menu ul { + width: 100%; +} + +.menu li { + margin-bottom: 0; + position: relative; +} + +.menu-item-bar { + clear: both; + line-height: 1.5; + position: relative; + margin: 9px 0 0; +} + +.menu-item-bar .menu-item-handle { + border: 1px solid #dcdcde; + position: relative; + padding: 10px 15px; + height: auto; + min-height: 20px; + max-width: 382px; + line-height: 2.30769230; + overflow: hidden; + word-wrap: break-word; +} + +.menu-item-bar .menu-item-handle:hover { + border-color: #8c8f94; +} + +#menu-to-edit .menu-item-invalid .menu-item-handle { + background: #fcf0f1; + border-color: #d63638; +} + +.no-js .menu-item-edit-active .item-edit { + display: none; +} + +.js .menu-item-handle { + cursor: move; +} + +.menu li.deleting .menu-item-handle { + background-image: none; + background-color: #f86368; +} + +.menu-item-handle .item-title { + font-size: 13px; + font-weight: 600; + line-height: 1.53846153; + display: block; + /* @todo: responsive view. */ + margin-right: 13em; +} + +.menu-item-handle .menu-item-checkbox { + display: none; +} + +.bulk-selection .menu-item-handle .menu-item-checkbox { + display: inline-block; + margin-right: 6px; +} + +.menu-item-handle .menu-item-title.no-title { + color: #646970; +} + +/* Sortables */ +li.menu-item.ui-sortable-helper .menu-item-bar { + margin-top: 0; +} + +li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { + margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ +} + +.menu .sortable-placeholder { + height: 35px; + width: 410px; + margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ +} + +/* Hide the transport list when it's empty */ +.menu-item .menu-item-transport:empty { + display: none; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ +.menu-item-depth-0 { margin-left: 0; } +.menu-item-depth-1 { margin-left: 30px; } +.menu-item-depth-2 { margin-left: 60px; } +.menu-item-depth-3 { margin-left: 90px; } +.menu-item-depth-4 { margin-left: 120px; } +.menu-item-depth-5 { margin-left: 150px; } +.menu-item-depth-6 { margin-left: 180px; } +.menu-item-depth-7 { margin-left: 210px; } +.menu-item-depth-8 { margin-left: 240px; } +.menu-item-depth-9 { margin-left: 270px; } +.menu-item-depth-10 { margin-left: 300px; } +.menu-item-depth-11 { margin-left: 330px; } + +.menu-item-depth-0 .menu-item-transport { margin-left: 0; } +.menu-item-depth-1 .menu-item-transport { margin-left: -30px; } +.menu-item-depth-2 .menu-item-transport { margin-left: -60px; } +.menu-item-depth-3 .menu-item-transport { margin-left: -90px; } +.menu-item-depth-4 .menu-item-transport { margin-left: -120px; } +.menu-item-depth-5 .menu-item-transport { margin-left: -150px; } +.menu-item-depth-6 .menu-item-transport { margin-left: -180px; } +.menu-item-depth-7 .menu-item-transport { margin-left: -210px; } +.menu-item-depth-8 .menu-item-transport { margin-left: -240px; } +.menu-item-depth-9 .menu-item-transport { margin-left: -270px; } +.menu-item-depth-10 .menu-item-transport { margin-left: -300px; } +.menu-item-depth-11 .menu-item-transport { margin-left: -330px; } + +body.menu-max-depth-0 { min-width: 950px !important; } +body.menu-max-depth-1 { min-width: 980px !important; } +body.menu-max-depth-2 { min-width: 1010px !important; } +body.menu-max-depth-3 { min-width: 1040px !important; } +body.menu-max-depth-4 { min-width: 1070px !important; } +body.menu-max-depth-5 { min-width: 1100px !important; } +body.menu-max-depth-6 { min-width: 1130px !important; } +body.menu-max-depth-7 { min-width: 1160px !important; } +body.menu-max-depth-8 { min-width: 1190px !important; } +body.menu-max-depth-9 { min-width: 1220px !important; } +body.menu-max-depth-10 { min-width: 1250px !important; } +body.menu-max-depth-11 { min-width: 1280px !important; } + +/* Menu item controls */ +.item-type { + display: inline-block; + padding: 12px 16px; + color: #646970; + font-size: 12px; + line-height: 1.5; +} + +.item-controls { + font-size: 12px; + position: absolute; + right: 20px; + top: -1px; +} + +.item-controls a { + text-decoration: none; +} + +.item-controls a:hover { + cursor: pointer; +} + +.item-controls .item-order { + padding-right: 10px; +} + +.nav-menus-php .item-edit { + position: absolute; + right: -20px; + top: 0; + display: block; + width: 30px; + height: 40px; + outline: none; +} + +.no-js.nav-menus-php .item-edit { + position: static; + float: right; + width: auto; + height: auto; + margin: 12px -10px 12px 0; + padding: 0; + color: #2271b1; + text-decoration: underline; + font-size: 12px; + line-height: 1.5; +} + +.no-js.nav-menus-php .item-edit .screen-reader-text { + position: static; + -webkit-clip-path: none; + clip-path: none; + width: auto; + height: auto; + margin: 0; +} + +.nav-menus-php .item-edit:before { + margin-top: 10px; + margin-left: 4px; + width: 20px; + border-radius: 50%; + text-indent: -1px; /* account for the dashicon alignment */ +} + +.no-js.nav-menus-php .item-edit:before { + display: none; +} + +.rtl .nav-menus-php .item-edit:before { + text-indent: 1px; /* account for the dashicon alignment */ +} + +.js.nav-menus-php .item-edit:focus { + box-shadow: none; +} + +.nav-menus-php .item-edit:focus:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display: block; + max-width: 392px; + padding: 10px; + position: relative; + z-index: 10; /* Keep .item-title's shadow from appearing on top of .menu-item-settings */ + border: 1px solid #c3c4c7; + border-top: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} + +.menu-item-settings .field-move { + margin: 3px 0 5px; + line-height: 1.5; +} + +.field-move-visual-label { + float: left; + margin-right: 4px; +} + +.menu-item-settings .field-move .button-link { + display: none; + margin: 0 2px; +} + +.menu-item-edit-active .menu-item-settings { + display: block; +} + +.menu-item-edit-inactive .menu-item-settings { + display: none; +} + +.add-menu-item-pagelinks { + margin: .5em -10px; + text-align: center; +} + +.add-menu-item-pagelinks .page-numbers { + display: inline-block; + min-width: 20px; +} + +.add-menu-item-pagelinks .page-numbers.dots { + min-width: 0; +} + +.link-to-original { + display: block; + margin: 0 0 15px; + padding: 3px 5px 5px; + border: 1px solid #dcdcde; + color: #646970; + font-size: 12px; +} + +.link-to-original a { + padding-left: 4px; + font-style: normal; +} + +.hidden-field { + display: none; +} + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-right: 10px; + float: left; +} + +.description-thin { + width: calc(50% - 5px); +} + +.menu-item-settings .description-thin + .description-thin { + margin-right: 0; +} + +.description-wide { + width: 100%; +} + +.menu-item-actions { + padding-top: 15px; + padding-bottom: 7px; +} + +#cancel-save { + cursor: pointer; +} + +/* Major/minor publishing actions (classes) */ +.nav-menus-php .major-publishing-actions { + clear: both; + padding: 10px 0; + line-height: 2.15384615; +} + +.nav-menus-php .major-publishing-actions .publishing-action { + text-align: right; + float: right; +} + +/* Same as the Publish Meta Box #delete-action */ +.nav-menus-php .delete-action { + float: left; + line-height: 2.1; +} + +.nav-menus-php .major-publishing-actions .form-invalid { + padding-left: 4px; + margin-left: -4px; +} + +#nav-menus-frame, +.button-controls, +#menu-item-url-wrap, +#menu-item-name-wrap { + display: block; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media only screen and (min-width: 769px) and (max-width: 1000px) { + body.menu-max-depth-0 { + min-width: 0 !important; + } + + #menu-management-liquid { + width: 100%; + } + + .nav-menus-php #post-body-content { + min-width: 0; + } +} + +@media screen and (max-width: 782px) { + body.nav-menus-php, + body.wp-customizer { + min-width: 0 !important; + } + + #nav-menus-frame { + margin-left: 0; + float: none; + width: 100%; + } + + #wpbody-content #menu-settings-column { + display: block; + width: 100%; + float: none; + margin-left: 0; + } + + #side-sortables .add-menu-item-tabs { + margin: 15px 0 14px; + } + + ul.add-menu-item-tabs li.tabs { + padding: 13px 15px 14px; + } + + .nav-menus-php .customlinkdiv .howto input { + width: 65%; + } + + .nav-menus-php .quick-search { + width: 85%; + } + + #menu-management-liquid { + margin-top: 25px; + } + + .nav-menus-php .menu-name-label.howto span { + margin-top: 13px + } + + #menu-name { + width: 100%; + } + + .nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action { + padding-top: 1em; + } + + .nav-menus-php .delete-action { + font-size: 14px; + line-height: 2.14285714; + } + + .menu-item-bar .menu-item-handle, + .menu-item-settings, + .description-wide { + width: auto; + } + + .menu-item-settings { + padding: 10px; + } + + .menu-item-settings .description-thin, + .menu-item-settings .description-wide { + width: 100%; + } + + .menu-item-settings input { + width: 100%; + } + + .menu-item-settings input[type="checkbox"], + .menu-item-settings input[type="radio"] { + width: 25px; + } + + .menu-settings-group { + padding-left: 0; + overflow: visible; + } + + .menu-settings-group-name { + float: none; + width: auto; + margin-left: 0; + margin-bottom: 15px; + } + + .menu-settings-input { + float: none; + margin-bottom: 15px; + } + + .menu-edit .checkbox-input { + margin-top: 0; + } + + .manage-menus select { + margin: 0.5em 0; + } + + .wp-core-ui .manage-menus .button { + margin-bottom: 0; + } + + .widefat .menu-locations .menu-location-title { + padding-top: 16px; + } +} + +@media only screen and (min-width: 783px) { + @supports (position: sticky) and (scroll-margin-bottom: 130px) { + + #nav-menu-footer { + position: sticky; + bottom: 0; + z-index: 10; + box-shadow: 0 -1px 0 0 #ddd; + } + + #save_menu_header { + display: none; + } + } +} + +@media only screen and (max-width: 768px) { + /* menu locations */ + #menu-locations-wrap .widefat { + width: 100%; + } + + .bulk-select-button { + padding: 5px 10px; + } +} diff --git a/tools/storybook/wordpress/css/nav-menus.min.css b/tools/storybook/wordpress/css/nav-menus.min.css new file mode 100644 index 00000000000..8eed65aa838 --- /dev/null +++ b/tools/storybook/wordpress/css/nav-menus.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 4px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.is-submenu{color:#50575e;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fff}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-right:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}#nav-menu-bulk-actions-top{margin:1em 0}#nav-menu-bulk-actions-bottom{margin:1em 0;margin:calc(1em + 9px) 0}.bulk-actions input.button{margin-right:12px}.bulk-select-button{position:relative;display:inline-block;padding:0 10px;font-size:13px;line-height:2.15384615;height:auto;min-height:30px;background:#f6f7f7;vertical-align:top;border:1px solid #dcdcde;margin:0;cursor:pointer;border-radius:3px;white-space:nowrap;box-sizing:border-box}.bulk-selection .bulk-select-button{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}#pending-menu-items-to-delete{display:none}.bulk-selection #pending-menu-items-to-delete{display:block;margin-top:1em}#pending-menu-items-to-delete p{margin-bottom:0}#pending-menu-items-to-delete ul{margin-top:0;list-style:none}#pending-menu-items-to-delete ul li{display:inline}input.bulk-select-switcher+.bulk-select-button-label{vertical-align:inherit}label.bulk-select-button:active,label.bulk-select-button:focus-within,label.bulk-select-button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}input.bulk-select-switcher:focus+.bulk-select-button-label{color:#0a4b78}.bulk-actions input.menu-items-delete{-webkit-appearance:none;appearance:none;font-size:inherit;border:0;line-height:2.1em;background:0 0;cursor:pointer;text-decoration:underline;color:#b32d2e}.bulk-actions input.menu-items-delete:hover{color:#b32d2e;border:none}.bulk-actions input.menu-items-delete.disabled{cursor:default;color:#a7aaad;box-shadow:none}.menu-settings{border-top:1px solid #f0f0f1;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-left:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:left;margin:0;width:100%}.menu-settings-group-name{float:left;clear:both;width:25%;padding:3px 0 0;margin-left:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#646970;font-size:11px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px;border-top:1px solid #fff;border-bottom:1px solid #dcdcde;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px;background:#f6f7f7}#nav-menu-header{border-bottom:1px solid #dcdcde;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-right:7px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}.nav-menus-php #post-body-content .post-body-plain{margin-bottom:0}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #c3c4c7}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:left;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}.menu-item-title .post-state{font-weight:600}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dcdcde;position:relative;padding:10px 15px;height:auto;min-height:20px;max-width:382px;line-height:2.30769230;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#8c8f94}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#fcf0f1;border-color:#d63638}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f86368}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:1.53846153;display:block;margin-right:13em}.menu-item-handle .menu-item-checkbox{display:none}.bulk-selection .menu-item-handle .menu-item-checkbox{display:inline-block;margin-right:6px}.menu-item-handle .menu-item-title.no-title{color:#646970}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:9px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:9px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#646970;font-size:12px;line-height:1.5}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:right;width:auto;height:auto;margin:12px -10px 12px 0;padding:0;color:#2271b1;text-decoration:underline;font-size:12px;line-height:1.5}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;max-width:392px;padding:10px;position:relative;z-index:10;border:1px solid #c3c4c7;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:left;margin-right:4px}.menu-item-settings .field-move .button-link{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #dcdcde;color:#646970;font-size:12px}.link-to-original a{padding-left:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:calc(50% - 5px)}.menu-item-settings .description-thin+.description-thin{margin-right:0}.description-wide{width:100%}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:2.15384615}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right}.nav-menus-php .delete-action{float:left;line-height:2.1}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-left:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-left:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:2.14285714}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-left:0;overflow:visible}.menu-settings-group-name{float:none;width:auto;margin-left:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.wp-core-ui .manage-menus .button{margin-bottom:0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (min-width:783px){@supports (position:sticky) and (scroll-margin-bottom:130px){#nav-menu-footer{position:sticky;bottom:0;z-index:10;box-shadow:0 -1px 0 0 #ddd}#save_menu_header{display:none}}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}.bulk-select-button{padding:5px 10px}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/revisions-rtl.css b/tools/storybook/wordpress/css/revisions-rtl.css new file mode 100644 index 00000000000..8edb7dc5379 --- /dev/null +++ b/tools/storybook/wordpress/css/revisions-rtl.css @@ -0,0 +1,603 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ +.revisions-control-frame, +.revisions-diff-frame { + position: relative; +} + +.revisions-diff-frame { + top: 10px; +} + +.revisions-controls { + padding-top: 40px; + z-index: 1; +} + +.revisions-controls input[type="checkbox"] { + position: relative; + top: -1px; + vertical-align: text-bottom; +} + +.revisions.pinned .revisions-controls { + position: fixed; + top: 0; + height: 82px; + background: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.revisions-tickmarks { + position: relative; + margin: 0 auto; + height: 0.7em; + top: 7px; + max-width: 70%; + box-sizing: border-box; + background-color: #fff; +} + +.revisions-tickmarks > div { + position: absolute; + height: 100%; + border-right: 1px solid #a7aaad; + box-sizing: border-box; +} + +.revisions-tickmarks > div:first-child { + border-width: 0; +} + +.comparing-two-revisions .revisions-controls { + height: 140px; +} + +.comparing-two-revisions.pinned .revisions-controls { + height: 124px; +} + +.revisions .diff-error { + position: absolute; + text-align: center; + margin: 0 auto; + width: 100%; + display: none; +} + +.revisions.diff-error .diff-error { + display: block; +} + +.revisions .loading-indicator { + position: absolute; + vertical-align: middle; + opacity: 0; + width: 100%; + width: calc( 100% - 30px ); + top: 50%; + top: calc( 50% - 10px ); + transition: opacity 0.5s; +} + +body.folded .revisions .loading-indicator { + margin-right: -32px; +} + +.revisions .loading-indicator span.spinner { + display: block; + margin: 0 auto; + float: none; +} + +.revisions.loading .loading-indicator { + opacity: 1; +} + +.revisions .diff { + transition: opacity 0.5s; +} + +.revisions.loading .diff { + opacity: 0.5; +} + +.revisions.diff-error .diff { + visibility: hidden; +} + +.revisions-meta { + margin-top: 20px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.revisions.pinned .revisions-meta { + box-shadow: none; +} + +.revision-toggle-compare-mode { + position: absolute; + top: 0; + left: 0; +} + +.comparing-two-revisions .revisions-previous, +.comparing-two-revisions .revisions-next, +.revisions-meta .diff-meta-to strong { + display: none; +} + +.revisions-controls .author-card .date { + color: #646970; +} + +.revisions-controls .author-card.autosave { + color: #d63638; +} + +.revisions-controls .author-card .author-name { + font-weight: 600; +} + +.comparing-two-revisions .diff-meta-to strong { + display: block; +} + +.revisions.pinned .revisions-buttons { + padding: 0 11px; +} + +.revisions-previous, +.revisions-next { + position: relative; + z-index: 1; +} + +.revisions-previous { + float: right; +} + +.revisions-next { + float: left; +} + +.revisions-controls .wp-slider { + max-width: 70%; + margin: 0 auto; + top: -3px; +} + +.revisions-diff { + padding: 15px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.revisions-diff h3:first-child { + margin-top: 0; +} + +/* Revision meta box */ +.post-revisions li img, +#revisions-meta-restored img { + vertical-align: middle; +} + +table.diff { + table-layout: fixed; + width: 100%; + white-space: pre-wrap; +} + +table.diff col.content { + width: auto; +} + +table.diff col.content.diffsplit { + width: 48%; +} + +table.diff col.diffsplit.middle { + width: auto; +} + +table.diff col.ltype { + width: 30px; +} + +table.diff tr { + background-color: transparent; +} + +table.diff td, +table.diff th { + font-family: Consolas, Monaco, monospace; + font-size: 14px; + line-height: 1.57142857; + padding: 0.5em 2em 0.5em 0.5em; + vertical-align: top; + word-wrap: break-word; +} + +table.diff td h1, +table.diff td h2, +table.diff td h3, +table.diff td h4, +table.diff td h5, +table.diff td h6 { + margin: 0; +} + +table.diff .diff-deletedline del, +table.diff .diff-addedline ins { + text-decoration: none; +} + +table.diff .diff-deletedline { + position: relative; + background-color: #fcf0f1; +} + +table.diff .diff-deletedline del { + background-color: #ffabaf; +} + +table.diff .diff-addedline { + position: relative; + background-color: #edfaef; +} + +table.diff .diff-deletedline .dashicons, +table.diff .diff-addedline .dashicons { + position: absolute; + top: 0.85714286em; + right: 0.5em; + width: 1em; + height: 1em; + font-size: 1em; + line-height: 1; +} + +table.diff .diff-addedline .dashicons { + /* Compensate the vertically non-centered plus glyph. */ + top: 0.92857143em; +} + +table.diff .diff-addedline ins { + background-color: #68de7c; +} + +.diff-meta { + padding: 5px; + clear: both; + min-height: 32px; +} + +.diff-title strong { + line-height: 2.46153846; + min-width: 60px; + text-align: left; + float: right; + margin-left: 5px; +} + +.revisions-controls .author-card .author-info { + font-size: 12px; + line-height: 1.33333333; +} + +.revisions-controls .author-card .avatar, +.revisions-controls .author-card .author-info { + float: right; + margin-right: 6px; + margin-left: 6px; +} + +.revisions-controls .author-card .byline { + display: block; + font-size: 12px; +} + +.revisions-controls .author-card .avatar { + vertical-align: middle; +} + +.diff-meta input.restore-revision { + float: left; + margin-right: 6px; + margin-left: 6px; + margin-top: 2px; +} + +.diff-meta-from { + display: none; +} + +.comparing-two-revisions .diff-meta-from { + display: block; +} + +.revisions-tooltip { + position: absolute; + bottom: 105px; + margin-left: 0; + margin-right: -69px; + z-index: 0; + max-width: 350px; + min-width: 130px; + padding: 8px 4px; + display: none; + opacity: 0; +} + +.revisions-tooltip.flipped { + margin-right: 0; + margin-left: -70px; +} + +.revisions.pinned .revisions-tooltip { + display: none !important; +} + +.comparing-two-revisions .revisions-tooltip { + bottom: 145px; +} + +.revisions-tooltip-arrow { + width: 70px; + height: 15px; + overflow: hidden; + position: absolute; + right: 0; + margin-right: 35px; + bottom: -15px; +} + +.revisions-tooltip.flipped .revisions-tooltip-arrow { + margin-right: 0; + margin-left: 35px; + right: auto; + left: 0; +} + +.revisions-tooltip-arrow > span { + content: ""; + position: absolute; + right: 20px; + top: -20px; + width: 25px; + height: 25px; + transform: rotate(-45deg); +} + +.revisions-tooltip.flipped .revisions-tooltip-arrow > span { + right: auto; + left: 20px; +} + +.revisions-tooltip, +.revisions-tooltip-arrow > span { + border: 1px solid #dcdcde; + background-color: #fff; +} + +.revisions-tooltip { + display: none; +} + +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + right: 0; + margin-right: -35px; + bottom: 90px; + z-index: 10000; +} + +.arrow:after { + z-index: 9999; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.arrow.top { + top: -16px; + bottom: auto; +} + +.arrow.left { + right: 20%; +} + +.arrow:after { + content: ""; + position: absolute; + right: 20px; + top: -20px; + width: 25px; + height: 25px; + transform: rotate(-45deg); +} + +.revisions-tooltip, +.revisions-tooltip-arrow:after { + border-width: 1px; + border-style: solid; +} + +div.revisions-controls > .wp-slider > .ui-slider-handle { + margin-right: -10px; +} + +.rtl div.revisions-controls > .wp-slider > .ui-slider-handle { + margin-left: -10px; +} + +/* jQuery UI Slider */ +.wp-slider.ui-slider { + position: relative; + border: 1px solid #dcdcde; + text-align: right; + cursor: pointer; +} + +.wp-slider .ui-slider-handle { + border-radius: 50%; + height: 18px; + margin-top: -5px; + outline: none; + padding: 2px; + position: absolute; + width: 18px; + z-index: 2; + touch-action: none; +} + +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.focus { + background: #f6f7f7; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 0 #c3c4c7; +} + +.wp-slider .ui-slider-handle:hover, +.wp-slider .ui-slider-handle.ui-state-hover { + background: #f6f7f7; + border-color: #8c8f94; +} + +.wp-slider .ui-slider-handle:active, +.wp-slider .ui-slider-handle.ui-state-active { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + transform: translateY(1px); +} + +.wp-slider .ui-slider-handle:before { + background: none; + position: absolute; + top: 2px; + right: 2px; + color: #50575e; + content: "\f229"; + font: normal 18px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-slider .ui-slider-handle:hover:before, +.wp-slider .ui-slider-handle.ui-state-hover:before { + color: #1d2327; +} + +.wp-slider .ui-slider-handle.from-handle:before, +.wp-slider .ui-slider-handle.to-handle:before { + font-size: 20px !important; + margin: -1px -1px 0 0; +} + +.wp-slider .ui-slider-handle.from-handle:before { + content: "\f141"; +} + +.wp-slider .ui-slider-handle.to-handle:before { + content: "\f139"; +} + +.rtl .wp-slider .ui-slider-handle.from-handle:before { + content: "\f139"; +} + +.rtl .wp-slider .ui-slider-handle.to-handle:before { + content: "\f141"; + left: -1px; +} + +.wp-slider .ui-slider-range { + position: absolute; + font-size: 0.7em; + display: block; + border: 0; + background-color: transparent; + background-image: none; +} + +.wp-slider.ui-slider-horizontal { + height: 0.7em; +} + +.wp-slider.ui-slider-horizontal .ui-slider-handle { + top: -.25em; + margin-right: -.6em; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range-min { + right: 0; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range-max { + left: 0; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .revision-tick.completed-false { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + #diff-next-revision, + #diff-previous-revision { + margin-top: -1em; + } + + .revisions-buttons { + overflow: hidden; + margin-bottom: 15px; + } + + .revisions-controls, + .comparing-two-revisions .revisions-controls { + height: 170px; + } + + .revisions-tooltip { + bottom: 130px; + z-index: 2; + } + + .diff-meta { + overflow: hidden; + } + + table.diff { + -ms-word-break: break-all; + word-break: break-all; + word-wrap: break-word; + } + + .diff-meta input.restore-revision { + margin-top: 0; + } +} diff --git a/tools/storybook/wordpress/css/revisions-rtl.min.css b/tools/storybook/wordpress/css/revisions-rtl.min.css new file mode 100644 index 00000000000..41857127746 --- /dev/null +++ b/tools/storybook/wordpress/css/revisions-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-diff-frame{top:10px}.revisions-controls{padding-top:40px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a7aaad;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;left:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#646970}.revisions-controls .author-card.autosave{color:#d63638}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:right}.revisions-next{float:left}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.57142857;padding:.5em 2em .5em .5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{position:relative;background-color:#fcf0f1}table.diff .diff-deletedline del{background-color:#ffabaf}table.diff .diff-addedline{position:relative;background-color:#edfaef}table.diff .diff-addedline .dashicons,table.diff .diff-deletedline .dashicons{position:absolute;top:.85714286em;right:.5em;width:1em;height:1em;font-size:1em;line-height:1}table.diff .diff-addedline .dashicons{top:.92857143em}table.diff .diff-addedline ins{background-color:#68de7c}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:2.46153846;min-width:60px;text-align:left;float:right;margin-left:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:1.33333333}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:right;margin-right:6px;margin-left:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:left;margin-right:6px;margin-left:6px;margin-top:2px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-left:0;margin-right:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;right:0;margin-right:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #dcdcde;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;right:0;margin-right:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #dcdcde;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f6f7f7;border:1px solid #c3c4c7;box-shadow:0 1px 0 #c3c4c7}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#f6f7f7;border-color:#8c8f94}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;right:2px;color:#50575e;content:"\f229";font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#1d2327}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px -1px 0 0}.wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f141";left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-right:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{right:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{left:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}.revisions-buttons{overflow:hidden;margin-bottom:15px}.comparing-two-revisions .revisions-controls,.revisions-controls{height:170px}.revisions-tooltip{bottom:130px;z-index:2}.diff-meta{overflow:hidden}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}.diff-meta input.restore-revision{margin-top:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/revisions.css b/tools/storybook/wordpress/css/revisions.css new file mode 100644 index 00000000000..e523ee431ce --- /dev/null +++ b/tools/storybook/wordpress/css/revisions.css @@ -0,0 +1,602 @@ +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ +.revisions-control-frame, +.revisions-diff-frame { + position: relative; +} + +.revisions-diff-frame { + top: 10px; +} + +.revisions-controls { + padding-top: 40px; + z-index: 1; +} + +.revisions-controls input[type="checkbox"] { + position: relative; + top: -1px; + vertical-align: text-bottom; +} + +.revisions.pinned .revisions-controls { + position: fixed; + top: 0; + height: 82px; + background: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.revisions-tickmarks { + position: relative; + margin: 0 auto; + height: 0.7em; + top: 7px; + max-width: 70%; + box-sizing: border-box; + background-color: #fff; +} + +.revisions-tickmarks > div { + position: absolute; + height: 100%; + border-left: 1px solid #a7aaad; + box-sizing: border-box; +} + +.revisions-tickmarks > div:first-child { + border-width: 0; +} + +.comparing-two-revisions .revisions-controls { + height: 140px; +} + +.comparing-two-revisions.pinned .revisions-controls { + height: 124px; +} + +.revisions .diff-error { + position: absolute; + text-align: center; + margin: 0 auto; + width: 100%; + display: none; +} + +.revisions.diff-error .diff-error { + display: block; +} + +.revisions .loading-indicator { + position: absolute; + vertical-align: middle; + opacity: 0; + width: 100%; + width: calc( 100% - 30px ); + top: 50%; + top: calc( 50% - 10px ); + transition: opacity 0.5s; +} + +body.folded .revisions .loading-indicator { + margin-left: -32px; +} + +.revisions .loading-indicator span.spinner { + display: block; + margin: 0 auto; + float: none; +} + +.revisions.loading .loading-indicator { + opacity: 1; +} + +.revisions .diff { + transition: opacity 0.5s; +} + +.revisions.loading .diff { + opacity: 0.5; +} + +.revisions.diff-error .diff { + visibility: hidden; +} + +.revisions-meta { + margin-top: 20px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + overflow: hidden; +} + +.revisions.pinned .revisions-meta { + box-shadow: none; +} + +.revision-toggle-compare-mode { + position: absolute; + top: 0; + right: 0; +} + +.comparing-two-revisions .revisions-previous, +.comparing-two-revisions .revisions-next, +.revisions-meta .diff-meta-to strong { + display: none; +} + +.revisions-controls .author-card .date { + color: #646970; +} + +.revisions-controls .author-card.autosave { + color: #d63638; +} + +.revisions-controls .author-card .author-name { + font-weight: 600; +} + +.comparing-two-revisions .diff-meta-to strong { + display: block; +} + +.revisions.pinned .revisions-buttons { + padding: 0 11px; +} + +.revisions-previous, +.revisions-next { + position: relative; + z-index: 1; +} + +.revisions-previous { + float: left; +} + +.revisions-next { + float: right; +} + +.revisions-controls .wp-slider { + max-width: 70%; + margin: 0 auto; + top: -3px; +} + +.revisions-diff { + padding: 15px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.revisions-diff h3:first-child { + margin-top: 0; +} + +/* Revision meta box */ +.post-revisions li img, +#revisions-meta-restored img { + vertical-align: middle; +} + +table.diff { + table-layout: fixed; + width: 100%; + white-space: pre-wrap; +} + +table.diff col.content { + width: auto; +} + +table.diff col.content.diffsplit { + width: 48%; +} + +table.diff col.diffsplit.middle { + width: auto; +} + +table.diff col.ltype { + width: 30px; +} + +table.diff tr { + background-color: transparent; +} + +table.diff td, +table.diff th { + font-family: Consolas, Monaco, monospace; + font-size: 14px; + line-height: 1.57142857; + padding: 0.5em 0.5em 0.5em 2em; + vertical-align: top; + word-wrap: break-word; +} + +table.diff td h1, +table.diff td h2, +table.diff td h3, +table.diff td h4, +table.diff td h5, +table.diff td h6 { + margin: 0; +} + +table.diff .diff-deletedline del, +table.diff .diff-addedline ins { + text-decoration: none; +} + +table.diff .diff-deletedline { + position: relative; + background-color: #fcf0f1; +} + +table.diff .diff-deletedline del { + background-color: #ffabaf; +} + +table.diff .diff-addedline { + position: relative; + background-color: #edfaef; +} + +table.diff .diff-deletedline .dashicons, +table.diff .diff-addedline .dashicons { + position: absolute; + top: 0.85714286em; + left: 0.5em; + width: 1em; + height: 1em; + font-size: 1em; + line-height: 1; +} + +table.diff .diff-addedline .dashicons { + /* Compensate the vertically non-centered plus glyph. */ + top: 0.92857143em; +} + +table.diff .diff-addedline ins { + background-color: #68de7c; +} + +.diff-meta { + padding: 5px; + clear: both; + min-height: 32px; +} + +.diff-title strong { + line-height: 2.46153846; + min-width: 60px; + text-align: right; + float: left; + margin-right: 5px; +} + +.revisions-controls .author-card .author-info { + font-size: 12px; + line-height: 1.33333333; +} + +.revisions-controls .author-card .avatar, +.revisions-controls .author-card .author-info { + float: left; + margin-left: 6px; + margin-right: 6px; +} + +.revisions-controls .author-card .byline { + display: block; + font-size: 12px; +} + +.revisions-controls .author-card .avatar { + vertical-align: middle; +} + +.diff-meta input.restore-revision { + float: right; + margin-left: 6px; + margin-right: 6px; + margin-top: 2px; +} + +.diff-meta-from { + display: none; +} + +.comparing-two-revisions .diff-meta-from { + display: block; +} + +.revisions-tooltip { + position: absolute; + bottom: 105px; + margin-right: 0; + margin-left: -69px; + z-index: 0; + max-width: 350px; + min-width: 130px; + padding: 8px 4px; + display: none; + opacity: 0; +} + +.revisions-tooltip.flipped { + margin-left: 0; + margin-right: -70px; +} + +.revisions.pinned .revisions-tooltip { + display: none !important; +} + +.comparing-two-revisions .revisions-tooltip { + bottom: 145px; +} + +.revisions-tooltip-arrow { + width: 70px; + height: 15px; + overflow: hidden; + position: absolute; + left: 0; + margin-left: 35px; + bottom: -15px; +} + +.revisions-tooltip.flipped .revisions-tooltip-arrow { + margin-left: 0; + margin-right: 35px; + left: auto; + right: 0; +} + +.revisions-tooltip-arrow > span { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + transform: rotate(45deg); +} + +.revisions-tooltip.flipped .revisions-tooltip-arrow > span { + left: auto; + right: 20px; +} + +.revisions-tooltip, +.revisions-tooltip-arrow > span { + border: 1px solid #dcdcde; + background-color: #fff; +} + +.revisions-tooltip { + display: none; +} + +.arrow { + width: 70px; + height: 16px; + overflow: hidden; + position: absolute; + left: 0; + margin-left: -35px; + bottom: 90px; + z-index: 10000; +} + +.arrow:after { + z-index: 9999; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.arrow.top { + top: -16px; + bottom: auto; +} + +.arrow.left { + left: 20%; +} + +.arrow:after { + content: ""; + position: absolute; + left: 20px; + top: -20px; + width: 25px; + height: 25px; + transform: rotate(45deg); +} + +.revisions-tooltip, +.revisions-tooltip-arrow:after { + border-width: 1px; + border-style: solid; +} + +div.revisions-controls > .wp-slider > .ui-slider-handle { + margin-left: -10px; +} + +.rtl div.revisions-controls > .wp-slider > .ui-slider-handle { + margin-right: -10px; +} + +/* jQuery UI Slider */ +.wp-slider.ui-slider { + position: relative; + border: 1px solid #dcdcde; + text-align: left; + cursor: pointer; +} + +.wp-slider .ui-slider-handle { + border-radius: 50%; + height: 18px; + margin-top: -5px; + outline: none; + padding: 2px; + position: absolute; + width: 18px; + z-index: 2; + touch-action: none; +} + +.wp-slider .ui-slider-handle, +.wp-slider .ui-slider-handle.focus { + background: #f6f7f7; + border: 1px solid #c3c4c7; + box-shadow: 0 1px 0 #c3c4c7; +} + +.wp-slider .ui-slider-handle:hover, +.wp-slider .ui-slider-handle.ui-state-hover { + background: #f6f7f7; + border-color: #8c8f94; +} + +.wp-slider .ui-slider-handle:active, +.wp-slider .ui-slider-handle.ui-state-active { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + transform: translateY(1px); +} + +.wp-slider .ui-slider-handle:before { + background: none; + position: absolute; + top: 2px; + left: 2px; + color: #50575e; + content: "\f229"; + font: normal 18px/1 dashicons; + speak: never; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-slider .ui-slider-handle:hover:before, +.wp-slider .ui-slider-handle.ui-state-hover:before { + color: #1d2327; +} + +.wp-slider .ui-slider-handle.from-handle:before, +.wp-slider .ui-slider-handle.to-handle:before { + font-size: 20px !important; + margin: -1px 0 0 -1px; +} + +.wp-slider .ui-slider-handle.from-handle:before { + content: "\f139"; +} + +.wp-slider .ui-slider-handle.to-handle:before { + content: "\f141"; +} + +.rtl .wp-slider .ui-slider-handle.from-handle:before { + content: "\f141"; +} + +.rtl .wp-slider .ui-slider-handle.to-handle:before { + content: "\f139"; + right: -1px; +} + +.wp-slider .ui-slider-range { + position: absolute; + font-size: 0.7em; + display: block; + border: 0; + background-color: transparent; + background-image: none; +} + +.wp-slider.ui-slider-horizontal { + height: 0.7em; +} + +.wp-slider.ui-slider-horizontal .ui-slider-handle { + top: -.25em; + margin-left: -.6em; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} + +.wp-slider.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .revision-tick.completed-false { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + #diff-next-revision, + #diff-previous-revision { + margin-top: -1em; + } + + .revisions-buttons { + overflow: hidden; + margin-bottom: 15px; + } + + .revisions-controls, + .comparing-two-revisions .revisions-controls { + height: 170px; + } + + .revisions-tooltip { + bottom: 130px; + z-index: 2; + } + + .diff-meta { + overflow: hidden; + } + + table.diff { + -ms-word-break: break-all; + word-break: break-all; + word-wrap: break-word; + } + + .diff-meta input.restore-revision { + margin-top: 0; + } +} diff --git a/tools/storybook/wordpress/css/revisions.min.css b/tools/storybook/wordpress/css/revisions.min.css new file mode 100644 index 00000000000..07cdf1db01c --- /dev/null +++ b/tools/storybook/wordpress/css/revisions.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-diff-frame{top:10px}.revisions-controls{padding-top:40px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a7aaad;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s}body.folded .revisions .loading-indicator{margin-left:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#646970}.revisions-controls .author-card.autosave{color:#d63638}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:left}.revisions-next{float:right}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.57142857;padding:.5em .5em .5em 2em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{position:relative;background-color:#fcf0f1}table.diff .diff-deletedline del{background-color:#ffabaf}table.diff .diff-addedline{position:relative;background-color:#edfaef}table.diff .diff-addedline .dashicons,table.diff .diff-deletedline .dashicons{position:absolute;top:.85714286em;left:.5em;width:1em;height:1em;font-size:1em;line-height:1}table.diff .diff-addedline .dashicons{top:.92857143em}table.diff .diff-addedline ins{background-color:#68de7c}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:2.46153846;min-width:60px;text-align:right;float:left;margin-right:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:1.33333333}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:left;margin-left:6px;margin-right:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:right;margin-left:6px;margin-right:6px;margin-top:2px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-right:0;margin-left:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-left:0;margin-right:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;left:0;margin-left:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-left:0;margin-right:35px;left:auto;right:0}.revisions-tooltip-arrow>span{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:auto;right:20px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #dcdcde;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;left:0;margin-left:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #dcdcde;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f6f7f7;border:1px solid #c3c4c7;box-shadow:0 1px 0 #c3c4c7}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#f6f7f7;border-color:#8c8f94}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;left:2px;color:#50575e;content:"\f229";font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#1d2327}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px 0 0 -1px}.wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f139";right:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-left:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{left:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{right:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}.revisions-buttons{overflow:hidden;margin-bottom:15px}.comparing-two-revisions .revisions-controls,.revisions-controls{height:170px}.revisions-tooltip{bottom:130px;z-index:2}.diff-meta{overflow:hidden}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}.diff-meta input.restore-revision{margin-top:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/site-health-rtl.css b/tools/storybook/wordpress/css/site-health-rtl.css new file mode 100644 index 00000000000..ccfff2a515e --- /dev/null +++ b/tools/storybook/wordpress/css/site-health-rtl.css @@ -0,0 +1,360 @@ +/*! This file is auto-generated */ +/* Note: Any Site Health selectors that use +duplicate styling from the Privacy settings screen +are styled in the Privacy section of edit.css */ + +.health-check-body h2 { + line-height: 1.4; +} + +.health-check-body h3 { + padding: 0; + font-weight: 400; +} + +.health-check-widget-title-section { + text-align: center; +} + +.site-health-progress-wrapper { + margin-bottom: 1rem; +} + +.site-health-progress { + display: inline-block; + height: 20px; + width: 20px; + margin: 0; + border-radius: 100%; + position: relative; + font-weight: 600; + font-size: 0.4rem; +} + +.site-health-progress-count { + position: absolute; + display: block; + height: 80px; + width: 80px; + right: 50%; + top: 50%; + margin-top: -40px; + margin-right: -40px; + border-radius: 100%; + line-height: 6.3; + font-size: 2em; +} + +.loading .site-health-progress svg #bar { + stroke-dashoffset: 0; + stroke: #c3c4c7; + animation: loadingPulse 3s infinite ease-in-out; +} + +.site-health-progress svg circle { + stroke-dashoffset: 0; + transition: stroke-dashoffset 1s linear; + stroke: #c3c4c7; + stroke-width: 2em; +} + +.site-health-progress svg #bar { + stroke-dashoffset: 565; + stroke: #d63638; +} + +.green .site-health-progress #bar { + stroke: #00a32a; +} +.green .site-health-progress .site-health-progress-label { + color: #00a32a; +} + +.orange .site-health-progress #bar { + stroke: #dba617; +} +.orange .site-health-progress .site-health-progress-label { + color: #dba617; +} + +.site-health-progress-label { + font-weight: 600; + line-height: 20px; + margin-right: 0.3rem; +} + +@keyframes loadingPulse { + 0% { + stroke: #c3c4c7; + } + 50% { + stroke: #72aee6; + } + 100% { + stroke: #c3c4c7; + } +} + +.health-check-tabs-wrapper { + /* IE 11 */ + display: -ms-inline-grid; + -ms-grid-columns: 1fr 1fr 1fr 1fr; + vertical-align: top; + /* modern browsers */ + display: inline-grid; + grid-template-columns: 1fr 1fr 1fr 1fr; +} + +.health-check-tabs-wrapper.tab-count-1 { + grid-template-columns: 1fr; +} +.health-check-tabs-wrapper.tab-count-2 { + grid-template-columns: 1fr 1fr; +} +.health-check-tabs-wrapper.tab-count-3 { + grid-template-columns: 1fr 1fr 1fr; +} + +.health-check-tab { + display: block; /* IE 11 */ + text-decoration: none; + color: inherit; + padding: 0.5rem 1rem 1rem; + margin: 0 1rem; + transition: box-shadow 0.5s ease-in-out; +} + +.health-check-offscreen-nav-wrapper { + position: relative; + background: transparent; + border: none; +} +.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav { + right: initial; +} + +.health-check-offscreen-nav { + display: none; + position: absolute; + padding-top: 10px; + left: 0; + top: 100%; + width: 13rem; +} +.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav { + display: inline-block; +} +.health-check-offscreen-nav:before { + position: absolute; + content: ""; + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 5px; + border-color: transparent transparent #ffffff; + left: 20px; + top: 5px; +} + +.health-check-offscreen-nav .health-check-tab { + background: #fff; + box-shadow: 0 2px 5px 0 rgba( 0, 0, 0, 0.75 ); +} + +.health-check-offscreen-nav .health-check-tab.active { + box-shadow: inset -3px 0 #3582c4; + font-weight: 600; +} + +.health-check-body { + max-width: 800px; + margin: 0 auto; +} + +.health-check-table td:first-child { + width: 30%; +} + +.health-check-table td { + width: 70%; +} + +.health-check-table ul, +.health-check-table ol { + margin: 0; +} + +.health-check-body li { + line-height: 1.5; +} + +.health-check-body .pass::before, +.health-check-body .good::before { + content: "\f147"; + color: #00a32a; +} + +.health-check-body .warning::before { + content: "\f460"; + color: #dba617; +} + +.health-check-body .info::before { + content: "\f348"; + color: #72aee6; +} + +.health-check-body .fail::before, +.health-check-body .error::before { + content: "\f335"; + color: #d63638; +} + +.site-health-copy-buttons { + margin: 1rem 0; +} + +.site-health-copy-buttons .copy-button-wrapper { + display: inline-flex; + align-items: center; + margin: 0.5rem 0 1rem; +} + +.site-health-copy-buttons .success { + color: #008a20; + margin-right: 0.5rem; +} + +.site-status-has-issues.hide { + display: none; +} + +.site-health-view-more { + text-align: center; +} + +.site-health-issues-wrapper:first-of-type { + margin-top: 3rem; +} + +.site-health-issues-wrapper { + margin-bottom: 3rem; + margin-top: 2rem; +} + +.site-status-all-clear { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + height: 100%; + width: 100%; + margin: 0 0 3rem; +} + +@media all and (min-width: 784px) { + .site-status-all-clear { + margin: 2rem 0 5rem; + } +} + +.site-status-all-clear.hide { + display: none; +} + +.site-status-all-clear .dashicons { + font-size: 150px; + height: 150px; + margin-bottom: 2rem; + width: 150px; +} + +.site-status-all-clear .encouragement { + font-size: 1.5rem; + font-weight: 600; +} + +.site-status-all-clear p { + margin: 0; +} + +.wp-core-ui .button.site-health-view-passed { + position: relative; + padding-left: 40px; + padding-right: 20px; +} + + +/* Better position for the WordPress admin notices and update nag. */ +.site-health .notice { + margin: 5px 22px 15px 20px; +} + +.site-health .update-nag { + margin-bottom: 20px; + margin-right: 22px; +} + +.health-check-wp-paths-sizes.spinner { + visibility: visible; + float: none; + margin: 0 4px; + flex-shrink: 0; +} + +/* Styling unique to the dashboard widget. */ +#dashboard_site_health .site-health-details { + padding-right: 16px; +} + +#dashboard_site_health .health-check-widget { + display: grid; + grid-template-columns: 1fr 2fr; + grid-auto-rows: minmax(64px, auto); + column-gap: 16px; + align-items: center; +} +#dashboard_site_health .site-health-progress-label { + margin-right: 0; +} + +@media screen and (max-width: 480px) { + #dashboard_site_health .health-check-widget { + grid-template-columns: 100%; + } +} + +@media screen and (max-width: 782px) { + + .site-health-issues-wrapper .health-check-accordion-trigger { + flex-direction: column; + align-items: flex-start; + } + + .health-check-accordion-trigger .badge { + margin: 1em 0 0; + } + + .health-check-table { + table-layout: fixed; + } + + .health-check-table td { + box-sizing: border-box; + display: block; + width: 100%; + word-wrap: break-word; + } + + .health-check-table td:first-child { + width: 100%; + padding-bottom: 0; + font-weight: 600; + } + + .wp-core-ui .site-health-copy-buttons .copy-button { + margin-bottom: 0; + } +} + diff --git a/tools/storybook/wordpress/css/site-health-rtl.min.css b/tools/storybook/wordpress/css/site-health-rtl.min.css new file mode 100644 index 00000000000..852814b4dcf --- /dev/null +++ b/tools/storybook/wordpress/css/site-health-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.health-check-body h2{line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-widget-title-section{text-align:center}.site-health-progress-wrapper{margin-bottom:1rem}.site-health-progress{display:inline-block;height:20px;width:20px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:6.3;font-size:2em}.loading .site-health-progress svg #bar{stroke-dashoffset:0;stroke:#c3c4c7;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#c3c4c7;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#d63638}.green .site-health-progress #bar{stroke:#00a32a}.green .site-health-progress .site-health-progress-label{color:#00a32a}.orange .site-health-progress #bar{stroke:#dba617}.orange .site-health-progress .site-health-progress-label{color:#dba617}.site-health-progress-label{font-weight:600;line-height:20px;margin-right:.3rem}@keyframes loadingPulse{0%{stroke:#c3c4c7}50%{stroke:#72aee6}100%{stroke:#c3c4c7}}.health-check-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr 1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr 1fr 1fr}.health-check-tabs-wrapper.tab-count-1{grid-template-columns:1fr}.health-check-tabs-wrapper.tab-count-2{grid-template-columns:1fr 1fr}.health-check-tabs-wrapper.tab-count-3{grid-template-columns:1fr 1fr 1fr}.health-check-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-offscreen-nav-wrapper{position:relative;background:0 0;border:none}.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav{right:initial}.health-check-offscreen-nav{display:none;position:absolute;padding-top:10px;left:0;top:100%;width:13rem}.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav{display:inline-block}.health-check-offscreen-nav:before{position:absolute;content:"";width:0;height:0;border-style:solid;border-width:0 10px 5px;border-color:transparent transparent #fff;left:20px;top:5px}.health-check-offscreen-nav .health-check-tab{background:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.75)}.health-check-offscreen-nav .health-check-tab.active{box-shadow:inset -3px 0 #3582c4;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";color:#00a32a}.health-check-body .warning::before{content:"\f460";color:#dba617}.health-check-body .info::before{content:"\f348";color:#72aee6}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";color:#d63638}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{display:inline-flex;align-items:center;margin:.5rem 0 1rem}.site-health-copy-buttons .success{color:#008a20;margin-right:.5rem}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin:0 0 3rem}@media all and (min-width:784px){.site-status-all-clear{margin:2rem 0 5rem}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:150px;margin-bottom:2rem;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.wp-core-ui .button.site-health-view-passed{position:relative;padding-left:40px;padding-right:20px}.site-health .notice{margin:5px 22px 15px 20px}.site-health .update-nag{margin-bottom:20px;margin-right:22px}.health-check-wp-paths-sizes.spinner{visibility:visible;float:none;margin:0 4px;flex-shrink:0}#dashboard_site_health .site-health-details{padding-right:16px}#dashboard_site_health .health-check-widget{display:grid;grid-template-columns:1fr 2fr;grid-auto-rows:minmax(64px,auto);column-gap:16px;align-items:center}#dashboard_site_health .site-health-progress-label{margin-right:0}@media screen and (max-width:480px){#dashboard_site_health .health-check-widget{grid-template-columns:100%}}@media screen and (max-width:782px){.site-health-issues-wrapper .health-check-accordion-trigger{flex-direction:column;align-items:flex-start}.health-check-accordion-trigger .badge{margin:1em 0 0}.health-check-table{table-layout:fixed}.health-check-table td{box-sizing:border-box;display:block;width:100%;word-wrap:break-word}.health-check-table td:first-child{width:100%;padding-bottom:0;font-weight:600}.wp-core-ui .site-health-copy-buttons .copy-button{margin-bottom:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/site-health.css b/tools/storybook/wordpress/css/site-health.css new file mode 100644 index 00000000000..ed539d33ae2 --- /dev/null +++ b/tools/storybook/wordpress/css/site-health.css @@ -0,0 +1,359 @@ +/* Note: Any Site Health selectors that use +duplicate styling from the Privacy settings screen +are styled in the Privacy section of edit.css */ + +.health-check-body h2 { + line-height: 1.4; +} + +.health-check-body h3 { + padding: 0; + font-weight: 400; +} + +.health-check-widget-title-section { + text-align: center; +} + +.site-health-progress-wrapper { + margin-bottom: 1rem; +} + +.site-health-progress { + display: inline-block; + height: 20px; + width: 20px; + margin: 0; + border-radius: 100%; + position: relative; + font-weight: 600; + font-size: 0.4rem; +} + +.site-health-progress-count { + position: absolute; + display: block; + height: 80px; + width: 80px; + left: 50%; + top: 50%; + margin-top: -40px; + margin-left: -40px; + border-radius: 100%; + line-height: 6.3; + font-size: 2em; +} + +.loading .site-health-progress svg #bar { + stroke-dashoffset: 0; + stroke: #c3c4c7; + animation: loadingPulse 3s infinite ease-in-out; +} + +.site-health-progress svg circle { + stroke-dashoffset: 0; + transition: stroke-dashoffset 1s linear; + stroke: #c3c4c7; + stroke-width: 2em; +} + +.site-health-progress svg #bar { + stroke-dashoffset: 565; + stroke: #d63638; +} + +.green .site-health-progress #bar { + stroke: #00a32a; +} +.green .site-health-progress .site-health-progress-label { + color: #00a32a; +} + +.orange .site-health-progress #bar { + stroke: #dba617; +} +.orange .site-health-progress .site-health-progress-label { + color: #dba617; +} + +.site-health-progress-label { + font-weight: 600; + line-height: 20px; + margin-left: 0.3rem; +} + +@keyframes loadingPulse { + 0% { + stroke: #c3c4c7; + } + 50% { + stroke: #72aee6; + } + 100% { + stroke: #c3c4c7; + } +} + +.health-check-tabs-wrapper { + /* IE 11 */ + display: -ms-inline-grid; + -ms-grid-columns: 1fr 1fr 1fr 1fr; + vertical-align: top; + /* modern browsers */ + display: inline-grid; + grid-template-columns: 1fr 1fr 1fr 1fr; +} + +.health-check-tabs-wrapper.tab-count-1 { + grid-template-columns: 1fr; +} +.health-check-tabs-wrapper.tab-count-2 { + grid-template-columns: 1fr 1fr; +} +.health-check-tabs-wrapper.tab-count-3 { + grid-template-columns: 1fr 1fr 1fr; +} + +.health-check-tab { + display: block; /* IE 11 */ + text-decoration: none; + color: inherit; + padding: 0.5rem 1rem 1rem; + margin: 0 1rem; + transition: box-shadow 0.5s ease-in-out; +} + +.health-check-offscreen-nav-wrapper { + position: relative; + background: transparent; + border: none; +} +.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav { + left: initial; +} + +.health-check-offscreen-nav { + display: none; + position: absolute; + padding-top: 10px; + right: 0; + top: 100%; + width: 13rem; +} +.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav { + display: inline-block; +} +.health-check-offscreen-nav:before { + position: absolute; + content: ""; + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 5px; + border-color: transparent transparent #ffffff; + right: 20px; + top: 5px; +} + +.health-check-offscreen-nav .health-check-tab { + background: #fff; + box-shadow: 0 2px 5px 0 rgba( 0, 0, 0, 0.75 ); +} + +.health-check-offscreen-nav .health-check-tab.active { + box-shadow: inset 3px 0 #3582c4; + font-weight: 600; +} + +.health-check-body { + max-width: 800px; + margin: 0 auto; +} + +.health-check-table td:first-child { + width: 30%; +} + +.health-check-table td { + width: 70%; +} + +.health-check-table ul, +.health-check-table ol { + margin: 0; +} + +.health-check-body li { + line-height: 1.5; +} + +.health-check-body .pass::before, +.health-check-body .good::before { + content: "\f147"; + color: #00a32a; +} + +.health-check-body .warning::before { + content: "\f460"; + color: #dba617; +} + +.health-check-body .info::before { + content: "\f348"; + color: #72aee6; +} + +.health-check-body .fail::before, +.health-check-body .error::before { + content: "\f335"; + color: #d63638; +} + +.site-health-copy-buttons { + margin: 1rem 0; +} + +.site-health-copy-buttons .copy-button-wrapper { + display: inline-flex; + align-items: center; + margin: 0.5rem 0 1rem; +} + +.site-health-copy-buttons .success { + color: #008a20; + margin-left: 0.5rem; +} + +.site-status-has-issues.hide { + display: none; +} + +.site-health-view-more { + text-align: center; +} + +.site-health-issues-wrapper:first-of-type { + margin-top: 3rem; +} + +.site-health-issues-wrapper { + margin-bottom: 3rem; + margin-top: 2rem; +} + +.site-status-all-clear { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + height: 100%; + width: 100%; + margin: 0 0 3rem; +} + +@media all and (min-width: 784px) { + .site-status-all-clear { + margin: 2rem 0 5rem; + } +} + +.site-status-all-clear.hide { + display: none; +} + +.site-status-all-clear .dashicons { + font-size: 150px; + height: 150px; + margin-bottom: 2rem; + width: 150px; +} + +.site-status-all-clear .encouragement { + font-size: 1.5rem; + font-weight: 600; +} + +.site-status-all-clear p { + margin: 0; +} + +.wp-core-ui .button.site-health-view-passed { + position: relative; + padding-right: 40px; + padding-left: 20px; +} + + +/* Better position for the WordPress admin notices and update nag. */ +.site-health .notice { + margin: 5px 20px 15px 22px; +} + +.site-health .update-nag { + margin-bottom: 20px; + margin-left: 22px; +} + +.health-check-wp-paths-sizes.spinner { + visibility: visible; + float: none; + margin: 0 4px; + flex-shrink: 0; +} + +/* Styling unique to the dashboard widget. */ +#dashboard_site_health .site-health-details { + padding-left: 16px; +} + +#dashboard_site_health .health-check-widget { + display: grid; + grid-template-columns: 1fr 2fr; + grid-auto-rows: minmax(64px, auto); + column-gap: 16px; + align-items: center; +} +#dashboard_site_health .site-health-progress-label { + margin-left: 0; +} + +@media screen and (max-width: 480px) { + #dashboard_site_health .health-check-widget { + grid-template-columns: 100%; + } +} + +@media screen and (max-width: 782px) { + + .site-health-issues-wrapper .health-check-accordion-trigger { + flex-direction: column; + align-items: flex-start; + } + + .health-check-accordion-trigger .badge { + margin: 1em 0 0; + } + + .health-check-table { + table-layout: fixed; + } + + .health-check-table td { + box-sizing: border-box; + display: block; + width: 100%; + word-wrap: break-word; + } + + .health-check-table td:first-child { + width: 100%; + padding-bottom: 0; + font-weight: 600; + } + + .wp-core-ui .site-health-copy-buttons .copy-button { + margin-bottom: 0; + } +} + diff --git a/tools/storybook/wordpress/css/site-health.min.css b/tools/storybook/wordpress/css/site-health.min.css new file mode 100644 index 00000000000..f8b08a3a72e --- /dev/null +++ b/tools/storybook/wordpress/css/site-health.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.health-check-body h2{line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.health-check-widget-title-section{text-align:center}.site-health-progress-wrapper{margin-bottom:1rem}.site-health-progress{display:inline-block;height:20px;width:20px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:6.3;font-size:2em}.loading .site-health-progress svg #bar{stroke-dashoffset:0;stroke:#c3c4c7;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#c3c4c7;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#d63638}.green .site-health-progress #bar{stroke:#00a32a}.green .site-health-progress .site-health-progress-label{color:#00a32a}.orange .site-health-progress #bar{stroke:#dba617}.orange .site-health-progress .site-health-progress-label{color:#dba617}.site-health-progress-label{font-weight:600;line-height:20px;margin-left:.3rem}@keyframes loadingPulse{0%{stroke:#c3c4c7}50%{stroke:#72aee6}100%{stroke:#c3c4c7}}.health-check-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr 1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr 1fr 1fr}.health-check-tabs-wrapper.tab-count-1{grid-template-columns:1fr}.health-check-tabs-wrapper.tab-count-2{grid-template-columns:1fr 1fr}.health-check-tabs-wrapper.tab-count-3{grid-template-columns:1fr 1fr 1fr}.health-check-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-offscreen-nav-wrapper{position:relative;background:0 0;border:none}.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav{left:initial}.health-check-offscreen-nav{display:none;position:absolute;padding-top:10px;right:0;top:100%;width:13rem}.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav{display:inline-block}.health-check-offscreen-nav:before{position:absolute;content:"";width:0;height:0;border-style:solid;border-width:0 10px 5px;border-color:transparent transparent #fff;right:20px;top:5px}.health-check-offscreen-nav .health-check-tab{background:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.75)}.health-check-offscreen-nav .health-check-tab.active{box-shadow:inset 3px 0 #3582c4;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";color:#00a32a}.health-check-body .warning::before{content:"\f460";color:#dba617}.health-check-body .info::before{content:"\f348";color:#72aee6}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";color:#d63638}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{display:inline-flex;align-items:center;margin:.5rem 0 1rem}.site-health-copy-buttons .success{color:#008a20;margin-left:.5rem}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin:0 0 3rem}@media all and (min-width:784px){.site-status-all-clear{margin:2rem 0 5rem}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:150px;margin-bottom:2rem;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.wp-core-ui .button.site-health-view-passed{position:relative;padding-right:40px;padding-left:20px}.site-health .notice{margin:5px 20px 15px 22px}.site-health .update-nag{margin-bottom:20px;margin-left:22px}.health-check-wp-paths-sizes.spinner{visibility:visible;float:none;margin:0 4px;flex-shrink:0}#dashboard_site_health .site-health-details{padding-left:16px}#dashboard_site_health .health-check-widget{display:grid;grid-template-columns:1fr 2fr;grid-auto-rows:minmax(64px,auto);column-gap:16px;align-items:center}#dashboard_site_health .site-health-progress-label{margin-left:0}@media screen and (max-width:480px){#dashboard_site_health .health-check-widget{grid-template-columns:100%}}@media screen and (max-width:782px){.site-health-issues-wrapper .health-check-accordion-trigger{flex-direction:column;align-items:flex-start}.health-check-accordion-trigger .badge{margin:1em 0 0}.health-check-table{table-layout:fixed}.health-check-table td{box-sizing:border-box;display:block;width:100%;word-wrap:break-word}.health-check-table td:first-child{width:100%;padding-bottom:0;font-weight:600}.wp-core-ui .site-health-copy-buttons .copy-button{margin-bottom:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/site-icon-rtl.css b/tools/storybook/wordpress/css/site-icon-rtl.css new file mode 100644 index 00000000000..06293b92e2d --- /dev/null +++ b/tools/storybook/wordpress/css/site-icon-rtl.css @@ -0,0 +1,55 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 28.0 - Site Icon +------------------------------------------------------------------------------*/ + +.site-icon-preview .favicon-preview { + margin: 5px 0 20px; + overflow: hidden; + position: relative; + max-width: 180px; +} + +.site-icon-preview .favicon, +.site-icon-preview .browser-title { + height: 16px; + right: 88px; + overflow: hidden; + position: absolute; + top: 16px; +} + +.site-icon-preview .favicon { + width: 16px; +} + +.site-icon-preview .browser-title { + right: 109px; + width: 72px; + white-space: nowrap; +} + +.site-icon-preview .app-icon-preview { + background-color: #000; + border-radius: 16px; + height: 64px; + overflow: hidden; + width: 64px; + margin-top: 5px; +} + +/* rtl:ignore */ +.site-icon-preview .favicon, +.site-icon-preview .app-icon-preview { + direction: ltr; +} + +.customize-control-site_icon .favicon-preview { + float: right; + margin-left: 12px; + margin-bottom: 0; +} + +.customize-control-site_icon .app-icon-preview { + margin-top: 9px; +} diff --git a/tools/storybook/wordpress/css/site-icon-rtl.min.css b/tools/storybook/wordpress/css/site-icon-rtl.min.css new file mode 100644 index 00000000000..901a1eb6525 --- /dev/null +++ b/tools/storybook/wordpress/css/site-icon-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;right:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{right:109px;width:72px;white-space:nowrap}.site-icon-preview .app-icon-preview{background-color:#000;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}.site-icon-preview .app-icon-preview,.site-icon-preview .favicon{direction:ltr}.customize-control-site_icon .favicon-preview{float:right;margin-left:12px;margin-bottom:0}.customize-control-site_icon .app-icon-preview{margin-top:9px} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/site-icon.css b/tools/storybook/wordpress/css/site-icon.css new file mode 100644 index 00000000000..eae9a576357 --- /dev/null +++ b/tools/storybook/wordpress/css/site-icon.css @@ -0,0 +1,54 @@ +/*------------------------------------------------------------------------------ + 28.0 - Site Icon +------------------------------------------------------------------------------*/ + +.site-icon-preview .favicon-preview { + margin: 5px 0 20px; + overflow: hidden; + position: relative; + max-width: 180px; +} + +.site-icon-preview .favicon, +.site-icon-preview .browser-title { + height: 16px; + left: 88px; + overflow: hidden; + position: absolute; + top: 16px; +} + +.site-icon-preview .favicon { + width: 16px; +} + +.site-icon-preview .browser-title { + left: 109px; + width: 72px; + white-space: nowrap; +} + +.site-icon-preview .app-icon-preview { + background-color: #000; + border-radius: 16px; + height: 64px; + overflow: hidden; + width: 64px; + margin-top: 5px; +} + +/* rtl:ignore */ +.site-icon-preview .favicon, +.site-icon-preview .app-icon-preview { + direction: ltr; +} + +.customize-control-site_icon .favicon-preview { + float: left; + margin-right: 12px; + margin-bottom: 0; +} + +.customize-control-site_icon .app-icon-preview { + margin-top: 9px; +} diff --git a/tools/storybook/wordpress/css/site-icon.min.css b/tools/storybook/wordpress/css/site-icon.min.css new file mode 100644 index 00000000000..5287d07f955 --- /dev/null +++ b/tools/storybook/wordpress/css/site-icon.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;left:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{left:109px;width:72px;white-space:nowrap}.site-icon-preview .app-icon-preview{background-color:#000;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}.site-icon-preview .app-icon-preview,.site-icon-preview .favicon{direction:ltr}.customize-control-site_icon .favicon-preview{float:left;margin-right:12px;margin-bottom:0}.customize-control-site_icon .app-icon-preview{margin-top:9px} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/themes-rtl.css b/tools/storybook/wordpress/css/themes-rtl.css new file mode 100644 index 00000000000..4e847251c9c --- /dev/null +++ b/tools/storybook/wordpress/css/themes-rtl.css @@ -0,0 +1,2005 @@ +/*! This file is auto-generated */ +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 16.1 - Manage Themes +------------------------------------------------------------------------------*/ + +.themes-php { + overflow-y: scroll; +} + +body.js .theme-browser.search-loading { + display: none; +} + +.theme-browser .themes { + clear: both; +} + +.themes-php:not(.network-admin) .wrap h1 { + margin-bottom: 15px; +} + +.themes-php .wrap h1 .button { + margin-right: 20px; +} + +/* Search form */ +.themes-php .search-form { + display: inline; +} + +.themes-php .wp-filter-search { + position: relative; + top: -2px; + right: 20px; + margin: 0; + width: 280px; +} + +/* Position admin messages */ +.theme .notice, +.theme .notice.is-dismissible { + right: 0; + margin: 0; + position: absolute; + left: 0; + top: 0; +} + +/** + * Main theme element + * (has flexible margins) + */ +.theme-browser .theme { + cursor: pointer; + float: right; + margin: 0 0 4% 4%; + position: relative; + width: 30.6%; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1); + box-sizing: border-box; +} + +.theme-browser .theme:nth-child(3n) { + margin-left: 0; +} + +.theme-browser .theme:hover, +.theme-browser .theme.focus { + cursor: pointer; +} + +.theme-browser .theme .theme-name { + font-size: 15px; + font-weight: 600; + height: 18px; + margin: 0; + padding: 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + background: #fff; + background: rgba(255, 255, 255, 0.65); +} + +/* Activate and Customize buttons, shown on hover and focus */ +.theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + transition: opacity 0.1s ease-in-out; + height: auto; + background: rgba(246, 247, 247, 0.7); + border-right: 1px solid rgba(0, 0, 0, 0.05); +} + +.theme-browser .theme:hover .theme-actions, +.theme-browser .theme.focus .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +.theme-browser .theme .theme-actions .button-primary { + margin-left: 3px; +} + +.theme-browser .theme .theme-actions .button { + float: none; + margin-right: 3px; +} + +/** + * Theme Screenshot + * + * Has a fixed aspect ratio of 1.5 to 1 regardless of screenshot size + * It is also responsive. + */ +.theme-browser .theme .theme-screenshot { + display: block; + overflow: hidden; + position: relative; + -webkit-backface-visibility: hidden; /* Prevents flicker of the screenshot on hover. */ + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme .theme-screenshot:after { + content: ""; + display: block; + padding-top: 66.66666%; /* using a 3/2 aspect ratio */ +} + +.theme-browser .theme .theme-screenshot img { + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme:hover .theme-screenshot, +.theme-browser .theme.focus .theme-screenshot { + background: #fff; +} + +.theme-browser.rendered .theme:hover .theme-screenshot img, +.theme-browser.rendered .theme.focus .theme-screenshot img { + opacity: 0.4; +} + +.theme-browser .theme .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + position: absolute; + top: 35%; + left: 20%; + right: 20%; + width: 60%; + background: #1d2327; + background: rgba(0, 0, 0, 0.7); + color: #fff; + font-size: 15px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); + -webkit-font-smoothing: antialiased; + font-weight: 600; + padding: 15px 12px; + text-align: center; + border-radius: 3px; + border: none; + transition: opacity 0.1s ease-in-out; + cursor: pointer; +} + +.theme-browser .theme .more-details:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #2271b1; +} + +.theme-browser .theme.focus { + border-color: #4f94d4; + box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); +} + +.theme-browser .theme.focus .more-details { + opacity: 1; +} + +/* Current theme needs to have its action always on view */ +.theme-browser .theme.active.focus .theme-actions { + display: block; +} + +.theme-browser.rendered .theme:hover .more-details, +.theme-browser.rendered .theme.focus .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +/** + * The currently active theme + */ +.theme-browser .theme.active .theme-name { + background: #1d2327; + color: #fff; + padding-left: 110px; + font-weight: 300; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5); +} + +.theme-browser .customize-control .theme.active .theme-name { + padding-left: 15px; +} + +.theme-browser .theme.active .theme-name span { + font-weight: 600; +} + +.theme-browser .theme.active .theme-actions { + background: rgba(44, 51, 56, 0.7); + border-right: none; + opacity: 1; +} + +.theme-id-container { + position: relative; +} + +.theme-browser .theme.active .theme-actions, +.theme-browser .theme .theme-actions { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 0; + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); +} + +.theme-browser .theme.active .theme-actions .button-primary { + margin-left: 0; +} + +.theme-browser .theme .theme-author { + background: #1d2327; + color: #f0f0f1; + display: none; + font-size: 14px; + margin: 0 10px; + padding: 5px 10px; + position: absolute; + bottom: 56px; +} + +.theme-browser .theme.display-author .theme-author { + display: block; +} + +.theme-browser .theme.display-author .theme-author a { + color: inherit; +} + +/** + * Add new theme + */ +.theme-browser .theme.add-new-theme { + border: none; + box-shadow: none; +} + +.theme-browser .theme.add-new-theme a { + text-decoration: none; + display: block; + position: relative; + z-index: 1; +} + +.theme-browser .theme.add-new-theme a:after { + display: block; + content: ""; + background: transparent; + background: rgba(0, 0, 0, 0); + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + padding: 0; + text-shadow: none; + border: 5px dashed #dcdcde; + border: 5px dashed rgba(0, 0, 0, 0.1); + box-sizing: border-box; +} + +.theme-browser .theme.add-new-theme span:after { + background: #dcdcde; + background: rgba(140, 143, 148, 0.1); + border-radius: 50%; + display: inline-block; + content: "\f132"; + -webkit-font-smoothing: antialiased; + font: normal 74px/115px dashicons; + width: 100px; + height: 100px; + vertical-align: middle; + text-align: center; + color: #8c8f94; + position: absolute; + top: 30%; + right: 50%; + margin-right: -50px; + text-indent: -4px; + padding: 0; + text-shadow: none; + z-index: 4; +} + +.rtl .theme-browser .theme.add-new-theme span:after { + text-indent: 4px; +} + +.theme-browser .theme.add-new-theme a:hover .theme-screenshot, +.theme-browser .theme.add-new-theme a:focus .theme-screenshot { + background: none; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + background: #fff; + color: #2271b1; +} + +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + border-color: transparent; + color: #fff; + background: #2271b1; + content: ""; +} + +.theme-browser .theme.add-new-theme .theme-name { + background: none; + text-align: center; + box-shadow: none; + font-weight: 400; + position: relative; + top: 0; + margin-top: -18px; + padding-top: 0; + padding-bottom: 48px; +} + +.theme-browser .theme.add-new-theme a:hover .theme-name, +.theme-browser .theme.add-new-theme a:focus .theme-name { + color: #fff; + z-index: 2; +} + +/** + * Theme Overlay + * Shown when clicking a theme + */ +.theme-overlay .theme-backdrop { + position: absolute; + right: -20px; + left: 0; + top: 0; + bottom: 0; + background: #f0f0f1; + background: rgba(240, 240, 241, 0.9); + z-index: 10000; /* Over WP Pointers. */ +} + +.theme-overlay .theme-header { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 48px; + border-bottom: 1px solid #dcdcde; +} + +.theme-overlay .theme-header button { + padding: 0; +} + +.theme-overlay .theme-header .close { + cursor: pointer; + height: 48px; + width: 50px; + text-align: center; + float: left; + border: 0; + border-right: 1px solid #dcdcde; + background-color: transparent; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:before { + font: normal 22px/50px dashicons !important; + color: #787c82; + display: inline-block; + content: "\f335"; + font-weight: 300; +} + +/* Left and right navigation */ +.theme-overlay .theme-header .right, +.theme-overlay .theme-header .left { + cursor: pointer; + color: #787c82; + background-color: transparent; + height: 48px; + width: 54px; + float: right; + text-align: center; + border: 0; + border-left: 1px solid #dcdcde; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:focus, +.theme-overlay .theme-header .close:hover, +.theme-overlay .theme-header .right:focus, +.theme-overlay .theme-header .right:hover, +.theme-overlay .theme-header .left:focus, +.theme-overlay .theme-header .left:hover { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; +} + +.theme-overlay .theme-header .close:focus:before, +.theme-overlay .theme-header .close:hover:before { + color: #000; +} + +.theme-overlay .theme-header .close:focus, +.theme-overlay .theme-header .right:focus, +.theme-overlay .theme-header .left:focus { + box-shadow: none; + outline: none; +} + +.theme-overlay .theme-header .left.disabled, +.theme-overlay .theme-header .right.disabled, +.theme-overlay .theme-header .left.disabled:hover, +.theme-overlay .theme-header .right.disabled:hover { + color: #c3c4c7; + background: inherit; + cursor: inherit; +} + +.theme-overlay .theme-header .right:before, +.theme-overlay .theme-header .left:before { + font: normal 20px/50px dashicons !important; + display: inline; + font-weight: 300; +} + +.theme-overlay .theme-header .left:before { + content: "\f345"; +} + +.theme-overlay .theme-header .right:before { + content: "\f341"; +} + +.theme-overlay .theme-wrap { + clear: both; + position: fixed; + top: 9%; + right: 190px; + left: 30px; + bottom: 3%; + background: #fff; + box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + z-index: 10000; /* Over WP Pointers. */ + box-sizing: border-box; + -webkit-overflow-scrolling: touch; +} + +body.folded .theme-browser ~ .theme-overlay .theme-wrap { + right: 70px; +} + +.theme-overlay .theme-about { + position: absolute; + top: 49px; + bottom: 57px; + right: 0; + left: 0; + overflow: auto; + padding: 2% 4%; +} + +.theme-overlay .theme-actions { + position: absolute; + text-align: center; + bottom: 0; + right: 0; + left: 0; + padding: 10px 25px 5px; + background: #f6f7f7; + z-index: 30; + box-sizing: border-box; + border-top: 1px solid #f0f0f1; +} + +.theme-overlay .theme-actions a { + margin-left: 5px; + margin-bottom: 5px; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"], +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"] { + display: none; +} + +.broken-themes a.delete-theme, +.theme-overlay .theme-actions .delete-theme { + color: #d63638; + text-decoration: none; + border-color: transparent; + box-shadow: none; + background: transparent; +} + +.theme-overlay .theme-actions .delete-theme { + position: absolute; + left: 10px; + bottom: 5px; +} + +.broken-themes a.delete-theme:hover, +.broken-themes a.delete-theme:focus, +.theme-overlay .theme-actions .delete-theme:hover, +.theme-overlay .theme-actions .delete-theme:focus { + background: #d63638; + color: #fff; + border-color: #d63638; +} + +.theme-overlay .theme-actions .active-theme, +.theme-overlay.active .theme-actions .inactive-theme { + display: none; +} + +.theme-overlay .theme-actions .inactive-theme, +.theme-overlay.active .theme-actions .active-theme { + display: block; +} + +/** + * Theme Screenshots gallery + */ +.theme-overlay .theme-screenshots { + float: right; + margin: 0 0 0 30px; + width: 55%; + max-width: 1200px; /* Recommended theme screenshot width, set here to avoid stretching */ + text-align: center; +} + +/* First screenshot, shown big */ +.theme-overlay .screenshot { + border: 1px solid #fff; + box-sizing: border-box; + overflow: hidden; + position: relative; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); +} + +.theme-overlay .screenshot:after { + content: ""; + display: block; + padding-top: 75%; /* using a 4/3 aspect ratio */ +} + +.theme-overlay .screenshot img { + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; +} +/* Handles old 300px screenshots */ +.theme-overlay.small-screenshot .theme-screenshots { + position: absolute; + width: 302px; +} +.theme-overlay.small-screenshot .theme-info { + margin-right: 350px; + width: auto; +} + +/* Other screenshots, shown small and square */ +.theme-overlay .screenshot.thumb { + background: #c3c4c7; + border: 1px solid #f0f0f1; + float: none; + display: inline-block; + margin: 10px 5px 0; + width: 140px; + height: 80px; + cursor: pointer; +} + +.theme-overlay .screenshot.thumb:after { + content: ""; + display: block; + padding-top: 100%; /* using a 1/1 aspect ratio */ +} + +.theme-overlay .screenshot.thumb img { + cursor: pointer; + height: auto; + position: absolute; + right: 0; + top: 0; + width: 100%; + height: auto; +} + +.theme-overlay .screenshot.selected { + background: transparent; + border: 2px solid #72aee6; +} + +.theme-overlay .screenshot.selected img { + opacity: 0.8; +} + +/* No screenshot placeholder */ +.theme-browser .theme .theme-screenshot.blank, +.theme-overlay .screenshot.blank { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=); +} + +/** + * Theme heading information + */ +.theme-overlay .theme-info { + width: 40%; + float: right; +} + +.theme-overlay .current-label { + background: #2c3338; + color: #fff; + font-size: 11px; + display: inline-block; + padding: 2px 8px; + border-radius: 2px; + margin: 0 0 -10px; + -webkit-user-select: none; + user-select: none; +} + +.theme-overlay .theme-name { + color: #1d2327; + font-size: 32px; + font-weight: 100; + margin: 10px 0 0; + line-height: 1.3; + word-wrap: break-word; + overflow-wrap: break-word; +} + +.theme-overlay .theme-version { + color: #646970; + font-size: 13px; + font-weight: 400; + float: none; + display: inline-block; + margin-right: 10px; +} + +.theme-overlay .theme-author { + margin: 15px 0 25px; + color: #646970; + font-size: 16px; + font-weight: 400; + line-height: inherit; +} + +.theme-overlay .toggle-auto-update { + /* Better align spin icon and text. */ + display: inline-flex; + align-items: center; + /* Prevents content after the auto-update toggler from jumping down and up. */ + min-height: 20px; /* Same height as the spinning dashicon. */ + vertical-align: top; +} + +.theme-overlay .theme-autoupdate .toggle-auto-update { + text-decoration: none; +} + +.theme-overlay .theme-autoupdate .toggle-auto-update .label { + text-decoration: underline; +} + +.theme-overlay .theme-description { + color: #50575e; + font-size: 15px; + font-weight: 400; + line-height: 1.5; + margin: 30px 0 0; +} + +.theme-overlay .theme-tags { + border-top: 3px solid #f0f0f1; + color: #646970; + font-size: 13px; + font-weight: 400; + margin: 30px 0 0; + padding-top: 20px; +} + +.theme-overlay .theme-tags span { + color: #3c434a; + font-weight: 600; + margin-left: 5px; +} + +.theme-overlay .parent-theme { + background: #fff; + border: 1px solid #f0f0f1; + border-right: 4px solid #72aee6; + font-size: 14px; + font-weight: 400; + margin-top: 30px; + padding: 10px 20px 10px 10px; +} + +.theme-overlay .parent-theme strong { + font-weight: 600; +} + +/** + * Single Theme Mode + * Displays detailed view inline when a user has no switch capabilities + */ +.single-theme .theme-overlay .theme-backdrop, +.single-theme .theme-overlay .theme-header, +.single-theme .theme { + display: none; +} + +.single-theme .theme-overlay .theme-wrap { + clear: both; + min-height: 330px; + position: relative; + right: auto; + left: auto; + top: auto; + bottom: auto; + z-index: 10; +} + +.single-theme .theme-overlay .theme-about { + padding: 30px 30px 70px; + position: static; +} + +.single-theme .theme-overlay .theme-actions { + position: absolute; +} + +/** + * Basic Responsive structure... + * + * Shuffles theme columns around based on screen width + */ + +@media only screen and (min-width: 2000px) { + #wpwrap .theme-browser .theme { + width: 17.6%; + margin: 0 0 3% 3%; + } + + #wpwrap .theme-browser .theme:nth-child(3n), + #wpwrap .theme-browser .theme:nth-child(4n) { + margin-left: 3%; + } + + #wpwrap .theme-browser .theme:nth-child(5n) { + margin-left: 0; + } +} + +@media only screen and (min-width: 1680px) { + .theme-overlay .theme-wrap { + width: 1450px; + margin: 0 auto; + } +} + +/* Maximum screenshot width reaches 440px */ +@media only screen and (min-width: 1640px) { + .theme-browser .theme { + width: 22.7%; + margin: 0 0 3% 3%; + } + .theme-browser .theme .theme-screenshot:after { + padding-top: 75%; /* using a 4/3 aspect ratio */ + } + + .theme-browser .theme:nth-child(3n) { + margin-left: 3%; + } + + .theme-browser .theme:nth-child(4n) { + margin-left: 0; + } +} +/* Maximum screenshot width reaches 440px */ +@media only screen and (max-width: 1120px) { + .theme-browser .theme { + width: 47.5%; + margin-left: 0; + } + + .theme-browser .theme:nth-child(even) { + margin-left: 0; + } + + .theme-browser .theme:nth-child(odd) { + margin-left: 5%; + } +} + +/* Admin menu is folded */ +@media only screen and (max-width: 960px) { + .theme-overlay .theme-wrap { + right: 65px; + } +} + +@media only screen and (max-width: 780px) { + body.folded .theme-overlay .theme-wrap, + .theme-overlay .theme-wrap { + top: 0; /* The adminmenu isn't fixed on mobile, so this can use the full viewport height */ + left: 0; + bottom: 0; + right: 0; + padding: 70px 20px 20px; + border: none; + z-index: 100000; /* should overlap #wpadminbar. */ + position: fixed; + } + + .theme-browser .theme.active .theme-name span { + /* Hide the "Active: " label on smaller screens. */ + display: none; + } + + .theme-overlay .theme-screenshots { + width: 40%; + } + + .theme-overlay .theme-info { + width: 50%; + } + .single-theme .theme-wrap { + padding: 10px; + } + + .theme-browser .theme .theme-actions { + padding: 5px 10px 4px; + } + + .theme-overlay.small-screenshot .theme-screenshots { + position: static; + float: none; + max-width: 302px; + } + + .theme-overlay.small-screenshot .theme-info { + margin-right: 0; + width: auto; + } + + .theme:not(.active):hover .theme-actions, + .theme:not(.active):focus .theme-actions, + .theme:hover .more-details, + .theme.focus .more-details { + display: none; + } + + .theme-browser.rendered .theme:hover .theme-screenshot img, + .theme-browser.rendered .theme.focus .theme-screenshot img { + opacity: 1.0; + } +} + +@media only screen and (max-width: 480px) { + .theme-browser .theme { + width: 100%; + margin-left: 0; + } + + .theme-browser .theme:nth-child(2n), + .theme-browser .theme:nth-child(3n) { + margin-left: 0; + } + + .theme-overlay .theme-about { + bottom: 105px; + } + + .theme-overlay .theme-actions { + padding-right: 4%; + padding-left: 4%; + } +} + +@media only screen and (max-width: 650px) { + .theme-overlay .theme-description { + margin-right: 0; + } + + .theme-overlay .theme-actions .delete-theme { + position: relative; + left: auto; + bottom: auto; + } + + .theme-overlay .theme-actions .inactive-theme { + display: inline; + } + + .theme-overlay .theme-screenshots { + width: 100%; + float: none; + } + + .theme-overlay .theme-info { + width: 100%; + } + + .theme-overlay .theme-author { + margin: 5px 0 15px; + } + + .theme-overlay .current-label { + margin-top: 10px; + font-size: 13px; + } + + .themes-php .wp-filter-search { + float: none; + clear: both; + right: 0; + left: 0; + margin: -5px 0 20px; + width: 100%; + max-width: 280px; + } + + .theme-browser .theme.add-new-theme span:after { + font: normal 60px/90px dashicons; + width: 80px; + height: 80px; + top: 30%; + right: 50%; + text-indent: 0; + margin-right: -40px; + } + + .single-theme .theme-wrap { + margin: 0 -10px 0 -12px; + padding: 10px; + } + .single-theme .theme-overlay .theme-about { + padding: 10px; + overflow: visible; + } + .single-theme .current-label { + display: none; + } + .single-theme .theme-overlay .theme-actions { + position: static; + } +} + +.broken-themes { + clear: both; +} + +.broken-themes table { + text-align: right; + width: 50%; + border-spacing: 3px; + padding: 3px; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Install Themes +------------------------------------------------------------------------------*/ + +.update-php .wrap { + max-width: 40rem; +} + +/* Already installed theme */ +.theme-browser .theme .theme-installed { + background: #2271b1; +} + +.theme-browser .theme .notice-success p:before { + color: #68de7c; + content: "\f147"; + display: inline-block; + font: normal 20px/1 'dashicons'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.theme-install.updated-message:before { + content: ""; +} + +.theme-install-php .wp-filter { + padding-right: 20px; +} + +.theme-install-php a.upload, +.theme-install-php a.browse-themes { + cursor: pointer; +} + +.upload-view-toggle .browse, +.plugin-install-tab-upload .upload-view-toggle .upload { + display: none; +} + +.plugin-install-tab-upload .upload-view-toggle .browse { + display: inline; +} + +.upload-theme, +.upload-plugin { + box-sizing: border-box; + display: none; + margin: 0; + padding: 50px 0; + width: 100%; + overflow: hidden; + position: relative; + top: 10px; + text-align: center; +} + +.show-upload-view .upload-theme, +.show-upload-view .upload-plugin, +.show-upload-view .upload-plugin-wrap, +.plugin-install-tab-upload .upload-plugin { + display: block; +} + +.upload-theme .wp-upload-form, +.upload-plugin .wp-upload-form { + background: #f6f7f7; + border: 1px solid #c3c4c7; + padding: 30px; + margin: 30px auto; + display: inline-flex; + justify-content: space-between; + align-items: center; +} + +.upload-theme .wp-upload-form input[type="file"], +.upload-plugin .wp-upload-form input[type="file"] { + margin-left: 10px; +} + +.upload-theme .install-help, +.upload-plugin .install-help { + color: #50575e; /* #f1f1f1 background */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 0; + text-align: center; +} + +p.no-themes, +p.no-themes-local { + clear: both; + color: #646970; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0; + text-align: center; + display: none; +} + +.no-results p.no-themes { + display: block; +} + +.theme-install-php .add-new-theme { + display: none !important; +} + +@media only screen and (max-width: 1120px) { + .upload-theme .wp-upload-form { + margin: 20px 0; + max-width: 100%; + } + .upload-theme .install-help { + font-size: 15px; + padding: 20px 0 0; + } +} + +.theme-details .theme-rating { + line-height: 1.9; +} + +.theme-details .star-rating { + display: inline; +} + +.theme-details .num-ratings, +.theme-details .no-rating { + font-size: 11px; + color: #646970; +} + +.theme-details .no-rating { + display: block; + line-height: 1.9; +} + +.update-from-upload-comparison { + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; + text-align: right; + margin: 1rem 0 1.4rem; + border-collapse: collapse; + width: 100%; +} + +.update-from-upload-comparison tr:last-child td { + height: 1.4rem; + vertical-align: top; +} + +.update-from-upload-comparison tr:first-child th { + font-weight: bold; + height: 1.4rem; + vertical-align: bottom; +} + +.update-from-upload-comparison td.name-label { + text-align: left; +} + +.update-from-upload-comparison td, +.update-from-upload-comparison th { + padding: 0.4rem 1.4rem; +} + +.update-from-upload-comparison td.warning { + color: #d63638; +} + +.update-from-upload-actions { + margin-top: 1.4rem; +} + +/*------------------------------------------------------------------------------ + 16.3 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #dcdcde; + overflow: hidden; + width: 100%; +} + +.appearance_page_custom-header #upload-form p label { + font-size: 12px; +} + +.appearance_page_custom-header .available-headers .default-header { + float: right; + margin: 0 0 20px 20px; +} + +.appearance_page_custom-header .random-header { + clear: both; + margin: 0 0 20px 20px; + vertical-align: middle; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-left: 10px; +} + +.appearance_page_custom-header .available-headers label img { + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 16.4 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dcdcde; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + +.background-position-control input[type="radio"]:checked ~ .button { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + z-index: 1; +} + +.background-position-control input[type="radio"]:focus ~ .button { + border-color: #4f94d4; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 3px rgba(34, 113, 177, 0.8); + color: #1d2327; +} + +.background-position-control .background-position-center-icon, +.background-position-control .background-position-center-icon:before { + display: inline-block; + line-height: 1; + text-align: center; + transition: background-color .1s ease-in; +} + +.background-position-control .background-position-center-icon { + height: 20px; + margin-top: 13px; + vertical-align: top; + width: 20px; +} + +.background-position-control .background-position-center-icon:before { + background-color: #50575e; + border-radius: 50%; + content: ""; + height: 12px; + width: 12px; +} + +.background-position-control .button:hover .background-position-center-icon:before, +.background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { + background-color: #1d2327; +} + +.background-position-control .button-group { + display: block; +} + +.background-position-control .button-group .button { + border-radius: 0; + box-shadow: none; + /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ + height: 40px !important; + line-height: 2.9 !important; + margin: 0 0 0 -1px !important; + padding: 0 10px 1px !important; + position: relative; +} + +.background-position-control .button-group .button:active, +.background-position-control .button-group .button:hover, +.background-position-control .button-group .button:focus { + z-index: 1; +} + +.background-position-control .button-group:last-child .button { + box-shadow: 0 1px 0 #c3c4c7; +} + +.background-position-control .button-group > label { + margin: 0 !important; +} + +.background-position-control .button-group:first-child > label:first-child .button { + border-radius: 0 3px 0 0; +} + +.background-position-control .button-group:first-child > label:first-child .dashicons { + transform: rotate( -45deg ); +} + +.background-position-control .button-group:first-child > label:last-child .button { + border-radius: 3px 0 0 0; +} + +.background-position-control .button-group:first-child > label:last-child .dashicons { + transform: rotate( 45deg ); +} + +.background-position-control .button-group:last-child > label:first-child .button { + border-radius: 0 0 3px 0; +} + +.background-position-control .button-group:last-child > label:first-child .dashicons { + transform: rotate( 45deg ); +} + +.background-position-control .button-group:last-child > label:last-child .button { + border-radius: 0 0 0 3px; +} + +.background-position-control .button-group:last-child > label:last-child .dashicons { + transform: rotate( -45deg ); +} + +.background-position-control .button-group .dashicons { + margin-top: 9px; +} + +.background-position-control .button-group + .button-group { + margin-top: -1px; +} + +/*------------------------------------------------------------------------------ + 23.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ + +body.full-overlay-active { + overflow: hidden; + /* Hide all the content, the Customizer overlay is then made visible to be the only available content. */ + visibility: hidden; +} + +.wp-full-overlay { + background: transparent; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + right: 0; + left: 0; + height: 100%; + min-width: 0; +} + +.wp-full-overlay-sidebar { + box-sizing: border-box; + position: fixed; + min-width: 300px; + max-width: 600px; + width: 18%; + height: 100%; + top: 0; + bottom: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 10; + background: #f0f0f1; + border-left: none; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + overflow: visible; +} + +.wp-full-overlay.collapsed, +.wp-full-overlay.expanded .wp-full-overlay-sidebar { + margin-right: 0 !important; +} + +.wp-full-overlay.expanded { + margin-right: 300px; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-right: -300px; +} + +@media screen and (min-width: 1667px) { + .wp-full-overlay.expanded { + margin-right: 18%; + } + + .wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-right: -18%; + } +} + +@media screen and (min-width: 3333px) { + .wp-full-overlay.expanded { + margin-right: 600px; + } + + .wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-right: -600px; + } +} + +.wp-full-overlay-sidebar:after { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 3px; + z-index: 1000; +} + +.wp-full-overlay-main { + position: absolute; + right: 0; + left: 0; + top: 0; + bottom: 0; + height: 100%; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + position: absolute; + right: 0; + left: 0; + height: 45px; + padding: 0 15px; + line-height: 3.2; + z-index: 10; + margin: 0; + border-top: none; + box-shadow: none; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header a.back { + margin-top: 9px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-footer { + bottom: 0; + border-bottom: none; + border-top: none; + box-shadow: none; +} + +.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content { + position: absolute; + top: 45px; + bottom: 45px; + right: 0; + left: 0; + overflow: auto; +} + +/* Close & Navigation Links */ +.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header { + padding: 0; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-theme { + display: block; + position: relative; + float: right; + width: 45px; + height: 45px; + background: #f0f0f1; + border-left: 1px solid #dcdcde; + color: #3c434a; + cursor: pointer; + text-decoration: none; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-install-overlay .close-full-overlay:hover, +.theme-install-overlay .close-full-overlay:focus, +.theme-install-overlay .previous-theme:hover, +.theme-install-overlay .previous-theme:focus, +.theme-install-overlay .next-theme:hover, +.theme-install-overlay .next-theme:focus { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; + outline: none; + box-shadow: none; +} + +.theme-install-overlay .close-full-overlay:before { + font: normal 22px/1 dashicons; + content: "\f335"; + position: relative; + top: 7px; + right: 13px; +} + +.theme-install-overlay .previous-theme:before { + font: normal 20px/1 dashicons; + content: "\f345"; + position: relative; + top: 6px; + right: 14px; +} + +.theme-install-overlay .next-theme:before { + font: normal 20px/1 dashicons; + content: "\f341"; + position: relative; + top: 6px; + right: 13px; +} + +.theme-install-overlay .previous-theme.disabled, +.theme-install-overlay .next-theme.disabled, +.theme-install-overlay .previous-theme.disabled:hover, +.theme-install-overlay .previous-theme.disabled:focus, +.theme-install-overlay .next-theme.disabled:hover, +.theme-install-overlay .next-theme.disabled:focus { + color: #c3c4c7; + background: #f0f0f1; + cursor: default; + pointer-events: none; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-theme { + border-right: 0; + border-top: 0; + border-bottom: 0; +} + +.theme-install-overlay .close-full-overlay:before, +.theme-install-overlay .previous-theme:before, +.theme-install-overlay .next-theme:before { + top: 2px; + right: 0; +} + +/* Collapse Button */ +.wp-core-ui .wp-full-overlay .collapse-sidebar { + position: fixed; + bottom: 0; + right: 0; + padding: 9px 10px 9px 0; + height: 45px; + color: #646970; + outline: 0; + line-height: 1; + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + border-radius: 0 !important; +} + +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #2271b1; +} + +.wp-full-overlay .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar-label { + display: inline-block; + vertical-align: middle; + line-height: 1.6; +} + +.wp-full-overlay .collapse-sidebar-arrow { + width: 20px; + height: 20px; + margin: 0 2px; /* avoid the focus box-shadow to be cut-off */ + border-radius: 50%; + overflow: hidden; +} + +.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.wp-full-overlay .collapse-sidebar-label { + margin-right: 3px; +} + +.wp-full-overlay.collapsed .collapse-sidebar-label { + display: none; +} + +.wp-full-overlay .collapse-sidebar-arrow:before { + display: block; + content: "\f148"; + background: #f0f0f1; + font: normal 20px/1 dashicons; + speak: never; + padding: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar { + padding: 9px 10px; +} + +/* rtl:ignore */ +.wp-full-overlay.collapsed .collapse-sidebar-arrow:before, +.rtl .wp-full-overlay .collapse-sidebar-arrow:before { + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ +} + +.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { + transform: none; +} + +/* Animations */ +.wp-full-overlay, +.wp-full-overlay-sidebar, +.wp-full-overlay .collapse-sidebar, +.wp-full-overlay-main { + transition-property: right, left, top, bottom, width, margin; + transition-duration: 0.2s; +} + +/* Device/preview size toggles */ + +.wp-full-overlay { + background: #1d2327; +} + +.wp-full-overlay-main { + background-color: #f0f0f1; +} + +.expanded .wp-full-overlay-footer { + position: fixed; + bottom: 0; + right: 0; + min-width: 299px; + max-width: 599px; + width: 18%; + width: calc( 18% - 1px ); + height: 45px; + border-top: 1px solid #dcdcde; + background: #f0f0f1; +} + +.wp-full-overlay-footer .devices-wrapper { + float: left; +} + +.wp-full-overlay-footer .devices { + position: relative; + background: #f0f0f1; + box-shadow: 20px 0 10px -5px #f0f0f1; +} + +.wp-full-overlay-footer .devices button { + cursor: pointer; + background: transparent; + border: none; + height: 45px; + padding: 0 3px; + margin: 0 -4px 0 0; + box-shadow: none; + border-top: 1px solid transparent; + border-bottom: 4px solid transparent; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +.wp-full-overlay-footer .devices button:focus { + box-shadow: none; + outline: none; +} + +.wp-full-overlay-footer .devices button:before { + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 20px/30px "dashicons"; + vertical-align: top; + margin: 3px 0; + padding: 4px 8px; + color: #646970; +} + +.wp-full-overlay-footer .devices button.active { + border-bottom-color: #1d2327; +} + +.wp-full-overlay-footer .devices button:hover, +.wp-full-overlay-footer .devices button:focus { + background-color: #fff; +} + +.wp-full-overlay-footer .devices button:focus, +.wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #2271b1; +} + +.wp-full-overlay-footer .devices button.active:before { + color: #1d2327; +} + +.wp-full-overlay-footer .devices button:hover:before, +.wp-full-overlay-footer .devices button:focus:before { + color: #2271b1; +} + +.wp-full-overlay-footer .devices .preview-desktop:before { + content: "\f472"; +} + +.wp-full-overlay-footer .devices .preview-tablet:before { + content: "\f471"; +} + +.wp-full-overlay-footer .devices .preview-mobile:before { + content: "\f470"; +} + +@media screen and (max-width: 1024px) { + .wp-full-overlay-footer .devices { + display: none; + } +} + +.collapsed .wp-full-overlay-footer .devices button:before { + display: none; +} + +.preview-mobile .wp-full-overlay-main { + margin: auto -160px auto 0; + width: 320px; + height: 480px; + max-height: 100%; + max-width: 100%; + right: 50%; +} + +.preview-tablet .wp-full-overlay-main { + margin: auto -360px auto 0; + width: 720px; /* Size is loosely based on a typical "tablet" device size. Intentionally ambiguous - this does not represent any particular device precisely. */ + height: 1080px; + max-height: 100%; + max-width: 100%; + right: 50%; +} + + +/*------------------------------------------------------------------------------ + 24.0 - Customize Loader +------------------------------------------------------------------------------*/ + +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +#customize-container, +#customize-controls .notice.notification-overlay { + background: #f0f0f1; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + right: 0; + left: 0; + height: 100%; +} +#customize-container { + display: none; +} + +/* Make the Customizer and Theme installer overlays the only available content. */ +#customize-container, +.theme-install-overlay { + visibility: visible; +} + +.customize-loading #customize-container iframe { + opacity: 0; +} + +#customize-container iframe, +.theme-install-overlay iframe { + height: 100%; + width: 100vw; + z-index: 20; + transition: opacity 0.3s; +} + +#customize-controls { + margin-top: 0; +} + +.theme-install-overlay { + display: none; +} + +.theme-install-overlay.single-theme { + display: block; +} + +.install-theme-info { + display: none; + padding: 10px 20px 60px; +} + +.single-theme .install-theme-info { + padding-top: 15px; +} + +.theme-install-overlay .install-theme-info { + display: block; +} + +.install-theme-info .theme-install { + float: left; + margin-top: 18px; +} + +.install-theme-info .theme-name { + font-size: 16px; + line-height: 1.5; + margin-bottom: 0; + margin-top: 0; +} + +.install-theme-info .theme-screenshot { + margin: 15px 0; + width: 258px; + border: 1px solid #c3c4c7; + position: relative; + overflow: hidden; +} + +.install-theme-info .theme-screenshot > img { + width: 100%; + height: auto; + position: absolute; + right: 0; + top: 0; +} + +.install-theme-info .theme-screenshot:after { + content: ""; + display: block; + padding-top: 66.66666666%; +} + +.install-theme-info .theme-details { + overflow: hidden; +} + +.theme-details .theme-version { + margin: 15px 0; +} + +.theme-details .theme-description { + float: right; + color: #646970; + line-height: 1.6; + max-width: 100%; +} + +.theme-install-overlay .wp-full-overlay-header .button { + float: left; + margin: 8px 0 0 10px; +} + +.theme-install-overlay .wp-full-overlay-sidebar { + background: #f0f0f1; + border-left: 1px solid #dcdcde; +} + +.theme-install-overlay .wp-full-overlay-sidebar-content { + background: #fff; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; +} + +.theme-install-overlay .wp-full-overlay-main { + position: absolute; + z-index: 0; + background-color: #f0f0f1; +} + +.customize-loading #customize-container { + background-color: #f0f0f1; +} + +#customize-preview.wp-full-overlay-main:before, +.customize-loading #customize-container:before, +#customize-controls .notice.notification-overlay.notification-loading:before, +.theme-install-overlay .wp-full-overlay-main:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + right: 50%; + top: 50%; + z-index: -1; + margin: -10px -10px 0 0; + transform: translateZ(0); + background: transparent url(../images/spinner.gif) no-repeat center center; + background-size: 20px 20px; +} + +#customize-preview.wp-full-overlay-main.iframe-ready:before, +.theme-install-overlay.iframe-ready .wp-full-overlay-main:before { + background-image: none; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .wp-full-overlay .collapse-sidebar-arrow { + background-image: url(../images/arrows-2x.png); + background-size: 15px 123px; + } + + #customize-preview.wp-full-overlay-main:before, + .customize-loading #customize-container:before, + #customize-controls .notice.notification-overlay.notification-loading:before, + .theme-install-overlay .wp-full-overlay-main:before { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + .available-theme .action-links .delete-theme { + float: none; + margin: 0; + padding: 0; + clear: both; + } + + .available-theme .action-links .delete-theme a { + padding: 0; + } + + .broken-themes table { + width: 100%; + } + + .theme-install-overlay .wp-full-overlay-header .button { + font-size: 13px; + line-height: 2.15384615; + min-height: 30px; + } + + .theme-browser .theme .theme-actions .button { + margin-bottom: 0; + } + + .theme-browser .theme.active .theme-actions, + .theme-browser .theme .theme-actions { + padding-top: 4px; + padding-bottom: 4px; + } + + .upload-theme .wp-upload-form, + .upload-plugin .wp-upload-form { + display: block; + } +} + +@media aural { + .theme .notice:before, + .theme-info .updating-message:before, + .theme-info .updated-message:before, + .theme-install.updating-message:before { + speak: never; + } +} diff --git a/tools/storybook/wordpress/css/themes-rtl.min.css b/tools/storybook/wordpress/css/themes-rtl.min.css new file mode 100644 index 00000000000..bf1f6540fc4 --- /dev/null +++ b/tools/storybook/wordpress/css/themes-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.themes-php{overflow-y:scroll}body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px}.theme .notice,.theme .notice.is-dismissible{right:0;margin:0;position:absolute;left:0;top:0}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #dcdcde;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme:nth-child(3n){margin-left:0}.theme-browser .theme.focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(246,247,247,.7);border-right:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:hover .theme-actions{opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-left:3px}.theme-browser .theme .theme-actions .button{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;right:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme.focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{opacity:0;position:absolute;top:35%;left:20%;right:20%;width:60%;background:#1d2327;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;border:none;transition:opacity .1s ease-in-out;cursor:pointer}.theme-browser .theme .more-details:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.theme-browser .theme.focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.theme-browser .theme.focus .more-details{opacity:1}.theme-browser .theme.active.focus .theme-actions{display:block}.theme-browser.rendered .theme.focus .more-details,.theme-browser.rendered .theme:hover .more-details{opacity:1}.theme-browser .theme.active .theme-name{background:#1d2327;color:#fff;padding-left:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-left:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(44,51,56,.7);border-right:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);left:0;padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-left:0}.theme-browser .theme .theme-author{background:#1d2327;color:#f0f0f1;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #dcdcde;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#dcdcde;background:rgba(140,143,148,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#8c8f94;position:absolute;top:30%;right:50%;margin-right:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#2271b1}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#2271b1;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;right:-20px;left:0;top:0;bottom:0;background:#f0f0f1;background:rgba(240,240,241,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;right:0;left:0;height:48px;border-bottom:1px solid #dcdcde}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:left;border:0;border-right:1px solid #dcdcde;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#787c82;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#787c82;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#dcdcde;border-color:#c3c4c7;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#c3c4c7;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f345"}.theme-overlay .theme-header .right:before{content:"\f341"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f6f7f7;z-index:30;box-sizing:border-box;border-top:1px solid #f0f0f1}.theme-overlay .theme-actions a{margin-left:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#d63638;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;left:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d63638;color:#fff;border-color:#d63638}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:right;margin:0 0 0 30px;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;right:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:350px;width:auto}.theme-overlay .screenshot.thumb{background:#c3c4c7;border:1px solid #f0f0f1;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;right:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #72aee6}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:right}.theme-overlay .current-label{background:#2c3338;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;user-select:none}.theme-overlay .theme-name{color:#1d2327;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#646970;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#646970;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .toggle-auto-update{display:inline-flex;align-items:center;min-height:20px;vertical-align:top}.theme-overlay .theme-autoupdate .toggle-auto-update{text-decoration:none}.theme-overlay .theme-autoupdate .toggle-auto-update .label{text-decoration:underline}.theme-overlay .theme-description{color:#50575e;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #f0f0f1;color:#646970;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#3c434a;font-weight:600;margin-left:5px}.theme-overlay .parent-theme{background:#fff;border:1px solid #f0f0f1;border-right:4px solid #72aee6;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:600}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:960px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme.focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}.theme-overlay .theme-about{bottom:105px}.theme-overlay .theme-actions{padding-right:4%;padding-left:4%}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;left:0;margin:-5px 0 20px;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;right:50%;text-indent:0;margin-right:-40px}.single-theme .theme-wrap{margin:0 -10px 0 -12px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:right;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#2271b1}.theme-browser .theme .notice-success p:before{color:#68de7c;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:""}.theme-install-php .wp-filter{padding-right:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#f6f7f7;border:1px solid #c3c4c7;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-left:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#50575e;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:1.9}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#646970}.theme-details .no-rating{display:block;line-height:1.9}.update-from-upload-comparison{border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;text-align:right;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:left}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#d63638}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #dcdcde;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dcdcde}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#4f94d4;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(34,113,177,.8);color:#1d2327}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#50575e;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#1d2327}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:2.9!important;margin:0 0 0 -1px!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #c3c4c7}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:3px 0 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 3px 0}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;right:0;padding:0;margin:0;z-index:10;background:#f0f0f1;border-left:none}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-right:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-right:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;left:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;right:0;left:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;right:0;left:0;height:45px;padding:0 15px;line-height:3.2;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;right:0;left:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:right;width:45px;height:45px;background:#f0f0f1;border-left:1px solid #dcdcde;color:#3c434a;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;right:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#c3c4c7;background:#f0f0f1;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-right:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;right:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;right:0;padding:9px 10px 9px 0;height:45px;color:#646970;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#2271b1}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:1.6}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-full-overlay .collapse-sidebar-label{margin-right:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#f0f0f1;font:normal 20px/1 dashicons;speak:never;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:right,left,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#1d2327}.wp-full-overlay-main{background-color:#f0f0f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;right:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #dcdcde;background:#f0f0f1}.wp-full-overlay-footer .devices-wrapper{float:left}.wp-full-overlay-footer .devices{position:relative;background:#f0f0f1;box-shadow:20px 0 10px -5px #f0f0f1}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 -4px 0 0;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#646970}.wp-full-overlay-footer .devices button.active{border-bottom-color:#1d2327}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#2271b1}.wp-full-overlay-footer .devices button.active:before{color:#1d2327}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#2271b1}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto -160px auto 0;width:320px;height:480px;max-height:100%;max-width:100%;right:50%}.preview-tablet .wp-full-overlay-main{margin:auto -360px auto 0;width:720px;height:1080px;max-height:100%;max-width:100%;right:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#f0f0f1;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100vw;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:1.5;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #c3c4c7;position:relative;overflow:hidden}.install-theme-info .theme-screenshot>img{width:100%;height:auto;position:absolute;right:0;top:0}.install-theme-info .theme-screenshot:after{content:"";display:block;padding-top:66.66666666%}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#646970;line-height:1.6;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:left;margin:8px 0 0 10px}.theme-install-overlay .wp-full-overlay-sidebar{background:#f0f0f1;border-left:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f0f0f1}.customize-loading #customize-container{background-color:#f0f0f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .button{font-size:13px;line-height:2.15384615;min-height:30px}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:4px;padding-bottom:4px}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{display:block}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:never}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/themes.css b/tools/storybook/wordpress/css/themes.css new file mode 100644 index 00000000000..6b598013a0a --- /dev/null +++ b/tools/storybook/wordpress/css/themes.css @@ -0,0 +1,2004 @@ +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + + +/*------------------------------------------------------------------------------ + 16.1 - Manage Themes +------------------------------------------------------------------------------*/ + +.themes-php { + overflow-y: scroll; +} + +body.js .theme-browser.search-loading { + display: none; +} + +.theme-browser .themes { + clear: both; +} + +.themes-php:not(.network-admin) .wrap h1 { + margin-bottom: 15px; +} + +.themes-php .wrap h1 .button { + margin-left: 20px; +} + +/* Search form */ +.themes-php .search-form { + display: inline; +} + +.themes-php .wp-filter-search { + position: relative; + top: -2px; + left: 20px; + margin: 0; + width: 280px; +} + +/* Position admin messages */ +.theme .notice, +.theme .notice.is-dismissible { + left: 0; + margin: 0; + position: absolute; + right: 0; + top: 0; +} + +/** + * Main theme element + * (has flexible margins) + */ +.theme-browser .theme { + cursor: pointer; + float: left; + margin: 0 4% 4% 0; + position: relative; + width: 30.6%; + border: 1px solid #dcdcde; + box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1); + box-sizing: border-box; +} + +.theme-browser .theme:nth-child(3n) { + margin-right: 0; +} + +.theme-browser .theme:hover, +.theme-browser .theme.focus { + cursor: pointer; +} + +.theme-browser .theme .theme-name { + font-size: 15px; + font-weight: 600; + height: 18px; + margin: 0; + padding: 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + background: #fff; + background: rgba(255, 255, 255, 0.65); +} + +/* Activate and Customize buttons, shown on hover and focus */ +.theme-browser .theme .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + transition: opacity 0.1s ease-in-out; + height: auto; + background: rgba(246, 247, 247, 0.7); + border-left: 1px solid rgba(0, 0, 0, 0.05); +} + +.theme-browser .theme:hover .theme-actions, +.theme-browser .theme.focus .theme-actions { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +.theme-browser .theme .theme-actions .button-primary { + margin-right: 3px; +} + +.theme-browser .theme .theme-actions .button { + float: none; + margin-left: 3px; +} + +/** + * Theme Screenshot + * + * Has a fixed aspect ratio of 1.5 to 1 regardless of screenshot size + * It is also responsive. + */ +.theme-browser .theme .theme-screenshot { + display: block; + overflow: hidden; + position: relative; + -webkit-backface-visibility: hidden; /* Prevents flicker of the screenshot on hover. */ + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme .theme-screenshot:after { + content: ""; + display: block; + padding-top: 66.66666%; /* using a 3/2 aspect ratio */ +} + +.theme-browser .theme .theme-screenshot img { + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; + transition: opacity 0.2s ease-in-out; +} + +.theme-browser .theme:hover .theme-screenshot, +.theme-browser .theme.focus .theme-screenshot { + background: #fff; +} + +.theme-browser.rendered .theme:hover .theme-screenshot img, +.theme-browser.rendered .theme.focus .theme-screenshot img { + opacity: 0.4; +} + +.theme-browser .theme .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + opacity: 0; + position: absolute; + top: 35%; + right: 20%; + left: 20%; + width: 60%; + background: #1d2327; + background: rgba(0, 0, 0, 0.7); + color: #fff; + font-size: 15px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); + -webkit-font-smoothing: antialiased; + font-weight: 600; + padding: 15px 12px; + text-align: center; + border-radius: 3px; + border: none; + transition: opacity 0.1s ease-in-out; + cursor: pointer; +} + +.theme-browser .theme .more-details:focus { + box-shadow: 0 0 0 1px #fff, 0 0 0 3px #2271b1; +} + +.theme-browser .theme.focus { + border-color: #4f94d4; + box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); +} + +.theme-browser .theme.focus .more-details { + opacity: 1; +} + +/* Current theme needs to have its action always on view */ +.theme-browser .theme.active.focus .theme-actions { + display: block; +} + +.theme-browser.rendered .theme:hover .more-details, +.theme-browser.rendered .theme.focus .more-details { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + opacity: 1; +} + +/** + * The currently active theme + */ +.theme-browser .theme.active .theme-name { + background: #1d2327; + color: #fff; + padding-right: 110px; + font-weight: 300; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5); +} + +.theme-browser .customize-control .theme.active .theme-name { + padding-right: 15px; +} + +.theme-browser .theme.active .theme-name span { + font-weight: 600; +} + +.theme-browser .theme.active .theme-actions { + background: rgba(44, 51, 56, 0.7); + border-left: none; + opacity: 1; +} + +.theme-id-container { + position: relative; +} + +.theme-browser .theme.active .theme-actions, +.theme-browser .theme .theme-actions { + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 0; + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); +} + +.theme-browser .theme.active .theme-actions .button-primary { + margin-right: 0; +} + +.theme-browser .theme .theme-author { + background: #1d2327; + color: #f0f0f1; + display: none; + font-size: 14px; + margin: 0 10px; + padding: 5px 10px; + position: absolute; + bottom: 56px; +} + +.theme-browser .theme.display-author .theme-author { + display: block; +} + +.theme-browser .theme.display-author .theme-author a { + color: inherit; +} + +/** + * Add new theme + */ +.theme-browser .theme.add-new-theme { + border: none; + box-shadow: none; +} + +.theme-browser .theme.add-new-theme a { + text-decoration: none; + display: block; + position: relative; + z-index: 1; +} + +.theme-browser .theme.add-new-theme a:after { + display: block; + content: ""; + background: transparent; + background: rgba(0, 0, 0, 0); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + padding: 0; + text-shadow: none; + border: 5px dashed #dcdcde; + border: 5px dashed rgba(0, 0, 0, 0.1); + box-sizing: border-box; +} + +.theme-browser .theme.add-new-theme span:after { + background: #dcdcde; + background: rgba(140, 143, 148, 0.1); + border-radius: 50%; + display: inline-block; + content: "\f132"; + -webkit-font-smoothing: antialiased; + font: normal 74px/115px dashicons; + width: 100px; + height: 100px; + vertical-align: middle; + text-align: center; + color: #8c8f94; + position: absolute; + top: 30%; + left: 50%; + margin-left: -50px; + text-indent: -4px; + padding: 0; + text-shadow: none; + z-index: 4; +} + +.rtl .theme-browser .theme.add-new-theme span:after { + text-indent: 4px; +} + +.theme-browser .theme.add-new-theme a:hover .theme-screenshot, +.theme-browser .theme.add-new-theme a:focus .theme-screenshot { + background: none; +} + +.theme-browser .theme.add-new-theme a:hover span:after, +.theme-browser .theme.add-new-theme a:focus span:after { + background: #fff; + color: #2271b1; +} + +.theme-browser .theme.add-new-theme a:hover:after, +.theme-browser .theme.add-new-theme a:focus:after { + border-color: transparent; + color: #fff; + background: #2271b1; + content: ""; +} + +.theme-browser .theme.add-new-theme .theme-name { + background: none; + text-align: center; + box-shadow: none; + font-weight: 400; + position: relative; + top: 0; + margin-top: -18px; + padding-top: 0; + padding-bottom: 48px; +} + +.theme-browser .theme.add-new-theme a:hover .theme-name, +.theme-browser .theme.add-new-theme a:focus .theme-name { + color: #fff; + z-index: 2; +} + +/** + * Theme Overlay + * Shown when clicking a theme + */ +.theme-overlay .theme-backdrop { + position: absolute; + left: -20px; + right: 0; + top: 0; + bottom: 0; + background: #f0f0f1; + background: rgba(240, 240, 241, 0.9); + z-index: 10000; /* Over WP Pointers. */ +} + +.theme-overlay .theme-header { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 48px; + border-bottom: 1px solid #dcdcde; +} + +.theme-overlay .theme-header button { + padding: 0; +} + +.theme-overlay .theme-header .close { + cursor: pointer; + height: 48px; + width: 50px; + text-align: center; + float: right; + border: 0; + border-left: 1px solid #dcdcde; + background-color: transparent; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:before { + font: normal 22px/50px dashicons !important; + color: #787c82; + display: inline-block; + content: "\f335"; + font-weight: 300; +} + +/* Left and right navigation */ +.theme-overlay .theme-header .right, +.theme-overlay .theme-header .left { + cursor: pointer; + color: #787c82; + background-color: transparent; + height: 48px; + width: 54px; + float: left; + text-align: center; + border: 0; + border-right: 1px solid #dcdcde; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-overlay .theme-header .close:focus, +.theme-overlay .theme-header .close:hover, +.theme-overlay .theme-header .right:focus, +.theme-overlay .theme-header .right:hover, +.theme-overlay .theme-header .left:focus, +.theme-overlay .theme-header .left:hover { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; +} + +.theme-overlay .theme-header .close:focus:before, +.theme-overlay .theme-header .close:hover:before { + color: #000; +} + +.theme-overlay .theme-header .close:focus, +.theme-overlay .theme-header .right:focus, +.theme-overlay .theme-header .left:focus { + box-shadow: none; + outline: none; +} + +.theme-overlay .theme-header .left.disabled, +.theme-overlay .theme-header .right.disabled, +.theme-overlay .theme-header .left.disabled:hover, +.theme-overlay .theme-header .right.disabled:hover { + color: #c3c4c7; + background: inherit; + cursor: inherit; +} + +.theme-overlay .theme-header .right:before, +.theme-overlay .theme-header .left:before { + font: normal 20px/50px dashicons !important; + display: inline; + font-weight: 300; +} + +.theme-overlay .theme-header .left:before { + content: "\f341"; +} + +.theme-overlay .theme-header .right:before { + content: "\f345"; +} + +.theme-overlay .theme-wrap { + clear: both; + position: fixed; + top: 9%; + left: 190px; + right: 30px; + bottom: 3%; + background: #fff; + box-shadow: 0 1px 20px 5px rgba(0, 0, 0, 0.1); + z-index: 10000; /* Over WP Pointers. */ + box-sizing: border-box; + -webkit-overflow-scrolling: touch; +} + +body.folded .theme-browser ~ .theme-overlay .theme-wrap { + left: 70px; +} + +.theme-overlay .theme-about { + position: absolute; + top: 49px; + bottom: 57px; + left: 0; + right: 0; + overflow: auto; + padding: 2% 4%; +} + +.theme-overlay .theme-actions { + position: absolute; + text-align: center; + bottom: 0; + left: 0; + right: 0; + padding: 10px 25px 5px; + background: #f6f7f7; + z-index: 30; + box-sizing: border-box; + border-top: 1px solid #f0f0f1; +} + +.theme-overlay .theme-actions a { + margin-right: 5px; + margin-bottom: 5px; +} + +/* Hide-if-customize for items we can't add classes to */ +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"], +.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"] { + display: none; +} + +.broken-themes a.delete-theme, +.theme-overlay .theme-actions .delete-theme { + color: #d63638; + text-decoration: none; + border-color: transparent; + box-shadow: none; + background: transparent; +} + +.theme-overlay .theme-actions .delete-theme { + position: absolute; + right: 10px; + bottom: 5px; +} + +.broken-themes a.delete-theme:hover, +.broken-themes a.delete-theme:focus, +.theme-overlay .theme-actions .delete-theme:hover, +.theme-overlay .theme-actions .delete-theme:focus { + background: #d63638; + color: #fff; + border-color: #d63638; +} + +.theme-overlay .theme-actions .active-theme, +.theme-overlay.active .theme-actions .inactive-theme { + display: none; +} + +.theme-overlay .theme-actions .inactive-theme, +.theme-overlay.active .theme-actions .active-theme { + display: block; +} + +/** + * Theme Screenshots gallery + */ +.theme-overlay .theme-screenshots { + float: left; + margin: 0 30px 0 0; + width: 55%; + max-width: 1200px; /* Recommended theme screenshot width, set here to avoid stretching */ + text-align: center; +} + +/* First screenshot, shown big */ +.theme-overlay .screenshot { + border: 1px solid #fff; + box-sizing: border-box; + overflow: hidden; + position: relative; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); +} + +.theme-overlay .screenshot:after { + content: ""; + display: block; + padding-top: 75%; /* using a 4/3 aspect ratio */ +} + +.theme-overlay .screenshot img { + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; +} +/* Handles old 300px screenshots */ +.theme-overlay.small-screenshot .theme-screenshots { + position: absolute; + width: 302px; +} +.theme-overlay.small-screenshot .theme-info { + margin-left: 350px; + width: auto; +} + +/* Other screenshots, shown small and square */ +.theme-overlay .screenshot.thumb { + background: #c3c4c7; + border: 1px solid #f0f0f1; + float: none; + display: inline-block; + margin: 10px 5px 0; + width: 140px; + height: 80px; + cursor: pointer; +} + +.theme-overlay .screenshot.thumb:after { + content: ""; + display: block; + padding-top: 100%; /* using a 1/1 aspect ratio */ +} + +.theme-overlay .screenshot.thumb img { + cursor: pointer; + height: auto; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: auto; +} + +.theme-overlay .screenshot.selected { + background: transparent; + border: 2px solid #72aee6; +} + +.theme-overlay .screenshot.selected img { + opacity: 0.8; +} + +/* No screenshot placeholder */ +.theme-browser .theme .theme-screenshot.blank, +.theme-overlay .screenshot.blank { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=); +} + +/** + * Theme heading information + */ +.theme-overlay .theme-info { + width: 40%; + float: left; +} + +.theme-overlay .current-label { + background: #2c3338; + color: #fff; + font-size: 11px; + display: inline-block; + padding: 2px 8px; + border-radius: 2px; + margin: 0 0 -10px; + -webkit-user-select: none; + user-select: none; +} + +.theme-overlay .theme-name { + color: #1d2327; + font-size: 32px; + font-weight: 100; + margin: 10px 0 0; + line-height: 1.3; + word-wrap: break-word; + overflow-wrap: break-word; +} + +.theme-overlay .theme-version { + color: #646970; + font-size: 13px; + font-weight: 400; + float: none; + display: inline-block; + margin-left: 10px; +} + +.theme-overlay .theme-author { + margin: 15px 0 25px; + color: #646970; + font-size: 16px; + font-weight: 400; + line-height: inherit; +} + +.theme-overlay .toggle-auto-update { + /* Better align spin icon and text. */ + display: inline-flex; + align-items: center; + /* Prevents content after the auto-update toggler from jumping down and up. */ + min-height: 20px; /* Same height as the spinning dashicon. */ + vertical-align: top; +} + +.theme-overlay .theme-autoupdate .toggle-auto-update { + text-decoration: none; +} + +.theme-overlay .theme-autoupdate .toggle-auto-update .label { + text-decoration: underline; +} + +.theme-overlay .theme-description { + color: #50575e; + font-size: 15px; + font-weight: 400; + line-height: 1.5; + margin: 30px 0 0; +} + +.theme-overlay .theme-tags { + border-top: 3px solid #f0f0f1; + color: #646970; + font-size: 13px; + font-weight: 400; + margin: 30px 0 0; + padding-top: 20px; +} + +.theme-overlay .theme-tags span { + color: #3c434a; + font-weight: 600; + margin-right: 5px; +} + +.theme-overlay .parent-theme { + background: #fff; + border: 1px solid #f0f0f1; + border-left: 4px solid #72aee6; + font-size: 14px; + font-weight: 400; + margin-top: 30px; + padding: 10px 10px 10px 20px; +} + +.theme-overlay .parent-theme strong { + font-weight: 600; +} + +/** + * Single Theme Mode + * Displays detailed view inline when a user has no switch capabilities + */ +.single-theme .theme-overlay .theme-backdrop, +.single-theme .theme-overlay .theme-header, +.single-theme .theme { + display: none; +} + +.single-theme .theme-overlay .theme-wrap { + clear: both; + min-height: 330px; + position: relative; + left: auto; + right: auto; + top: auto; + bottom: auto; + z-index: 10; +} + +.single-theme .theme-overlay .theme-about { + padding: 30px 30px 70px; + position: static; +} + +.single-theme .theme-overlay .theme-actions { + position: absolute; +} + +/** + * Basic Responsive structure... + * + * Shuffles theme columns around based on screen width + */ + +@media only screen and (min-width: 2000px) { + #wpwrap .theme-browser .theme { + width: 17.6%; + margin: 0 3% 3% 0; + } + + #wpwrap .theme-browser .theme:nth-child(3n), + #wpwrap .theme-browser .theme:nth-child(4n) { + margin-right: 3%; + } + + #wpwrap .theme-browser .theme:nth-child(5n) { + margin-right: 0; + } +} + +@media only screen and (min-width: 1680px) { + .theme-overlay .theme-wrap { + width: 1450px; + margin: 0 auto; + } +} + +/* Maximum screenshot width reaches 440px */ +@media only screen and (min-width: 1640px) { + .theme-browser .theme { + width: 22.7%; + margin: 0 3% 3% 0; + } + .theme-browser .theme .theme-screenshot:after { + padding-top: 75%; /* using a 4/3 aspect ratio */ + } + + .theme-browser .theme:nth-child(3n) { + margin-right: 3%; + } + + .theme-browser .theme:nth-child(4n) { + margin-right: 0; + } +} +/* Maximum screenshot width reaches 440px */ +@media only screen and (max-width: 1120px) { + .theme-browser .theme { + width: 47.5%; + margin-right: 0; + } + + .theme-browser .theme:nth-child(even) { + margin-right: 0; + } + + .theme-browser .theme:nth-child(odd) { + margin-right: 5%; + } +} + +/* Admin menu is folded */ +@media only screen and (max-width: 960px) { + .theme-overlay .theme-wrap { + left: 65px; + } +} + +@media only screen and (max-width: 780px) { + body.folded .theme-overlay .theme-wrap, + .theme-overlay .theme-wrap { + top: 0; /* The adminmenu isn't fixed on mobile, so this can use the full viewport height */ + right: 0; + bottom: 0; + left: 0; + padding: 70px 20px 20px; + border: none; + z-index: 100000; /* should overlap #wpadminbar. */ + position: fixed; + } + + .theme-browser .theme.active .theme-name span { + /* Hide the "Active: " label on smaller screens. */ + display: none; + } + + .theme-overlay .theme-screenshots { + width: 40%; + } + + .theme-overlay .theme-info { + width: 50%; + } + .single-theme .theme-wrap { + padding: 10px; + } + + .theme-browser .theme .theme-actions { + padding: 5px 10px 4px; + } + + .theme-overlay.small-screenshot .theme-screenshots { + position: static; + float: none; + max-width: 302px; + } + + .theme-overlay.small-screenshot .theme-info { + margin-left: 0; + width: auto; + } + + .theme:not(.active):hover .theme-actions, + .theme:not(.active):focus .theme-actions, + .theme:hover .more-details, + .theme.focus .more-details { + display: none; + } + + .theme-browser.rendered .theme:hover .theme-screenshot img, + .theme-browser.rendered .theme.focus .theme-screenshot img { + opacity: 1.0; + } +} + +@media only screen and (max-width: 480px) { + .theme-browser .theme { + width: 100%; + margin-right: 0; + } + + .theme-browser .theme:nth-child(2n), + .theme-browser .theme:nth-child(3n) { + margin-right: 0; + } + + .theme-overlay .theme-about { + bottom: 105px; + } + + .theme-overlay .theme-actions { + padding-left: 4%; + padding-right: 4%; + } +} + +@media only screen and (max-width: 650px) { + .theme-overlay .theme-description { + margin-left: 0; + } + + .theme-overlay .theme-actions .delete-theme { + position: relative; + right: auto; + bottom: auto; + } + + .theme-overlay .theme-actions .inactive-theme { + display: inline; + } + + .theme-overlay .theme-screenshots { + width: 100%; + float: none; + } + + .theme-overlay .theme-info { + width: 100%; + } + + .theme-overlay .theme-author { + margin: 5px 0 15px; + } + + .theme-overlay .current-label { + margin-top: 10px; + font-size: 13px; + } + + .themes-php .wp-filter-search { + float: none; + clear: both; + left: 0; + right: 0; + margin: -5px 0 20px; + width: 100%; + max-width: 280px; + } + + .theme-browser .theme.add-new-theme span:after { + font: normal 60px/90px dashicons; + width: 80px; + height: 80px; + top: 30%; + left: 50%; + text-indent: 0; + margin-left: -40px; + } + + .single-theme .theme-wrap { + margin: 0 -12px 0 -10px; + padding: 10px; + } + .single-theme .theme-overlay .theme-about { + padding: 10px; + overflow: visible; + } + .single-theme .current-label { + display: none; + } + .single-theme .theme-overlay .theme-actions { + position: static; + } +} + +.broken-themes { + clear: both; +} + +.broken-themes table { + text-align: left; + width: 50%; + border-spacing: 3px; + padding: 3px; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Install Themes +------------------------------------------------------------------------------*/ + +.update-php .wrap { + max-width: 40rem; +} + +/* Already installed theme */ +.theme-browser .theme .theme-installed { + background: #2271b1; +} + +.theme-browser .theme .notice-success p:before { + color: #68de7c; + content: "\f147"; + display: inline-block; + font: normal 20px/1 'dashicons'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: top; +} + +.theme-install.updated-message:before { + content: ""; +} + +.theme-install-php .wp-filter { + padding-left: 20px; +} + +.theme-install-php a.upload, +.theme-install-php a.browse-themes { + cursor: pointer; +} + +.upload-view-toggle .browse, +.plugin-install-tab-upload .upload-view-toggle .upload { + display: none; +} + +.plugin-install-tab-upload .upload-view-toggle .browse { + display: inline; +} + +.upload-theme, +.upload-plugin { + box-sizing: border-box; + display: none; + margin: 0; + padding: 50px 0; + width: 100%; + overflow: hidden; + position: relative; + top: 10px; + text-align: center; +} + +.show-upload-view .upload-theme, +.show-upload-view .upload-plugin, +.show-upload-view .upload-plugin-wrap, +.plugin-install-tab-upload .upload-plugin { + display: block; +} + +.upload-theme .wp-upload-form, +.upload-plugin .wp-upload-form { + background: #f6f7f7; + border: 1px solid #c3c4c7; + padding: 30px; + margin: 30px auto; + display: inline-flex; + justify-content: space-between; + align-items: center; +} + +.upload-theme .wp-upload-form input[type="file"], +.upload-plugin .wp-upload-form input[type="file"] { + margin-right: 10px; +} + +.upload-theme .install-help, +.upload-plugin .install-help { + color: #50575e; /* #f1f1f1 background */ + font-size: 18px; + font-style: normal; + margin: 0; + padding: 0; + text-align: center; +} + +p.no-themes, +p.no-themes-local { + clear: both; + color: #646970; + font-size: 18px; + font-style: normal; + margin: 0; + padding: 100px 0; + text-align: center; + display: none; +} + +.no-results p.no-themes { + display: block; +} + +.theme-install-php .add-new-theme { + display: none !important; +} + +@media only screen and (max-width: 1120px) { + .upload-theme .wp-upload-form { + margin: 20px 0; + max-width: 100%; + } + .upload-theme .install-help { + font-size: 15px; + padding: 20px 0 0; + } +} + +.theme-details .theme-rating { + line-height: 1.9; +} + +.theme-details .star-rating { + display: inline; +} + +.theme-details .num-ratings, +.theme-details .no-rating { + font-size: 11px; + color: #646970; +} + +.theme-details .no-rating { + display: block; + line-height: 1.9; +} + +.update-from-upload-comparison { + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; + text-align: left; + margin: 1rem 0 1.4rem; + border-collapse: collapse; + width: 100%; +} + +.update-from-upload-comparison tr:last-child td { + height: 1.4rem; + vertical-align: top; +} + +.update-from-upload-comparison tr:first-child th { + font-weight: bold; + height: 1.4rem; + vertical-align: bottom; +} + +.update-from-upload-comparison td.name-label { + text-align: right; +} + +.update-from-upload-comparison td, +.update-from-upload-comparison th { + padding: 0.4rem 1.4rem; +} + +.update-from-upload-comparison td.warning { + color: #d63638; +} + +.update-from-upload-actions { + margin-top: 1.4rem; +} + +/*------------------------------------------------------------------------------ + 16.3 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #dcdcde; + overflow: hidden; + width: 100%; +} + +.appearance_page_custom-header #upload-form p label { + font-size: 12px; +} + +.appearance_page_custom-header .available-headers .default-header { + float: left; + margin: 0 20px 20px 0; +} + +.appearance_page_custom-header .random-header { + clear: both; + margin: 0 20px 20px 0; + vertical-align: middle; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-right: 10px; +} + +.appearance_page_custom-header .available-headers label img { + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 16.4 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dcdcde; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + +.background-position-control input[type="radio"]:checked ~ .button { + background: #f0f0f1; + border-color: #8c8f94; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + z-index: 1; +} + +.background-position-control input[type="radio"]:focus ~ .button { + border-color: #4f94d4; + box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 3px rgba(34, 113, 177, 0.8); + color: #1d2327; +} + +.background-position-control .background-position-center-icon, +.background-position-control .background-position-center-icon:before { + display: inline-block; + line-height: 1; + text-align: center; + transition: background-color .1s ease-in; +} + +.background-position-control .background-position-center-icon { + height: 20px; + margin-top: 13px; + vertical-align: top; + width: 20px; +} + +.background-position-control .background-position-center-icon:before { + background-color: #50575e; + border-radius: 50%; + content: ""; + height: 12px; + width: 12px; +} + +.background-position-control .button:hover .background-position-center-icon:before, +.background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { + background-color: #1d2327; +} + +.background-position-control .button-group { + display: block; +} + +.background-position-control .button-group .button { + border-radius: 0; + box-shadow: none; + /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ + height: 40px !important; + line-height: 2.9 !important; + margin: 0 -1px 0 0 !important; + padding: 0 10px 1px !important; + position: relative; +} + +.background-position-control .button-group .button:active, +.background-position-control .button-group .button:hover, +.background-position-control .button-group .button:focus { + z-index: 1; +} + +.background-position-control .button-group:last-child .button { + box-shadow: 0 1px 0 #c3c4c7; +} + +.background-position-control .button-group > label { + margin: 0 !important; +} + +.background-position-control .button-group:first-child > label:first-child .button { + border-radius: 3px 0 0; +} + +.background-position-control .button-group:first-child > label:first-child .dashicons { + transform: rotate( 45deg ); +} + +.background-position-control .button-group:first-child > label:last-child .button { + border-radius: 0 3px 0 0; +} + +.background-position-control .button-group:first-child > label:last-child .dashicons { + transform: rotate( -45deg ); +} + +.background-position-control .button-group:last-child > label:first-child .button { + border-radius: 0 0 0 3px; +} + +.background-position-control .button-group:last-child > label:first-child .dashicons { + transform: rotate( -45deg ); +} + +.background-position-control .button-group:last-child > label:last-child .button { + border-radius: 0 0 3px; +} + +.background-position-control .button-group:last-child > label:last-child .dashicons { + transform: rotate( 45deg ); +} + +.background-position-control .button-group .dashicons { + margin-top: 9px; +} + +.background-position-control .button-group + .button-group { + margin-top: -1px; +} + +/*------------------------------------------------------------------------------ + 23.0 - Full Overlay w/ Sidebar +------------------------------------------------------------------------------*/ + +body.full-overlay-active { + overflow: hidden; + /* Hide all the content, the Customizer overlay is then made visible to be the only available content. */ + visibility: hidden; +} + +.wp-full-overlay { + background: transparent; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; + min-width: 0; +} + +.wp-full-overlay-sidebar { + box-sizing: border-box; + position: fixed; + min-width: 300px; + max-width: 600px; + width: 18%; + height: 100%; + top: 0; + bottom: 0; + left: 0; + padding: 0; + margin: 0; + z-index: 10; + background: #f0f0f1; + border-right: none; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + overflow: visible; +} + +.wp-full-overlay.collapsed, +.wp-full-overlay.expanded .wp-full-overlay-sidebar { + margin-left: 0 !important; +} + +.wp-full-overlay.expanded { + margin-left: 300px; +} + +.wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-left: -300px; +} + +@media screen and (min-width: 1667px) { + .wp-full-overlay.expanded { + margin-left: 18%; + } + + .wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-left: -18%; + } +} + +@media screen and (min-width: 3333px) { + .wp-full-overlay.expanded { + margin-left: 600px; + } + + .wp-full-overlay.collapsed .wp-full-overlay-sidebar { + margin-left: -600px; + } +} + +.wp-full-overlay-sidebar:after { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 3px; + z-index: 1000; +} + +.wp-full-overlay-main { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + height: 100%; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header { + position: absolute; + left: 0; + right: 0; + height: 45px; + padding: 0 15px; + line-height: 3.2; + z-index: 10; + margin: 0; + border-top: none; + box-shadow: none; +} + +.wp-full-overlay-sidebar .wp-full-overlay-header a.back { + margin-top: 9px; +} + +.wp-full-overlay-sidebar .wp-full-overlay-footer { + bottom: 0; + border-bottom: none; + border-top: none; + box-shadow: none; +} + +.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content { + position: absolute; + top: 45px; + bottom: 45px; + left: 0; + right: 0; + overflow: auto; +} + +/* Close & Navigation Links */ +.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header { + padding: 0; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-theme { + display: block; + position: relative; + float: left; + width: 45px; + height: 45px; + background: #f0f0f1; + border-right: 1px solid #dcdcde; + color: #3c434a; + cursor: pointer; + text-decoration: none; + transition: color .1s ease-in-out, background .1s ease-in-out; +} + +.theme-install-overlay .close-full-overlay:hover, +.theme-install-overlay .close-full-overlay:focus, +.theme-install-overlay .previous-theme:hover, +.theme-install-overlay .previous-theme:focus, +.theme-install-overlay .next-theme:hover, +.theme-install-overlay .next-theme:focus { + background: #dcdcde; + border-color: #c3c4c7; + color: #000; + outline: none; + box-shadow: none; +} + +.theme-install-overlay .close-full-overlay:before { + font: normal 22px/1 dashicons; + content: "\f335"; + position: relative; + top: 7px; + left: 13px; +} + +.theme-install-overlay .previous-theme:before { + font: normal 20px/1 dashicons; + content: "\f341"; + position: relative; + top: 6px; + left: 14px; +} + +.theme-install-overlay .next-theme:before { + font: normal 20px/1 dashicons; + content: "\f345"; + position: relative; + top: 6px; + left: 13px; +} + +.theme-install-overlay .previous-theme.disabled, +.theme-install-overlay .next-theme.disabled, +.theme-install-overlay .previous-theme.disabled:hover, +.theme-install-overlay .previous-theme.disabled:focus, +.theme-install-overlay .next-theme.disabled:hover, +.theme-install-overlay .next-theme.disabled:focus { + color: #c3c4c7; + background: #f0f0f1; + cursor: default; + pointer-events: none; +} + +.theme-install-overlay .close-full-overlay, +.theme-install-overlay .previous-theme, +.theme-install-overlay .next-theme { + border-left: 0; + border-top: 0; + border-bottom: 0; +} + +.theme-install-overlay .close-full-overlay:before, +.theme-install-overlay .previous-theme:before, +.theme-install-overlay .next-theme:before { + top: 2px; + left: 0; +} + +/* Collapse Button */ +.wp-core-ui .wp-full-overlay .collapse-sidebar { + position: fixed; + bottom: 0; + left: 0; + padding: 9px 0 9px 10px; + height: 45px; + color: #646970; + outline: 0; + line-height: 1; + background-color: transparent !important; + border: none !important; + box-shadow: none !important; + border-radius: 0 !important; +} + +.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, +.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { + color: #2271b1; +} + +.wp-full-overlay .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar-label { + display: inline-block; + vertical-align: middle; + line-height: 1.6; +} + +.wp-full-overlay .collapse-sidebar-arrow { + width: 20px; + height: 20px; + margin: 0 2px; /* avoid the focus box-shadow to be cut-off */ + border-radius: 50%; + overflow: hidden; +} + +.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, +.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.wp-full-overlay .collapse-sidebar-label { + margin-left: 3px; +} + +.wp-full-overlay.collapsed .collapse-sidebar-label { + display: none; +} + +.wp-full-overlay .collapse-sidebar-arrow:before { + display: block; + content: "\f148"; + background: #f0f0f1; + font: normal 20px/1 dashicons; + speak: never; + padding: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar { + padding: 9px 10px; +} + +/* rtl:ignore */ +.wp-full-overlay.collapsed .collapse-sidebar-arrow:before, +.rtl .wp-full-overlay .collapse-sidebar-arrow:before { + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ +} + +.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { + transform: none; +} + +/* Animations */ +.wp-full-overlay, +.wp-full-overlay-sidebar, +.wp-full-overlay .collapse-sidebar, +.wp-full-overlay-main { + transition-property: left, right, top, bottom, width, margin; + transition-duration: 0.2s; +} + +/* Device/preview size toggles */ + +.wp-full-overlay { + background: #1d2327; +} + +.wp-full-overlay-main { + background-color: #f0f0f1; +} + +.expanded .wp-full-overlay-footer { + position: fixed; + bottom: 0; + left: 0; + min-width: 299px; + max-width: 599px; + width: 18%; + width: calc( 18% - 1px ); + height: 45px; + border-top: 1px solid #dcdcde; + background: #f0f0f1; +} + +.wp-full-overlay-footer .devices-wrapper { + float: right; +} + +.wp-full-overlay-footer .devices { + position: relative; + background: #f0f0f1; + box-shadow: -20px 0 10px -5px #f0f0f1; +} + +.wp-full-overlay-footer .devices button { + cursor: pointer; + background: transparent; + border: none; + height: 45px; + padding: 0 3px; + margin: 0 0 0 -4px; + box-shadow: none; + border-top: 1px solid transparent; + border-bottom: 4px solid transparent; + transition: + .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; +} + +.wp-full-overlay-footer .devices button:focus { + box-shadow: none; + outline: none; +} + +.wp-full-overlay-footer .devices button:before { + display: inline-block; + -webkit-font-smoothing: antialiased; + font: normal 20px/30px "dashicons"; + vertical-align: top; + margin: 3px 0; + padding: 4px 8px; + color: #646970; +} + +.wp-full-overlay-footer .devices button.active { + border-bottom-color: #1d2327; +} + +.wp-full-overlay-footer .devices button:hover, +.wp-full-overlay-footer .devices button:focus { + background-color: #fff; +} + +.wp-full-overlay-footer .devices button:focus, +.wp-full-overlay-footer .devices button.active:hover { + border-bottom-color: #2271b1; +} + +.wp-full-overlay-footer .devices button.active:before { + color: #1d2327; +} + +.wp-full-overlay-footer .devices button:hover:before, +.wp-full-overlay-footer .devices button:focus:before { + color: #2271b1; +} + +.wp-full-overlay-footer .devices .preview-desktop:before { + content: "\f472"; +} + +.wp-full-overlay-footer .devices .preview-tablet:before { + content: "\f471"; +} + +.wp-full-overlay-footer .devices .preview-mobile:before { + content: "\f470"; +} + +@media screen and (max-width: 1024px) { + .wp-full-overlay-footer .devices { + display: none; + } +} + +.collapsed .wp-full-overlay-footer .devices button:before { + display: none; +} + +.preview-mobile .wp-full-overlay-main { + margin: auto 0 auto -160px; + width: 320px; + height: 480px; + max-height: 100%; + max-width: 100%; + left: 50%; +} + +.preview-tablet .wp-full-overlay-main { + margin: auto 0 auto -360px; + width: 720px; /* Size is loosely based on a typical "tablet" device size. Intentionally ambiguous - this does not represent any particular device precisely. */ + height: 1080px; + max-height: 100%; + max-width: 100%; + left: 50%; +} + + +/*------------------------------------------------------------------------------ + 24.0 - Customize Loader +------------------------------------------------------------------------------*/ + +.no-customize-support .hide-if-no-customize, +.customize-support .hide-if-customize, +.no-customize-support.wp-core-ui .hide-if-no-customize, +.no-customize-support .wp-core-ui .hide-if-no-customize, +.customize-support.wp-core-ui .hide-if-customize, +.customize-support .wp-core-ui .hide-if-customize { + display: none; +} + +#customize-container, +#customize-controls .notice.notification-overlay { + background: #f0f0f1; + z-index: 500000; + position: fixed; + overflow: visible; + top: 0; + bottom: 0; + left: 0; + right: 0; + height: 100%; +} +#customize-container { + display: none; +} + +/* Make the Customizer and Theme installer overlays the only available content. */ +#customize-container, +.theme-install-overlay { + visibility: visible; +} + +.customize-loading #customize-container iframe { + opacity: 0; +} + +#customize-container iframe, +.theme-install-overlay iframe { + height: 100%; + width: 100vw; + z-index: 20; + transition: opacity 0.3s; +} + +#customize-controls { + margin-top: 0; +} + +.theme-install-overlay { + display: none; +} + +.theme-install-overlay.single-theme { + display: block; +} + +.install-theme-info { + display: none; + padding: 10px 20px 60px; +} + +.single-theme .install-theme-info { + padding-top: 15px; +} + +.theme-install-overlay .install-theme-info { + display: block; +} + +.install-theme-info .theme-install { + float: right; + margin-top: 18px; +} + +.install-theme-info .theme-name { + font-size: 16px; + line-height: 1.5; + margin-bottom: 0; + margin-top: 0; +} + +.install-theme-info .theme-screenshot { + margin: 15px 0; + width: 258px; + border: 1px solid #c3c4c7; + position: relative; + overflow: hidden; +} + +.install-theme-info .theme-screenshot > img { + width: 100%; + height: auto; + position: absolute; + left: 0; + top: 0; +} + +.install-theme-info .theme-screenshot:after { + content: ""; + display: block; + padding-top: 66.66666666%; +} + +.install-theme-info .theme-details { + overflow: hidden; +} + +.theme-details .theme-version { + margin: 15px 0; +} + +.theme-details .theme-description { + float: left; + color: #646970; + line-height: 1.6; + max-width: 100%; +} + +.theme-install-overlay .wp-full-overlay-header .button { + float: right; + margin: 8px 10px 0 0; +} + +.theme-install-overlay .wp-full-overlay-sidebar { + background: #f0f0f1; + border-right: 1px solid #dcdcde; +} + +.theme-install-overlay .wp-full-overlay-sidebar-content { + background: #fff; + border-top: 1px solid #dcdcde; + border-bottom: 1px solid #dcdcde; +} + +.theme-install-overlay .wp-full-overlay-main { + position: absolute; + z-index: 0; + background-color: #f0f0f1; +} + +.customize-loading #customize-container { + background-color: #f0f0f1; +} + +#customize-preview.wp-full-overlay-main:before, +.customize-loading #customize-container:before, +#customize-controls .notice.notification-overlay.notification-loading:before, +.theme-install-overlay .wp-full-overlay-main:before { + content: ""; + display: block; + width: 20px; + height: 20px; + position: absolute; + left: 50%; + top: 50%; + z-index: -1; + margin: -10px 0 0 -10px; + transform: translateZ(0); + background: transparent url(../images/spinner.gif) no-repeat center center; + background-size: 20px 20px; +} + +#customize-preview.wp-full-overlay-main.iframe-ready:before, +.theme-install-overlay.iframe-ready .wp-full-overlay-main:before { + background-image: none; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +/** + * HiDPI Displays + */ +@media print, + (-webkit-min-device-pixel-ratio: 1.25), + (min-resolution: 120dpi) { + .wp-full-overlay .collapse-sidebar-arrow { + background-image: url(../images/arrows-2x.png); + background-size: 15px 123px; + } + + #customize-preview.wp-full-overlay-main:before, + .customize-loading #customize-container:before, + #customize-controls .notice.notification-overlay.notification-loading:before, + .theme-install-overlay .wp-full-overlay-main:before { + background-image: url(../images/spinner-2x.gif); + } +} + +@media screen and (max-width: 782px) { + .available-theme .action-links .delete-theme { + float: none; + margin: 0; + padding: 0; + clear: both; + } + + .available-theme .action-links .delete-theme a { + padding: 0; + } + + .broken-themes table { + width: 100%; + } + + .theme-install-overlay .wp-full-overlay-header .button { + font-size: 13px; + line-height: 2.15384615; + min-height: 30px; + } + + .theme-browser .theme .theme-actions .button { + margin-bottom: 0; + } + + .theme-browser .theme.active .theme-actions, + .theme-browser .theme .theme-actions { + padding-top: 4px; + padding-bottom: 4px; + } + + .upload-theme .wp-upload-form, + .upload-plugin .wp-upload-form { + display: block; + } +} + +@media aural { + .theme .notice:before, + .theme-info .updating-message:before, + .theme-info .updated-message:before, + .theme-install.updating-message:before { + speak: never; + } +} diff --git a/tools/storybook/wordpress/css/themes.min.css b/tools/storybook/wordpress/css/themes.min.css new file mode 100644 index 00000000000..23434ec3079 --- /dev/null +++ b/tools/storybook/wordpress/css/themes.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.themes-php{overflow-y:scroll}body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px}.theme .notice,.theme .notice.is-dismissible{left:0;margin:0;position:absolute;right:0;top:0}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #dcdcde;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme:nth-child(3n){margin-right:0}.theme-browser .theme.focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(246,247,247,.7);border-left:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:hover .theme-actions{opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-right:3px}.theme-browser .theme .theme-actions .button{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;left:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme.focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{opacity:0;position:absolute;top:35%;right:20%;left:20%;width:60%;background:#1d2327;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;border:none;transition:opacity .1s ease-in-out;cursor:pointer}.theme-browser .theme .more-details:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.theme-browser .theme.focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.theme-browser .theme.focus .more-details{opacity:1}.theme-browser .theme.active.focus .theme-actions{display:block}.theme-browser.rendered .theme.focus .more-details,.theme-browser.rendered .theme:hover .more-details{opacity:1}.theme-browser .theme.active .theme-name{background:#1d2327;color:#fff;padding-right:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-right:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(44,51,56,.7);border-left:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);right:0;padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-right:0}.theme-browser .theme .theme-author{background:#1d2327;color:#f0f0f1;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #dcdcde;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#dcdcde;background:rgba(140,143,148,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#8c8f94;position:absolute;top:30%;left:50%;margin-left:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#2271b1}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#2271b1;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;left:-20px;right:0;top:0;bottom:0;background:#f0f0f1;background:rgba(240,240,241,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;left:0;right:0;height:48px;border-bottom:1px solid #dcdcde}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:right;border:0;border-left:1px solid #dcdcde;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#787c82;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#787c82;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#dcdcde;border-color:#c3c4c7;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#c3c4c7;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f341"}.theme-overlay .theme-header .right:before{content:"\f345"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f6f7f7;z-index:30;box-sizing:border-box;border-top:1px solid #f0f0f1}.theme-overlay .theme-actions a{margin-right:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#d63638;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;right:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d63638;color:#fff;border-color:#d63638}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:left;margin:0 30px 0 0;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;left:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:350px;width:auto}.theme-overlay .screenshot.thumb{background:#c3c4c7;border:1px solid #f0f0f1;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;left:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #72aee6}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:left}.theme-overlay .current-label{background:#2c3338;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;user-select:none}.theme-overlay .theme-name{color:#1d2327;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#646970;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#646970;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .toggle-auto-update{display:inline-flex;align-items:center;min-height:20px;vertical-align:top}.theme-overlay .theme-autoupdate .toggle-auto-update{text-decoration:none}.theme-overlay .theme-autoupdate .toggle-auto-update .label{text-decoration:underline}.theme-overlay .theme-description{color:#50575e;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #f0f0f1;color:#646970;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#3c434a;font-weight:600;margin-right:5px}.theme-overlay .parent-theme{background:#fff;border:1px solid #f0f0f1;border-left:4px solid #72aee6;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:600}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:960px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme.focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}.theme-overlay .theme-about{bottom:105px}.theme-overlay .theme-actions{padding-left:4%;padding-right:4%}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;right:0;margin:-5px 0 20px;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;left:50%;text-indent:0;margin-left:-40px}.single-theme .theme-wrap{margin:0 -12px 0 -10px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:left;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#2271b1}.theme-browser .theme .notice-success p:before{color:#68de7c;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:""}.theme-install-php .wp-filter{padding-left:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#f6f7f7;border:1px solid #c3c4c7;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-right:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#50575e;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:1.9}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#646970}.theme-details .no-rating{display:block;line-height:1.9}.update-from-upload-comparison{border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;text-align:left;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:right}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#d63638}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #dcdcde;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dcdcde}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#4f94d4;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(34,113,177,.8);color:#1d2327}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#50575e;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#1d2327}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:2.9!important;margin:0 -1px 0 0!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #c3c4c7}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;background:#f0f0f1;border-right:none}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-300px}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-left:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-left:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 15px;line-height:3.2;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:left;width:45px;height:45px;background:#f0f0f1;border-right:1px solid #dcdcde;color:#3c434a;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;left:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#c3c4c7;background:#f0f0f1;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-left:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;left:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;left:0;padding:9px 0 9px 10px;height:45px;color:#646970;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#2271b1}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:1.6}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-full-overlay .collapse-sidebar-label{margin-left:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#f0f0f1;font:normal 20px/1 dashicons;speak:never;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:left,right,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#1d2327}.wp-full-overlay-main{background-color:#f0f0f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;left:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #dcdcde;background:#f0f0f1}.wp-full-overlay-footer .devices-wrapper{float:right}.wp-full-overlay-footer .devices{position:relative;background:#f0f0f1;box-shadow:-20px 0 10px -5px #f0f0f1}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 0 0 -4px;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#646970}.wp-full-overlay-footer .devices button.active{border-bottom-color:#1d2327}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#2271b1}.wp-full-overlay-footer .devices button.active:before{color:#1d2327}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#2271b1}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto 0 auto -160px;width:320px;height:480px;max-height:100%;max-width:100%;left:50%}.preview-tablet .wp-full-overlay-main{margin:auto 0 auto -360px;width:720px;height:1080px;max-height:100%;max-width:100%;left:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#f0f0f1;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100vw;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:1.5;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #c3c4c7;position:relative;overflow:hidden}.install-theme-info .theme-screenshot>img{width:100%;height:auto;position:absolute;left:0;top:0}.install-theme-info .theme-screenshot:after{content:"";display:block;padding-top:66.66666666%}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#646970;line-height:1.6;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:right;margin:8px 10px 0 0}.theme-install-overlay .wp-full-overlay-sidebar{background:#f0f0f1;border-right:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f0f0f1}.customize-loading #customize-container{background-color:#f0f0f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .button{font-size:13px;line-height:2.15384615;min-height:30px}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:4px;padding-bottom:4px}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{display:block}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:never}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/widgets-rtl.css b/tools/storybook/wordpress/css/widgets-rtl.css new file mode 100644 index 00000000000..7f8b8775288 --- /dev/null +++ b/tools/storybook/wordpress/css/widgets-rtl.css @@ -0,0 +1,877 @@ +/*! This file is auto-generated */ +/* General Widgets Styles */ + +.widget { + margin: 0 auto 10px; + position: relative; + box-sizing: border-box; +} + +.widget.open { + z-index: 99; +} +.widget.open:focus-within { + z-index: 100; +} + +.widget-top { + font-size: 13px; + font-weight: 600; + background: #f6f7f7; +} + +.widget-top .widget-action { + border: 0; + margin: 0; + padding: 10px; + background: none; + cursor: pointer; +} + +.widget-title h3, +.widget-title h4 { + margin: 0; + padding: 15px; + font-size: 1em; + line-height: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-user-select: none; + user-select: none; +} + +.widgets-holder-wrap .widget-inside { + border-top: none; + padding: 1px 15px 15px; + line-height: 1.23076923; +} + +.widget.widget-dirty .widget-control-close-wrapper { + display: none; +} + +.in-widget-title, +#widgets-right a.widget-control-edit, +#available-widgets .widget-description { + color: #646970; +} + +.deleting .widget-title, +.deleting .widget-top .widget-action .toggle-indicator:before { + color: #a7aaad; +} + +/* Media Widgets */ +.wp-core-ui .media-widget-control.selected .placeholder, +.wp-core-ui .media-widget-control.selected .not-selected, +.wp-core-ui .media-widget-control .selected { + display: none; +} + +.media-widget-control.selected .selected { + display: inline-block; +} + +.media-widget-buttons { + text-align: right; + margin-top: 0; +} + +.media-widget-control .media-widget-buttons .button { + width: auto; + height: auto; + margin-top: 12px; + white-space: normal; +} + +.media-widget-buttons .button:first-child { + margin-left: 8px; +} + +.media-widget-control .attachment-media-view .button-add-media, +.media-widget-control .placeholder { + border: 1px dashed #c3c4c7; + box-sizing: border-box; + cursor: pointer; + line-height: 1.6; + padding: 9px 0; + position: relative; + text-align: center; + width: 100%; +} + +.media-widget-control .attachment-media-view .button-add-media { + cursor: pointer; + background-color: #f0f0f1; + color: #2c3338; +} + +.media-widget-control .attachment-media-view .button-add-media:hover { + background-color: #fff; +} + +.media-widget-control .attachment-media-view .button-add-media:focus { + background-color: #fff; + border-style: solid; + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.media-widget-control .media-widget-preview { + background: transparent; + text-align: center; +} +.media-widget-control .media-widget-preview .notice { + text-align: initial; +} +.media-frame .media-widget-embed-notice p code, +.media-widget-control .notice p code { + padding: 0 0 0 3px; +} +.media-frame .media-widget-embed-notice { + margin-top: 16px; +} +.media-widget-control .media-widget-preview img { + max-width: 100%; + vertical-align: middle; + background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 100% 0, 10px 10px; + background-size: 20px 20px; +} +.media-widget-control .media-widget-preview .wp-video-shortcode { + background: #000; +} + +.media-frame.media-widget .media-toolbar-secondary { + min-width: 300px; +} + +.media-frame.media-widget .image-details .embed-media-settings .setting.align, +.media-frame.media-widget .attachment-display-settings .setting.align, +.media-frame.media-widget .embed-media-settings .setting.align, +.media-frame.media-widget .embed-media-settings .legend-inline, +.media-frame.media-widget .embed-link-settings .setting.link-text, +.media-frame.media-widget .replace-attachment, +.media-frame.media-widget .checkbox-setting.autoplay { + display: none; +} + +.media-widget-video-preview { + width: 100%; +} + +.media-widget-video-link { + display: inline-block; + min-height: 132px; + width: 100%; + background: #000; +} + +.media-widget-video-link .dashicons { + font: normal 60px/1 'dashicons'; + position: relative; + width: 100%; + top: -90px; + color: #fff; + text-decoration: none; +} + +.media-widget-video-link.no-poster .dashicons { + top: 30px; +} + +.media-frame #embed-url-field.invalid, +.media-widget-image-link > .link:invalid { + border: 1px solid #d63638; +} + +.media-widget-image-link { + margin: 1em 0; +} + +.media-widget-gallery-preview { + display: flex; + justify-content: flex-start; + flex-wrap: wrap; + margin: -1.79104477%; +} + +.media-widget-preview.media_gallery, +.media-widget-preview.media_image { + cursor: pointer; +} + +.media-widget-preview .placeholder { + background: #f0f0f1; +} + +.media-widget-gallery-preview .gallery-item { + box-sizing: border-box; + width: 50%; + margin: 0; + background: transparent; +} + +.media-widget-gallery-preview .gallery-item .gallery-icon { + margin: 4.5%; +} + +/* + * Use targeted nth-last-child selectors to control the size of each image + * based on how many gallery items are present in the grid. + * See: https://alistapart.com/article/quantity-queries-for-css + */ +.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child, +.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child ~ .gallery-item, +.media-widget-gallery-preview .gallery-item:nth-last-child(n+5), +.media-widget-gallery-preview .gallery-item:nth-last-child(n+5) ~ .gallery-item, +.media-widget-gallery-preview .gallery-item:nth-last-child(n+6), +.media-widget-gallery-preview .gallery-item:nth-last-child(n+6) ~ .gallery-item { + max-width: 33.33%; +} + +.media-widget-gallery-preview .gallery-item img { + height: auto; + vertical-align: bottom; +} + +.media-widget-gallery-preview .gallery-icon { + position: relative; +} + +.media-widget-gallery-preview .gallery-icon-placeholder { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); +} + +.media-widget-gallery-preview .gallery-icon-placeholder-text { + font-weight: 600; + font-size: 2em; + color: #fff; +} + + +/* Widget Dragging Helpers */ +.widget.ui-draggable-dragging { + min-width: 100%; +} + +.widget.ui-sortable-helper { + opacity: 0.8; +} + +.widget-placeholder { + border: 1px dashed #c3c4c7; + margin: 0 auto 10px; + height: 45px; + width: 100%; + box-sizing: border-box; +} + +#widgets-right .widget-placeholder { + margin-top: 0; +} + +#widgets-right .closed .widget-placeholder { + height: 0; + border: 0; + margin-top: -10px; +} + +/* Widget Sidebars */ +.sidebar-name { + position: relative; + box-sizing: border-box; +} + +.js .sidebar-name { + cursor: pointer; +} + +.sidebar-name .handlediv { + float: left; + width: 38px; + height: 38px; + border: 0; + margin: 0; + padding: 8px; + background: none; + cursor: pointer; + outline: none; +} + +#widgets-right .sidebar-name .handlediv { + margin: 5px 0 0 3px; +} + +.sidebar-name .handlediv:focus { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#widgets-left .sidebar-name .toggle-indicator { + display: none; +} + +#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator, +#widgets-left .sidebar-name:hover .toggle-indicator, +#widgets-left .sidebar-name .handlediv:focus .toggle-indicator { + display: block; +} + +.sidebar-name .toggle-indicator:before { + padding: 1px 0 1px 2px; + border-radius: 50%; +} + +.sidebar-name .handlediv:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.sidebar-name h2, +.sidebar-name h3 { + margin: 0; + padding: 8px 10px; + overflow: hidden; + white-space: normal; + line-height: 1.5; +} + +.widgets-holder-wrap .description { + padding: 0 0 15px; + margin: 0; + font-style: normal; + color: #646970; +} + +.widget-holder .description, +.inactive-sidebar .description { + color: #50575e; +} + +#widgets-right .widgets-holder-wrap .description { + padding-right: 7px; + padding-left: 7px; +} + +/* Widgets 2-col Layout */ +div.widget-liquid-left { + margin: 0; + width: 38%; + float: right; +} + +div.widget-liquid-right { + float: left; + width: 58%; +} + +/* Widgets Left - Available Widgets */ + +div#widgets-left { + padding-top: 12px; +} + +div#widgets-left .closed .sidebar-name, +div#widgets-left .inactive-sidebar.closed .sidebar-name { + margin-bottom: 10px; +} + +div#widgets-left .sidebar-name h2, +div#widgets-left .sidebar-name h3 { + padding: 10px 0; + margin: 0 0 0 10px; +} + +#widgets-left .widgets-holder-wrap, +div#widgets-left .widget-holder { + background: transparent; + border: none; +} + +#widgets-left .widgets-holder-wrap { + border: none; + box-shadow: none; +} + +#available-widgets .widget { + margin: 0; +} + +#available-widgets .widget:nth-child(odd) { + clear: both; +} + +#available-widgets .widget .widget-description { + display: block; + padding: 10px 15px; + font-size: 12px; + overflow-wrap: break-word; + word-wrap: break-word; + -ms-word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + hyphens: auto; +} + +#available-widgets #widget-list { + position: relative; +} + +/* Inactive Sidebars */ +#widgets-left .inactive-sidebar { + clear: both; + width: 100%; + background: transparent; + padding: 0; + margin: 0 0 20px; + border: none; + box-shadow: none; +} + +#widgets-left .inactive-sidebar.first { + margin-top: 40px; +} + +/* Not sure what this is for... */ +div#widgets-left .inactive-sidebar .widget.expanded { + right: auto; +} + +.widget-title-action { + float: left; + position: relative; +} + +div#widgets-left .inactive-sidebar .widgets-sortables { + min-height: 42px; + padding: 0; + background: transparent; + margin: 0; + position: relative; +} + +/* Widgets Right */ + +div#widgets-right .sidebars-column-1, +div#widgets-right .sidebars-column-2 { + max-width: 450px; +} + +div#widgets-right .widgets-holder-wrap { + margin: 10px 0 0; +} + +div#widgets-right .sidebar-description { + min-height: 20px; + margin-top: -5px; +} + +div#widgets-right .sidebar-name h2, +div#widgets-right .sidebar-name h3 { + padding: 15px 7px 15px 15px; +} + +div#widgets-right .widget-top { + padding: 0; +} + +div#widgets-right .widgets-sortables { + padding: 0 8px; + margin-bottom: 9px; + position: relative; + min-height: 123px; +} + +div#widgets-right .closed .widgets-sortables { + min-height: 0; + margin-bottom: 0; +} + +.sidebar-name .spinner, +.remove-inactive-widgets .spinner { + float: none; + position: relative; + top: -2px; + margin: -5px 5px; +} + +.sidebar-name .spinner { + position: absolute; + top: 18px; + left: 30px; +} + +/* Dragging a widget over a closed sidebar */ +#widgets-right .widgets-holder-wrap.widget-hover { + border-color: #787c82; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +/* Accessibility Mode */ +.widget-access-link { + float: left; + margin: -5px 10px 10px 0; +} + +.widgets_access #widgets-left .widget .widget-top { + cursor: auto; +} + +.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description, +.widgets_access #wpwrap .widgets-holder-wrap.closed .widget, +.widgets_access #wpwrap .widget-control-edit { + display: block; +} + +.widgets_access #widgets-left .widget .widget-top:hover, +.widgets_access #widgets-right .widget .widget-top:hover { + border-color: #dcdcde; +} + +#available-widgets .widget-control-edit .edit, +#available-widgets .widget-action .edit, +#widgets-left .inactive-sidebar .widget-control-edit .add, +#widgets-left .inactive-sidebar .widget-action .add, +#widgets-right .widget-control-edit .add, +#widgets-right .widget-action .add { + display: none; +} + +.widget-control-edit { + display: block; + color: #646970; + background: #f0f0f1; + padding: 0 15px; + line-height: 3.30769230; + border-right: 1px solid #dcdcde; +} + +#widgets-left .widget-control-edit:hover, +#widgets-right .widget-control-edit:hover { + color: #fff; + background: #3c434a; + border-right: 0; + outline: 1px solid #3c434a; +} + +.widgets-holder-wrap .sidebar-name, +.widgets-holder-wrap .sidebar-description { + -webkit-user-select: none; + user-select: none; +} + +.editwidget { + margin: 0 auto; +} + +.editwidget .widget-inside { + display: block; + padding: 0 15px; +} + +.editwidget .widget-control-actions { + margin-top: 20px; +} + +.js .widgets-holder-wrap.closed .widget, +.js .widgets-holder-wrap.closed .sidebar-description, +.js .widgets-holder-wrap.closed .remove-inactive-widgets, +.js .widgets-holder-wrap.closed .description, +.js .closed br.clear { + display: none; +} + +.js .widgets-holder-wrap.closed .widget.ui-sortable-helper { + display: block; +} + +/* Hide Widget Settings by Default */ +.widget-inside, +.widget-description { + display: none; +} + +.widget-inside { + background: #fff; +} + +.widget-inside select { + max-width: 100%; +} + +/* Dragging widgets over the available widget area show's a "Deactivate" message */ +#removing-widget { + display: none; + font-weight: 400; + padding-right: 15px; + font-size: 12px; + line-height: 1; + color: #000; +} + +.js #removing-widget { + color: #72aee6; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .handlediv, +.widgets_access #access-on, +.widgets_access .widget-holder .description, +.no-js .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + + +/* Widgets Area Chooser */ +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + transition: opacity 0.1s linear; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + /* -webkit-filter: blur(1px); */ + opacity: 0.2; + pointer-events: none; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question { + /* -webkit-filter: none; */ + opacity: 1; + pointer-events: auto; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #8c8f94; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.widgets-chooser ul.widgets-chooser-sidebars { + margin: 0; + list-style-type: none; + max-height: 300px; + overflow: auto; +} + +.widgets-chooser { + display: none; +} + +.widgets-chooser ul { + border: 1px solid #c3c4c7; +} + +.widgets-chooser li { + border-bottom: 1px solid #c3c4c7; + background: #fff; + margin: 0; + position: relative; +} + +.widgets-chooser .widgets-chooser-button { + width: 100%; + padding: 10px 35px 10px 15px; + background: transparent; + border: 0; + box-sizing: border-box; + text-align: right; + cursor: pointer; + transition: background 0.2s ease-in-out; +} + +/* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ +.widgets-chooser .widgets-chooser-button:hover, +.widgets-chooser .widgets-chooser-button:focus { + outline: none; + text-decoration: underline; +} + +.widgets-chooser li:last-child { + border: none; +} + +.widgets-chooser .widgets-chooser-selected .widgets-chooser-button { + background: #2271b1; + color: #fff; +} + +.widgets-chooser .widgets-chooser-selected:before { + content: "\f147"; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 dashicons; + color: #fff; + position: absolute; + top: 7px; + right: 5px; +} + +.widgets-chooser .widgets-chooser-actions { + padding: 10px 0 12px; + text-align: center; +} + +#available-widgets .widget .widget-top { + cursor: pointer; +} + +#available-widgets .widget.ui-draggable-dragging .widget-top { + cursor: move; +} + +/* =Specific widget styling +-------------------------------------------------------------- */ +.text-widget-fields { + position: relative; +} +.text-widget-fields [hidden] { + display: none; +} +.text-widget-fields .wp-pointer.wp-pointer-top { + position: absolute; + z-index: 3; + top: 100px; + left: 10px; + right: 10px; +} +.text-widget-fields .wp-pointer .wp-pointer-arrow { + right: auto; + left: 15px; +} +.text-widget-fields .wp-pointer .wp-pointer-buttons { + line-height: 1.4; +} + +.custom-html-widget-fields > p > .CodeMirror { + border: 1px solid #dcdcde; +} +.custom-html-widget-fields code { + padding-top: 1px; + padding-bottom: 1px; +} +ul.CodeMirror-hints { + z-index: 101; /* Due to z-index 100 set on .widget.open */ +} +.widget-control-actions .custom-html-widget-save-button.button.validation-blocked { + cursor: not-allowed; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 782px) { + .widgets-holder-wrap .widget-inside input[type="checkbox"], + .widgets-holder-wrap .widget-inside input[type="radio"], + .editwidget .widget-inside input[type="checkbox"], /* Selectors for the "accessibility mode" page. */ + .editwidget .widget-inside input[type="radio"] { + margin: 0.25rem 0 0.25rem 0.25rem; + } +} + +@media screen and (max-width: 480px) { + div.widget-liquid-left { + width: 100%; + float: none; + border-left: none; + padding-left: 0; + } + + #widgets-left .sidebar-name { + margin-left: 0; + } + + #widgets-left #available-widgets .widget-top { + margin-left: 0; + } + + #widgets-left .inactive-sidebar .widgets-sortables { + margin-left: 0; + } + + div.widget-liquid-right { + width: 100%; + float: none; + } + + div.widget { + max-width: 480px; + } + + .widget-access-link { + float: none; + margin: 15px 0 0; + } +} + +@media screen and (max-width: 320px) { + div.widget { + max-width: 320px; + } +} + +@media only screen and (min-width: 1250px) { + #widgets-left #available-widgets .widget { + width: 49%; + float: right; + } + + .widget.ui-draggable-dragging { + min-width: 49%; + } + + #widgets-left #available-widgets .widget:nth-child(even) { + float: left; + } + + #widgets-right .sidebars-column-1, + #widgets-right .sidebars-column-2 { + float: right; + width: 49%; + } + + #widgets-right .sidebars-column-1 { + margin-left: 2%; + } + + #widgets-right.single-sidebar .sidebars-column-1, + #widgets-right.single-sidebar .sidebars-column-2 { + float: none; + width: 100%; + margin: 0; + } +} diff --git a/tools/storybook/wordpress/css/widgets-rtl.min.css b/tools/storybook/wordpress/css/widgets-rtl.min.css new file mode 100644 index 00000000000..6b2787ea06c --- /dev/null +++ b/tools/storybook/wordpress/css/widgets-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget.open{z-index:99}.widget.open:focus-within{z-index:100}.widget-top{font-size:13px;font-weight:600;background:#f6f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:1.23076923}.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#646970}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a7aaad}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:right;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-left:8px}.media-widget-control .attachment-media-view .button-add-media,.media-widget-control .placeholder{border:1px dashed #c3c4c7;box-sizing:border-box;cursor:pointer;line-height:1.6;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.media-widget-control .attachment-media-view .button-add-media:hover{background-color:#fff}.media-widget-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-style:solid;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent;outline-offset:-2px}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 0 0 3px}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle;background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .legend-inline,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #d63638}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f0f0f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #c3c4c7;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:left;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 0 0 3px}.sidebar-name .handlediv:focus{box-shadow:none;outline:1px solid transparent}#widgets-left .sidebar-name .toggle-indicator{display:none}#widgets-left .sidebar-name .handlediv:focus .toggle-indicator,#widgets-left .sidebar-name:hover .toggle-indicator,#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator{display:block}.sidebar-name .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:normal;line-height:1.5}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#646970}.inactive-sidebar .description,.widget-holder .description{color:#50575e}#widgets-right .widgets-holder-wrap .description{padding-right:7px;padding-left:7px}div.widget-liquid-left{margin:0;width:38%;float:right}div.widget-liquid-right{float:left;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 0 0 10px}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{right:auto}.widget-title-action{float:left;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px 15px 15px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}.sidebar-name .spinner{position:absolute;top:18px;left:30px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#787c82;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:left;margin:-5px 10px 10px 0}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#dcdcde}#available-widgets .widget-action .edit,#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-action .add,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-action .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#646970;background:#f0f0f1;padding:0 15px;line-height:3.30769230;border-right:1px solid #dcdcde}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#3c434a;border-right:0;outline:1px solid #3c434a}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description,.widget-inside{display:none}.widget-inside{background:#fff}.widget-inside select{max-width:100%}#removing-widget{display:none;font-weight:400;padding-right:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#72aee6}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #c3c4c7}.widgets-chooser li{border-bottom:1px solid #c3c4c7;background:#fff;margin:0;position:relative}.widgets-chooser .widgets-chooser-button{width:100%;padding:10px 35px 10px 15px;background:0 0;border:0;box-sizing:border-box;text-align:right;cursor:pointer;transition:background .2s ease-in-out}.widgets-chooser .widgets-chooser-button:focus,.widgets-chooser .widgets-chooser-button:hover{outline:0;text-decoration:underline}.widgets-chooser li:last-child{border:none}.widgets-chooser .widgets-chooser-selected .widgets-chooser-button{background:#2271b1;color:#fff}.widgets-chooser .widgets-chooser-selected:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;left:10px;right:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{right:auto;left:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #dcdcde}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:782px){.editwidget .widget-inside input[type=checkbox],.editwidget .widget-inside input[type=radio],.widgets-holder-wrap .widget-inside input[type=checkbox],.widgets-holder-wrap .widget-inside input[type=radio]{margin:.25rem 0 .25rem .25rem}}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left .sidebar-name{margin-left:0}#widgets-left #available-widgets .widget-top{margin-left:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{max-width:480px}.widget-access-link{float:none;margin:15px 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:right}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:left}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:right;width:49%}#widgets-right .sidebars-column-1{margin-left:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/widgets.css b/tools/storybook/wordpress/css/widgets.css new file mode 100644 index 00000000000..8faca8f9ac4 --- /dev/null +++ b/tools/storybook/wordpress/css/widgets.css @@ -0,0 +1,876 @@ +/* General Widgets Styles */ + +.widget { + margin: 0 auto 10px; + position: relative; + box-sizing: border-box; +} + +.widget.open { + z-index: 99; +} +.widget.open:focus-within { + z-index: 100; +} + +.widget-top { + font-size: 13px; + font-weight: 600; + background: #f6f7f7; +} + +.widget-top .widget-action { + border: 0; + margin: 0; + padding: 10px; + background: none; + cursor: pointer; +} + +.widget-title h3, +.widget-title h4 { + margin: 0; + padding: 15px; + font-size: 1em; + line-height: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-user-select: none; + user-select: none; +} + +.widgets-holder-wrap .widget-inside { + border-top: none; + padding: 1px 15px 15px; + line-height: 1.23076923; +} + +.widget.widget-dirty .widget-control-close-wrapper { + display: none; +} + +.in-widget-title, +#widgets-right a.widget-control-edit, +#available-widgets .widget-description { + color: #646970; +} + +.deleting .widget-title, +.deleting .widget-top .widget-action .toggle-indicator:before { + color: #a7aaad; +} + +/* Media Widgets */ +.wp-core-ui .media-widget-control.selected .placeholder, +.wp-core-ui .media-widget-control.selected .not-selected, +.wp-core-ui .media-widget-control .selected { + display: none; +} + +.media-widget-control.selected .selected { + display: inline-block; +} + +.media-widget-buttons { + text-align: left; + margin-top: 0; +} + +.media-widget-control .media-widget-buttons .button { + width: auto; + height: auto; + margin-top: 12px; + white-space: normal; +} + +.media-widget-buttons .button:first-child { + margin-right: 8px; +} + +.media-widget-control .attachment-media-view .button-add-media, +.media-widget-control .placeholder { + border: 1px dashed #c3c4c7; + box-sizing: border-box; + cursor: pointer; + line-height: 1.6; + padding: 9px 0; + position: relative; + text-align: center; + width: 100%; +} + +.media-widget-control .attachment-media-view .button-add-media { + cursor: pointer; + background-color: #f0f0f1; + color: #2c3338; +} + +.media-widget-control .attachment-media-view .button-add-media:hover { + background-color: #fff; +} + +.media-widget-control .attachment-media-view .button-add-media:focus { + background-color: #fff; + border-style: solid; + border-color: #4f94d4; + box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + /* Only visible in Windows High Contrast mode */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +.media-widget-control .media-widget-preview { + background: transparent; + text-align: center; +} +.media-widget-control .media-widget-preview .notice { + text-align: initial; +} +.media-frame .media-widget-embed-notice p code, +.media-widget-control .notice p code { + padding: 0 3px 0 0; +} +.media-frame .media-widget-embed-notice { + margin-top: 16px; +} +.media-widget-control .media-widget-preview img { + max-width: 100%; + vertical-align: middle; + background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-position: 0 0, 10px 10px; + background-size: 20px 20px; +} +.media-widget-control .media-widget-preview .wp-video-shortcode { + background: #000; +} + +.media-frame.media-widget .media-toolbar-secondary { + min-width: 300px; +} + +.media-frame.media-widget .image-details .embed-media-settings .setting.align, +.media-frame.media-widget .attachment-display-settings .setting.align, +.media-frame.media-widget .embed-media-settings .setting.align, +.media-frame.media-widget .embed-media-settings .legend-inline, +.media-frame.media-widget .embed-link-settings .setting.link-text, +.media-frame.media-widget .replace-attachment, +.media-frame.media-widget .checkbox-setting.autoplay { + display: none; +} + +.media-widget-video-preview { + width: 100%; +} + +.media-widget-video-link { + display: inline-block; + min-height: 132px; + width: 100%; + background: #000; +} + +.media-widget-video-link .dashicons { + font: normal 60px/1 'dashicons'; + position: relative; + width: 100%; + top: -90px; + color: #fff; + text-decoration: none; +} + +.media-widget-video-link.no-poster .dashicons { + top: 30px; +} + +.media-frame #embed-url-field.invalid, +.media-widget-image-link > .link:invalid { + border: 1px solid #d63638; +} + +.media-widget-image-link { + margin: 1em 0; +} + +.media-widget-gallery-preview { + display: flex; + justify-content: flex-start; + flex-wrap: wrap; + margin: -1.79104477%; +} + +.media-widget-preview.media_gallery, +.media-widget-preview.media_image { + cursor: pointer; +} + +.media-widget-preview .placeholder { + background: #f0f0f1; +} + +.media-widget-gallery-preview .gallery-item { + box-sizing: border-box; + width: 50%; + margin: 0; + background: transparent; +} + +.media-widget-gallery-preview .gallery-item .gallery-icon { + margin: 4.5%; +} + +/* + * Use targeted nth-last-child selectors to control the size of each image + * based on how many gallery items are present in the grid. + * See: https://alistapart.com/article/quantity-queries-for-css + */ +.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child, +.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child ~ .gallery-item, +.media-widget-gallery-preview .gallery-item:nth-last-child(n+5), +.media-widget-gallery-preview .gallery-item:nth-last-child(n+5) ~ .gallery-item, +.media-widget-gallery-preview .gallery-item:nth-last-child(n+6), +.media-widget-gallery-preview .gallery-item:nth-last-child(n+6) ~ .gallery-item { + max-width: 33.33%; +} + +.media-widget-gallery-preview .gallery-item img { + height: auto; + vertical-align: bottom; +} + +.media-widget-gallery-preview .gallery-icon { + position: relative; +} + +.media-widget-gallery-preview .gallery-icon-placeholder { + position: absolute; + top: 0; + bottom: 0; + width: 100%; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); +} + +.media-widget-gallery-preview .gallery-icon-placeholder-text { + font-weight: 600; + font-size: 2em; + color: #fff; +} + + +/* Widget Dragging Helpers */ +.widget.ui-draggable-dragging { + min-width: 100%; +} + +.widget.ui-sortable-helper { + opacity: 0.8; +} + +.widget-placeholder { + border: 1px dashed #c3c4c7; + margin: 0 auto 10px; + height: 45px; + width: 100%; + box-sizing: border-box; +} + +#widgets-right .widget-placeholder { + margin-top: 0; +} + +#widgets-right .closed .widget-placeholder { + height: 0; + border: 0; + margin-top: -10px; +} + +/* Widget Sidebars */ +.sidebar-name { + position: relative; + box-sizing: border-box; +} + +.js .sidebar-name { + cursor: pointer; +} + +.sidebar-name .handlediv { + float: right; + width: 38px; + height: 38px; + border: 0; + margin: 0; + padding: 8px; + background: none; + cursor: pointer; + outline: none; +} + +#widgets-right .sidebar-name .handlediv { + margin: 5px 3px 0 0; +} + +.sidebar-name .handlediv:focus { + box-shadow: none; + /* Only visible in Windows High Contrast mode */ + outline: 1px solid transparent; +} + +#widgets-left .sidebar-name .toggle-indicator { + display: none; +} + +#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator, +#widgets-left .sidebar-name:hover .toggle-indicator, +#widgets-left .sidebar-name .handlediv:focus .toggle-indicator { + display: block; +} + +.sidebar-name .toggle-indicator:before { + padding: 1px 2px 1px 0; + border-radius: 50%; +} + +.sidebar-name .handlediv:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #4f94d4, + 0 0 2px 1px rgba(79, 148, 212, 0.8); +} + +.sidebar-name h2, +.sidebar-name h3 { + margin: 0; + padding: 8px 10px; + overflow: hidden; + white-space: normal; + line-height: 1.5; +} + +.widgets-holder-wrap .description { + padding: 0 0 15px; + margin: 0; + font-style: normal; + color: #646970; +} + +.widget-holder .description, +.inactive-sidebar .description { + color: #50575e; +} + +#widgets-right .widgets-holder-wrap .description { + padding-left: 7px; + padding-right: 7px; +} + +/* Widgets 2-col Layout */ +div.widget-liquid-left { + margin: 0; + width: 38%; + float: left; +} + +div.widget-liquid-right { + float: right; + width: 58%; +} + +/* Widgets Left - Available Widgets */ + +div#widgets-left { + padding-top: 12px; +} + +div#widgets-left .closed .sidebar-name, +div#widgets-left .inactive-sidebar.closed .sidebar-name { + margin-bottom: 10px; +} + +div#widgets-left .sidebar-name h2, +div#widgets-left .sidebar-name h3 { + padding: 10px 0; + margin: 0 10px 0 0; +} + +#widgets-left .widgets-holder-wrap, +div#widgets-left .widget-holder { + background: transparent; + border: none; +} + +#widgets-left .widgets-holder-wrap { + border: none; + box-shadow: none; +} + +#available-widgets .widget { + margin: 0; +} + +#available-widgets .widget:nth-child(odd) { + clear: both; +} + +#available-widgets .widget .widget-description { + display: block; + padding: 10px 15px; + font-size: 12px; + overflow-wrap: break-word; + word-wrap: break-word; + -ms-word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + hyphens: auto; +} + +#available-widgets #widget-list { + position: relative; +} + +/* Inactive Sidebars */ +#widgets-left .inactive-sidebar { + clear: both; + width: 100%; + background: transparent; + padding: 0; + margin: 0 0 20px; + border: none; + box-shadow: none; +} + +#widgets-left .inactive-sidebar.first { + margin-top: 40px; +} + +/* Not sure what this is for... */ +div#widgets-left .inactive-sidebar .widget.expanded { + left: auto; +} + +.widget-title-action { + float: right; + position: relative; +} + +div#widgets-left .inactive-sidebar .widgets-sortables { + min-height: 42px; + padding: 0; + background: transparent; + margin: 0; + position: relative; +} + +/* Widgets Right */ + +div#widgets-right .sidebars-column-1, +div#widgets-right .sidebars-column-2 { + max-width: 450px; +} + +div#widgets-right .widgets-holder-wrap { + margin: 10px 0 0; +} + +div#widgets-right .sidebar-description { + min-height: 20px; + margin-top: -5px; +} + +div#widgets-right .sidebar-name h2, +div#widgets-right .sidebar-name h3 { + padding: 15px 15px 15px 7px; +} + +div#widgets-right .widget-top { + padding: 0; +} + +div#widgets-right .widgets-sortables { + padding: 0 8px; + margin-bottom: 9px; + position: relative; + min-height: 123px; +} + +div#widgets-right .closed .widgets-sortables { + min-height: 0; + margin-bottom: 0; +} + +.sidebar-name .spinner, +.remove-inactive-widgets .spinner { + float: none; + position: relative; + top: -2px; + margin: -5px 5px; +} + +.sidebar-name .spinner { + position: absolute; + top: 18px; + right: 30px; +} + +/* Dragging a widget over a closed sidebar */ +#widgets-right .widgets-holder-wrap.widget-hover { + border-color: #787c82; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); +} + +/* Accessibility Mode */ +.widget-access-link { + float: right; + margin: -5px 0 10px 10px; +} + +.widgets_access #widgets-left .widget .widget-top { + cursor: auto; +} + +.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description, +.widgets_access #wpwrap .widgets-holder-wrap.closed .widget, +.widgets_access #wpwrap .widget-control-edit { + display: block; +} + +.widgets_access #widgets-left .widget .widget-top:hover, +.widgets_access #widgets-right .widget .widget-top:hover { + border-color: #dcdcde; +} + +#available-widgets .widget-control-edit .edit, +#available-widgets .widget-action .edit, +#widgets-left .inactive-sidebar .widget-control-edit .add, +#widgets-left .inactive-sidebar .widget-action .add, +#widgets-right .widget-control-edit .add, +#widgets-right .widget-action .add { + display: none; +} + +.widget-control-edit { + display: block; + color: #646970; + background: #f0f0f1; + padding: 0 15px; + line-height: 3.30769230; + border-left: 1px solid #dcdcde; +} + +#widgets-left .widget-control-edit:hover, +#widgets-right .widget-control-edit:hover { + color: #fff; + background: #3c434a; + border-left: 0; + outline: 1px solid #3c434a; +} + +.widgets-holder-wrap .sidebar-name, +.widgets-holder-wrap .sidebar-description { + -webkit-user-select: none; + user-select: none; +} + +.editwidget { + margin: 0 auto; +} + +.editwidget .widget-inside { + display: block; + padding: 0 15px; +} + +.editwidget .widget-control-actions { + margin-top: 20px; +} + +.js .widgets-holder-wrap.closed .widget, +.js .widgets-holder-wrap.closed .sidebar-description, +.js .widgets-holder-wrap.closed .remove-inactive-widgets, +.js .widgets-holder-wrap.closed .description, +.js .closed br.clear { + display: none; +} + +.js .widgets-holder-wrap.closed .widget.ui-sortable-helper { + display: block; +} + +/* Hide Widget Settings by Default */ +.widget-inside, +.widget-description { + display: none; +} + +.widget-inside { + background: #fff; +} + +.widget-inside select { + max-width: 100%; +} + +/* Dragging widgets over the available widget area show's a "Deactivate" message */ +#removing-widget { + display: none; + font-weight: 400; + padding-left: 15px; + font-size: 12px; + line-height: 1; + color: #000; +} + +.js #removing-widget { + color: #72aee6; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .handlediv, +.widgets_access #access-on, +.widgets_access .widget-holder .description, +.no-js .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + + +/* Widgets Area Chooser */ +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + transition: opacity 0.1s linear; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget, +.widget-liquid-left #widgets-left.chooser .inactive-sidebar { + /* -webkit-filter: blur(1px); */ + opacity: 0.2; + pointer-events: none; +} + +.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question { + /* -webkit-filter: none; */ + opacity: 1; + pointer-events: auto; +} + +.widgets-chooser ul, +#widgets-left .widget-in-question .widget-top, +#available-widgets .widget-top:hover, +div#widgets-right .widget-top:hover, +#widgets-left .widget-top:hover { + border-color: #8c8f94; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.widgets-chooser ul.widgets-chooser-sidebars { + margin: 0; + list-style-type: none; + max-height: 300px; + overflow: auto; +} + +.widgets-chooser { + display: none; +} + +.widgets-chooser ul { + border: 1px solid #c3c4c7; +} + +.widgets-chooser li { + border-bottom: 1px solid #c3c4c7; + background: #fff; + margin: 0; + position: relative; +} + +.widgets-chooser .widgets-chooser-button { + width: 100%; + padding: 10px 15px 10px 35px; + background: transparent; + border: 0; + box-sizing: border-box; + text-align: left; + cursor: pointer; + transition: background 0.2s ease-in-out; +} + +/* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ +.widgets-chooser .widgets-chooser-button:hover, +.widgets-chooser .widgets-chooser-button:focus { + outline: none; + text-decoration: underline; +} + +.widgets-chooser li:last-child { + border: none; +} + +.widgets-chooser .widgets-chooser-selected .widgets-chooser-button { + background: #2271b1; + color: #fff; +} + +.widgets-chooser .widgets-chooser-selected:before { + content: "\f147"; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 dashicons; + color: #fff; + position: absolute; + top: 7px; + left: 5px; +} + +.widgets-chooser .widgets-chooser-actions { + padding: 10px 0 12px; + text-align: center; +} + +#available-widgets .widget .widget-top { + cursor: pointer; +} + +#available-widgets .widget.ui-draggable-dragging .widget-top { + cursor: move; +} + +/* =Specific widget styling +-------------------------------------------------------------- */ +.text-widget-fields { + position: relative; +} +.text-widget-fields [hidden] { + display: none; +} +.text-widget-fields .wp-pointer.wp-pointer-top { + position: absolute; + z-index: 3; + top: 100px; + right: 10px; + left: 10px; +} +.text-widget-fields .wp-pointer .wp-pointer-arrow { + left: auto; + right: 15px; +} +.text-widget-fields .wp-pointer .wp-pointer-buttons { + line-height: 1.4; +} + +.custom-html-widget-fields > p > .CodeMirror { + border: 1px solid #dcdcde; +} +.custom-html-widget-fields code { + padding-top: 1px; + padding-bottom: 1px; +} +ul.CodeMirror-hints { + z-index: 101; /* Due to z-index 100 set on .widget.open */ +} +.widget-control-actions .custom-html-widget-save-button.button.validation-blocked { + cursor: not-allowed; +} + +/* =Media Queries +-------------------------------------------------------------- */ + +@media screen and (max-width: 782px) { + .widgets-holder-wrap .widget-inside input[type="checkbox"], + .widgets-holder-wrap .widget-inside input[type="radio"], + .editwidget .widget-inside input[type="checkbox"], /* Selectors for the "accessibility mode" page. */ + .editwidget .widget-inside input[type="radio"] { + margin: 0.25rem 0.25rem 0.25rem 0; + } +} + +@media screen and (max-width: 480px) { + div.widget-liquid-left { + width: 100%; + float: none; + border-right: none; + padding-right: 0; + } + + #widgets-left .sidebar-name { + margin-right: 0; + } + + #widgets-left #available-widgets .widget-top { + margin-right: 0; + } + + #widgets-left .inactive-sidebar .widgets-sortables { + margin-right: 0; + } + + div.widget-liquid-right { + width: 100%; + float: none; + } + + div.widget { + max-width: 480px; + } + + .widget-access-link { + float: none; + margin: 15px 0 0; + } +} + +@media screen and (max-width: 320px) { + div.widget { + max-width: 320px; + } +} + +@media only screen and (min-width: 1250px) { + #widgets-left #available-widgets .widget { + width: 49%; + float: left; + } + + .widget.ui-draggable-dragging { + min-width: 49%; + } + + #widgets-left #available-widgets .widget:nth-child(even) { + float: right; + } + + #widgets-right .sidebars-column-1, + #widgets-right .sidebars-column-2 { + float: left; + width: 49%; + } + + #widgets-right .sidebars-column-1 { + margin-right: 2%; + } + + #widgets-right.single-sidebar .sidebars-column-1, + #widgets-right.single-sidebar .sidebars-column-2 { + float: none; + width: 100%; + margin: 0; + } +} diff --git a/tools/storybook/wordpress/css/widgets.min.css b/tools/storybook/wordpress/css/widgets.min.css new file mode 100644 index 00000000000..d343c3426d8 --- /dev/null +++ b/tools/storybook/wordpress/css/widgets.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget.open{z-index:99}.widget.open:focus-within{z-index:100}.widget-top{font-size:13px;font-weight:600;background:#f6f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:1.23076923}.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#646970}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a7aaad}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:left;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-right:8px}.media-widget-control .attachment-media-view .button-add-media,.media-widget-control .placeholder{border:1px dashed #c3c4c7;box-sizing:border-box;cursor:pointer;line-height:1.6;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.media-widget-control .attachment-media-view .button-add-media:hover{background-color:#fff}.media-widget-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-style:solid;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent;outline-offset:-2px}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 3px 0 0}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle;background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .legend-inline,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #d63638}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f0f0f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #c3c4c7;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:right;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 3px 0 0}.sidebar-name .handlediv:focus{box-shadow:none;outline:1px solid transparent}#widgets-left .sidebar-name .toggle-indicator{display:none}#widgets-left .sidebar-name .handlediv:focus .toggle-indicator,#widgets-left .sidebar-name:hover .toggle-indicator,#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator{display:block}.sidebar-name .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:normal;line-height:1.5}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#646970}.inactive-sidebar .description,.widget-holder .description{color:#50575e}#widgets-right .widgets-holder-wrap .description{padding-left:7px;padding-right:7px}div.widget-liquid-left{margin:0;width:38%;float:left}div.widget-liquid-right{float:right;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 10px 0 0}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{left:auto}.widget-title-action{float:right;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 15px 15px 7px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}.sidebar-name .spinner{position:absolute;top:18px;right:30px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#787c82;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:right;margin:-5px 0 10px 10px}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#dcdcde}#available-widgets .widget-action .edit,#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-action .add,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-action .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#646970;background:#f0f0f1;padding:0 15px;line-height:3.30769230;border-left:1px solid #dcdcde}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#3c434a;border-left:0;outline:1px solid #3c434a}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description,.widget-inside{display:none}.widget-inside{background:#fff}.widget-inside select{max-width:100%}#removing-widget{display:none;font-weight:400;padding-left:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#72aee6}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #c3c4c7}.widgets-chooser li{border-bottom:1px solid #c3c4c7;background:#fff;margin:0;position:relative}.widgets-chooser .widgets-chooser-button{width:100%;padding:10px 15px 10px 35px;background:0 0;border:0;box-sizing:border-box;text-align:left;cursor:pointer;transition:background .2s ease-in-out}.widgets-chooser .widgets-chooser-button:focus,.widgets-chooser .widgets-chooser-button:hover{outline:0;text-decoration:underline}.widgets-chooser li:last-child{border:none}.widgets-chooser .widgets-chooser-selected .widgets-chooser-button{background:#2271b1;color:#fff}.widgets-chooser .widgets-chooser-selected:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;right:10px;left:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{left:auto;right:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #dcdcde}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:782px){.editwidget .widget-inside input[type=checkbox],.editwidget .widget-inside input[type=radio],.widgets-holder-wrap .widget-inside input[type=checkbox],.widgets-holder-wrap .widget-inside input[type=radio]{margin:.25rem .25rem .25rem 0}}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left .sidebar-name{margin-right:0}#widgets-left #available-widgets .widget-top{margin-right:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{max-width:480px}.widget-access-link{float:none;margin:15px 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:left}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:right}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:left;width:49%}#widgets-right .sidebars-column-1{margin-right:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file diff --git a/tools/storybook/wordpress/css/wp-admin-rtl.css b/tools/storybook/wordpress/css/wp-admin-rtl.css new file mode 100644 index 00000000000..81d66f63ad1 --- /dev/null +++ b/tools/storybook/wordpress/css/wp-admin-rtl.css @@ -0,0 +1,16 @@ +/*! This file is auto-generated */ +@import url(common-rtl.css); +@import url(forms-rtl.css); +@import url(admin-menu-rtl.css); +@import url(dashboard-rtl.css); +@import url(list-tables-rtl.css); +@import url(edit-rtl.css); +@import url(revisions-rtl.css); +@import url(media-rtl.css); +@import url(themes-rtl.css); +@import url(about-rtl.css); +@import url(nav-menus-rtl.css); +@import url(widgets-rtl.css); +@import url(site-icon-rtl.css); +@import url(l10n-rtl.css); +@import url(site-health-rtl.css); diff --git a/tools/storybook/wordpress/css/wp-admin-rtl.min.css b/tools/storybook/wordpress/css/wp-admin-rtl.min.css new file mode 100644 index 00000000000..110850bb41f --- /dev/null +++ b/tools/storybook/wordpress/css/wp-admin-rtl.min.css @@ -0,0 +1,16 @@ +/*! This file is auto-generated */ +@import url(common-rtl.min.css); +@import url(forms-rtl.min.css); +@import url(admin-menu-rtl.min.css); +@import url(dashboard-rtl.min.css); +@import url(list-tables-rtl.min.css); +@import url(edit-rtl.min.css); +@import url(revisions-rtl.min.css); +@import url(media-rtl.min.css); +@import url(themes-rtl.min.css); +@import url(about-rtl.min.css); +@import url(nav-menus-rtl.min.css); +@import url(widgets-rtl.min.css); +@import url(site-icon-rtl.min.css); +@import url(l10n-rtl.min.css); +@import url(site-health-rtl.min.css); diff --git a/tools/storybook/wordpress/css/wp-admin.css b/tools/storybook/wordpress/css/wp-admin.css new file mode 100644 index 00000000000..b475cf0aafb --- /dev/null +++ b/tools/storybook/wordpress/css/wp-admin.css @@ -0,0 +1,15 @@ +@import url(common.css); +@import url(forms.css); +@import url(admin-menu.css); +@import url(dashboard.css); +@import url(list-tables.css); +@import url(edit.css); +@import url(revisions.css); +@import url(media.css); +@import url(themes.css); +@import url(about.css); +@import url(nav-menus.css); +@import url(widgets.css); +@import url(site-icon.css); +@import url(l10n.css); +@import url(site-health.css); diff --git a/tools/storybook/wordpress/css/wp-admin.min.css b/tools/storybook/wordpress/css/wp-admin.min.css new file mode 100644 index 00000000000..2fdbba502e5 --- /dev/null +++ b/tools/storybook/wordpress/css/wp-admin.min.css @@ -0,0 +1,16 @@ +/*! This file is auto-generated */ +@import url(common.min.css); +@import url(forms.min.css); +@import url(admin-menu.min.css); +@import url(dashboard.min.css); +@import url(list-tables.min.css); +@import url(edit.min.css); +@import url(revisions.min.css); +@import url(media.min.css); +@import url(themes.min.css); +@import url(about.min.css); +@import url(nav-menus.min.css); +@import url(widgets.min.css); +@import url(site-icon.min.css); +@import url(l10n.min.css); +@import url(site-health.min.css); diff --git a/tools/storybook/wordpress/images/about-header-about.svg b/tools/storybook/wordpress/images/about-header-about.svg new file mode 100644 index 00000000000..c2e4bbf26c6 --- /dev/null +++ b/tools/storybook/wordpress/images/about-header-about.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/tools/storybook/wordpress/images/about-header-credits.svg b/tools/storybook/wordpress/images/about-header-credits.svg new file mode 100644 index 00000000000..bae4c28d548 --- /dev/null +++ b/tools/storybook/wordpress/images/about-header-credits.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/about-header-freedoms.svg b/tools/storybook/wordpress/images/about-header-freedoms.svg new file mode 100644 index 00000000000..2b1f5394375 --- /dev/null +++ b/tools/storybook/wordpress/images/about-header-freedoms.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/about-header-privacy.svg b/tools/storybook/wordpress/images/about-header-privacy.svg new file mode 100644 index 00000000000..2d7166b84c3 --- /dev/null +++ b/tools/storybook/wordpress/images/about-header-privacy.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/about-texture.png b/tools/storybook/wordpress/images/about-texture.png new file mode 100644 index 0000000000000000000000000000000000000000..58cf58bfec1ee2b74cc75a44117c56485324f19d GIT binary patch literal 146755 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%0Duah+qaXoB?*dD9KzA;us7 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

pAeO65_CqOpUm?EEM#6AB2zT?Z4#9NJIODt>%P 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 V(nc#<;|$O&22WQ%mvv4FO#t<{EOP(= literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/align-none.png b/tools/storybook/wordpress/images/align-none.png new file mode 100644 index 0000000000000000000000000000000000000000..b72df647167196e48c02f9990c9443373639b01b GIT binary patch literal 417 zcmV;S0bc%zP)7?rZd=6fc?m_9K4Qk0WdRFb$0+zq)P?m$O*$hWiYc+O3pc@6l07rmXNz_$6q;&WBEDlHq$h2W5yX& zHRmiMoaO&ue%xJ9g>6hGKDc{I>Et{|=*vq58VCZrvIQG}7~^B}x5ZVLPaofKuMSQ- zLfVWKdGOCNv#;;3x?I0|hBay6_X4{V_tcZ$-7oc5%NJd~ES^JC(1t*~{Xx~i%pTWQ z)z#uvm+R$g+HXZL5Z2>&oB^2or>b)oR?C-NK7V-2p~A7Yy~9-E0Uq+te*QPVn+mie zG?d%0QEYJc5W?mEA_CT>VkY1sv;&l!Ds^!8ob#nPfNPhAC4r4sXBx07W!I6-tyxKACGf=g>wDkHa1qQA~8xsAT(wna| nFj&owdR4g5Igw#%FVOULmxHx0skwgv8pPn~>gTe~DWM4fggY*F literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/align-right.png b/tools/storybook/wordpress/images/align-right.png new file mode 100644 index 0000000000000000000000000000000000000000..86a1b2e8764dea8899e847ebdcbd6cdf7570a909 GIT binary patch literal 509 zcmVC-K#*?T{5;D(ppyi8V`KD;~^W=&B>g zRRJoL9(%~;a;a1*lgVVWS;S~f_S^OThGnc+2^9~i?k(P!;d6bu7!6kvTVVKU!Epci zJ|WP%dnp(jkWf1amv+`IW4Rm)UGHlReYR|Dl6-LOgb}C)GYf$VNI-xao(R!E&`>xp z?j&3Wy!5?(-@=SOc_PhbGdPz&U@feR!8fp+Q-u>$9FGUPlT0Sl=``Df`fj(&y%bI+ zs0b{`=;UF6nA4FLI5T4aPVndRc}QT70RJIq=k7(T)uQq6`K1Tn4%Yrl#bo$D`@Vvh zn~wIvUF0#qns+^L4fy!7-|zpZ_!oSGSq{=KU=>uh9B;4*00000NkvXXu0mjfV=U$^ literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/arrows-2x.png b/tools/storybook/wordpress/images/arrows-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0c53d1a6b1988f8a8a079cf58c3fdb4fc3596f GIT binary patch literal 863 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

hc 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/bubble_bg-2x.gif b/tools/storybook/wordpress/images/bubble_bg-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e34e01dcd4ea0b9f9c5df54811e8ddf0e499690 GIT binary patch literal 424 zcmV;Z0ayM+v( z$>oxE^US~4S}>@!!2kdMA^8La000jFEC2ui03-m&06+x)@X1N5y*TU5yZ>N#HDqZ5 z;#i_->%MR-w?b{-iHy&D@BhFcra&wjbFrgv$!t0Y(5Q4kh)t``tQKbKmKIzuYt|TV z&uGwXZ8N~w0^}^7uG{a%d{F_@7vwU3cY}lvQ-@G6h*UgKScQ<0l6GE|VU;9cmtC4N zoIjb9qNAjx8gOiHs5Ne?Y^^#susp1$wzs&srG9#SyhMDydclE4#5};d%FE2Ui&Bp* z&jSH6h}Dfz*gn+F-rwNi;^Q2cU7MH;=w90{=IWl6?du0VUGwn`^*|)}Jp1GV3LHqV zAi-5PT&)_Q5RShP3+FhbwZ?&uH4k6dun43^#uyw`4T>B|vZTqAC_DTzBJ3A}mU;|) z^x$%aADPJVyzF5Fr;j2#e-!WuBxuT`NRujE%57Sr7fuHNN->SV%nr|{x| rpEX_WVyVCtX6fJ(#%K=K3lAO^En-tyx=7|ZTWv7gl4vPUM+R#EPQs=l literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/comment-grey-bubble-2x.png b/tools/storybook/wordpress/images/comment-grey-bubble-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0eec4a6df0c365e51d6de1a9c218d5c6621f6d83 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;6Yw0G|-o|NsB**s-IyxVWgOsIahb z=gytxagVXBZ3qj*GX`KKt?1;%yNd7fqhBwvRu7tMO!(wW()Ro~u@)+M|ANpZPfg z!FH$j-gMTOp=wwi`PA}+T=6b8PNQn)wOjj-nFOun6ck#~Vf5-uMHYXuwEz5HZt9bh zE3Ujfu*mjBoPJjP*Zk*^`Rd_&zxvk}Ts^)xu8z^KOy}xf<%w&7E@kj^^>bP0l+XkK DT*hQ1 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/comment-grey-bubble.png b/tools/storybook/wordpress/images/comment-grey-bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..558ee8f32dce370bca7686ce2604099cc3eb7ccf GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=-3?y@QpIZW?*aCb)T;1H literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/date-button-2x.gif b/tools/storybook/wordpress/images/date-button-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..281a6654fa4a38e8a4876b1060af65e5c1adbf21 GIT binary patch literal 996 zcmZ?wbhEHbRAf+K_?E~}R#vun@#5Uv+*`M9MMXvZ`}gnS#fvXrzWnp&PjPYa-@kt+ zPMla+SorJLud`>*{{H>@^XJcbd3n#DKmYmj=lAd5-@kwV^y$-&A3sJ%N4K@LrKYB4 zWn~>ceE8Y3XA>q&c=P7X+qZAOe*OCG+qW-YzUszp3!ILLX zwr$(i(9jSO5s{df`03N9(9qCXvu54Cef#0Vhwt9K%g)YradEkF<;ssAKX&Zc@#xW` z>({Rr6cl{;@F6)lIX*rePV)2aX*(78n>96cjXf?%da} zU*EiWbM4x-_wV12iHUjf;spaOf#OdVRtAPd1|5(kpg3`0|KE_<)ZEO|*3yyK#?#rs zBg4qZtz%$jpd&YN)}$%ZW=xdnY4P<`RN`P}TD6LqLuAG3H5^Kcik`k5_MYBqiYqs+ z()QecfZJ2Z)4qfA3@48&Z#b_i&)Ku*FJ8WSwnNa9^})kOkDomB6zmA_WPii1?75m* zSpJQ;C-<7qZ#)A!Bs|%exMVywEI6PdA;o*E;Xr2-FPEfM%L)UZCasBnDK8heGEEbn zZIt)shhflEmW~w~oF_M_daH&AT=lrL;2<-r=Olr|r4J6CofBJeEoZ_KHYEj5t&oNf z3h8^;#b-P_qMpDIvedIdp=hE@J0GX*oK0SzlDzrngs`hf7CLwciFf>8rZRDpGwZoI z6~#^`PJd^bq!Ro`P{L=&hKGmSgu{9qm>4-rdL^veVkS;#Q!$#95l~_I`B@jIOvkee zOos$GbS*mK-ZpH>yt2x5v5LqO4;6liq%$3fD#0Fic2)ki6JinM*Pa-(;KTtLSFUNN zW~LX&o#g7zvy92gpV_==fx4$ahx>vB4sooHPtTX1|Acc9ucyX?3Wg-stE;%wF2oBe z%wv)f37Ej*+AQKI#v;68!-3khEfXFzF`O_u#I3Iq$f7j8_5&k_sDP+Hvq^zQLX<+* z3P~k9mBfQxvU`Njv#^(3Xtd2dc%zZk^T&ozp|~>+%^b`E!bcetL>QhhSaTXIapV$t zz#*>aqjHc{NL)a;+aPRR5>KCx!Y5ZD^E(@wIfb?y?qg9q;jnBbdxPQ;p&*rytV%2& TQlHPQ5DK_CuZByAgTWdA6C0^+ literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/date-button.gif b/tools/storybook/wordpress/images/date-button.gif new file mode 100644 index 0000000000000000000000000000000000000000..326a7b71cae9607a4b49303e16241c19c26f9acc GIT binary patch literal 400 zcmV;B0dM|CNk%w1VGsZi0QEZn+1c4_Y;0RwTYi3ifPjFIkdSk8bGW#;aBy(-_4R*$ ze~gTbZEbC!prF^+*Yfi6;Nal&^z?aodF}1(V`F1{e0-FYlxb;c=;-KPUS4)~cKG=C zC@BG_xJbP+uP62&-V8Ahlht?U|`zX+Un}+*4Ebl z|Nrjp?#|B6@$vE4*x1I##?8&m=jZ3#+}w3_b;82J-rnBJ%gc_AjsO4v0000000000 z00000A^8La0027xEC2ui01yBW06+$)p%BqB1pvDon(|SZs2@igN4=ox(7cCAGP&6@&1sE+CLLM!b zn34}J8m2#P%Fn! uA}s+zA1y2n0Vpap)F>k@A3`ZDGbIo>4kO|a04*s(83OL_@a`EqK>#}%Xt+TD literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/freedom-1.svg b/tools/storybook/wordpress/images/freedom-1.svg new file mode 100644 index 00000000000..6e4f2575a17 --- /dev/null +++ b/tools/storybook/wordpress/images/freedom-1.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/freedom-2.svg b/tools/storybook/wordpress/images/freedom-2.svg new file mode 100644 index 00000000000..f006ca1a53c --- /dev/null +++ b/tools/storybook/wordpress/images/freedom-2.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/freedom-3.svg b/tools/storybook/wordpress/images/freedom-3.svg new file mode 100644 index 00000000000..c01e6f2cd43 --- /dev/null +++ b/tools/storybook/wordpress/images/freedom-3.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/freedom-4.svg b/tools/storybook/wordpress/images/freedom-4.svg new file mode 100644 index 00000000000..ff9a8d07e8c --- /dev/null +++ b/tools/storybook/wordpress/images/freedom-4.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/generic.png b/tools/storybook/wordpress/images/generic.png new file mode 100644 index 0000000000000000000000000000000000000000..00575a078f994dea08c3c3cd0a46d1c22366fca0 GIT binary patch literal 719 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 n0000000000000000RO-{)1@R(K735+00000NkvXXu0mjfxlSSx literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/icons32-vs-2x.png b/tools/storybook/wordpress/images/icons32-vs-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54e2fb2f5fbb483b6d396fae843568c41f110dee GIT binary patch literal 21396 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�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 P28p!Q^`BQivy1p2jwOXc literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/icons32-vs.png b/tools/storybook/wordpress/images/icons32-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..e46d6bebb78eb85988ad28bd4c9e3f6e98bc6118 GIT binary patch literal 8007 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 C-$~~H literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/icons32.png b/tools/storybook/wordpress/images/icons32.png new file mode 100644 index 0000000000000000000000000000000000000000..e491b1a8d28b3b3a0b8594166455b931281a0414 GIT binary patch literal 8023 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 BHO~M5 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/imgedit-icons-2x.png b/tools/storybook/wordpress/images/imgedit-icons-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..98dd4124047bff2b12a5d491281e09c009b2f3b3 GIT binary patch literal 7664 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 G2=+hKXu@Lv literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/imgedit-icons.png b/tools/storybook/wordpress/images/imgedit-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..0d544ee9b83b478c4fe73f6a9c7b02db3fadfd3e GIT binary patch literal 4055 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 Z-hU36-n|G37`gxe002ovPDHLkV1ka^55oWe literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/list.png b/tools/storybook/wordpress/images/list.png new file mode 100644 index 0000000000000000000000000000000000000000..85d1295e8131f8f0f3a4c9bc53fa2b3f3d770abc GIT binary patch literal 1003 zcmVjg5`Awzjvox2~?PudlC^l$5Zrur@X}j*gBqGc!Oy zKte)7U|?WjVPRxsWMyS#Yinz4Y;0|9ZEkLEadB~Sa&mQbb#``kczAeud3k(%e0_a= zetv#{fPjRAgocKOhlhuVh=_}ei;azqj*gCykdTp)k&=>kjqokyyrKP2(r>Ci@sj8}~tE;Q5tgNlAt*)-FudlDMv9YqUva_?ZxVX5vxw*Q! zy1To(yu7@>zrVo1z{0}9!^6YG#KgtL#m2_Q%F4>i%gfHr&d<-!(9qD)(b3b>)6~?| z)z#J3*4Ee8*Vx$D+1c6J+S=RO+uhyW-rnBd-{0Wi;Njun;^N}tFMg~>g((4?Ck9A?d|UF?(p#N^Yioc^z`=j_V@Sq`T6<#`}_U<{r~^}ug4=r0000H zbW%=J06#xXPE%FM$?56q>+J09?PoCh2><{BAxT6*R5;6Zl+SAuK@`W|yqO(}iYM_B z5Va+^iC#pcwMSdf98@ZJ_D}O45X6HB^&lwPgOoxkTl+%~dQuPZU`=*5JImn!^eQy*_PuEM7=^M{{*?r1wU|C3K_PFi} zI74;Sxq!>#a!u0#NWq1Y3~zH?=~%^Ow0DMId}Xff#bY0CqXI)k;!n2Gt$d_dJIxT6 z+I`o@DHWPK&^W>>1)0@>VeKn~cqxo4tTB2RY``o@aNo@1|Yeinxp zNN1{FbKN~k5*TLQuoqXDG<+DpHVK_;x$t9hm%PZEp$LpymM>?zM=vNI5W_^vqBl1b z3VP~RV#*us?FI$8gPpHez-R&!SEpGtZ;u{pJS%JhQDw}QmlOcE;t60Wa{K# zxvVDDWMYMs87jSH;LqW5Y3iyXrW9s+YYgN1hB4!M%4DXqT>~TAH)UB>wH2t8*4f?| Z{sDKP&y0=cFCPE^002ovPDHLkV1i3i7!m*g literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/loading.gif b/tools/storybook/wordpress/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdc589f80979337f9c866cfc416e88826fd311f8 GIT binary patch literal 1372 zcmb`H`%hD67{}jp?ddsC4_Ir*khQfHbhUIuGm545a!Lz$DX5GQvlXaPB!;>&h8IFl zyAq|KRU1Q;73{`_8lx^Vm;ebm3vxA;G@!vB6quWvyLaziZ*T9=(9p$;7stoPA3uIPJw1K(>eah<@6ON9I~n>79?AV3nW9!EXLH)xyidjq zp4MOHjQn~NiLI!#Auxs)0n~}10uuEdU0L50BDR`OQdPV$NP`O9^snHXrTPVe$XkA`yoTos4Wr&EU=pq`0QVbSITC`ptl9k z3o677Uq$&%)|>M!Xc9Z$sx6InaZaQ<1+G_$j*sAdd&c_LyNDf#FkC1)~^An zzOu8WCGF{-QEu1yicMetJXR%jnDx772P8JLbP>qMIgS$JfE0)1GWJB$ea^PlQaTds z+$GIAEbL;FtT9a*i#X)RpE7iN!nK_~u-UP%DP#{>80nAKrVsJ?k|VXJQen$W8UIDn z0N}O5V>4ucQ<>MR3rCMn!5Ovo z+w&m9o8ht$2aKdukfF#Z!T6P^0>BCd3G;a(LP1b`!f)&>KS+U|bH*aeORK~I%JoX( z3T=qX+DH%apqyZWM<>ptdOd@!z~HPH{Ty>3kP>B4Z}p5zh}Km4NFmd8Q+CF>_lv+y z$*jEB_-sI&#R$N-@o;M37S3WT0}jU+_{Mf2?t|UdK7pt>A$=Wv1Cz3qEYSq9##oPl z&yz7k14t2hq9c;`d<^A=Oqk5qa!^vb$-V7))+Im*aqK0FZ1k-s`E2OqmStoDnV8Kl z%+dMx>AqJBPuRn_m-aOfk>w4k(a4v!F5G*^7X!-E9yA)HY2jgT-e6azQsN!*ow53!ID5xT&f~ zd^2?^%BIlrEp6W#ZD~Z(Do|HZL5J7JUGhCH)I8!tttu5>;8&F1}8_y|@DcV+Dh z=WOjxTsSRQCVnV{Cr$l(QrfA~8^We!+9UQ|5!1{-_Xq6Mik^QoeEwHJ+(Qv?Tg!{f z@b9GIf>R$IDR-b(te0hldyU1D`}btByTwm`aOqNp6R##U!~Cie>+hnq9?5l~^i%9L KNS_RW4SxeY3X=5z literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/marker.png b/tools/storybook/wordpress/images/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..30313b871ddb76755ddbec31df04e2c55f0f5647 GIT binary patch literal 360 zcmV-u0hj)XP)gDlmm+ghLI1)k}bhc1c_^uB6J z0hP7Z9B06gl7}eHE_H{pRcUq{*Qq=tFe#MQci|3PkMgjDS;flAQl)_it{Zt6<0DV= zg*x@cQZj~XPabS;9HIo$YLd^=WavH*4)gM{$a{eaQ+=Qr^=LrJ(ETPD^4RiG!#2(n zX+~)$LX12Z?ikb;8d;%;q0HfoA^pTK8LlYt#1V1o^>?4M`P)VWqP@`o0000rIT>_nGyL#U7biEZvI|%Tu{Yuh0$6T>SyOO&;c5wX+h-1=j zhh&lFwFY3T!m)E!*6!+a$+gFUM4tiRBxoneJ)+lL0@`8apTiTQ=ga7GC-|=dLeyqY z6<1^cv$2v)ss&}0wPb$;b12}BjZA}_*NVnRjaNvyLZGYHsEoJ3fL2Cf3$L?XqE|LW zcG2%9cuf}ptQ;))&dTsOuurg}w=sP?LSx1g>;So@kb;f{3QBgaSpnG&7+;wbBZOtZ zRDo9s%Cya79GgBWQI_eG**uyMx>|%x%$u3t7Qdr$%@iq>qx_S=y~5ll<^1-qHCcR@ zqLv6fzxm&3+gDFn?O4&Z*o%zK7|KbRx1=yf4Gd9NgBbNSqS&xRq&P;_ij?PLhY=`P zB}+-VM$Ykd!xmkO+Oqnj=6D2zsJmJw1hAG{QE(=Y2iHz`L+YBcc^n0Rx~)kiCh|&! zNF$08s~A~y_QjUVswY4MdQ~NQl7y`B?E0(5Ns$ue304>-q_G=0g{%l5pO8AsCmxVr z0p2p<%Yvin0qq8vD!e5_fhR1vA|ndFFXv&yml0=KR%pw#vt;fnEZ>ki^PUV@>i@$; zpM3~H0XVBj1{j6}BZ;Vb{&J4Y<}oUX?c!^;$OU)F1ktdJB_#`fR2ZBfgeeL8_==Lj{dwdrH79h;x ze$^v7z09MMm??oRQB_qEI1{>7L6oZ_x#>GqJ-JYhdNMRI#5$3*)j8$O z;|NZUm784b{rjEp5Gu3^L9>wOqV>B%^dnIjG56lp;^5?Qh$q96C$D)SCsCv@UkEkA zQl6FUoXa0|cS9yilNFgUiT z6JZumPnOdx*%T=#TE?!#%#@ay61M9Y#S3x+!ZFL62(Gf22i1~8KcDI*5{;1n!kWG# z<(;S$&}BCbhr<&cz-7AA|p?~)&uQ%(r%V*Q@g(grtkGnHR z??@2V33gWA5qS!uXmnJP1p&nRD3Es7ZDlZb9^Wo_;^UOk8B%Z&DOUBA?0sqb`)Rum z^!aWWhLorZQ!Nw3F?%NvcM!ll7qETq>ur(7IN-l=Y(J(LIPTh9);g!TlisUh)2pHg>&f_(IZ}R3)(~6Fb%fQCO(+Di0_6<{7wM z+Ye7c!IC@2R)Oz)(-4aKsj^K=;_N~I|4yxrm!v7bQ?o{@K9u=9{ zYh#w^)fhgA9FtKBFER%kQrl!+c}hj7-#q3O*lc{d{o-9 z^Y6mmXdwCSeoWsHkrL$(X2C(0p&-^^<){L8=Qt{ST`ADX`K)2=xIo{r+NZqY$8Io& jJ3hkz{D;5KOMU(U$~kl8WzRKR00000NkvXXu0mjfeC@PD literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button-2x.png b/tools/storybook/wordpress/images/media-button-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f8ed4df8c50d7e5085d3b7532958c1602a62a3 GIT binary patch literal 850 zcmV-Y1FigtP)UcXxMqczAnzdwhI+eSLj^fPjL6f`^BPh=_=ZiHVDgi;Rqnjg5_ylara5nV+AZ zp`oFpqob>U3S z$H&OX$jQmc%F4>j%*@Tr&Cbrw&(F`$(9qG*(bCe=)6>(`)YR40)z;S5*VotB*x1_I z+S}XP+}zyV-QC~c-{9cj;o;%p;^O1ugww2>+9_7?CtIC z?(XjI@9*&N@bU5S^78WZ^z`-h_4fAm_xJbs`1twx`TF|$`}_O+{QUj>{r>*`|Ns9e zjNhFA000qmQchC<8z(A1NT{o>2q322n7Ds5&&T7Hvq_E z0sM5a6Sl4M6AW6;tJ7#UTgVeGz^~h5=ecTE4ASt_#2$cZPnLOm)2ex@BQHSrhJJm~ zvTa*gn3`Hp=&1TYMb|Ei`KD>6qL>gIO_`>J+^@RMLHV+Do>Lmy?yR0kr!#tNU%NxF za8-V2Kn||+S>@=!DaLRvK0hDN;klxQph|lO%658dbK^xGBgcv5<-`#glT`#I+KUMC zdpkROXJnKCdP%DJ!L({z&k3|mLDS}g6ujA8U2HYuto_L9t=wZN}0tiJ`v)R>1h)uvI2#K#5?&}K&-N}B> cVBqiG0De`Lwb`RaBme*a07*qoM6N<$f{hp1UjP6A literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button-image.gif b/tools/storybook/wordpress/images/media-button-image.gif new file mode 100644 index 0000000000000000000000000000000000000000..69efa7b48428fd97cc582f737a5e85641cf8a202 GIT binary patch literal 200 zcmZ?wbh9u|t5)sXx9`}oW81cE+puB7zkmPUy?giP&!6n^0ZTwev{w>APv# gOx;Hv^(G%}a!NUyx1O8rK*NR=w>g;`6j>Oo0rZDj^8f$< literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button-music.gif b/tools/storybook/wordpress/images/media-button-music.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bcda105c6f50faf92589809799ef7610628b7b9 GIT binary patch literal 206 zcmV;<05ShZNk%w1VGIBa0Q4UKnVFgD>gt!5m#?p{v9YoH`}_3t^w-zdd3kxXw6ueR zgUZUvfq{Xir>C>Cv(nPiSy@@XzrU)gs)>n-`T6UQl>h($A^8La0018VEC2ui01N;O06+yx;3s|sc65mZYysg7iYRD?mW|(* zZJPo#8{Ebb=~OH^Ax^ZJTsW88=YfDAG(w)1r!1Wk!O`Y`p@@~A){8N#c|=amB15%e Im!A*-JB>MNqyPW_ literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button-other.gif b/tools/storybook/wordpress/images/media-button-other.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfe16a83dfd79b58d30e4baadb003e23a8180dbc GIT binary patch literal 248 zcmV`?j{W z@$vEJ=jY+!;Q#;tA^8La0018VEC2ui01W^Q06+zG;3tY2F^+;mXhY#@UE(BPz-UF~ zRYewIpF_h#Fkp@bf(KCeP&NUG#p8f%HWbmrumE_y8G+>_X>1}JOyqPDL)ag|1@Z83 yJdewT_UT9#9f5%Z4g((w7Yhd*jEn;l7YZL7ViOsc8V&|cBM1l#9-bE?Apkpik95)i literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button-video.gif b/tools/storybook/wordpress/images/media-button-video.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b4a7963ea486edf7abb7414ee302e126a2e8641 GIT binary patch literal 133 zcmV;00DAvNNk%v~VGRHb0P_w2fPjFVot<%UarO1}>+9=xcX!p*)qH$>;NalT&(D5- zers!Mr>Cd?|No((p#T5?EC2ui01W^P06+vf5XebqY0Y7saRFF}F$^Y&A!!0+>yp4C n&-4tUjoO^J&ZEAAVn{414gyR-$!rJ)1cV_$r5X@~K?DFh5`#E~ literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/media-button.png b/tools/storybook/wordpress/images/media-button.png new file mode 100644 index 0000000000000000000000000000000000000000..752ee452321a701ffd061a1a1c4c527a5f0f7667 GIT binary patch literal 323 zcmV-J0lfZ+P)kRD1&!vGO@CAXsUWLQ5?~Y?LdkEK*PQAL5XO^|*zP ze;nr99nc~oCI|vL!1pUyzVBE6B;+ZW)#O9k_noS$LYk0^jql$s&IF1il z(B!V`AagcNLrId5=XprEhy}}fSG-|$k#QiO9OK&f&tE8B0kfKn75-MaD6WbR#V0_G zp5r*Ot|k+iQNqo2-EV+FL+@Nx1CMbW37|Ihp2^EF3e*kJz?-zeu VdC9Lf9jyQW002ovPDHLkV1n4Ni%tLl literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/menu-2x.png b/tools/storybook/wordpress/images/menu-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7131763a5932500d0d8ff100554cdaca45809c42 GIT binary patch literal 12672 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/menu-vs-2x.png b/tools/storybook/wordpress/images/menu-vs-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..99b382369ff8f15046cdb9c025f8c8f75c6a60c5 GIT binary patch literal 12453 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/menu-vs.png b/tools/storybook/wordpress/images/menu-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..fe281087de4f54d09286042dc6476d58ecb1ea61 GIT binary patch literal 5086 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 AHUIzs literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/menu.png b/tools/storybook/wordpress/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d15af82be524a392fa4a0104693f87315d859d GIT binary patch literal 5039 zcmV;g6Hx4lP)EYcz6H+ z0EmZ$DLYawJyC3IY&;(uZ*OlrGbDe1e{ODWbaZrncwi|!N;)+*GCMPLb8#3A3@$)u zXlQ7&va%sZM+y=MU0q!_KQ|>aOM-!WJ3JsqH8DUfGEYb*baZrMV`EH3EG#k}Vq#(? zO-+4$eR+9#HAQk!FGm|R87w+q3l0@zWMWlLDrjhEP9q~+OfQLvi8>}DB1uU{MITm4 zM>IrpBuh(*ii$QL9#v9Bs;a7LYHFLCn|5|~xVX4fG%%&5rAu3dU0hX5OG~)8xVgEx zN;V-{VOIbD|9*ac=;-K%hK7NGf$!z*b8~a~`T0>RPTbtw^z`(>!NKtG@YmPZii(Ox zKqRN9r|awMY;0`1ySx4U{LjzNd3kx$)6>Pp#Uw6D%gf6|DlWFRwc+FAS}#YEl9HI1 znB3XikB^QyLO4oMjXXUesN&=7+~%$C?@>D}=H}+|#l`2lyOhn%`uFgiot?G4^@N0k zft0dBLPOZDv7Vi2pxN60&Ds6;-T&3!CpuBQ%<$je-;Th+tgNhkU3#Uo*uS2<#L@G) z{{Et(qSVCGJ0>f^zOsgDL4c5z-QS(1U2Ql_V9&vJny${vtyF`uvi{w3zM@T;dwKrk zkxyQOvv`Ky!JE?1m6MKT(y6G{<=?Nr-&!$zM;ah8#drwbwQfl7W!RF7> zvDw?_;l-7u$@}n|Tz*2XmZ>--9IeRb$=u&UtQ49uiBe7tdvOn`?RovV|T`G z=Bj~vTX@#z`p^HV__vGAm~*>@FMwckkJpE0ca3CDPLrFVl-H2L00015bW%=J06Y=} zD&`ytG9dC8#X&%Stqwja>>h1}HJ`XkSo^DODuhx}lK=ZhfK}}2f8Bq>)YFyE!~6E4 zyu9YsWc^|9=l9p-m+J4;=AN~KR@s(iw(@krm*bVt_5Q504eS5_5Clm?K~#9!?3-&) z6G$?umAsl zcLNy4z`(%3z`(%3z`%fE=GJ_^wfS$~FPnv7%a?y>Pivy9Yw|v~1*N|s2+@OW#A;uH z)e*KdU5Le6zX4y?H7w)5hlg!K4ckzyE>fw@a;X*#ALU|LNeT5|0}|dMfaYck3oQfF zwFnKh&_y(G9HM$mOnRamI5c+}g@owqo4UD~>QfqAGw?TLxI#BN_+H6BM38^Q*8y$e z=us^m%=y#PD%G&e8fuY9B-%9yXNDz2G}>Hh$1kBRaJ=1fb8|~p=3*`-B`%c4gt)gz zps{fGF4_aj)02f+^mcakqS{S*x|HkJE4zAV0%A?r$Vm6yGZhu*+!nmulKz+3q(iab zyXVk&KEe2*J-)U`3txP3RQwHHNLb5cd<<(GrV0*_NM158)^CDEb=9a;HC<7d z2`U~!MqahFbeyT!wX5QsDMds5Y#*#2!u%c)*Q=I>)**b#MuYvc+fV!ZQ69)>5O)IL=Z#WyDQX6KdIoC1 zhbTn1VJ*$gcdgov0nS4j{to#3Q<4)p?_N)%(9&zyN<-noFi=w?^EWZ^m(>6pi1OeGG&FZK5gHy) zlhWfafBf-FjfThRa5U^YFvC758b}MZPoC5wJrFBZU_sfas^>$4lHikrlajo=JP9uO zB^oO3-4ho7g9O&FyrY5i0P<41l#A4` zj?7ObB_5E5ix+{0i{P3tbrGS#y|s9<|LHS#WXS*)fCu-`y?aA#bmy$W`&Dzx&2H~` z_u4wB3)b|<g209H!*CrJ+ELn|c@F|eQkKQ8v5tW=c)RSICi1(~gYhFdR6`^0^v zxP;3^XaLbrQ3p8lvI5fJ(|$_r;bp@mWcLOCEg-&B)z?=+8m6lI`l_dEKwWws5P8Thm*V0mHa*GeS;J9#2(_x^712q^72ZG1+Y>DrCB-9=!(&3z*98a z0#Kr14Oc-lR9q#2HLNT(@&%Z>Jmxb2=Y?ZuQVD0B(DiTYIs0K!#NNSum(#h>EXFl>W%Kb;9qJDaydf7 z4{>on5E_1nLus%a3J<@7sLtvM?HT#!-XgVzqF%}ruu%p1E9C&Ce~`)srJ*H^*iOtt zMgvhB_R(v=obtbppxfw*D=RCHeEaPY@CBs-<4+^D&uX|D$lMNV`0m&-VTA@EWZ^q$ zS$kQxkEIKyUBmD&tRbiR;KAygoSa(+<8ojP_CuB&%$>#p$B4^|1{n!(1LUP>X!{nV zkWWm=6+wvY8^`?|!RyyF4Qc$*-VgM%u_ z262?(GBO&b?i`hr99(Ceu)0DPb=bVSSsxP&0=JB{(`fg{E5}!QKn!^bz%bvvo1Gc5@m?#13T1yKH zOIz1@KqqauD^xw$Y%Y)I3?7(JIoIBGbqu(?;OOw7q3~#Xu7Qs3 z9LB}+WU&o^T^)l@tgLi6AI^_R!1U47X|~Y^G%N-N1_lNO1_lNO1_lNO1_lNO1_lO( z+31_<=|R6p{u{8!7{lyRKeVS^q^rB=J#I6e7ypKN#_)ew;ODl1z|C&~O&9a$YaN$i zO6JBS!}suz6{{f&)w(o3exY4z2L0{x1sIkJXDi%v;$ybf zD|^Y3Y_GLubW?KSQhj|tH#a}(>(EP__4f^ldeDtaR-`49ZOLgXmY^RuCPs?~eZ#c0 ztgPfDQ>X>J1nnAPXNDDvXk54Wl*8h-dNoQt+4LL#5GzVdOx&NiAE9AseBusZA^Ed~%TlS+_T$CIW`eBwWKt3cpcoXTr3tnrrloD! zwrxwAh)zQ?o{97jkK^&`sSCX-Y;CsJsvTPaJ63sRuSMMaJ4cWi{@1=4yta)*VO&ij zcUNm~?KL%N99jYv?2=0ip=A#tkV7HRlu~F5BUxBT8VQZZ(hS1FwvM_O--S>4TX#lE zx?9aSA*b!ZA7PwBG*agQ2yl7tf{NhSbH z5?hYpuUnb`U&cZ8eN`Fzg!m$cGv6o3%Q6oU-#?Q~dr6aoV_*_6r$bNY)!HShN9BoG%iP%*)s$V6Z*Uva4Mv!7xll5D)-1Wn2;!gh$&j zxP&kagiIiu5Z92o^I#KE4;NWebh_qh)oiFKrKzwaTNy=Y);v6H&Jd!R#2(IZ6eWwY z*-!{d`5b^b-G)Jh{`WxY3%jADkSy5DjKd3ArphRgY`xKhB+dX1c6jJ9_-+s}xcY{p za6IgZ7!KFYhH;2C@dk}$i9?`Ym7nXi@V#)kWEl7`371gB@Mj316Vb(RC{pNZIM1>6 zZUx~=wCH}DB7-frhJk2Xc2~VQArZDb03;SYXNpD~kp#m#&z2^Z=Kpa1zHS0){kY7*amk zsRYA$2y!P{oy+qL-kCN#Q&%gsw=ZJw%nF0)NihsIK3&9vqZDNI2Qtomu5B2)+7gCb z8w!_Nw~m1V|4x9`Ff=rhtaC=;SQ@Pi5aEcxEOz+xT4kV`Nq!&~6fq1@<9hXvo z2BqGjh%S0Bm7}GYf{#t^4Ml~)6n*Ddqp*x-uBRP~)&Qf3N3$q`_07=seD&0cGELcn z;d_6BG$@&rT2s4}m??!iEIFXUkXnNh_!S1%6)_-g&MYZm7?1?R{?&K^Lg{8u1}ooo z*LrnZ`dMv1+(aZX^*GkeghV$IYw*$)Pbf}Z2?oTyA+IoqnG%n~z-8-aqO~Qve*}wS zY7pZ(zBlNih{Mys9`PI%j2BVOMaXU)>Ia2TEvxU14w>0mJkM)xWrVb^J)BYm8W$#pQ^xqd$spyN#of#GnVasa}P; z)=I>n68m2fRfb_Z1%|=4IR@JnFmyE!LaIGnZmenpj#$gGnCpA9O&DH?{S7R1Ki1z6 zfC@uI;wROV_OH8-6&z1OH}|8+&m}>k(;Hg-zBTMgN*Vnuy{I0BEGYHW|5R92f#Tl5 zAFm(iZ?KFw<`>4XVb%K^8tuz3e?QXSP##Ll;VISCMfUC6w@+Wce*W;G+wF9=2PKtK z^+^@hR@Go|@KAq4@9iwL?R56GCxk2(X5Tz}_D0&@(7CveDlc?b!0`X}H+;Ih{8SBf z{CCdr+ul>B>@>Qq4`&ngr}ZQ=cWt2uk|Cw1TkRx0(6Gi9`9njqh8a<6D?&wS zwpz|pCDNm(x>{W9I_;!KU5#*zJd7m1zHP71<39WB^ZD#k5U-Dxh}0qg5?xG00=4YC z2zgX%{A8N}PFs9jVk8ZZ0|p=)Xwmwg6H93ZJe~vKIPc-LkV|zp7uQ(l8i}llb!?Y9 z9$u`?Qn|YUHo<&DIq+7%dE>yR{(BDitdb*e$^-I&BA^&31Ij6Z!4(@~E(4Xo6`%^J z2Cm8#29`BA%M5ZigF7i_ODpDmm3IVC)Ve zyAx|);Pz3a`jn9JIrHE&Fuhp&9ry|STC;Kn_)XF8_+8sId$xEEn2X*1ud$toq(mYk z3N`UsM7$Rfjh3vBCHhpdFN0*AB!`R0@pGiGl2q4_)>dK~B<3+@e(At1IMXlgp3ft|=)kDH+Y3klty& zkP=@K*mB}4Z=1E~;oqWrb4NS2Mg2(=k9S+9T{kwyEJMQe2ov*~Zej~cev^R%3o!TME=DTV&l29NNI<@7Oo_V|uSP2a}oUeHDABkIG` Ga{dF?bQEj= literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/post-formats-vs.png b/tools/storybook/wordpress/images/post-formats-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..d77f91c06464aa2c880cd4f3a25e89385b6d1802 GIT binary patch literal 2450 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/post-formats32-vs.png b/tools/storybook/wordpress/images/post-formats32-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..f5653407321f2b8a3aca0d260e1aa7470d56a54f GIT binary patch literal 5111 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/privacy.svg b/tools/storybook/wordpress/images/privacy.svg new file mode 100644 index 00000000000..4267891c728 --- /dev/null +++ b/tools/storybook/wordpress/images/privacy.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/storybook/wordpress/images/resize-2x.gif b/tools/storybook/wordpress/images/resize-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..e57f9bcd69dc260f6c464aef2ef791329e48b5da GIT binary patch literal 151 zcmV;I0BHY5Nk%w1VHN-u0P+U_*x1w6wI@+1da9{{R30A^8La000L7 zEC2ui02Tli06+s=c)Hvz#5q_@IMlFwIVRO5jbBK51!#RY*?IG>_M>cIp_1t=I+Eix!{NZ!;S{mwy-W{JfC> F06Wt#L%je1 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/resize-rtl-2x.gif b/tools/storybook/wordpress/images/resize-rtl-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..483c23dcbe5abd73e157056a2e00a6d779118578 GIT binary patch literal 150 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/stars-2x.png b/tools/storybook/wordpress/images/stars-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..15aa9debfdf568eda42fcbb0e2c70c680b4b020e GIT binary patch literal 1257 zcmV=P)7t~6(Y2Y=kfwmVZ$Q7I`Q?|9n*`!t0J*88 zenlnkG2|`)p~KjCUGv%WCz|)~M0SECKLUalApRwg{VS+HQOWxivgd)D2f)yKF{)O5 ziDv&SAoK~ay8kwbZ$P7bMIWMt@OI>;9mtFWEBh)D*Ck&!wcD(%XyKNXKuz)ik~vFK zZv%nONO+$9{~iq0RJ265&Rg`ui%h+|N8XU5dv6#T^&{rg8CC! z)t{s3Uxx_bhPgQc`#}8&dbL|j=`$VzSb9Y{lurz3zv@$`y@(6~*IsNG$`v?UQ=XDP zTL=k(4}q(u`boG!d7jqR(S*l==y$;Ub9F;Gf;}x3{mG8lDBydhZYW34)mqW`NiUYW zflE8;Cp-kobG1%1J!wGf1Tbf8jQQQ5ym0G8<7eJM^haR!sm2j`$v;f35skWC2o3@> zPu|HwC+M@=%%Sc&j3=)K_c${RXvCfo$Da+GsQ?Nbv5ZABw)JHjJ?|5MPbz)hI%)fs*M z9x+J(iyxHoq8^L3qTyjLf%0p;U&gsT#7a5;q;{f-^9I}+&Ja!QdMLl2$Y>`TIaM)& z%4Lrk5&Pw}_K#$3(f_?@WNh<;q%GPO)mn7h!ysxRK$!I|>LO64Q?H^%0y2KntEiJe zcIgNbQ!lXWF1?8wcqEJK8Az+&vgoMZMC}B!iv!q*VnIkU&+0{V3riLAF>vIToh&+} z7tuZfnFSl}h;>Oms@os5Xa~!zXP0nyWUqh5q7JP@jl}zP&_f`7`7o+Qv5;g@a84a` zG$M*dD5PdkD>94y+^!Ki8WE+DI(T0S$$xOakXFC1r!SVYG%}(Vmd*JGp>@#IVM(Ww z#bjeyDLA5?KUrTlnh9y;Yq_LN^(T{jznPiufs&w|m0Yr4%SWhLww-HcG>0^O z*7K;wFFXw;L5q<^uWK#Z%R42dK{v^=MlD6paZOdBcJ^u|x|M)H?BJCK-6V^i(@M09 z3;(@hJ?E!C5~@b!F=eY3qAo)0gsKZ>=E2WxK8@B2x>;`5rMBoM7AUTTD@G`DwXf>F zGBNeMC`nbfeY_D-Thv4#aq*>Ek3z;ybd=k>_u9oPd z1ft{HxMSuJ(dda)NZ~HLYKiV8AY*{%l|r82J+2Ic8lo&~=MGh37ct5UN{Q&d=ZrL2 TL7I?T00000NkvXXu0mjfn-y0e literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/stars.png b/tools/storybook/wordpress/images/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..c01ada13ee9a58afc51489ea80a53dca6dbe7eaa GIT binary patch literal 924 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 literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/w-logo-white.png b/tools/storybook/wordpress/images/w-logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5efcdc000195ceb5f2860e7c211972468e251b GIT binary patch literal 5395 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 Xx8)O1RUP(k;sL0sXhFV%t-}8Y-l_Fu literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/wheel.png b/tools/storybook/wordpress/images/wheel.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9fdf4a37ade27ecdc9d7536f40e2b292855a5f GIT binary patch literal 6047 zcmbt&X*iT^*#B*2WH6Yq8{5oS8cTMPr3RyH$*!Url6`+<3E2jdE!k3$U6!&}h%CcX zqU<3&mTW~#Lbm4qPygfn@_v5rd)Bnyk2N<^WX%KYK-iJNm2eA^M z`Co*Hm?WqM@(Ig}f*?N!9twW@42Xg3AjFVE1O$O+0O(!9^?n3fJI>UABF>X0XhIbfnDIwPhjZ)@BqPX07M9bz;$5hcN+-6K|}`t{@Mm? z7=>g3^&kL%{{UbU0KNvYK;Qv*46H{oB!ek{LFWvBX+Sp!ID@tf3j$dJ0eT;B2Np@9-2RIpf`GNgU!`}Au?B*nATY#GIKi2}P77ZKc$T5G02B~x z0DuvY@Hbr^SOdXtf42oI0ProNZU%;tVFWP7^9}?VZTJ2EVu5pvj|2i5){LyDfC&gV zfWXL2weyT$A|=Sm+#2AgUZ9Pv({~S77H&J%RA6Ro%^&8oJV=6md^e#L->%T;C*oY} z)=bb)m6b-_VdM0SrbnVUMb!~e@nRY>P3DrBS4)d+LV7~9=3?jYUj3F^;WiJub*(fe zKBS*s@6CAgFg&X%ggpAMeL?xq(9~4xZj;H1+3eKTY~M}KZ-tHPJq`|m-@m;6y6&Z# zIrAR{ZU z7umn@RO+JU2m3`6Fhl9^Z!ojAbaoLAVV<_QUO8?AR#~b?TJi+f6wwsjaP)L;HH=GK zRR!~8A3WiM6YVGfR}WU63}g1wxen3~E=sCuE6T~qC6>0e<epLR2;fYK?c(jc@)XX_o!%Lp7M@+2{Ha_sc-LN(P*?7Kii;En49qg2Cn87D8a5UpP+n&?1mjO&1;tbhK9vR zY$_JwGVF(SdnEYw^f6HDnMhJCRJ<%Pj}R!`N)Q-5-rU?Q+QcfEHll;Lt_5?oB^=4K zHwZkEnrQV1;-Y?5>M9HV(G+022ulmysaUgddHZhds>A8iK_#gK!{+dL#nC<6Z$)Bd z7vz6wTRb}OQ9F;KJ2ljrUi(jMbIv{~ETV;y!Cgx5?Lmr3-|td3`8Pg0mAiI9z3n8W&A`Ez!!|!3<6M&zK2hz6Yzh+-ug6vOo>-DYu(Y$yr@uUp*;P_i z%{+WT$r&4^pb02yjgyt>A1;)a=zL^Cl^&{M;g+Ru)hdOD$m5e{%5#;ny1XG8bY0_; zSa`^_nyo9lT7m*nGKG}xtWP}o5~ynU&D`=nhn2RC0m_j^eU_1k+>Z*U6)EHI*J{tQ<8e-)_5*(>KCH3oB{(? z)CH#S5@X3Y3$9sDY=T?{y%hJl32vUDYm}vQP^H97ale~SAs877Pkv8o3;CAU#wD+> z-gXzpk(ntH;JHbbeyt~9`5^mX^U{s0u&pebiUm`jBZ@pUW-~!X?aq(islX}z<2!A4 zwbZrGF~NR-Rz+LPW4-9gGe3TK)p%v5R>+2lm6Y!O-`jjso>-DP_O})vq{tr)b5ejC z)|KDG)-1b~f9JzfuAgdv*YYm>coJerG`V{9@zoi)b93Iq5$*mNRg%z-WczZ$>8;>< zW#k-bzME23S7OolHz%-|%E*V+Apz{k?!`5%>H#ezG2g8cw>+3{sCBkZaiL+)OCA|T zJ)3}+{{PN)D@xk-(d%#7nZ`QfdzLf8j+Pc|P@ztt$s8Sy#tokvK7Y=!y8=7!sE|8& z2|3tCTz}3i`7C34^|M`Sr~R|A#}c}iK1&94j*Z#)s0ciR=+z;AnUhQx+?|r7?q$D! z?z>!%I$)<+F81m>0k9aOP$}H47caz!eX$Yc;Z?Nk>i9|l#d7Xz_ZC-HKD%0XA*I-N zrVcCh?b#KLxFah2+s0Cmt@kpRkJg!D>r6>48IzLgjqdT@vD|j@L_vKtW73E3A3T|q zbRy@KM||l%Y3#~;mRlpeH{le8`_M>%$o-_$wUNz)l-aBzS@2%MxO^1p7;zJMC|FeM zx91`2NE30v>L<)3-1cdzu#A% zr@0n2l$cHH9teYS*5}%~r)!d${DPW1bK+}!-J{_qg-JQiKRK!`az@_;iujsToHE4; zZvR(lH~3%x-#7Y!7Vn!rd~FDAvUIw%^0|qFp}0}gOxj0FVDFYzH1_?A-fE=}@RE`u zuT!1`irqHe8XP^5-^AhJkxMpYHTD;k3q>8)Kwozl(HJWkEaG%NQ1%*U=m z5-JdtG4Cph5f!hi`8D6NI4WGLNBm^~o{Emf%#q0UR_tE;x zW;Q76YnRn6sM5=m8(u{1ojda?&t);)hu7pRnc~!z-kF4FxkPuM((S%be52)!al&T$IhHL+lDNFf0%EMMKM7ggD9gZl7kA8km;)3cmMieRJ0u z{#AkZ(cX`O?a5StQo!^E$(D*Vob32fkG38 z0!!s#vfTm8=h*4TQwNzB&WV-BhC0fsl??oJjFLV`_V?xrAj<~vNq2iyjENfQMS)zQ zqKhi^%~qP{WiGcL-k0QuX^vgiOK@<)bR!<1Z__cTo1%*pJ&~WM(pC?h)squKMboh# z05&L7lE3hp(rz4^k=XCw)av!&n9vA7hC)?0=~_^97fDk(Vb?jk0=FT*vzWTC6>4_> zoj;cCg!>{CzKAX({obTX!WRRL5@tAbt%CU~;2LJ1LfqBiolt>A7!N!?NaVKe_@{jB zkS$l_=z{a)Eq`W0sR5CKZLYa=gIkPhPZ@=(1lYdwSXF&-r7`o?YX#yUUjQQL z{#_;^bZv?euVZavknXuN9kMub6-j?*<3x?Fy)@F z6KY1Z&XwyA@LZ_ya5ki|XTI}qpGa$KzB`KV7Tu^G{-tyDJL-I_i1`Tx1N<@EuE#r} zku$EXnO_Z!y%?(SqALc6r7JQE5^0aN6n! z`uU9xdh`O2lA6oJ8}X*BoACZ+xglA2|6b-!lK4{o`aMa6cJM}S{(?oFSC$yQWeS0P z=AmIAbBItt+C)q#9JYYE|w48`sO^s(yhp%6A~YWMh#dg z3t{)zImL9EiDy!@c9Kd|nqzC@^G@>UB^OeO0^MGkn@SNZ9F9ecsv=rJ6xC>|^M>Iq zLVQ)M?<)e$V}!b-E^@T_DZe0Tobm|5c8#$OW!{i11aYn_<~WDGFxZzKHO9pINu>gZDEjx_2CSgG zMc6!}QA6BVFz5Yxmeb@DPiTIb+x$*J%oVKz32mR9ns!oqWMbotm#Q6UAt zA3k!+sOWRanf1fzx`;fzbgpAd^=8vvKJL!G&gH1^uR{WJaId+TOEgMiEf+hNZ)^wM z)vwu={IX+uN>AK%U+4IkK$StnFx5Pf7pK=Zsv=v@_Gm&bIBh-P*w|?MTK%q%{3-6| z{{B8~A9E6?6uK=P6zMPKq1gusS66uPmQCCiwEEp2w~N2vIPoE^(ceQ>|e2#|DjKSYXZpE=W#u1Rp-)`KDdZNioD?!~S%SSM+M_k>=65k?E2 zEn8-#BOh7E8skC@6wgLIybqVnHo-}XrDQ^-A!n827S4JX_PD{J(a(FR!z}9n`5zKu zTJ>A2do;#Iw$dV$k}67~KvCV>3a2FGI>X8mi@1!SG4p~6As*7!o%mO;URhyjfZ7ti zhqa`RPolUsOOn|EU%U8cD=xc#8PB{GU-HGzim!&mel80ayGKe{4pd==30eP{ZZOJ| z!*G*w79%&~Tvv?*nMLrXkz5bvVK7`r_Tb4T`W>T{&}Meq63gl--uflIfwy~D&(%OS zw*D>lCfl$-6ih+LR&Cdvy1*LJ3F?+8yR}~WZ!_z{NKAb2o4P-9@s760rC+A5b2`Ky z`bC9>O2-|&H@XCx5=+Cf&Fk3!{pzQpj?+n_1k~k#0QI9VYY0MO3jX{~O zx+y<&j3Zz02#E?gJ?sTPbtW`C{I(RypYJn|>lIUVso2PjYw5(cXK>5ajlCSgMhoV| z%}Zx8pCZ*aRN0k&m9!HD&lw8xOZ(CSx9vKHjwwx?H=gq6Fj~T(6*{7R2TmONYulUsI)9SuKiK zvQrjyjV5dXR`^0zGVZorjXFw0UleiojPMF&o9&?v!xyvDg=owv`+|pbf4P* zc=Qx~r;nEp3rU>E`Lgzyq5z_aG~Sv$Wnp_;Mf*@*$RM+Edb$_)%YUs#y)^U;Bp!d{ z*-Sq0x#PL?>>0$&`zxIHKa+u;*1(@ak?W$8J)J1hO8I%Mmqkp`63Fv}^2*IhVh9pR z4h{H<7K9P^VJfeWO&vIW+yep^88-+NeYhBm4WTUdW^!xlK_4IG~dsH%U0NoyCZJ+Gs;7R+GF%l9$7$e55FN`a z9VXQ}5xgcZ1k0!T=2>aicE*~Xac;hmVu}gZ%prRFU4o6d>>9N{N>@oCW X)9&Ogyvk+9EhAuTXilurC&m6he)eAo literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/wordpress-logo-white.svg b/tools/storybook/wordpress/images/wordpress-logo-white.svg new file mode 100644 index 00000000000..682e80b8d48 --- /dev/null +++ b/tools/storybook/wordpress/images/wordpress-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tools/storybook/wordpress/images/wordpress-logo.png b/tools/storybook/wordpress/images/wordpress-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63b0379613dce1dd59a81a30cf98fc23275751dc GIT binary patch literal 2480 zcma)8X)qg#7EWr7q7kY{v77|-b; z)4(om@w88aP`vK%l`btiE4O=$q92H-T3y!D-Yse|h$D9paF9%Vd&$l&t7Tz+F74&n zQ;meJU_h;OuNGC)KOt2`N@y%^osXAju=|Uu1@2^}&x;eecnjg?e5VsNKP>M$ z`%*I=^fE=?_?i?-cLTF}k=Ehoer9MsTfnO|4OJ!!1J%a#Yu^evnJ4!* z+Y39iPAFSVqcm^OCFM#s>dGj!?-$q`V+AuHTgIvQ7?Z*o;bjK*LmpMzfakb70Uv6Q z8uXz11c0(;5N|!U$Y(yB%m4_(*J6SN62C>w@@KoGFt0@s^r*|My~4kYsJu8f2#8@I`#F{xX5=X6%If0xnH@>qa&&VXJS4xtr`PEB)u}^aTOk0qIuJElq=NN zhQyMez8!n{csV6@(9fek%{#0>DkCm#!yH(y1L#*mf5TMpFJdC=s=C)KYqIvDr<`}z z1dyuOidPl4#W7#(nf0Vy+e}A&3&T=>r%}qS<5fxG8RQ&4Vp>205v2(PIp^n1N|Zz% z<9f8;nl$3i|CMz{C=_jxBQ|N2nu_aEv3?Epuk5}wabYPqHW!keh-*InPW7nVSTo8@ zqUh1sxe*@yH!%qqm7^T_A-wTV-*pax+V^8OA^P$)zz<+(7%8gt1zZ!$7ot6S8Y^DD zlypzNm{P-b^USuW)+Z>i-L}QbO=4TTb6w{y^6iF+r!dJp#wX}mkxq7CB>QIgcBe^D zZU1&t9^~@is%T6|$49ESBQu-*b?J^A=)Rl@B&{`mc||=}h!BtD6ffUkGe~U4xH64G zG7J9D8}E>8IA;yVcJd)Qpn<^I-4S8vaV1m6tcM+#=6X8GM$YH-(!=bv99ewxDk-k* zNPd@IL1L;UJe}LmK(q0ZvP$UgEkX9WOF>3e%Uu)r=NBQLIb;K8P`ke0ho z`5FpMp}-kYx@;_dD_>f#bd%Eigjp;;^aw*(v*`dnOQ)Eq9WxKoEzfB2<{64)tNig z!`0~fZ=IZelU%i4_3!ajj`I~lPa%1UD6(YCM%{YcANDr8&8!z#B`3@1>89K_f>`#t zx|}J{!o*3$$Q{N)4fH<}>ul8Ik1FYjuuLOgm96M=^@m43mahI#fz;M{AwaG1aKQ72 z556CjnG#@PtVd%o{<02p1AMCnCH-_77rYX_;p6!2Qpu)|qn;Oh&3;rKaz!Cc^4Z|Y zWh%ISH`9*+S1)4@3x-bK@wuqxSNI-!2j2tZ@C#Y7CWE128iuORg%O^{x6y5i-nJ84|U4qQq5IevTdk2g&8IGWCrVd)0p>yleFMd zOrMhetgH?^lqZrivtQmQcwcse7w5Gf7=+ICQQ^<0A8T1siO~0~$pV`9%NnCFRcPn0 zr9{DGYei<2^OG5kOA!`nd3D=q<*@p)4POEG{m~bI=t2i_uSkFlOC7*0EI}=SKEfKr6jE6ZE0Zm<9O$xK))eU zQf86pxVW?w@XEMira~g95=3`*lgSs8Y8P?(XL|5a(Z>U# z2g;1iqE`oS!MFLKmG;nPCk>P \ No newline at end of file diff --git a/tools/storybook/wordpress/images/wpspin_light-2x.gif b/tools/storybook/wordpress/images/wpspin_light-2x.gif new file mode 100644 index 0000000000000000000000000000000000000000..08e47e8211c4d35bc7dc5d1e26d1f58d81e0037b GIT binary patch literal 8875 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 yN$IV4$)fzIM%uKZ`7`#>jfqwJwR8SH z?|Yu-eV+5~&&|%|QH+1%Xpx?Jn)>!DC+U|=8^3Qf$__gA6=zv@r(=lH zB=H%pqChN2+iJKa(?;HzK6kVF(^D_J`MY`RBrsi~Y#)EpqW8>erYqAjU^mv6n+*A} zJ>uO8x^oVRS%dL?IW@zNHIPxqu(3SCaim-*8#E|mG(bU+0O2D{E$Tc60Z6J5#v~Ah zb^^Q7&T08^hk<17w9{vBm7&!@{Y=1QpUg9_>I}elq|BiQD5?Uy?v0r94jCg6(pXyG zUYDUAb)A|iQ8K0<3RU9byW&W7iK?v zS~)pJ6LVq}{6QC4!|@u?u!udW%Sh{YV@RT?<+DmS1e053o;@uYcu5epL_w8`F#@Cy z=nM5=5C;JS85$l@1^L7q<^hLnK+&rPC`kv1Rw6;VgBYCeNBA*UYBeT^*%5-G;3}l} zCh-VQeX_Djg4!Yz`RR%|p}f$pXfWm%expJ0L(zZ$1n|lQWTVYjtgB2nT^qJ8*XgA5 zU0*zH%NQz-rWdzE%HCPM$A+W24(sGK?b1;AlC84h?_ccQ*Yx4T#H1FPAdJllX_oX- zraV5rM=}w~6qQG#Dx4SjK?*`rLQ&0?S4Kz4ECx24L*%jTL27rBxN4(=z*b@Eokog9 ztL4H2?4!E$v>{mYRE3-Fr=FckuLsg`*{aj&&l5HBdlhz29GlVc98I;FWxHKg(=_tkWpZ*FEL&Kf5?n>pB>7RN$Q`{^^Dymp1J*+cfwgxEv~h86>Z(~KPx zaTTf>#m9W2i9<(%jJh7vF{5n#|0L0B^DQUstw4$4QkbcwFV}#%!=}LULED#YFM414 zE(Lt}uP<6rB)RZU!QoJZRd6D1gjmfZ)XVXuupMBMq^5~-Fx0yYznMqg}_H2WEt_1 zKfiN1L6FCP4=yj%)Ic4%;8TArW?XoSde|qzYYW*Aro@8pmp6gebBvTgKDZBVKMz6K ztxM;ZaW{RI=}b*xJl>b~YxQUSNs0gdf0`ZdlCMwS8(n^u!&BawgGy`wR(&qbNXE?1 z_XR8yoy^haE5+TA0@Eqp=Q=uUPab#ZIq`mP`EP}-%$N}*QPqR#JsQ2K3&GF%J$fJr z2-5@I9+|wNla$!-L>qxwIFaJ%F%85pQf!L@28h!$48uk_(r`e{&d#wy%whZF#GF96 z{xu(EPhdNFI;Y)YrA`*RE;jzWY?r?4LCnoRCF35OwkdPa%g-K~`K+IQGvCtJl>Xyx z`^F3GuLJIuybLR-|tOIst(gQ-rDWg<(rR&5W@u#|_66 zaM#BOH*SiW)U+gqkt*)oec$#J@c#=EjkgCcXc>SJKi$aI^|MlwXzlsl7u zYZgILc4_^=kQPO{bqYm!RZt{*z~ z*PHQaaWpymmp|;nJ@~c8*D`IrM#(d5HkQqB1D-CBEN)zk2oR<;#~}SFSvF?%eNNx6YqG|Lf+>ud7!5 z|MTbXyLaEdefuA&yZ{c-T%n>TOn+`04P(4mJ9 zAKtrn@8|jRKTn^2{rdHT2M>N6J$mTSp`WKt9XWF3*s)_@7A^WTWy-f5JN~|Xd+pk_ zZ`-$jo-yO|ym=>1ocQ|n>yHyBu3x|Y|Nno6p$rs%vam8RI56mdJOPRm2loFB4oyv5 zYW$*tf};FtT+RK>d@4L5rlul1Dtr?J4CWayF;8${W}k1sF2}f0P*lxhx&%2s;)8@4Y8F`z9=IJ?bFfC`|aL}74)Figr&ViF-r|vd#ibx6^(Z9PHBbxx?GQ$+E;kbW;?MVaSE5ey2m2xhn`0li?8-tGbcRhDz}r( zv>M(jwc=U25(0VeI2w`ywufp4vMgBmFy?SO^P5SRSe50pd%hkjO*zVtvZcMd+|}Zz z?qav3HC81~%OmDSaIAXfSvMtr8hhIUk?FH6F9o|ESe^VeWG5H%gj9o|6gPFPR@0o- zNj2|yRM>Vpa=ExHc%|9I;XW~<qr1Vql;IFtYp6(31B1PW H0E0CEy3Ryd literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/xit.gif b/tools/storybook/wordpress/images/xit.gif new file mode 100644 index 0000000000000000000000000000000000000000..b11c5d43e9bcea7ee7c4c384871b0e552a5cd937 GIT binary patch literal 181 zcmZ?wbhEHb6k*_E_{__2;>3y1^X7fqzWv9E6F)Cs{&nNV|NsAAzI^%Y*|P@^9$dS2 z?a-k^pC(UcfC0syEUXL+ybL-Z0gxFEEJ+)-E@lXDKc(a(&^k>gWu^!7;&sl<6FL$V zR0LME_^dd%@r=RYM*#^EWj!*B7epKpIN$0t!RA?6)3FsUR;EGPp{sxP_^ocycK%Rw fDuY|v@AzlNyN4eY?wb;zBO%2rBc~uF$Y2csaRyJW literal 0 HcmV?d00001 diff --git a/tools/storybook/wordpress/images/yes.png b/tools/storybook/wordpress/images/yes.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb39836bbdf6c9931e9f846776d28c6c0157a87 GIT binary patch literal 539 zcmV+$0_6RPP)rrT_844hyuh_-TydG@=!*>!j8|8=)k{x|K{|0ceg z-9~AvFq>Sf_{CL^mj2JWknrF9q{e^!4NCu6eVFgCc`$Im1Cc$5bxGQm*ngE5^Zzft zKllIq`!oJ)G%J5mtyOrm;OWf&CATyGd)~18Z+pn_KU+BSU5+$}%_y Date: Wed, 27 Apr 2022 10:47:07 +1200 Subject: [PATCH 221/327] Add lint:fix to admin js packages --- packages/js/admin-e2e-tests/package.json | 5 +- packages/js/api/package.json | 119 +++++++++--------- packages/js/components/package.json | 3 +- packages/js/csv-export/package.json | 3 +- packages/js/currency/package.json | 3 +- .../js/customer-effort-score/package.json | 3 +- packages/js/data/package.json | 3 +- packages/js/date/package.json | 3 +- .../package.json | 4 + packages/js/eslint-plugin/package.json | 8 +- packages/js/experimental/package.json | 3 +- packages/js/explat/package.json | 3 +- packages/js/js-tests/package.json | 5 +- packages/js/navigation/package.json | 3 +- packages/js/notices/package.json | 5 +- packages/js/number/package.json | 3 +- packages/js/onboarding/package.json | 5 +- packages/js/style-build/package.json | 5 +- packages/js/tracks/package.json | 5 +- 19 files changed, 109 insertions(+), 82 deletions(-) diff --git a/packages/js/admin-e2e-tests/package.json b/packages/js/admin-e2e-tests/package.json index 38c82638c0a..e2a76d94d6f 100644 --- a/packages/js/admin-e2e-tests/package.json +++ b/packages/js/admin-e2e-tests/package.json @@ -52,14 +52,15 @@ "scripts": { "prepare": "pnpm run build", "build": "tsc --build", - "start": "tsc --build --watch", + "start": "tsc --build --watch", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "lint": "eslint src", + "lint:fix": "eslint src --fix", "prepack": "pnpm run clean && pnpm run build" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/api/package.json b/packages/js/api/package.json index 913125e6bcd..9594310ca2f 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -1,61 +1,62 @@ { - "name": "@woocommerce/api", - "version": "0.2.0", - "author": "Automattic", - "description": "A simple interface for interacting with a WooCommerce installation.", - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "keywords": [ - "woocommerce", - "e2e" - ], - "license": "GPL-3.0+", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "/dist/", - "!*.ts.map", - "!*.tsbuildinfo", - "!/dist/**/__tests__/", - "!/dist/**/__mocks__/", - "!/dist/**/__snapshops__/", - "!/dist/**/__test_data__/" - ], - "sideEffects": false, - "scripts": { - "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", - "compile": "tsc -b", - "build": "pnpm run clean && npm run compile", - "prepare": "pnpm run build", - "lint": "eslint src", - "test": "jest" - }, - "dependencies": { - "axios": "^0.24.0", - "create-hmac": "1.1.7", - "oauth-1.0a": "2.2.6" - }, - "devDependencies": { - "@types/create-hmac": "1.1.0", - "@types/jest": "^27.0.2", - "@types/node": "13.13.5", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", - "axios-mock-adapter": "^1.20.0", - "eslint": "^8.2.0", - "jest": "^25", - "ts-jest": "^25", - "typescript": "^4.4.4" - }, - "publishConfig": { - "access": "public" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] - } + "name": "@woocommerce/api", + "version": "0.2.0", + "author": "Automattic", + "description": "A simple interface for interacting with a WooCommerce installation.", + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "keywords": [ + "woocommerce", + "e2e" + ], + "license": "GPL-3.0+", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "/dist/", + "!*.ts.map", + "!*.tsbuildinfo", + "!/dist/**/__tests__/", + "!/dist/**/__mocks__/", + "!/dist/**/__snapshops__/", + "!/dist/**/__test_data__/" + ], + "sideEffects": false, + "scripts": { + "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", + "compile": "tsc -b", + "build": "pnpm run clean && npm run compile", + "prepare": "pnpm run build", + "lint": "eslint src", + "lint:fix": "eslint src --fix", + "test": "jest" + }, + "dependencies": { + "axios": "^0.24.0", + "create-hmac": "1.1.7", + "oauth-1.0a": "2.2.6" + }, + "devDependencies": { + "@types/create-hmac": "1.1.0", + "@types/jest": "^27.0.2", + "@types/node": "13.13.5", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "axios-mock-adapter": "^1.20.0", + "eslint": "^8.2.0", + "jest": "^25", + "ts-jest": "^25", + "typescript": "^4.4.4" + }, + "publishConfig": { + "access": "public" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "pnpm lint:fix" + ] + } } diff --git a/packages/js/components/package.json b/packages/js/components/package.json index 646fa4ffec3..8ab76b9ec1e 100644 --- a/packages/js/components/package.json +++ b/packages/js/components/package.json @@ -117,6 +117,7 @@ "build:css": "webpack", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "lint": "eslint src --ext=js,ts,tsx", + "lint:fix": "eslint src --ext=js,ts,tsx --fix", "prepack": "pnpm run clean && pnpm run build", "start": "concurrently \"tsc --build ./tsconfig.json --watch\" \"webpack --watch\"", "test": "pnpm run build && pnpm run test:nobuild", @@ -126,7 +127,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/csv-export/package.json b/packages/js/csv-export/package.json index e9798ae1255..831203e1f55 100644 --- a/packages/js/csv-export/package.json +++ b/packages/js/csv-export/package.json @@ -33,6 +33,7 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" @@ -49,7 +50,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/currency/package.json b/packages/js/currency/package.json index 71c32688cb5..49469671849 100644 --- a/packages/js/currency/package.json +++ b/packages/js/currency/package.json @@ -36,6 +36,7 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" @@ -52,7 +53,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/customer-effort-score/package.json b/packages/js/customer-effort-score/package.json index f56ea4b593f..a40455791c4 100644 --- a/packages/js/customer-effort-score/package.json +++ b/packages/js/customer-effort-score/package.json @@ -67,13 +67,14 @@ "start": "concurrently \"tsc --build --watch\" \"webpack --watch\"", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/data/package.json b/packages/js/data/package.json index 592adc87fe7..d82e9836bae 100644 --- a/packages/js/data/package.json +++ b/packages/js/data/package.json @@ -70,13 +70,14 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/date/package.json b/packages/js/date/package.json index 743f7d34905..fd8b4569d8c 100644 --- a/packages/js/date/package.json +++ b/packages/js/date/package.json @@ -49,13 +49,14 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/dependency-extraction-webpack-plugin/package.json b/packages/js/dependency-extraction-webpack-plugin/package.json index fe6cdd0cacf..86784041c7c 100644 --- a/packages/js/dependency-extraction-webpack-plugin/package.json +++ b/packages/js/dependency-extraction-webpack-plugin/package.json @@ -35,6 +35,10 @@ "webpack": "^5.70.0", "webpack-cli": "^3.3.12" }, + "scripts": { + "lint": "eslint src", + "lint:fix": "eslint src --fix" + }, "lint-staged": { "*.(t|j)s?(x)": [ "eslint --fix" diff --git a/packages/js/eslint-plugin/package.json b/packages/js/eslint-plugin/package.json index df23e6f4649..9d0fee890ff 100644 --- a/packages/js/eslint-plugin/package.json +++ b/packages/js/eslint-plugin/package.json @@ -36,7 +36,8 @@ "access": "public" }, "scripts": { - "lint": "eslint ./rules ./configs" + "lint": "eslint ./rules ./configs", + "lint:fix": "eslint ./rules ./configs --fix" }, "devDependencies": { "@babel/core": "^7.17.5", @@ -46,5 +47,10 @@ "rimraf": "^3.0.2", "ts-jest": "^27.1.3", "typescript": "^4.6.2" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "pnpm lint:fix" + ] } } diff --git a/packages/js/experimental/package.json b/packages/js/experimental/package.json index 66bd374e07f..0398d1c50f0 100644 --- a/packages/js/experimental/package.json +++ b/packages/js/experimental/package.json @@ -81,13 +81,14 @@ "start": "concurrently \"tsc --build --watch\" \"webpack --watch\"", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/explat/package.json b/packages/js/explat/package.json index 2bbd9aea625..238fbf2be4e 100644 --- a/packages/js/explat/package.json +++ b/packages/js/explat/package.json @@ -52,13 +52,14 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/js-tests/package.json b/packages/js/js-tests/package.json index ad6cfa050a5..7a81839b8c7 100644 --- a/packages/js/js-tests/package.json +++ b/packages/js/js-tests/package.json @@ -21,7 +21,8 @@ "ts:check": "tsc --noEmit --project ./tsconfig.json", "clean": "pnpm exec rimraf *.tsbuildinfo build build-*", "prepack": "pnpm run clean && pnpm run build", - "lint": "eslint src" + "lint": "eslint src", + "lint:fix": "eslint src --fix" }, "dependencies": { "@testing-library/jest-dom": "^5.16.2", @@ -43,7 +44,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/navigation/package.json b/packages/js/navigation/package.json index b61d3793a94..79ae7e6c658 100644 --- a/packages/js/navigation/package.json +++ b/packages/js/navigation/package.json @@ -44,6 +44,7 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" @@ -61,7 +62,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/notices/package.json b/packages/js/notices/package.json index 7de5f5eb01c..43e6d2c7ad7 100644 --- a/packages/js/notices/package.json +++ b/packages/js/notices/package.json @@ -40,7 +40,8 @@ "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", - "lint": "eslint src" + "lint": "eslint src", + "lint:fix": "eslint src --fix" }, "devDependencies": { "@babel/core": "^7.17.5", @@ -54,7 +55,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/number/package.json b/packages/js/number/package.json index 1abd24f9f50..c50c0ca7a00 100644 --- a/packages/js/number/package.json +++ b/packages/js/number/package.json @@ -31,6 +31,7 @@ "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", "lint": "eslint src", + "lint:fix": "eslint src --fix", "test": "pnpm run build && pnpm run test:nobuild", "test:nobuild": "jest --config ./jest.config.json", "test-staged": "jest --bail --config ./jest.config.json --findRelatedTests" @@ -48,7 +49,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix", + "pnpm lint:fix", "pnpm test-staged" ] } diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json index 10c26033dd6..a742262f959 100644 --- a/packages/js/onboarding/package.json +++ b/packages/js/onboarding/package.json @@ -59,11 +59,12 @@ "build:css": "webpack", "start": "concurrently \"tsc --build --watch\" \"webpack --watch\"", "prepack": "pnpm run clean && pnpm run build", - "lint": "eslint src" + "lint": "eslint src", + "lint:fix": "eslint src --fix" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/style-build/package.json b/packages/js/style-build/package.json index 0e2b9db68ec..6c9affa17f1 100644 --- a/packages/js/style-build/package.json +++ b/packages/js/style-build/package.json @@ -29,7 +29,8 @@ "webpack-rtl-plugin": "^2.0.0" }, "scripts": { - "lint": "eslint index.js" + "lint": "eslint index.js", + "lint:fix": "eslint index.js --fix" }, "private": true, "devDependencies": { @@ -45,7 +46,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/tracks/package.json b/packages/js/tracks/package.json index fe85d715a72..a6c45f92dfa 100644 --- a/packages/js/tracks/package.json +++ b/packages/js/tracks/package.json @@ -31,7 +31,8 @@ "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", "prepack": "pnpm run clean && pnpm run build", - "lint": "eslint src" + "lint": "eslint src", + "lint:fix": "eslint src --fix" }, "devDependencies": { "@babel/core": "^7.17.5", @@ -45,7 +46,7 @@ }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } From 931845a53a9583e22f1f23ac2def44c6ec8c9270 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Apr 2022 11:16:35 +1200 Subject: [PATCH 222/327] reference local eslint plugin package --- packages/js/admin-e2e-tests/.eslintrc.js | 5 +- packages/js/admin-e2e-tests/package.json | 2 +- packages/js/components/package.json | 2 +- packages/js/csv-export/package.json | 2 +- packages/js/currency/package.json | 2 +- .../js/customer-effort-score/package.json | 2 +- packages/js/data/package.json | 2 +- packages/js/date/package.json | 2 +- .../package.json | 2 +- packages/js/experimental/package.json | 2 +- packages/js/explat/package.json | 2 +- packages/js/js-tests/package.json | 2 +- packages/js/navigation/package.json | 2 +- packages/js/notices/package.json | 2 +- packages/js/number/package.json | 2 +- packages/js/onboarding/package.json | 2 +- packages/js/style-build/package.json | 2 +- pnpm-lock.yaml | 72 +++++++++---------- 18 files changed, 56 insertions(+), 53 deletions(-) diff --git a/packages/js/admin-e2e-tests/.eslintrc.js b/packages/js/admin-e2e-tests/.eslintrc.js index e4d185d8cd1..9075f6c31f9 100644 --- a/packages/js/admin-e2e-tests/.eslintrc.js +++ b/packages/js/admin-e2e-tests/.eslintrc.js @@ -1,4 +1,7 @@ module.exports = { - extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:@woocommerce/eslint-plugin/recommended', + ], root: true, }; diff --git a/packages/js/admin-e2e-tests/package.json b/packages/js/admin-e2e-tests/package.json index e2a76d94d6f..7ddb4a89f3a 100644 --- a/packages/js/admin-e2e-tests/package.json +++ b/packages/js/admin-e2e-tests/package.json @@ -37,7 +37,7 @@ "@types/puppeteer": "^5.4.5", "@typescript-eslint/eslint-plugin": "^5.14.0", "@woocommerce/api": "^0.2.0", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/components/package.json b/packages/js/components/package.json index 8ab76b9ec1e..e41787c6f22 100644 --- a/packages/js/components/package.json +++ b/packages/js/components/package.json @@ -94,9 +94,9 @@ "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^13.5.0", + "@woocommerce/eslint-plugin": "workspace:*", "@woocommerce/style-build": "workspace:*", "@wordpress/browserslist-config": "^4.1.1", - "@wordpress/eslint-plugin": "^11.0.0", "@wordpress/scripts": "^12.6.1", "concurrently": "^7.0.0", "css-loader": "^3.6.0", diff --git a/packages/js/csv-export/package.json b/packages/js/csv-export/package.json index 831203e1f55..f99519ef6d2 100644 --- a/packages/js/csv-export/package.json +++ b/packages/js/csv-export/package.json @@ -40,7 +40,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/currency/package.json b/packages/js/currency/package.json index 49469671849..ca8207cdd8a 100644 --- a/packages/js/currency/package.json +++ b/packages/js/currency/package.json @@ -43,7 +43,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/customer-effort-score/package.json b/packages/js/customer-effort-score/package.json index a40455791c4..0ee0fa1b677 100644 --- a/packages/js/customer-effort-score/package.json +++ b/packages/js/customer-effort-score/package.json @@ -40,8 +40,8 @@ "@types/prop-types": "^15.7.4", "@types/wordpress__components": "^9.8.6", "@woocommerce/style-build": "workspace:*", + "@woocommerce/eslint-plugin": "workspace:*", "@wordpress/browserslist-config": "^4.1.1", - "@wordpress/eslint-plugin": "^11.0.0", "concurrently": "^7.0.0", "css-loader": "^3.6.0", "eslint": "^8.12.0", diff --git a/packages/js/data/package.json b/packages/js/data/package.json index d82e9836bae..730ab93a370 100644 --- a/packages/js/data/package.json +++ b/packages/js/data/package.json @@ -50,7 +50,7 @@ "@testing-library/react-hooks": "^7.0.2", "@types/wordpress__core-data": "^2.4.5", "@types/wordpress__data-controls": "^2.2.0", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/date/package.json b/packages/js/date/package.json index fd8b4569d8c..b59bd4d85f7 100644 --- a/packages/js/date/package.json +++ b/packages/js/date/package.json @@ -28,7 +28,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "d3-time-format": "^2.3.0", "eslint": "^8.12.0", "jest": "^27.5.1", diff --git a/packages/js/dependency-extraction-webpack-plugin/package.json b/packages/js/dependency-extraction-webpack-plugin/package.json index 86784041c7c..05edfe9f897 100644 --- a/packages/js/dependency-extraction-webpack-plugin/package.json +++ b/packages/js/dependency-extraction-webpack-plugin/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/experimental/package.json b/packages/js/experimental/package.json index 0398d1c50f0..98132bbcb6c 100644 --- a/packages/js/experimental/package.json +++ b/packages/js/experimental/package.json @@ -53,9 +53,9 @@ "@testing-library/user-event": "^13.5.0", "@types/dompurify": "^2.3.3", "@types/react-transition-group": "^4.4.4", + "@woocommerce/eslint-plugin": "workspace:*", "@woocommerce/style-build": "workspace:*", "@wordpress/browserslist-config": "^4.1.1", - "@wordpress/eslint-plugin": "^11.0.0", "concurrently": "^7.0.0", "css-loader": "^3.6.0", "eslint": "^8.12.0", diff --git a/packages/js/explat/package.json b/packages/js/explat/package.json index 238fbf2be4e..656cfab13bb 100644 --- a/packages/js/explat/package.json +++ b/packages/js/explat/package.json @@ -38,7 +38,7 @@ "@types/cookie": "^0.4.1", "@types/node": "^17.0.21", "@types/qs": "^6.9.7", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/js-tests/package.json b/packages/js/js-tests/package.json index 7a81839b8c7..9b865a7458b 100644 --- a/packages/js/js-tests/package.json +++ b/packages/js/js-tests/package.json @@ -34,7 +34,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/navigation/package.json b/packages/js/navigation/package.json index 79ae7e6c658..58bc2eb9a38 100644 --- a/packages/js/navigation/package.json +++ b/packages/js/navigation/package.json @@ -51,7 +51,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "@babel/runtime": "^7.17.2", "jest": "^27.5.1", diff --git a/packages/js/notices/package.json b/packages/js/notices/package.json index 43e6d2c7ad7..83a218f8d1f 100644 --- a/packages/js/notices/package.json +++ b/packages/js/notices/package.json @@ -45,7 +45,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/packages/js/number/package.json b/packages/js/number/package.json index c50c0ca7a00..f5873c8f99f 100644 --- a/packages/js/number/package.json +++ b/packages/js/number/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "@babel/runtime": "^7.17.2", "jest": "^27.5.1", diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json index a742262f959..ac4c5b06d8a 100644 --- a/packages/js/onboarding/package.json +++ b/packages/js/onboarding/package.json @@ -37,9 +37,9 @@ }, "devDependencies": { "@babel/core": "^7.17.5", + "@woocommerce/eslint-plugin": "workspace:*", "@woocommerce/style-build": "workspace:*", "@wordpress/browserslist-config": "^4.1.1", - "@wordpress/eslint-plugin": "^11.0.0", "css-loader": "^3.6.0", "eslint": "^8.12.0", "jest": "^27.5.1", diff --git a/packages/js/style-build/package.json b/packages/js/style-build/package.json index 6c9affa17f1..afc4d971b09 100644 --- a/packages/js/style-build/package.json +++ b/packages/js/style-build/package.json @@ -35,7 +35,7 @@ "private": true, "devDependencies": { "@babel/core": "^7.17.5", - "@wordpress/eslint-plugin": "^11.0.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.12.0", "jest": "^27.5.1", "jest-cli": "^27.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9df70e5a7f7..c26bc7bdf8e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,7 +72,7 @@ importers: '@types/puppeteer': ^5.4.5 '@typescript-eslint/eslint-plugin': ^5.14.0 '@woocommerce/api': ^0.2.0 - '@wordpress/eslint-plugin': ^11.0.0 + '@woocommerce/eslint-plugin': workspace:* config: ^3.3.7 eslint: ^8.12.0 jest: ^27.5.1 @@ -91,7 +91,7 @@ importers: '@types/puppeteer': 5.4.5 '@typescript-eslint/eslint-plugin': 5.15.0_eslint@8.12.0+typescript@4.6.2 '@woocommerce/api': link:../api - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -174,6 +174,7 @@ importers: '@woocommerce/currency': workspace:* '@woocommerce/data': workspace:* '@woocommerce/date': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/navigation': workspace:* '@woocommerce/style-build': workspace:* '@wordpress/api-fetch': ^6.0.1 @@ -184,7 +185,6 @@ importers: '@wordpress/deprecated': ^3.3.1 '@wordpress/dom': ^3.3.2 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/hooks': ^3.5.0 '@wordpress/html-entities': ^3.3.1 '@wordpress/i18n': ^4.3.1 @@ -283,9 +283,9 @@ importers: '@testing-library/jest-dom': 5.16.2 '@testing-library/react': 12.1.4 '@testing-library/user-event': 13.5.0_@testing-library+dom@8.11.3 + '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/style-build': link:../style-build '@wordpress/browserslist-config': 4.1.2 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 '@wordpress/scripts': 12.6.1_6cad74fe17bf42b947bda894b27e9dc2 concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 @@ -303,7 +303,7 @@ importers: packages/js/csv-export: specifiers: '@babel/core': ^7.17.5 - '@wordpress/eslint-plugin': ^11.0.0 + '@woocommerce/eslint-plugin': workspace:* browser-filesaver: ^1.1.1 eslint: ^8.12.0 jest: ^27.5.1 @@ -317,7 +317,7 @@ importers: moment: 2.29.1 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -328,10 +328,10 @@ importers: packages/js/currency: specifiers: '@babel/core': ^7.17.5 + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/number': workspace:* '@wordpress/deprecated': ^2.12.3 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/html-entities': ^3.3.1 '@wordpress/i18n': ^3.20.0 eslint: ^8.12.0 @@ -348,7 +348,7 @@ importers: '@wordpress/i18n': 3.20.0 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -362,6 +362,7 @@ importers: '@testing-library/react': ^12.1.3 '@types/prop-types': ^15.7.4 '@types/wordpress__components': ^9.8.6 + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/experimental': workspace:* '@woocommerce/style-build': workspace:* '@wordpress/browserslist-config': ^4.1.1 @@ -369,7 +370,6 @@ importers: '@wordpress/compose': ^5.1.2 '@wordpress/data': ^6.3.0 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/i18n': ^4.3.1 '@wordpress/notices': ^3.3.2 classnames: ^2.3.1 @@ -403,9 +403,9 @@ importers: '@testing-library/react': 12.1.4 '@types/prop-types': 15.7.4 '@types/wordpress__components': 9.8.6 + '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/style-build': link:../style-build '@wordpress/browserslist-config': 4.1.2 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.12.0 @@ -429,6 +429,7 @@ importers: '@types/wordpress__core-data': ^2.4.5 '@types/wordpress__data-controls': ^2.2.0 '@woocommerce/date': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/navigation': workspace:* '@wordpress/api-fetch': ^6.0.1 '@wordpress/compose': ^5.1.2 @@ -437,7 +438,6 @@ importers: '@wordpress/data-controls': ^2.3.2 '@wordpress/deprecated': ^3.3.1 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/hooks': ^3.5.0 '@wordpress/i18n': ^4.3.1 '@wordpress/url': ^3.4.1 @@ -476,7 +476,7 @@ importers: '@testing-library/react-hooks': 7.0.2 '@types/wordpress__core-data': 2.4.5 '@types/wordpress__data-controls': 2.2.0 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -487,8 +487,8 @@ importers: packages/js/date: specifiers: '@babel/core': ^7.17.5 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/date': ^4.3.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/i18n': ^4.3.1 d3-time-format: ^2.3.0 eslint: ^8.12.0 @@ -506,7 +506,7 @@ importers: qs: 6.10.3 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin d3-time-format: 2.3.0 eslint: 8.12.0 jest: 27.5.1 @@ -518,8 +518,8 @@ importers: packages/js/dependency-extraction-webpack-plugin: specifiers: '@babel/core': ^7.17.5 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/dependency-extraction-webpack-plugin': ^3.3.0 - '@wordpress/eslint-plugin': ^11.0.0 eslint: ^8.12.0 jest: ^27.5.1 jest-cli: ^27.5.1 @@ -532,7 +532,7 @@ importers: '@wordpress/dependency-extraction-webpack-plugin': 3.4.1_webpack@5.70.0 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -751,11 +751,11 @@ importers: '@types/dompurify': ^2.3.3 '@types/react-transition-group': ^4.4.4 '@woocommerce/components': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/style-build': workspace:* '@wordpress/browserslist-config': ^4.1.1 '@wordpress/components': ^19.5.0 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/i18n': ^4.3.1 '@wordpress/icons': ^8.1.0 '@wordpress/keycodes': ^3.3.1 @@ -801,9 +801,9 @@ importers: '@testing-library/user-event': 13.5.0_@testing-library+dom@8.11.3 '@types/dompurify': 2.3.3 '@types/react-transition-group': 4.4.4 + '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/style-build': link:../style-build '@wordpress/browserslist-config': 4.1.2 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 concurrently: 7.0.0 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.12.0 @@ -825,8 +825,8 @@ importers: '@types/cookie': ^0.4.1 '@types/node': ^17.0.21 '@types/qs': ^6.9.7 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/api-fetch': ^6.0.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/hooks': ^3.5.0 cookie: ^0.4.2 eslint: ^8.12.0 @@ -848,7 +848,7 @@ importers: '@types/cookie': 0.4.1 '@types/node': 17.0.21 '@types/qs': 6.9.7 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -861,8 +861,8 @@ importers: '@babel/core': ^7.17.5 '@testing-library/jest-dom': ^5.16.2 '@testing-library/react': ^12.1.3 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/data': ^6.3.0 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/i18n': ^4.3.1 '@wordpress/jest-console': ^5.0.1 eslint: ^8.12.0 @@ -881,7 +881,7 @@ importers: regenerator-runtime: 0.13.9 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -893,11 +893,11 @@ importers: specifiers: '@babel/core': ^7.17.5 '@babel/runtime': ^7.17.2 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/api-fetch': ^6.0.1 '@wordpress/components': ^19.5.0 '@wordpress/compose': ^5.1.2 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/hooks': ^3.5.0 '@wordpress/notices': ^3.3.2 '@wordpress/url': ^3.4.1 @@ -922,7 +922,7 @@ importers: devDependencies: '@babel/core': 7.17.8 '@babel/runtime': 7.17.7 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -933,9 +933,9 @@ importers: packages/js/notices: specifiers: '@babel/core': ^7.17.5 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/a11y': ^3.5.0 '@wordpress/data': ^6.3.0 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/notices': ^3.3.2 eslint: ^8.12.0 jest: ^27.5.1 @@ -949,7 +949,7 @@ importers: '@wordpress/notices': 3.4.1 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -961,7 +961,7 @@ importers: specifiers: '@babel/core': ^7.17.5 '@babel/runtime': ^7.17.2 - '@wordpress/eslint-plugin': ^11.0.0 + '@woocommerce/eslint-plugin': workspace:* eslint: ^8.12.0 jest: ^27.5.1 jest-cli: ^27.5.1 @@ -974,7 +974,7 @@ importers: devDependencies: '@babel/core': 7.17.8 '@babel/runtime': 7.17.7 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -987,13 +987,13 @@ importers: '@automattic/interpolate-components': ^1.2.0 '@babel/core': ^7.17.5 '@woocommerce/components': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@woocommerce/experimental': workspace:* '@woocommerce/style-build': workspace:* '@woocommerce/tracks': workspace:* '@wordpress/browserslist-config': ^4.1.1 '@wordpress/components': ^19.5.0 '@wordpress/element': ^4.1.1 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/i18n': ^4.3.1 concurrently: ^7.0.0 css-loader: ^3.6.0 @@ -1020,9 +1020,9 @@ importers: gridicons: 3.4.0 devDependencies: '@babel/core': 7.17.8 + '@woocommerce/eslint-plugin': link:../eslint-plugin '@woocommerce/style-build': link:../style-build '@wordpress/browserslist-config': 4.1.2 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 css-loader: 3.6.0_webpack@5.70.0 eslint: 8.12.0 jest: 27.5.1 @@ -1039,8 +1039,8 @@ importers: specifiers: '@automattic/color-studio': ^2.5.0 '@babel/core': ^7.17.5 + '@woocommerce/eslint-plugin': workspace:* '@wordpress/base-styles': ^4.3.0 - '@wordpress/eslint-plugin': ^11.0.0 '@wordpress/postcss-plugins-preset': ^1.6.0 css-loader: ^3.6.0 eslint: ^8.12.0 @@ -1067,7 +1067,7 @@ importers: webpack-rtl-plugin: 2.0.0 devDependencies: '@babel/core': 7.17.8 - '@wordpress/eslint-plugin': 11.0.1_7c040a9b494a33cf8bf9079642892fb1 + '@woocommerce/eslint-plugin': link:../eslint-plugin eslint: 8.12.0 jest: 27.5.1 jest-cli: 27.5.1 @@ -2228,7 +2228,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 '@babel/traverse': 7.17.3 - debug: 4.3.3 + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.20.0 semver: 6.3.0 @@ -2317,7 +2317,7 @@ packages: '@babel/helper-module-imports': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 '@babel/traverse': 7.17.3 - debug: 4.3.3 + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.20.0 semver: 6.3.0 @@ -24361,7 +24361,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.3 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -36544,7 +36544,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0_acorn@8.7.0 - webpack: 5.70.0_webpack-cli@3.3.12 + webpack: 5.70.0 transitivePeerDependencies: - acorn dev: true From e82e3cc49ec2927dc500a277b1ead5fca1f1eca9 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Apr 2022 11:42:22 +1200 Subject: [PATCH 223/327] changelog --- packages/js/admin-e2e-tests/changelog/.gitkeep | 0 .../admin-e2e-tests/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/api/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/components/changelog/.gitkeep | 0 .../js/components/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/csv-export/changelog/.gitkeep | 0 .../js/csv-export/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/currency/changelog/.gitkeep | 0 packages/js/currency/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/customer-effort-score/changelog/.gitkeep | 0 .../changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/data/changelog/.gitkeep | 0 packages/js/data/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/date/changelog/.gitkeep | 0 packages/js/date/changelog/fix-standardize-lint-monorepo | 4 ++++ .../dependency-extraction-webpack-plugin/changelog/.gitkeep | 0 .../changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/eslint-plugin/changelog/.gitkeep | 0 .../js/eslint-plugin/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/experimental/changelog/.gitkeep | 0 .../js/experimental/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/explat/changelog/.gitkeep | 0 packages/js/explat/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/js-tests/changelog/.gitkeep | 0 packages/js/js-tests/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/navigation/changelog/.gitkeep | 0 .../js/navigation/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/notices/changelog/.gitkeep | 0 packages/js/notices/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/number/changelog/.gitkeep | 0 packages/js/number/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/onboarding/changelog/.gitkeep | 0 .../js/onboarding/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/style-build/changelog/.gitkeep | 0 .../js/style-build/changelog/fix-standardize-lint-monorepo | 4 ++++ packages/js/tracks/changelog/.gitkeep | 0 packages/js/tracks/changelog/fix-standardize-lint-monorepo | 4 ++++ 37 files changed, 76 insertions(+) create mode 100644 packages/js/admin-e2e-tests/changelog/.gitkeep create mode 100644 packages/js/admin-e2e-tests/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/api/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/components/changelog/.gitkeep create mode 100644 packages/js/components/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/csv-export/changelog/.gitkeep create mode 100644 packages/js/csv-export/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/currency/changelog/.gitkeep create mode 100644 packages/js/currency/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/customer-effort-score/changelog/.gitkeep create mode 100644 packages/js/customer-effort-score/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/data/changelog/.gitkeep create mode 100644 packages/js/data/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/date/changelog/.gitkeep create mode 100644 packages/js/date/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/dependency-extraction-webpack-plugin/changelog/.gitkeep create mode 100644 packages/js/dependency-extraction-webpack-plugin/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/eslint-plugin/changelog/.gitkeep create mode 100644 packages/js/eslint-plugin/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/experimental/changelog/.gitkeep create mode 100644 packages/js/experimental/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/explat/changelog/.gitkeep create mode 100644 packages/js/explat/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/js-tests/changelog/.gitkeep create mode 100644 packages/js/js-tests/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/navigation/changelog/.gitkeep create mode 100644 packages/js/navigation/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/notices/changelog/.gitkeep create mode 100644 packages/js/notices/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/number/changelog/.gitkeep create mode 100644 packages/js/number/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/onboarding/changelog/.gitkeep create mode 100644 packages/js/onboarding/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/style-build/changelog/.gitkeep create mode 100644 packages/js/style-build/changelog/fix-standardize-lint-monorepo create mode 100644 packages/js/tracks/changelog/.gitkeep create mode 100644 packages/js/tracks/changelog/fix-standardize-lint-monorepo diff --git a/packages/js/admin-e2e-tests/changelog/.gitkeep b/packages/js/admin-e2e-tests/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/admin-e2e-tests/changelog/fix-standardize-lint-monorepo b/packages/js/admin-e2e-tests/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/admin-e2e-tests/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/api/changelog/fix-standardize-lint-monorepo b/packages/js/api/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/api/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/components/changelog/.gitkeep b/packages/js/components/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/components/changelog/fix-standardize-lint-monorepo b/packages/js/components/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/components/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/csv-export/changelog/.gitkeep b/packages/js/csv-export/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/csv-export/changelog/fix-standardize-lint-monorepo b/packages/js/csv-export/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/csv-export/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/currency/changelog/.gitkeep b/packages/js/currency/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/currency/changelog/fix-standardize-lint-monorepo b/packages/js/currency/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/currency/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/customer-effort-score/changelog/.gitkeep b/packages/js/customer-effort-score/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/customer-effort-score/changelog/fix-standardize-lint-monorepo b/packages/js/customer-effort-score/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/customer-effort-score/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/data/changelog/.gitkeep b/packages/js/data/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/data/changelog/fix-standardize-lint-monorepo b/packages/js/data/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/data/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/date/changelog/.gitkeep b/packages/js/date/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/date/changelog/fix-standardize-lint-monorepo b/packages/js/date/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/date/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/.gitkeep b/packages/js/dependency-extraction-webpack-plugin/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/fix-standardize-lint-monorepo b/packages/js/dependency-extraction-webpack-plugin/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/dependency-extraction-webpack-plugin/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/eslint-plugin/changelog/.gitkeep b/packages/js/eslint-plugin/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/eslint-plugin/changelog/fix-standardize-lint-monorepo b/packages/js/eslint-plugin/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/eslint-plugin/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/experimental/changelog/.gitkeep b/packages/js/experimental/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/experimental/changelog/fix-standardize-lint-monorepo b/packages/js/experimental/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/experimental/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/explat/changelog/.gitkeep b/packages/js/explat/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/explat/changelog/fix-standardize-lint-monorepo b/packages/js/explat/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/explat/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/js-tests/changelog/.gitkeep b/packages/js/js-tests/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/js-tests/changelog/fix-standardize-lint-monorepo b/packages/js/js-tests/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/js-tests/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/navigation/changelog/.gitkeep b/packages/js/navigation/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/navigation/changelog/fix-standardize-lint-monorepo b/packages/js/navigation/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/navigation/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/notices/changelog/.gitkeep b/packages/js/notices/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/notices/changelog/fix-standardize-lint-monorepo b/packages/js/notices/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/notices/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/number/changelog/.gitkeep b/packages/js/number/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/number/changelog/fix-standardize-lint-monorepo b/packages/js/number/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/number/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/onboarding/changelog/.gitkeep b/packages/js/onboarding/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/onboarding/changelog/fix-standardize-lint-monorepo b/packages/js/onboarding/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/onboarding/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/style-build/changelog/.gitkeep b/packages/js/style-build/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/style-build/changelog/fix-standardize-lint-monorepo b/packages/js/style-build/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/style-build/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix diff --git a/packages/js/tracks/changelog/.gitkeep b/packages/js/tracks/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/tracks/changelog/fix-standardize-lint-monorepo b/packages/js/tracks/changelog/fix-standardize-lint-monorepo new file mode 100644 index 00000000000..684cc6c8fd3 --- /dev/null +++ b/packages/js/tracks/changelog/fix-standardize-lint-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: add lint:fix From bfbad3a4dc7e929d730bd1a1a946339001153150 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Apr 2022 14:17:55 +1200 Subject: [PATCH 224/327] Fixup eslintrc.js --- plugins/woocommerce/.eslintrc.js | 1 + plugins/woocommerce/package.json | 183 ++++++++++++++++--------------- 2 files changed, 95 insertions(+), 89 deletions(-) diff --git a/plugins/woocommerce/.eslintrc.js b/plugins/woocommerce/.eslintrc.js index 03f9124652e..57f426e75fe 100644 --- a/plugins/woocommerce/.eslintrc.js +++ b/plugins/woocommerce/.eslintrc.js @@ -6,6 +6,7 @@ module.exports = { es6: true, node: true, }, + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], globals: { wp: true, wpApiSettings: true, diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index 37b1610bfcf..c6b1af4efa6 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -1,91 +1,96 @@ { - "name": "woocommerce", - "title": "WooCommerce", - "version": "6.6.0", - "homepage": "https://woocommerce.com/", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "config": { - "wp_org_slug": "woocommerce", - "build_step": "pnpm run build:zip" - }, - "scripts": { - "preinstall": "npx only-allow pnpm", - "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", - "build:feature-config": "php bin/generate-feature-config.php", - "build:zip": "./bin/build-zip.sh", - "lint:js": "eslint assets/js --ext=js", - "docker:down": "pnpm exec wc-e2e docker:down", - "docker:ssh": "pnpm exec wc-e2e docker:ssh", - "docker:up": "pnpm exec wc-e2e docker:up", - "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api", - "make:collection": "pnpm exec wc-api-tests make:collection", - "test:e2e": "pnpm exec wc-e2e test:e2e", - "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", - "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", - "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", - "makepot": "composer run-script makepot", - "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" - }, - "devDependencies": { - "@babel/cli": "7.12.8", - "@babel/core": "7.12.9", - "@babel/preset-env": "7.12.7", - "@babel/register": "7.12.1", - "@typescript-eslint/eslint-plugin": "3.10.1", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/parser": "3.10.1", - "@woocommerce/admin-e2e-tests": "workspace:*", - "@woocommerce/api": "workspace:*", - "@woocommerce/api-core-tests": "workspace:*", - "@woocommerce/e2e-core-tests": "workspace:*", - "@woocommerce/e2e-environment": "workspace:*", - "@woocommerce/e2e-utils": "workspace:*", - "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", - "@wordpress/babel-preset-default": "3.0.2", - "@wordpress/eslint-plugin": "7.3.0", - "@wordpress/stylelint-config": "19.1.0", - "allure-commandline": "^2.17.2", - "autoprefixer": "9.8.6", - "babel-eslint": "10.1.0", - "chai": "4.2.0", - "chai-as-promised": "7.1.1", - "config": "3.3.3", - "cross-env": "6.0.3", - "deasync": "0.1.26", - "eslint": "6.8.0", - "eslint-config-wpcalypso": "5.0.0", - "eslint-plugin-jest": "23.20.0", - "github-contributors-list": "https://github.com/woocommerce/github-contributors-list/tarball/master", - "istanbul": "1.0.0-alpha.2", - "jest": "^25.1.0", - "mocha": "7.2.0", - "prettier": "npm:wp-prettier@2.0.5", - "stylelint": "^13.8.0", - "typescript": "3.9.7", - "webpack": "4.44.2", - "webpack-cli": "3.3.12", - "wp-textdomain": "1.0.1" - }, - "lint-staged": { - "*.php": [ - "php -d display_errors=1 -l", - "composer run-script phpcs-pre-commit" - ], - "!(*min).js": [ - "eslint --fix" - ] - }, - "engines": { - "node": "^16.13.1", - "pnpm": "^6.24.2" - }, - "browserslist": [ - "> 0.1%", - "ie 8", - "ie 9" - ] + "name": "woocommerce", + "title": "WooCommerce", + "version": "6.6.0", + "homepage": "https://woocommerce.com/", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "config": { + "wp_org_slug": "woocommerce", + "build_step": "pnpm run build:zip" + }, + "scripts": { + "preinstall": "npx only-allow pnpm", + "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", + "build:feature-config": "php bin/generate-feature-config.php", + "build:zip": "./bin/build-zip.sh", + "lint": "pnpm lint:js && pnpm lint:php", + "lint:fix": "pnpm lint:js:fix && pnpm lint:php:fix", + "lint:js": "eslint assets/js --ext=js", + "lint:js:fix": "eslint assets/js --ext=js --fix", + "lint:php": "composer run-script phpcs", + "lint:php:fix": "composer run-script phpcbf", + "docker:down": "pnpm exec wc-e2e docker:down", + "docker:ssh": "pnpm exec wc-e2e docker:ssh", + "docker:up": "pnpm exec wc-e2e docker:up", + "test:api": "ALLURE_OUTPUT_DIR=\"$PWD/tests/api\" pnpm exec wc-api-tests test api", + "make:collection": "pnpm exec wc-api-tests make:collection", + "test:e2e": "pnpm exec wc-e2e test:e2e", + "test:e2e-debug": "pnpm exec wc-e2e test:e2e-debug", + "test:e2e-dev": "pnpm exec wc-e2e test:e2e-dev", + "test:unit": "./vendor/bin/phpunit -c ./phpunit.xml", + "makepot": "composer run-script makepot", + "packages:fix:textdomain": "node ./bin/package-update-textdomain.js" + }, + "devDependencies": { + "@babel/cli": "7.12.8", + "@babel/core": "7.12.9", + "@babel/preset-env": "7.12.7", + "@babel/register": "7.12.1", + "@typescript-eslint/eslint-plugin": "3.10.1", + "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/parser": "3.10.1", + "@woocommerce/admin-e2e-tests": "workspace:*", + "@woocommerce/api": "workspace:*", + "@woocommerce/api-core-tests": "workspace:*", + "@woocommerce/e2e-core-tests": "workspace:*", + "@woocommerce/e2e-environment": "workspace:*", + "@woocommerce/e2e-utils": "workspace:*", + "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", + "@wordpress/babel-preset-default": "3.0.2", + "@woocommerce/eslint-plugin": "workspace:*", + "@wordpress/stylelint-config": "19.1.0", + "allure-commandline": "^2.17.2", + "autoprefixer": "9.8.6", + "babel-eslint": "10.1.0", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "config": "3.3.3", + "cross-env": "6.0.3", + "deasync": "0.1.26", + "eslint": "6.8.0", + "eslint-config-wpcalypso": "5.0.0", + "eslint-plugin-jest": "23.20.0", + "github-contributors-list": "https://github.com/woocommerce/github-contributors-list/tarball/master", + "istanbul": "1.0.0-alpha.2", + "jest": "^25.1.0", + "mocha": "7.2.0", + "prettier": "npm:wp-prettier@2.0.5", + "stylelint": "^13.8.0", + "typescript": "3.9.7", + "webpack": "4.44.2", + "webpack-cli": "3.3.12", + "wp-textdomain": "1.0.1" + }, + "lint-staged": { + "*.php": [ + "php -d display_errors=1 -l", + "composer run-script phpcs-pre-commit" + ], + "!(*min).js": [ + "eslint --fix" + ] + }, + "engines": { + "node": "^16.13.1", + "pnpm": "^6.24.2" + }, + "browserslist": [ + "> 0.1%", + "ie 8", + "ie 9" + ] } From 4275eb002be41c3744b344a98e1f2b7fdb3d3c7f Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Apr 2022 15:08:58 +1200 Subject: [PATCH 225/327] admin fix scripts --- plugins/woocommerce-admin/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index f7149f13fde..00b030d45b8 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -25,6 +25,7 @@ "install-if-deps-outdated": "node bin/install-if-deps-outdated.js", "install-if-no-packages": "node bin/install-if-no-packages.js", "lint": "pnpm run lint:js && pnpm run lint:css", + "lint:fix": "pnpm lint:js-fix && pnpm lint:css-fix", "lint:css": "stylelint '**/*.scss'", "lint:css-fix": "stylelint '**/*.scss' --fix --ip 'storybook/wordpress'", "lint:js": "wp-scripts lint-js ./client --ext=js,ts,tsx", From b06b34dd318eec8c8c1bd50a92c9b7595702605f Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 27 Apr 2022 15:10:48 +1200 Subject: [PATCH 226/327] beta tester fix scripts --- plugins/woocommerce-beta-tester/package.json | 97 ++++++++++---------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index fd75976a133..fd1f8cce0a7 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -1,50 +1,51 @@ { - "name": "woocommerce-beta-tester", - "description": "Setting up the local beta tester scripts.", - "license": "GPL-2.0", - "repository": { - "type": "git", - "url": "git://github.com/woocommerce/woocommerce-beta-tester.git" - }, - "title": "WooCommerce Beta Tester", - "version": "2.0.5", - "homepage": "http://github.com/woocommerce/woocommerce-beta-tester", - "config": { - "build_step": "pnpm run build:zip" - }, - "devDependencies": { - "eslint": "5.16.0", - "uglify-js": "^3.5.3" - }, - "assets": { - "js": { - "min": "assets/js/*.min.js", - "js": "assets/js/*.js" - } - }, - "scripts": { - "build": "pnpm run uglify", - "build:zip": "./bin/build-zip.sh", - "build:dev": "pnpm run lint:js && pnpm run uglify", - "preuglify": "rm -f $npm_package_assets_js_min", - "uglify": "for f in $npm_package_assets_js_js; do file=${f%.js}; node_modules/.bin/uglifyjs $f -c -m > $file.min.js; done", - "lint:js": "eslint assets/js --ext=js" - }, - "engines": { - "node": ">=10.15.0", - "npm": ">=6.4.1" - }, - "woorelease": { - "svn_reauth": "true", - "wp_org_slug": "woocommerce-beta-tester" - }, - "lint-staged": { - "*.php": [ - "php -d display_errors=1 -l", - "composer --working-dir=./plugins/woocommerce-beta-tester run-script phpcs-pre-commit" - ], - "!(*min).js": [ - "eslint --fix" - ] - } + "name": "woocommerce-beta-tester", + "description": "Setting up the local beta tester scripts.", + "license": "GPL-2.0", + "repository": { + "type": "git", + "url": "git://github.com/woocommerce/woocommerce-beta-tester.git" + }, + "title": "WooCommerce Beta Tester", + "version": "2.0.5", + "homepage": "http://github.com/woocommerce/woocommerce-beta-tester", + "config": { + "build_step": "pnpm run build:zip" + }, + "devDependencies": { + "eslint": "5.16.0", + "uglify-js": "^3.5.3" + }, + "assets": { + "js": { + "min": "assets/js/*.min.js", + "js": "assets/js/*.js" + } + }, + "scripts": { + "build": "pnpm run uglify", + "build:zip": "./bin/build-zip.sh", + "build:dev": "pnpm run lint:js && pnpm run uglify", + "preuglify": "rm -f $npm_package_assets_js_min", + "uglify": "for f in $npm_package_assets_js_js; do file=${f%.js}; node_modules/.bin/uglifyjs $f -c -m > $file.min.js; done", + "lint": "eslint assets/js --ext=js", + "lint:fix": "eslint assets/js --ext=js --fix" + }, + "engines": { + "node": ">=10.15.0", + "npm": ">=6.4.1" + }, + "woorelease": { + "svn_reauth": "true", + "wp_org_slug": "woocommerce-beta-tester" + }, + "lint-staged": { + "*.php": [ + "php -d display_errors=1 -l", + "composer --working-dir=./plugins/woocommerce-beta-tester run-script phpcs-pre-commit" + ], + "!(*min).js": [ + "pnpm lint:fix" + ] + } } From 077b21b35cee0cd0dee6437ae7413037745fccfa Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 28 Apr 2022 11:23:25 +1200 Subject: [PATCH 227/327] pnpm lock file update --- pnpm-lock.yaml | 186 +++++++++---------------------------------------- 1 file changed, 32 insertions(+), 154 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1685a1a3ca2..7d32ab657f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1168,9 +1168,9 @@ importers: '@woocommerce/e2e-core-tests': workspace:* '@woocommerce/e2e-environment': workspace:* '@woocommerce/e2e-utils': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 - '@wordpress/eslint-plugin': 7.3.0 '@wordpress/stylelint-config': 19.1.0 allure-commandline: ^2.17.2 autoprefixer: 9.8.6 @@ -1207,9 +1207,9 @@ importers: '@woocommerce/e2e-core-tests': link:../../packages/js/e2e-core-tests '@woocommerce/e2e-environment': link:../../packages/js/e2e-environment '@woocommerce/e2e-utils': link:../../packages/js/e2e-utils + '@woocommerce/eslint-plugin': link:../../packages/js/eslint-plugin '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 - '@wordpress/eslint-plugin': 7.3.0_eslint@6.8.0+typescript@3.9.7 '@wordpress/stylelint-config': 19.1.0_stylelint@13.13.1 allure-commandline: 2.17.2 autoprefixer: 9.8.6 @@ -8260,7 +8260,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.3 + debug: 4.3.4 espree: 9.3.1 globals: 13.12.0 ignore: 5.2.0 @@ -8334,7 +8334,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.3 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -15876,30 +15876,6 @@ packages: - supports-color dev: true - /@wordpress/eslint-plugin/7.3.0_eslint@6.8.0+typescript@3.9.7: - resolution: {integrity: sha512-7wIFzzc14E1XuuT9haBuhoA9FRUGWlbD4Oek+XkiZlzNVqZI3slgbtIFJ6/Mfij1V18rv6Ns9a1cPJLtCU8JHQ==} - peerDependencies: - eslint: ^6 || ^7 - dependencies: - '@wordpress/prettier-config': 0.4.0 - babel-eslint: 10.1.0_eslint@6.8.0 - cosmiconfig: 7.0.1 - eslint: 6.8.0 - eslint-config-prettier: 6.15.0_eslint@6.8.0 - eslint-plugin-jest: 23.20.0_eslint@6.8.0+typescript@3.9.7 - eslint-plugin-jsdoc: 30.7.13_eslint@6.8.0 - eslint-plugin-jsx-a11y: 6.5.1_eslint@6.8.0 - eslint-plugin-prettier: 3.4.1_a3d1a124e53dbc217d8b5198036499fa - eslint-plugin-react: 7.27.0_eslint@6.8.0 - eslint-plugin-react-hooks: 4.3.0_eslint@6.8.0 - globals: 12.4.0 - prettier: /wp-prettier/2.0.5 - requireindex: 1.2.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@wordpress/eslint-plugin/7.3.0_eslint@8.2.0+typescript@4.2.4: resolution: {integrity: sha512-7wIFzzc14E1XuuT9haBuhoA9FRUGWlbD4Oek+XkiZlzNVqZI3slgbtIFJ6/Mfij1V18rv6Ns9a1cPJLtCU8JHQ==} peerDependencies: @@ -15914,7 +15890,7 @@ packages: eslint-plugin-jsdoc: 30.7.13_eslint@8.2.0 eslint-plugin-jsx-a11y: 6.5.1_eslint@8.2.0 eslint-plugin-prettier: 3.4.1_1786dfa66f4aafe2692523a4f07ad974 - eslint-plugin-react: 7.27.0_eslint@8.2.0 + eslint-plugin-react: 7.29.4_eslint@8.2.0 eslint-plugin-react-hooks: 4.3.0_eslint@8.2.0 globals: 12.4.0 prettier: /wp-prettier/2.0.5 @@ -21622,16 +21598,6 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier/6.15.0_eslint@6.8.0: - resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - dependencies: - eslint: 6.8.0 - get-stdin: 6.0.0 - dev: true - /eslint-config-prettier/6.15.0_eslint@7.32.0: resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} hasBin: true @@ -21907,24 +21873,6 @@ packages: - typescript dev: true - /eslint-plugin-jsdoc/30.7.13_eslint@6.8.0: - resolution: {integrity: sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 - dependencies: - comment-parser: 0.7.6 - debug: 4.3.3 - eslint: 6.8.0 - jsdoctypeparser: 9.0.0 - lodash: 4.17.21 - regextras: 0.7.1 - semver: 7.3.5 - spdx-expression-parse: 3.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-jsdoc/30.7.13_eslint@7.32.0: resolution: {integrity: sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==} engines: {node: '>=10'} @@ -21932,7 +21880,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.3 + debug: 4.3.4 eslint: 7.32.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -21950,7 +21898,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 dependencies: comment-parser: 0.7.6 - debug: 4.3.3 + debug: 4.3.4 eslint: 8.2.0 jsdoctypeparser: 9.0.0 lodash: 4.17.21 @@ -22036,27 +21984,6 @@ packages: minimatch: 3.1.2 dev: true - /eslint-plugin-jsx-a11y/6.5.1_eslint@6.8.0: - resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.17.7 - aria-query: 4.2.2 - array-includes: 3.1.4 - ast-types-flow: 0.0.7 - axe-core: 4.3.5 - axobject-query: 2.2.0 - damerau-levenshtein: 1.0.7 - emoji-regex: 9.2.2 - eslint: 6.8.0 - has: 1.0.3 - jsx-ast-utils: 3.2.1 - language-tags: 1.0.5 - minimatch: 3.1.2 - dev: true - /eslint-plugin-jsx-a11y/6.5.1_eslint@7.32.0: resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} engines: {node: '>=4.0'} @@ -22199,23 +22126,6 @@ packages: prettier: /wp-prettier/2.2.1-beta-1 prettier-linter-helpers: 1.0.0 - /eslint-plugin-prettier/3.4.1_a3d1a124e53dbc217d8b5198036499fa: - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 6.8.0 - eslint-config-prettier: 6.15.0_eslint@6.8.0 - prettier: /wp-prettier/2.0.5 - prettier-linter-helpers: 1.0.0 - dev: true - /eslint-plugin-prettier/3.4.1_a80e9f01b6decf22ea798f6e74ee3e78: resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} engines: {node: '>=6.0.0'} @@ -22265,15 +22175,6 @@ packages: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dev: true - /eslint-plugin-react-hooks/4.3.0_eslint@6.8.0: - resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 6.8.0 - dev: true - /eslint-plugin-react-hooks/4.3.0_eslint@7.32.0: resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} engines: {node: '>=10'} @@ -22309,52 +22210,6 @@ packages: eslint: 8.2.0 dev: true - /eslint-plugin-react/7.27.0_eslint@6.8.0: - resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.4 - array.prototype.flatmap: 1.2.5 - doctrine: 2.1.0 - eslint: 6.8.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.2.1 - minimatch: 3.0.4 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.0 - object.values: 1.1.5 - prop-types: 15.7.2 - resolve: 2.0.0-next.3 - semver: 6.3.0 - string.prototype.matchall: 4.0.6 - dev: true - - /eslint-plugin-react/7.27.0_eslint@8.2.0: - resolution: {integrity: sha512-0Ut+CkzpppgFtoIhdzi2LpdpxxBvgFf99eFqWxJnUrO7mMe0eOiNpou6rvNYeVVV6lWZvTah0BFne7k5xHjARg==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.4 - array.prototype.flatmap: 1.2.5 - doctrine: 2.1.0 - eslint: 8.2.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.2.1 - minimatch: 3.0.4 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.0 - object.values: 1.1.5 - prop-types: 15.7.2 - resolve: 2.0.0-next.3 - semver: 6.3.0 - string.prototype.matchall: 4.0.6 - dev: true - /eslint-plugin-react/7.29.4: resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} engines: {node: '>=4'} @@ -22445,6 +22300,29 @@ packages: semver: 6.3.0 string.prototype.matchall: 4.0.6 + /eslint-plugin-react/7.29.4_eslint@8.2.0: + resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.4 + array.prototype.flatmap: 1.2.5 + doctrine: 2.1.0 + eslint: 8.2.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.2.1 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.0 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.3 + semver: 6.3.0 + string.prototype.matchall: 4.0.6 + dev: true + /eslint-plugin-testing-library/5.1.0_eslint@8.12.0+typescript@4.6.2: resolution: {integrity: sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} @@ -22854,7 +22732,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.3 + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -37046,7 +36924,7 @@ packages: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.3 - debug: 4.3.2 + debug: 4.3.4 fast-safe-stringify: 2.1.1 form-data: 3.0.1 formidable: 1.2.2 From f4fab80b18b9ddad7a9333a5098505105b99dd9e Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 28 Apr 2022 11:31:37 +1200 Subject: [PATCH 228/327] changelog --- .../changelog/fix-standardize-lint-woocommerce-plugin | 4 ++++ .../changelog/fix-standardize-lint-woocommerce-plugin | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 plugins/woocommerce-beta-tester/changelog/fix-standardize-lint-woocommerce-plugin create mode 100644 plugins/woocommerce/changelog/fix-standardize-lint-woocommerce-plugin diff --git a/plugins/woocommerce-beta-tester/changelog/fix-standardize-lint-woocommerce-plugin b/plugins/woocommerce-beta-tester/changelog/fix-standardize-lint-woocommerce-plugin new file mode 100644 index 00000000000..df31acdf3b7 --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/fix-standardize-lint-woocommerce-plugin @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: Add lint:fix diff --git a/plugins/woocommerce/changelog/fix-standardize-lint-woocommerce-plugin b/plugins/woocommerce/changelog/fix-standardize-lint-woocommerce-plugin new file mode 100644 index 00000000000..df31acdf3b7 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-standardize-lint-woocommerce-plugin @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize lint scripts: Add lint:fix From bb05a6fc856dbc5e00aa58c4423634de30c288b9 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 12:19:17 +0800 Subject: [PATCH 229/327] Added bail codes for WCA execution paths --- plugins/woocommerce/src/Admin/Loader.php | 32 +++++++++++++++++++ .../src/Internal/Admin/FeaturePlugin.php | 5 +++ .../woocommerce/src/Internal/Admin/Loader.php | 26 ++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Admin/Loader.php b/plugins/woocommerce/src/Admin/Loader.php index daad0c40601..66bf29dde6e 100644 --- a/plugins/woocommerce/src/Admin/Loader.php +++ b/plugins/woocommerce/src/Admin/Loader.php @@ -4,6 +4,7 @@ namespace Automattic\WooCommerce\Admin; use Automattic\WooCommerce\Admin\DeprecatedClassFacade; use Automattic\WooCommerce\Admin\Features\Features; +use Automattic\WooCommerce\Internal\Admin\WCAdminAssets; /** * Loader Class. @@ -12,6 +13,20 @@ use Automattic\WooCommerce\Admin\Features\Features; */ class Loader extends DeprecatedClassFacade { + /** + * The name of the non-deprecated class that this facade covers. + * + * @var string + */ + protected static $facade_over_classname = 'Automattic\WooCommerce\Internal\Admin\Loader'; + + /** + * The version that this class was deprecated in. + * + * @var string + */ + protected static $deprecated_in_version = '6.3.0'; + /** * Returns if a specific wc-admin feature is enabled. * @@ -55,4 +70,21 @@ class Loader extends DeprecatedClassFacade { wc_deprecated_function( 'is_embed_page', '6.3', '\Automattic\WooCommerce\Admin\PageController::is_embed_page()' ); return PageController::is_embed_page(); } + + /** + * Determines if a minified JS file should be served. + * + * @param boolean $script_debug Only serve unminified files if script debug is on. + * @return boolean If js asset should use minified version. + * + * @deprecated since 6.3.0, use WCAdminAssets::should_use_minified_js_file( $script_debug ) + */ + public static function should_use_minified_js_file( $script_debug ) { + // Bail if WC isn't initialized (This can be called from WCAdmin's entrypoint). + if ( ! defined( 'WC_ABSPATH' ) ) { + return; + } + wc_deprecated_function( 'should_use_minified_js_file', '6.3', '\Automattic\WooCommerce\Internal\Admin\WCAdminAssets::should_use_minified_js_file()' ); + return WCAdminAssets::should_use_minified_js_file( $script_debug ); + } } diff --git a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php index 49dac42a47b..0cc3d0ff3cf 100644 --- a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php +++ b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php @@ -68,6 +68,11 @@ class FeaturePlugin { * Init the feature plugin, only if we can detect both Gutenberg and WooCommerce. */ public function init() { + // Bail if WC isn't initialized (This can be called from WCAdmin's entrypoint). + if ( ! defined( 'WC_ABSPATH' ) ) { + return; + } + // Load the page controller functions file first to prevent fatal errors when disabling WooCommerce Admin. $this->define_constants(); require_once WC_ADMIN_ABSPATH . '/includes/react-admin/page-controller-functions.php'; diff --git a/plugins/woocommerce/src/Internal/Admin/Loader.php b/plugins/woocommerce/src/Internal/Admin/Loader.php index 6de085b75e2..70032209e04 100644 --- a/plugins/woocommerce/src/Internal/Admin/Loader.php +++ b/plugins/woocommerce/src/Internal/Admin/Loader.php @@ -84,7 +84,7 @@ class Loader { */ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); - add_action( 'admin_init', array( __CLASS__, 'is_using_installed_wc_admin_plugin' ) ); + add_action( 'admin_init', array( __CLASS__, 'deactivate_wc_admin_plugin' ) ); } /** @@ -111,6 +111,30 @@ class Loader { } } + /** + * Verifies which plugin version is being used. If WooCommerce Admin is installed and activated but not in use + * it will show a warning. + */ + public static function deactivate_wc_admin_plugin() { + if ( PluginsHelper::is_plugin_active( 'woocommerce-admin' ) ) { + $path = PluginsHelper::get_plugin_path_from_slug( 'woocommerce-admin' ); + deactivate_plugins( $path ); + add_action( + 'admin_notices', + function() { + echo '

'; + printf( + /* translators: %s: is referring to the plugin's name. */ + esc_html__( '%1$s plugin has been deactivated to avoid conflicts with %2$s plugin.', 'woocommerce' ), + 'WooCommerce Admin', + 'WooCommerce' + ); + echo '

'; + } + ); + } + } + /** * Returns breadcrumbs for the current page. */ From bc7830b670b7297f60af7c41db4381a6ac400dac Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 12:51:53 +0800 Subject: [PATCH 230/327] Changelog --- plugins/woocommerce/changelog/fix-32797-wca-fatal | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32797-wca-fatal diff --git a/plugins/woocommerce/changelog/fix-32797-wca-fatal b/plugins/woocommerce/changelog/fix-32797-wca-fatal new file mode 100644 index 00000000000..36012608bfa --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32797-wca-fatal @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Fix fatal errors when activated alongside WooCommerce Admin plugin From 89722dfafc0e7c464ccf747641c6134473fad8f5 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 14:23:48 +0800 Subject: [PATCH 231/327] Remove deprecated warning and make use of safe define --- plugins/woocommerce/src/Admin/Loader.php | 1 - plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/woocommerce/src/Admin/Loader.php b/plugins/woocommerce/src/Admin/Loader.php index 66bf29dde6e..ce304b76987 100644 --- a/plugins/woocommerce/src/Admin/Loader.php +++ b/plugins/woocommerce/src/Admin/Loader.php @@ -84,7 +84,6 @@ class Loader extends DeprecatedClassFacade { if ( ! defined( 'WC_ABSPATH' ) ) { return; } - wc_deprecated_function( 'should_use_minified_js_file', '6.3', '\Automattic\WooCommerce\Internal\Admin\WCAdminAssets::should_use_minified_js_file()' ); return WCAdminAssets::should_use_minified_js_file( $script_debug ); } } diff --git a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php index 0cc3d0ff3cf..0e0a55c6b5b 100644 --- a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php +++ b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php @@ -120,7 +120,7 @@ class FeaturePlugin { * @deprecated 3.3.0 * @var string */ - define( 'WC_ADMIN_VERSION_NUMBER', '3.3.0' ); + $this->define( 'WC_ADMIN_VERSION_NUMBER', '3.3.0' ); } /** From 4dec2483fc97671dd8c73f8241a2130b490eca95 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 14:34:10 +0800 Subject: [PATCH 232/327] Added comment and remove old function --- .../woocommerce/src/Internal/Admin/Loader.php | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/plugins/woocommerce/src/Internal/Admin/Loader.php b/plugins/woocommerce/src/Internal/Admin/Loader.php index 70032209e04..7410c9e31d6 100644 --- a/plugins/woocommerce/src/Internal/Admin/Loader.php +++ b/plugins/woocommerce/src/Internal/Admin/Loader.php @@ -88,32 +88,7 @@ class Loader { } /** - * Verifies which plugin version is being used. If WooCommerce Admin is installed and activated but not in use - * it will show a warning. - */ - public static function is_using_installed_wc_admin_plugin() { - if ( PluginsHelper::is_plugin_active( 'woocommerce-admin' ) ) { - $path = PluginsHelper::get_plugin_data( 'woocommerce-admin' ); - if ( WC_ADMIN_VERSION_NUMBER !== $path['Version'] ) { - add_action( - 'admin_notices', - function() { - echo '

'; - printf( - /* translators: %s: is referring to the plugin's name. */ - esc_html__( 'You have the %s plugin activated but it is not being used.', 'woocommerce' ), - 'WooCommerce Admin' - ); - echo '

'; - } - ); - } - } - } - - /** - * Verifies which plugin version is being used. If WooCommerce Admin is installed and activated but not in use - * it will show a warning. + * If WooCommerce Admin is installed and activated, it will attempt to deactivate and show a notice. */ public static function deactivate_wc_admin_plugin() { if ( PluginsHelper::is_plugin_active( 'woocommerce-admin' ) ) { From 83be522465ea8e17a01c4e52792f38d12f2ddd31 Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 17:25:22 +0800 Subject: [PATCH 233/327] Update plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php --- .../woocommerce/src/Internal/Admin/FeaturePlugin.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php index 0e0a55c6b5b..f22b3152d4a 100644 --- a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php +++ b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php @@ -120,7 +120,15 @@ class FeaturePlugin { * @deprecated 3.3.0 * @var string */ - $this->define( 'WC_ADMIN_VERSION_NUMBER', '3.3.0' ); + if ( ! defined( 'WC_ADMIN_VERSION_NUMBER' ) ) { + /** + * Define the current WC Admin version. + * + * @deprecated 3.3.0 + * @var string + */ + define( 'WC_ADMIN_VERSION_NUMBER', '3.3.0' ); + } } /** From 297e21038cb7c68185e840808d66095160ee786b Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Thu, 28 Apr 2022 17:29:39 +0800 Subject: [PATCH 234/327] Lint --- plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php index f22b3152d4a..9bb247516c4 100644 --- a/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php +++ b/plugins/woocommerce/src/Internal/Admin/FeaturePlugin.php @@ -124,9 +124,9 @@ class FeaturePlugin { /** * Define the current WC Admin version. * - * @deprecated 3.3.0 - * @var string - */ + * @deprecated 3.3.0 + * @var string + */ define( 'WC_ADMIN_VERSION_NUMBER', '3.3.0' ); } } From 0919e241ae212c45801db4f7ecc1c071a92792fb Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 15:35:24 +0800 Subject: [PATCH 235/327] Move types to ./types.ts --- packages/js/data/src/onboarding/selectors.ts | 131 ++----------------- packages/js/data/src/onboarding/types.ts | 105 +++++++++++++++ packages/js/data/src/plugins/actions.ts | 55 +------- packages/js/data/src/plugins/types.ts | 19 +++ 4 files changed, 136 insertions(+), 174 deletions(-) diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index 49cc396fab6..f88a0efa041 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -6,8 +6,14 @@ import createSelector from 'rememo'; /** * Internal dependencies */ -import { TaskType, TaskListType } from './types'; -import { WPDataSelectors } from '../types'; +import { + TaskType, + TaskListType, + OnboardingState, + ExtensionList, + ProfileItemsState, + Product, +} from './types'; import { Plugin } from '../plugins/types'; export const getFreeExtensions = ( @@ -22,8 +28,6 @@ export const getProfileItems = ( return state.profileItems || {}; }; -const EMPTY_ARRAY: Product[] = []; - export const getTaskLists = createSelector( ( state: OnboardingState ): TaskListType[] => { return Object.values( state.taskLists ); @@ -88,122 +92,5 @@ export const getEmailPrefill = ( state: OnboardingState ): string => { }; export const getProductTypes = ( state: OnboardingState ): Product[] => { - return state.productTypes || EMPTY_ARRAY; -}; - -// Types -export type OnboardingSelectors = { - getProfileItems: () => ReturnType< typeof getProfileItems >; - getPaymentGatewaySuggestions: () => ReturnType< - typeof getPaymentGatewaySuggestions - >; - getOnboardingError: () => ReturnType< typeof getOnboardingError >; - isOnboardingRequesting: () => ReturnType< typeof isOnboardingRequesting >; - getTaskListsByIds: ( - ids: string[] - ) => ReturnType< typeof getTaskListsByIds >; - getTaskLists: () => ReturnType< typeof getTaskLists >; - getTaskList: ( id: string ) => ReturnType< typeof getTaskList >; - getFreeExtensions: () => ReturnType< typeof getFreeExtensions >; -} & WPDataSelectors; - -export type OnboardingState = { - freeExtensions: ExtensionList[]; - profileItems: ProfileItemsState; - taskLists: Record< string, TaskListType >; - paymentMethods: Plugin[]; - productTypes: Product[]; - emailPrefill: string; - // TODO clarify what the error record's type is - errors: Record< string, unknown >; - requesting: Record< string, boolean >; -}; - -export type Industry = { - slug: string; -}; - -export type ProductCount = '0' | '1-10' | '11-100' | '101 - 1000' | '1000+'; - -export type ProductTypeSlug = - | 'physical' - | 'bookings' - | 'download' - | 'memberships' - | 'product-add-ons' - | 'product-bundles' - | 'subscriptions'; - -export type OtherPlatformSlug = - | 'shopify' - | 'bigcommerce' - | 'wix' - | 'amazon' - | 'ebay' - | 'etsy' - | 'squarespace' - | 'other'; - -export type RevenueTypeSlug = - | 'none' - | 'rather-not-say' - | 'up-to-2500' - | '2500-10000' - | '10000-50000' - | '50000-250000' - | 'more-than-250000'; - -export type ProfileItemsState = { - business_extensions: [ ] | null; - completed: boolean | null; - industry: Industry[] | null; - number_employees: string | null; - other_platform: OtherPlatformSlug | null; - other_platform_name: string | null; - product_count: ProductCount | null; - product_types: ProductTypeSlug[] | null; - revenue: RevenueTypeSlug | null; - selling_venues: string | null; - setup_client: boolean | null; - skipped: boolean | null; - theme: string | null; - wccom_connected: boolean | null; - is_agree_marketing: boolean | null; - store_email: string | null; -}; - -export type FieldLocale = { - locale: string; - label: string; -}; - -export type MethodFields = { - name: string; - option?: string; - label?: string; - locales?: FieldLocale[]; - type?: string; - value?: string; -}; - -export type Product = { - default?: boolean; - label: string; - product?: number; -}; - -export type ExtensionList = { - key: string; - title: string; - plugins: Extension[]; -}; - -export type Extension = { - description: string; - key: string; - image_url: string; - manage_url: string; - name: string; - is_built_by_wc: boolean; - is_visible: boolean; + return state.productTypes || []; }; diff --git a/packages/js/data/src/onboarding/types.ts b/packages/js/data/src/onboarding/types.ts index 0f51b826452..01d6a97cf01 100644 --- a/packages/js/data/src/onboarding/types.ts +++ b/packages/js/data/src/onboarding/types.ts @@ -1,3 +1,8 @@ +/** + * Internal dependencies + */ +import { Plugin } from '../plugins/types'; + export type TaskType = { actionLabel?: string; actionUrl?: string; @@ -51,3 +56,103 @@ export type TaskListType = { isCollapsible?: boolean; isExpandable?: boolean; }; + +export type OnboardingState = { + freeExtensions: ExtensionList[]; + profileItems: ProfileItemsState; + taskLists: Record< string, TaskListType >; + paymentMethods: Plugin[]; + productTypes: Product[]; + emailPrefill: string; + // TODO clarify what the error record's type is + errors: Record< string, unknown >; + requesting: Record< string, boolean >; +}; + +export type Industry = { + slug: string; +}; + +export type ProductCount = '0' | '1-10' | '11-100' | '101 - 1000' | '1000+'; + +export type ProductTypeSlug = + | 'physical' + | 'bookings' + | 'download' + | 'memberships' + | 'product-add-ons' + | 'product-bundles' + | 'subscriptions'; + +export type OtherPlatformSlug = + | 'shopify' + | 'bigcommerce' + | 'wix' + | 'amazon' + | 'ebay' + | 'etsy' + | 'squarespace' + | 'other'; + +export type RevenueTypeSlug = + | 'none' + | 'rather-not-say' + | 'up-to-2500' + | '2500-10000' + | '10000-50000' + | '50000-250000' + | 'more-than-250000'; + +export type ProfileItemsState = { + business_extensions: [ ] | null; + completed: boolean | null; + industry: Industry[] | null; + number_employees: string | null; + other_platform: OtherPlatformSlug | null; + other_platform_name: string | null; + product_count: ProductCount | null; + product_types: ProductTypeSlug[] | null; + revenue: RevenueTypeSlug | null; + selling_venues: string | null; + setup_client: boolean | null; + skipped: boolean | null; + theme: string | null; + wccom_connected: boolean | null; + is_agree_marketing: boolean | null; + store_email: string | null; +}; + +export type FieldLocale = { + locale: string; + label: string; +}; + +export type MethodFields = { + name: string; + option?: string; + label?: string; + locales?: FieldLocale[]; + type?: string; + value?: string; +}; + +export type Product = { + default?: boolean; + label: string; + product?: number; +}; + +export type ExtensionList = { + key: string; + title: string; + plugins: Extension[]; +}; + +export type Extension = { + description: string; + key: string; + image_url: string; + manage_url: string; + name: string; + is_built_by_wc: boolean; +}; diff --git a/packages/js/data/src/plugins/actions.ts b/packages/js/data/src/plugins/actions.ts index 0bed3ac7d1c..1ebc8b8e33f 100644 --- a/packages/js/data/src/plugins/actions.ts +++ b/packages/js/data/src/plugins/actions.ts @@ -13,7 +13,7 @@ import { controls } from '@wordpress/data'; /** * Internal dependencies */ -import { pluginNames, STORE_NAME } from './constants'; +import { STORE_NAME } from './constants'; import { ACTION_TYPES as TYPES } from './action-types'; import { WC_ADMIN_NAMESPACE } from '../constants'; import { WPError } from '../types'; @@ -22,6 +22,8 @@ import { PluginNames, SelectorKeysWithActions, RecommendedTypes, + InstallPluginsResponse, + ActivatePluginsResponse, } from './types'; // Can be removed in WP 5.9, wp.data is supported in >5.7. @@ -30,63 +32,12 @@ const dispatch = const resolveSelect = controls && controls.resolveSelect ? controls.resolveSelect : select; -type PluginsResponse< PluginData > = { - data: PluginData; - errors: WPError< PluginNames >; - success: boolean; - message: string; -} & Response; - -export type InstallPluginsResponse = PluginsResponse< { - installed: string[]; - results: Record< string, boolean >; - install_time?: Record< string, number >; -} >; - -type ActivatePluginsResponse = PluginsResponse< { - activated: string[]; - active: string[]; -} >; - -function isWPError( - error: WPError< PluginNames > | Error | string -): error is WPError< PluginNames > { - return ( error as WPError ).errors !== undefined; -} - class PluginError extends Error { constructor( message: string, public data: unknown ) { super( message ); } } -function formatErrors( - response: WPError< PluginNames > | Error | string -): string { - if ( isWPError( response ) ) { - // Replace the slug with a plugin name if a constant exists. - ( Object.keys( response.errors ) as PluginNames[] ).forEach( - ( plugin ) => { - response.errors[ plugin ] = response.errors[ plugin ].map( - ( pluginError ) => { - return pluginNames[ plugin ] - ? pluginError.replace( - `\`${ plugin }\``, - pluginNames[ plugin ] - ) - : pluginError; - } - ); - } - ); - } else if ( typeof response === 'string' ) { - return response; - } else { - return response.message; - } - return ''; -} - const formatErrorMessage = ( pluginErrors: Record< PluginNames, string[] >, actionType = 'install' diff --git a/packages/js/data/src/plugins/types.ts b/packages/js/data/src/plugins/types.ts index c1f62fb7afd..85156491306 100644 --- a/packages/js/data/src/plugins/types.ts +++ b/packages/js/data/src/plugins/types.ts @@ -2,6 +2,7 @@ * Internal dependencies */ import { pluginNames } from './constants'; +import { WPError } from '../types'; export type RecommendedTypes = 'payments'; @@ -61,3 +62,21 @@ export type PaypalOnboardingStatus = { onboarded: boolean; }; }; + +type PluginsResponse< PluginData > = { + data: PluginData; + errors: WPError< PluginNames >; + success: boolean; + message: string; +} & Response; + +export type InstallPluginsResponse = PluginsResponse< { + installed: string[]; + results: Record< string, boolean >; + install_time?: Record< string, number >; +} >; + +export type ActivatePluginsResponse = PluginsResponse< { + activated: string[]; + active: string[]; +} >; From 0a986dd15363eeddee5eebfb883e5fa173ef1eff Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 15:52:40 +0800 Subject: [PATCH 236/327] Update onboarding/selectors.ts --- packages/js/data/src/onboarding/selectors.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/js/data/src/onboarding/selectors.ts b/packages/js/data/src/onboarding/selectors.ts index f88a0efa041..b4ed40c07d7 100644 --- a/packages/js/data/src/onboarding/selectors.ts +++ b/packages/js/data/src/onboarding/selectors.ts @@ -14,6 +14,7 @@ import { ProfileItemsState, Product, } from './types'; +import { WPDataSelectors } from '../types'; import { Plugin } from '../plugins/types'; export const getFreeExtensions = ( @@ -94,3 +95,18 @@ export const getEmailPrefill = ( state: OnboardingState ): string => { export const getProductTypes = ( state: OnboardingState ): Product[] => { return state.productTypes || []; }; + +export type OnboardingSelectors = { + getProfileItems: () => ReturnType< typeof getProfileItems >; + getPaymentGatewaySuggestions: () => ReturnType< + typeof getPaymentGatewaySuggestions + >; + getOnboardingError: () => ReturnType< typeof getOnboardingError >; + isOnboardingRequesting: () => ReturnType< typeof isOnboardingRequesting >; + getTaskListsByIds: ( + ids: string[] + ) => ReturnType< typeof getTaskListsByIds >; + getTaskLists: () => ReturnType< typeof getTaskLists >; + getTaskList: ( id: string ) => ReturnType< typeof getTaskList >; + getFreeExtensions: () => ReturnType< typeof getFreeExtensions >; +} & WPDataSelectors; From 8f06c5aa20b3dfa945c0c3bc74b1b11cf65dc04e Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Mon, 25 Apr 2022 15:53:54 +0800 Subject: [PATCH 237/327] Reorder functions/imports/exports in @woocommerce/data --- packages/js/data/src/index.ts | 154 ++++++++++++------------ packages/js/data/src/plugins/actions.ts | 73 +++++------ 2 files changed, 112 insertions(+), 115 deletions(-) diff --git a/packages/js/data/src/index.ts b/packages/js/data/src/index.ts index 29cf9b2a4b9..8267b184de1 100644 --- a/packages/js/data/src/index.ts +++ b/packages/js/data/src/index.ts @@ -3,6 +3,70 @@ */ import '@wordpress/core-data'; +// Export store names +export { SETTINGS_STORE_NAME } from './settings'; +export { PLUGINS_STORE_NAME } from './plugins'; +export { ONBOARDING_STORE_NAME } from './onboarding'; +export { USER_STORE_NAME } from './user'; +export { REVIEWS_STORE_NAME } from './reviews'; +export { NOTES_STORE_NAME } from './notes'; +export { REPORTS_STORE_NAME } from './reports'; +export { COUNTRIES_STORE_NAME } from './countries'; +export { NAVIGATION_STORE_NAME } from './navigation'; +export { OPTIONS_STORE_NAME } from './options'; +export { ITEMS_STORE_NAME } from './items'; +export { PAYMENT_GATEWAYS_STORE_NAME } from './payment-gateways'; + +// Export hooks +export { withSettingsHydration } from './settings/with-settings-hydration'; +export { withOnboardingHydration } from './onboarding/with-onboarding-hydration'; +export { withCurrentUserHydration } from './user/with-current-user-hydration'; +export { withNavigationHydration } from './navigation/with-navigation-hydration'; +export { withPluginsHydration } from './plugins/with-plugins-hydration'; +export { + withOptionsHydration, + useOptionsHydration, +} from './options/with-options-hydration'; +export { useSettings } from './settings/use-settings'; +export { useUserPreferences } from './user/use-user-preferences'; +export { useUser } from './user/use-user'; + +// Export utils +export { getVisibleTasks } from './onboarding/utils'; +export { getLeaderboard, searchItemsByString } from './items/utils'; +export { + getFilterQuery, + getSummaryNumbers, + getReportTableData, + getReportTableQuery, + getReportChartData, + getTooltipValueFormat, +} from './reports/utils'; + +// Export constants +export { pluginNames } from './plugins/constants'; +export { EXPORT_STORE_NAME } from './export'; +export { IMPORT_STORE_NAME } from './import'; +export { + MAX_PER_PAGE, + QUERY_DEFAULTS, + NAMESPACE, + WC_ADMIN_NAMESPACE, + WCS_NAMESPACE, + SECOND, + MINUTE, + HOUR, + DAY, + WEEK, + MONTH, +} from './constants'; + +// Export types +export * from './types'; +export * from './countries/types'; +export * from './onboarding/types'; +export * from './plugins/types'; + /** * Internal dependencies */ @@ -18,82 +82,6 @@ import type { REPORTS_STORE_NAME } from './reports'; import type { ITEMS_STORE_NAME } from './items'; import type { COUNTRIES_STORE_NAME } from './countries'; import type { PAYMENT_GATEWAYS_STORE_NAME } from './payment-gateways'; -import { OnboardingSelectors } from './onboarding/selectors'; -import { PaymentSelectors } from './payment-gateways/selectors'; -import { WPDataSelectors } from './types'; -import { PluginSelectors } from './plugins/selectors'; - -export * from './types'; -export { SETTINGS_STORE_NAME } from './settings'; -export { withSettingsHydration } from './settings/with-settings-hydration'; -export { useSettings } from './settings/use-settings'; - -export { PLUGINS_STORE_NAME } from './plugins'; -export type { Plugin } from './plugins/types'; -export type { InstallPluginsResponse } from './plugins/actions'; -export { ActionDispatchers as PluginsStoreActions } from './plugins/actions'; -export { pluginNames } from './plugins/constants'; -export { withPluginsHydration } from './plugins/with-plugins-hydration'; - -export { ONBOARDING_STORE_NAME } from './onboarding'; -export { withOnboardingHydration } from './onboarding/with-onboarding-hydration'; -export { getVisibleTasks } from './onboarding/utils'; -export type { TaskType, TaskListType } from './onboarding/types'; -export type { Extension, ExtensionList } from './onboarding/selectors'; - -export { USER_STORE_NAME } from './user'; -export { withCurrentUserHydration } from './user/with-current-user-hydration'; -export { useUser } from './user/use-user'; -export { useUserPreferences } from './user/use-user-preferences'; - -export { OPTIONS_STORE_NAME } from './options'; -export { - withOptionsHydration, - useOptionsHydration, -} from './options/with-options-hydration'; - -export { REVIEWS_STORE_NAME } from './reviews'; - -export { NOTES_STORE_NAME } from './notes'; - -export { REPORTS_STORE_NAME } from './reports'; - -export { ITEMS_STORE_NAME } from './items'; -export { getLeaderboard, searchItemsByString } from './items/utils'; - -export { COUNTRIES_STORE_NAME } from './countries'; - -export { NAVIGATION_STORE_NAME } from './navigation'; -export { withNavigationHydration } from './navigation/with-navigation-hydration'; - -export { PAYMENT_GATEWAYS_STORE_NAME } from './payment-gateways'; - -export { - getFilterQuery, - getSummaryNumbers, - getReportTableData, - getReportTableQuery, - getReportChartData, - getTooltipValueFormat, -} from './reports/utils'; - -export { - MAX_PER_PAGE, - QUERY_DEFAULTS, - NAMESPACE, - WC_ADMIN_NAMESPACE, - WCS_NAMESPACE, - SECOND, - MINUTE, - HOUR, - DAY, - WEEK, - MONTH, -} from './constants'; - -export { EXPORT_STORE_NAME } from './export'; - -export { IMPORT_STORE_NAME } from './import'; export type WCDataStoreName = | typeof REVIEWS_STORE_NAME @@ -109,6 +97,14 @@ export type WCDataStoreName = | typeof COUNTRIES_STORE_NAME | typeof PAYMENT_GATEWAYS_STORE_NAME; +/** + * Internal dependencies + */ +import { WPDataSelectors } from './types'; +import { PaymentSelectors } from './payment-gateways/selectors'; +import { PluginSelectors } from './plugins/selectors'; +import { OnboardingSelectors } from './onboarding/selectors'; + // As we add types to all the package selectors we can fill out these unknown types with real ones. See one // of the already typed selectors for an example of how you can do this. export type WCSelectorType< T > = T extends typeof REVIEWS_STORE_NAME @@ -140,6 +136,6 @@ export type WCSelectorType< T > = T extends typeof REVIEWS_STORE_NAME export interface WCDataSelector { < T extends WCDataStoreName >( storeName: T ): WCSelectorType< T >; } -export * from './onboarding/selectors'; -export * from './onboarding/types'; -export * from './countries/types'; + +// Other exports +export { ActionDispatchers as PluginsStoreActions } from './plugins/actions'; diff --git a/packages/js/data/src/plugins/actions.ts b/packages/js/data/src/plugins/actions.ts index 1ebc8b8e33f..a4a0894d0e5 100644 --- a/packages/js/data/src/plugins/actions.ts +++ b/packages/js/data/src/plugins/actions.ts @@ -121,6 +121,43 @@ export function updateJetpackConnectUrl( }; } +export const createErrorNotice = ( + errorMessage: string +): { + type: 'CREATE_NOTICE'; + [ key: string ]: unknown; +} => { + return dispatch( 'core/notices', 'createNotice', 'error', errorMessage ); +}; + +export function setPaypalOnboardingStatus( + status: Partial< PaypalOnboardingStatus > +): { + type: TYPES.SET_PAYPAL_ONBOARDING_STATUS; + paypalOnboardingStatus: Partial< PaypalOnboardingStatus >; +} { + return { + type: TYPES.SET_PAYPAL_ONBOARDING_STATUS as const, + paypalOnboardingStatus: status, + }; +} + +export function setRecommendedPlugins( + type: string, + plugins: Plugin[] +): { + type: TYPES.SET_RECOMMENDED_PLUGINS; + recommendedType: string; + plugins: Plugin[]; +} { + return { + type: TYPES.SET_RECOMMENDED_PLUGINS as const, + recommendedType: type, + plugins, + }; +} + +// Action Creator Generators export function* installPlugins( plugins: string[] ) { yield setIsRequesting( 'installPlugins', true ); @@ -209,15 +246,6 @@ export function* installAndActivatePlugins( plugins: string[] ) { } } -export const createErrorNotice = ( - errorMessage: string -): { - type: 'CREATE_NOTICE'; - [ key: string ]: unknown; -} => { - return dispatch( 'core/notices', 'createNotice', 'error', errorMessage ); -}; - export function* connectToJetpack( getAdminLink: ( endpoint: string ) => string ) { @@ -286,33 +314,6 @@ export function* connectToJetpackWithFailureRedirect( } } -export function setPaypalOnboardingStatus( - status: Partial< PaypalOnboardingStatus > -): { - type: TYPES.SET_PAYPAL_ONBOARDING_STATUS; - paypalOnboardingStatus: Partial< PaypalOnboardingStatus >; -} { - return { - type: TYPES.SET_PAYPAL_ONBOARDING_STATUS as const, - paypalOnboardingStatus: status, - }; -} - -export function setRecommendedPlugins( - type: string, - plugins: Plugin[] -): { - type: TYPES.SET_RECOMMENDED_PLUGINS; - recommendedType: string; - plugins: Plugin[]; -} { - return { - type: TYPES.SET_RECOMMENDED_PLUGINS as const, - recommendedType: type, - plugins, - }; -} - const SUPPORTED_TYPES = [ 'payments' ]; export function* dismissRecommendedPlugins( type: RecommendedTypes ) { if ( ! SUPPORTED_TYPES.includes( type ) ) { From ef3f48bda65b95b319a017e50878dd38e0ed81a4 Mon Sep 17 00:00:00 2001 From: moon Date: Thu, 28 Apr 2022 11:22:54 -0700 Subject: [PATCH 238/327] Add is_visible --- packages/js/data/src/onboarding/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/js/data/src/onboarding/types.ts b/packages/js/data/src/onboarding/types.ts index 01d6a97cf01..5bc46bb1237 100644 --- a/packages/js/data/src/onboarding/types.ts +++ b/packages/js/data/src/onboarding/types.ts @@ -155,4 +155,5 @@ export type Extension = { manage_url: string; name: string; is_built_by_wc: boolean; + is_visible: boolean; }; From 082f55bee10ae5dd856091aedd1b9e2036555e29 Mon Sep 17 00:00:00 2001 From: moon Date: Thu, 28 Apr 2022 13:42:06 -0700 Subject: [PATCH 239/327] Run clean before running build commands --- plugins/woocommerce-admin/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index f7149f13fde..5adf6e40e5b 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -11,11 +11,11 @@ "scripts": { "analyze": "cross-env NODE_ENV=production ANALYZE=true webpack", "prebuild": "pnpm run install-if-deps-outdated", - "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && cross-env NODE_ENV=production WC_ADMIN_PHASE=core webpack", + "build": "WC_ADMIN_PHASE=core pnpm run clean && pnpm run build:packages && pnpm run build:feature-config && cross-env NODE_ENV=production WC_ADMIN_PHASE=core webpack", "build:feature-config": "php ../woocommerce/bin/generate-feature-config.php", "build:packages": "cross-env NODE_ENV=production pnpm run:packages -- build", "clean": "rimraf ../woocommerce/assets/client/admin/* && pnpm run:packages -- clean --parallel", - "client:watch": "cross-env WC_ADMIN_PHASE=development pnpm run build:feature-config && cross-env WC_ADMIN_PHASE=development webpack --watch", + "client:watch": "cross-env WC_ADMIN_PHASE=development && pnpm run clean && pnpm run build:packages && pnpm run build:feature-config && cross-env WC_ADMIN_PHASE=development webpack --watch", "create-hook-reference": "node ./bin/hook-reference/index.js", "create-wc-extension": "node ./bin/starter-pack/starter-pack.js", "predev": "pnpm run -s install-if-deps-outdated", From dc00aff77e2947274874d90cd9450a78289ed7aa Mon Sep 17 00:00:00 2001 From: moon Date: Thu, 28 Apr 2022 14:28:01 -0700 Subject: [PATCH 240/327] Run dev after clean command --- plugins/woocommerce-admin/package.json | 4 ++-- plugins/woocommerce-admin/project.json | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/package.json b/plugins/woocommerce-admin/package.json index 5adf6e40e5b..59336547fc2 100644 --- a/plugins/woocommerce-admin/package.json +++ b/plugins/woocommerce-admin/package.json @@ -11,11 +11,11 @@ "scripts": { "analyze": "cross-env NODE_ENV=production ANALYZE=true webpack", "prebuild": "pnpm run install-if-deps-outdated", - "build": "WC_ADMIN_PHASE=core pnpm run clean && pnpm run build:packages && pnpm run build:feature-config && cross-env NODE_ENV=production WC_ADMIN_PHASE=core webpack", + "build": "pnpm run clean && WC_ADMIN_PHASE=core pnpm run build:packages && WC_ADMIN_PHASE=core pnpm run build:feature-config && cross-env NODE_ENV=production WC_ADMIN_PHASE=core webpack", "build:feature-config": "php ../woocommerce/bin/generate-feature-config.php", "build:packages": "cross-env NODE_ENV=production pnpm run:packages -- build", "clean": "rimraf ../woocommerce/assets/client/admin/* && pnpm run:packages -- clean --parallel", - "client:watch": "cross-env WC_ADMIN_PHASE=development && pnpm run clean && pnpm run build:packages && pnpm run build:feature-config && cross-env WC_ADMIN_PHASE=development webpack --watch", + "client:watch": "cross-env WC_ADMIN_PHASE=development pnpm run build:feature-config && cross-env WC_ADMIN_PHASE=development webpack --watch", "create-hook-reference": "node ./bin/hook-reference/index.js", "create-wc-extension": "node ./bin/starter-pack/starter-pack.js", "predev": "pnpm run -s install-if-deps-outdated", diff --git a/plugins/woocommerce-admin/project.json b/plugins/woocommerce-admin/project.json index 3a2c2b60740..73fec286463 100644 --- a/plugins/woocommerce-admin/project.json +++ b/plugins/woocommerce-admin/project.json @@ -20,6 +20,7 @@ "executor": "@nrwl/workspace:run-commands", "options": { "commands": [ + "WC_ADMIN_PHASE=development pnpm nx clean woocommerce-admin", "WC_ADMIN_PHASE=development pnpm nx dev woocommerce-admin", "pnpm nx watch woocommerce-admin" ], From d94769982b8a571197018ba4e5a4d34ca8f700af Mon Sep 17 00:00:00 2001 From: Ilyas Foo Date: Fri, 29 Apr 2022 09:09:06 +0800 Subject: [PATCH 241/327] Update e2e to use table instead --- packages/js/admin-e2e-tests/src/pages/WcSettings.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts index 0b5f78cf0a7..c534dc077bd 100644 --- a/packages/js/admin-e2e-tests/src/pages/WcSettings.ts +++ b/packages/js/admin-e2e-tests/src/pages/WcSettings.ts @@ -44,7 +44,7 @@ export class WcSettings extends BasePage { async paymentMethodIsEnabled( method = '' ): Promise< boolean > { await this.navigate( 'checkout' ); - await waitForElementByText( 'h2', 'Payment methods' ); + await waitForElementByText( 'th', 'Method' ); const className = await getAttribute( `tr[data-gateway_id=${ method }] .woocommerce-input-toggle`, 'className' @@ -58,7 +58,7 @@ export class WcSettings extends BasePage { async cleanPaymentMethods(): Promise< void > { await this.navigate( 'checkout' ); - await waitForElementByText( 'h2', 'Payment methods' ); + await waitForElementByText( 'th', 'Method' ); const paymentMethods = await page.$$( 'span.woocommerce-input-toggle' ); for ( const method of paymentMethods ) { if ( From 5f233898bf5a54dc56c1dc78df66c4fad434bc84 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 13:17:33 +0800 Subject: [PATCH 242/327] Implement functionalities of experimental products --- .../fills/experimental-products/constants.tsx | 17 +++ .../fills/experimental-products/index.scss | 46 ++++++- .../fills/experimental-products/index.tsx | 117 +++++++++++++++++- .../fills/experimental-products/stack.scss | 3 +- .../fills/experimental-products/stack.tsx | 9 +- .../use-create-product-by-type.ts | 56 +++++++++ .../fills/experimental-products/utils.tsx | 18 ++- 7 files changed, 255 insertions(+), 11 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index 59014681ab3..fb15bb9b3a0 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -73,3 +73,20 @@ export const productTypes = Object.freeze( [ export type ProductType = typeof productTypes[ number ]; export type ProductTypeKey = ProductType[ 'key' ]; + +export const onboardingProductTypesToSurfaced: Readonly< + Record< string, ProductTypeKey[] > +> = Object.freeze( { + physical: [ 'physical', 'variable', 'grouped' ], + subscriptions: [ 'subscription' ], + downloads: [ 'digital' ], + // key in alphabetical and ascending order for mapping + 'physical,subscriptions': [ 'physical', 'subscription' ], + 'downloads,physical': [ 'physical', 'digital' ], + 'downloads,subscriptions': [ 'digital', 'subscription' ], + 'downloads,physical,subscriptions': [ + 'physical', + 'digital', + 'subscription', + ], +} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss index 2ce697f5815..f82e3027bc5 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss @@ -1,6 +1,50 @@ .woocommerce-task-products { display: flex; flex-direction: column; - width: 550px; + max-width: 550px; margin: auto; + + a { + text-decoration: none; + color: #007cba; + } + + .woocommerce-task-products__title { + font-size: 24px; + margin-bottom: 24px; + text-align: center; + } + + .woocommerce-task-products__button-view-less-product-types { + color: #007cba; + padding: 0; + height: fit-content; + margin-top: 25px; + + svg { + margin-left: 8px; + } + + &:focus { + color: #007cba; + outline: none; + box-shadow: none; + } + } + + .woocommerce-products-footer { + margin-top: 53px; + display: flex; + flex-direction: column; + } + + .woocommerce-products-footer__selling-somewhere-else { + text-transform: uppercase; + color: $gray-700; + font-weight: 500; + font-size: 11px; + line-height: 16px; + margin-bottom: 8px; + } } + diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index b35d2a2ad2a..9e7b7b642f7 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -1,21 +1,128 @@ /** * External dependencies */ +import { __ } from '@wordpress/i18n'; +import interpolateComponents from '@automattic/interpolate-components'; import { WooOnboardingTask } from '@woocommerce/onboarding'; +import { Text } from '@woocommerce/experimental'; import { registerPlugin } from '@wordpress/plugins'; - +import { useMemo, useState } from '@wordpress/element'; +import { Button, ExternalLink } from '@wordpress/components'; +import { Icon, chevronDown, chevronUp } from '@wordpress/icons'; +import { Link } from '@woocommerce/components'; +import { getAdminLink } from '@woocommerce/settings'; /** * Internal dependencies */ -import { getProductTypes } from './utils'; import './index.scss'; +import { getAdminSetting } from '~/utils/admin-settings'; import Stack from './stack'; +import { getSurfacedProductKeys } from './utils'; +import useProductTypeListItems from './use-product-types-list-items'; + +const getOnboardingProductType = (): string[] => { + const onboardingData = getAdminSetting( 'onboarding' ); + return ( + ( onboardingData?.profile && onboardingData?.profile.product_types ) || + [] + ); +}; + +export const Products = () => { + const [ isCollapsed, setIsCollapsed ] = useState< boolean >( true ); + const productTypes = useProductTypeListItems(); + + const surfacedProductKeys = getSurfacedProductKeys( + getOnboardingProductType() + ); + + const isAllProductSurfaced = + surfacedProductKeys.length === productTypes.length; + + const visibleProductTypes = useMemo( () => { + if ( isAllProductSurfaced ) { + return productTypes; + } + + const surfacedProductTypes = productTypes.filter( ( productType ) => + surfacedProductKeys.includes( productType.key ) + ); + if ( ! isCollapsed ) { + // To show product types in same order, we need to push the other product types to the end. + productTypes.forEach( + ( productType ) => + ! surfacedProductTypes.includes( productType ) && + surfacedProductTypes.push( productType ) + ); + } + return surfacedProductTypes; + }, [ + surfacedProductKeys, + isCollapsed, + isAllProductSurfaced, + productTypes, + ] ); -const Products = () => { - const productTypes = getProductTypes(); return (
- + + { __( 'What product do you want to add?', 'woocommerce' ) } + + + + + { ! isAllProductSurfaced && ( + + ) } + +
+ + Are you already selling somewhere else? + + + { interpolateComponents( { + mixedString: __( + '{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}} or {{_3rdLink}}use a 3rd party migration plugin{{/_3rdLink}}.' + ), + components: { + importCSVLink: ( + { + window.location = getAdminLink( + 'edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products' + ); + return false; + } } + href="" + type="wc-admin" + > + <> + + ), + _3rdLink: ( + + <> + + ), + }, + } ) } + +
); }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss index ae559c9ed99..7f2dd027cfe 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss @@ -53,7 +53,8 @@ } } - .woocommerce-stack-other-options { + .woocommerce-stack__other-options { + display: block; margin-top: 20px; color: $gray-700; line-height: 16px; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx index 3c9ddc26db5..3f5679c01ec 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.tsx @@ -3,6 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { List, Link } from '@woocommerce/components'; +import { Text } from '@woocommerce/experimental'; import interpolateComponents from '@automattic/interpolate-components'; import { getAdminLink } from '@woocommerce/settings'; @@ -13,14 +14,16 @@ import { ProductType } from './constants'; import './stack.scss'; type StackProps = { - items: ProductType[]; + items: ( ProductType & { + onClick: () => void; + } )[]; }; const Stack: React.FC< StackProps > = ( { items } ) => { return (
-
+ { interpolateComponents( { mixedString: __( 'Can’t find your product type? {{sbLink}}Start Blank{{/sbLink}} or {{LspLink}}Load Sample Products{{/LspLink}} to see what they look like in your store.', @@ -49,7 +52,7 @@ const Stack: React.FC< StackProps > = ( { items } ) => { ), }, } ) } -
+
); }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts new file mode 100644 index 00000000000..3e73444a8c9 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts @@ -0,0 +1,56 @@ +/** + * External dependencies + */ +import { useDispatch } from '@wordpress/data'; +import { ITEMS_STORE_NAME } from '@woocommerce/data'; +import { getAdminLink } from '@woocommerce/settings'; +import { useState } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { ProductTypeKey } from './constants'; +import { createNoticesFromResponse } from '../../../lib/notices'; + +const useCreateProductByType = () => { + const { createProductFromTemplate } = useDispatch( ITEMS_STORE_NAME ); + const [ isRequesting, setIsRequesting ] = useState< boolean >( false ); + + const createProductByType = async ( type: ProductTypeKey ) => { + setIsRequesting( true ); + if ( type === 'subscription' ) { + window.location = getAdminLink( + 'post-new.php?post_type=product&subscription_pointers=true' + ); + return; + } + + try { + const data = await createProductFromTemplate( + { + template_name: type, + status: 'draft', + }, + { _fields: [ 'id' ] } + ); + if ( data && data.id ) { + const link = getAdminLink( + `post.php?post=${ data.id }&action=edit&wc_onboarding_active_task=products&tutorial=true` + ); + window.location = link; + } else { + throw new Error( 'Unexpected empty data response from server' ); + } + } catch ( error ) { + createNoticesFromResponse( error ); + } + setIsRequesting( false ); + }; + + return { + createProductByType, + isRequesting, + }; +}; + +export default useCreateProductByType; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx index ac857f2058f..53d716563ce 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -1,9 +1,25 @@ /** * Internal dependencies */ -import { productTypes, ProductTypeKey } from './constants'; +import { + productTypes, + ProductTypeKey, + onboardingProductTypesToSurfaced, +} from './constants'; export const getProductTypes = ( exclude: ProductTypeKey[] = [] ) => productTypes.filter( ( productType ) => ! exclude.includes( productType.key ) ); + +/** + * Get key of surfaced product types by onboarding product types. + * Return all product types if onboarding product types is empty. + */ +export const getSurfacedProductKeys = ( onboardingProductTypes: string[] ) => { + const sortedKeyStr = onboardingProductTypes.sort().join( ',' ); + if ( ! onboardingProductTypesToSurfaced.hasOwnProperty( sortedKeyStr ) ) { + return productTypes.map( ( p ) => p.key ); + } + return onboardingProductTypesToSurfaced[ sortedKeyStr ]; +}; From cbfc393c6a9743c792dffdcd9b874a164c0bfe57 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 15:20:53 +0800 Subject: [PATCH 243/327] Add use-create-product-by-type & use-product-types-list-items hooks --- .../use-create-product-by-type.ts | 6 +++-- .../use-product-types-list-items.tsx | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts index 3e73444a8c9..eed546bab59 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-create-product-by-type.ts @@ -17,7 +17,6 @@ const useCreateProductByType = () => { const [ isRequesting, setIsRequesting ] = useState< boolean >( false ); const createProductByType = async ( type: ProductTypeKey ) => { - setIsRequesting( true ); if ( type === 'subscription' ) { window.location = getAdminLink( 'post-new.php?post_type=product&subscription_pointers=true' @@ -25,8 +24,11 @@ const useCreateProductByType = () => { return; } + setIsRequesting( true ); try { - const data = await createProductFromTemplate( + const data: { + id?: string; + } = await createProductFromTemplate( { template_name: type, status: 'draft', diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx new file mode 100644 index 00000000000..52291c7a67b --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx @@ -0,0 +1,27 @@ +/** + * External dependencies + */ +import { useMemo } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { getProductTypes } from './utils'; +import useCreateProductByType from './use-create-product-by-type'; + +const useProductTypeListItems = () => { + const { createProductByType } = useCreateProductByType(); + + const productTypes = useMemo( + () => + getProductTypes().map( ( productType ) => ( { + ...productType, + onClick: () => createProductByType( productType.key ), + } ) ), + [ createProductByType ] + ); + + return productTypes; +}; + +export default useProductTypeListItems; From 624868304241a9d9bc582e08436f91e5250ec531 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 15:21:30 +0800 Subject: [PATCH 244/327] Add tests for experimental add product task --- .../experimental-products/test/index.tsx | 80 +++++++++++++++++++ .../fills/experimental-products/test/utils.ts | 41 ++++++++++ 2 files changed, 121 insertions(+) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx new file mode 100644 index 00000000000..224bad51a48 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx @@ -0,0 +1,80 @@ +/** + * External dependencies + */ +import { render, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; + +/** + * Internal dependencies + */ +import { Products } from '../'; +import { productTypes } from '../constants'; +import { getAdminSetting } from '~/utils/admin-settings'; + +jest.mock( '@wordpress/data', () => ( { + ...jest.requireActual( '@wordpress/data' ), + useSelect: jest.fn(), +} ) ); + +jest.mock( '~/utils/admin-settings', () => ( { + getAdminSetting: jest.fn(), +} ) ); + +describe( 'Products', () => { + beforeEach( () => { + jest.clearAllMocks(); + } ); + + it( 'should render all products types without view less button when onboardingData.profile.productType is null', () => { + ( getAdminSetting as jest.Mock ).mockImplementation( () => ( { + profile: { + product_types: null, + }, + } ) ); + const { queryByText } = render( ); + + productTypes.forEach( ( { title } ) => { + expect( queryByText( title ) ).toBeInTheDocument(); + } ); + + expect( + queryByText( 'View more product types' ) + ).not.toBeInTheDocument(); + } ); + + it( 'should render digital products type with view more button', () => { + ( getAdminSetting as jest.Mock ).mockImplementation( () => ( { + profile: { + product_types: [ 'downloads' ], + }, + } ) ); + const { queryByText, queryByRole } = render( ); + + expect( queryByText( 'Digital product' ) ).toBeInTheDocument(); + expect( queryByRole( 'menu' )?.childElementCount ).toBe( 1 ); + expect( queryByText( 'View more product types' ) ).toBeInTheDocument(); + } ); + + it( 'should render all products type when clicking view more button', async () => { + ( getAdminSetting as jest.Mock ).mockImplementation( () => ( { + profile: { + product_types: [ 'downloads' ], + }, + } ) ); + const { queryByText, getByRole, queryByRole } = render( ); + + expect( queryByText( 'View more product types' ) ).toBeInTheDocument(); + + userEvent.click( + getByRole( 'button', { name: 'View more product types' } ) + ); + + await waitFor( () => + expect( queryByRole( 'menu' )?.childElementCount ).toBe( + productTypes.length + ) + ); + + expect( queryByText( 'View less product types' ) ).toBeInTheDocument(); + } ); +} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts new file mode 100644 index 00000000000..5570a6a0f14 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts @@ -0,0 +1,41 @@ +/** + * Internal dependencies + */ +import { getProductTypes, getSurfacedProductKeys } from '../utils'; +import { productTypes, onboardingProductTypesToSurfaced } from '../constants'; + +describe( 'getProductTypes', () => { + it( 'should return the product types', () => { + expect( getProductTypes() ).toEqual( productTypes ); + } ); + + it( 'should return the product types without excluded items', () => { + expect( + getProductTypes( [ 'external', 'digital' ] ).map( ( p ) => p.key ) + ).toEqual( [ 'physical', 'variable', 'subscription', 'grouped' ] ); + } ); +} ); + +describe( 'getSurfacedProductKeys', () => { + test.each( [ + { + selectedTypes: [ 'physical' ], + expected: onboardingProductTypesToSurfaced.physical, + }, + { + selectedTypes: [ 'physical', 'downloads' ], + expected: onboardingProductTypesToSurfaced[ 'downloads,physical' ], + }, + { + selectedTypes: [], + expected: productTypes.map( ( p ) => p.key ), + }, + ] )( + 'should return expected surfaced product keys when onboarding product type contains $selected', + ( { selectedTypes, expected } ) => { + expect( getSurfacedProductKeys( selectedTypes ) ).toEqual( + expected + ); + } + ); +} ); From 48c89b2266be220424efa32bd629f7f2886f8916 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 16:09:41 +0800 Subject: [PATCH 245/327] Add card view --- .../experimental-import-products/cards.scss | 13 ++- .../experimental-import-products/index.tsx | 2 +- .../experimental-products/card-layout.scss | 27 ++++++ .../experimental-products/card-layout.tsx | 54 +++++++++++ .../fills/experimental-products/footer.tsx | 52 ++++++++++ .../fills/experimental-products/index.scss | 9 +- .../fills/experimental-products/index.tsx | 96 ++++++++----------- .../test/card-layout.tsx | 29 ++++++ .../experimental-products/test/footer.tsx | 16 ++++ 9 files changed, 236 insertions(+), 62 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/footer.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/card-layout.tsx create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/footer.tsx diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index af118cdc476..57a3ee23dbe 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -3,13 +3,20 @@ color: #007cba; } + .woocommerce-list { + display: grid; + grid-template-columns: auto auto; + grid-column-gap: 16px; + grid-row-gap: 24px; + justify-content: start; + } + .woocommerce-list__item { float: left; border-radius: 3px; border: 1px solid #dcdcde; width: 263px; height: 226px; - margin: 12px; text-align: center; align-items: start; @@ -27,10 +34,12 @@ &:not(.transitions-disabled) { &.woocommerce-list__item-enter { transform: none; + transition: none; } &.woocommerce-list__item-enter-active { transform: none; + transition: none; } &.woocommerce-list__item-exit-active { @@ -51,6 +60,7 @@ } .woocommerce-list__item-before { + margin-right: 0; background: #f0f6fc; padding: 8px; border-radius: 50%; @@ -60,6 +70,7 @@ color: $gray-900; line-height: 16px; font-weight: 600; + text-transform: uppercase; } .woocommerce-list__item-content { diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index c7ee6b3d660..835f1294de0 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -7,7 +7,7 @@ import { registerPlugin } from '@wordpress/plugins'; /** * Internal dependencies */ -import CardList from './CardList'; +import CardList from './cardList'; import { importTypes } from './importTypes'; const Products = () => { diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss new file mode 100644 index 00000000000..3c5f6e91f3f --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss @@ -0,0 +1,27 @@ +.woocommerce-products-card-layout { + margin-top: 8px; + display: flex; + flex-direction: column; + align-items: center; + + .woocommerce-products-card-layout__description { + text-align: center; + } + + .woocommerce-products-card-list { + margin-top: 32px; + + .woocommerce-list { + grid-template-columns: 215px 215px 215px; + } + + .woocommerce-list__item { + width: 215px; + height: 200px; + } + + .woocommerce-list__item-after { + opacity: 0; + } + } +} diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx new file mode 100644 index 00000000000..a06a1a8038d --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx @@ -0,0 +1,54 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { Text } from '@woocommerce/experimental'; +import { Link } from '@woocommerce/components'; +import interpolateComponents from '@automattic/interpolate-components'; +import { getAdminLink } from '@woocommerce/settings'; + +/** + * Internal dependencies + */ +import { ProductType } from './constants'; +import CardList from '../experimental-import-products/cardList'; +import './card-layout.scss'; + +type CardProps = { + items: ( ProductType & { + onClick: () => void; + } )[]; +}; + +const CardLayout: React.FC< CardProps > = ( { items } ) => { + return ( +
+ + { interpolateComponents( { + mixedString: __( + '{{sbLink}}Start blank{{/sbLink}} or select a product type:' + ), + components: { + sbLink: ( + { + window.location = getAdminLink( + 'post-new.php?post_type=product&wc_onboarding_active_task=products&tutorial=true' + ); + return false; + } } + href="" + type="wc-admin" + > + <> + + ), + }, + } ) } + + +
+ ); +}; + +export default CardLayout; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/footer.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/footer.tsx new file mode 100644 index 00000000000..dcf4d7fd660 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/footer.tsx @@ -0,0 +1,52 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import interpolateComponents from '@automattic/interpolate-components'; +import { Text } from '@woocommerce/experimental'; +import { ExternalLink } from '@wordpress/components'; +import { Link } from '@woocommerce/components'; +import { getAdminLink } from '@woocommerce/settings'; + +const Footer: React.FC = () => { + return ( +
+ + Are you already selling somewhere else? + + + { interpolateComponents( { + mixedString: __( + '{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}} or {{_3rdLink}}use a 3rd party migration plugin{{/_3rdLink}}.' + ), + components: { + importCSVLink: ( + { + window.location = getAdminLink( + 'edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products' + ); + return false; + } } + href="" + type="wc-admin" + > + <> + + ), + _3rdLink: ( + + <> + + ), + }, + } ) } + +
+ ); +}; + +export default Footer; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss index f82e3027bc5..2be375e8e93 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.scss @@ -1,8 +1,7 @@ .woocommerce-task-products { display: flex; flex-direction: column; - max-width: 550px; - margin: auto; + align-items: center; a { text-decoration: none; @@ -11,7 +10,6 @@ .woocommerce-task-products__title { font-size: 24px; - margin-bottom: 24px; text-align: center; } @@ -46,5 +44,10 @@ line-height: 16px; margin-bottom: 8px; } + + .woocommerce-products-stack { + max-width: 550px; + margin-top: 32px; + } } diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 9e7b7b642f7..6cc848d46a3 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -2,23 +2,26 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import interpolateComponents from '@automattic/interpolate-components'; import { WooOnboardingTask } from '@woocommerce/onboarding'; import { Text } from '@woocommerce/experimental'; import { registerPlugin } from '@wordpress/plugins'; import { useMemo, useState } from '@wordpress/element'; -import { Button, ExternalLink } from '@wordpress/components'; +import { Button } from '@wordpress/components'; import { Icon, chevronDown, chevronUp } from '@wordpress/icons'; -import { Link } from '@woocommerce/components'; -import { getAdminLink } from '@woocommerce/settings'; + /** * Internal dependencies */ import './index.scss'; import { getAdminSetting } from '~/utils/admin-settings'; -import Stack from './stack'; import { getSurfacedProductKeys } from './utils'; import useProductTypeListItems from './use-product-types-list-items'; +import Stack from './stack'; +import Footer from './footer'; +import CardLayout from './card-layout'; + +// TODO: Use experiment data from the API, not hardcoded. +const SHOW_STACK_LAYOUT = false; const getOnboardingProductType = (): string[] => { const onboardingData = getAdminSetting( 'onboarding' ); @@ -28,8 +31,23 @@ const getOnboardingProductType = (): string[] => { ); }; +const ViewControlButton: React.FC< { + isExpanded: boolean; + onClick: () => void; +} > = ( { isExpanded, onClick } ) => ( + +); + export const Products = () => { - const [ isCollapsed, setIsCollapsed ] = useState< boolean >( true ); + const [ isExpanded, setIsExpanded ] = useState< boolean >( false ); const productTypes = useProductTypeListItems(); const surfacedProductKeys = getSurfacedProductKeys( @@ -47,7 +65,7 @@ export const Products = () => { const surfacedProductTypes = productTypes.filter( ( productType ) => surfacedProductKeys.includes( productType.key ) ); - if ( ! isCollapsed ) { + if ( isExpanded ) { // To show product types in same order, we need to push the other product types to the end. productTypes.forEach( ( productType ) => @@ -58,7 +76,7 @@ export const Products = () => { return surfacedProductTypes; }, [ surfacedProductKeys, - isCollapsed, + isExpanded, isAllProductSurfaced, productTypes, ] ); @@ -73,55 +91,19 @@ export const Products = () => { { __( 'What product do you want to add?', 'woocommerce' ) } - - - { ! isAllProductSurfaced && ( - - ) } - -
- - Are you already selling somewhere else? - - - { interpolateComponents( { - mixedString: __( - '{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}} or {{_3rdLink}}use a 3rd party migration plugin{{/_3rdLink}}.' - ), - components: { - importCSVLink: ( - { - window.location = getAdminLink( - 'edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products' - ); - return false; - } } - href="" - type="wc-admin" - > - <> - - ), - _3rdLink: ( - - <> - - ), - }, - } ) } - +
+ { SHOW_STACK_LAYOUT ? ( + + ) : ( + + ) } + { ! isAllProductSurfaced && ( + setIsExpanded( ! isExpanded ) } + /> + ) } +
); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/card-layout.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/card-layout.tsx new file mode 100644 index 00000000000..ae8bb890240 --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/card-layout.tsx @@ -0,0 +1,29 @@ +/** + * External dependencies + */ +import { render } from '@testing-library/react'; + +/** + * Internal dependencies + */ +import CardLayout from '../card-layout'; +import { productTypes } from '../constants'; + +describe( 'CardLayout', () => { + it( 'should render all products types in CardLayout', () => { + const { queryByText, queryAllByRole } = render( + {}, + }, + ] } + /> + ); + + expect( queryByText( productTypes[ 0 ].title ) ).toBeInTheDocument(); + + expect( queryAllByRole( 'link' ) ).toHaveLength( 1 ); + } ); +} ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/footer.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/footer.tsx new file mode 100644 index 00000000000..1765ac1d4db --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/footer.tsx @@ -0,0 +1,16 @@ +/** + * External dependencies + */ +import { render } from '@testing-library/react'; + +/** + * Internal dependencies + */ +import Footer from '../footer'; + +describe( 'Footer', () => { + it( 'should render footer with two links', () => { + const { queryAllByRole } = render(
); + expect( queryAllByRole( 'link' ) ).toHaveLength( 2 ); + } ); +} ); From 2dd0ef002998cf5c6cd39d907939ee74e29d6319 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 16:30:36 +0800 Subject: [PATCH 246/327] Add grouped_product.csv for experimental product task --- plugins/woocommerce/src/Admin/API/Templates/grouped_product.csv | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 plugins/woocommerce/src/Admin/API/Templates/grouped_product.csv diff --git a/plugins/woocommerce/src/Admin/API/Templates/grouped_product.csv b/plugins/woocommerce/src/Admin/API/Templates/grouped_product.csv new file mode 100644 index 00000000000..e349912098c --- /dev/null +++ b/plugins/woocommerce/src/Admin/API/Templates/grouped_product.csv @@ -0,0 +1,2 @@ +Type,Name,Published,"Is featured?","Visibility in catalog","Short description",Description,"Date sale price starts","Date sale price ends","Tax status","Tax class","In stock?",Stock,"Backorders allowed?","Sold individually?","Weight (lbs)","Length (in)","Width (in)","Height (in)","Allow customer reviews?","Purchase note","Sale price","Regular price",Categories,Tags,"Shipping class",Images,"Download limit","Download expiry days",Parent,"Grouped products",Upsells,Cross-sells,"External URL","Button text",Position,"Attribute 1 name","Attribute 1 value(s)","Attribute 1 visible","Attribute 1 global","Attribute 2 name","Attribute 2 value(s)","Attribute 2 visible","Attribute 2 global","Meta: _wpcom_is_markdown","Download 1 name","Download 1 URL","Download 2 name","Download 2 URL" +grouped,Logo Collection,0,0,visible,"This is a grouped product.","Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.",,,"taxable",,"1",,"0","0",,,,,"1",,,,Clothing,,,"https://woocommercecore.mystagingwebsite.com/wp-content/uploads/2017/12/logo-1.jpg, https://woocommercecore.mystagingwebsite.com/wp-content/uploads/2017/12/beanie-with-logo-1.jpg, https://woocommercecore.mystagingwebsite.com/wp-content/uploads/2017/12/t-shirt-with-logo-1.jpg, https://woocommercecore.mystagingwebsite.com/wp-content/uploads/2017/12/hoodie-with-logo-2.jpg",,,,"woo-hoodie-with-logo, woo-tshirt, woo-beanie",,,,,0,,,,,,,,,"1",,,, From a4a62353fd5eb1d15c704e401b911edf8fb74712 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 16:33:30 +0800 Subject: [PATCH 247/327] Add external_product.csv for experimental product task --- .../woocommerce/src/Admin/API/Templates/external_product.csv | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 plugins/woocommerce/src/Admin/API/Templates/external_product.csv diff --git a/plugins/woocommerce/src/Admin/API/Templates/external_product.csv b/plugins/woocommerce/src/Admin/API/Templates/external_product.csv new file mode 100644 index 00000000000..3c41f91fe85 --- /dev/null +++ b/plugins/woocommerce/src/Admin/API/Templates/external_product.csv @@ -0,0 +1,2 @@ +Type,Name,Published,"Is featured?","Visibility in catalog","Short description",Description,"Date sale price starts","Date sale price ends","Tax status","Tax class","In stock?",Stock,"Backorders allowed?","Sold individually?","Weight (lbs)","Length (in)","Width (in)","Height (in)","Allow customer reviews?","Purchase note","Sale price","Regular price",Categories,Tags,"Shipping class",Images,"Download limit","Download expiry days",Parent,"Grouped products",Upsells,Cross-sells,"External URL","Button text",Position,"Attribute 1 name","Attribute 1 value(s)","Attribute 1 visible","Attribute 1 global","Attribute 2 name","Attribute 2 value(s)","Attribute 2 visible","Attribute 2 global","Meta: _wpcom_is_markdown","Download 1 name","Download 1 URL","Download 2 name","Download 2 URL" +external,WordPress Pennant,0,0,visible,"This is an external product.","Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.",,,"taxable",,"1",,"0","0",,,,,"1",,,"111.05",Decor,,,https://woocommercecore.mystagingwebsite.com/wp-content/uploads/2017/12/pennant-1.jpg,,,,,,,"https://mercantile.wordpress.org/product/wordpress-pennant/","Buy on the WordPress swag store!",0,,,,,,,,,"1",,,, From e6d3ed3c3c6d0240e7b3607c8d95128f349bd89b Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 18:35:57 +0800 Subject: [PATCH 248/327] Add loading sample product card --- .../experimental-products/card-layout.scss | 17 +++++++++++++++-- .../fills/experimental-products/constants.tsx | 16 +++++++++++++++- .../icon/lightbulb_24px.svg | 8 ++++++++ .../tasks/fills/experimental-products/index.tsx | 11 ++++++++++- .../tasks/fills/experimental-products/utils.tsx | 5 ++++- 5 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss index 3c5f6e91f3f..fb4e9a9274b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.scss @@ -12,16 +12,29 @@ margin-top: 32px; .woocommerce-list { - grid-template-columns: 215px 215px 215px; + grid-template-columns: 217px 217px 217px; } .woocommerce-list__item { - width: 215px; + width: 217px; height: 200px; + padding: 40px 24px; } .woocommerce-list__item-after { opacity: 0; } + + .woocommerce-list__item-inner { + padding: 0; + } + } + + .woocommerce-products-list__item-load-sample-product { + border: 1px dashed #dcdcde; + + .woocommerce-list__item-before { + background-color: $gray-100; + } } } diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index fb15bb9b3a0..a4b483264e3 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -13,6 +13,7 @@ import { Icon, chevronRight } from '@wordpress/icons'; */ import Link from './icon/link_24px.svg'; import Widget from './icon/widgets_24px.svg'; +import LightBulb from './icon/lightbulb_24px.svg'; export const productTypes = Object.freeze( [ { @@ -71,7 +72,20 @@ export const productTypes = Object.freeze( [ }, ] ); -export type ProductType = typeof productTypes[ number ]; +export const LoadSampleProductType = { + key: 'load-sample-product' as const, + title: __( 'can’t decide?', 'woocommerce' ), + content: __( + 'Load sample products and see what they look like in your store.' + ), + before: Light Bulb, + after: , + className: 'woocommerce-products-list__item-load-sample-product', +}; + +export type ProductType = + | typeof productTypes[ number ] + | typeof LoadSampleProductType; export type ProductTypeKey = ProductType[ 'key' ]; export const onboardingProductTypesToSurfaced: Readonly< diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg new file mode 100644 index 00000000000..ddba5a742ef --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 6cc848d46a3..5d3a79275a8 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -19,9 +19,10 @@ import useProductTypeListItems from './use-product-types-list-items'; import Stack from './stack'; import Footer from './footer'; import CardLayout from './card-layout'; +import { LoadSampleProductType } from './constants'; // TODO: Use experiment data from the API, not hardcoded. -const SHOW_STACK_LAYOUT = false; +const SHOW_STACK_LAYOUT = true; const getOnboardingProductType = (): string[] => { const onboardingData = getAdminSetting( 'onboarding' ); @@ -72,6 +73,14 @@ export const Products = () => { ! surfacedProductTypes.includes( productType ) && surfacedProductTypes.push( productType ) ); + + if ( ! SHOW_STACK_LAYOUT ) { + surfacedProductTypes.push( { + ...LoadSampleProductType, + // TODO: Change to load sample product + onClick: () => new Promise( () => {} ), + } ); + } } return surfacedProductTypes; }, [ diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx index 53d716563ce..3c6b2cf9145 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -3,11 +3,14 @@ */ import { productTypes, + ProductType, ProductTypeKey, onboardingProductTypesToSurfaced, } from './constants'; -export const getProductTypes = ( exclude: ProductTypeKey[] = [] ) => +export const getProductTypes = ( + exclude: ProductTypeKey[] = [] +): ProductType[] => productTypes.filter( ( productType ) => ! exclude.includes( productType.key ) ); From 6205c0208f3519930f883ed8131636b2f4377539 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 19:02:01 +0800 Subject: [PATCH 249/327] Update card name & check support product types --- .../fills/experimental-import-products/index.tsx | 2 +- .../fills/experimental-products/card-layout.tsx | 2 +- .../tasks/fills/experimental-products/constants.tsx | 6 ++++++ .../tasks/fills/experimental-products/test/utils.ts | 4 ++++ .../tasks/fills/experimental-products/utils.tsx | 12 +++++++++++- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index 835f1294de0..c7ee6b3d660 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -7,7 +7,7 @@ import { registerPlugin } from '@wordpress/plugins'; /** * Internal dependencies */ -import CardList from './cardList'; +import CardList from './CardList'; import { importTypes } from './importTypes'; const Products = () => { diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx index a06a1a8038d..a904ec2e457 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/card-layout.tsx @@ -11,7 +11,7 @@ import { getAdminLink } from '@woocommerce/settings'; * Internal dependencies */ import { ProductType } from './constants'; -import CardList from '../experimental-import-products/cardList'; +import CardList from '../experimental-import-products/CardList'; import './card-layout.scss'; type CardProps = { diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index a4b483264e3..41f02bb29a7 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -104,3 +104,9 @@ export const onboardingProductTypesToSurfaced: Readonly< 'subscription', ], } ); + +export const supportedOnboardingProductTypes = [ + 'physical', + 'subscriptions', + 'downloads', +]; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts index 5570a6a0f14..02631b82ab4 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts @@ -26,6 +26,10 @@ describe( 'getSurfacedProductKeys', () => { selectedTypes: [ 'physical', 'downloads' ], expected: onboardingProductTypesToSurfaced[ 'downloads,physical' ], }, + { + selectedTypes: [ 'physical', 'downloads', 'membership', 'booking' ], + expected: onboardingProductTypesToSurfaced[ 'downloads,physical' ], + }, { selectedTypes: [], expected: productTypes.map( ( p ) => p.key ), diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx index 3c6b2cf9145..9f732e1a895 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -1,3 +1,8 @@ +/** + * External dependencies + */ +import { intersection } from 'lodash'; + /** * Internal dependencies */ @@ -6,6 +11,7 @@ import { ProductType, ProductTypeKey, onboardingProductTypesToSurfaced, + supportedOnboardingProductTypes, } from './constants'; export const getProductTypes = ( @@ -20,7 +26,11 @@ export const getProductTypes = ( * Return all product types if onboarding product types is empty. */ export const getSurfacedProductKeys = ( onboardingProductTypes: string[] ) => { - const sortedKeyStr = onboardingProductTypes.sort().join( ',' ); + const validOnboardingProductTypes = intersection( + onboardingProductTypes, + supportedOnboardingProductTypes + ); + const sortedKeyStr = validOnboardingProductTypes.sort().join( ',' ); if ( ! onboardingProductTypesToSurfaced.hasOwnProperty( sortedKeyStr ) ) { return productTypes.map( ( p ) => p.key ); } From 2542594652c2d29142e0ed847e2d891069068f02 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 27 Apr 2022 18:46:36 +0800 Subject: [PATCH 250/327] Add changelog --- plugins/woocommerce/changelog/add-32634-add-products-task | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32634-add-products-task diff --git a/plugins/woocommerce/changelog/add-32634-add-products-task b/plugins/woocommerce/changelog/add-32634-add-products-task new file mode 100644 index 00000000000..ee52be1bfdd --- /dev/null +++ b/plugins/woocommerce/changelog/add-32634-add-products-task @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Add experimental add product for task list From 76777d298114c35cedb4b5215ebdc50bd0ee8f1d Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 28 Apr 2022 17:18:05 +0800 Subject: [PATCH 251/327] Refactor experimental-products functions --- .../fills/experimental-products/index.tsx | 28 +++++++------------ .../fills/experimental-products/test/utils.ts | 6 ++-- .../fills/experimental-products/utils.tsx | 4 ++- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 5d3a79275a8..2197ed6cd85 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -14,7 +14,7 @@ import { Icon, chevronDown, chevronUp } from '@wordpress/icons'; */ import './index.scss'; import { getAdminSetting } from '~/utils/admin-settings'; -import { getSurfacedProductKeys } from './utils'; +import { getSurfacedProductTypeKeys } from './utils'; import useProductTypeListItems from './use-product-types-list-items'; import Stack from './stack'; import Footer from './footer'; @@ -48,23 +48,20 @@ const ViewControlButton: React.FC< { ); export const Products = () => { - const [ isExpanded, setIsExpanded ] = useState< boolean >( false ); - const productTypes = useProductTypeListItems(); - - const surfacedProductKeys = getSurfacedProductKeys( + const surfacedProductTypeKeys = getSurfacedProductTypeKeys( getOnboardingProductType() ); - + const productTypes = useProductTypeListItems(); const isAllProductSurfaced = - surfacedProductKeys.length === productTypes.length; + surfacedProductTypeKeys.length === productTypes.length; + + const [ isExpanded, setIsExpanded ] = useState< boolean >( + isAllProductSurfaced + ); const visibleProductTypes = useMemo( () => { - if ( isAllProductSurfaced ) { - return productTypes; - } - const surfacedProductTypes = productTypes.filter( ( productType ) => - surfacedProductKeys.includes( productType.key ) + surfacedProductTypeKeys.includes( productType.key ) ); if ( isExpanded ) { // To show product types in same order, we need to push the other product types to the end. @@ -83,12 +80,7 @@ export const Products = () => { } } return surfacedProductTypes; - }, [ - surfacedProductKeys, - isExpanded, - isAllProductSurfaced, - productTypes, - ] ); + }, [ surfacedProductTypeKeys, isExpanded, productTypes ] ); return (
diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts index 02631b82ab4..1b826a1fecd 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts @@ -1,7 +1,7 @@ /** * Internal dependencies */ -import { getProductTypes, getSurfacedProductKeys } from '../utils'; +import { getProductTypes, getSurfacedProductTypeKeys } from '../utils'; import { productTypes, onboardingProductTypesToSurfaced } from '../constants'; describe( 'getProductTypes', () => { @@ -16,7 +16,7 @@ describe( 'getProductTypes', () => { } ); } ); -describe( 'getSurfacedProductKeys', () => { +describe( 'getSurfacedProductTypeKeys', () => { test.each( [ { selectedTypes: [ 'physical' ], @@ -37,7 +37,7 @@ describe( 'getSurfacedProductKeys', () => { ] )( 'should return expected surfaced product keys when onboarding product type contains $selected', ( { selectedTypes, expected } ) => { - expect( getSurfacedProductKeys( selectedTypes ) ).toEqual( + expect( getSurfacedProductTypeKeys( selectedTypes ) ).toEqual( expected ); } diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx index 9f732e1a895..69adf86982d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -25,7 +25,9 @@ export const getProductTypes = ( * Get key of surfaced product types by onboarding product types. * Return all product types if onboarding product types is empty. */ -export const getSurfacedProductKeys = ( onboardingProductTypes: string[] ) => { +export const getSurfacedProductTypeKeys = ( + onboardingProductTypes: string[] +) => { const validOnboardingProductTypes = intersection( onboardingProductTypes, supportedOnboardingProductTypes From 0d9d463d46ea3002766f35a44b4f25f40813dabd Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 28 Apr 2022 17:44:00 +0800 Subject: [PATCH 252/327] Update experimental-products default surfaced product types --- .../fills/experimental-products/constants.tsx | 2 ++ .../fills/experimental-products/index.tsx | 25 +++++++------------ .../experimental-products/test/index.tsx | 14 +++++------ .../fills/experimental-products/test/utils.ts | 2 +- .../fills/experimental-products/utils.tsx | 3 ++- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index 41f02bb29a7..a08ed2474ef 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -104,6 +104,8 @@ export const onboardingProductTypesToSurfaced: Readonly< 'subscription', ], } ); +export const defaultSurfacedProductTypes = + onboardingProductTypesToSurfaced.physical; export const supportedOnboardingProductTypes = [ 'physical', diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index 2197ed6cd85..e599489202d 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -27,8 +27,8 @@ const SHOW_STACK_LAYOUT = true; const getOnboardingProductType = (): string[] => { const onboardingData = getAdminSetting( 'onboarding' ); return ( - ( onboardingData?.profile && onboardingData?.profile.product_types ) || - [] + ( onboardingData?.profile && + onboardingData?.profile.product_types ) || [ 'physical' ] ); }; @@ -48,17 +48,12 @@ const ViewControlButton: React.FC< { ); export const Products = () => { + const [ isExpanded, setIsExpanded ] = useState< boolean >( false ); + + const productTypes = useProductTypeListItems(); const surfacedProductTypeKeys = getSurfacedProductTypeKeys( getOnboardingProductType() ); - const productTypes = useProductTypeListItems(); - const isAllProductSurfaced = - surfacedProductTypeKeys.length === productTypes.length; - - const [ isExpanded, setIsExpanded ] = useState< boolean >( - isAllProductSurfaced - ); - const visibleProductTypes = useMemo( () => { const surfacedProductTypes = productTypes.filter( ( productType ) => surfacedProductTypeKeys.includes( productType.key ) @@ -98,12 +93,10 @@ export const Products = () => { ) : ( ) } - { ! isAllProductSurfaced && ( - setIsExpanded( ! isExpanded ) } - /> - ) } + setIsExpanded( ! isExpanded ) } + />
diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx index 224bad51a48..d5a8815fb85 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/index.tsx @@ -8,7 +8,7 @@ import userEvent from '@testing-library/user-event'; * Internal dependencies */ import { Products } from '../'; -import { productTypes } from '../constants'; +import { defaultSurfacedProductTypes, productTypes } from '../constants'; import { getAdminSetting } from '~/utils/admin-settings'; jest.mock( '@wordpress/data', () => ( { @@ -25,7 +25,7 @@ describe( 'Products', () => { jest.clearAllMocks(); } ); - it( 'should render all products types without view less button when onboardingData.profile.productType is null', () => { + it( 'should render default products types when onboardingData.profile.productType is null', () => { ( getAdminSetting as jest.Mock ).mockImplementation( () => ( { profile: { product_types: null, @@ -33,13 +33,11 @@ describe( 'Products', () => { } ) ); const { queryByText } = render( ); - productTypes.forEach( ( { title } ) => { - expect( queryByText( title ) ).toBeInTheDocument(); + productTypes.forEach( ( { key, title } ) => { + if ( defaultSurfacedProductTypes.includes( key ) ) { + expect( queryByText( title ) ).toBeInTheDocument(); + } } ); - - expect( - queryByText( 'View more product types' ) - ).not.toBeInTheDocument(); } ); it( 'should render digital products type with view more button', () => { diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts index 1b826a1fecd..1b62606f60e 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/test/utils.ts @@ -32,7 +32,7 @@ describe( 'getSurfacedProductTypeKeys', () => { }, { selectedTypes: [], - expected: productTypes.map( ( p ) => p.key ), + expected: onboardingProductTypesToSurfaced.physical, }, ] )( 'should return expected surfaced product keys when onboarding product type contains $selected', diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx index 69adf86982d..699c9683e43 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/utils.tsx @@ -12,6 +12,7 @@ import { ProductTypeKey, onboardingProductTypesToSurfaced, supportedOnboardingProductTypes, + defaultSurfacedProductTypes, } from './constants'; export const getProductTypes = ( @@ -34,7 +35,7 @@ export const getSurfacedProductTypeKeys = ( ); const sortedKeyStr = validOnboardingProductTypes.sort().join( ',' ); if ( ! onboardingProductTypesToSurfaced.hasOwnProperty( sortedKeyStr ) ) { - return productTypes.map( ( p ) => p.key ); + return defaultSurfacedProductTypes; } return onboardingProductTypesToSurfaced[ sortedKeyStr ]; }; From 345a2ed60c64792354bc712a1c87919e2faaecd4 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Thu, 28 Apr 2022 22:07:25 +0800 Subject: [PATCH 253/327] Update experimental product stack layout style --- .../tasks/fills/experimental-products/stack.scss | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss index 7f2dd027cfe..43e5c46d8cd 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/stack.scss @@ -12,6 +12,10 @@ &:hover { background-color: #fff; border: 1.5px solid #007cba; + + .woocommerce-list__item-title { + color: $gray-900; + } } &:not(.transitions-disabled) { @@ -29,6 +33,12 @@ } } + .woocommerce-list__item-inner { + &:focus { + box-shadow: none; + } + } + .woocommerce-list__item-before { background: #f0f6fc; padding: 8px; @@ -39,6 +49,7 @@ color: $gray-900; line-height: 16px; font-weight: 600; + } .woocommerce-list__item-content { From 14cff0a0013c86da4760230b7e9b8b7b97f7a59e Mon Sep 17 00:00:00 2001 From: moon Date: Wed, 27 Apr 2022 13:58:35 -0700 Subject: [PATCH 254/327] Allow JSX.Element in content --- .../tasks/fills/experimental-import-products/CardList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx index 81bd5343c71..1ed769c790a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/CardList.tsx @@ -11,7 +11,7 @@ import './cards.scss'; type Card = { key: string; title: string; - content: string; + content: string | JSX.Element; before: JSX.Element; }; From de836d1f796c7ab477918c3056c4ea0c68ee4220 Mon Sep 17 00:00:00 2001 From: moon Date: Wed, 27 Apr 2022 13:58:55 -0700 Subject: [PATCH 255/327] Add Learn More link --- .../importTypes.tsx | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx index fdf03c37c8f..aa21ce4ea65 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx @@ -4,6 +4,9 @@ import { __ } from '@wordpress/i18n'; import PageIcon from 'gridicons/dist/pages'; import ReblogIcon from 'gridicons/dist/reblog'; +import { getAdminLink } from '@woocommerce/settings'; +import interpolateComponents from '@automattic/interpolate-components'; +import { ExternalLink } from '@wordpress/components'; export const importTypes = [ { @@ -14,14 +17,24 @@ export const importTypes = [ 'woocommerce' ), before: , + href: getAdminLink( + 'edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products' + ), }, { key: 'from-cart2cart' as const, title: __( 'FROM CART2CART', 'woocommerce' ), - content: __( - 'Migrate all store data like products, customers, orders and much more in no time and in a fully automated way', - 'woocommerce' - ), + content: interpolateComponents( { + mixedString: __( + 'Migrate all store data like products, customers, and orders in no time with this 3rd party plugin. {{link}}Learn more{{/link}}', + 'woocommerce' + ), + components: { + link: ( + + ), + }, + } ), before: , }, ]; From b109eba8c7a54232fdcf6171a97b3fec41755274 Mon Sep 17 00:00:00 2001 From: moon Date: Wed, 27 Apr 2022 14:02:01 -0700 Subject: [PATCH 256/327] Adjust styles and add initial stacks functionality --- .../experimental-import-products/index.tsx | 21 +++++++++-- .../experimental-import-products/style.scss | 35 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index c7ee6b3d660..6b72da74b10 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -3,18 +3,35 @@ */ import { WooOnboardingTask } from '@woocommerce/onboarding'; import { registerPlugin } from '@wordpress/plugins'; +import { __ } from '@wordpress/i18n'; +import { Icon, chevronUp, chevronDown } from '@wordpress/icons'; +import { Button } from '@wordpress/components'; +import { useState } from '@wordpress/element'; /** * Internal dependencies */ import CardList from './CardList'; import { importTypes } from './importTypes'; +import './style.scss'; + +const Stacks = () => { + return
Hello
; +}; const Products = () => { + const [ showStacks, setStackVisibility ] = useState< boolean >( false ); return ( -
-

Import products

+
+

{ __( 'Import your products', 'woocommerce' ) }

+
+ + { showStacks && } +
); }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss new file mode 100644 index 00000000000..c2335dfb8ea --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss @@ -0,0 +1,35 @@ +.woocommerce-products-card-list { + .woocommerce-list__item-content { + a { + display: block; + text-decoration: none; + margin-top: 8px; + } + } + + ul li:nth-child(2) { + .woocommerce-list__item-inner { + padding: 40px 17px 16px 17px; + } + } +} + +.woocommerce-task-import-products { + max-width: 574px; + margin: auto; + h1 { + text-align: center; + padding: 0 0 32px 0; + } + button { + color: var(--wp-admin-theme-color); + &:focus:not(:disabled) { + outline: none; + box-shadow: none; + } + } + + .woocommerce-task-import-products-stacks { + max-width: 574px; + } +} From b03149a29c33ad491d383248f61ae515b1806d53 Mon Sep 17 00:00:00 2001 From: moon Date: Wed, 27 Apr 2022 14:10:50 -0700 Subject: [PATCH 257/327] Align the stacks button center --- .../tasks/fills/experimental-import-products/cards.scss | 3 ++- .../tasks/fills/experimental-import-products/style.scss | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index 57a3ee23dbe..bdbb92d316b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -10,6 +10,7 @@ grid-row-gap: 24px; justify-content: start; } + display: inline-block; .woocommerce-list__item { float: left; @@ -31,7 +32,7 @@ justify-content: center; } - &:not(.transitions-disabled) { + &:not( .transitions-disabled ) { &.woocommerce-list__item-enter { transform: none; transition: none; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss index c2335dfb8ea..7f0d9852033 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss @@ -17,6 +17,7 @@ .woocommerce-task-import-products { max-width: 574px; margin: auto; + h1 { text-align: center; padding: 0 0 32px 0; @@ -28,8 +29,7 @@ box-shadow: none; } } - .woocommerce-task-import-products-stacks { - max-width: 574px; + text-align: center; } } From a441ff189b780b1825e397d93dba209a61b2ebe6 Mon Sep 17 00:00:00 2001 From: moon Date: Thu, 28 Apr 2022 12:11:26 -0700 Subject: [PATCH 258/327] Add stacks --- .../tasks/fills/experimental-import-products/index.tsx | 9 ++++----- .../tasks/fills/experimental-import-products/style.scss | 5 ++++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index 6b72da74b10..4be5fc2f127 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -14,13 +14,12 @@ import { useState } from '@wordpress/element'; import CardList from './CardList'; import { importTypes } from './importTypes'; import './style.scss'; - -const Stacks = () => { - return
Hello
; -}; +import { getProductTypes } from '../experimental-products/utils'; +import Stacks from '../experimental-products/stack'; const Products = () => { const [ showStacks, setStackVisibility ] = useState< boolean >( false ); + const StacksComponent = ; return (

{ __( 'Import your products', 'woocommerce' ) }

@@ -30,7 +29,7 @@ const Products = () => { { __( 'Or add your products from scratch', 'woocommerce' ) } - { showStacks && } + { showStacks && StacksComponent }
); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss index 7f0d9852033..75db0d6522a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss @@ -30,6 +30,9 @@ } } .woocommerce-task-import-products-stacks { - text-align: center; + display: flex; + flex-wrap: wrap; + justify-content: center; + padding: 12px; } } From 9cf2993975b558dbb7fa0ddfed1a7433aae9124e Mon Sep 17 00:00:00 2001 From: moon Date: Thu, 28 Apr 2022 20:45:49 -0700 Subject: [PATCH 259/327] Fix error with the items type --- .../client/tasks/fills/experimental-import-products/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index 4be5fc2f127..642e7627052 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -14,12 +14,12 @@ import { useState } from '@wordpress/element'; import CardList from './CardList'; import { importTypes } from './importTypes'; import './style.scss'; -import { getProductTypes } from '../experimental-products/utils'; +import useProductTypeListItems from '../experimental-products/use-product-types-list-items'; import Stacks from '../experimental-products/stack'; const Products = () => { const [ showStacks, setStackVisibility ] = useState< boolean >( false ); - const StacksComponent = ; + const StacksComponent = ; return (

{ __( 'Import your products', 'woocommerce' ) }

From 77765285e86f84d8e4343b3f2394f3defb6a1b2f Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Wed, 27 Apr 2022 11:36:39 -0300 Subject: [PATCH 260/327] Update illustrations and copy of task list experiment 1, with minor css updates --- .../two-column-tasks/headers/appearance.js | 15 ++++++++--- .../two-column-tasks/headers/marketing.js | 12 ++++++--- .../two-column-tasks/headers/payments.js | 16 ++++++++---- .../two-column-tasks/headers/products.js | 18 +++++++++---- .../two-column-tasks/headers/shipping.js | 12 ++++++--- .../client/two-column-tasks/headers/tax.js | 19 ++++++++++---- .../headers/woocommerce-payments.js | 10 ++++++-- .../two-column-tasks/sectioned-task-list.scss | 4 +++ .../client/two-column-tasks/style.scss | 24 +++++++++++++++--- .../images/task_list/payment-illustration.png | Bin 0 -> 10628 bytes .../images/task_list/sales-illustration.png | Bin 0 -> 15801 bytes .../task_list/shipping-illustration.png | Bin 0 -> 9020 bytes .../images/task_list/tax-illustration.png | Bin 0 -> 11350 bytes .../OnboardingTasks/Tasks/Marketing.php | 2 +- 14 files changed, 100 insertions(+), 32 deletions(-) create mode 100644 plugins/woocommerce/assets/images/task_list/payment-illustration.png create mode 100644 plugins/woocommerce/assets/images/task_list/sales-illustration.png create mode 100644 plugins/woocommerce/assets/images/task_list/shipping-illustration.png create mode 100644 plugins/woocommerce/assets/images/task_list/tax-illustration.png diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/appearance.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/appearance.js index 4573eebead5..a247eb3b75a 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/appearance.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/appearance.js @@ -8,17 +8,24 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import PersonalizeMyStore from './illustrations/personalize-my-store.js'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const AppearanceHeader = ( { task, goToTask } ) => { return (
- + {
-

{ __( 'Personalize my store', 'woocommerce' ) }

+

{ __( 'Make your store stand out', 'woocommerce' ) }

{ __( - 'Add your logo, create a homepage, and start designing your store', + 'Add your logo, create a homepage, and start designing your store.', 'woocommerce' ) }

diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/marketing.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/marketing.js index 9ed6440c3de..a918573935f 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/marketing.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/marketing.js @@ -8,17 +8,21 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import GetMoreSales from './illustrations/get-more-sales.js'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const MarketingHeader = ( { task, goToTask } ) => { return (
- + {

{ __( 'Get more sales', 'woocommerce' ) }

{ __( - 'Add tools to grow your store such as email, social, and in-person selling', + 'Give your business a boost by enabling social channels such as newsletter, Facebook, Google, in-person selling, and more.', 'woocommerce' ) }

@@ -27,7 +31,7 @@ const MarketingHeader = ( { task, goToTask } ) => { isPrimary={ ! task.isComplete } onClick={ goToTask } > - { __( 'Add selling tools', 'woocommerce' ) } + { __( 'Add sales channels', 'woocommerce' ) }

Timer{ ' ' } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/payments.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/payments.js index 34740031b83..21cabcd4559 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/payments.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/payments.js @@ -8,17 +8,23 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import GetPaid from './illustrations/get-paid'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const PaymentsHeader = ( { task, goToTask } ) => { return (

- + {
-

{ __( 'Choose payment methods', 'woocommerce' ) }

+

{ __( 'Add a way to get paid', 'woocommerce' ) }

{ __( - 'Choose payment providers and enable payment methods at checkout', + 'Choose from fast & secure online and offline payment methods to make it easy for your customers to pay in your store.', 'woocommerce' ) }

@@ -27,7 +33,7 @@ const PaymentsHeader = ( { task, goToTask } ) => { isPrimary={ ! task.isComplete } onClick={ goToTask } > - { __( 'Set up payments', 'woocommerce' ) } + { __( 'View options', 'woocommerce' ) }

Timer{ ' ' } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/products.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/products.js index 11014098e99..3af8e77e3e9 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/products.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/products.js @@ -8,17 +8,25 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import AddProducts from './illustrations/add-products.js'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const ProductsHeader = ( { task, goToTask } ) => { return (

- + {
-

{ __( 'Add products to start selling' ) }

+

{ __( 'Add products to sell', 'woocommerce' ) }

{ __( - 'Add your first products and see them shine on your store! You can add your products manually or import them.' + 'Build your catalog by adding what you want to sell. You can add products manually or import them from a different store.', + 'woocommerce' ) }

Timer{ ' ' } - { task.time } + { __( '2 minutes', 'woocommerce' ) }

diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/shipping.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/shipping.js index a43de82d915..eaeb4238d39 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/shipping.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/shipping.js @@ -8,19 +8,25 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import Shipping from './illustrations/shipping.js'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const ShippingHeader = ( { task, goToTask } ) => { return (
- + {

{ __( 'Set up shipping for your store', 'woocommerce' ) }

{ __( - 'Configure shipping zones and rates', + 'Choose where and how you will ship your products, select shipping methods, and add fixed or calculated rates.', 'woocommerce' ) }

diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/tax.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/tax.js index 01146b0d3b9..72cc65e8db1 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/tax.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/tax.js @@ -8,21 +8,30 @@ import { __ } from '@wordpress/i18n'; * Internal dependencies */ import TimerImage from './timer.svg'; -import AddTaxRates from './illustrations/add-tax-rates.js'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const TaxHeader = ( { task, goToTask } ) => { return (
- + {
-

{ __( 'Next up, add your tax rates', 'woocommerce' ) }

-

{ task.content }

+

{ __( 'Add your tax rates', 'woocommerce' ) }

+

+ { __( + 'Set up tax rates manually or use WooCommerce and Jetpack to automate your sales tax calculations for you.', + 'woocommerce' + ) } +

Timer{ ' ' } diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/woocommerce-payments.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/woocommerce-payments.js index 09293ebb88f..a05f8cd46cf 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/woocommerce-payments.js +++ b/plugins/woocommerce-admin/client/two-column-tasks/headers/woocommerce-payments.js @@ -14,7 +14,7 @@ import interpolateComponents from '@automattic/interpolate-components'; * Internal dependencies */ import TimerImage from './timer.svg'; -import GetPaid from './illustrations/get-paid'; +import { WC_ASSET_URL } from '../../utils/admin-settings'; const connect = ( createNotice, setIsBusy ) => { const errorMessage = __( @@ -45,7 +45,13 @@ const WoocommercePaymentsHeader = ( { task, trackClick } ) => { return (

- + {

{ __( "It's time to get paid", 'woocommerce' ) }

diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss index a52ee0bdbfc..379d0ed8ca9 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss @@ -33,6 +33,10 @@ .components-panel__arrow { right: $gap-large; } + + .woocommerce-task-header__contents p:first-of-type { + margin-top: $gap-small; + } } .wooocommerce-task-card__header-container { width: 100%; diff --git a/plugins/woocommerce-admin/client/two-column-tasks/style.scss b/plugins/woocommerce-admin/client/two-column-tasks/style.scss index b0f3420fd3e..740b00f4d0b 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/style.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/style.scss @@ -96,6 +96,12 @@ } } +.two-columns .woocommerce-task-dashboard__container.two-column-experiment { + .svg-background { + top: 15%; + } +} + .woocommerce-task-dashboard__container.two-column-experiment { max-width: 1032px; display: flex; @@ -130,12 +136,19 @@ } .woocommerce-task-header__contents { - max-width: calc(60% - 2%); + @include breakpoint( '<782px') { + max-width: 380px; + } + @include breakpoint('<600px') { + max-width: 100%; + } + + max-width: 65%; } .svg-background { - right: 2%; - width: 40%; + right: 6%; + width: 25%; } } @@ -264,6 +277,10 @@ color: $gray-600; } + p:first-of-type { + margin-top: $gap-smallest; + } + // This is required in order to have svg image as background. position: relative; z-index: 1; @@ -273,6 +290,7 @@ display: flex; align-items: center; line-height: 22px; + margin-bottom: 0; img { margin-right: 6px; } diff --git a/plugins/woocommerce/assets/images/task_list/payment-illustration.png b/plugins/woocommerce/assets/images/task_list/payment-illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..712c7c92bb259eccdc54b3879e372941939e75e4 GIT binary patch literal 10628 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 iu@;6 literal 0 HcmV?d00001 diff --git a/plugins/woocommerce/assets/images/task_list/tax-illustration.png b/plugins/woocommerce/assets/images/task_list/tax-illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..3da96cf393d55af2bc78b6999c437f9274887779 GIT binary patch literal 11350 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 z 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 Date: Wed, 27 Apr 2022 11:48:23 -0300 Subject: [PATCH 261/327] Add changelog --- .../changelog/fix-32802_update_copy_and_illustrations | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32802_update_copy_and_illustrations diff --git a/plugins/woocommerce/changelog/fix-32802_update_copy_and_illustrations b/plugins/woocommerce/changelog/fix-32802_update_copy_and_illustrations new file mode 100644 index 00000000000..8295a346a79 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32802_update_copy_and_illustrations @@ -0,0 +1,4 @@ +Significance: minor +Type: update + +Update illustrations and copy of new task list. #32805 From 711e0ce44935ed54586f91119779846f4a563508 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 29 Apr 2022 10:12:09 -0300 Subject: [PATCH 262/327] Remove unused illustrations --- .../headers/illustrations/add-products.js | 791 ------------------ .../headers/illustrations/add-tax-rates.js | 136 --- .../headers/illustrations/get-more-sales.js | 101 --- .../headers/illustrations/get-paid.js | 84 -- .../illustrations/personalize-my-store.js | 267 ------ .../headers/illustrations/setup_complete.svg | 111 --- .../headers/illustrations/shipping.js | 112 --- 7 files changed, 1602 deletions(-) delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-products.js delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-tax-rates.js delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-more-sales.js delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-paid.js delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/personalize-my-store.js delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/setup_complete.svg delete mode 100644 plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/shipping.js diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-products.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-products.js deleted file mode 100644 index b9545be7961..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-products.js +++ /dev/null @@ -1,791 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-tax-rates.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-tax-rates.js deleted file mode 100644 index 3a1bfa0dfd8..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/add-tax-rates.js +++ /dev/null @@ -1,136 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-more-sales.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-more-sales.js deleted file mode 100644 index 2a2f42503c7..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-more-sales.js +++ /dev/null @@ -1,101 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-paid.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-paid.js deleted file mode 100644 index 426ea03528e..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/get-paid.js +++ /dev/null @@ -1,84 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - -); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/personalize-my-store.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/personalize-my-store.js deleted file mode 100644 index e71b2907e02..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/personalize-my-store.js +++ /dev/null @@ -1,267 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/setup_complete.svg b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/setup_complete.svg deleted file mode 100644 index 4be1cdecd22..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/setup_complete.svg +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/shipping.js b/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/shipping.js deleted file mode 100644 index 9be69a2ae76..00000000000 --- a/plugins/woocommerce-admin/client/two-column-tasks/headers/illustrations/shipping.js +++ /dev/null @@ -1,112 +0,0 @@ -export default ( props ) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - -); From fbdc08eb3603a86e388255ec698801a88b7464c6 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 29 Apr 2022 11:11:30 -0300 Subject: [PATCH 263/327] Some minor changes to tasks height for each task list to match design --- .../client/two-column-tasks/sectioned-task-list.scss | 4 ++++ plugins/woocommerce-admin/client/two-column-tasks/style.scss | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss index 379d0ed8ca9..e00c01ba343 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/sectioned-task-list.scss @@ -62,6 +62,7 @@ ul li.woocommerce-task-list__item { padding-top: $gap; padding-bottom: $gap; + min-height: 72px; &.is-disabled { pointer-events: none; @@ -72,6 +73,9 @@ .woocommerce-task__icon { border-color: $gray-300; } + .woocommerce-task-list__item-expandable-content { + line-height: $gap; + } } .woocommerce-task-list__item.complete .woocommerce-task__icon { diff --git a/plugins/woocommerce-admin/client/two-column-tasks/style.scss b/plugins/woocommerce-admin/client/two-column-tasks/style.scss index 740b00f4d0b..9a023b87a37 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/style.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/style.scss @@ -170,7 +170,7 @@ width: 100%; border-right: 1px solid #e0e0e0; border-top: none; - padding: 25px; + padding: $gap $gap-large; } li:last-child { border-right: none; From 98838fe8b49a79586b8cf05bc0369231dcec9a1f Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 28 Apr 2022 10:47:06 -0700 Subject: [PATCH 264/327] Adding slotfill support to task experiment one, fixing odd behavior around link clicks --- .../client/two-column-tasks/style.scss | 1 + .../task-list-item-two-column.tsx | 114 ++++++++++++++++++ .../two-column-tasks/task-list-item.tsx | 4 +- .../client/two-column-tasks/task-list.tsx | 66 ++-------- 4 files changed, 128 insertions(+), 57 deletions(-) create mode 100644 plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx diff --git a/plugins/woocommerce-admin/client/two-column-tasks/style.scss b/plugins/woocommerce-admin/client/two-column-tasks/style.scss index b0f3420fd3e..b810a07af1d 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/style.scss +++ b/plugins/woocommerce-admin/client/two-column-tasks/style.scss @@ -176,6 +176,7 @@ position: absolute; width: 100%; height: 100%; + pointer-events: none; } } .woocommerce-task-list__item:not(.complete) .woocommerce-task__icon { diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx new file mode 100644 index 00000000000..c735b3ad0b5 --- /dev/null +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx @@ -0,0 +1,114 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; +import { OPTIONS_STORE_NAME, TaskType } from '@woocommerce/data'; +import { TaskItem, useSlot } from '@woocommerce/experimental'; +import { useCallback } from '@wordpress/element'; +import { useDispatch } from '@wordpress/data'; + +import { WooOnboardingTaskListItem } from '@woocommerce/onboarding'; +import classnames from 'classnames'; + +export type TaskListItemProps = { + task: TaskType; + activeTaskId: string; + taskIndex: number; + goToTask: () => void; + trackClick: () => void; +}; + +export const TaskListItemTwoColumn: React.FC< TaskListItemProps > = ( { + task, + activeTaskId, + taskIndex, + goToTask, + trackClick, +} ) => { + const { createNotice } = useDispatch( 'core/notices' ); + const { dismissTask, undoDismissTask } = useDispatch( OPTIONS_STORE_NAME ); + + const { + id: taskId, + title, + content, + time, + actionLabel, + isComplete, + additionalInfo, + isDismissable, + } = task; + + const slot = useSlot( `woocommerce_onboarding_task_list_item_${ taskId }` ); + const hasFills = Boolean( slot?.fills?.length ); + + const onDismissTask = ( onDismiss?: () => void ) => { + dismissTask( taskId ); + createNotice( 'success', __( 'Task dismissed' ), { + actions: [ + { + label: __( 'Undo', 'woocommerce' ), + onClick: () => undoDismissTask( taskId ), + }, + ], + } ); + + if ( onDismiss ) { + onDismiss(); + } + }; + + const DefaultTaskItem = useCallback( + ( props ) => { + const className = classnames( + 'woocommerce-task-list__item index-' + taskIndex, + { + complete: isComplete, + 'is-active': taskId === activeTaskId, + } + ); + + const onClickActions = () => { + if ( props.onClick ) { + trackClick(); + return props.onClick(); + } + goToTask(); + }; + return ( + { + if ( e.target.tagName === 'A' ) { + return; + } + onClickActions(); + } } + onDismiss={ + isDismissable ? () => onDismissTask() : undefined + } + action={ () => {} } + actionLabel={ actionLabel } + /> + ); + }, + [ taskId, title, content, time, actionLabel, isComplete, activeTaskId ] + ); + + return hasFills ? ( + + ) : ( + + ); +}; diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx index 25a3d2bf56f..e7655a7033a 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx @@ -123,8 +123,8 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( { action={ () => {} } actionLabel={ task.actionLabel } { ...props } - onClick={ () => { - if ( task.isDisabled ) { + onClick={ ( e: React.ChangeEvent ) => { + if ( task.isDisabled || e.target.tagName === 'A' ) { return; } onClickActions(); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx index 5c14ab1c3f5..10d78958ea0 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list.tsx @@ -20,7 +20,7 @@ import { TaskListType, } from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; -import { List, TaskItem } from '@woocommerce/experimental'; +import { List } from '@woocommerce/experimental'; import classnames from 'classnames'; import { History } from 'history'; @@ -32,6 +32,7 @@ import taskHeaders from './task-headers'; import DismissModal from './dismiss-modal'; import TaskListCompleted from './completed'; import { ProgressHeader } from '~/task-lists/progress-header'; +import { TaskListItemTwoColumn } from './task-list-item-two-column'; export type TaskListProps = TaskListType & { eventName?: string; @@ -53,10 +54,7 @@ export const TaskList: React.FC< TaskListProps > = ( { displayProgressHeader, } ) => { const listEventPrefix = eventName ? eventName + '_' : eventPrefix; - const { createNotice } = useDispatch( 'core/notices' ); - const { updateOptions, dismissTask, undoDismissTask } = useDispatch( - OPTIONS_STORE_NAME - ); + const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); const { profileItems } = useSelect( ( select ) => { const { getProfileItems } = select( ONBOARDING_STORE_NAME ); return { @@ -105,23 +103,7 @@ export const TaskList: React.FC< TaskListProps > = ( { ( task ) => ! task.isComplete && ! task.isDismissed ); - const onDismissTask = ( taskId: string, onDismiss?: () => void ) => { - dismissTask( taskId ); - createNotice( 'success', __( 'Task dismissed' ), { - actions: [ - { - label: __( 'Undo', 'woocommerce' ), - onClick: () => undoDismissTask( taskId ), - }, - ], - } ); - - if ( onDismiss ) { - onDismiss(); - } - }; - - const hideTasks = ( event: string ) => { + const hideTasks = () => { hideTaskList( id ); }; @@ -153,7 +135,7 @@ export const TaskList: React.FC< TaskListProps > = ( { setShowDismissModal( true ); onToggle(); } else { - hideTasks( 'remove_card' ); + hideTasks(); } } } > @@ -234,15 +216,6 @@ export const TaskList: React.FC< TaskListProps > = ( { } }; - const onTaskSelected = ( task: TaskType ) => { - if ( task.id === 'woocommerce-payments' ) { - // With WCPay, we have to show the header content for user to read t&c first. - showTaskHeader( task ); - } else { - goToTask( task ); - } - }; - useEffect( () => { if ( selectedHeaderCard ) { showTaskHeader( selectedHeaderCard ); @@ -299,31 +272,14 @@ export const TaskList: React.FC< TaskListProps > = ( {

{ visibleTasks.map( ( task, index ) => { - ++index; - const className = classnames( - 'woocommerce-task-list__item index-' + index, - { - complete: task.isComplete, - 'is-active': task.id === activeTaskId, - } - ); return ( - { - onTaskSelected( task ); - } } - onDismiss={ - task.isDismissable - ? () => onDismissTask( task.id ) - : undefined - } - action={ () => {} } - actionLabel={ task.actionLabel } + taskIndex={ ++index } + activeTaskId={ activeTaskId } + task={ task } + goToTask={ () => goToTask( task ) } + trackClick={ () => trackClick( task ) } /> ); } ) } From a7f457c4888e9ccd31bae6dcd2de82519600ecd5 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 28 Apr 2022 10:47:58 -0700 Subject: [PATCH 265/327] Fixing test --- .../client/two-column-tasks/test/task-list.test.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx b/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx index 49fb4a1772c..7b392e02d0a 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/test/task-list.test.tsx @@ -15,6 +15,7 @@ jest.mock( '@woocommerce/tracks', () => ( { } ) ); jest.mock( '@woocommerce/experimental', () => ( { TaskItem: ( props: { title: string } ) =>
{ props.title }
, + useSlot: jest.fn(), List: jest.fn().mockImplementation( ( { children } ) => children ), } ) ); jest.mock( '@woocommerce/components', () => ( { From a42047607ac43843506c55bfc58119860b3610d1 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 28 Apr 2022 10:49:14 -0700 Subject: [PATCH 266/327] Adding changelog --- plugins/woocommerce/changelog/add-32762 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32762 diff --git a/plugins/woocommerce/changelog/add-32762 b/plugins/woocommerce/changelog/add-32762 new file mode 100644 index 00000000000..2111cdea6d7 --- /dev/null +++ b/plugins/woocommerce/changelog/add-32762 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Add legal messaging on WCPay task and fix click behavior From d58b436265be39354694c3a860b0d4477c1b9da5 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 28 Apr 2022 12:23:58 -0700 Subject: [PATCH 267/327] Removing excess content in wcpay task on experiment --- .../client/two-column-tasks/task-list-item-two-column.tsx | 2 +- .../client/two-column-tasks/task-list-item.tsx | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx index c735b3ad0b5..3147ccb1b8a 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx @@ -84,7 +84,7 @@ export const TaskListItemTwoColumn: React.FC< TaskListItemProps > = ( { additionalInfo={ additionalInfo } content={ content } onClick={ ( e: React.ChangeEvent ) => { - if ( e.target.tagName === 'A' ) { + if ( e.target?.tagName === 'A' ) { return; } onClickActions(); diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx index e7655a7033a..a0c11932810 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx @@ -118,7 +118,6 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( { completed={ task.isComplete } expanded={ ! task.isComplete } additionalInfo={ task.additionalInfo } - content={ task.content } onDismiss={ task.isDismissable && onDismiss } action={ () => {} } actionLabel={ task.actionLabel } From d0d2de10bf4f211c1df91dd8c8ca093394025f13 Mon Sep 17 00:00:00 2001 From: Joel T Date: Thu, 28 Apr 2022 14:37:01 -0700 Subject: [PATCH 268/327] Fixing typescript error --- .../client/two-column-tasks/task-list-item-two-column.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx index 3147ccb1b8a..9f436d7bb3d 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item-two-column.tsx @@ -83,8 +83,8 @@ export const TaskListItemTwoColumn: React.FC< TaskListItemProps > = ( { completed={ isComplete } additionalInfo={ additionalInfo } content={ content } - onClick={ ( e: React.ChangeEvent ) => { - if ( e.target?.tagName === 'A' ) { + onClick={ ( e: React.MouseEvent< HTMLButtonElement > ) => { + if ( ( e.target as HTMLElement ).tagName === 'A' ) { return; } onClickActions(); From 96a8b5b226bc2bc9a55ce1d7091d8f6c16ae34a2 Mon Sep 17 00:00:00 2001 From: Lourens Schep Date: Fri, 29 Apr 2022 11:26:57 -0300 Subject: [PATCH 269/327] Fix type definition in TaskItem prop --- packages/js/experimental/CHANGELOG.md | 1 + .../js/experimental/src/experimental-list/task-item/index.tsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/js/experimental/CHANGELOG.md b/packages/js/experimental/CHANGELOG.md index 824278ada63..23f8d6dbe5f 100644 --- a/packages/js/experimental/CHANGELOG.md +++ b/packages/js/experimental/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased +- Update TaskItem props type definition. - Fix setup task list style conflict #32704 - Update dependency `@wordpress/icons` to ^8.1.0 - Added Typescript type declarations. #32615 diff --git a/packages/js/experimental/src/experimental-list/task-item/index.tsx b/packages/js/experimental/src/experimental-list/task-item/index.tsx index 8aa2864d296..78625ef9e0e 100644 --- a/packages/js/experimental/src/experimental-list/task-item/index.tsx +++ b/packages/js/experimental/src/experimental-list/task-item/index.tsx @@ -39,7 +39,7 @@ type ActionArgs = { type TaskItemProps = { title: string; completed: boolean; - onClick: () => void; + onClick: React.MouseEventHandler< HTMLElement >; onCollapse?: () => void; onDelete?: () => void; onDismiss?: () => void; From 06dd122939b4fa30cf63bac89deffcd781739c1b Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 29 Apr 2022 12:40:01 -0300 Subject: [PATCH 270/327] Fix progress header title --- .../progress-header/progress-header.tsx | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx index a80319ecc40..bc8288ebad7 100644 --- a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx +++ b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx @@ -20,40 +20,33 @@ type ProgressHeaderProps = { export const ProgressHeader: React.FC< ProgressHeaderProps > = ( { taskListId, } ) => { - const { - loading, - tasksCount, - completedCount, - hasVisitedTasks, - disabledCompletedCount, - } = useSelect( ( select ) => { - const taskList = select( ONBOARDING_STORE_NAME ).getTaskList( - taskListId - ); - const finishedResolution = select( - ONBOARDING_STORE_NAME - ).hasFinishedResolution( 'getTaskList', [ taskListId ] ); - const visibleTasks = getVisibleTasks( taskList?.tasks || [] ); + const { loading, tasksCount, completedCount, hasVisitedTasks } = useSelect( + ( select ) => { + const taskList = select( ONBOARDING_STORE_NAME ).getTaskList( + taskListId + ); + const finishedResolution = select( + ONBOARDING_STORE_NAME + ).hasFinishedResolution( 'getTaskList', [ taskListId ] ); + const visibleTasks = getVisibleTasks( taskList?.tasks || [] ); - return { - loading: ! finishedResolution, - tasksCount: visibleTasks?.length, - completedCount: visibleTasks?.filter( ( task ) => task.isComplete ) - .length, - disabledCompletedCount: visibleTasks?.filter( - ( task ) => task.isComplete && task.isDisabled - ).length, - hasVisitedTasks: - visibleTasks?.filter( ( task ) => task.isVisited ).length > 0, - }; - } ); + return { + loading: ! finishedResolution, + tasksCount: visibleTasks?.length, + completedCount: visibleTasks?.filter( + ( task ) => task.isComplete + ).length, + hasVisitedTasks: + visibleTasks?.filter( + ( task ) => + task.isVisited && task.id !== 'store_details' + ).length > 0, + }; + } + ); const progressTitle = useMemo( () => { - if ( - ( ! hasVisitedTasks && - completedCount < 2 + disabledCompletedCount ) || - completedCount === tasksCount - ) { + if ( ! hasVisitedTasks || completedCount === tasksCount ) { const siteTitle = getSetting( 'siteTitle' ); return siteTitle ? sprintf( @@ -70,7 +63,7 @@ export const ProgressHeader: React.FC< ProgressHeaderProps > = ( { return __( 'You are on the right track', 'woocommerce' ); } return __( 'You are almost there', 'woocommerce' ); - }, [ completedCount, hasVisitedTasks ] ); + }, [ completedCount, hasVisitedTasks, tasksCount ] ); if ( loading ) { return null; From 6a9bb8ab49441b7f011fae0268970672113a1822 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 26 Apr 2022 14:51:26 -0300 Subject: [PATCH 271/327] Fix default title --- .../client/task-lists/progress-header/progress-header.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx index bc8288ebad7..2209df90a12 100644 --- a/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx +++ b/plugins/woocommerce-admin/client/task-lists/progress-header/progress-header.tsx @@ -54,7 +54,7 @@ export const ProgressHeader: React.FC< ProgressHeaderProps > = ( { __( 'Welcome to %s', 'woocommerce' ), siteTitle ) - : __( 'Welcome', 'woocommerce' ); + : __( 'Welcome to your store', 'woocommerce' ); } if ( completedCount > 0 && completedCount < 4 ) { return __( "Let's get you started", 'woocommerce' ) + ' 🚀'; From b8a8e9d272c0cd93d9b735391416d04106cffe48 Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Tue, 26 Apr 2022 15:31:55 -0300 Subject: [PATCH 272/327] Add changelog --- plugins/woocommerce/changelog/fix-32720_progress-header-title | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32720_progress-header-title diff --git a/plugins/woocommerce/changelog/fix-32720_progress-header-title b/plugins/woocommerce/changelog/fix-32720_progress-header-title new file mode 100644 index 00000000000..2cbb7e6f01e --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32720_progress-header-title @@ -0,0 +1,4 @@ +Significance: minor +Type: fix + +Fix progress header title #32786 From 23c829efeac82874a0bb02fb9fbd9d53156ea75b Mon Sep 17 00:00:00 2001 From: Fernando Marichal Date: Fri, 29 Apr 2022 16:31:26 -0300 Subject: [PATCH 273/327] Fix sectioned task list --- .../two-column-tasks/task-list-item.tsx | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx index 25a3d2bf56f..e56e7143389 100644 --- a/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx +++ b/plugins/woocommerce-admin/client/two-column-tasks/task-list-item.tsx @@ -7,7 +7,12 @@ import { getNewPath, updateQueryString, } from '@woocommerce/navigation'; -import { OPTIONS_STORE_NAME, TaskType } from '@woocommerce/data'; +import { + ONBOARDING_STORE_NAME, + OPTIONS_STORE_NAME, + TaskType, + useUserPreferences, +} from '@woocommerce/data'; import { recordEvent } from '@woocommerce/tracks'; import { TaskItem, useSlot } from '@woocommerce/experimental'; import { useCallback } from '@wordpress/element'; @@ -32,16 +37,46 @@ export const TaskListItem: React.FC< TaskListItemProps > = ( { snoozeTask, undoSnoozeTask, } = useDispatch( OPTIONS_STORE_NAME ); + const { visitedTask } = useDispatch( ONBOARDING_STORE_NAME ); const slot = useSlot( `woocommerce_onboarding_task_list_item_${ task.id }` ); const hasFills = Boolean( slot?.fills?.length ); + const userPreferences = useUserPreferences(); + + const getTaskStartedCount = () => { + const trackedStartedTasks = + userPreferences.task_list_tracked_started_tasks; + if ( ! trackedStartedTasks || ! trackedStartedTasks[ task.id ] ) { + return 0; + } + return trackedStartedTasks[ task.id ]; + }; + + const updateTrackStartedCount = () => { + const newCount = getTaskStartedCount() + 1; + const trackedStartedTasks = + userPreferences.task_list_tracked_started_tasks || {}; + + visitedTask( task.id ); + userPreferences.updateUserPreferences( { + task_list_tracked_started_tasks: { + ...( trackedStartedTasks || {} ), + [ task.id ]: newCount, + }, + } ); + }; + const trackClick = () => { recordEvent( `${ eventPrefix }click`, { task_name: task.id, } ); + + if ( ! task.isComplete ) { + updateTrackStartedCount(); + } }; const onTaskSelected = () => { From 422018eb78e3807701c380617e66dda6131b4897 Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 14:42:04 -0700 Subject: [PATCH 274/327] Refactor useProductTypeListItems to accept product types --- .../client/tasks/fills/experimental-products/index.tsx | 4 ++-- .../experimental-products/use-product-types-list-items.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx index e599489202d..3b999605034 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/index.tsx @@ -14,7 +14,7 @@ import { Icon, chevronDown, chevronUp } from '@wordpress/icons'; */ import './index.scss'; import { getAdminSetting } from '~/utils/admin-settings'; -import { getSurfacedProductTypeKeys } from './utils'; +import { getSurfacedProductTypeKeys, getProductTypes } from './utils'; import useProductTypeListItems from './use-product-types-list-items'; import Stack from './stack'; import Footer from './footer'; @@ -50,7 +50,7 @@ const ViewControlButton: React.FC< { export const Products = () => { const [ isExpanded, setIsExpanded ] = useState< boolean >( false ); - const productTypes = useProductTypeListItems(); + const productTypes = useProductTypeListItems( getProductTypes() ); const surfacedProductTypeKeys = getSurfacedProductTypeKeys( getOnboardingProductType() ); diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx index 52291c7a67b..6f319d8e67b 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/use-product-types-list-items.tsx @@ -6,15 +6,15 @@ import { useMemo } from '@wordpress/element'; /** * Internal dependencies */ -import { getProductTypes } from './utils'; import useCreateProductByType from './use-create-product-by-type'; +import { ProductType } from './constants'; -const useProductTypeListItems = () => { +const useProductTypeListItems = ( _productTypes: ProductType[] ) => { const { createProductByType } = useCreateProductByType(); const productTypes = useMemo( () => - getProductTypes().map( ( productType ) => ( { + _productTypes.map( ( productType ) => ( { ...productType, onClick: () => createProductByType( productType.key ), } ) ), From 0c3a142e899424b0bffa54c9eec3a9efe4f5d954 Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 15:51:46 -0700 Subject: [PATCH 275/327] Convert svg to react component --- .../fills/experimental-products/constants.tsx | 12 +++---- .../icon/lightbulb_24px.js | 33 +++++++++++++++++++ .../experimental-products/icon/link_24px.js | 32 ++++++++++++++++++ .../icon/widgets_24px.js | 33 +++++++++++++++++++ 4 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.js create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.js create mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.js diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx index a08ed2474ef..d12ac2767c9 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/constants.tsx @@ -11,9 +11,9 @@ import { Icon, chevronRight } from '@wordpress/icons'; /** * Internal dependencies */ -import Link from './icon/link_24px.svg'; -import Widget from './icon/widgets_24px.svg'; -import LightBulb from './icon/lightbulb_24px.svg'; +import Link from './icon/link_24px.js'; +import Widget from './icon/widgets_24px.js'; +import LightBulb from './icon/lightbulb_24px.js'; export const productTypes = Object.freeze( [ { @@ -60,14 +60,14 @@ export const productTypes = Object.freeze( [ key: 'grouped' as const, title: __( 'Grouped product', 'woocommerce' ), content: __( 'A collection of related products.', 'woocommerce' ), - before: Widget, + before: , after: , }, { key: 'external' as const, title: __( 'External product', 'woocommerce' ), content: __( 'Link a product to an external website.', 'woocommerce' ), - before: Link, + before: , after: , }, ] ); @@ -78,7 +78,7 @@ export const LoadSampleProductType = { content: __( 'Load sample products and see what they look like in your store.' ), - before: Light Bulb, + before: , after: , className: 'woocommerce-products-list__item-load-sample-product', }; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.js b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.js new file mode 100644 index 00000000000..31097cf795c --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.js @@ -0,0 +1,33 @@ +const Lightbulb = () => { + return ( + + + + + + + + + ); +}; + +export default Lightbulb; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.js b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.js new file mode 100644 index 00000000000..b306d1abccb --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.js @@ -0,0 +1,32 @@ +const Link = () => { + return ( + + + + + + + + + ); +}; +export default Link; diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.js b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.js new file mode 100644 index 00000000000..76673834c8a --- /dev/null +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.js @@ -0,0 +1,33 @@ +const Widget = () => { + return ( + + + + + + + + + ); +}; + +export default Widget; From 0958641c85e60f4de0ad517775521106a337d17f Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 15:53:07 -0700 Subject: [PATCH 276/327] Update svg fill --- .../experimental-import-products/index.tsx | 11 +++++++++-- .../experimental-import-products/style.scss | 17 +++++++++++++++-- .../icon/lightbulb_24px.svg | 8 -------- .../experimental-products/icon/link_24px.svg | 8 -------- .../experimental-products/icon/widgets_24px.svg | 8 -------- 5 files changed, 24 insertions(+), 28 deletions(-) delete mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg delete mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg delete mode 100644 plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index 642e7627052..27d539810bc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -7,7 +7,7 @@ import { __ } from '@wordpress/i18n'; import { Icon, chevronUp, chevronDown } from '@wordpress/icons'; import { Button } from '@wordpress/components'; import { useState } from '@wordpress/element'; - +import { find } from 'lodash'; /** * Internal dependencies */ @@ -16,10 +16,17 @@ import { importTypes } from './importTypes'; import './style.scss'; import useProductTypeListItems from '../experimental-products/use-product-types-list-items'; import Stacks from '../experimental-products/stack'; +import { getProductTypes } from '../experimental-products/utils'; const Products = () => { const [ showStacks, setStackVisibility ] = useState< boolean >( false ); - const StacksComponent = ; + const StacksComponent = ( + + ); return (

{ __( 'Import your products', 'woocommerce' ) }

diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss index 75db0d6522a..f2d0e3cf835 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss @@ -15,13 +15,14 @@ } .woocommerce-task-import-products { - max-width: 574px; + max-width: 544px; margin: auto; h1 { text-align: center; padding: 0 0 32px 0; } + button { color: var(--wp-admin-theme-color); &:focus:not(:disabled) { @@ -29,10 +30,22 @@ box-shadow: none; } } + .woocommerce-task-import-products-stacks { display: flex; flex-wrap: wrap; justify-content: center; - padding: 12px; + padding: 25px 0 12px 0; + + .woocommerce-list__item-before { + border: 0; + background: none; + svg { + fill: #bbb; + rect { + fill: #bbb; + } + } + } } } diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg deleted file mode 100644 index ddba5a742ef..00000000000 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/lightbulb_24px.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg deleted file mode 100644 index 4212c9877e7..00000000000 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/link_24px.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg b/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg deleted file mode 100644 index d8421e726dd..00000000000 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-products/icon/widgets_24px.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - From 4ee252b549fb30f909adda730c1f8ee379e8c06d Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 15:53:45 -0700 Subject: [PATCH 277/327] Style fix --- .../client/tasks/fills/experimental-import-products/cards.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index bdbb92d316b..46da606e21c 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -32,7 +32,7 @@ justify-content: center; } - &:not( .transitions-disabled ) { + &:not(.transitions-disabled) { &.woocommerce-list__item-enter { transform: none; transition: none; From bc634512affe79e3598c30ec3ec49eda5a695487 Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 16:01:05 -0700 Subject: [PATCH 278/327] Remove unnecessary style --- .../client/tasks/fills/experimental-import-products/cards.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index 46da606e21c..57a3ee23dbe 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -10,7 +10,6 @@ grid-row-gap: 24px; justify-content: start; } - display: inline-block; .woocommerce-list__item { float: left; From d61668cb5e54816f7a8a42f79a0d133c0f6feea3 Mon Sep 17 00:00:00 2001 From: moon Date: Fri, 29 Apr 2022 16:08:40 -0700 Subject: [PATCH 279/327] Add changelog --- .../changelog/add-32143-add-experimental-import-products | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-32143-add-experimental-import-products diff --git a/plugins/woocommerce/changelog/add-32143-add-experimental-import-products b/plugins/woocommerce/changelog/add-32143-add-experimental-import-products new file mode 100644 index 00000000000..ac2b36ceb8e --- /dev/null +++ b/plugins/woocommerce/changelog/add-32143-add-experimental-import-products @@ -0,0 +1,4 @@ +Significance: patch +Type: add + +Add experimental import product task, which replaces the default add products task when selling elsewhere is selected during the OBW. \ No newline at end of file From c50de996fa17c813575dfdf25763aa22c85b9bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9stor=20Soriano?= Date: Mon, 2 May 2022 11:01:27 +0200 Subject: [PATCH 280/327] Add changelog file --- .../changelog/add-support-select2-for-log_file-dropdown | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/add-support-select2-for-log_file-dropdown diff --git a/plugins/woocommerce/changelog/add-support-select2-for-log_file-dropdown b/plugins/woocommerce/changelog/add-support-select2-for-log_file-dropdown new file mode 100644 index 00000000000..0f5629430d4 --- /dev/null +++ b/plugins/woocommerce/changelog/add-support-select2-for-log_file-dropdown @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add support for select2 for the log files dropdown From 69dc8fe777637a287da57e15db910a4cc474a2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=A9stor=20Soriano?= Date: Mon, 2 May 2022 11:15:19 +0200 Subject: [PATCH 281/327] Add changelog file --- ...igured-decimal-separator-for-product-weight-and-dimensions | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/use-configured-decimal-separator-for-product-weight-and-dimensions diff --git a/plugins/woocommerce/changelog/use-configured-decimal-separator-for-product-weight-and-dimensions b/plugins/woocommerce/changelog/use-configured-decimal-separator-for-product-weight-and-dimensions new file mode 100644 index 00000000000..6abab5dce2e --- /dev/null +++ b/plugins/woocommerce/changelog/use-configured-decimal-separator-for-product-weight-and-dimensions @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Use the configured decimal separator to format product weight and dimensions From 4597c47f63b62027c5acaa931da2ddf0e9a73fda Mon Sep 17 00:00:00 2001 From: Luigi Date: Mon, 2 May 2022 11:21:10 +0200 Subject: [PATCH 282/327] create BlocksUtil file - refactor --- .../includes/blocks/class-wc-blocks-utils.php | 66 ---------------- .../woocommerce/includes/class-wc-tracker.php | 5 +- .../src/Internal/Utilities/BlocksUtil.php | 75 +++++++++++++++++++ 3 files changed, 78 insertions(+), 68 deletions(-) create mode 100644 plugins/woocommerce/src/Internal/Utilities/BlocksUtil.php diff --git a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php index b9eb7b08539..4ecb4c212e5 100644 --- a/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php +++ b/plugins/woocommerce/includes/blocks/class-wc-blocks-utils.php @@ -59,29 +59,6 @@ class WC_Blocks_Utils { ); } - /** - * Get all instances of the specified block on a specific template part. - * - * @param string $block_name The name (id) of a block, e.g. `woocommerce/mini-cart`. - * @param string $template_part_slug The woo page to search, e.g. `header`. - * @return array Array of blocks as returned by parse_blocks(). - */ - public static function get_block_from_template_part( $block_name, $template_part_slug ) { - $template = get_block_template( get_stylesheet() . '//' . $template_part_slug, 'wp_template_part' ); - $blocks = parse_blocks( $template->content ); - - $flatten_blocks = self::flatten_blocks( $blocks ); - - return array_values( - array_filter( - $flatten_blocks, - function ( $block ) use ( $block_name ) { - return ( $block_name === $block['blockName'] ); - } - ) - ); - } - /** * Check if a given page contains a particular block. * @@ -104,47 +81,4 @@ class WC_Blocks_Utils { return false; } - - /** - * Return blocks with their inner blocks flattened. - * - * @param array $blocks Array of blocks as returned by parse_blocks(). - * @return array All blocks. - */ - public static function flatten_blocks( $blocks ) { - return array_reduce( - $blocks, - function( $carry, $block ) { - array_push( $carry, array_diff_key( $block, array_flip( array( 'innerBlocks' ) ) ) ); - if ( isset( $block['innerBlocks'] ) ) { - $inner_blocks = self::flatten_blocks( $block['innerBlocks'] ); - return array_merge( $carry, $inner_blocks ); - } - - return $carry; - }, - array() - ); - } - - /** - * Get all instances of the specified block from the widget area. - * - * @param array $block_name The name (id) of a block, e.g. `woocommerce/mini-cart`. - * @return array Array of blocks as returned by parse_blocks(). - */ - public static function get_blocks_from_widget_area( $block_name ) { - return array_reduce( - get_option( 'widget_block' ), - function ( $acc, $block ) use ( $block_name ) { - $parsed_blocks = ! empty( $block ) && is_array( $block ) ? parse_blocks( $block['content'] ) : array(); - if ( ! empty( $parsed_blocks ) && $block_name === $parsed_blocks[0]['blockName'] ) { - array_push( $acc, $parsed_blocks[0] ); - return $acc; - } - return $acc; - }, - array() - ); - } } diff --git a/plugins/woocommerce/includes/class-wc-tracker.php b/plugins/woocommerce/includes/class-wc-tracker.php index 24f77fef403..20371efd7d4 100644 --- a/plugins/woocommerce/includes/class-wc-tracker.php +++ b/plugins/woocommerce/includes/class-wc-tracker.php @@ -11,6 +11,7 @@ */ use Automattic\Jetpack\Constants; +use Automattic\WooCommerce\Internal\Utilities\BlocksUtil; defined( 'ABSPATH' ) || exit; @@ -784,9 +785,9 @@ class WC_Tracker { * * @return array */ - public static function get_mini_cart_info() { + private static function get_mini_cart_info() { $mini_cart_block_name = 'woocommerce/mini-cart'; - $mini_cart_block_data = wc_current_theme_is_fse_theme() ? WC_Blocks_Utils::get_block_from_template_part( $mini_cart_block_name, 'header' ) : WC_Blocks_Utils::get_blocks_from_widget_area( $mini_cart_block_name ); + $mini_cart_block_data = wc_current_theme_is_fse_theme() ? BlocksUtil::get_block_from_template_part( $mini_cart_block_name, 'header' ) : BlocksUtil::get_blocks_from_widget_area( $mini_cart_block_name ); return array( 'mini_cart_used' => empty( $mini_cart_block_data[0] ) ? 'No' : 'Yes', 'mini_cart_block_attributes' => empty( $mini_cart_block_data[0] ) ? array() : $mini_cart_block_data[0]['attrs'], diff --git a/plugins/woocommerce/src/Internal/Utilities/BlocksUtil.php b/plugins/woocommerce/src/Internal/Utilities/BlocksUtil.php new file mode 100644 index 00000000000..65fbbcefbd8 --- /dev/null +++ b/plugins/woocommerce/src/Internal/Utilities/BlocksUtil.php @@ -0,0 +1,75 @@ +content ); + + $flatten_blocks = self::flatten_blocks( $blocks ); + + return array_values( + array_filter( + $flatten_blocks, + function ( $block ) use ( $block_name ) { + return ( $block_name === $block['blockName'] ); + } + ) + ); + } +} From c1dcab572558941ef443f80a122c2ff4c73b9814 Mon Sep 17 00:00:00 2001 From: "Jorge A. Torres" Date: Thu, 14 Apr 2022 15:09:55 -0300 Subject: [PATCH 283/327] Properly escape tax class filter in legacy v3 REST API /taxes endpoint --- .../woocommerce/includes/legacy/api/v3/class-wc-api-taxes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/includes/legacy/api/v3/class-wc-api-taxes.php b/plugins/woocommerce/includes/legacy/api/v3/class-wc-api-taxes.php index d5a96ccf994..0e9a0b77697 100644 --- a/plugins/woocommerce/includes/legacy/api/v3/class-wc-api-taxes.php +++ b/plugins/woocommerce/includes/legacy/api/v3/class-wc-api-taxes.php @@ -411,7 +411,7 @@ class WC_API_Taxes extends WC_API_Resource { // Filter by tax class if ( ! empty( $args['tax_rate_class'] ) ) { - $tax_rate_class = 'standard' !== $args['tax_rate_class'] ? sanitize_title( $args['tax_rate_class'] ) : ''; + $tax_rate_class = esc_sql( 'standard' !== $args['tax_rate_class'] ? sanitize_title( $args['tax_rate_class'] ) : '' ); $query .= " AND tax_rate_class = '$tax_rate_class'"; } From f2e4a686f1241ae703bf61fcb869cb1dd36cf902 Mon Sep 17 00:00:00 2001 From: roykho Date: Mon, 2 May 2022 09:39:40 -0700 Subject: [PATCH 284/327] Lock pnpm to specific version --- .github/workflows/build-release-zip-file.yml | 2 +- .github/workflows/build-release.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/mirrors.yml | 2 +- .github/workflows/nightly-builds.yml | 2 +- .github/workflows/pr-build-and-e2e-tests.yml | 6 +++--- .github/workflows/pr-code-coverage.yml | 2 +- .github/workflows/pr-code-sniff.yml | 2 +- .github/workflows/pr-lint-test-js.yml | 2 +- .github/workflows/pr-smoke-test.yml | 2 +- .github/workflows/pr-unit-tests.yml | 2 +- .github/workflows/smoke-test-daily.yml | 8 ++++---- .github/workflows/smoke-test-release.yml | 6 +++--- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index 79663bb7993..2ecf1fcd546 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index f8b9b160c71..542a6481ad7 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 887a9dd1905..cd757d12121 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index 316c5ee1ebd..d0ec251f493 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -12,7 +12,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 766e09c8fea..40b47b545eb 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -18,7 +18,7 @@ jobs: ref: ${{ matrix.build }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 82bbafbe639..2891378b238 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -23,7 +23,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install @@ -74,7 +74,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install @@ -125,7 +125,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index c683295a36d..fac85dc2119 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -50,7 +50,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index 583499f8c65..f78a415644f 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -40,7 +40,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-lint-test-js.yml b/.github/workflows/pr-lint-test-js.yml index b13f9c9d4ab..8fe884d58a0 100644 --- a/.github/workflows/pr-lint-test-js.yml +++ b/.github/workflows/pr-lint-test-js.yml @@ -30,7 +30,7 @@ jobs: key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index f2e65c43b7a..0a06f95af05 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -37,7 +37,7 @@ jobs: key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 95057adbbc9..3923756087f 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -62,7 +62,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index f5d5085421a..95acf379340 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -22,7 +22,7 @@ jobs: - name: Install prerequisites. working-directory: package/woocommerce/plugins/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install pnpm nx composer-install-no-dev woocommerce pnpm nx build-assets woocommerce @@ -59,7 +59,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm + run: npm install -g pnpm@6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce @@ -109,7 +109,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install - name: Load docker images and start containers. @@ -134,7 +134,7 @@ jobs: - name: Install dependencies again working-directory: package/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install - name: Run tests command. diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index c06fe653d89..9fc6fd4803d 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -26,7 +26,7 @@ jobs: - name: Install prerequisites. working-directory: package/woocommerce/plugins/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install pnpm nx composer-install-no-dev woocommerce pnpm nx build-assets woocommerce @@ -88,7 +88,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install - name: Load docker images and start containers. @@ -163,7 +163,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm + npm install -g pnpm@6.24.2 pnpm install - name: Load docker images and start containers. From 3994c9ac4ff0e5a7fc19295a86b5b6482b2f099e Mon Sep 17 00:00:00 2001 From: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com> Date: Mon, 2 May 2022 09:48:54 -0700 Subject: [PATCH 285/327] Added `version` to `composer.json` In order for the Jetpack Autoloader to consistently apply a version to class files, we will define it in our plugin's `composer.json` file. --- plugins/woocommerce/composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce/composer.json b/plugins/woocommerce/composer.json index c39e2bd193c..a4a965a33b0 100644 --- a/plugins/woocommerce/composer.json +++ b/plugins/woocommerce/composer.json @@ -2,6 +2,7 @@ "name": "woocommerce/woocommerce", "description": "An eCommerce toolkit that helps you sell anything. Beautifully.", "homepage": "https://woocommerce.com/", + "version": "6.6.0", "type": "wordpress-plugin", "license": "GPL-3.0-or-later", "prefer-stable": true, From 45a036f35ba011af315267babfd9de449f62c9d7 Mon Sep 17 00:00:00 2001 From: roykho Date: Mon, 2 May 2022 10:08:52 -0700 Subject: [PATCH 286/327] Match minor and patch --- .github/workflows/build-release-zip-file.yml | 2 +- .github/workflows/build-release.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/mirrors.yml | 2 +- .github/workflows/nightly-builds.yml | 2 +- .github/workflows/pr-build-and-e2e-tests.yml | 6 +++--- .github/workflows/pr-code-coverage.yml | 2 +- .github/workflows/pr-code-sniff.yml | 2 +- .github/workflows/pr-lint-test-js.yml | 2 +- .github/workflows/pr-smoke-test.yml | 2 +- .github/workflows/pr-unit-tests.yml | 2 +- .github/workflows/smoke-test-daily.yml | 8 ++++---- .github/workflows/smoke-test-release.yml | 6 +++--- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index 2ecf1fcd546..a39b55fb18b 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 542a6481ad7..cd03f96c248 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd757d12121..6d5140ff55f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index d0ec251f493..7c54dbc01dd 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -12,7 +12,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index 40b47b545eb..a0e3b25f6d2 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -18,7 +18,7 @@ jobs: ref: ${{ matrix.build }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index 2891378b238..c25881341a6 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -23,7 +23,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install @@ -74,7 +74,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install @@ -125,7 +125,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-code-coverage.yml b/.github/workflows/pr-code-coverage.yml index fac85dc2119..628eb33b83d 100644 --- a/.github/workflows/pr-code-coverage.yml +++ b/.github/workflows/pr-code-coverage.yml @@ -50,7 +50,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-code-sniff.yml b/.github/workflows/pr-code-sniff.yml index f78a415644f..7831ee80e43 100644 --- a/.github/workflows/pr-code-sniff.yml +++ b/.github/workflows/pr-code-sniff.yml @@ -40,7 +40,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-lint-test-js.yml b/.github/workflows/pr-lint-test-js.yml index 8fe884d58a0..ab086f3cc51 100644 --- a/.github/workflows/pr-lint-test-js.yml +++ b/.github/workflows/pr-lint-test-js.yml @@ -30,7 +30,7 @@ jobs: key: ${{ runner.os }}-npm-${{ hashFiles('**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index 0a06f95af05..ae623d180dc 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -37,7 +37,7 @@ jobs: key: ${{ runner.os }}-smoke-test-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/pr-unit-tests.yml b/.github/workflows/pr-unit-tests.yml index 3923756087f..3055f6b74d9 100644 --- a/.github/workflows/pr-unit-tests.yml +++ b/.github/workflows/pr-unit-tests.yml @@ -62,7 +62,7 @@ jobs: key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 95acf379340..4e2bf372dc2 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -22,7 +22,7 @@ jobs: - name: Install prerequisites. working-directory: package/woocommerce/plugins/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install pnpm nx composer-install-no-dev woocommerce pnpm nx build-assets woocommerce @@ -59,7 +59,7 @@ jobs: uses: actions/checkout@v3 - name: Install PNPM - run: npm install -g pnpm@6.24.2 + run: npm install -g pnpm@^6.24.2 - name: Build zip run: pnpm nx build-zip woocommerce @@ -109,7 +109,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install - name: Load docker images and start containers. @@ -134,7 +134,7 @@ jobs: - name: Install dependencies again working-directory: package/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install - name: Run tests command. diff --git a/.github/workflows/smoke-test-release.yml b/.github/workflows/smoke-test-release.yml index 9fc6fd4803d..fb3eb2f02b1 100644 --- a/.github/workflows/smoke-test-release.yml +++ b/.github/workflows/smoke-test-release.yml @@ -26,7 +26,7 @@ jobs: - name: Install prerequisites. working-directory: package/woocommerce/plugins/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install pnpm nx composer-install-no-dev woocommerce pnpm nx build-assets woocommerce @@ -88,7 +88,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install - name: Load docker images and start containers. @@ -163,7 +163,7 @@ jobs: - name: Install PNPM and install dependencies working-directory: package/woocommerce run: | - npm install -g pnpm@6.24.2 + npm install -g pnpm@^6.24.2 pnpm install - name: Load docker images and start containers. From 1d52eef313c7f004d7aaee25959a64f26b0200ad Mon Sep 17 00:00:00 2001 From: Corey McKrill <916023+coreymckrill@users.noreply.github.com> Date: Mon, 2 May 2022 10:50:30 -0700 Subject: [PATCH 287/327] REST: Add product image URL to order line items (#32710) Add a new property to the line item schema, `image` that contains `id` and `src` properties for the full size of the main product image. Fixes #27364 --- .../fix-27364-api-order-lineitem-image | 4 +++ .../class-wc-rest-orders-v2-controller.php | 34 +++++++++++++++++-- .../rest-api/Tests/Version2/orders.php | 6 +++- .../rest-api/Tests/Version3/orders.php | 6 +++- 4 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-27364-api-order-lineitem-image diff --git a/plugins/woocommerce/changelog/fix-27364-api-order-lineitem-image b/plugins/woocommerce/changelog/fix-27364-api-order-lineitem-image new file mode 100644 index 00000000000..2a5334b4527 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-27364-api-order-lineitem-image @@ -0,0 +1,4 @@ +Significance: minor +Type: add + +Add an 'image_src' field to product line items returned by the orders endpoint (v2 and v3). This contains the URL of the main product image. diff --git a/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php b/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php index 8bda913c60a..4acd85a2e85 100644 --- a/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php +++ b/plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-orders-v2-controller.php @@ -214,10 +214,16 @@ class WC_REST_Orders_V2_Controller extends WC_REST_CRUD_Controller { } } - // Add SKU and PRICE to products. + // Add SKU, PRICE, and IMAGE to products. if ( is_callable( array( $item, 'get_product' ) ) ) { - $data['sku'] = $item->get_product() ? $item->get_product()->get_sku() : null; - $data['price'] = $item->get_quantity() ? $item->get_total() / $item->get_quantity() : 0; + $data['sku'] = $item->get_product() ? $item->get_product()->get_sku() : null; + $data['price'] = $item->get_quantity() ? $item->get_total() / $item->get_quantity() : 0; + + $image_id = $item->get_product() ? $item->get_product()->get_image_id() : 0; + $data['image'] = array( + 'id' => $image_id, + 'src' => $image_id ? wp_get_attachment_image_url( $image_id, 'full' ) : '', + ); } // Add parent_name if the product is a variation. @@ -1487,6 +1493,28 @@ class WC_REST_Orders_V2_Controller extends WC_REST_CRUD_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'image' => array( + 'description' => __( 'Properties of the main product image.', 'woocommerce' ), + 'type' => 'object', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + 'properties' => array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'description' => __( 'Image ID.', 'woocommerce' ), + 'type' => 'integer', + 'context' => array( 'view', 'edit' ), + ), + 'src' => array( + 'description' => __( 'Image URL.', 'woocommerce' ), + 'type' => 'string', + 'format' => 'uri', + 'context' => array( 'view', 'edit' ), + ), + ), + ), + ), ), ), ), diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/orders.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/orders.php index ead32b074f4..0983cd63414 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/orders.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version2/orders.php @@ -545,6 +545,10 @@ class WC_Tests_API_Orders_V2 extends WC_REST_Unit_Test_Case { 'sku' => null, 'price' => 4, 'parent_name' => null, + 'image' => array( + 'id' => 0, + 'src' => '', + ), ); $this->assertEquals( 200, $response->get_status() ); @@ -785,7 +789,7 @@ class WC_Tests_API_Orders_V2 extends WC_REST_Unit_Test_Case { $data = $response->get_data(); $line_item_properties = $data['schema']['properties']['line_items']['items']['properties']; - $this->assertEquals( 15, count( $line_item_properties ) ); + $this->assertEquals( 16, count( $line_item_properties ) ); $this->assertArrayHasKey( 'id', $line_item_properties ); $this->assertArrayHasKey( 'meta_data', $line_item_properties ); $this->assertArrayHasKey( 'parent_name', $line_item_properties ); diff --git a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/orders.php b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/orders.php index 794c313757f..3211cd2a26d 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/orders.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/rest-api/Tests/Version3/orders.php @@ -657,6 +657,10 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { 'sku' => null, 'price' => 4, 'parent_name' => null, + 'image' => array( + 'id' => 0, + 'src' => '', + ), ); $this->assertEquals( 200, $response->get_status() ); @@ -1155,7 +1159,7 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { $data = $response->get_data(); $line_item_properties = $data['schema']['properties']['line_items']['items']['properties']; - $this->assertEquals( 15, count( $line_item_properties ) ); + $this->assertEquals( 16, count( $line_item_properties ) ); $this->assertArrayHasKey( 'id', $line_item_properties ); $this->assertArrayHasKey( 'meta_data', $line_item_properties ); $this->assertArrayHasKey( 'parent_name', $line_item_properties ); From 377b643720ba8a6ca68c677a7819c5ed447b7e02 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 15 Apr 2022 14:42:56 -0700 Subject: [PATCH 288/327] Removed `prepare` Scripts Thanks to our build orchestration tooling, there is no reason for us to build all of the packages on `install`. In cases where `prepare` was used to build before packaging, this changes it to `prepack` so it will run only under the correct circumstances. --- nx.json | 9 +- packages/js/admin-e2e-tests/package.json | 1 - packages/js/admin-e2e-tests/project.json | 6 -- packages/js/api/package.json | 120 +++++++++++------------ packages/js/api/project.json | 6 -- packages/js/e2e-core-tests/package.json | 2 +- packages/js/e2e-core-tests/project.json | 6 -- packages/js/e2e-environment/package.json | 4 +- packages/js/e2e-environment/project.json | 6 -- packages/js/e2e-utils/package.json | 2 +- packages/js/e2e-utils/project.json | 6 -- 11 files changed, 65 insertions(+), 103 deletions(-) diff --git a/nx.json b/nx.json index fa1ac820d8b..f4cf052df4c 100644 --- a/nx.json +++ b/nx.json @@ -9,8 +9,7 @@ "build", "test", "lint", - "package", - "prepare" + "package" ] } } @@ -22,12 +21,6 @@ "projects": "dependencies" } ], - "prepare": [ - { - "target": "prepare", - "projects": "dependencies" - } - ], "package": [ { "target": "package", diff --git a/packages/js/admin-e2e-tests/package.json b/packages/js/admin-e2e-tests/package.json index 7ddb4a89f3a..aea3c4be449 100644 --- a/packages/js/admin-e2e-tests/package.json +++ b/packages/js/admin-e2e-tests/package.json @@ -50,7 +50,6 @@ "access": "public" }, "scripts": { - "prepare": "pnpm run build", "build": "tsc --build", "start": "tsc --build --watch", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", diff --git a/packages/js/admin-e2e-tests/project.json b/packages/js/admin-e2e-tests/project.json index be3b68c506c..6146d8472d2 100644 --- a/packages/js/admin-e2e-tests/project.json +++ b/packages/js/admin-e2e-tests/project.json @@ -33,12 +33,6 @@ "options": { "script": "clean" } - }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } } } } diff --git a/packages/js/api/package.json b/packages/js/api/package.json index 9594310ca2f..24283608cdc 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -1,62 +1,62 @@ { - "name": "@woocommerce/api", - "version": "0.2.0", - "author": "Automattic", - "description": "A simple interface for interacting with a WooCommerce installation.", - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "keywords": [ - "woocommerce", - "e2e" - ], - "license": "GPL-3.0+", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "/dist/", - "!*.ts.map", - "!*.tsbuildinfo", - "!/dist/**/__tests__/", - "!/dist/**/__mocks__/", - "!/dist/**/__snapshops__/", - "!/dist/**/__test_data__/" - ], - "sideEffects": false, - "scripts": { - "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", - "compile": "tsc -b", - "build": "pnpm run clean && npm run compile", - "prepare": "pnpm run build", - "lint": "eslint src", - "lint:fix": "eslint src --fix", - "test": "jest" - }, - "dependencies": { - "axios": "^0.24.0", - "create-hmac": "1.1.7", - "oauth-1.0a": "2.2.6" - }, - "devDependencies": { - "@types/create-hmac": "1.1.0", - "@types/jest": "^27.0.2", - "@types/node": "13.13.5", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", - "axios-mock-adapter": "^1.20.0", - "eslint": "^8.2.0", - "jest": "^25", - "ts-jest": "^25", - "typescript": "^4.4.4" - }, - "publishConfig": { - "access": "public" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "pnpm lint:fix" - ] - } + "name": "@woocommerce/api", + "version": "0.2.0", + "author": "Automattic", + "description": "A simple interface for interacting with a WooCommerce installation.", + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "keywords": [ + "woocommerce", + "e2e" + ], + "license": "GPL-3.0+", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "/dist/", + "!*.ts.map", + "!*.tsbuildinfo", + "!/dist/**/__tests__/", + "!/dist/**/__mocks__/", + "!/dist/**/__snapshops__/", + "!/dist/**/__test_data__/" + ], + "sideEffects": false, + "scripts": { + "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", + "compile": "tsc -b", + "build": "pnpm run clean && npm run compile", + "prepack": "pnpm run build", + "lint": "eslint src", + "lint:fix": "eslint src --fix", + "test": "jest" + }, + "dependencies": { + "axios": "^0.24.0", + "create-hmac": "1.1.7", + "oauth-1.0a": "2.2.6" + }, + "devDependencies": { + "@types/create-hmac": "1.1.0", + "@types/jest": "^27.0.2", + "@types/node": "13.13.5", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "axios-mock-adapter": "^1.20.0", + "eslint": "^8.2.0", + "jest": "^25", + "ts-jest": "^25", + "typescript": "^4.4.4" + }, + "publishConfig": { + "access": "public" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "eslint --fix" + ] + } } diff --git a/packages/js/api/project.json b/packages/js/api/project.json index e4022469b78..5458accc4b3 100644 --- a/packages/js/api/project.json +++ b/packages/js/api/project.json @@ -28,12 +28,6 @@ "script": "compile" } }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, "lint": { "executor": "@nrwl/workspace:run-script", "options": { diff --git a/packages/js/e2e-core-tests/package.json b/packages/js/e2e-core-tests/package.json index ee3708d3cae..fb37110be11 100644 --- a/packages/js/e2e-core-tests/package.json +++ b/packages/js/e2e-core-tests/package.json @@ -45,7 +45,7 @@ "access": "public" }, "scripts": { - "prepare": "pnpm run build", + "prepack": "pnpm run build", "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", "build": "./bin/build.sh && pnpm run clean && pnpm run compile" diff --git a/packages/js/e2e-core-tests/project.json b/packages/js/e2e-core-tests/project.json index ccff2f7a31e..e9eaf02e426 100644 --- a/packages/js/e2e-core-tests/project.json +++ b/packages/js/e2e-core-tests/project.json @@ -28,12 +28,6 @@ "script": "compile" } }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, "lint": { "executor": "@nrwl/workspace:run-script", "options": { diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 1ecb668744b..287f7bc6403 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -65,9 +65,9 @@ "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", - "prepare": "pnpm run build", + "prepack": "pnpm run build", "docker:up": "./bin/docker-compose.sh up", - "docker:wait": "bash ./bin/wait-for-build.sh", + "docker:wait": "bash ./bin/wait-for-build.sh", "docker:down": "./bin/docker-compose.sh down", "docker:clear-all": "docker rmi --force $(docker images -q)", "docker:ssh": "docker exec -it $(node utils/get-app-name.js)_wordpress-www /bin/bash", diff --git a/packages/js/e2e-environment/project.json b/packages/js/e2e-environment/project.json index f7c92c4ef90..0c0ea3961a9 100644 --- a/packages/js/e2e-environment/project.json +++ b/packages/js/e2e-environment/project.json @@ -34,12 +34,6 @@ "script": "compile" } }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, "docker-up": { "executor": "@nrwl/workspace:run-script", "options": { diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index 2e0d9763070..6cbb4b678c0 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -44,7 +44,7 @@ "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", - "prepare": "pnpm run build", + "prepack": "pnpm run build", "lint": "eslint src" } } diff --git a/packages/js/e2e-utils/project.json b/packages/js/e2e-utils/project.json index cd77a6997cb..0b6e0a2bbce 100644 --- a/packages/js/e2e-utils/project.json +++ b/packages/js/e2e-utils/project.json @@ -28,12 +28,6 @@ "script": "compile" } }, - "prepare": { - "executor": "@nrwl/workspace:run-script", - "options": { - "script": "prepare" - } - }, "lint": { "executor": "@nrwl/workspace:run-script", "options": { From 8862efb5706b8f27a5ad61b43281670d672b47b6 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 15 Apr 2022 14:54:23 -0700 Subject: [PATCH 289/327] Run `composer install` On `pnpm install` This commit adds a `postinstall` script for the WooCommerce and WooCommerce Beta Tester plugins. This makes it easier to get started since `pnpm install` will ensure all dependencies in every project are ready. --- plugins/woocommerce-beta-tester/package.json | 1 + plugins/woocommerce/package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index fd1f8cce0a7..074bb79623d 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -23,6 +23,7 @@ } }, "scripts": { + "postinstall": "composer install", "build": "pnpm run uglify", "build:zip": "./bin/build-zip.sh", "build:dev": "pnpm run lint:js && pnpm run uglify", diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json index c6b1af4efa6..2d8c52b99b9 100644 --- a/plugins/woocommerce/package.json +++ b/plugins/woocommerce/package.json @@ -14,6 +14,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", + "postinstall": "composer install", "build": "WC_ADMIN_PHASE=core pnpm run build:feature-config && pnpm nx build woocommerce-admin && pnpm nx build woocommerce-legacy-assets", "build:feature-config": "php bin/generate-feature-config.php", "build:zip": "./bin/build-zip.sh", From bd0ff96960f94f9c35add15b36050ce672853ea6 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Thu, 21 Apr 2022 14:35:46 -0700 Subject: [PATCH 290/327] Fixed WooCommerce Beta Tester PHPUnit Like Core's `composer.json`, we need to override the platform in order to get a consistent version for dependencies out of Composer. --- plugins/woocommerce-beta-tester/composer.json | 5 +- plugins/woocommerce-beta-tester/composer.lock | 1055 +++++------------ 2 files changed, 294 insertions(+), 766 deletions(-) diff --git a/plugins/woocommerce-beta-tester/composer.json b/plugins/woocommerce-beta-tester/composer.json index 3e0f870d65e..53cdba20d5f 100644 --- a/plugins/woocommerce-beta-tester/composer.json +++ b/plugins/woocommerce-beta-tester/composer.json @@ -10,7 +10,7 @@ "composer/installers": "~1.7" }, "require-dev": { - "phpunit/phpunit": "6.5.14", + "phpunit/phpunit": "^6.5 || ^7.5", "woocommerce/woocommerce-sniffs": "^0.1.2", "automattic/jetpack-changelogger": "3.0.2" }, @@ -52,6 +52,9 @@ } }, "config": { + "platform": { + "php": "7.2" + }, "allow-plugins": { "composer/installers": true, "dealerdirect/phpcodesniffer-composer-installer": true diff --git a/plugins/woocommerce-beta-tester/composer.lock b/plugins/woocommerce-beta-tester/composer.lock index ab564f5f477..c729e151e91 100644 --- a/plugins/woocommerce-beta-tester/composer.lock +++ b/plugins/woocommerce-beta-tester/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5d67ce680e077bcd75b6d052c32f9bf1", + "content-hash": "f74a0530eae4251d7c797d825a699393", "packages": [ { "name": "composer/installers", @@ -211,6 +211,9 @@ "GPL-2.0-or-later" ], "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "support": { + "source": "https://github.com/Automattic/jetpack-changelogger/tree/v3.0.2" + }, "time": "2021-11-02T14:06:49+00:00" }, { @@ -419,22 +422,22 @@ }, { "name": "phar-io/manifest", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -474,20 +477,20 @@ "issues": "https://github.com/phar-io/manifest/issues", "source": "https://github.com/phar-io/manifest/tree/master" }, - "time": "2017-03-05T18:14:27+00:00" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -525,7 +528,7 @@ "issues": "https://github.com/phar-io/version/issues", "source": "https://github.com/phar-io/version/tree/master" }, - "time": "2017-03-05T17:38:23+00:00" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -853,37 +856,41 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.10.3", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -918,46 +925,46 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2020-03-05T15:02:03+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", + "phpunit/php-token-stream": "^3.0", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^3.1 || ^4.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -985,31 +992,34 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" }, - "time": "2018-04-06T15:36:58+00:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1024,7 +1034,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1035,11 +1045,16 @@ "iterator" ], "support": { - "irc": "irc://irc.freenode.net/phpunit", "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" }, - "time": "2017-11-27T13:52:08+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:42:26+00:00" }, { "name": "phpunit/php-text-template", @@ -1088,28 +1103,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1124,7 +1139,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1135,35 +1150,41 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" }, - "time": "2017-02-26T11:10:40+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:20:02+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -1188,60 +1209,66 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "abandoned": true, - "time": "2017-11-27T05:48:46+00:00" + "time": "2021-07-26T12:15:06+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.14", + "version": "7.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", "sebastian/exporter": "^3.1", "sebastian/global-state": "^2.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0", "sebastian/version": "^2.0.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "phpunit/phpunit-mock-objects": "*" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -1249,7 +1276,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -1277,95 +1304,36 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14" + "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" }, - "time": "2019-02-01T05:22:47+00:00" + "time": "2020-01-08T08:45:45+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "1.1.x-dev" } }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues", - "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10" - }, - "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1378,16 +1346,17 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "log", + "psr", + "psr-3" ], - "time": "2021-03-05T17:36:06+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1446,30 +1415,30 @@ }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", + "php": ">=7.1", + "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1482,6 +1451,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1493,10 +1466,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -1508,34 +1477,41 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/master" + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" }, - "time": "2018-02-01T13:46:46+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:04:30+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1548,50 +1524,62 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/master" + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" }, - "time": "2017-08-03T08:09:46+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:59:04+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "4.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -1618,9 +1606,15 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/master" + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" }, - "time": "2017-07-01T08:51:00+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:53:42+00:00" }, { "name": "sebastian/exporter", @@ -1931,25 +1925,25 @@ }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1971,9 +1965,15 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/master" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" }, - "time": "2015-07-28T20:34:47+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:30:19+00:00" }, { "name": "sebastian/version", @@ -2080,46 +2080,37 @@ }, { "name": "symfony/console", - "version": "v5.4.7", + "version": "v3.4.47", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6" + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/900275254f0a1a2afff1ab0e11abd5587a10e1d6", - "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6", + "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81", + "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2150,14 +2141,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Symfony Console Component", "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], + "support": { + "source": "https://github.com/symfony/console/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -2172,38 +2160,39 @@ "type": "tidelift" } ], - "time": "2022-03-31T17:09:19+00:00" + "time": "2020-10-24T10:57:07+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "name": "symfony/debug", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "url": "https://github.com/symfony/debug.git", + "reference": "5de6c6e7f52b364840e53851c126be4d71e60470" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470", + "reference": "5de6c6e7f52b364840e53851c126be4d71e60470", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2212,16 +2201,19 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v4.4.37" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -2236,7 +2228,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2320,165 +2312,6 @@ ], "time": "2021-10-20T20:35:02+00:00" }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, { "name": "symfony/polyfill-mbstring", "version": "v1.25.0", @@ -2543,6 +2376,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -2559,179 +2395,22 @@ ], "time": "2021-11-30T18:21:41+00:00" }, - { - "name": "symfony/polyfill-php73", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-03-04T08:16:47+00:00" - }, { "name": "symfony/process", - "version": "v5.4.7", + "version": "v3.4.47", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb" + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/38a44b2517b470a436e1c944bf9b9ba3961137fb", - "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb", + "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca", + "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "autoload": { @@ -2756,8 +2435,11 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony Process Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -2772,170 +2454,7 @@ "type": "tidelift" } ], - "time": "2022-03-18T16:18:52+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-03-13T20:07:29+00:00" - }, - { - "name": "symfony/string", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2020-10-24T10:57:07+00:00" }, { "name": "theseer/tokenizer", @@ -3047,28 +2566,28 @@ }, { "name": "wikimedia/at-ease", - "version": "v2.1.0", + "version": "v2.0.0", "source": { "type": "git", "url": "https://github.com/wikimedia/at-ease.git", - "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + "reference": "013ac61929797839c80a111a3f1a4710d8248e7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", - "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/013ac61929797839c80a111a3f1a4710d8248e7a", + "reference": "013ac61929797839c80a111a3f1a4710d8248e7a", "shasum": "" }, "require": { - "php": ">=7.2.9" + "php": ">=5.6.99" }, "require-dev": { - "mediawiki/mediawiki-codesniffer": "35.0.0", - "mediawiki/minus-x": "1.1.1", - "ockcyp/covers-validator": "1.3.3", - "php-parallel-lint/php-console-highlighter": "0.5.0", - "php-parallel-lint/php-parallel-lint": "1.2.0", - "phpunit/phpunit": "^8.5" + "jakub-onderka/php-console-highlighter": "0.3.2", + "jakub-onderka/php-parallel-lint": "1.0.0", + "mediawiki/mediawiki-codesniffer": "22.0.0", + "mediawiki/minus-x": "0.3.1", + "ockcyp/covers-validator": "0.5.1 || 0.6.1", + "phpunit/phpunit": "4.8.36 || ^6.5" }, "type": "library", "autoload": { @@ -3095,7 +2614,10 @@ ], "description": "Safe replacement to @ for suppressing warnings.", "homepage": "https://www.mediawiki.org/wiki/at-ease", - "time": "2021-02-27T15:53:37+00:00" + "support": { + "source": "https://github.com/wikimedia/at-ease/tree/master" + }, + "time": "2018-10-10T15:39:06+00:00" }, { "name": "woocommerce/woocommerce-sniffs", @@ -3200,5 +2722,8 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "1.1.0" + "platform-overrides": { + "php": "7.2" + }, + "plugin-api-version": "2.3.0" } From 000f14be4a4d170a92c27ac0939e4168e3e0713d Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 29 Apr 2022 11:56:39 -0700 Subject: [PATCH 291/327] Fixed Tabs --- packages/js/api/package.json | 120 +++++++++--------- packages/js/e2e-environment/package.json | 2 +- plugins/woocommerce-beta-tester/composer.json | 92 +++++++------- plugins/woocommerce-beta-tester/package.json | 2 +- 4 files changed, 108 insertions(+), 108 deletions(-) diff --git a/packages/js/api/package.json b/packages/js/api/package.json index 24283608cdc..635ca90ee02 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -1,62 +1,62 @@ { - "name": "@woocommerce/api", - "version": "0.2.0", - "author": "Automattic", - "description": "A simple interface for interacting with a WooCommerce installation.", - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "keywords": [ - "woocommerce", - "e2e" - ], - "license": "GPL-3.0+", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "/dist/", - "!*.ts.map", - "!*.tsbuildinfo", - "!/dist/**/__tests__/", - "!/dist/**/__mocks__/", - "!/dist/**/__snapshops__/", - "!/dist/**/__test_data__/" - ], - "sideEffects": false, - "scripts": { - "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", - "compile": "tsc -b", - "build": "pnpm run clean && npm run compile", - "prepack": "pnpm run build", - "lint": "eslint src", - "lint:fix": "eslint src --fix", - "test": "jest" - }, - "dependencies": { - "axios": "^0.24.0", - "create-hmac": "1.1.7", - "oauth-1.0a": "2.2.6" - }, - "devDependencies": { - "@types/create-hmac": "1.1.0", - "@types/jest": "^27.0.2", - "@types/node": "13.13.5", - "@typescript-eslint/eslint-plugin": "^5.3.1", - "@typescript-eslint/parser": "^5.3.1", - "axios-mock-adapter": "^1.20.0", - "eslint": "^8.2.0", - "jest": "^25", - "ts-jest": "^25", - "typescript": "^4.4.4" - }, - "publishConfig": { - "access": "public" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] - } + "name": "@woocommerce/api", + "version": "0.2.0", + "author": "Automattic", + "description": "A simple interface for interacting with a WooCommerce installation.", + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/api/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "keywords": [ + "woocommerce", + "e2e" + ], + "license": "GPL-3.0+", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "/dist/", + "!*.ts.map", + "!*.tsbuildinfo", + "!/dist/**/__tests__/", + "!/dist/**/__mocks__/", + "!/dist/**/__snapshops__/", + "!/dist/**/__test_data__/" + ], + "sideEffects": false, + "scripts": { + "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", + "compile": "tsc -b", + "build": "pnpm run clean && npm run compile", + "prepack": "pnpm run build", + "lint": "eslint src", + "lint:fix": "eslint src --fix", + "test": "jest" + }, + "dependencies": { + "axios": "^0.24.0", + "create-hmac": "1.1.7", + "oauth-1.0a": "2.2.6" + }, + "devDependencies": { + "@types/create-hmac": "1.1.0", + "@types/jest": "^27.0.2", + "@types/node": "13.13.5", + "@typescript-eslint/eslint-plugin": "^5.3.1", + "@typescript-eslint/parser": "^5.3.1", + "axios-mock-adapter": "^1.20.0", + "eslint": "^8.2.0", + "jest": "^25", + "ts-jest": "^25", + "typescript": "^4.4.4" + }, + "publishConfig": { + "access": "public" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "pnpm lint:fix" + ] + } } diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 287f7bc6403..dc54e84414f 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -67,7 +67,7 @@ "build": "pnpm run clean && pnpm run compile", "prepack": "pnpm run build", "docker:up": "./bin/docker-compose.sh up", - "docker:wait": "bash ./bin/wait-for-build.sh", + "docker:wait": "bash ./bin/wait-for-build.sh", "docker:down": "./bin/docker-compose.sh down", "docker:clear-all": "docker rmi --force $(docker images -q)", "docker:ssh": "docker exec -it $(node utils/get-app-name.js)_wordpress-www /bin/bash", diff --git a/plugins/woocommerce-beta-tester/composer.json b/plugins/woocommerce-beta-tester/composer.json index 53cdba20d5f..d019fa7d79a 100644 --- a/plugins/woocommerce-beta-tester/composer.json +++ b/plugins/woocommerce-beta-tester/composer.json @@ -1,40 +1,40 @@ { - "name": "woocommerce/woocommerce-beta-tester", - "description": "Run the beta versions of WooCommerce.", - "homepage": "https://woocommerce.com/", - "type": "wordpress-plugin", - "license": "GPL-3.0-or-later", - "prefer-stable": true, - "minimum-stability": "dev", - "require": { - "composer/installers": "~1.7" - }, - "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.5", - "woocommerce/woocommerce-sniffs": "^0.1.2", - "automattic/jetpack-changelogger": "3.0.2" - }, - "scripts": { - "test": [ - "phpunit" - ], - "phpcs": [ - "phpcs -s -p" - ], - "phpcs-pre-commit": [ - "phpcs -s -p -n" - ], - "phpcbf": [ - "phpcbf -p" - ] - }, - "extra": { - "scripts-description": { - "test": "Run unit tests", - "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", - "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" - }, - "changelogger": { + "name": "woocommerce/woocommerce-beta-tester", + "description": "Run the beta versions of WooCommerce.", + "homepage": "https://woocommerce.com/", + "type": "wordpress-plugin", + "license": "GPL-3.0-or-later", + "prefer-stable": true, + "minimum-stability": "dev", + "require": { + "composer/installers": "~1.7" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.5", + "woocommerce/woocommerce-sniffs": "^0.1.2", + "automattic/jetpack-changelogger": "3.0.2" + }, + "scripts": { + "test": [ + "phpunit" + ], + "phpcs": [ + "phpcs -s -p" + ], + "phpcs-pre-commit": [ + "phpcs -s -p -n" + ], + "phpcbf": [ + "phpcbf -p" + ] + }, + "extra": { + "scripts-description": { + "test": "Run unit tests", + "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", + "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" + }, + "changelogger": { "formatter": { "filename": "../../tools/changelogger/PluginFormatter.php" }, @@ -50,14 +50,14 @@ "versioning": "wordpress", "changelog": "NEXT_CHANGELOG.md" } - }, - "config": { - "platform": { - "php": "7.2" + }, + "config": { + "platform": { + "php": "7.2" }, - "allow-plugins": { - "composer/installers": true, - "dealerdirect/phpcodesniffer-composer-installer": true - } - } -} + "allow-plugins": { + "composer/installers": true, + "dealerdirect/phpcodesniffer-composer-installer": true + } + } +} \ No newline at end of file diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json index 074bb79623d..2c67bd94e0c 100644 --- a/plugins/woocommerce-beta-tester/package.json +++ b/plugins/woocommerce-beta-tester/package.json @@ -23,7 +23,7 @@ } }, "scripts": { - "postinstall": "composer install", + "postinstall": "composer install", "build": "pnpm run uglify", "build:zip": "./bin/build-zip.sh", "build:dev": "pnpm run lint:js && pnpm run uglify", From 21eee1ab14fc2d784c37430f1100267ca7d47e21 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 29 Apr 2022 13:24:05 -0700 Subject: [PATCH 292/327] Added Changelog --- .../woocommerce/changelog/refactor-standardize-postinstall | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plugins/woocommerce/changelog/refactor-standardize-postinstall diff --git a/plugins/woocommerce/changelog/refactor-standardize-postinstall b/plugins/woocommerce/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..ef95c5bd214 --- /dev/null +++ b/plugins/woocommerce/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: Tooling change + + From 84334c149beae3b04263682cb5ccfb6068a04995 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 29 Apr 2022 13:31:19 -0700 Subject: [PATCH 293/327] Fixed Linting Errors --- .github/workflows/pr-lint-test-js.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr-lint-test-js.yml b/.github/workflows/pr-lint-test-js.yml index ab086f3cc51..bec3b6e506b 100644 --- a/.github/workflows/pr-lint-test-js.yml +++ b/.github/workflows/pr-lint-test-js.yml @@ -37,6 +37,7 @@ jobs: - name: Lint run: | + pnpm nx build woocommerce-admin pnpm nx lint woocommerce-admin pnpm nx lint:js-packages woocommerce-admin From 7dc9c203f8f8ef14d41dbaf7e16744cbfd5d0511 Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 29 Apr 2022 15:04:41 -0700 Subject: [PATCH 294/327] Added Missing `postinstall` Scripts --- packages/js/api-core-tests/package.json | 81 +++++------ packages/js/api/package.json | 1 + packages/js/e2e-core-tests/package.json | 91 ++++++------ packages/js/e2e-environment/package.json | 167 ++++++++++++----------- packages/js/e2e-utils/package.json | 97 ++++++------- 5 files changed, 221 insertions(+), 216 deletions(-) diff --git a/packages/js/api-core-tests/package.json b/packages/js/api-core-tests/package.json index f83420e77d3..379b2b82f3a 100644 --- a/packages/js/api-core-tests/package.json +++ b/packages/js/api-core-tests/package.json @@ -1,42 +1,43 @@ { - "name": "@woocommerce/api-core-tests", - "version": "0.1.0", - "description": "API tests for WooCommerce", - "main": "index.js", - "scripts": { - "test": "jest", - "test:api": "jest --group=api", - "test:hello": "jest --group=hello", - "make:collection": "node utils/api-collection/build-collection.js", - "report": "allure generate --clean && allure serve" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "bugs": { - "url": "https://github.com/woocommerce/woocommerce/issues" - }, - "homepage": "https://github.com/woocommerce/woocommerce#readme", - "dependencies": { - "allure-commandline": "^2.17.2", - "dotenv": "^10.0.0", - "jest": "^25.1.0", - "jest-allure": "^0.1.3", - "jest-runner-groups": "^2.1.0", - "postman-collection": "^4.1.0", - "supertest": "^6.1.4" - }, - "publishConfig": { - "access": "public" - }, - "bin": { - "wc-api-tests": "bin/wc-api-tests.sh" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] - } + "name": "@woocommerce/api-core-tests", + "version": "0.1.0", + "description": "API tests for WooCommerce", + "main": "index.js", + "scripts": { + "postinstall": "composer install", + "test": "jest", + "test:api": "jest --group=api", + "test:hello": "jest --group=hello", + "make:collection": "node utils/api-collection/build-collection.js", + "report": "allure generate --clean && allure serve" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "homepage": "https://github.com/woocommerce/woocommerce#readme", + "dependencies": { + "allure-commandline": "^2.17.2", + "dotenv": "^10.0.0", + "jest": "^25.1.0", + "jest-allure": "^0.1.3", + "jest-runner-groups": "^2.1.0", + "postman-collection": "^4.1.0", + "supertest": "^6.1.4" + }, + "publishConfig": { + "access": "public" + }, + "bin": { + "wc-api-tests": "bin/wc-api-tests.sh" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "eslint --fix" + ] + } } diff --git a/packages/js/api/package.json b/packages/js/api/package.json index 635ca90ee02..ae4d62ab58c 100644 --- a/packages/js/api/package.json +++ b/packages/js/api/package.json @@ -26,6 +26,7 @@ ], "sideEffects": false, "scripts": { + "postinstall": "composer install", "clean": "rm -rf ./dist ./tsconfig.tsbuildinfo", "compile": "tsc -b", "build": "pnpm run clean && npm run compile", diff --git a/packages/js/e2e-core-tests/package.json b/packages/js/e2e-core-tests/package.json index fb37110be11..10ddf9fa9a1 100644 --- a/packages/js/e2e-core-tests/package.json +++ b/packages/js/e2e-core-tests/package.json @@ -1,29 +1,29 @@ { - "name": "@woocommerce/e2e-core-tests", - "version": "0.2.0", - "description": "End-To-End (E2E) tests for WooCommerce", - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-core-tests/README.md", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "main": "build/index.js", - "module": "build-module/index.js", - "files": [ - "build", - "build-module", - "test-data", - "core-tests-root.js", - "installFiles", - "CHANGELOG.md" - ], - "dependencies": { - "@jest/globals": "^26.4.2", - "@wordpress/deprecated": "^3.2.3", - "config": "3.3.3" - }, - "devDependencies": { + "name": "@woocommerce/e2e-core-tests", + "version": "0.2.0", + "description": "End-To-End (E2E) tests for WooCommerce", + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-core-tests/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "main": "build/index.js", + "module": "build-module/index.js", + "files": [ + "build", + "build-module", + "test-data", + "core-tests-root.js", + "installFiles", + "CHANGELOG.md" + ], + "dependencies": { + "@jest/globals": "^26.4.2", + "@wordpress/deprecated": "^3.2.3", + "config": "3.3.3" + }, + "devDependencies": { "@babel/cli": "7.12.8", "@babel/core": "7.12.9", "@babel/plugin-proposal-async-generator-functions": "^7.16.4", @@ -32,27 +32,28 @@ "@babel/plugin-transform-runtime": "^7.16.4", "@babel/polyfill": "7.12.1", "@babel/preset-env": "7.12.7", - "@woocommerce/e2e-builds": "workspace:*", + "@woocommerce/e2e-builds": "workspace:*", "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/browserslist-config": "^4.1.0" - }, - "peerDependencies": { - "@woocommerce/api": "^0.2.0", - "@woocommerce/e2e-utils": "^0.1.6" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "prepack": "pnpm run build", - "clean": "rm -rf ./build ./build-module", - "compile": "e2e-builds", - "build": "./bin/build.sh && pnpm run clean && pnpm run compile" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] - } + }, + "peerDependencies": { + "@woocommerce/api": "^0.2.0", + "@woocommerce/e2e-utils": "^0.1.6" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "postinstall": "composer install", + "prepack": "pnpm run build", + "clean": "rm -rf ./build ./build-module", + "compile": "e2e-builds", + "build": "./bin/build.sh && pnpm run clean && pnpm run compile" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "eslint --fix" + ] + } } diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index dc54e84414f..38df8fe81d1 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -1,87 +1,88 @@ { - "name": "@woocommerce/e2e-environment", - "version": "0.3.0", - "description": "WooCommerce End to End Testing Environment Configuration.", - "author": "Automattic", - "license": "GPL-3.0-or-later", - "keywords": [ - "wordpress", - "woocommerce", - "e2e", - "puppeteer" - ], - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-environment/README.md", - "bugs": { - "url": "https://github.com/woocommerce/woocommerce/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "main": "index.js", - "module": "build-module/index.js", - "dependencies": { - "@automattic/puppeteer-utils": "github:Automattic/puppeteer-utils#0f3ec50", - "@jest/test-sequencer": "^25.5.4", - "@slack/web-api": "^6.1.0", - "@woocommerce/api": "^0.2.0", - "@wordpress/e2e-test-utils": "^4.16.1", - "@wordpress/jest-preset-default": "^7.1.3", - "app-root-path": "^3.0.0", - "commander": "4.1.1", + "name": "@woocommerce/e2e-environment", + "version": "0.3.0", + "description": "WooCommerce End to End Testing Environment Configuration.", + "author": "Automattic", + "license": "GPL-3.0-or-later", + "keywords": [ + "wordpress", + "woocommerce", + "e2e", + "puppeteer" + ], + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-environment/README.md", + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "main": "index.js", + "module": "build-module/index.js", + "dependencies": { + "@automattic/puppeteer-utils": "github:Automattic/puppeteer-utils#0f3ec50", + "@jest/test-sequencer": "^25.5.4", + "@slack/web-api": "^6.1.0", + "@woocommerce/api": "^0.2.0", + "@wordpress/e2e-test-utils": "^4.16.1", + "@wordpress/jest-preset-default": "^7.1.3", + "app-root-path": "^3.0.0", + "commander": "4.1.1", "config": "3.3.3", - "jest": "^25.1.0", + "jest": "^25.1.0", "jest-circus": "25.1.0", - "jest-each": "25.5.0", - "jest-puppeteer": "^4.4.0", - "node-stream-zip": "^1.13.6", - "puppeteer": "2.1.1", - "readline-sync": "^1.4.10", - "request": "^2.88.2", - "sprintf-js": "^1.1.2" - }, - "devDependencies": { - "@babel/cli": "7.12.8", - "@babel/core": "7.12.9", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/polyfill": "7.12.1", - "@babel/preset-env": "7.12.7", - "@woocommerce/e2e-builds": "workspace:*", - "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", - "@wordpress/babel-preset-default": "3.0.2", - "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/eslint-plugin": "7.3.0", - "eslint": "^8.1.0", - "ndb": "^1.1.5", - "semver": "^7.3.2" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "clean": "rm -rf ./build ./build-module", - "compile": "e2e-builds", - "build": "pnpm run clean && pnpm run compile", - "prepack": "pnpm run build", - "docker:up": "./bin/docker-compose.sh up", - "docker:wait": "bash ./bin/wait-for-build.sh", - "docker:down": "./bin/docker-compose.sh down", - "docker:clear-all": "docker rmi --force $(docker images -q)", - "docker:ssh": "docker exec -it $(node utils/get-app-name.js)_wordpress-www /bin/bash", - "test:e2e": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js", - "test:e2e-debug": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug", - "test:e2e-dev": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev", - "lint": "eslint src" - }, - "bin": { - "wc-e2e": "bin/wc-e2e.sh" - }, - "lint-staged": { - "*.(t|j)s?(x)": [ - "eslint --fix" - ] - } + "jest-each": "25.5.0", + "jest-puppeteer": "^4.4.0", + "node-stream-zip": "^1.13.6", + "puppeteer": "2.1.1", + "readline-sync": "^1.4.10", + "request": "^2.88.2", + "sprintf-js": "^1.1.2" + }, + "devDependencies": { + "@babel/cli": "7.12.8", + "@babel/core": "7.12.9", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/polyfill": "7.12.1", + "@babel/preset-env": "7.12.7", + "@woocommerce/e2e-builds": "workspace:*", + "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", + "@wordpress/babel-preset-default": "3.0.2", + "@wordpress/browserslist-config": "^4.1.0", + "@wordpress/eslint-plugin": "7.3.0", + "eslint": "^8.1.0", + "ndb": "^1.1.5", + "semver": "^7.3.2" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "postinstall": "composer install", + "clean": "rm -rf ./build ./build-module", + "compile": "e2e-builds", + "build": "pnpm run clean && pnpm run compile", + "prepack": "pnpm run build", + "docker:up": "./bin/docker-compose.sh up", + "docker:wait": "bash ./bin/wait-for-build.sh", + "docker:down": "./bin/docker-compose.sh down", + "docker:clear-all": "docker rmi --force $(docker images -q)", + "docker:ssh": "docker exec -it $(node utils/get-app-name.js)_wordpress-www /bin/bash", + "test:e2e": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js", + "test:e2e-debug": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug", + "test:e2e-dev": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev", + "lint": "eslint src" + }, + "bin": { + "wc-e2e": "bin/wc-e2e.sh" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "eslint --fix" + ] + } } diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index 6cbb4b678c0..b4aa1afcffe 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -1,50 +1,51 @@ { - "name": "@woocommerce/e2e-utils", - "version": "0.2.0", - "description": "End-To-End (E2E) test utils for WooCommerce", - "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-utils/README.md", - "repository": { - "type": "git", - "url": "https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "main": "build/index.js", - "module": "build-module/index.js", - "dependencies": { - "@automattic/puppeteer-utils": "github:Automattic/puppeteer-utils#0f3ec50", - "@wordpress/deprecated": "^3.2.3", - "@wordpress/e2e-test-utils": "^4.16.1", - "config": "3.3.3", - "fishery": "^1.2.0" - }, - "devDependencies": { - "@babel/cli": "7.12.8", - "@babel/core": "7.12.9", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/polyfill": "7.12.1", - "@babel/preset-env": "7.12.7", - "@typescript-eslint/eslint-plugin": "^5.3.0", - "@typescript-eslint/parser": "^5.3.0", - "@woocommerce/e2e-builds": "workspace:*", - "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", - "@wordpress/babel-preset-default": "3.0.2", - "@wordpress/browserslist-config": "^4.1.0", - "eslint": "^8.1.0" - }, - "peerDependencies": { - "@woocommerce/api": "^0.2.0" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "clean": "rm -rf ./build ./build-module", - "compile": "e2e-builds", - "build": "pnpm run clean && pnpm run compile", - "prepack": "pnpm run build", - "lint": "eslint src" - } + "name": "@woocommerce/e2e-utils", + "version": "0.2.0", + "description": "End-To-End (E2E) test utils for WooCommerce", + "homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/e2e-utils/README.md", + "repository": { + "type": "git", + "url": "https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "main": "build/index.js", + "module": "build-module/index.js", + "dependencies": { + "@automattic/puppeteer-utils": "github:Automattic/puppeteer-utils#0f3ec50", + "@wordpress/deprecated": "^3.2.3", + "@wordpress/e2e-test-utils": "^4.16.1", + "config": "3.3.3", + "fishery": "^1.2.0" + }, + "devDependencies": { + "@babel/cli": "7.12.8", + "@babel/core": "7.12.9", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/polyfill": "7.12.1", + "@babel/preset-env": "7.12.7", + "@typescript-eslint/eslint-plugin": "^5.3.0", + "@typescript-eslint/parser": "^5.3.0", + "@woocommerce/e2e-builds": "workspace:*", + "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", + "@wordpress/babel-preset-default": "3.0.2", + "@wordpress/browserslist-config": "^4.1.0", + "eslint": "^8.1.0" + }, + "peerDependencies": { + "@woocommerce/api": "^0.2.0" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "postinstall": "composer install", + "clean": "rm -rf ./build ./build-module", + "compile": "e2e-builds", + "build": "pnpm run clean && pnpm run compile", + "prepack": "pnpm run build", + "lint": "eslint src" + } } From 9a22c62505bcc219ee7732ddbb54edf3c305352d Mon Sep 17 00:00:00 2001 From: Christopher Allford Date: Fri, 29 Apr 2022 15:07:34 -0700 Subject: [PATCH 295/327] Added Changelogs --- packages/js/admin-e2e-tests/project.json | 7 ------- .../changelog/refactor-standardize-postinstall | 5 +++++ packages/js/api/changelog/refactor-standardize-postinstall | 5 +++++ .../changelog/refactor-standardize-postinstall | 5 +++++ .../changelog/refactor-standardize-postinstall | 5 +++++ .../e2e-utils/changelog/refactor-standardize-postinstall | 5 +++++ .../changelog/refactor-standardize-postinstall | 4 ++++ 7 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 packages/js/api-core-tests/changelog/refactor-standardize-postinstall create mode 100644 packages/js/api/changelog/refactor-standardize-postinstall create mode 100644 packages/js/e2e-core-tests/changelog/refactor-standardize-postinstall create mode 100644 packages/js/e2e-environment/changelog/refactor-standardize-postinstall create mode 100644 packages/js/e2e-utils/changelog/refactor-standardize-postinstall create mode 100644 plugins/woocommerce-beta-tester/changelog/refactor-standardize-postinstall diff --git a/packages/js/admin-e2e-tests/project.json b/packages/js/admin-e2e-tests/project.json index 6146d8472d2..3ef05e0a0ca 100644 --- a/packages/js/admin-e2e-tests/project.json +++ b/packages/js/admin-e2e-tests/project.json @@ -3,13 +3,6 @@ "sourceRoot": "packages/js/admin-e2e-tests/src", "projectType": "library", "targets": { - "changelog": { - "executor": "./tools/executors/changelogger:changelog", - "options": { - "action": "add", - "cwd": "packages/js/admin-e2e-tests" - } - }, "build": { "executor": "@nrwl/workspace:run-script", "options": { diff --git a/packages/js/api-core-tests/changelog/refactor-standardize-postinstall b/packages/js/api-core-tests/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..9efab9063ad --- /dev/null +++ b/packages/js/api-core-tests/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: This is only updating monorepo infrastructure. + + diff --git a/packages/js/api/changelog/refactor-standardize-postinstall b/packages/js/api/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..916dd7dbaa3 --- /dev/null +++ b/packages/js/api/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: This is only updating monorepo infrastructure commands. + + diff --git a/packages/js/e2e-core-tests/changelog/refactor-standardize-postinstall b/packages/js/e2e-core-tests/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..9efab9063ad --- /dev/null +++ b/packages/js/e2e-core-tests/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: This is only updating monorepo infrastructure. + + diff --git a/packages/js/e2e-environment/changelog/refactor-standardize-postinstall b/packages/js/e2e-environment/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..9efab9063ad --- /dev/null +++ b/packages/js/e2e-environment/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: This is only updating monorepo infrastructure. + + diff --git a/packages/js/e2e-utils/changelog/refactor-standardize-postinstall b/packages/js/e2e-utils/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..9efab9063ad --- /dev/null +++ b/packages/js/e2e-utils/changelog/refactor-standardize-postinstall @@ -0,0 +1,5 @@ +Significance: patch +Type: dev +Comment: This is only updating monorepo infrastructure. + + diff --git a/plugins/woocommerce-beta-tester/changelog/refactor-standardize-postinstall b/plugins/woocommerce-beta-tester/changelog/refactor-standardize-postinstall new file mode 100644 index 00000000000..a1fa604527d --- /dev/null +++ b/plugins/woocommerce-beta-tester/changelog/refactor-standardize-postinstall @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +This is only updating monorepo infrastructure. From d3423a5c8f4944d23f3774c882efef3df9e5b09f Mon Sep 17 00:00:00 2001 From: roykho Date: Mon, 2 May 2022 15:46:46 -0700 Subject: [PATCH 296/327] Remove gitignored file. --- .../js/e2e-environment/config/default.json | 208 ------------------ 1 file changed, 208 deletions(-) delete mode 100644 packages/js/e2e-environment/config/default.json diff --git a/packages/js/e2e-environment/config/default.json b/packages/js/e2e-environment/config/default.json deleted file mode 100644 index cf613320940..00000000000 --- a/packages/js/e2e-environment/config/default.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "url": "http://localhost:8084/", - "appName": "woocommerce_e2e", - "users": { - "admin": { - "username": "admin", - "password": "password" - }, - "customer": { - "username": "customer", - "password": "password" - } - }, - "products": { - "simple": { - "name": "Simple product" - }, - "variable": { - "name": "Variable Product with Three Attributes", - "defaultAttributes": [ - { - "id": 0, - "name": "Size", - "option": "Medium" - }, - { - "id": 0, - "name": "Colour", - "option": "Blue" - } - ], - "attributes": [ - { - "id": 0, - "name": "Colour", - "isVisibleOnProductPage": true, - "isForVariations": true, - "options": [ - "Red", - "Green", - "Blue" - ], - "sortOrder": 0 - }, - { - "id": 0, - "name": "Size", - "isVisibleOnProductPage": true, - "isForVariations": true, - "options": [ - "Small", - "Medium", - "Large" - ], - "sortOrder": 0 - }, - { - "id": 0, - "name": "Logo", - "isVisibleOnProductPage": true, - "isForVariations": true, - "options": [ - "Woo", - "WordPress" - ], - "sortOrder": 0 - } - ] - }, - "variations": [ - { - "regularPrice": "19.99", - "attributes": [ - { - "name": "Size", - "option": "Large" - }, - { - "name": "Colour", - "option": "Red" - } - ] - }, - { - "regularPrice": "18.99", - "attributes": [ - { - "name": "Size", - "option": "Medium" - }, - { - "name": "Colour", - "option": "Green" - } - ] - }, - { - "regularPrice": "17.99", - "attributes": [ - { - "name": "Size", - "option": "Small" - }, - { - "name": "Colour", - "option": "Blue" - } - ] - } - ], - "grouped": { - "name": "Grouped Product with Three Children", - "groupedProducts": [ - { - "name": "Base Unit", - "regularPrice": "29.99" - }, - { - "name": "Add-on A", - "regularPrice": "11.95" - }, - { - "name": "Add-on B", - "regularPrice": "18.97" - } - ] - }, - "external": { - "name": "External product", - "regularPrice": "24.99", - "buttonText": "Buy now", - "externalUrl": "https://wordpress.org/plugins/woocommerce" - } - }, - "coupons": { - "percentage": { - "code": "20percent", - "discountType": "percent", - "amount": "20.00" - } - }, - "addresses": { - "admin": { - "store": { - "email": "admin@woocommercecoree2etestsuite.com", - "firstname": "John", - "lastname": "Doe", - "company": "Automattic", - "country": "United States (US)", - "addressfirstline": "addr 1", - "addresssecondline": "addr 2", - "countryandstate": "United States (US) — California", - "city": "San Francisco", - "state": "CA", - "postcode": "94107" - } - }, - "customer": { - "billing": { - "firstname": "John", - "lastname": "Doe", - "company": "Automattic", - "country": "United States (US)", - "addressfirstline": "addr 1", - "addresssecondline": "addr 2", - "city": "San Francisco", - "state": "CA", - "postcode": "94107", - "phone": "123456789", - "email": "john.doe@example.com" - }, - "shipping": { - "firstname": "John", - "lastname": "Doe", - "company": "Automattic", - "country": "United States (US)", - "addressfirstline": "addr 1", - "addresssecondline": "addr 2", - "city": "San Francisco", - "state": "CA", - "postcode": "94107" - } - } - }, - "orders": { - "basicPaidOrder": { - "paymentMethod": "cod", - "status": "processing", - "billing": { - "firstName": "John", - "lastName": "Doe", - "email": "john.doe@example.com" - } - } - }, - "onboardingwizard": { - "industry": "Test industry", - "numberofproducts": "1 - 10", - "sellingelsewhere": "No" - }, - "settings": { - "shipping": { - "zonename": "United States", - "zoneregions": "United States (US)", - "shippingmethod": "Free shipping" - } - } -} From c4a1fff36705df5f8511f2f8f08fef3d29aaab0d Mon Sep 17 00:00:00 2001 From: roykho Date: Mon, 2 May 2022 15:56:38 -0700 Subject: [PATCH 297/327] Add changelog --- packages/js/e2e-environment/changelog/pr-32851 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/js/e2e-environment/changelog/pr-32851 diff --git a/packages/js/e2e-environment/changelog/pr-32851 b/packages/js/e2e-environment/changelog/pr-32851 new file mode 100644 index 00000000000..81b646abd77 --- /dev/null +++ b/packages/js/e2e-environment/changelog/pr-32851 @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Remove default.json from e2e-enviroment default config as it is not needed. From a67c547b8e8eb62eb531329ffe9cfab60a10c41a Mon Sep 17 00:00:00 2001 From: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com> Date: Mon, 2 May 2022 12:07:08 +0800 Subject: [PATCH 298/327] Update path to email template for analytics report The path was recently changed with the merge of the Admin feature plugin into Core. --- plugins/woocommerce/src/Admin/ReportCSVEmail.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce/src/Admin/ReportCSVEmail.php b/plugins/woocommerce/src/Admin/ReportCSVEmail.php index 40b9657301c..75ce24fd0e5 100644 --- a/plugins/woocommerce/src/Admin/ReportCSVEmail.php +++ b/plugins/woocommerce/src/Admin/ReportCSVEmail.php @@ -25,7 +25,7 @@ class ReportCSVEmail extends \WC_Email { */ public function __construct() { $this->id = 'admin_report_export_download'; - $this->template_base = dirname( __DIR__ ) . '/includes/emails/'; + $this->template_base = WC()->plugin_path() . '/includes/react-admin/emails/'; $this->template_html = 'html-admin-report-export-download.php'; $this->template_plain = 'plain-admin-report-export-download.php'; $this->report_labels = array( From b35413d2ba90fae99f1a2640029519c1ce7d167f Mon Sep 17 00:00:00 2001 From: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com> Date: Mon, 2 May 2022 13:03:31 +0800 Subject: [PATCH 299/327] Add changelog entry --- plugins/woocommerce/changelog/fix-email-template--path | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-email-template--path diff --git a/plugins/woocommerce/changelog/fix-email-template--path b/plugins/woocommerce/changelog/fix-email-template--path new file mode 100644 index 00000000000..56678ccdd76 --- /dev/null +++ b/plugins/woocommerce/changelog/fix-email-template--path @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Update path to email template for analytics report. From 1ed5445635100f7ad19b7a30c51138b076bde493 Mon Sep 17 00:00:00 2001 From: Roy Ho Date: Mon, 2 May 2022 16:48:20 -0700 Subject: [PATCH 300/327] Update workflows to run build zip script (#32825) --- .github/workflows/build-release-zip-file.yml | 18 +++++++++++++++++- .github/workflows/build-release.yml | 18 +++++++++++++++++- .github/workflows/mirrors.yml | 18 +++++++++++++++++- .github/workflows/nightly-builds.yml | 18 +++++++++++++++++- .github/workflows/pr-smoke-test.yml | 2 ++ .github/workflows/smoke-test-daily.yml | 18 +++++++++++++++++- 6 files changed, 87 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index a39b55fb18b..339b08c9cf9 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -14,11 +14,27 @@ jobs: - name: Checkout code. uses: actions/checkout@v3 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + - name: Install PNPM run: npm install -g pnpm@^6.24.2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Build zip - run: pnpm nx build-zip woocommerce + working-directory: plugins/woocommerce + run: bash bin/build-zip.sh - name: Upload the zip file as an artifact uses: actions/upload-artifact@v3 diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index cd03f96c248..ed21891b410 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -10,11 +10,27 @@ jobs: - name: Checkout code. uses: actions/checkout@v3 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + - name: Install PNPM run: npm install -g pnpm@^6.24.2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Build zip - run: pnpm nx build-zip woocommerce + working-directory: plugins/woocommerce + run: bash bin/build-zip.sh - name: Upload release asset uses: actions/upload-release-asset@v1 diff --git a/.github/workflows/mirrors.yml b/.github/workflows/mirrors.yml index 7c54dbc01dd..c5745873999 100644 --- a/.github/workflows/mirrors.yml +++ b/.github/workflows/mirrors.yml @@ -11,11 +11,27 @@ jobs: - name: Checkout code. uses: actions/checkout@v3 + - name: Cache modules + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + - name: Install PNPM run: npm install -g pnpm@^6.24.2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Build zip - run: pnpm nx build-zip woocommerce + working-directory: plugins/woocommerce + run: bash bin/build-zip.sh - name: Upload the zip file as an artifact uses: actions/upload-artifact@v3 diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml index a0e3b25f6d2..2ed78fa33d3 100644 --- a/.github/workflows/nightly-builds.yml +++ b/.github/workflows/nightly-builds.yml @@ -17,11 +17,27 @@ jobs: with: ref: ${{ matrix.build }} + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + - name: Install PNPM run: npm install -g pnpm@^6.24.2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Build zip - run: pnpm nx build-zip woocommerce + working-directory: plugins/woocommerce + run: bash bin/build-zip.sh - name: Deploy nightly build uses: WebFreak001/deploy-nightly@v1.1.0 diff --git a/.github/workflows/pr-smoke-test.yml b/.github/workflows/pr-smoke-test.yml index ae623d180dc..bd6af1329c1 100644 --- a/.github/workflows/pr-smoke-test.yml +++ b/.github/workflows/pr-smoke-test.yml @@ -40,9 +40,11 @@ jobs: run: npm install -g pnpm@^6.24.2 - name: Install dependencies + working-directory: package/woocommerce/plugins/woocommerce run: pnpm install - name: Install Composer dependencies + working-directory: package/woocommerce/plugins/woocommerce if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install-no-dev woocommerce diff --git a/.github/workflows/smoke-test-daily.yml b/.github/workflows/smoke-test-daily.yml index 4e2bf372dc2..242425f15df 100644 --- a/.github/workflows/smoke-test-daily.yml +++ b/.github/workflows/smoke-test-daily.yml @@ -58,11 +58,27 @@ jobs: - name: Checkout code uses: actions/checkout@v3 + - name: Get cached composer and pnpm directories + uses: actions/cache@v3 + id: cache-deps + with: + path: | + ~/.pnpm-store + plugins/woocommerce/packages + plugins/woocommerce/**/vendor + key: ${{ runner.os }}-npm-composer-${{ hashFiles('**/composer.lock', '**/pnpm-lock.yaml') }} + - name: Install PNPM run: npm install -g pnpm@^6.24.2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Build zip - run: pnpm nx build-zip woocommerce + working-directory: plugins/woocommerce + run: bash bin/build-zip.sh - name: Upload PR zip uses: actions/upload-artifact@v3 From a1aff10f5f8d9c49396d69c4bafdf3225aec2d4c Mon Sep 17 00:00:00 2001 From: James Allan Date: Tue, 3 May 2022 14:10:18 +1000 Subject: [PATCH 301/327] Display an error message when WC Payments fails to install --- .../client/subscriptions/index.tsx | 74 ++++++++++++++----- .../client/subscriptions/style.scss | 6 +- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index e5b88c7672f..efed216fe5d 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -3,7 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { createInterpolateElement, useState } from '@wordpress/element'; -import { Button } from '@wordpress/components'; +import { Button, Notice } from '@wordpress/components'; import { PLUGINS_STORE_NAME } from '@woocommerce/data'; import { useDispatch } from '@wordpress/data'; import { recordEvent } from '@woocommerce/tracks'; @@ -28,6 +28,37 @@ const { onboardingUrl, } = window.wcWcpaySubscriptions; +const ErrorNotice = ( { isError }: { isError: boolean } ) => { + if ( ! isError ) { + return null; + } + + return ( + + { createInterpolateElement( + __( + 'WooCommerce Payments failed to install. To continue with WooCommerce Payments built-in subscriptions functionality, please install WooCommerce Payments manually.', + 'woocommerce-payments' + ), + { + a: ( + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + } + ) } + + ); +}; + const TOS = () => (

{ createInterpolateElement( @@ -49,7 +80,8 @@ const TOS = () => (

); -const GetStartedButton = () => { +// eslint-disable-next-line @typescript-eslint/ban-types +const GetStartedButton = ( { setIsError }: { setIsError: Function } ) => { const [ isGettingStarted, setIsGettingStarted ] = useState( false ); const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME ); @@ -72,11 +104,12 @@ const GetStartedButton = () => { * Navigate to either newSubscriptionProductUrl or onboardingUrl * depending on the which treatment the user is assigned to. */ + // eslint-disable-next-line no-console console.log( 'It was a success!' ); } ) - .catch( ( error ) => { - // TODO: Handle erorr. - console.log( 'Oh no, there was an error!' ); + .catch( () => { + setIsGettingStarted( false ); + setIsError( true ); } ); } } > @@ -86,18 +119,23 @@ const GetStartedButton = () => { ); }; -const SubscriptionsPage = () => ( -
- -

- { __( - 'Track recurring revenue and manage active subscriptions directly from your store’s dashboard — powered by WooCommerce Payments.', - 'woocommerce-payments' - ) } -

- - -
-); +const SubscriptionsPage = () => { + const [ isError, setIsError ] = useState( false ); + + return ( +
+ + +

+ { __( + 'Track recurring revenue and manage active subscriptions directly from your store’s dashboard — powered by WooCommerce Payments.', + 'woocommerce-payments' + ) } +

+ + +
+ ); +}; export default SubscriptionsPage; diff --git a/plugins/woocommerce-admin/client/subscriptions/style.scss b/plugins/woocommerce-admin/client/subscriptions/style.scss index 5f8ddb0dd40..f03a7f32c68 100644 --- a/plugins/woocommerce-admin/client/subscriptions/style.scss +++ b/plugins/woocommerce-admin/client/subscriptions/style.scss @@ -6,7 +6,7 @@ padding: 48px 0; position: static; height: 344px; - left: calc( 50% - 1240px / 2 ); + left: calc(50% - 1240px / 2); top: 271px; flex: none; order: 1; @@ -28,4 +28,8 @@ .wcpay-empty-subscriptions__button_container { margin: 8px 0; } + + .wcpay-empty-subscriptions__error { + margin: 15px 0; + } } From 6b7fd14c0975d73b9b510eea4fb5688a736320c5 Mon Sep 17 00:00:00 2001 From: James Allan Date: Tue, 3 May 2022 16:18:46 +1000 Subject: [PATCH 302/327] Direct the user to the wp.org wcpayments page for a more direct install path --- plugins/woocommerce-admin/client/subscriptions/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index efed216fe5d..3c5fda6355a 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -48,7 +48,7 @@ const ErrorNotice = ( { isError }: { isError: boolean } ) => { a: ( // eslint-disable-next-line jsx-a11y/anchor-has-content
From b15cfd3a2de2dd87f60a953a96c4801188da976b Mon Sep 17 00:00:00 2001 From: James Allan Date: Tue, 3 May 2022 16:47:14 +1000 Subject: [PATCH 303/327] Reword the error message to be more action -> outcome structure --- plugins/woocommerce-admin/client/subscriptions/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index 3c5fda6355a..e7237e4fda7 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -41,7 +41,7 @@ const ErrorNotice = ( { isError }: { isError: boolean } ) => { > { createInterpolateElement( __( - 'WooCommerce Payments failed to install. To continue with WooCommerce Payments built-in subscriptions functionality, please install WooCommerce Payments manually.', + 'Installing WooCommerce Payments failed. To continue with WooCommerce Payments built-in subscriptions functionality, please install WooCommerce Payments manually.', 'woocommerce-payments' ), { From 6c8ee08f19e539d3386dea5262be03fb746500fb Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 3 May 2022 14:54:23 +0800 Subject: [PATCH 304/327] Add a safeguard for ExPlat assignment requests to make sure a user either has an anon_id defined and not empty --- packages/js/explat/src/assignment.ts | 6 ++++++ .../js/explat/src/test/assignment-test.js | 8 ++++++++ .../react-admin/class-experimental-abtest.php | 4 ++++ .../class-experimental-abtest-test.php | 19 ++++++++++++++++--- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/js/explat/src/assignment.ts b/packages/js/explat/src/assignment.ts index 2edef45ea1e..8631f86ceb7 100644 --- a/packages/js/explat/src/assignment.ts +++ b/packages/js/explat/src/assignment.ts @@ -52,6 +52,12 @@ export const fetchExperimentAssignment = async ( { `Tracking is disabled, can't fetch experimentAssignment` ); } + if ( ! anonId ) { + throw new Error( + `Can't fetch experiment assignment without an anonId or auth, please initialize anonId first or use fetchExperimentAssignmentWithAuth instead.` + ); + } + return await window.fetch( `https://public-api.wordpress.com/wpcom/v2/experiments/${ EXPLAT_VERSION }/assignments/woocommerce?${ getRequestQueryString( { diff --git a/packages/js/explat/src/test/assignment-test.js b/packages/js/explat/src/test/assignment-test.js index 156622a51d0..4811d038a80 100644 --- a/packages/js/explat/src/test/assignment-test.js +++ b/packages/js/explat/src/test/assignment-test.js @@ -41,6 +41,14 @@ describe( 'fetchExperimentAssignment', () => { 'https://public-api.wordpress.com/wpcom/v2/experiments/0.1.0/assignments/woocommerce?anon_id=abc&test=test' ); } ); + + it( 'should throw error when anonId is empty', async () => { + const fetchPromise = fetchExperimentAssignment( { + experimentId: '123', + anonId: null, + } ); + await expect( fetchPromise ).rejects.toThrowError(); + } ); } ); describe( 'fetchExperimentAssignmentWithAuth', () => { diff --git a/plugins/woocommerce/includes/react-admin/class-experimental-abtest.php b/plugins/woocommerce/includes/react-admin/class-experimental-abtest.php index 7a399fe6064..b452ce4ab44 100644 --- a/plugins/woocommerce/includes/react-admin/class-experimental-abtest.php +++ b/plugins/woocommerce/includes/react-admin/class-experimental-abtest.php @@ -122,6 +122,10 @@ final class Experimental_Abtest { // Request as anonymous user. if ( ! isset( $response ) ) { + if ( ! isset( $args['anon_id'] ) || empty( $args['anon_id'] ) ) { + return new \WP_Error( 'invalid_anon_id', 'anon_id must be an none empty string.' ); + } + $url = add_query_arg( $args, sprintf( diff --git a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/includes/class-experimental-abtest-test.php b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/includes/class-experimental-abtest-test.php index 07cfc0e20d9..0deb534ee2a 100644 --- a/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/includes/class-experimental-abtest-test.php +++ b/plugins/woocommerce/tests/legacy/unit-tests/woocommerce-admin/includes/class-experimental-abtest-test.php @@ -61,9 +61,9 @@ class Experimental_Abtest_Test extends WC_Unit_Test_Case { ); } - /** - * Tests retrieve the test variation when consent is false - */ + /** + * Tests retrieve the test variation when consent is false + */ public function test_get_variation() { delete_transient( 'abtest_variation_control' ); add_filter( @@ -90,4 +90,17 @@ class Experimental_Abtest_Test extends WC_Unit_Test_Case { 'treatment' ); } + + + /** + * Tests return request_assignment wp error when anon_id is empty + */ + public function test_request_assignment_returns_wp_error_when_anon_id_is_empty() { + $exp = new Experimental_Abtest( '', 'platform', true ); + + $this->assertEquals( + is_wp_error( $exp->request_assignment( 'test_experiment_name' ) ), + true + ); + } } From 2c97db867ea636441cff3f415cc58f71d12bdb04 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 3 May 2022 15:40:50 +0800 Subject: [PATCH 305/327] Update woo.explat to check fetchExperimentAssignment params --- packages/js/explat/src/assignment.ts | 76 +++++++++++++------ .../js/explat/src/test/assignment-test.js | 26 +++++-- 2 files changed, 74 insertions(+), 28 deletions(-) diff --git a/packages/js/explat/src/assignment.ts b/packages/js/explat/src/assignment.ts index 8631f86ceb7..cc711703e07 100644 --- a/packages/js/explat/src/assignment.ts +++ b/packages/js/explat/src/assignment.ts @@ -7,13 +7,30 @@ import apiFetch from '@wordpress/api-fetch'; const EXPLAT_VERSION = '0.1.0'; -const getRequestQueryString = ( { +type QueryParams = { + [ key: string ]: unknown; +} & { + experiment_name: string; + anon_id: string | null; + woo_country_code: string; +}; + +const isValidQueryParams = ( + queryParams: unknown +): queryParams is QueryParams => { + return ( + ( queryParams as QueryParams ).hasOwnProperty( 'experiment_name' ) && + ( queryParams as QueryParams ).hasOwnProperty( 'woo_country_code' ) + ); +}; + +const getRequestQueryParams = ( { experimentName, anonId, }: { experimentName: string; anonId: string | null; -} ): string => { +} ): QueryParams => { /** * List of URL query parameters to be sent to the server. * @@ -27,17 +44,29 @@ const getRequestQueryString = ( { * return args; * }); */ - return stringify( - applyFilters( 'woocommerce_explat_request_args', { - experiment_name: experimentName, - anon_id: anonId ?? undefined, - woo_country_code: - window.wcSettings?.preloadSettings?.general - ?.woocommerce_default_country || - window.wcSettings?.admin?.preloadSettings?.general - ?.woocommerce_default_country, - } ) - ); + const queryParams = applyFilters( 'woocommerce_explat_request_args', { + experiment_name: experimentName, + anon_id: anonId ?? undefined, + woo_country_code: + window.wcSettings?.preloadSettings?.general + ?.woocommerce_default_country || + window.wcSettings?.admin?.preloadSettings?.general + ?.woocommerce_default_country, + } ); + + if ( ! isValidQueryParams( queryParams ) ) { + throw new Error( + `Invalid query Params: ${ JSON.stringify( queryParams ) }` + ); + } + + // Make sure test name is a valid one. + if ( ! /^[A-Za-z0-9_]+$/.test( queryParams.experiment_name ) ) { + throw new Error( + `Invalid A/B test name: ${ queryParams.experiment_name }` + ); + } + return queryParams; }; export const fetchExperimentAssignment = async ( { @@ -52,18 +81,17 @@ export const fetchExperimentAssignment = async ( { `Tracking is disabled, can't fetch experimentAssignment` ); } - if ( ! anonId ) { + + const queryParams = getRequestQueryParams( { experimentName, anonId } ); + if ( ! queryParams.anon_id ) { throw new Error( `Can't fetch experiment assignment without an anonId or auth, please initialize anonId first or use fetchExperimentAssignmentWithAuth instead.` ); } return await window.fetch( - `https://public-api.wordpress.com/wpcom/v2/experiments/${ EXPLAT_VERSION }/assignments/woocommerce?${ getRequestQueryString( - { - experimentName, - anonId, - } + `https://public-api.wordpress.com/wpcom/v2/experiments/${ EXPLAT_VERSION }/assignments/woocommerce?${ stringify( + queryParams ) }` ); }; @@ -82,9 +110,11 @@ export const fetchExperimentAssignmentWithAuth = async ( { } // Use apiFetch to send request with credentials and nonce to our backend api to get the assignment with a user token via Jetpack. return await apiFetch( { - path: `/wc-admin/experiments/assignment?${ getRequestQueryString( { - experimentName, - anonId, - } ) }`, + path: `/wc-admin/experiments/assignment?${ stringify( + getRequestQueryParams( { + experimentName, + anonId, + } ) + ) }`, } ); }; diff --git a/packages/js/explat/src/test/assignment-test.js b/packages/js/explat/src/test/assignment-test.js index 4811d038a80..aeb0c1722c4 100644 --- a/packages/js/explat/src/test/assignment-test.js +++ b/packages/js/explat/src/test/assignment-test.js @@ -32,19 +32,35 @@ describe( 'fetchExperimentAssignment', () => { ); const fetchPromise = fetchExperimentAssignment( { - experimentId: '123', + experimentName: '123', anonId: 'abc', } ); Promise.resolve( fetchPromise ); expect( fetchMock ).toHaveBeenCalledWith( - 'https://public-api.wordpress.com/wpcom/v2/experiments/0.1.0/assignments/woocommerce?anon_id=abc&test=test' + 'https://public-api.wordpress.com/wpcom/v2/experiments/0.1.0/assignments/woocommerce?experiment_name=123&anon_id=abc&test=test' ); } ); it( 'should throw error when anonId is empty', async () => { const fetchPromise = fetchExperimentAssignment( { - experimentId: '123', + experimentName: '123', + anonId: null, + } ); + await expect( fetchPromise ).rejects.toThrowError(); + } ); + + it( 'should throw error when experiment_name is empty', async () => { + const fetchPromise = fetchExperimentAssignment( { + experimentName: '', + anonId: null, + } ); + await expect( fetchPromise ).rejects.toThrowError(); + } ); + + it( 'should throw error when experiment_name is invalid', async () => { + const fetchPromise = fetchExperimentAssignment( { + experimentName: '', anonId: null, } ); await expect( fetchPromise ).rejects.toThrowError(); @@ -64,13 +80,13 @@ describe( 'fetchExperimentAssignmentWithAuth', () => { ); const fetchPromise = fetchExperimentAssignmentWithAuth( { - experimentId: '123', + experimentName: '123', anonId: 'abc', } ); Promise.resolve( fetchPromise ); expect( fetchMock ).toHaveBeenCalledWith( - '/wc-admin/experiments/assignment?anon_id=abc&test=test&_locale=user', + '/wc-admin/experiments/assignment?experiment_name=123&anon_id=abc&test=test&_locale=user', { body: undefined, credentials: 'include', From f1d911d68053128e1213432fca095d8037f94523 Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Tue, 3 May 2022 15:59:27 +0800 Subject: [PATCH 306/327] Add changelog --- .../woocommerce/changelog/update-32716-explat-api-requests | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/update-32716-explat-api-requests diff --git a/plugins/woocommerce/changelog/update-32716-explat-api-requests b/plugins/woocommerce/changelog/update-32716-explat-api-requests new file mode 100644 index 00000000000..2d5fc3e555b --- /dev/null +++ b/plugins/woocommerce/changelog/update-32716-explat-api-requests @@ -0,0 +1,4 @@ +Significance: patch +Type: update + +Add safeguards to ensure ExPlat API requests are valid From 65aebd1e442d09e3a376a7a709680d3e69fe1a35 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 3 May 2022 14:04:03 -0700 Subject: [PATCH 307/327] Use prevent double zip script --- .github/workflows/build-release-zip-file.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-release-zip-file.yml b/.github/workflows/build-release-zip-file.yml index 339b08c9cf9..7cea9a7854c 100644 --- a/.github/workflows/build-release-zip-file.yml +++ b/.github/workflows/build-release-zip-file.yml @@ -36,11 +36,14 @@ jobs: working-directory: plugins/woocommerce run: bash bin/build-zip.sh + - name: Unzip the file (prevents double zip problem) + run: unzip plugins/woocommerce/woocommerce.zip -d zipfile + - name: Upload the zip file as an artifact uses: actions/upload-artifact@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: name: woocommerce - path: plugins/woocommerce/woocommerce.zip + path: zipfile retention-days: 7 From a632ca67fd631e00ee315516828e145a6eec4cc9 Mon Sep 17 00:00:00 2001 From: roykho Date: Tue, 3 May 2022 14:04:52 -0700 Subject: [PATCH 308/327] Lock build script php version environment for consistency --- .github/workflows/pr-build-and-e2e-tests.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/pr-build-and-e2e-tests.yml b/.github/workflows/pr-build-and-e2e-tests.yml index c25881341a6..9daa6932f15 100644 --- a/.github/workflows/pr-build-and-e2e-tests.yml +++ b/.github/workflows/pr-build-and-e2e-tests.yml @@ -32,6 +32,11 @@ jobs: if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install-no-dev woocommerce + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Run build run: pnpm nx build woocommerce @@ -83,6 +88,11 @@ jobs: if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Run build run: pnpm nx build woocommerce @@ -134,6 +144,11 @@ jobs: if: steps.cache-deps.outputs.cache-hit != 'true' run: pnpm nx composer-install woocommerce + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + - name: Run build run: pnpm nx build woocommerce From 84fe952ba81cae7fd016963b8f422e1721053419 Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 3 May 2022 15:54:18 -0700 Subject: [PATCH 309/327] Add link to the card --- .../tasks/fills/experimental-import-products/importTypes.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx index aa21ce4ea65..ad44ab8eb0a 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/importTypes.tsx @@ -24,6 +24,7 @@ export const importTypes = [ { key: 'from-cart2cart' as const, title: __( 'FROM CART2CART', 'woocommerce' ), + href: 'https://woocommerce.com/products/cart2cart/?utm_medium=product', content: interpolateComponents( { mixedString: __( 'Migrate all store data like products, customers, and orders in no time with this 3rd party plugin. {{link}}Learn more{{/link}}', From d0b500a3f4820ecc2bd94649591749b045d0041d Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 3 May 2022 15:55:02 -0700 Subject: [PATCH 310/327] Import Stacks before CardList to fix the order error --- .../client/tasks/fills/experimental-import-products/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx index 27d539810bc..323fedece34 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/index.tsx @@ -11,11 +11,11 @@ import { find } from 'lodash'; /** * Internal dependencies */ +import Stacks from '../experimental-products/stack'; import CardList from './CardList'; import { importTypes } from './importTypes'; import './style.scss'; import useProductTypeListItems from '../experimental-products/use-product-types-list-items'; -import Stacks from '../experimental-products/stack'; import { getProductTypes } from '../experimental-products/utils'; const Products = () => { From 0a75c8d6be04246888e83c91b962d830972f58c2 Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 3 May 2022 15:55:15 -0700 Subject: [PATCH 311/327] Adjust text color --- .../tasks/fills/experimental-import-products/style.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss index f2d0e3cf835..b19ad968dbc 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/style.scss @@ -36,6 +36,14 @@ flex-wrap: wrap; justify-content: center; padding: 25px 0 12px 0; + .woocommerce-list__item { + .woocommerce-list__item-title { + color: #1e1e1e; + } + .woocommerce-list__item-content { + color: #757575; + } + } .woocommerce-list__item-before { border: 0; From 49f5f788bb96f347e1bccf3ea508780b2c52183f Mon Sep 17 00:00:00 2001 From: James Allan Date: Wed, 4 May 2022 11:15:56 +1000 Subject: [PATCH 312/327] Replace translation domains from woocommerce-payments to woocommerce --- plugins/woocommerce-admin/client/subscriptions/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index e7237e4fda7..2df5a4b6965 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -42,7 +42,7 @@ const ErrorNotice = ( { isError }: { isError: boolean } ) => { { createInterpolateElement( __( 'Installing WooCommerce Payments failed. To continue with WooCommerce Payments built-in subscriptions functionality, please install WooCommerce Payments manually.', - 'woocommerce-payments' + 'woocommerce' ), { a: ( @@ -64,7 +64,7 @@ const TOS = () => ( { createInterpolateElement( __( 'By clicking "Get started", you agree to the Terms of Service', - 'woocommerce-payments' + 'woocommerce' ), { a: ( @@ -113,7 +113,7 @@ const GetStartedButton = ( { setIsError }: { setIsError: Function } ) => { } ); } } > - { __( 'Get started', 'woocommerce-payments' ) } + { __( 'Get started', 'woocommerce' ) }
); @@ -129,7 +129,7 @@ const SubscriptionsPage = () => {

{ __( 'Track recurring revenue and manage active subscriptions directly from your store’s dashboard — powered by WooCommerce Payments.', - 'woocommerce-payments' + 'woocommerce' ) }

From 8219510fc5dc050e758c499cd257d68ebfbde589 Mon Sep 17 00:00:00 2001 From: moon Date: Tue, 3 May 2022 18:57:23 -0700 Subject: [PATCH 313/327] Style update --- .../client/tasks/fills/experimental-import-products/cards.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss index 57a3ee23dbe..14c0f1c22a1 100644 --- a/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss +++ b/plugins/woocommerce-admin/client/tasks/fills/experimental-import-products/cards.scss @@ -23,6 +23,9 @@ &:hover { background-color: #fff; border: 1.5px solid #007cba; + .woocommerce-list__item-title { + color: #1e1e1e; + } } .woocommerce-list__item-inner { From 6553de469b8f9671a1e6aa24f28ccf1e3205e263 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Wed, 4 May 2022 14:09:21 +1200 Subject: [PATCH 314/327] Test Failures: Check WP version 5.9 before adding mini_cart_block to WC Tracker (#32862) --- .../woocommerce/changelog/fix-mini_cart_block-tests-failing | 4 ++++ plugins/woocommerce/includes/class-wc-tracker.php | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 plugins/woocommerce/changelog/fix-mini_cart_block-tests-failing diff --git a/plugins/woocommerce/changelog/fix-mini_cart_block-tests-failing b/plugins/woocommerce/changelog/fix-mini_cart_block-tests-failing new file mode 100644 index 00000000000..24d8e4b9d0d --- /dev/null +++ b/plugins/woocommerce/changelog/fix-mini_cart_block-tests-failing @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Check WP version 5.9 before adding mini_cart_block to WC Tracker diff --git a/plugins/woocommerce/includes/class-wc-tracker.php b/plugins/woocommerce/includes/class-wc-tracker.php index 20371efd7d4..eb94cc10b93 100644 --- a/plugins/woocommerce/includes/class-wc-tracker.php +++ b/plugins/woocommerce/includes/class-wc-tracker.php @@ -167,8 +167,10 @@ class WC_Tracker { // Cart & checkout tech (blocks or shortcodes). $data['cart_checkout'] = self::get_cart_checkout_info(); - // Mini Cart block. - $data['mini_cart_block'] = self::get_mini_cart_info(); + // Mini Cart block, which only exists since wp 5.9. + if ( version_compare( get_bloginfo( 'version' ), '5.9', '>=' ) ) { + $data['mini_cart_block'] = self::get_mini_cart_info(); + } // WooCommerce Admin info. $data['wc_admin_disabled'] = apply_filters( 'woocommerce_admin_disabled', false ) ? 'yes' : 'no'; From 2e58f8c3525360b256012894a37693e992ec76cf Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 4 May 2022 16:50:10 +0800 Subject: [PATCH 315/327] Add an empty woocommerce-admin.php for backward compatibility --- plugins/woocommerce/.gitignore | 1 + .../woocommerce/packages/woocommerce-admin/woocommerce-admin.php | 0 2 files changed, 1 insertion(+) create mode 100644 plugins/woocommerce/packages/woocommerce-admin/woocommerce-admin.php diff --git a/plugins/woocommerce/.gitignore b/plugins/woocommerce/.gitignore index 49787443657..10e6f930274 100644 --- a/plugins/woocommerce/.gitignore +++ b/plugins/woocommerce/.gitignore @@ -27,6 +27,7 @@ tests/cli/vendor # Packages /packages/* !/packages/README.md +!/packages/woocommerce-admin/woocommerce-admin.php # Language files i18n/languages/woocommerce.pot diff --git a/plugins/woocommerce/packages/woocommerce-admin/woocommerce-admin.php b/plugins/woocommerce/packages/woocommerce-admin/woocommerce-admin.php new file mode 100644 index 00000000000..e69de29bb2d From e3e6dbd72031a0c9a4af48fc165b78dcc4e02d0c Mon Sep 17 00:00:00 2001 From: Chi-Hsuan Huang Date: Wed, 4 May 2022 16:05:00 +0800 Subject: [PATCH 316/327] Add changelog --- plugins/woocommerce/changelog/fix-32733-database-errors | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/fix-32733-database-errors diff --git a/plugins/woocommerce/changelog/fix-32733-database-errors b/plugins/woocommerce/changelog/fix-32733-database-errors new file mode 100644 index 00000000000..17a57cee8ed --- /dev/null +++ b/plugins/woocommerce/changelog/fix-32733-database-errors @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Fix database errors after deleting WC Admin standalone plugin while WC 6.5 is active From 8cba910dece5ec7f5c5ba6e79cf1afafc83e3be6 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Wed, 4 May 2022 16:41:26 +0530 Subject: [PATCH 317/327] Add changelog. --- plugins/woocommerce/changelog/pr-32747 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 plugins/woocommerce/changelog/pr-32747 diff --git a/plugins/woocommerce/changelog/pr-32747 b/plugins/woocommerce/changelog/pr-32747 new file mode 100644 index 00000000000..a91bbff2d41 --- /dev/null +++ b/plugins/woocommerce/changelog/pr-32747 @@ -0,0 +1,4 @@ +Significance: patch +Type: fix + +Add check for $wp_query before calling is_cart to prevent doing_it_wrong notice. From 489ebf2cc6b6c81396de4850ef3c32f4481ac6b6 Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 5 May 2022 15:02:50 +1200 Subject: [PATCH 318/327] Standardize linting: e2e js packages (#32794) --- packages/js/api-core-tests/.eslintrc.js | 3 + packages/js/api-core-tests/changelog/.gitkeep | 0 .../changelog/fix-standardize-lint-e2e | 4 + packages/js/api-core-tests/data/order.js | 8 +- .../js/api-core-tests/data/product-list.js | 651 +++---- .../data/shared/batch-update.js | 10 +- .../data/shared/error-response.js | 2 +- .../js/api-core-tests/data/shared/index.js | 9 +- .../js/api-core-tests/data/shipping-method.js | 6 +- .../js/api-core-tests/data/shipping-zone.js | 2 +- .../js/api-core-tests/endpoints/coupons.js | 27 +- .../js/api-core-tests/endpoints/products.js | 26 +- .../js/api-core-tests/endpoints/refunds.js | 2 +- packages/js/api-core-tests/package.json | 8 +- .../api-core-tests/tests/hello/hello.test.js | 16 +- .../tests/orders/orders.test.js | 45 +- .../tests/products/product-list.test.js | 1587 +++++++++-------- .../utils/api-collection/build-collection.js | 85 +- packages/js/api-core-tests/utils/request.js | 24 +- packages/js/e2e-builds/.eslintrc.js | 1 - packages/js/e2e-builds/changelog/.gitkeep | 0 .../changelog/fix-standardize-lint-e2e | 4 + packages/js/e2e-builds/package.json | 57 +- packages/js/e2e-core-tests/.eslintrc.js | 3 + .../changelog/fix-standardize-lint-e2e | 4 + packages/js/e2e-core-tests/package.json | 34 +- .../specs/activate-and-setup/activate.test.js | 36 +- .../onboarding-tasklist.test.js | 91 +- .../specs/activate-and-setup/setup.test.js | 80 +- .../src/specs/api/variable-product.test.js | 102 +- packages/js/e2e-core-tests/src/specs/index.js | 22 +- .../wp-admin-analytics-page-loads.test.js | 74 +- .../merchant/wp-admin-coupon-new.test.js | 43 +- .../wp-admin-extensions-connect-wccom.test.js | 44 +- .../wp-admin-order-apply-coupon.test.js | 102 +- ...-admin-order-customer-payment-page.test.js | 95 +- .../merchant/wp-admin-order-edit.test.js | 115 +- .../merchant/wp-admin-order-emails.test.js | 44 +- .../specs/merchant/wp-admin-order-new.test.js | 192 +- .../wp-admin-order-refund-restock.test.js | 2 +- .../merchant/wp-admin-order-refund.test.js | 117 +- .../merchant/wp-admin-order-searching.test.js | 68 +- .../wp-admin-order-status-filters.test.js | 83 +- .../merchant/wp-admin-page-loads.test.js | 8 +- .../wp-admin-product-edit-details.test.js | 42 +- .../wp-admin-product-import-csv.test.js | 4 +- .../merchant/wp-admin-product-new.test.js | 236 ++- .../merchant/wp-admin-product-search.test.js | 76 +- .../wp-admin-settings-general.test.js | 130 +- .../wp-admin-settings-product.test.js | 139 +- ...wp-admin-settings-shipping-classes.test.js | 54 +- .../wp-admin-settings-shipping-zones.test.js | 139 +- .../merchant/wp-admin-settings-tax.test.js | 257 ++- .../front-end-cart-calculate-shipping.test.js | 160 +- .../shopper/front-end-cart-coupons.test.js | 77 +- .../front-end-cart-redirection.test.js | 48 +- .../src/specs/shopper/front-end-cart.test.js | 84 +- .../front-end-checkout-coupons.test.js | 80 +- .../front-end-checkout-create-account.test.js | 39 +- .../front-end-checkout-login-account.test.js | 56 +- .../specs/shopper/front-end-checkout.test.js | 219 ++- ...ront-end-my-account-create-account.test.js | 33 +- .../front-end-my-account-pay-order.test.js | 41 +- .../shopper/front-end-my-account.test.js | 85 +- .../front-end-order-email-receiving.test.js | 31 +- ...ont-end-product-browse-search-sort.test.js | 130 +- .../shopper/front-end-single-product.test.js | 144 +- ...front-end-variable-product-updates.test.js | 163 +- .../e2e-core-tests/src/specs/utils/coupons.js | 12 +- packages/js/e2e-environment/.eslintrc.js | 4 +- .../changelog/fix-standardize-lint-e2e | 4 + packages/js/e2e-environment/package.json | 13 +- .../e2e-environment/src/setup/jest.failure.js | 4 +- .../js/e2e-environment/src/slack/reporter.js | 4 +- .../changelog/fix-standardize-lint-e2e | 4 + packages/js/e2e-utils/package.json | 10 +- packages/js/e2e-utils/src/components.js | 50 +- packages/js/e2e-utils/src/flows/merchant.js | 2 +- packages/js/e2e-utils/src/flows/utils.js | 6 +- .../js/e2e-utils/src/flows/with-rest-api.js | 38 +- packages/js/e2e-utils/src/page-utils.js | 32 +- packages/js/e2e-utils/src/pages/admin-edit.js | 6 +- pnpm-lock.yaml | 209 +-- 83 files changed, 3844 insertions(+), 2957 deletions(-) create mode 100644 packages/js/api-core-tests/.eslintrc.js create mode 100644 packages/js/api-core-tests/changelog/.gitkeep create mode 100644 packages/js/api-core-tests/changelog/fix-standardize-lint-e2e create mode 100644 packages/js/e2e-builds/changelog/.gitkeep create mode 100644 packages/js/e2e-builds/changelog/fix-standardize-lint-e2e create mode 100644 packages/js/e2e-core-tests/.eslintrc.js create mode 100644 packages/js/e2e-core-tests/changelog/fix-standardize-lint-e2e create mode 100644 packages/js/e2e-environment/changelog/fix-standardize-lint-e2e create mode 100644 packages/js/e2e-utils/changelog/fix-standardize-lint-e2e diff --git a/packages/js/api-core-tests/.eslintrc.js b/packages/js/api-core-tests/.eslintrc.js new file mode 100644 index 00000000000..b84ca0f93ff --- /dev/null +++ b/packages/js/api-core-tests/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], +}; diff --git a/packages/js/api-core-tests/changelog/.gitkeep b/packages/js/api-core-tests/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/api-core-tests/changelog/fix-standardize-lint-e2e b/packages/js/api-core-tests/changelog/fix-standardize-lint-e2e new file mode 100644 index 00000000000..72f3afe233e --- /dev/null +++ b/packages/js/api-core-tests/changelog/fix-standardize-lint-e2e @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize linting: Ensure e2e packages are lintable diff --git a/packages/js/api-core-tests/data/order.js b/packages/js/api-core-tests/data/order.js index b3cbb0e6d8b..901ec3489d8 100644 --- a/packages/js/api-core-tests/data/order.js +++ b/packages/js/api-core-tests/data/order.js @@ -1,4 +1,4 @@ -const { customerBilling, customerShipping } = require('./shared'); +const { customerBilling, customerShipping } = require( './shared' ); /** * A basic order. @@ -53,10 +53,10 @@ const couponLines = { /** * Builds an example order request. * - * @returns {Object} Sample Order payload. + * @return {Object} Sample Order payload. */ const getOrderExample = () => { - let orderExample = { + const orderExample = { id: 0, payment_method: 'cod', payment_method_title: 'Cash on Delivery', @@ -73,7 +73,7 @@ const getOrderExample = () => { coupon_lines: [ couponLines ], }; return orderExample; -} +}; module.exports = { order, diff --git a/packages/js/api-core-tests/data/product-list.js b/packages/js/api-core-tests/data/product-list.js index 0264b39a094..27c123273a4 100644 --- a/packages/js/api-core-tests/data/product-list.js +++ b/packages/js/api-core-tests/data/product-list.js @@ -6,40 +6,53 @@ const { postRequest, putRequest, deleteRequest, -} = require('../utils/request'); +} = require( '../utils/request' ); const getProducts = ( params = {} ) => getRequest( 'products', params ); const createProduct = ( data ) => postRequest( 'products', data ); -const createProductVariations = ( parentId, variations ) => postRequest( - `products/${ parentId }/variations/batch`, - { +const createProductVariations = ( parentId, variations ) => + postRequest( `products/${ parentId }/variations/batch`, { create: variations, - } -) -const createProducts = ( products ) => postRequest( 'products/batch', { create: products } ); -const createProductCategory = ( data ) => postRequest( 'products/categories', data ); -const createProductAttribute = ( name ) => postRequest( 'products/attributes', { name } ); -const createProductAttributeTerms = ( parentId, termNames ) => postRequest( - `products/attributes/${ parentId }/terms/batch`, - { - create: termNames.map( name => ( { name } ) ) - } -); -const createProductReview = ( productId, review ) => postRequest( 'products/reviews', { - product_id: productId, - ...review, -} ); -const updateProductReview = ( reviewId, data = {} ) => putRequest( `products/reviews/${ reviewId }`, data ); + } ); +const createProducts = ( products ) => + postRequest( 'products/batch', { create: products } ); +const createProductCategory = ( data ) => + postRequest( 'products/categories', data ); +const createProductAttribute = ( name ) => + postRequest( 'products/attributes', { name } ); +const createProductAttributeTerms = ( parentId, termNames ) => + postRequest( `products/attributes/${ parentId }/terms/batch`, { + create: termNames.map( ( name ) => ( { name } ) ), + } ); +const createProductReview = ( productId, review ) => + postRequest( 'products/reviews', { + product_id: productId, + ...review, + } ); +const updateProductReview = ( reviewId, data = {} ) => + putRequest( `products/reviews/${ reviewId }`, data ); const createProductTag = ( name ) => postRequest( 'products/tags', { name } ); -const createShippingClass = ( name ) => postRequest( 'products/shipping_classes', { name } ); +const createShippingClass = ( name ) => + postRequest( 'products/shipping_classes', { name } ); const createTaxClass = ( name ) => postRequest( 'taxes/classes', { name } ); const createSampleCategories = async () => { - const { body: clothing } = await createProductCategory( { name: 'Clothing' } ); - const { body: accessories } = await createProductCategory( { name: 'Accessories', parent: clothing.id } ); - const { body: hoodies } = await createProductCategory( { name: 'Hoodies', parent: clothing.id } ); - const { body: tshirts } = await createProductCategory( { name: 'Tshirts', parent: clothing.id } ); + const { body: clothing } = await createProductCategory( { + name: 'Clothing', + } ); + const { body: accessories } = await createProductCategory( { + name: 'Accessories', + parent: clothing.id, + } ); + const { body: hoodies } = await createProductCategory( { + name: 'Hoodies', + parent: clothing.id, + } ); + const { body: tshirts } = await createProductCategory( { + name: 'Tshirts', + parent: clothing.id, + } ); const { body: decor } = await createProductCategory( { name: 'Decor' } ); const { body: music } = await createProductCategory( { name: 'Music' } ); @@ -56,8 +69,18 @@ const createSampleCategories = async () => { const createSampleAttributes = async () => { const { body: color } = await createProductAttribute( 'Color' ); const { body: size } = await createProductAttribute( 'Size' ); - const { body: colors } = await createProductAttributeTerms( color.id, [ 'Blue', 'Gray', 'Green', 'Red', 'Yellow' ] ); - const { body: sizes } = await createProductAttributeTerms( size.id, [ 'Large', 'Medium', 'Small' ] ); + const { body: colors } = await createProductAttributeTerms( color.id, [ + 'Blue', + 'Gray', + 'Green', + 'Red', + 'Yellow', + ] ); + const { body: sizes } = await createProductAttributeTerms( size.id, [ + 'Large', + 'Medium', + 'Small', + ] ); return { color, @@ -73,7 +96,7 @@ const createSampleTags = async () => { return { cool, }; -} +}; const createSampleShippingClasses = async () => { const { body: freight } = await createShippingClass( 'Freight' ); @@ -81,7 +104,7 @@ const createSampleShippingClasses = async () => { return { freight, }; -} +}; const createSampleTaxClasses = async () => { const { body: reducedRate } = await createTaxClass( 'Reduced Rate' ); @@ -89,15 +112,16 @@ const createSampleTaxClasses = async () => { return { reducedRate, }; -} +}; const createSampleSimpleProducts = async ( categories, attributes, tags ) => { - const description = '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' - + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. ' - + 'Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n'; + const description = + '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' + + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. ' + + 'Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n'; - const { body: simpleProducts } = await createProducts( [ - { + const { body: simpleProducts } = await createProducts( [ + { name: 'Beanie with Logo', date_created_gmt: '2021-09-01T15:50:20', type: 'simple', @@ -145,23 +169,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.accessories.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Red' ] - } + options: [ 'Red' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 62, 63, 61, 60 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'T-Shirt with Logo', date_created_gmt: '2021-09-02T15:50:20', type: 'simple', @@ -209,23 +233,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.tshirts.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Gray' ] - } + options: [ 'Gray' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 59, 67, 66, 56 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Single', date_created_gmt: '2021-09-03T15:50:19', type: 'simple', @@ -245,12 +269,13 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { total_sales: 0, virtual: true, downloadable: true, - downloads: [ - { + downloads: [ + { id: '2579cf07-8b08-4c25-888a-b6258dd1f035', name: 'Single', - file: 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/single.jpg' - } + file: + 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/single.jpg', + }, ], download_limit: 1, download_expiry: 1, @@ -285,9 +310,9 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { grouped_products: [], menu_order: 0, related_ids: [ 68 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Album', date_created_gmt: '2021-09-04T15:50:19', type: 'simple', @@ -307,17 +332,19 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { total_sales: 0, virtual: true, downloadable: true, - downloads: [ - { + downloads: [ + { id: 'cc10249f-1de2-44d4-93d3-9f88ae629f76', name: 'Single 1', - file: 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/single.jpg' + file: + 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/single.jpg', }, - { + { id: 'aea8ef69-ccdc-4d83-8e21-3c395ebb9411', name: 'Single 2', - file: 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/album.jpg' - } + file: + 'https://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2017/08/album.jpg', + }, ], download_limit: 1, download_expiry: 1, @@ -352,9 +379,9 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { grouped_products: [], menu_order: 0, related_ids: [ 69 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Polo', date_created_gmt: '2021-09-05T15:50:19', type: 'simple', @@ -402,23 +429,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.tshirts.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Blue' ] - } + options: [ 'Blue' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 59, 56, 66, 76 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Long Sleeve Tee', date_created_gmt: '2021-09-06T15:50:19', type: 'simple', @@ -466,23 +493,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.tshirts.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Green' ] - } + options: [ 'Green' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 59, 56, 76, 67 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Hoodie with Zipper', date_created_gmt: '2021-09-07T15:50:19', type: 'simple', @@ -536,9 +563,9 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { grouped_products: [], menu_order: 0, related_ids: [ 57, 58 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Hoodie with Pocket', date_created_gmt: '2021-09-08T15:50:19', type: 'simple', @@ -586,23 +613,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.hoodies.id } ], tags: [ { id: tags.cool.id } ], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Gray' ] - } + options: [ 'Gray' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 65, 57, 58 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Sunglasses', date_created_gmt: '2021-09-09T15:50:19', type: 'simple', @@ -656,9 +683,9 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { grouped_products: [], menu_order: 0, related_ids: [ 60, 62, 77, 61 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Cap', date_created_gmt: '2021-09-10T15:50:19', type: 'simple', @@ -706,23 +733,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.accessories.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Yellow' ] - } + options: [ 'Yellow' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 60, 77, 61, 63 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Belt', date_created_gmt: '2021-09-12T15:50:19', type: 'simple', @@ -776,9 +803,9 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { grouped_products: [], menu_order: 0, related_ids: [ 63, 77, 62, 60 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'Beanie', date_created_gmt: '2021-09-13T15:50:19', type: 'simple', @@ -826,23 +853,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.accessories.id } ], tags: [ { id: tags.cool.id } ], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Red' ] - } + options: [ 'Red' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 63, 62, 61, 77 ], - stock_status: 'instock' + stock_status: 'instock', }, - { + { name: 'T-Shirt', date_created_gmt: '2021-09-14T15:50:19', type: 'simple', @@ -890,23 +917,23 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.tshirts.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Gray' ] - } + options: [ 'Gray' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 67, 76, 56, 66 ], - stock_status: 'onbackorder' + stock_status: 'onbackorder', }, - { + { name: 'Hoodie with Logo', date_created_gmt: '2021-09-15T15:50:19', type: 'simple', @@ -954,22 +981,22 @@ const createSampleSimpleProducts = async ( categories, attributes, tags ) => { purchase_note: '', categories: [ { id: categories.hoodies.id } ], tags: [], - attributes: [ - { + attributes: [ + { id: attributes.color.id, position: 0, visible: true, variation: false, - options: [ 'Blue' ] - } + options: [ 'Blue' ], + }, ], default_attributes: [], variations: [], grouped_products: [], menu_order: 0, related_ids: [ 57, 65 ], - stock_status: 'instock' - } + stock_status: 'instock', + }, ] ); return simpleProducts.create; @@ -985,9 +1012,9 @@ const createSampleExternalProducts = async ( categories ) => { featured: false, catalog_visibility: 'visible', description: - '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' - + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' - + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n', + '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' + + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' + + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n', short_description: '

This is an external product.

\n', sku: 'wp-pennant', price: '11.05', @@ -1003,7 +1030,8 @@ const createSampleExternalProducts = async ( categories ) => { downloads: [], download_limit: 0, download_expiry: 0, - external_url: 'https://mercantile.wordpress.org/product/wordpress-pennant/', + external_url: + 'https://mercantile.wordpress.org/product/wordpress-pennant/', button_text: 'Buy on the WordPress swag store!', tax_status: 'taxable', tax_class: '', @@ -1034,7 +1062,7 @@ const createSampleExternalProducts = async ( categories ) => { grouped_products: [], menu_order: 0, related_ids: [], - stock_status: 'instock' + stock_status: 'instock', }, ] ); @@ -1056,9 +1084,9 @@ const createSampleGroupedProduct = async ( categories ) => { featured: false, catalog_visibility: 'visible', description: - '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' - + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' - + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n', + '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' + + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' + + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n', short_description: '

This is a grouped product.

\n', sku: 'logo-collection', price: '18', @@ -1102,10 +1130,10 @@ const createSampleGroupedProduct = async ( categories ) => { attributes: [], default_attributes: [], variations: [], - grouped_products: logoProducts.map( p => p.id ), + grouped_products: logoProducts.map( ( p ) => p.id ), menu_order: 0, related_ids: [], - stock_status: 'instock' + stock_status: 'instock', }, ] ); @@ -1113,9 +1141,10 @@ const createSampleGroupedProduct = async ( categories ) => { }; const createSampleVariableProducts = async ( categories, attributes ) => { - const description = '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' - + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' - + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n'; + const description = + '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ' + + 'Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. ' + + 'Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

\n'; const { body: hoodie } = await createProduct( { name: 'Hoodie', date_created_gmt: '2021-09-18T15:50:19', @@ -1170,7 +1199,7 @@ const createSampleVariableProducts = async ( categories, attributes ) => { position: 0, visible: true, variation: true, - options: [ 'Blue', 'Green', 'Red' ] + options: [ 'Blue', 'Green', 'Red' ], }, { id: 0, @@ -1178,165 +1207,168 @@ const createSampleVariableProducts = async ( categories, attributes ) => { position: 1, visible: true, variation: true, - options: [ 'Yes', 'No' ] - } + options: [ 'Yes', 'No' ], + }, ], default_attributes: [], grouped_products: [], menu_order: 0, - stock_status: 'instock' + stock_status: 'instock', } ); const variationDescription = - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis orci ac odio dictum tincidunt. ' - + 'Donec ut metus leo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. ' - + 'Sed luctus, dui eu sagittis sodales, nulla nibh sagittis augue, vel porttitor diam enim non metus. ' - + 'Vestibulum aliquam augue neque. Phasellus tincidunt odio eget ullamcorper efficitur. ' - + 'Cras placerat ut turpis pellentesque vulputate. Nam sed consequat tortor. Curabitur finibus sapien dolor. ' - + 'Ut eleifend tellus nec erat pulvinar dignissim. Nam non arcu purus. Vivamus et massa massa.

\n'; + '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sagittis orci ac odio dictum tincidunt. ' + + 'Donec ut metus leo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. ' + + 'Sed luctus, dui eu sagittis sodales, nulla nibh sagittis augue, vel porttitor diam enim non metus. ' + + 'Vestibulum aliquam augue neque. Phasellus tincidunt odio eget ullamcorper efficitur. ' + + 'Cras placerat ut turpis pellentesque vulputate. Nam sed consequat tortor. Curabitur finibus sapien dolor. ' + + 'Ut eleifend tellus nec erat pulvinar dignissim. Nam non arcu purus. Vivamus et massa massa.

\n'; - const { body: hoodieVariations } = await createProductVariations( hoodie.id, [ - { - date_created_gmt: '2021-09-19T15:50:20', - description: variationDescription, - sku: 'woo-hoodie-blue-logo', - price: '45', - regular_price: '45', - sale_price: '', - date_on_sale_from_gmt: null, - date_on_sale_to_gmt: null, - on_sale: false, - status: 'publish', - purchasable: true, - virtual: false, - downloadable: false, - downloads: [], - download_limit: 0, - download_expiry: 0, - tax_status: 'taxable', - tax_class: '', - manage_stock: false, - stock_quantity: null, - stock_status: 'instock', - backorders: 'no', - backorders_allowed: false, - backordered: false, - low_stock_amount: null, - weight: '1.5', - dimensions: { length: '10', width: '8', height: '3' }, - shipping_class: '', - attributes: [ - { id: attributes.color.id, option: 'Blue' }, - { id: 0, name: 'Logo', option: 'Yes' } - ], - menu_order: 0 - }, - { - date_created_gmt: '2021-09-20T15:50:20', - description: variationDescription, - sku: 'woo-hoodie-blue', - price: '45', - regular_price: '45', - sale_price: '', - date_on_sale_from_gmt: null, - date_on_sale_to_gmt: null, - on_sale: false, - status: 'publish', - purchasable: true, - virtual: false, - downloadable: false, - downloads: [], - download_limit: 0, - download_expiry: 0, - tax_status: 'taxable', - tax_class: '', - manage_stock: false, - stock_quantity: null, - stock_status: 'instock', - backorders: 'no', - backorders_allowed: false, - backordered: false, - low_stock_amount: null, - weight: '1.5', - dimensions: { length: '10', width: '8', height: '3' }, - shipping_class: '', - attributes: [ - { id: attributes.color.id, option: 'Blue' }, - { id: 0, name: 'Logo', option: 'No' } - ], - menu_order: 3 - }, - { - date_created_gmt: '2021-09-21T15:50:20', - description: variationDescription, - sku: 'woo-hoodie-green', - price: '45', - regular_price: '45', - sale_price: '', - date_on_sale_from_gmt: null, - date_on_sale_to_gmt: null, - on_sale: false, - status: 'publish', - purchasable: true, - virtual: false, - downloadable: false, - downloads: [], - download_limit: 0, - download_expiry: 0, - tax_status: 'taxable', - tax_class: '', - manage_stock: false, - stock_quantity: null, - stock_status: 'instock', - backorders: 'no', - backorders_allowed: false, - backordered: false, - low_stock_amount: null, - weight: '1.5', - dimensions: { length: '10', width: '8', height: '3' }, - shipping_class: '', - attributes: [ - { id: attributes.color.id, option: 'Green' }, - { id: 0, name: 'Logo', option: 'No' } - ], - menu_order: 2 - }, - { - date_created_gmt: '2021-09-22T15:50:19', - description: variationDescription, - sku: 'woo-hoodie-red', - price: '42', - regular_price: '45', - sale_price: '42', - date_on_sale_from_gmt: null, - date_on_sale_to_gmt: null, - on_sale: true, - status: 'publish', - purchasable: true, - virtual: false, - downloadable: false, - downloads: [], - download_limit: 0, - download_expiry: 0, - tax_status: 'taxable', - tax_class: '', - manage_stock: false, - stock_quantity: null, - stock_status: 'instock', - backorders: 'no', - backorders_allowed: false, - backordered: false, - low_stock_amount: null, - weight: '1.5', - dimensions: { length: '10', width: '8', height: '3' }, - shipping_class: '', - attributes: [ - { id: attributes.color.id, option: 'Red' }, - { id: 0, name: 'Logo', option: 'No' } - ], - menu_order: 1 - } - ] ); + const { body: hoodieVariations } = await createProductVariations( + hoodie.id, + [ + { + date_created_gmt: '2021-09-19T15:50:20', + description: variationDescription, + sku: 'woo-hoodie-blue-logo', + price: '45', + regular_price: '45', + sale_price: '', + date_on_sale_from_gmt: null, + date_on_sale_to_gmt: null, + on_sale: false, + status: 'publish', + purchasable: true, + virtual: false, + downloadable: false, + downloads: [], + download_limit: 0, + download_expiry: 0, + tax_status: 'taxable', + tax_class: '', + manage_stock: false, + stock_quantity: null, + stock_status: 'instock', + backorders: 'no', + backorders_allowed: false, + backordered: false, + low_stock_amount: null, + weight: '1.5', + dimensions: { length: '10', width: '8', height: '3' }, + shipping_class: '', + attributes: [ + { id: attributes.color.id, option: 'Blue' }, + { id: 0, name: 'Logo', option: 'Yes' }, + ], + menu_order: 0, + }, + { + date_created_gmt: '2021-09-20T15:50:20', + description: variationDescription, + sku: 'woo-hoodie-blue', + price: '45', + regular_price: '45', + sale_price: '', + date_on_sale_from_gmt: null, + date_on_sale_to_gmt: null, + on_sale: false, + status: 'publish', + purchasable: true, + virtual: false, + downloadable: false, + downloads: [], + download_limit: 0, + download_expiry: 0, + tax_status: 'taxable', + tax_class: '', + manage_stock: false, + stock_quantity: null, + stock_status: 'instock', + backorders: 'no', + backorders_allowed: false, + backordered: false, + low_stock_amount: null, + weight: '1.5', + dimensions: { length: '10', width: '8', height: '3' }, + shipping_class: '', + attributes: [ + { id: attributes.color.id, option: 'Blue' }, + { id: 0, name: 'Logo', option: 'No' }, + ], + menu_order: 3, + }, + { + date_created_gmt: '2021-09-21T15:50:20', + description: variationDescription, + sku: 'woo-hoodie-green', + price: '45', + regular_price: '45', + sale_price: '', + date_on_sale_from_gmt: null, + date_on_sale_to_gmt: null, + on_sale: false, + status: 'publish', + purchasable: true, + virtual: false, + downloadable: false, + downloads: [], + download_limit: 0, + download_expiry: 0, + tax_status: 'taxable', + tax_class: '', + manage_stock: false, + stock_quantity: null, + stock_status: 'instock', + backorders: 'no', + backorders_allowed: false, + backordered: false, + low_stock_amount: null, + weight: '1.5', + dimensions: { length: '10', width: '8', height: '3' }, + shipping_class: '', + attributes: [ + { id: attributes.color.id, option: 'Green' }, + { id: 0, name: 'Logo', option: 'No' }, + ], + menu_order: 2, + }, + { + date_created_gmt: '2021-09-22T15:50:19', + description: variationDescription, + sku: 'woo-hoodie-red', + price: '42', + regular_price: '45', + sale_price: '42', + date_on_sale_from_gmt: null, + date_on_sale_to_gmt: null, + on_sale: true, + status: 'publish', + purchasable: true, + virtual: false, + downloadable: false, + downloads: [], + download_limit: 0, + download_expiry: 0, + tax_status: 'taxable', + tax_class: '', + manage_stock: false, + stock_quantity: null, + stock_status: 'instock', + backorders: 'no', + backorders_allowed: false, + backordered: false, + low_stock_amount: null, + weight: '1.5', + dimensions: { length: '10', width: '8', height: '3' }, + shipping_class: '', + attributes: [ + { id: attributes.color.id, option: 'Red' }, + { id: 0, name: 'Logo', option: 'No' }, + ], + menu_order: 1, + }, + ] + ); const { body: vneck } = await createProduct( { name: 'V-Neck T-Shirt', @@ -1392,20 +1424,20 @@ const createSampleVariableProducts = async ( categories, attributes ) => { position: 0, visible: true, variation: true, - options: [ 'Blue', 'Green', 'Red' ] + options: [ 'Blue', 'Green', 'Red' ], }, { id: attributes.size.id, position: 1, visible: true, variation: true, - options: [ 'Large', 'Medium', 'Small' ] - } + options: [ 'Large', 'Medium', 'Small' ], + }, ], default_attributes: [], grouped_products: [], menu_order: 0, - stock_status: 'instock' + stock_status: 'instock', } ); const { body: vneckVariations } = await createProductVariations( vneck.id, [ @@ -1439,7 +1471,7 @@ const createSampleVariableProducts = async ( categories, attributes ) => { dimensions: { length: '24', width: '1', height: '2' }, shipping_class: '', attributes: [ { id: attributes.color.id, option: 'Blue' } ], - menu_order: 0 + menu_order: 0, }, { date_created_gmt: '2021-09-25T15:50:19', @@ -1471,7 +1503,7 @@ const createSampleVariableProducts = async ( categories, attributes ) => { dimensions: { length: '24', width: '1', height: '2' }, shipping_class: '', attributes: [ { id: attributes.color.id, option: 'Green' } ], - menu_order: 0 + menu_order: 0, }, { date_created_gmt: '2021-09-26T15:50:19', @@ -1503,8 +1535,8 @@ const createSampleVariableProducts = async ( categories, attributes ) => { dimensions: { length: '24', width: '1', height: '2' }, shipping_class: '', attributes: [ { id: attributes.color.id, option: 'Red' } ], - menu_order: 0 - } + menu_order: 0, + }, ] ); return { @@ -1530,15 +1562,15 @@ const createSampleHierarchicalProducts = async () => { return { parent, child, - } + }; }; const createSampleProductReviews = async ( simpleProducts ) => { - const cap = simpleProducts.find( p => p.name === 'Cap' ); - const shirt = simpleProducts.find( p => p.name === 'T-Shirt' ); - const sunglasses = simpleProducts.find( p => p.name === 'Sunglasses' ); + const cap = simpleProducts.find( ( p ) => p.name === 'Cap' ); + const shirt = simpleProducts.find( ( p ) => p.name === 'T-Shirt' ); + const sunglasses = simpleProducts.find( ( p ) => p.name === 'Sunglasses' ); - let { body: review1 } = await createProductReview( cap.id, { + const { body: review1 } = await createProductReview( cap.id, { rating: 3, review: 'Decent cap.', reviewer: 'John Doe', @@ -1549,7 +1581,7 @@ const createSampleProductReviews = async ( simpleProducts ) => { // See: https://github.com/woocommerce/woocommerce/issues/29906. await updateProductReview( review1.id ); - let { body: review2 } = await createProductReview( shirt.id, { + const { body: review2 } = await createProductReview( shirt.id, { rating: 5, review: 'The BEST shirt ever!!', reviewer: 'Shannon Smith', @@ -1557,7 +1589,7 @@ const createSampleProductReviews = async ( simpleProducts ) => { } ); await updateProductReview( review2.id ); - let { body: review3 } = await createProductReview( sunglasses.id, { + const { body: review3 } = await createProductReview( sunglasses.id, { rating: 1, review: 'These are way too expensive.', reviewer: 'Tim Frugalman', @@ -1569,9 +1601,11 @@ const createSampleProductReviews = async ( simpleProducts ) => { }; const createSampleProductOrders = async ( simpleProducts ) => { - const single = simpleProducts.find( p => p.name === 'Single' ); - const beanie = simpleProducts.find( p => p.name === 'Beanie with Logo' ); - const shirt = simpleProducts.find( p => p.name === 'T-Shirt' ); + const single = simpleProducts.find( ( p ) => p.name === 'Single' ); + const beanie = simpleProducts.find( + ( p ) => p.name === 'Beanie with Logo' + ); + const shirt = simpleProducts.find( ( p ) => p.name === 'T-Shirt' ); const { body: order } = await postRequest( 'orders', { set_paid: true, @@ -1602,10 +1636,17 @@ const createSampleData = async () => { const shippingClasses = await createSampleShippingClasses(); const taxClasses = await createSampleTaxClasses(); - const simpleProducts = await createSampleSimpleProducts( categories, attributes, tags ); + const simpleProducts = await createSampleSimpleProducts( + categories, + attributes, + tags + ); const externalProducts = await createSampleExternalProducts( categories ); const groupedProducts = await createSampleGroupedProduct( categories ); - const variableProducts = await createSampleVariableProducts( categories, attributes ); + const variableProducts = await createSampleVariableProducts( + categories, + attributes + ); const hierarchicalProducts = await createSampleHierarchicalProducts(); const reviewIds = await createSampleProductReviews( simpleProducts ); @@ -1642,19 +1683,15 @@ const deleteSampleData = async ( sampleData ) => { orders, } = sampleData; - const productIds = [].concat( - simpleProducts.map( p => p.id ) - ).concat( - externalProducts.map( p => p.id ) - ).concat( - groupedProducts.map( p => p.id ) - ).concat( [ - variableProducts.hoodie.id, - variableProducts.vneck.id, - ] ).concat( [ - hierarchicalProducts.parent.id, - hierarchicalProducts.child.id, - ] ); + const productIds = [] + .concat( simpleProducts.map( ( p ) => p.id ) ) + .concat( externalProducts.map( ( p ) => p.id ) ) + .concat( groupedProducts.map( ( p ) => p.id ) ) + .concat( [ variableProducts.hoodie.id, variableProducts.vneck.id ] ) + .concat( [ + hierarchicalProducts.parent.id, + hierarchicalProducts.child.id, + ] ); orders.forEach( async ( { id } ) => { await deleteRequest( `orders/${ id }`, true ); diff --git a/packages/js/api-core-tests/data/shared/batch-update.js b/packages/js/api-core-tests/data/shared/batch-update.js index bb44e62f0a6..440996ca0ca 100644 --- a/packages/js/api-core-tests/data/shared/batch-update.js +++ b/packages/js/api-core-tests/data/shared/batch-update.js @@ -3,12 +3,12 @@ * * Note that by default the update endpoint is limited to 100 objects to be created, updated, or deleted. * - * @param {string} action Batch action. Must be one of: create, update, or delete. - * @param {Array} resources A list of resource objects. For the delete action, this will be a list of IDs. - * @param {Object} payload The batch payload object. Defaults to an empty object. - * @returns {Object} The payload to send to the batch endpoint. + * @param {string} action Batch action. Must be one of: create, update, or delete. + * @param {Array} resources A list of resource objects. For the delete action, this will be a list of IDs. + * @param {Object} payload The batch payload object. Defaults to an empty object. + * @return {Object} The payload to send to the batch endpoint. */ - const batch = ( action, resources = [], payload = {} ) => { +const batch = ( action, resources = [], payload = {} ) => { if ( ! [ 'create', 'update', 'delete' ].includes( action ) ) { return; } diff --git a/packages/js/api-core-tests/data/shared/error-response.js b/packages/js/api-core-tests/data/shared/error-response.js index e83836eab1b..f77b36334ac 100644 --- a/packages/js/api-core-tests/data/shared/error-response.js +++ b/packages/js/api-core-tests/data/shared/error-response.js @@ -7,7 +7,7 @@ const errorResponse = { code: '', message: '', data: { - status: 400 + status: 400, }, }; diff --git a/packages/js/api-core-tests/data/shared/index.js b/packages/js/api-core-tests/data/shared/index.js index 9947340a9e1..033b5183b17 100644 --- a/packages/js/api-core-tests/data/shared/index.js +++ b/packages/js/api-core-tests/data/shared/index.js @@ -1,9 +1,6 @@ -const { customerBilling, customerShipping } = require('./customer'); -const { - batch, - getBatchPayloadExample -} = require('./batch-update'); -const { errorResponse } = require('./error-response'); +const { customerBilling, customerShipping } = require( './customer' ); +const { batch, getBatchPayloadExample } = require( './batch-update' ); +const { errorResponse } = require( './error-response' ); module.exports = { customerBilling, diff --git a/packages/js/api-core-tests/data/shipping-method.js b/packages/js/api-core-tests/data/shipping-method.js index 65565f9f185..cfdfba8b9cb 100644 --- a/packages/js/api-core-tests/data/shipping-method.js +++ b/packages/js/api-core-tests/data/shipping-method.js @@ -6,7 +6,9 @@ * - `flat_rate` * - `local_pickup` * - * @returns shipping method object that can serve as a request payload for adding a shipping method to a shipping zone. + * @param methodId + * @param cost + * @return shipping method object that can serve as a request payload for adding a shipping method to a shipping zone. */ const getShippingMethodExample = ( methodId, cost ) => { const shippingMethodExample = { @@ -15,7 +17,7 @@ const getShippingMethodExample = ( methodId, cost ) => { if ( cost !== undefined ) { shippingMethodExample.settings = { - cost: cost, + cost, }; } diff --git a/packages/js/api-core-tests/data/shipping-zone.js b/packages/js/api-core-tests/data/shipping-zone.js index 2fc1056c899..fa337d2afbd 100644 --- a/packages/js/api-core-tests/data/shipping-zone.js +++ b/packages/js/api-core-tests/data/shipping-zone.js @@ -13,7 +13,7 @@ const shippingZone = { /** * Constructs a default shipping zone object. * - * @returns default shipping zone + * @return default shipping zone */ const getShippingZoneExample = () => { return shippingZone; diff --git a/packages/js/api-core-tests/endpoints/coupons.js b/packages/js/api-core-tests/endpoints/coupons.js index d59fb635551..6896858a4ae 100644 --- a/packages/js/api-core-tests/endpoints/coupons.js +++ b/packages/js/api-core-tests/endpoints/coupons.js @@ -1,8 +1,13 @@ /** * Internal dependencies */ - const { getRequest, postRequest, putRequest, deleteRequest } = require('../utils/request'); - const { coupon, shared } = require('../data'); +const { + getRequest, + postRequest, + putRequest, + deleteRequest, +} = require( '../utils/request' ); +const { coupon, shared } = require( '../data' ); /** * WooCommerce Coupon endpoints. @@ -17,14 +22,15 @@ const couponsApi = { path: 'coupons', responseCode: 201, payload: coupon, - coupon: async ( couponDetails ) => postRequest( 'coupons', couponDetails ), + coupon: async ( couponDetails ) => + postRequest( 'coupons', couponDetails ), }, retrieve: { name: 'Retrieve a coupon', method: 'GET', path: 'coupons/', responseCode: 200, - coupon: async ( couponId ) => getRequest( `coupons/${couponId}` ), + coupon: async ( couponId ) => getRequest( `coupons/${ couponId }` ), }, listAll: { name: 'List all coupons', @@ -39,7 +45,8 @@ const couponsApi = { path: 'coupons/', responseCode: 200, payload: coupon, - coupon: async ( couponId, couponDetails ) => putRequest( `coupons/${couponId}`, couponDetails ), + coupon: async ( couponId, couponDetails ) => + putRequest( `coupons/${ couponId }`, couponDetails ), }, delete: { name: 'Delete a coupon', @@ -47,9 +54,10 @@ const couponsApi = { path: 'coupons/', responseCode: 200, payload: { - force: false + force: false, }, - coupon: async ( couponId, deletePermanently ) => deleteRequest( `coupons/${couponId}`, deletePermanently ), + coupon: async ( couponId, deletePermanently ) => + deleteRequest( `coupons/${ couponId }`, deletePermanently ), }, batch: { name: 'Batch update coupons', @@ -57,8 +65,9 @@ const couponsApi = { path: 'coupons/batch', responseCode: 200, payload: shared.getBatchPayloadExample( coupon ), - coupons: async ( batchUpdatePayload ) => postRequest( `coupons/batch`, batchUpdatePayload ), + coupons: async ( batchUpdatePayload ) => + postRequest( `coupons/batch`, batchUpdatePayload ), }, }; - module.exports = { couponsApi }; +module.exports = { couponsApi }; diff --git a/packages/js/api-core-tests/endpoints/products.js b/packages/js/api-core-tests/endpoints/products.js index c7b1b9a730c..f309f614763 100644 --- a/packages/js/api-core-tests/endpoints/products.js +++ b/packages/js/api-core-tests/endpoints/products.js @@ -1,7 +1,12 @@ /** * Internal dependencies */ -const { getRequest, postRequest, putRequest, deleteRequest } = require('../utils/request'); +const { + getRequest, + postRequest, + putRequest, + deleteRequest, +} = require( '../utils/request' ); /** * WooCommerce Products endpoints. @@ -15,28 +20,31 @@ const productsApi = { method: 'POST', path: 'products', responseCode: 201, - product: async ( productDetails ) => postRequest( 'products', productDetails ), + product: async ( productDetails ) => + postRequest( 'products', productDetails ), }, retrieve: { name: 'Retrieve a product', method: 'GET', path: 'products/', responseCode: 200, - product: async ( productId ) => getRequest( `products/${productId}` ), + product: async ( productId ) => getRequest( `products/${ productId }` ), }, listAll: { name: 'List all products', method: 'GET', path: 'products', responseCode: 200, - products: async ( productsQuery = {} ) => getRequest( 'products', productsQuery ), + products: async ( productsQuery = {} ) => + getRequest( 'products', productsQuery ), }, update: { name: 'Update a product', method: 'PUT', path: 'products/', responseCode: 200, - product: async ( productId, productDetails ) => putRequest( `products/${productId}`, productDetails ), + product: async ( productId, productDetails ) => + putRequest( `products/${ productId }`, productDetails ), }, delete: { name: 'Delete a product', @@ -44,16 +52,18 @@ const productsApi = { path: 'products/', responseCode: 200, payload: { - force: false + force: false, }, - product: async ( productId, deletePermanently ) => deleteRequest( `products/${productId}`, deletePermanently ), + product: async ( productId, deletePermanently ) => + deleteRequest( `products/${ productId }`, deletePermanently ), }, batch: { name: 'Batch update products', method: 'POST', path: 'products/batch', responseCode: 200, - products: async ( batchUpdatePayload ) => postRequest( `products/batch`, batchUpdatePayload ), + products: async ( batchUpdatePayload ) => + postRequest( `products/batch`, batchUpdatePayload ), }, }; diff --git a/packages/js/api-core-tests/endpoints/refunds.js b/packages/js/api-core-tests/endpoints/refunds.js index a4fb63ab704..72897915712 100644 --- a/packages/js/api-core-tests/endpoints/refunds.js +++ b/packages/js/api-core-tests/endpoints/refunds.js @@ -55,5 +55,5 @@ const refundsApi = { }; module.exports = { - refundsApi: refundsApi, + refundsApi, }; diff --git a/packages/js/api-core-tests/package.json b/packages/js/api-core-tests/package.json index 379b2b82f3a..c274e343117 100644 --- a/packages/js/api-core-tests/package.json +++ b/packages/js/api-core-tests/package.json @@ -9,7 +9,9 @@ "test:api": "jest --group=api", "test:hello": "jest --group=hello", "make:collection": "node utils/api-collection/build-collection.js", - "report": "allure generate --clean && allure serve" + "report": "allure generate --clean && allure serve", + "lint": "eslint data endpoints tests utils --ext=js,ts,tsx", + "lint:fix": "eslint data endpoints tests utils --ext=js,ts,tsx --fix" }, "repository": { "type": "git", @@ -29,6 +31,10 @@ "postman-collection": "^4.1.0", "supertest": "^6.1.4" }, + "devDependencies": { + "@woocommerce/eslint-plugin": "workspace:*", + "eslint": "^8.12.0" + }, "publishConfig": { "access": "public" }, diff --git a/packages/js/api-core-tests/tests/hello/hello.test.js b/packages/js/api-core-tests/tests/hello/hello.test.js index e9b7a67eda4..43fd765f689 100644 --- a/packages/js/api-core-tests/tests/hello/hello.test.js +++ b/packages/js/api-core-tests/tests/hello/hello.test.js @@ -1,4 +1,4 @@ -const { getRequest } = require('../../utils/request'); +const { getRequest } = require( '../../utils/request' ); /** * Tests to verify connection to the API. @@ -6,16 +6,14 @@ const { getRequest } = require('../../utils/request'); * @group hello * */ -describe('Test API connectivity', () => { - - it('can access a non-authenticated endpoint', async () => { +describe( 'Test API connectivity', () => { + it( 'can access a non-authenticated endpoint', async () => { const result = await getRequest( '' ); expect( result.statusCode ).toEqual( 200 ); - }); + } ); - it('can access an authenticated endpoint', async () => { + it( 'can access an authenticated endpoint', async () => { const result = await getRequest( 'system_status' ); expect( result.statusCode ).toEqual( 200 ); - }); - -}); + } ); +} ); diff --git a/packages/js/api-core-tests/tests/orders/orders.test.js b/packages/js/api-core-tests/tests/orders/orders.test.js index 94df275f0dd..1f714179861 100644 --- a/packages/js/api-core-tests/tests/orders/orders.test.js +++ b/packages/js/api-core-tests/tests/orders/orders.test.js @@ -341,39 +341,36 @@ describe( 'Orders API tests', () => { }; const verifyOrderPrecision = ( order, dp ) => { - expectPrecisionToMatch( order[ 'discount_total' ], dp ); - expectPrecisionToMatch( order[ 'discount_tax' ], dp ); - expectPrecisionToMatch( order[ 'shipping_total' ], dp ); - expectPrecisionToMatch( order[ 'shipping_tax' ], dp ); - expectPrecisionToMatch( order[ 'cart_tax' ], dp ); - expectPrecisionToMatch( order[ 'total' ], dp ); - expectPrecisionToMatch( order[ 'total_tax' ], dp ); + expectPrecisionToMatch( order.discount_total, dp ); + expectPrecisionToMatch( order.discount_tax, dp ); + expectPrecisionToMatch( order.shipping_total, dp ); + expectPrecisionToMatch( order.shipping_tax, dp ); + expectPrecisionToMatch( order.cart_tax, dp ); + expectPrecisionToMatch( order.total, dp ); + expectPrecisionToMatch( order.total_tax, dp ); - order[ 'line_items' ].forEach( ( lineItem ) => { - expectPrecisionToMatch( lineItem[ 'total' ], dp ); - expectPrecisionToMatch( lineItem[ 'total_tax' ], dp ); + order.line_items.forEach( ( lineItem ) => { + expectPrecisionToMatch( lineItem.total, dp ); + expectPrecisionToMatch( lineItem.total_tax, dp ); } ); - order[ 'tax_lines' ].forEach( ( taxLine ) => { - expectPrecisionToMatch( taxLine[ 'tax_total' ], dp ); - expectPrecisionToMatch( - taxLine[ 'shipping_tax_total' ], - dp - ); + order.tax_lines.forEach( ( taxLine ) => { + expectPrecisionToMatch( taxLine.tax_total, dp ); + expectPrecisionToMatch( taxLine.shipping_tax_total, dp ); } ); - order[ 'shipping_lines' ].forEach( ( shippingLine ) => { - expectPrecisionToMatch( shippingLine[ 'total' ], dp ); - expectPrecisionToMatch( shippingLine[ 'total_tax' ], dp ); + order.shipping_lines.forEach( ( shippingLine ) => { + expectPrecisionToMatch( shippingLine.total, dp ); + expectPrecisionToMatch( shippingLine.total_tax, dp ); } ); - order[ 'fee_lines' ].forEach( ( feeLine ) => { - expectPrecisionToMatch( feeLine[ 'total' ], dp ); - expectPrecisionToMatch( feeLine[ 'total_tax' ], dp ); + order.fee_lines.forEach( ( feeLine ) => { + expectPrecisionToMatch( feeLine.total, dp ); + expectPrecisionToMatch( feeLine.total_tax, dp ); } ); - order[ 'refunds' ].forEach( ( refund ) => { - expectPrecisionToMatch( refund[ 'total' ], dp ); + order.refunds.forEach( ( refund ) => { + expectPrecisionToMatch( refund.total, dp ); } ); }; diff --git a/packages/js/api-core-tests/tests/products/product-list.test.js b/packages/js/api-core-tests/tests/products/product-list.test.js index cff3e18d1b6..d3a91807151 100644 --- a/packages/js/api-core-tests/tests/products/product-list.test.js +++ b/packages/js/api-core-tests/tests/products/product-list.test.js @@ -1,778 +1,815 @@ /** * Internal dependencies */ - const { createSampleData, deleteSampleData } = require( '../../data/product-list' ); - const { productsApi } = require('../../endpoints/products'); - - /** - * Tests for the WooCommerce "List all products" API. - * - * @group api - * @group products - * - */ - describe( 'Products API tests: List All Products', () => { - - const PRODUCTS_COUNT = 20; - let sampleData; - - beforeAll( async () => { - sampleData = await createSampleData(); - }, 10000 ); - - afterAll( async () => { - await deleteSampleData( sampleData ); - }, 10000 ); - - describe( 'List all products', () => { - - it( 'defaults', async () => { - const result = await productsApi.listAll.products(); - expect( result.statusCode ).toEqual( 200 ); - expect( result.headers['x-wp-total'] ).toEqual( PRODUCTS_COUNT.toString() ); - expect( result.headers['x-wp-totalpages'] ).toEqual( '2' ); - } ); - - it( 'pagination', async () => { - const pageSize = 6; - const page1 = await productsApi.listAll.products( { - per_page: pageSize, - } ); - const page2 = await productsApi.listAll.products( { - per_page: pageSize, - page: 2, - } ); - expect( page1.statusCode ).toEqual( 200 ); - expect( page2.statusCode ).toEqual( 200 ); - - // Verify total page count. - expect( page1.headers['x-wp-total'] ).toEqual( PRODUCTS_COUNT.toString() ); - expect( page1.headers['x-wp-totalpages'] ).toEqual( '4' ); - - // Verify we get pageSize'd arrays. - expect( Array.isArray( page1.body ) ).toBe( true ); - expect( Array.isArray( page2.body ) ).toBe( true ); - expect( page1.body ).toHaveLength( pageSize ); - expect( page2.body ).toHaveLength( pageSize ); - - // Ensure all of the product IDs are unique (no page overlap). - const allProductIds = page1.body.concat( page2.body ).reduce( ( acc, product ) => { - acc[ product.id ] = 1; - return acc; - }, {} ); - expect( Object.keys( allProductIds ) ).toHaveLength( pageSize * 2 ); - - // Verify that offset takes precedent over page number. - const page2Offset = await productsApi.listAll.products( { - per_page: pageSize, - page: 2, - offset: pageSize + 1, - } ); - // The offset pushes the result set 1 product past the start of page 2. - expect( page2Offset.body ).toEqual( - expect.not.arrayContaining( [ - expect.objectContaining( { id: page2.body[0].id } ) - ] ) - ); - expect( page2Offset.body[0].id ).toEqual( page2.body[1].id ); - - // Verify the last page only has 2 products as we expect. - const lastPage = await productsApi.listAll.products( { - per_page: pageSize, - page: 4, - } ); - expect( Array.isArray( lastPage.body ) ).toBe( true ); - expect( lastPage.body ).toHaveLength( 2 ); - - // Verify a page outside the total page count is empty. - const page6 = await productsApi.listAll.products( { - per_page: pageSize, - page: 6, - } ); - expect( Array.isArray( page6.body ) ).toBe( true ); - expect( page6.body ).toHaveLength( 0 ); - } ); - - it( 'search', async () => { - // Match in the short description. - const result1 = await productsApi.listAll.products( { - search: 'external' - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].name ).toBe( 'WordPress Pennant' ); - - // Match in the product name. - const result2 = await productsApi.listAll.products( { - search: 'pocket' - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 1 ); - expect( result2.body[0].name ).toBe( 'Hoodie with Pocket' ); - } ); - - it( 'inclusion / exclusion', async () => { - const allProducts = await productsApi.listAll.products( { - per_page: 20, - } ); - expect( allProducts.statusCode ).toEqual( 200 ); - const allProductIds = allProducts.body.map( product => product.id ); - expect( allProductIds ).toHaveLength( PRODUCTS_COUNT ); - - const productsToFilter = [ - allProductIds[2], - allProductIds[4], - allProductIds[7], - allProductIds[13], - ]; - - const included = await productsApi.listAll.products( { - per_page: 20, - include: productsToFilter.join( ',' ), - } ); - expect( included.statusCode ).toEqual( 200 ); - expect( included.body ).toHaveLength( productsToFilter.length ); - expect( included.body ).toEqual( - expect.arrayContaining( - productsToFilter.map( id => expect.objectContaining( { id } ) ) - ) - ); - - const excluded = await productsApi.listAll.products( { - per_page: 20, - exclude: productsToFilter.join( ',' ), - } ); - expect( excluded.statusCode ).toEqual( 200 ); - expect( excluded.body ).toHaveLength( PRODUCTS_COUNT - productsToFilter.length ); - expect( excluded.body ).toEqual( - expect.not.arrayContaining( - productsToFilter.map( id => expect.objectContaining( { id } ) ) - ) - ); - - } ); - - it( 'slug', async () => { - // Match by slug. - const result1 = await productsApi.listAll.products( { - slug: 't-shirt-with-logo' - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].slug ).toBe( 't-shirt-with-logo' ); - - // No matches - const result2 = await productsApi.listAll.products( { - slug: 'no-product-with-this-slug' - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 0 ); - } ); - - it( 'sku', async () => { - // Match by SKU. - const result1 = await productsApi.listAll.products( { - sku: 'woo-sunglasses' - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].sku ).toBe( 'woo-sunglasses' ); - - // No matches - const result2 = await productsApi.listAll.products( { - sku: 'no-product-with-this-sku' - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 0 ); - } ); - - it( 'type', async () => { - const result1 = await productsApi.listAll.products( { - type: 'simple' - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.headers['x-wp-total'] ).toEqual( '16' ); - - const result2 = await productsApi.listAll.products( { - type: 'external' - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 1 ); - expect( result2.body[0].name ).toBe( 'WordPress Pennant' ); - - const result3 = await productsApi.listAll.products( { - type: 'variable' - } ); - expect( result3.statusCode ).toEqual( 200 ); - expect( result3.body ).toHaveLength( 2 ); - - const result4 = await productsApi.listAll.products( { - type: 'grouped' - } ); - expect( result4.statusCode ).toEqual( 200 ); - expect( result4.body ).toHaveLength( 1 ); - expect( result4.body[0].name ).toBe( 'Logo Collection' ); - } ); - - it( 'featured', async () => { - const featured = [ - expect.objectContaining( { name: 'Hoodie with Zipper' } ), - expect.objectContaining( { name: 'Hoodie with Pocket' } ), - expect.objectContaining( { name: 'Sunglasses' } ), - expect.objectContaining( { name: 'Cap' } ), - expect.objectContaining( { name: 'V-Neck T-Shirt' } ), - ]; - - const result1 = await productsApi.listAll.products( { - featured: true, - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( featured.length ); - expect( result1.body ).toEqual( expect.arrayContaining( featured ) ); - - const result2 = await productsApi.listAll.products( { - featured: false, - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toEqual( expect.not.arrayContaining( featured ) ); - } ); - - it( 'categories', async () => { - const accessory = [ - expect.objectContaining( { name: 'Beanie' } ), - ] - const hoodies = [ - expect.objectContaining( { name: 'Hoodie with Zipper' } ), - expect.objectContaining( { name: 'Hoodie with Pocket' } ), - expect.objectContaining( { name: 'Hoodie with Logo' } ), - expect.objectContaining( { name: 'Hoodie' } ), - ]; - - // Verify that subcategories are included. - const result1 = await productsApi.listAll.products( { - per_page: 20, - category: sampleData.categories.clothing.id, - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toEqual( expect.arrayContaining( accessory ) ); - expect( result1.body ).toEqual( expect.arrayContaining( hoodies ) ); - - // Verify sibling categories are not. - const result2 = await productsApi.listAll.products( { - category: sampleData.categories.hoodies.id, - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toEqual( expect.not.arrayContaining( accessory ) ); - expect( result2.body ).toEqual( expect.arrayContaining( hoodies ) ); - } ); - - it( 'on sale', async () => { - const onSale = [ - expect.objectContaining( { name: 'Beanie with Logo' } ), - expect.objectContaining( { name: 'Hoodie with Pocket' } ), - expect.objectContaining( { name: 'Single' } ), - expect.objectContaining( { name: 'Cap' } ), - expect.objectContaining( { name: 'Belt' } ), - expect.objectContaining( { name: 'Beanie' } ), - expect.objectContaining( { name: 'Hoodie' } ), - ]; - - const result1 = await productsApi.listAll.products( { - on_sale: true, - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( onSale.length ); - expect( result1.body ).toEqual( expect.arrayContaining( onSale ) ); - - const result2 = await productsApi.listAll.products( { - on_sale: false, - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toEqual( expect.not.arrayContaining( onSale ) ); - } ); - - it( 'price', async () => { - const result1 = await productsApi.listAll.products( { - min_price: 21, - max_price: 28, - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].name ).toBe( 'Long Sleeve Tee' ); - expect( result1.body[0].price ).toBe( '25' ); - - const result2 = await productsApi.listAll.products( { - max_price: 5, - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 1 ); - expect( result2.body[0].name ).toBe( 'Single' ); - expect( result2.body[0].price ).toBe( '2' ); - - const result3 = await productsApi.listAll.products( { - min_price: 5, - order: 'asc', - orderby: 'price', - } ); - expect( result3.statusCode ).toEqual( 200 ); - expect( result3.body ).toEqual( - expect.not.arrayContaining( [ - expect.objectContaining( { name: 'Single' } ) - ] ) - ); - } ); - - it( 'before / after', async () => { - const before = [ - expect.objectContaining( { name: 'Album' } ), - expect.objectContaining( { name: 'Single' } ), - expect.objectContaining( { name: 'T-Shirt with Logo' } ), - expect.objectContaining( { name: 'Beanie with Logo' } ), - ]; - const after = [ - expect.objectContaining( { name: 'Hoodie' } ), - expect.objectContaining( { name: 'V-Neck T-Shirt' } ), - expect.objectContaining( { name: 'Parent Product' } ), - expect.objectContaining( { name: 'Child Product' } ), - ]; - - const result1 = await productsApi.listAll.products( { - before: '2021-09-05T15:50:19', - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( before.length ); - expect( result1.body ).toEqual( expect.arrayContaining( before ) ); - - const result2 = await productsApi.listAll.products( { - after: '2021-09-18T15:50:18', - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toEqual( expect.not.arrayContaining( before ) ); - expect( result2.body ).toHaveLength( after.length ); - expect( result2.body ).toEqual( expect.arrayContaining( after ) ); - } ); - - it( 'attributes', async () => { - const red = sampleData.attributes.colors.find( term => term.name === 'Red' ); - - const redProducts = [ - expect.objectContaining( { name: 'V-Neck T-Shirt' } ), - expect.objectContaining( { name: 'Hoodie' } ), - expect.objectContaining( { name: 'Beanie' } ), - expect.objectContaining( { name: 'Beanie with Logo' } ), - ]; - - const result = await productsApi.listAll.products( { - attribute: 'pa_color', - attribute_term: red.id, - } ); - - expect( result.statusCode ).toEqual( 200 ); - expect( result.body ).toHaveLength( redProducts.length ); - expect( result.body ).toEqual( expect.arrayContaining( redProducts ) ); - } ); - - it( 'status', async () => { - const result1 = await productsApi.listAll.products( { - status: 'pending' - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].name ).toBe( 'Polo' ); - - const result2 = await productsApi.listAll.products( { - status: 'draft' - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( 0 ); - } ); - - it( 'shipping class', async () => { - const result = await productsApi.listAll.products( { - shipping_class: sampleData.shippingClasses.freight.id, - } ); - expect( result.statusCode ).toEqual( 200 ); - expect( result.body ).toHaveLength( 1 ); - expect( result.body[0].name ).toBe( 'Long Sleeve Tee' ); - } ); - - it( 'tax class', async () => { - const result = await productsApi.listAll.products( { - tax_class: 'reduced-rate', - } ); - expect( result.statusCode ).toEqual( 200 ); - expect( result.body ).toHaveLength( 1 ); - expect( result.body[0].name ).toBe( 'Sunglasses' ); - } ); - - it( 'stock status', async () => { - const result = await productsApi.listAll.products( { - stock_status: 'onbackorder', - } ); - expect( result.statusCode ).toEqual( 200 ); - expect( result.body ).toHaveLength( 1 ); - expect( result.body[0].name ).toBe( 'T-Shirt' ); - } ); - - it( 'tags', async () => { - const coolProducts = [ - expect.objectContaining( { name: 'Sunglasses' } ), - expect.objectContaining( { name: 'Hoodie with Pocket' } ), - expect.objectContaining( { name: 'Beanie' } ), - ]; - - const result = await productsApi.listAll.products( { - tag: sampleData.tags.cool.id, - } ); - - expect( result.statusCode ).toEqual( 200 ); - expect( result.body ).toHaveLength( coolProducts.length ); - expect( result.body ).toEqual( expect.arrayContaining( coolProducts ) ); - } ); - - it( 'parent', async () => { - const result1 = await productsApi.listAll.products( { - parent: sampleData.hierarchicalProducts.parent.id, - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( 1 ); - expect( result1.body[0].name ).toBe( 'Child Product' ); - - const result2 = await productsApi.listAll.products( { - parent_exclude: sampleData.hierarchicalProducts.parent.id, - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toEqual( expect.not.arrayContaining( [ - expect.objectContaining( { name: 'Child Product' } ), - ] ) ); - } ); - - describe( 'orderby', () => { - const productNamesAsc = [ - 'Album', - 'Beanie', - 'Beanie with Logo', - 'Belt', - 'Cap', - 'Child Product', - 'Hoodie', - 'Hoodie with Logo', - 'Hoodie with Pocket', - 'Hoodie with Zipper', - 'Logo Collection', - 'Long Sleeve Tee', - 'Parent Product', - 'Polo', - 'Single', - 'Sunglasses', - 'T-Shirt', - 'T-Shirt with Logo', - 'V-Neck T-Shirt', - 'WordPress Pennant', - ]; - const productNamesDesc = [ ...productNamesAsc ].reverse(); - const productNamesByRatingAsc = [ - 'Sunglasses', - 'Cap', - 'T-Shirt', - ]; - const productNamesByRatingDesc = [ ...productNamesByRatingAsc ].reverse(); - const productNamesByPopularityDesc = [ - 'Beanie with Logo', - 'Single', - 'T-Shirt', - ]; - const productNamesByPopularityAsc = [ ...productNamesByPopularityDesc ].reverse(); - - it( 'default', async () => { - // Default = date desc. - const result = await productsApi.listAll.products(); - expect( result.statusCode ).toEqual( 200 ); - - // Verify all dates are in descending order. - let lastDate = Date.now(); - result.body.forEach( ( { date_created_gmt } ) => { - const created = Date.parse( date_created_gmt + '.000Z' ); - expect( lastDate ).toBeGreaterThan( created ); - lastDate = created; - } ); - } ); - - it( 'date', async () => { - const result = await productsApi.listAll.products( { - order: 'asc', - orderby: 'date', - } ); - expect( result.statusCode ).toEqual( 200 ); - - // Verify all dates are in ascending order. - let lastDate = 0; - result.body.forEach( ( { date_created_gmt } ) => { - const created = Date.parse( date_created_gmt + '.000Z' ); - expect( created ).toBeGreaterThan( lastDate ); - lastDate = created; - } ); - } ); - - it( 'id', async () => { - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'id', - } ); - expect( result1.statusCode ).toEqual( 200 ); - - // Verify all results are in ascending order. - let lastId = 0; - result1.body.forEach( ( { id } ) => { - expect( id ).toBeGreaterThan( lastId ); - lastId = id; - } ); - - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'id', - } ); - expect( result2.statusCode ).toEqual( 200 ); - - // Verify all results are in descending order. - lastId = Number.MAX_SAFE_INTEGER; - result2.body.forEach( ( { id } ) => { - expect( lastId ).toBeGreaterThan( id ); - lastId = id; - } ); - } ); - - it( 'title', async () => { - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'title', - per_page: productNamesAsc.length, - } ); - expect( result1.statusCode ).toEqual( 200 ); - - // Verify all results are in ascending order. - result1.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesAsc[ idx ] ); - } ); - - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'title', - per_page: productNamesDesc.length, - } ); - expect( result2.statusCode ).toEqual( 200 ); - - // Verify all results are in descending order. - result2.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesDesc[ idx ] ); - } ); - } ); - - it( 'slug', async () => { - const productNamesBySlugAsc = [ - 'Polo', // The Polo isn't published so it has an empty slug. - ...productNamesAsc.filter( p => p !== 'Polo' ), - ]; - const productNamesBySlugDesc = [ ...productNamesBySlugAsc ].reverse(); - - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'slug', - per_page: productNamesBySlugAsc.length, - } ); - expect( result1.statusCode ).toEqual( 200 ); - - // Verify all results are in ascending order. - result1.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesBySlugAsc[ idx ] ); - } ); - - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'slug', - per_page: productNamesBySlugDesc.length, - } ); - expect( result2.statusCode ).toEqual( 200 ); - - // Verify all results are in descending order. - result2.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesBySlugDesc[ idx ] ); - } ); - } ); - - it( 'price', async () => { - const productNamesMinPriceAsc = [ - 'Parent Product', - 'Child Product', - 'Single', - 'WordPress Pennant', - 'Album', - 'V-Neck T-Shirt', - 'Cap', - 'Beanie with Logo', - 'T-Shirt with Logo', - 'Beanie', - 'T-Shirt', - 'Logo Collection', - 'Polo', - 'Long Sleeve Tee', - 'Hoodie with Pocket', - 'Hoodie', - 'Hoodie with Zipper', - 'Hoodie with Logo', - 'Belt', - 'Sunglasses', - ]; - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'price', - per_page: productNamesMinPriceAsc.length - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( productNamesMinPriceAsc.length ); - - // Verify all results are in ascending order. - // The query uses the min price calculated in the product meta lookup table, - // so we can't just check the price property of the response. - result1.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesMinPriceAsc[ idx ] ); - } ); - - const productNamesMaxPriceDesc = [ - 'Sunglasses', - 'Belt', - 'Hoodie', - 'Logo Collection', - 'Hoodie with Logo', - 'Hoodie with Zipper', - 'Hoodie with Pocket', - 'Long Sleeve Tee', - 'V-Neck T-Shirt', - 'Polo', - 'T-Shirt', - 'Beanie', - 'T-Shirt with Logo', - 'Beanie with Logo', - 'Cap', - 'Album', - 'WordPress Pennant', - 'Single', - 'Child Product', - 'Parent Product', - ]; - - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'price', - per_page: productNamesMaxPriceDesc.length - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( productNamesMaxPriceDesc.length ); - - // Verify all results are in descending order. - // The query uses the max price calculated in the product meta lookup table, - // so we can't just check the price property of the response. - result2.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesMaxPriceDesc[ idx ] ); - } ); - } ); - - // This case will remain skipped until orderby include is fixed. - // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. - it( 'include', async () => { - const includeIds = [ - sampleData.groupedProducts[ 0 ].id, - sampleData.simpleProducts[ 3 ].id, - sampleData.hierarchicalProducts.parent.id, - ]; - - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'include', - include: includeIds.join( ',' ), - } ); - expect( result1.statusCode ).toEqual( 200 ); - expect( result1.body ).toHaveLength( includeIds.length ); - - // Verify all results are in proper order. - result1.body.forEach( ( { id }, idx ) => { - expect( id ).toBe( includeIds[ idx ] ); - } ); - - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'include', - include: includeIds.join( ',' ), - } ); - expect( result2.statusCode ).toEqual( 200 ); - expect( result2.body ).toHaveLength( includeIds.length ); - - // Verify all results are in proper order. - result2.body.forEach( ( { id }, idx ) => { - expect( id ).toBe( includeIds[ idx ] ); - } ); - } ); - - it( 'rating (desc)', async () => { - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'rating', - per_page: productNamesByRatingDesc.length, - } ); - expect( result2.statusCode ).toEqual( 200 ); - - // Verify all results are in descending order. - result2.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesByRatingDesc[ idx ] ); - } ); - } ); - - // This case will remain skipped until ratings can be sorted ascending. - // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. - it.skip( 'rating (asc)', async () => { - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'rating', - per_page: productNamesByRatingAsc.length, - } ); - expect( result1.statusCode ).toEqual( 200 ); - - // Verify all results are in ascending order. - result1.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesByRatingAsc[ idx ] ); - } ); - } ); - - it( 'popularity (desc)', async () => { - const result2 = await productsApi.listAll.products( { - order: 'desc', - orderby: 'popularity', - per_page: productNamesByPopularityDesc.length, - } ); - expect( result2.statusCode ).toEqual( 200 ); - - // Verify all results are in descending order. - result2.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesByPopularityDesc[ idx ] ); - } ); - } ); - - // This case will remain skipped until popularity can be sorted ascending. - // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. - it.skip( 'popularity (asc)', async () => { - const result1 = await productsApi.listAll.products( { - order: 'asc', - orderby: 'popularity', - per_page: productNamesByPopularityAsc.length, - } ); - expect( result1.statusCode ).toEqual( 200 ); - - // Verify all results are in ascending order. - result1.body.forEach( ( { name }, idx ) => { - expect( name ).toBe( productNamesByPopularityAsc[ idx ] ); - } ); - } ); - } ); - } ); - } ); - \ No newline at end of file +const { + createSampleData, + deleteSampleData, +} = require( '../../data/product-list' ); +const { productsApi } = require( '../../endpoints/products' ); + +/** + * Tests for the WooCommerce "List all products" API. + * + * @group api + * @group products + * + */ +describe( 'Products API tests: List All Products', () => { + const PRODUCTS_COUNT = 20; + let sampleData; + + beforeAll( async () => { + sampleData = await createSampleData(); + }, 10000 ); + + afterAll( async () => { + await deleteSampleData( sampleData ); + }, 10000 ); + + describe( 'List all products', () => { + it( 'defaults', async () => { + const result = await productsApi.listAll.products(); + expect( result.statusCode ).toEqual( 200 ); + expect( result.headers[ 'x-wp-total' ] ).toEqual( + PRODUCTS_COUNT.toString() + ); + expect( result.headers[ 'x-wp-totalpages' ] ).toEqual( '2' ); + } ); + + it( 'pagination', async () => { + const pageSize = 6; + const page1 = await productsApi.listAll.products( { + per_page: pageSize, + } ); + const page2 = await productsApi.listAll.products( { + per_page: pageSize, + page: 2, + } ); + expect( page1.statusCode ).toEqual( 200 ); + expect( page2.statusCode ).toEqual( 200 ); + + // Verify total page count. + expect( page1.headers[ 'x-wp-total' ] ).toEqual( + PRODUCTS_COUNT.toString() + ); + expect( page1.headers[ 'x-wp-totalpages' ] ).toEqual( '4' ); + + // Verify we get pageSize'd arrays. + expect( Array.isArray( page1.body ) ).toBe( true ); + expect( Array.isArray( page2.body ) ).toBe( true ); + expect( page1.body ).toHaveLength( pageSize ); + expect( page2.body ).toHaveLength( pageSize ); + + // Ensure all of the product IDs are unique (no page overlap). + const allProductIds = page1.body + .concat( page2.body ) + .reduce( ( acc, product ) => { + acc[ product.id ] = 1; + return acc; + }, {} ); + expect( Object.keys( allProductIds ) ).toHaveLength( pageSize * 2 ); + + // Verify that offset takes precedent over page number. + const page2Offset = await productsApi.listAll.products( { + per_page: pageSize, + page: 2, + offset: pageSize + 1, + } ); + // The offset pushes the result set 1 product past the start of page 2. + expect( page2Offset.body ).toEqual( + expect.not.arrayContaining( [ + expect.objectContaining( { id: page2.body[ 0 ].id } ), + ] ) + ); + expect( page2Offset.body[ 0 ].id ).toEqual( page2.body[ 1 ].id ); + + // Verify the last page only has 2 products as we expect. + const lastPage = await productsApi.listAll.products( { + per_page: pageSize, + page: 4, + } ); + expect( Array.isArray( lastPage.body ) ).toBe( true ); + expect( lastPage.body ).toHaveLength( 2 ); + + // Verify a page outside the total page count is empty. + const page6 = await productsApi.listAll.products( { + per_page: pageSize, + page: 6, + } ); + expect( Array.isArray( page6.body ) ).toBe( true ); + expect( page6.body ).toHaveLength( 0 ); + } ); + + it( 'search', async () => { + // Match in the short description. + const result1 = await productsApi.listAll.products( { + search: 'external', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].name ).toBe( 'WordPress Pennant' ); + + // Match in the product name. + const result2 = await productsApi.listAll.products( { + search: 'pocket', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 1 ); + expect( result2.body[ 0 ].name ).toBe( 'Hoodie with Pocket' ); + } ); + + it( 'inclusion / exclusion', async () => { + const allProducts = await productsApi.listAll.products( { + per_page: 20, + } ); + expect( allProducts.statusCode ).toEqual( 200 ); + const allProductIds = allProducts.body.map( + ( product ) => product.id + ); + expect( allProductIds ).toHaveLength( PRODUCTS_COUNT ); + + const productsToFilter = [ + allProductIds[ 2 ], + allProductIds[ 4 ], + allProductIds[ 7 ], + allProductIds[ 13 ], + ]; + + const included = await productsApi.listAll.products( { + per_page: 20, + include: productsToFilter.join( ',' ), + } ); + expect( included.statusCode ).toEqual( 200 ); + expect( included.body ).toHaveLength( productsToFilter.length ); + expect( included.body ).toEqual( + expect.arrayContaining( + productsToFilter.map( ( id ) => + expect.objectContaining( { id } ) + ) + ) + ); + + const excluded = await productsApi.listAll.products( { + per_page: 20, + exclude: productsToFilter.join( ',' ), + } ); + expect( excluded.statusCode ).toEqual( 200 ); + expect( excluded.body ).toHaveLength( + PRODUCTS_COUNT - productsToFilter.length + ); + expect( excluded.body ).toEqual( + expect.not.arrayContaining( + productsToFilter.map( ( id ) => + expect.objectContaining( { id } ) + ) + ) + ); + } ); + + it( 'slug', async () => { + // Match by slug. + const result1 = await productsApi.listAll.products( { + slug: 't-shirt-with-logo', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].slug ).toBe( 't-shirt-with-logo' ); + + // No matches + const result2 = await productsApi.listAll.products( { + slug: 'no-product-with-this-slug', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 0 ); + } ); + + it( 'sku', async () => { + // Match by SKU. + const result1 = await productsApi.listAll.products( { + sku: 'woo-sunglasses', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].sku ).toBe( 'woo-sunglasses' ); + + // No matches + const result2 = await productsApi.listAll.products( { + sku: 'no-product-with-this-sku', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 0 ); + } ); + + it( 'type', async () => { + const result1 = await productsApi.listAll.products( { + type: 'simple', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.headers[ 'x-wp-total' ] ).toEqual( '16' ); + + const result2 = await productsApi.listAll.products( { + type: 'external', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 1 ); + expect( result2.body[ 0 ].name ).toBe( 'WordPress Pennant' ); + + const result3 = await productsApi.listAll.products( { + type: 'variable', + } ); + expect( result3.statusCode ).toEqual( 200 ); + expect( result3.body ).toHaveLength( 2 ); + + const result4 = await productsApi.listAll.products( { + type: 'grouped', + } ); + expect( result4.statusCode ).toEqual( 200 ); + expect( result4.body ).toHaveLength( 1 ); + expect( result4.body[ 0 ].name ).toBe( 'Logo Collection' ); + } ); + + it( 'featured', async () => { + const featured = [ + expect.objectContaining( { name: 'Hoodie with Zipper' } ), + expect.objectContaining( { name: 'Hoodie with Pocket' } ), + expect.objectContaining( { name: 'Sunglasses' } ), + expect.objectContaining( { name: 'Cap' } ), + expect.objectContaining( { name: 'V-Neck T-Shirt' } ), + ]; + + const result1 = await productsApi.listAll.products( { + featured: true, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( featured.length ); + expect( result1.body ).toEqual( + expect.arrayContaining( featured ) + ); + + const result2 = await productsApi.listAll.products( { + featured: false, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toEqual( + expect.not.arrayContaining( featured ) + ); + } ); + + it( 'categories', async () => { + const accessory = [ expect.objectContaining( { name: 'Beanie' } ) ]; + const hoodies = [ + expect.objectContaining( { name: 'Hoodie with Zipper' } ), + expect.objectContaining( { name: 'Hoodie with Pocket' } ), + expect.objectContaining( { name: 'Hoodie with Logo' } ), + expect.objectContaining( { name: 'Hoodie' } ), + ]; + + // Verify that subcategories are included. + const result1 = await productsApi.listAll.products( { + per_page: 20, + category: sampleData.categories.clothing.id, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toEqual( + expect.arrayContaining( accessory ) + ); + expect( result1.body ).toEqual( expect.arrayContaining( hoodies ) ); + + // Verify sibling categories are not. + const result2 = await productsApi.listAll.products( { + category: sampleData.categories.hoodies.id, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toEqual( + expect.not.arrayContaining( accessory ) + ); + expect( result2.body ).toEqual( expect.arrayContaining( hoodies ) ); + } ); + + it( 'on sale', async () => { + const onSale = [ + expect.objectContaining( { name: 'Beanie with Logo' } ), + expect.objectContaining( { name: 'Hoodie with Pocket' } ), + expect.objectContaining( { name: 'Single' } ), + expect.objectContaining( { name: 'Cap' } ), + expect.objectContaining( { name: 'Belt' } ), + expect.objectContaining( { name: 'Beanie' } ), + expect.objectContaining( { name: 'Hoodie' } ), + ]; + + const result1 = await productsApi.listAll.products( { + on_sale: true, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( onSale.length ); + expect( result1.body ).toEqual( expect.arrayContaining( onSale ) ); + + const result2 = await productsApi.listAll.products( { + on_sale: false, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toEqual( + expect.not.arrayContaining( onSale ) + ); + } ); + + it( 'price', async () => { + const result1 = await productsApi.listAll.products( { + min_price: 21, + max_price: 28, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].name ).toBe( 'Long Sleeve Tee' ); + expect( result1.body[ 0 ].price ).toBe( '25' ); + + const result2 = await productsApi.listAll.products( { + max_price: 5, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 1 ); + expect( result2.body[ 0 ].name ).toBe( 'Single' ); + expect( result2.body[ 0 ].price ).toBe( '2' ); + + const result3 = await productsApi.listAll.products( { + min_price: 5, + order: 'asc', + orderby: 'price', + } ); + expect( result3.statusCode ).toEqual( 200 ); + expect( result3.body ).toEqual( + expect.not.arrayContaining( [ + expect.objectContaining( { name: 'Single' } ), + ] ) + ); + } ); + + it( 'before / after', async () => { + const before = [ + expect.objectContaining( { name: 'Album' } ), + expect.objectContaining( { name: 'Single' } ), + expect.objectContaining( { name: 'T-Shirt with Logo' } ), + expect.objectContaining( { name: 'Beanie with Logo' } ), + ]; + const after = [ + expect.objectContaining( { name: 'Hoodie' } ), + expect.objectContaining( { name: 'V-Neck T-Shirt' } ), + expect.objectContaining( { name: 'Parent Product' } ), + expect.objectContaining( { name: 'Child Product' } ), + ]; + + const result1 = await productsApi.listAll.products( { + before: '2021-09-05T15:50:19', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( before.length ); + expect( result1.body ).toEqual( expect.arrayContaining( before ) ); + + const result2 = await productsApi.listAll.products( { + after: '2021-09-18T15:50:18', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toEqual( + expect.not.arrayContaining( before ) + ); + expect( result2.body ).toHaveLength( after.length ); + expect( result2.body ).toEqual( expect.arrayContaining( after ) ); + } ); + + it( 'attributes', async () => { + const red = sampleData.attributes.colors.find( + ( term ) => term.name === 'Red' + ); + + const redProducts = [ + expect.objectContaining( { name: 'V-Neck T-Shirt' } ), + expect.objectContaining( { name: 'Hoodie' } ), + expect.objectContaining( { name: 'Beanie' } ), + expect.objectContaining( { name: 'Beanie with Logo' } ), + ]; + + const result = await productsApi.listAll.products( { + attribute: 'pa_color', + attribute_term: red.id, + } ); + + expect( result.statusCode ).toEqual( 200 ); + expect( result.body ).toHaveLength( redProducts.length ); + expect( result.body ).toEqual( + expect.arrayContaining( redProducts ) + ); + } ); + + it( 'status', async () => { + const result1 = await productsApi.listAll.products( { + status: 'pending', + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].name ).toBe( 'Polo' ); + + const result2 = await productsApi.listAll.products( { + status: 'draft', + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( 0 ); + } ); + + it( 'shipping class', async () => { + const result = await productsApi.listAll.products( { + shipping_class: sampleData.shippingClasses.freight.id, + } ); + expect( result.statusCode ).toEqual( 200 ); + expect( result.body ).toHaveLength( 1 ); + expect( result.body[ 0 ].name ).toBe( 'Long Sleeve Tee' ); + } ); + + it( 'tax class', async () => { + const result = await productsApi.listAll.products( { + tax_class: 'reduced-rate', + } ); + expect( result.statusCode ).toEqual( 200 ); + expect( result.body ).toHaveLength( 1 ); + expect( result.body[ 0 ].name ).toBe( 'Sunglasses' ); + } ); + + it( 'stock status', async () => { + const result = await productsApi.listAll.products( { + stock_status: 'onbackorder', + } ); + expect( result.statusCode ).toEqual( 200 ); + expect( result.body ).toHaveLength( 1 ); + expect( result.body[ 0 ].name ).toBe( 'T-Shirt' ); + } ); + + it( 'tags', async () => { + const coolProducts = [ + expect.objectContaining( { name: 'Sunglasses' } ), + expect.objectContaining( { name: 'Hoodie with Pocket' } ), + expect.objectContaining( { name: 'Beanie' } ), + ]; + + const result = await productsApi.listAll.products( { + tag: sampleData.tags.cool.id, + } ); + + expect( result.statusCode ).toEqual( 200 ); + expect( result.body ).toHaveLength( coolProducts.length ); + expect( result.body ).toEqual( + expect.arrayContaining( coolProducts ) + ); + } ); + + it( 'parent', async () => { + const result1 = await productsApi.listAll.products( { + parent: sampleData.hierarchicalProducts.parent.id, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( 1 ); + expect( result1.body[ 0 ].name ).toBe( 'Child Product' ); + + const result2 = await productsApi.listAll.products( { + parent_exclude: sampleData.hierarchicalProducts.parent.id, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toEqual( + expect.not.arrayContaining( [ + expect.objectContaining( { name: 'Child Product' } ), + ] ) + ); + } ); + + describe( 'orderby', () => { + const productNamesAsc = [ + 'Album', + 'Beanie', + 'Beanie with Logo', + 'Belt', + 'Cap', + 'Child Product', + 'Hoodie', + 'Hoodie with Logo', + 'Hoodie with Pocket', + 'Hoodie with Zipper', + 'Logo Collection', + 'Long Sleeve Tee', + 'Parent Product', + 'Polo', + 'Single', + 'Sunglasses', + 'T-Shirt', + 'T-Shirt with Logo', + 'V-Neck T-Shirt', + 'WordPress Pennant', + ]; + const productNamesDesc = [ ...productNamesAsc ].reverse(); + const productNamesByRatingAsc = [ 'Sunglasses', 'Cap', 'T-Shirt' ]; + const productNamesByRatingDesc = [ + ...productNamesByRatingAsc, + ].reverse(); + const productNamesByPopularityDesc = [ + 'Beanie with Logo', + 'Single', + 'T-Shirt', + ]; + const productNamesByPopularityAsc = [ + ...productNamesByPopularityDesc, + ].reverse(); + + it( 'default', async () => { + // Default = date desc. + const result = await productsApi.listAll.products(); + expect( result.statusCode ).toEqual( 200 ); + + // Verify all dates are in descending order. + let lastDate = Date.now(); + result.body.forEach( ( { date_created_gmt } ) => { + const created = Date.parse( date_created_gmt + '.000Z' ); + expect( lastDate ).toBeGreaterThan( created ); + lastDate = created; + } ); + } ); + + it( 'date', async () => { + const result = await productsApi.listAll.products( { + order: 'asc', + orderby: 'date', + } ); + expect( result.statusCode ).toEqual( 200 ); + + // Verify all dates are in ascending order. + let lastDate = 0; + result.body.forEach( ( { date_created_gmt } ) => { + const created = Date.parse( date_created_gmt + '.000Z' ); + expect( created ).toBeGreaterThan( lastDate ); + lastDate = created; + } ); + } ); + + it( 'id', async () => { + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'id', + } ); + expect( result1.statusCode ).toEqual( 200 ); + + // Verify all results are in ascending order. + let lastId = 0; + result1.body.forEach( ( { id } ) => { + expect( id ).toBeGreaterThan( lastId ); + lastId = id; + } ); + + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'id', + } ); + expect( result2.statusCode ).toEqual( 200 ); + + // Verify all results are in descending order. + lastId = Number.MAX_SAFE_INTEGER; + result2.body.forEach( ( { id } ) => { + expect( lastId ).toBeGreaterThan( id ); + lastId = id; + } ); + } ); + + it( 'title', async () => { + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'title', + per_page: productNamesAsc.length, + } ); + expect( result1.statusCode ).toEqual( 200 ); + + // Verify all results are in ascending order. + result1.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesAsc[ idx ] ); + } ); + + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'title', + per_page: productNamesDesc.length, + } ); + expect( result2.statusCode ).toEqual( 200 ); + + // Verify all results are in descending order. + result2.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesDesc[ idx ] ); + } ); + } ); + + it( 'slug', async () => { + const productNamesBySlugAsc = [ + 'Polo', // The Polo isn't published so it has an empty slug. + ...productNamesAsc.filter( ( p ) => p !== 'Polo' ), + ]; + const productNamesBySlugDesc = [ + ...productNamesBySlugAsc, + ].reverse(); + + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'slug', + per_page: productNamesBySlugAsc.length, + } ); + expect( result1.statusCode ).toEqual( 200 ); + + // Verify all results are in ascending order. + result1.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesBySlugAsc[ idx ] ); + } ); + + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'slug', + per_page: productNamesBySlugDesc.length, + } ); + expect( result2.statusCode ).toEqual( 200 ); + + // Verify all results are in descending order. + result2.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesBySlugDesc[ idx ] ); + } ); + } ); + + it( 'price', async () => { + const productNamesMinPriceAsc = [ + 'Parent Product', + 'Child Product', + 'Single', + 'WordPress Pennant', + 'Album', + 'V-Neck T-Shirt', + 'Cap', + 'Beanie with Logo', + 'T-Shirt with Logo', + 'Beanie', + 'T-Shirt', + 'Logo Collection', + 'Polo', + 'Long Sleeve Tee', + 'Hoodie with Pocket', + 'Hoodie', + 'Hoodie with Zipper', + 'Hoodie with Logo', + 'Belt', + 'Sunglasses', + ]; + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'price', + per_page: productNamesMinPriceAsc.length, + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( + productNamesMinPriceAsc.length + ); + + // Verify all results are in ascending order. + // The query uses the min price calculated in the product meta lookup table, + // so we can't just check the price property of the response. + result1.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesMinPriceAsc[ idx ] ); + } ); + + const productNamesMaxPriceDesc = [ + 'Sunglasses', + 'Belt', + 'Hoodie', + 'Logo Collection', + 'Hoodie with Logo', + 'Hoodie with Zipper', + 'Hoodie with Pocket', + 'Long Sleeve Tee', + 'V-Neck T-Shirt', + 'Polo', + 'T-Shirt', + 'Beanie', + 'T-Shirt with Logo', + 'Beanie with Logo', + 'Cap', + 'Album', + 'WordPress Pennant', + 'Single', + 'Child Product', + 'Parent Product', + ]; + + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'price', + per_page: productNamesMaxPriceDesc.length, + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( + productNamesMaxPriceDesc.length + ); + + // Verify all results are in descending order. + // The query uses the max price calculated in the product meta lookup table, + // so we can't just check the price property of the response. + result2.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesMaxPriceDesc[ idx ] ); + } ); + } ); + + // This case will remain skipped until orderby include is fixed. + // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. + it( 'include', async () => { + const includeIds = [ + sampleData.groupedProducts[ 0 ].id, + sampleData.simpleProducts[ 3 ].id, + sampleData.hierarchicalProducts.parent.id, + ]; + + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'include', + include: includeIds.join( ',' ), + } ); + expect( result1.statusCode ).toEqual( 200 ); + expect( result1.body ).toHaveLength( includeIds.length ); + + // Verify all results are in proper order. + result1.body.forEach( ( { id }, idx ) => { + expect( id ).toBe( includeIds[ idx ] ); + } ); + + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'include', + include: includeIds.join( ',' ), + } ); + expect( result2.statusCode ).toEqual( 200 ); + expect( result2.body ).toHaveLength( includeIds.length ); + + // Verify all results are in proper order. + result2.body.forEach( ( { id }, idx ) => { + expect( id ).toBe( includeIds[ idx ] ); + } ); + } ); + + it( 'rating (desc)', async () => { + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'rating', + per_page: productNamesByRatingDesc.length, + } ); + expect( result2.statusCode ).toEqual( 200 ); + + // Verify all results are in descending order. + result2.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesByRatingDesc[ idx ] ); + } ); + } ); + + // This case will remain skipped until ratings can be sorted ascending. + // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. + it.skip( 'rating (asc)', async () => { + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'rating', + per_page: productNamesByRatingAsc.length, + } ); + expect( result1.statusCode ).toEqual( 200 ); + + // Verify all results are in ascending order. + result1.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesByRatingAsc[ idx ] ); + } ); + } ); + + it( 'popularity (desc)', async () => { + const result2 = await productsApi.listAll.products( { + order: 'desc', + orderby: 'popularity', + per_page: productNamesByPopularityDesc.length, + } ); + expect( result2.statusCode ).toEqual( 200 ); + + // Verify all results are in descending order. + result2.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesByPopularityDesc[ idx ] ); + } ); + } ); + + // This case will remain skipped until popularity can be sorted ascending. + // See: https://github.com/woocommerce/woocommerce/issues/30354#issuecomment-925955099. + it.skip( 'popularity (asc)', async () => { + const result1 = await productsApi.listAll.products( { + order: 'asc', + orderby: 'popularity', + per_page: productNamesByPopularityAsc.length, + } ); + expect( result1.statusCode ).toEqual( 200 ); + + // Verify all results are in ascending order. + result1.body.forEach( ( { name }, idx ) => { + expect( name ).toBe( productNamesByPopularityAsc[ idx ] ); + } ); + } ); + } ); + } ); +} ); diff --git a/packages/js/api-core-tests/utils/api-collection/build-collection.js b/packages/js/api-core-tests/utils/api-collection/build-collection.js index 32f5af57318..c4cb6dc4ba9 100644 --- a/packages/js/api-core-tests/utils/api-collection/build-collection.js +++ b/packages/js/api-core-tests/utils/api-collection/build-collection.js @@ -1,12 +1,7 @@ -const fs = require('fs'); -const { Collection, ItemGroup, Item } = require('postman-collection'); -require('dotenv').config(); -const { - BASE_URL, - USER_KEY, - USER_SECRET, - USE_INDEX_PERMALINKS -} = process.env; +const fs = require( 'fs' ); +const { Collection, ItemGroup, Item } = require( 'postman-collection' ); +require( 'dotenv' ).config(); +const { BASE_URL, USER_KEY, USER_SECRET, USE_INDEX_PERMALINKS } = process.env; /** * Build a Postman collection using the API testing objects. @@ -17,10 +12,10 @@ const { // Set up our empty collection if ( typeof USER_KEY === 'undefined' ) { - console.log('No USER_KEY was defined.'); + console.log( 'No USER_KEY was defined.' ); } if ( typeof USER_SECRET === 'undefined' ) { - console.log('No USER_SECRET was defined.'); + console.log( 'No USER_SECRET was defined.' ); } const postmanCollection = new Collection( { @@ -30,74 +25,72 @@ const postmanCollection = new Collection( { { key: 'username', value: USER_KEY, - type: 'string' + type: 'string', }, { key: 'password', value: USER_SECRET, - type: 'string' + type: 'string', }, - ] + ], }, info: { - name: 'WooCommerce API - v3' + name: 'WooCommerce API - v3', }, } ); // Get the API url if ( typeof BASE_URL === 'undefined' ) { - console.log('No BASE_URL was defined.'); + console.log( 'No BASE_URL was defined.' ); } // Update the API path if the `USE_INDEX_PERMALINKS` flag is set -const useIndexPermalinks = ( USE_INDEX_PERMALINKS === 'true' ); -let apiPath = `${BASE_URL}/?rest_route=/wc/v3`; +const useIndexPermalinks = USE_INDEX_PERMALINKS === 'true'; +let apiPath = `${ BASE_URL }/?rest_route=/wc/v3`; if ( useIndexPermalinks ) { - apiPath = `${BASE_URL}/wp-json/wc/v3`; + apiPath = `${ BASE_URL }/wp-json/wc/v3`; } // Set this here for use in `request.js` -global.API_PATH = `${apiPath}/`; +global.API_PATH = `${ apiPath }/`; // Add the API path has a collection variable -postmanCollection.variables.add({ +postmanCollection.variables.add( { id: 'apiBaseUrl', value: apiPath, type: 'string', -}); +} ); // Get the API request data -const resources = require('../../endpoints'); +const resources = require( '../../endpoints' ); resourceKeys = Object.keys( resources ); // Add the requests to folders in the collection for ( const key in resources ) { - const folder = new ItemGroup( { - name: resources[key].name, - items: [] + name: resources[ key ].name, + items: [], } ); - for ( const endpoint in resources[key] ) { - - let api = resources[key][endpoint]; + for ( const endpoint in resources[ key ] ) { + const api = resources[ key ][ endpoint ]; // If there is no name defined, continue - if ( !api.name ) { + if ( ! api.name ) { continue; } const request = new Item( { name: api.name, request: { - url: `{{apiBaseUrl}}/${api.path}`, - method: api.method, - body: { - mode: 'raw', - raw: JSON.stringify( api.payload ), - options: { - raw: { language: 'json' } - } - }, + url: `{{apiBaseUrl}}/${ api.path }`, + method: api.method, + body: { + mode: 'raw', + raw: JSON.stringify( api.payload ), + options: { + raw: { language: 'json' }, + }, + }, }, } ); folder.items.add( request ); @@ -110,9 +103,13 @@ for ( const key in resources ) { const collectionJSON = postmanCollection.toJSON(); // Create a colleciton.json file. It can be imported to postman -fs.writeFile('./collection.json', JSON.stringify( collectionJSON ), ( err ) => { - if ( err ) { - console.log( err ); +fs.writeFile( + './collection.json', + JSON.stringify( collectionJSON ), + ( err ) => { + if ( err ) { + console.log( err ); + } + console.log( 'File saved!' ); } - console.log('File saved!'); -}); +); diff --git a/packages/js/api-core-tests/utils/request.js b/packages/js/api-core-tests/utils/request.js index 6dbbdd104d6..013f0cb35a2 100644 --- a/packages/js/api-core-tests/utils/request.js +++ b/packages/js/api-core-tests/utils/request.js @@ -1,13 +1,13 @@ -require('dotenv').config(); +require( 'dotenv' ).config(); const { USER_KEY, USER_SECRET } = process.env; -const request = require('supertest')( API_PATH ); +const request = require( 'supertest' )( API_PATH ); /** * Make a GET request. * * @param {string} requestPath The path of the request. - * @param {object} queryString Optional. An object of one or more `key: value` query string parameters. - * @returns {Response} + * @param {Object} queryString Optional. An object of one or more `key: value` query string parameters. + * @return {Response} */ const getRequest = async ( requestPath, queryString = {} ) => { const response = await request @@ -22,8 +22,8 @@ const getRequest = async ( requestPath, queryString = {} ) => { * Make a POST request. * * @param {string} requestPath The path of the request. - * @param {object} requestBody The body of the request to submit. - * @returns {Response} + * @param {Object} requestBody The body of the request to submit. + * @return {Response} */ const postRequest = async ( requestPath, requestBody ) => { const response = await request @@ -38,8 +38,8 @@ const postRequest = async ( requestPath, requestBody ) => { * Make a PUT request. * * @param {string} requestPath The path of the request. - * @param {object} requestBody The body of the request to submit. - * @returns {Request} + * @param {Object} requestBody The body of the request to submit. + * @return {Request} */ const putRequest = async ( requestPath, requestBody ) => { const response = await request @@ -53,12 +53,12 @@ const putRequest = async ( requestPath, requestBody ) => { /** * Make a DELETE request, optionally deleting the resource permanently. * - * @param {string} requestPath The path of the request. + * @param {string} requestPath The path of the request. * @param {boolean} deletePermanently Flag to permanently delete the resource. - * @returns {Response} + * @return {Response} */ const deleteRequest = async ( requestPath, deletePermanently = false ) => { - const requestBody = deletePermanently ? { force: true } : {} + const requestBody = deletePermanently ? { force: true } : {}; const response = await request .delete( requestPath ) .set( 'Accept', 'application/json' ) @@ -67,4 +67,4 @@ const deleteRequest = async ( requestPath, deletePermanently = false ) => { return response; }; -module.exports = { getRequest, postRequest, putRequest, deleteRequest } +module.exports = { getRequest, postRequest, putRequest, deleteRequest }; diff --git a/packages/js/e2e-builds/.eslintrc.js b/packages/js/e2e-builds/.eslintrc.js index e4d185d8cd1..b84ca0f93ff 100644 --- a/packages/js/e2e-builds/.eslintrc.js +++ b/packages/js/e2e-builds/.eslintrc.js @@ -1,4 +1,3 @@ module.exports = { extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], - root: true, }; diff --git a/packages/js/e2e-builds/changelog/.gitkeep b/packages/js/e2e-builds/changelog/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/js/e2e-builds/changelog/fix-standardize-lint-e2e b/packages/js/e2e-builds/changelog/fix-standardize-lint-e2e new file mode 100644 index 00000000000..72f3afe233e --- /dev/null +++ b/packages/js/e2e-builds/changelog/fix-standardize-lint-e2e @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize linting: Ensure e2e packages are lintable diff --git a/packages/js/e2e-builds/package.json b/packages/js/e2e-builds/package.json index bc9ea6362e4..bf4f4178c12 100644 --- a/packages/js/e2e-builds/package.json +++ b/packages/js/e2e-builds/package.json @@ -1,26 +1,37 @@ { - "name": "@woocommerce/e2e-builds", - "version": "0.1.0", - "description": "Utility build files for e2e packages", - "private": "true", - "main": "build.js", - "bin": { - "e2e-builds": "./build.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/woocommerce/woocommerce.git" - }, - "license": "GPL-3.0+", - "bugs": { - "url": "https://github.com/woocommerce/woocommerce/issues" - }, - "homepage": "https://github.com/woocommerce/woocommerce#readme", - "devDependencies": { - "@babel/core": "7.12.9", - "chalk": "^4.1.2", - "glob": "^7.2.0", - "mkdirp": "^1.0.4", - "lodash": "^4.17.21" + "name": "@woocommerce/e2e-builds", + "version": "0.1.0", + "description": "Utility build files for e2e packages", + "private": "true", + "main": "build.js", + "bin": { + "e2e-builds": "./build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/woocommerce/woocommerce.git" + }, + "license": "GPL-3.0+", + "bugs": { + "url": "https://github.com/woocommerce/woocommerce/issues" + }, + "homepage": "https://github.com/woocommerce/woocommerce#readme", + "scripts": { + "lint": "eslint build.js", + "lint:fix": "eslint build.js --fix" + }, + "devDependencies": { + "@babel/core": "7.12.9", + "@woocommerce/eslint-plugin": "workspace:*", + "chalk": "^4.1.2", + "eslint": "^8.12.0", + "glob": "^7.2.0", + "mkdirp": "^1.0.4", + "lodash": "^4.17.21" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "pnpm lint:fix" + ] } } diff --git a/packages/js/e2e-core-tests/.eslintrc.js b/packages/js/e2e-core-tests/.eslintrc.js new file mode 100644 index 00000000000..b84ca0f93ff --- /dev/null +++ b/packages/js/e2e-core-tests/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], +}; diff --git a/packages/js/e2e-core-tests/changelog/fix-standardize-lint-e2e b/packages/js/e2e-core-tests/changelog/fix-standardize-lint-e2e new file mode 100644 index 00000000000..72f3afe233e --- /dev/null +++ b/packages/js/e2e-core-tests/changelog/fix-standardize-lint-e2e @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize linting: Ensure e2e packages are lintable diff --git a/packages/js/e2e-core-tests/package.json b/packages/js/e2e-core-tests/package.json index 10ddf9fa9a1..35544207635 100644 --- a/packages/js/e2e-core-tests/package.json +++ b/packages/js/e2e-core-tests/package.json @@ -24,18 +24,20 @@ "config": "3.3.3" }, "devDependencies": { - "@babel/cli": "7.12.8", - "@babel/core": "7.12.9", - "@babel/plugin-proposal-async-generator-functions": "^7.16.4", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-transform-react-jsx": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/polyfill": "7.12.1", - "@babel/preset-env": "7.12.7", - "@woocommerce/e2e-builds": "workspace:*", - "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", - "@wordpress/babel-preset-default": "3.0.2", - "@wordpress/browserslist-config": "^4.1.0" + "@babel/cli": "7.12.8", + "@babel/core": "7.12.9", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/polyfill": "7.12.1", + "@babel/preset-env": "7.12.7", + "@woocommerce/e2e-builds": "workspace:*", + "@woocommerce/eslint-plugin": "workspace:*", + "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", + "@wordpress/babel-preset-default": "3.0.2", + "@wordpress/browserslist-config": "^4.1.0", + "eslint": "^8.12.0" }, "peerDependencies": { "@woocommerce/api": "^0.2.0", @@ -46,14 +48,16 @@ }, "scripts": { "postinstall": "composer install", - "prepack": "pnpm run build", + "prepare": "pnpm run build", "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", - "build": "./bin/build.sh && pnpm run clean && pnpm run compile" + "build": "./bin/build.sh && pnpm run clean && pnpm run compile", + "lint": "eslint src --ext=js,ts,tsx", + "lint:fix": "eslint src --ext=js,ts,tsx --fix" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/e2e-core-tests/src/specs/activate-and-setup/activate.test.js b/packages/js/e2e-core-tests/src/specs/activate-and-setup/activate.test.js index da8e6af9a89..8d633c218a8 100644 --- a/packages/js/e2e-core-tests/src/specs/activate-and-setup/activate.test.js +++ b/packages/js/e2e-core-tests/src/specs/activate-and-setup/activate.test.js @@ -6,35 +6,35 @@ const { merchant } = require( '@woocommerce/e2e-utils' ); /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); import deprecated from '@wordpress/deprecated'; const runActivationTest = () => { - describe('Store owner can login and make sure WooCommerce is activated', () => { - beforeAll(async () => { + describe( 'Store owner can login and make sure WooCommerce is activated', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can make sure WooCommerce is activated. If not, activate it', async () => { + it( 'can make sure WooCommerce is activated. If not, activate it', async () => { deprecated( 'runActivationTest', { - alternative: '@woocommerce/admin-e2e-tests `testAdminBasicSetup()`', - }); + alternative: + '@woocommerce/admin-e2e-tests `testAdminBasicSetup()`', + } ); const slug = 'woocommerce'; await merchant.openPlugins(); - const disableLink = await page.$(`tr[data-slug="${slug}"] .deactivate a`); - if (disableLink) { + const disableLink = await page.$( + `tr[data-slug="${ slug }"] .deactivate a` + ); + if ( disableLink ) { return; } - await page.click(`tr[data-slug="${slug}"] .activate a`); - await page.waitForSelector(`tr[data-slug="${slug}"] .deactivate a`); - }); - - }); + await page.click( `tr[data-slug="${ slug }"] .activate a` ); + await page.waitForSelector( + `tr[data-slug="${ slug }"] .deactivate a` + ); + } ); + } ); }; module.exports = runActivationTest; diff --git a/packages/js/e2e-core-tests/src/specs/activate-and-setup/onboarding-tasklist.test.js b/packages/js/e2e-core-tests/src/specs/activate-and-setup/onboarding-tasklist.test.js index a54fabc13c7..c9b741934a3 100644 --- a/packages/js/e2e-core-tests/src/specs/activate-and-setup/onboarding-tasklist.test.js +++ b/packages/js/e2e-core-tests/src/specs/activate-and-setup/onboarding-tasklist.test.js @@ -14,84 +14,91 @@ const { */ const config = require( 'config' ); import deprecated from '@wordpress/deprecated'; -const { - it, - describe, -} = require( '@jest/globals' ); +const { it, describe } = require( '@jest/globals' ); const shippingZoneNameUS = config.get( 'addresses.customer.shipping.country' ); const runOnboardingFlowTest = () => { - describe('Store owner can go through store Onboarding', () => { - beforeAll(async () => { + describe( 'Store owner can go through store Onboarding', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); if ( IS_RETEST_MODE ) { - it('can reset onboarding to default settings', async () => { + it( 'can reset onboarding to default settings', async () => { await withRestApi.resetOnboarding(); - }); + } ); - it('can reset shipping zones to default settings', async () => { + it( 'can reset shipping zones to default settings', async () => { await withRestApi.deleteAllShippingZones(); - }); + } ); - it('can reset shipping classes', async () => { + it( 'can reset shipping classes', async () => { await withRestApi.deleteAllShippingClasses(); - }) + } ); - it('can reset to default settings', async () => { - await withRestApi.resetSettingsGroupToDefault('general'); - await withRestApi.resetSettingsGroupToDefault('products'); - await withRestApi.resetSettingsGroupToDefault('tax'); - }); + it( 'can reset to default settings', async () => { + await withRestApi.resetSettingsGroupToDefault( 'general' ); + await withRestApi.resetSettingsGroupToDefault( 'products' ); + await withRestApi.resetSettingsGroupToDefault( 'tax' ); + } ); } - it('can start and complete onboarding when visiting the site for the first time.', async () => { + it( 'can start and complete onboarding when visiting the site for the first time.', async () => { deprecated( 'runOnboardingFlowTest', { - alternative: '@woocommerce/admin-e2e-tests `testAdminOnboardingWizard()`', - }); + alternative: + '@woocommerce/admin-e2e-tests `testAdminOnboardingWizard()`', + } ); await completeOnboardingWizard(); - }); - }); + } ); + } ); }; const runTaskListTest = () => { - describe('Store owner can go through setup Task List', () => { - beforeAll(async () => { + describe( 'Store owner can go through setup Task List', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can setup shipping', async () => { + it( 'can setup shipping', async () => { deprecated( 'runTaskListTest', { - alternative: '@woocommerce/admin-e2e-tests `testAdminHomescreenTasklist()`', - }); - await page.evaluate(() => { - document.querySelector('.woocommerce-list__item-title').scrollIntoView(); - }); + alternative: + '@woocommerce/admin-e2e-tests `testAdminHomescreenTasklist()`', + } ); + await page.evaluate( () => { + document + .querySelector( '.woocommerce-list__item-title' ) + .scrollIntoView(); + } ); // Query for all tasks on the list - const taskListItems = await page.$$('.woocommerce-list__item-title'); - expect(taskListItems.length).toBeInRange( 5, 6 ); + const taskListItems = await page.$$( + '.woocommerce-list__item-title' + ); + expect( taskListItems.length ).toBeInRange( 5, 6 ); // Work around for https://github.com/woocommerce/woocommerce-admin/issues/6761 if ( taskListItems.length == 6 ) { // Click on "Set up shipping" task to move to the next step - const [ setupTaskListItem ] = await page.$x( '//div[contains(text(),"Set up shipping")]' ); + const [ setupTaskListItem ] = await page.$x( + '//div[contains(text(),"Set up shipping")]' + ); await setupTaskListItem.click(); // Wait for "Proceed" button to become active - await page.waitForSelector('button.is-primary:not(:disabled)'); - await page.waitFor(3000); + await page.waitForSelector( + 'button.is-primary:not(:disabled)' + ); + await page.waitFor( 3000 ); // Click on "Proceed" button to save shipping settings - await page.click('button.is-primary'); - await page.waitFor(3000); + await page.click( 'button.is-primary' ); + await page.waitFor( 3000 ); } else { await merchant.openNewShipping(); - await addShippingZoneAndMethod(shippingZoneNameUS); + await addShippingZoneAndMethod( shippingZoneNameUS ); } - }); - }); + } ); + } ); }; module.exports = { diff --git a/packages/js/e2e-core-tests/src/specs/activate-and-setup/setup.test.js b/packages/js/e2e-core-tests/src/specs/activate-and-setup/setup.test.js index a24a5b4aef2..cc42cd17519 100644 --- a/packages/js/e2e-core-tests/src/specs/activate-and-setup/setup.test.js +++ b/packages/js/e2e-core-tests/src/specs/activate-and-setup/setup.test.js @@ -2,10 +2,7 @@ * External dependencies */ const { HTTPClientFactory } = require( '@woocommerce/api' ); -const { - it, - describe, -} = require( '@jest/globals' ); +const { it, describe } = require( '@jest/globals' ); import deprecated from '@wordpress/deprecated'; /** @@ -17,64 +14,85 @@ const { setCheckbox, settingsPageSaveChanges, verifyCheckboxIsSet, - verifyValueOfInputField + verifyValueOfInputField, } = require( '@woocommerce/e2e-utils' ); const { getTestConfig, - waitAndClick + waitAndClick, } = require( '@woocommerce/e2e-environment' ); const runInitialStoreSettingsTest = () => { - describe('Store owner can finish initial store setup', () => { - beforeAll(async () => { + describe( 'Store owner can finish initial store setup', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can enable tax rates and calculations', async () => { + it( 'can enable tax rates and calculations', async () => { deprecated( 'runInitialStoreSettingsTest', { - alternative: '@woocommerce/admin-e2e-tests `testAdminBasicSetup()`', - }); + alternative: + '@woocommerce/admin-e2e-tests `testAdminBasicSetup()`', + } ); // Go to general settings page - await merchant.openSettings('general'); + await merchant.openSettings( 'general' ); // Make sure the general tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'General'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'General', + } ); // Enable tax rates and calculations - await setCheckbox('#woocommerce_calc_taxes'); + await setCheckbox( '#woocommerce_calc_taxes' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - verifyCheckboxIsSet('#woocommerce_calc_taxes'), - ]); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + verifyCheckboxIsSet( '#woocommerce_calc_taxes' ), + ] ); + } ); - it('can configure permalink settings', async () => { + it( 'can configure permalink settings', async () => { // Go to Permalink Settings page await merchant.openPermalinkSettings(); // Select "Post name" option in common settings section - await page.click('input[value="/%postname%/"]', {text: ' Post name'}); + await page.click( 'input[value="/%postname%/"]', { + text: ' Post name', + } ); // Select "Custom base" in product permalinks section await waitAndClick( page, '#woocommerce_custom_selection' ); // Fill custom base slug to use - await expect(page).toFill('#woocommerce_permalink_structure', '/product/'); + await expect( page ).toFill( + '#woocommerce_permalink_structure', + '/product/' + ); await permalinkSettingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#setting-error-settings_updated', {text: 'Permalink structure updated.'}), - verifyValueOfInputField('#permalink_structure', '/%postname%/'), - verifyValueOfInputField('#woocommerce_permalink_structure', '/product/'), - ]); - }); + await Promise.all( [ + expect( page ).toMatchElement( + '#setting-error-settings_updated', + { + text: 'Permalink structure updated.', + } + ), + verifyValueOfInputField( + '#permalink_structure', + '/%postname%/' + ), + verifyValueOfInputField( + '#woocommerce_permalink_structure', + '/product/' + ), + ] ); + } ); it( 'can use api with pretty permalinks', async () => { const testConfig = getTestConfig(); @@ -86,8 +104,8 @@ const runInitialStoreSettingsTest = () => { const response = await client.get( '/wc/v3/products' ); expect( response.status ).toBe( 200 ); - }); - }); + } ); + } ); }; module.exports = runInitialStoreSettingsTest; diff --git a/packages/js/e2e-core-tests/src/specs/api/variable-product.test.js b/packages/js/e2e-core-tests/src/specs/api/variable-product.test.js index 3fcea7a8792..a3c6a36f8c7 100644 --- a/packages/js/e2e-core-tests/src/specs/api/variable-product.test.js +++ b/packages/js/e2e-core-tests/src/specs/api/variable-product.test.js @@ -2,59 +2,64 @@ /** * Internal dependencies */ -const { HTTPClientFactory, VariableProduct, ProductVariation } = require( '@woocommerce/api' ); +const { + HTTPClientFactory, + VariableProduct, + ProductVariation, +} = require( '@woocommerce/api' ); /** * External dependencies */ const config = require( 'config' ); -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); /** * Create a variable product and retrieve via the API. */ const runVariableProductAPITest = () => { - describe('REST API > Variable Product', () => { + describe( 'REST API > Variable Product', () => { let client; let defaultVariableProduct; let defaultVariations; let baseVariableProduct; let product; - let variations = []; + const variations = []; let productRepository; let variationRepository; - beforeAll(async () => { - defaultVariableProduct = config.get('products.variable'); - defaultVariations = config.get('products.variations'); - const admin = config.get('users.admin'); - const url = config.get('url'); + beforeAll( async () => { + defaultVariableProduct = config.get( 'products.variable' ); + defaultVariations = config.get( 'products.variations' ); + const admin = config.get( 'users.admin' ); + const url = config.get( 'url' ); - client = HTTPClientFactory.build(url) - .withBasicAuth(admin.username, admin.password) + client = HTTPClientFactory.build( url ) + .withBasicAuth( admin.username, admin.password ) .withIndexPermalinks() .create(); - }); + } ); - it('can create a variable product', async () => { - productRepository = VariableProduct.restRepository(client); + it( 'can create a variable product', async () => { + productRepository = VariableProduct.restRepository( client ); // Check properties of product in the create product response. - product = await productRepository.create(defaultVariableProduct); - expect(product).toEqual(expect.objectContaining(defaultVariableProduct)); - }); + product = await productRepository.create( defaultVariableProduct ); + expect( product ).toEqual( + expect.objectContaining( defaultVariableProduct ) + ); + } ); - it('can add variations', async () => { - variationRepository = ProductVariation.restRepository(client); - for (let v = 0; v < defaultVariations.length; v++) { - const variation = await variationRepository.create(product.id, defaultVariations[v]); + it( 'can add variations', async () => { + variationRepository = ProductVariation.restRepository( client ); + for ( let v = 0; v < defaultVariations.length; v++ ) { + const variation = await variationRepository.create( + product.id, + defaultVariations[ v ] + ); // Test that variation id is a number. - expect(variation.id).toBeGreaterThan(0); - variations.push(variation.id); + expect( variation.id ).toBeGreaterThan( 0 ); + variations.push( variation.id ); } baseVariableProduct = { @@ -62,31 +67,36 @@ const runVariableProductAPITest = () => { ...defaultVariableProduct, variations, }; - }); + } ); - it('can retrieve a transformed variable product', async () => { + it( 'can retrieve a transformed variable product', async () => { // Read product via the repository. - const transformed = await productRepository.read(product.id); - expect(transformed).toEqual(expect.objectContaining(baseVariableProduct)); - }); + const transformed = await productRepository.read( product.id ); + expect( transformed ).toEqual( + expect.objectContaining( baseVariableProduct ) + ); + } ); - it('can retrieve transformed product variations', async () => { + it( 'can retrieve transformed product variations', async () => { // Read variations via the repository. - const transformed = await variationRepository.list(product.id); - expect(transformed).toHaveLength(defaultVariations.length); - }); + const transformed = await variationRepository.list( product.id ); + expect( transformed ).toHaveLength( defaultVariations.length ); + } ); - it('can delete a variation', async () => { + it( 'can delete a variation', async () => { const variationId = baseVariableProduct.variations.pop(); - const status = variationRepository.delete(product.id, variationId); - expect(status).toBeTruthy(); - }); + const status = variationRepository.delete( + product.id, + variationId + ); + expect( status ).toBeTruthy(); + } ); - it('can delete a variable product', async () => { - const status = productRepository.delete(product.id); - expect(status).toBeTruthy(); - }); - }); -} + it( 'can delete a variable product', async () => { + const status = productRepository.delete( product.id ); + expect( status ).toBeTruthy(); + } ); + } ); +}; module.exports = runVariableProductAPITest; diff --git a/packages/js/e2e-core-tests/src/specs/index.js b/packages/js/e2e-core-tests/src/specs/index.js index ed79e109d31..d5d7daaf8c3 100644 --- a/packages/js/e2e-core-tests/src/specs/index.js +++ b/packages/js/e2e-core-tests/src/specs/index.js @@ -5,14 +5,17 @@ // Setup and onboarding tests const runActivationTest = require( './activate-and-setup/activate.test' ); -const { runOnboardingFlowTest, runTaskListTest } = require( './activate-and-setup/onboarding-tasklist.test' ); +const { + runOnboardingFlowTest, + runTaskListTest, +} = require( './activate-and-setup/onboarding-tasklist.test' ); const runInitialStoreSettingsTest = require( './activate-and-setup/setup.test' ); // Shopper tests const runProductBrowseSearchSortTest = require( './shopper/front-end-product-browse-search-sort.test' ); -const runCartApplyCouponsTest = require( './shopper/front-end-cart-coupons.test'); +const runCartApplyCouponsTest = require( './shopper/front-end-cart-coupons.test' ); const runCartPageTest = require( './shopper/front-end-cart.test' ); -const runCheckoutApplyCouponsTest = require( './shopper/front-end-checkout-coupons.test'); +const runCheckoutApplyCouponsTest = require( './shopper/front-end-checkout-coupons.test' ); const runCheckoutPageTest = require( './shopper/front-end-checkout.test' ); const runMyAccountPageTest = require( './shopper/front-end-my-account.test' ); const runMyAccountPayOrderTest = require( './shopper/front-end-my-account-pay-order.test' ); @@ -26,12 +29,15 @@ const runCartRedirectionTest = require( './shopper/front-end-cart-redirection.te const runOrderEmailReceivingTest = require( './shopper/front-end-order-email-receiving.test' ); // Merchant tests -const runAddNewShippingZoneTest = require ( './merchant/wp-admin-settings-shipping-zones.test' ); -const runAddShippingClassesTest = require('./merchant/wp-admin-settings-shipping-classes.test') +const runAddNewShippingZoneTest = require( './merchant/wp-admin-settings-shipping-zones.test' ); +const runAddShippingClassesTest = require( './merchant/wp-admin-settings-shipping-classes.test' ); const runCreateCouponTest = require( './merchant/wp-admin-coupon-new.test' ); const runCreateOrderTest = require( './merchant/wp-admin-order-new.test' ); const runEditOrderTest = require( './merchant/wp-admin-order-edit.test' ); -const { runAddSimpleProductTest, runAddVariableProductTest } = require( './merchant/wp-admin-product-new.test' ); +const { + runAddSimpleProductTest, + runAddVariableProductTest, +} = require( './merchant/wp-admin-product-new.test' ); const runUpdateGeneralSettingsTest = require( './merchant/wp-admin-settings-general.test' ); const runProductSettingsTest = require( './merchant/wp-admin-settings-product.test' ); const runTaxSettingsTest = require( './merchant/wp-admin-settings-tax.test' ); @@ -105,7 +111,7 @@ const runMerchantTests = () => { runAnalyticsPageLoadsTest(); runInitiateWccomConnectionTest(); runAdminPageLoadTests(); -} +}; const runApiTests = () => { runExternalProductAPITest(); @@ -114,7 +120,7 @@ const runApiTests = () => { runCouponApiTest(); runOrderApiTest(); runTelemetryAPITest(); -} +}; module.exports = { runActivationTest, diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-analytics-page-loads.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-analytics-page-loads.test.js index cde11b5a8b8..ea6b8bf514d 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-analytics-page-loads.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-analytics-page-loads.test.js @@ -2,7 +2,7 @@ /** * Internal dependencies */ - const { +const { merchant, waitForSelectorWithoutThrow, } = require( '@woocommerce/e2e-utils' ); @@ -10,67 +10,67 @@ /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); import deprecated from '@wordpress/deprecated'; /** * Quick check for page title and no data message. * - * @param pageTitle Page title in H1. - * @param element Defaults to '.d3-chart__empty-message' - * @param elementText Defaults to 'No data for the selected date range' + * @param pageTitle Page title in H1. + * @param element Defaults to '.d3-chart__empty-message' + * @param elementText Defaults to 'No data for the selected date range' */ const checkHeadingAndElement = async ( - pageTitle, element = '.d3-chart__empty-message', elementText = 'No data for the selected date range') => { - await expect(page).toMatchElement('h1', {text: pageTitle}); + pageTitle, + element = '.d3-chart__empty-message', + elementText = 'No data for the selected date range' +) => { + await expect( page ).toMatchElement( 'h1', { text: pageTitle } ); // Depending on order of tests the chart may not be empty. const found = await waitForSelectorWithoutThrow( element ); if ( found ) { - await expect(page).toMatchElement(element, {text: elementText}); + await expect( page ).toMatchElement( element, { text: elementText } ); } else { - await expect(page).toMatchElement( '.woocommerce-chart' ); + await expect( page ).toMatchElement( '.woocommerce-chart' ); } - }; +}; - // Analytics pages that we'll test against +// Analytics pages that we'll test against const pages = [ - ['Overview'], - ['Products'], - ['Revenue'], - ['Orders'], - ['Variations'], - ['Categories'], - ['Coupons'], - ['Taxes'], - ['Downloads'], - ['Stock', '.components-button > span', 'Product / Variation'], - ['Settings', 'h2', 'Analytics Settings'] + [ 'Overview' ], + [ 'Products' ], + [ 'Revenue' ], + [ 'Orders' ], + [ 'Variations' ], + [ 'Categories' ], + [ 'Coupons' ], + [ 'Taxes' ], + [ 'Downloads' ], + [ 'Stock', '.components-button > span', 'Product / Variation' ], + [ 'Settings', 'h2', 'Analytics Settings' ], ]; const runAnalyticsPageLoadsTest = () => { - describe('Analytics > Opening Top Level Pages', () => { - beforeAll(async () => { + describe( 'Analytics > Opening Top Level Pages', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); deprecated( 'runAnalyticsPageLoadsTest', { - alternative: '@woocommerce/admin-e2e-tests `testAdminAnalyticsPages()`', - }); + alternative: + '@woocommerce/admin-e2e-tests `testAdminAnalyticsPages()`', + } ); - it.each(pages)( + it.each( pages )( 'can see %s page properly', - async (pageTitle, element, elementText) => { + async ( pageTitle, element, elementText ) => { // Go to the desired page and verify it - await merchant.openAnalyticsPage(pageTitle.toLowerCase()); - await checkHeadingAndElement(pageTitle, element, elementText); + await merchant.openAnalyticsPage( pageTitle.toLowerCase() ); + await checkHeadingAndElement( pageTitle, element, elementText ); } ); - }); -} + } ); +}; module.exports = runAnalyticsPageLoadsTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-coupon-new.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-coupon-new.test.js index 87921c63ce2..30454bbd765 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-coupon-new.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-coupon-new.test.js @@ -11,48 +11,53 @@ const { /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); const runCreateCouponTest = () => { - describe('Add New Coupon Page', () => { - beforeAll(async () => { + describe( 'Add New Coupon Page', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can create new coupon', async () => { + it( 'can create new coupon', async () => { // Go to "add coupon" page await merchant.openNewCoupon(); // Make sure we're on the add coupon page - await expect(page.title()).resolves.toMatch('Add new coupon'); + await expect( page.title() ).resolves.toMatch( 'Add new coupon' ); // Fill in coupon code and description - await expect(page).toFill('#title', 'code-' + new Date().getTime().toString()); - await expect(page).toFill('#woocommerce-coupon-description', 'test coupon'); + await expect( page ).toFill( + '#title', + 'code-' + new Date().getTime().toString() + ); + await expect( page ).toFill( + '#woocommerce-coupon-description', + 'test coupon' + ); // Set general coupon data - await clickTab('General'); - await expect(page).toSelect('#discount_type', 'Fixed cart discount'); - await expect(page).toFill('#coupon_amount', '100'); + await clickTab( 'General' ); + await expect( page ).toSelect( + '#discount_type', + 'Fixed cart discount' + ); + await expect( page ).toFill( '#coupon_amount', '100' ); // Publish coupon, verify that it was published. const adminEdit = new AdminEdit(); await adminEdit.verifyPublish( '#publish', '.notice', - 'Coupon updated.', + 'Coupon updated.' ); // Delete the coupon const couponId = await adminEdit.getId(); if ( couponId ) { await withRestApi.deleteCoupon( couponId ); } - }); - }); -} + } ); + } ); +}; module.exports = runCreateCouponTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-extensions-connect-wccom.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-extensions-connect-wccom.test.js index ff67cfa2e9d..c167f4f5c58 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-extensions-connect-wccom.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-extensions-connect-wccom.test.js @@ -1,46 +1,44 @@ /** * Internal dependencies */ - const { - merchant, -} = require( '@woocommerce/e2e-utils' ); +const { merchant } = require( '@woocommerce/e2e-utils' ); /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); const runInitiateWccomConnectionTest = () => { - describe('Merchant > Initiate WCCOM Connection', () => { - beforeAll(async () => { + describe( 'Merchant > Initiate WCCOM Connection', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it.skip('can initiate WCCOM connection', async () => { + it.skip( 'can initiate WCCOM connection', async () => { await merchant.openExtensions(); // Click on a tab to choose WooCommerce Subscriptions extension await Promise.all( [ - expect( page ).toClick( 'a.nav-tab', { text: "WooCommerce.com Subscriptions" } ), + expect( page ).toClick( 'a.nav-tab', { + text: 'WooCommerce.com Subscriptions', + } ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), ] ); // Click on Connect button to initiate a WCCOM connection - await Promise.all([ - expect(page).toClick('.button-helper-connect'), - page.waitForNavigation({waitUntil: 'networkidle0'}), - ]); + await Promise.all( [ + expect( page ).toClick( '.button-helper-connect' ), + page.waitForNavigation( { waitUntil: 'networkidle0' } ), + ] ); // Verify that you see a login page for connecting WCCOM account - await expect(page).toMatchElement('div.login'); - await expect(page).toMatchElement('input#usernameOrEmail'); - await expect(page).toMatchElement('button.button', {text: "Continue"}); - }); - }); -} + await expect( page ).toMatchElement( 'div.login' ); + await expect( page ).toMatchElement( 'input#usernameOrEmail' ); + await expect( page ).toMatchElement( 'button.button', { + text: 'Continue', + } ); + } ); + } ); +}; module.exports = runInitiateWccomConnectionTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-apply-coupon.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-apply-coupon.test.js index 6e70fa8f95a..6da3693f2c9 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-apply-coupon.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-apply-coupon.test.js @@ -12,55 +12,79 @@ const { } = require( '@woocommerce/e2e-utils' ); const config = require( 'config' ); -const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; -const discountedPrice = simpleProductPrice - 5.00; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; +const discountedPrice = simpleProductPrice - 5.0; -const couponDialogMessage = 'Enter a coupon code to apply. Discounts are applied to line totals, before taxes.'; +const couponDialogMessage = + 'Enter a coupon code to apply. Discounts are applied to line totals, before taxes.'; let couponCode; let orderId; let productId; const runOrderApplyCouponTest = () => { - describe('WooCommerce Orders > Apply coupon', () => { - beforeAll(async () => { + describe( 'WooCommerce Orders > Apply coupon', () => { + beforeAll( async () => { productId = await createSimpleProduct(); couponCode = await createCoupon(); orderId = await createOrder( { productId, status: 'pending' } ); await merchant.login(); await merchant.goToOrder( orderId ); - await page.removeAllListeners('dialog'); + await page.removeAllListeners( 'dialog' ); // Make sure the simple product price is greater than the coupon amount - await expect(Number(simpleProductPrice)).toBeGreaterThan(5.00); + await expect( Number( simpleProductPrice ) ).toBeGreaterThan( 5.0 ); } ); - it('can apply a coupon', async () => { - await page.waitForSelector('button.add-coupon'); - const couponDialog = await expect(page).toDisplayDialog(async () => { - await evalAndClick('button.add-coupon'); - }); - expect(couponDialog.message()).toMatch(couponDialogMessage); + it( 'can apply a coupon', async () => { + await page.waitForSelector( 'button.add-coupon' ); + const couponDialog = await expect( page ).toDisplayDialog( + async () => { + await evalAndClick( 'button.add-coupon' ); + } + ); + expect( couponDialog.message() ).toMatch( couponDialogMessage ); // Accept the dialog with the coupon code - await couponDialog.accept(couponCode); + await couponDialog.accept( couponCode ); await uiUnblocked(); // Verify the coupon list is showing - await page.waitForSelector('.wc-used-coupons'); - await expect(page).toMatchElement('.wc_coupon_list', { text: 'Coupon(s)' }); - await expect(page).toMatchElement('.wc_coupon_list li.code.editable', { text: couponCode.toLowerCase() }); + await page.waitForSelector( '.wc-used-coupons' ); + await expect( page ).toMatchElement( '.wc_coupon_list', { + text: 'Coupon(s)', + } ); + await expect( page ).toMatchElement( + '.wc_coupon_list li.code.editable', + { + text: couponCode.toLowerCase(), + } + ); // Check that the coupon has been applied - await expect(page).toMatchElement('.wc-order-item-discount', { text: '5.00' }); - await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: discountedPrice }); - }); + await expect( page ).toMatchElement( '.wc-order-item-discount', { + text: '5.00', + } ); + await expect( + page + ).toMatchElement( + '.line_cost > .view > .woocommerce-Price-amount', + { text: discountedPrice } + ); + } ); - it('can remove a coupon', async () => { + it( 'can remove a coupon', async () => { // Make sure we have a coupon on the page to use - await page.waitForSelector('.wc-used-coupons'); - await expect(page).toMatchElement('.wc_coupon_list li.code.editable', { text: couponCode.toLowerCase() }); + await page.waitForSelector( '.wc-used-coupons' ); + await expect( page ).toMatchElement( + '.wc_coupon_list li.code.editable', + { + text: couponCode.toLowerCase(), + } + ); await evalAndClick( 'a.remove-coupon' ); await uiUnblocked(); @@ -68,16 +92,32 @@ const runOrderApplyCouponTest = () => { await utils.waitForTimeout( 2000 ); // to avoid flakyness // Verify the coupon pricing has been removed - await expect(page).not.toMatchElement('.wc_coupon_list li.code.editable', { text: couponCode.toLowerCase() }); - await expect(page).not.toMatchElement('.wc-order-item-discount', { text: '5.00' }); - await expect(page).not.toMatchElement('.line-cost .view .woocommerce-Price-amount', { text: discountedPrice }); + await expect( page ).not.toMatchElement( + '.wc_coupon_list li.code.editable', + { + text: couponCode.toLowerCase(), + } + ); + await expect( page ).not.toMatchElement( + '.wc-order-item-discount', + { text: '5.00' } + ); + await expect( + page + ).not.toMatchElement( + '.line-cost .view .woocommerce-Price-amount', + { text: discountedPrice } + ); // Verify the original price is the order total - await expect(page).toMatchElement('.line_cost > .view > .woocommerce-Price-amount', { text: simpleProductPrice }); - }); - - }); - + await expect( + page + ).toMatchElement( + '.line_cost > .view > .woocommerce-Price-amount', + { text: simpleProductPrice } + ); + } ); + } ); }; module.exports = runOrderApplyCouponTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-customer-payment-page.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-customer-payment-page.test.js index 988dc193d30..13ae4da474f 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-customer-payment-page.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-customer-payment-page.test.js @@ -3,72 +3,99 @@ const { createSimpleProduct } = require( '@woocommerce/e2e-utils' ); /** * Internal dependencies */ -const { - merchant, - createOrder, -} = require( '@woocommerce/e2e-utils' ); +const { merchant, createOrder } = require( '@woocommerce/e2e-utils' ); // TODO create a function for the logic below getConfigSimpleProduct(), see: https://github.com/woocommerce/woocommerce/issues/29072 const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); -const simpleProductPrice = config.has( 'products.simple.price' ) ? config.get( 'products.simple.price' ) : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const runMerchantOrdersCustomerPaymentPage = () => { let orderId; let productId; - describe('WooCommerce Merchant Flow: Orders > Customer Payment Page', () => { - beforeAll(async () => { + describe( 'WooCommerce Merchant Flow: Orders > Customer Payment Page', () => { + beforeAll( async () => { productId = await createSimpleProduct(); orderId = await createOrder( { productId } ); await merchant.login(); - }); + } ); - it('should show the customer payment page link on a pending payment order', async () => { + it( 'should show the customer payment page link on a pending payment order', async () => { await merchant.goToOrder( orderId ); // Verify the order is still pending payment - await expect( page ).toMatchElement( '#order_status', { text: 'Pending payment' } ); + await expect( page ).toMatchElement( '#order_status', { + text: 'Pending payment', + } ); // Verify the customer payment page link is displayed - await expect(page).toMatchElement( 'label[for=order_status] > a' , { text: 'Customer payment page →' }); - }); + await expect( page ).toMatchElement( + 'label[for=order_status] > a', + { text: 'Customer payment page →' } + ); + } ); - - it('should load the customer payment page', async () => { + it( 'should load the customer payment page', async () => { // Verify the customer payment page link is displayed - await expect(page).toMatchElement( 'label[for=order_status] > a' , { text: 'Customer payment page →' }); + await expect( page ).toMatchElement( + 'label[for=order_status] > a', + { text: 'Customer payment page →' } + ); // Visit the page - await Promise.all([ - expect(page).toClick( 'label[for=order_status] > a' ), + await Promise.all( [ + expect( page ).toClick( 'label[for=order_status] > a' ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); // Verify we landed on the customer payment page - await expect(page).toMatchElement( 'h1.entry-title' , { text: 'Pay for order' }); - await expect(page).toMatchElement( 'td.product-name' , { text: simpleProductName }); - await expect(page).toMatchElement( 'span.woocommerce-Price-amount.amount' , { text: simpleProductPrice }); - }); + await expect( page ).toMatchElement( 'h1.entry-title', { + text: 'Pay for order', + } ); + await expect( page ).toMatchElement( 'td.product-name', { + text: simpleProductName, + } ); + await expect( page ).toMatchElement( + 'span.woocommerce-Price-amount.amount', + { + text: simpleProductPrice, + } + ); + } ); - it('can pay for the order through the customer payment page', async () => { + it( 'can pay for the order through the customer payment page', async () => { // Make sure we're still on the customer payment page - await expect(page).toMatchElement( 'h1.entry-title' , { text: 'Pay for order' }); + await expect( page ).toMatchElement( 'h1.entry-title', { + text: 'Pay for order', + } ); // Pay for the order - await Promise.all([ - expect(page).toClick( '#place_order'), + await Promise.all( [ + expect( page ).toClick( '#place_order' ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); // Verify we landed on the order received page - await expect(page).toMatchElement( 'h1.entry-title', { text: 'Order received' }); - await expect(page).toMatchElement( 'li.woocommerce-order-overview__order.order' , { text: orderId.toString() }); - await expect(page).toMatchElement( 'span.woocommerce-Price-amount.amount' , { text: simpleProductPrice }); - }); - - }); - + await expect( page ).toMatchElement( 'h1.entry-title', { + text: 'Order received', + } ); + await expect( page ).toMatchElement( + 'li.woocommerce-order-overview__order.order', + { + text: orderId.toString(), + } + ); + await expect( page ).toMatchElement( + 'span.woocommerce-Price-amount.amount', + { + text: simpleProductPrice, + } + ); + } ); + } ); }; module.exports = runMerchantOrdersCustomerPaymentPage; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-edit.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-edit.test.js index cb1c2db5af8..d1e42f5b544 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-edit.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-edit.test.js @@ -15,63 +15,71 @@ let orderId; const orderStatus = { processing: 'processing', - completed: 'completed' + completed: 'completed', }; const runEditOrderTest = () => { - describe('WooCommerce Orders > Edit order', () => { - beforeAll(async () => { + describe( 'WooCommerce Orders > Edit order', () => { + beforeAll( async () => { orderId = await createOrder( { status: orderStatus.processing } ); await merchant.login(); - }); + } ); afterAll( async () => { await withRestApi.deleteOrder( orderId ); - }); + } ); - it('can view single order', async () => { + it( 'can view single order', async () => { // Go to "orders" page await merchant.openAllOrdersView(); // Make sure we're on the orders page - await expect(page.title()).resolves.toMatch('Orders'); + await expect( page.title() ).resolves.toMatch( 'Orders' ); //Open order we created - await merchant.goToOrder(orderId); + await merchant.goToOrder( orderId ); // Make sure we're on the order details page - await expect(page.title()).resolves.toMatch('Edit order'); - }); + await expect( page.title() ).resolves.toMatch( 'Edit order' ); + } ); - it('can update order status', async () => { + it( 'can update order status', async () => { //Open order we created - await merchant.goToOrder(orderId); + await merchant.goToOrder( orderId ); // Make sure we're still on the order details page - await expect(page.title()).resolves.toMatch('Edit order'); + await expect( page.title() ).resolves.toMatch( 'Edit order' ); // Update order status to `Completed` - await merchant.updateOrderStatus(orderId, 'Completed'); + await merchant.updateOrderStatus( orderId, 'Completed' ); // Verify order status changed note added - await expect( page ).toMatchElement( '#select2-order_status-container', { text: 'Completed' } ); + await expect( page ).toMatchElement( + '#select2-order_status-container', + { + text: 'Completed', + } + ); await expect( page ).toMatchElement( '#woocommerce-order-notes .note_content', { text: 'Order status changed from Processing to Completed.', } ); - }); + } ); - it('can update order details', async () => { + it( 'can update order details', async () => { //Open order we created - await merchant.goToOrder(orderId); + await merchant.goToOrder( orderId ); // Make sure we're still on the order details page - await expect(page.title()).resolves.toMatch('Edit order'); + await expect( page.title() ).resolves.toMatch( 'Edit order' ); // Update order details - await expect(page).toFill('input[name=order_date]', '2018-12-14'); + await expect( page ).toFill( + 'input[name=order_date]', + '2018-12-14' + ); // Wait for auto save await utils.waitForTimeout( 2000 ); @@ -80,10 +88,15 @@ const runEditOrderTest = () => { await orderPageSaveChanges(); // Verify - await expect( page ).toMatchElement( '#message', { text: 'Order updated.' } ); - await verifyValueOfInputField( 'input[name=order_date]' , '2018-12-14' ); - }); - }); + await expect( page ).toMatchElement( '#message', { + text: 'Order updated.', + } ); + await verifyValueOfInputField( + 'input[name=order_date]', + '2018-12-14' + ); + } ); + } ); describe( 'WooCommerce Orders > Edit order > Downloadable product permissions', () => { const productName = 'TDP 001'; @@ -97,12 +110,12 @@ const runEditOrderTest = () => { await merchant.login(); } ); - beforeEach(async () => { + beforeEach( async () => { productId = await createSimpleDownloadableProduct( productName ); orderId = await createOrder( { productId, - customerBilling , - status: orderStatus.processing + customerBilling, + status: orderStatus.processing, } ); } ); @@ -115,7 +128,7 @@ const runEditOrderTest = () => { // Create order without product const newOrderId = await createOrder( { customerBilling, - status: orderStatus.processing + status: orderStatus.processing, } ); // Open order we created @@ -125,7 +138,7 @@ const runEditOrderTest = () => { await merchant.addDownloadableProductPermission( productName ); // Verify new downloadable product permission details - await merchant.verifyDownloadableProductPermission( productName ) + await merchant.verifyDownloadableProductPermission( productName ); // Remove order await withRestApi.deleteOrder( newOrderId ); @@ -134,7 +147,9 @@ const runEditOrderTest = () => { it( 'can add downloadable product permissions to order with product', async () => { // Create new downloadable product const newProductName = 'TDP 002'; - const newProductId = await createSimpleDownloadableProduct( newProductName ); + const newProductId = await createSimpleDownloadableProduct( + newProductName + ); // Open order we created await merchant.goToOrder( orderId ); @@ -143,7 +158,9 @@ const runEditOrderTest = () => { await merchant.addDownloadableProductPermission( newProductName ); // Verify new downloadable product permission details - await merchant.verifyDownloadableProductPermission( newProductName ) + await merchant.verifyDownloadableProductPermission( + newProductName + ); // Remove product await withRestApi.deleteProduct( newProductId ); @@ -180,21 +197,28 @@ const runEditOrderTest = () => { await merchant.revokeDownloadableProductPermission( productName ); // Verify - await expect( page ).not.toMatchElement( 'div.order_download_permissions', { - text: productName - } ); + await expect( page ).not.toMatchElement( + 'div.order_download_permissions', + { + text: productName, + } + ); } ); it( 'should not allow downloading a product if download attempts are exceeded', async () => { // Define expected download error reason - const expectedReason = 'Sorry, you have reached your download limit for this file'; + const expectedReason = + 'Sorry, you have reached your download limit for this file'; // Create order with product without any available download attempt - const newProductId = await createSimpleDownloadableProduct( productName, 0 ); + const newProductId = await createSimpleDownloadableProduct( + productName, + 0 + ); const newOrderId = await createOrder( { productId: newProductId, customerBilling, - status: orderStatus.processing + status: orderStatus.processing, } ); // Open order we created @@ -204,7 +228,10 @@ const runEditOrderTest = () => { const downloadPage = await merchant.openDownloadLink(); // Verify file download cannot start - await merchant.verifyCannotDownloadFromBecause( downloadPage, expectedReason ); + await merchant.verifyCannotDownloadFromBecause( + downloadPage, + expectedReason + ); // Remove data await withRestApi.deleteOrder( newOrderId ); @@ -220,15 +247,21 @@ const runEditOrderTest = () => { // Update permission so that the expiration date has already passed // Note: Seems this operation can't be performed through the API - await merchant.updateDownloadableProductPermission( productName, '2018-12-14' ); + await merchant.updateDownloadableProductPermission( + productName, + '2018-12-14' + ); // Open download page const downloadPage = await merchant.openDownloadLink(); // Verify file download cannot start - await merchant.verifyCannotDownloadFromBecause( downloadPage, expectedReason ); + await merchant.verifyCannotDownloadFromBecause( + downloadPage, + expectedReason + ); } ); } ); -} +}; module.exports = runEditOrderTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-emails.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-emails.test.js index 1fbb5a0099f..37334c774e8 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-emails.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-emails.test.js @@ -11,14 +11,15 @@ const { const config = require( 'config' ); const customerEmail = config.get( 'addresses.customer.billing.email' ); -const adminEmail = config.has( 'users.admin.email' ) ? config.get( 'users.admin.email' ) : 'admin@woocommercecoree2etestsuite.com'; +const adminEmail = config.has( 'users.admin.email' ) + ? config.get( 'users.admin.email' ) + : 'admin@woocommercecoree2etestsuite.com'; const storeName = 'WooCommerce Core E2E Test Suite'; let orderId; const runMerchantOrderEmailsTest = () => { - - describe('Merchant > Order Action emails received', () => { + describe( 'Merchant > Order Action emails received', () => { beforeAll( async () => { await merchant.login(); @@ -29,7 +30,9 @@ const runMerchantOrderEmailsTest = () => { await Promise.all( [ // Select the billing email address field and add the customer billing email from the config - await page.click( 'div.order_data_column:nth-child(2) > h3:nth-child(1) > a:nth-child(1)' ), + await page.click( + 'div.order_data_column:nth-child(2) > h3:nth-child(1) > a:nth-child(1)' + ), await expect( page ).toFill( '#_billing_email', customerEmail ), await clickUpdateOrder( 'Order updated.' ), ] ); @@ -41,31 +44,42 @@ const runMerchantOrderEmailsTest = () => { } ); // New order emails are sent automatically when we create the simple order above, so let's verify we get these emails - it('can receive new order email', async () => { + it( 'can receive new order email', async () => { await merchant.openEmailLog(); - await expect( page ).toMatchElement( '.column-receiver', { text: adminEmail } ); - await expect( page ).toMatchElement( '.column-subject', { text: `[${storeName}]: New order #${orderId}` } ); + await expect( page ).toMatchElement( '.column-receiver', { + text: adminEmail, + } ); + await expect( page ).toMatchElement( '.column-subject', { + text: `[${ storeName }]: New order #${ orderId }`, + } ); } ); - it('can resend new order notification', async () => { + it( 'can resend new order notification', async () => { await merchant.goToOrder( orderId ); await selectOrderAction( 'send_order_details_admin' ); await merchant.openEmailLog(); - await expect( page ).toMatchElement( '.column-receiver', { text: adminEmail } ); - await expect( page ).toMatchElement( '.column-subject', { text: `[${storeName}]: New order #${orderId}` } ); + await expect( page ).toMatchElement( '.column-receiver', { + text: adminEmail, + } ); + await expect( page ).toMatchElement( '.column-subject', { + text: `[${ storeName }]: New order #${ orderId }`, + } ); } ); - it('can email invoice/order details to customer', async () => { + it( 'can email invoice/order details to customer', async () => { await merchant.goToOrder( orderId ); await selectOrderAction( 'send_order_details' ); await merchant.openEmailLog(); - await expect( page ).toMatchElement( '.column-receiver', { text: customerEmail } ); - await expect( page ).toMatchElement( '.column-subject', { text: `Invoice for order #${orderId} on ${storeName}` } ); + await expect( page ).toMatchElement( '.column-receiver', { + text: customerEmail, + } ); + await expect( page ).toMatchElement( '.column-subject', { + text: `Invoice for order #${ orderId } on ${ storeName }`, + } ); } ); - } ); -} +}; module.exports = runMerchantOrderEmailsTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-new.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-new.test.js index 3dd15e2d758..244faccfa3b 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-new.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-new.test.js @@ -14,7 +14,7 @@ const { GroupedProduct, SimpleProduct, ProductVariation, - ExternalProduct + ExternalProduct, } = require( '@woocommerce/api' ); const taxClasses = [ @@ -33,31 +33,35 @@ const taxRates = [ { name: 'Tax Rate Simple', rate: '10.0000', - class: 'tax-class-simple' + class: 'tax-class-simple', }, { name: 'Tax Rate Variable', rate: '20.0000', - class: 'tax-class-variable' + class: 'tax-class-variable', }, { name: 'Tax Rate External', rate: '30.0000', - class: 'tax-class-external' - } + class: 'tax-class-external', + }, ]; -const taxTotals = ['$10.00', '$40.00', '$240.00']; +const taxTotals = [ '$10.00', '$40.00', '$240.00' ]; const initProducts = async () => { - const apiUrl = config.get('url'); - const adminUsername = config.get('users.admin.username'); - const adminPassword = config.get('users.admin.password'); - const httpClient = HTTPClientFactory.build(apiUrl) - .withBasicAuth(adminUsername, adminPassword) + const apiUrl = config.get( 'url' ); + const adminUsername = config.get( 'users.admin.username' ); + const adminPassword = config.get( 'users.admin.password' ); + const httpClient = HTTPClientFactory.build( apiUrl ) + .withBasicAuth( adminUsername, adminPassword ) .create(); - await withRestApi.updateSettingOption( 'general', 'woocommerce_calc_taxes', { value: 'yes' } ); + await withRestApi.updateSettingOption( + 'general', + 'woocommerce_calc_taxes', + { value: 'yes' } + ); await withRestApi.addTaxClasses( taxClasses ); await withRestApi.addTaxRates( taxRates ); @@ -67,7 +71,7 @@ const initProducts = async () => { const simpleProduct = { name: 'Simple Product 273722', regularPrice: '100', - taxClass: 'Tax Class Simple' + taxClass: 'Tax Class Simple', }; return await repo.create( simpleProduct ); }; @@ -79,65 +83,65 @@ const initProducts = async () => { attributes: [ { name: 'Size', - option: 'Small' + option: 'Small', }, { name: 'Colour', - option: 'Yellow' - } + option: 'Yellow', + }, ], - taxClass: 'Tax Class Variable' + taxClass: 'Tax Class Variable', }, { regularPrice: '300', attributes: [ { name: 'Size', - option: 'Medium' + option: 'Medium', }, { name: 'Colour', - option: 'Magenta' - } + option: 'Magenta', + }, ], - taxClass: 'Tax Class Variable' - } + taxClass: 'Tax Class Variable', + }, ]; const variableProductData = { name: 'Variable Product 024611', type: 'variable', - taxClass: 'Tax Class Variable' + taxClass: 'Tax Class Variable', }; - const variationRepo = ProductVariation.restRepository(httpClient); - const productRepo = VariableProduct.restRepository(httpClient); - const variableProduct = await productRepo.create(variableProductData); - for (const v of variations) { - await variationRepo.create(variableProduct.id, v); + const variationRepo = ProductVariation.restRepository( httpClient ); + const productRepo = VariableProduct.restRepository( httpClient ); + const variableProduct = await productRepo.create( variableProductData ); + for ( const v of variations ) { + await variationRepo.create( variableProduct.id, v ); } return variableProduct; }; const initGroupedProduct = async () => { - const groupedRepo = GroupedProduct.restRepository(httpClient); - const defaultGroupedData = config.get('products.grouped'); + const groupedRepo = GroupedProduct.restRepository( httpClient ); + const defaultGroupedData = config.get( 'products.grouped' ); const groupedProductData = { ...defaultGroupedData, - name: 'Grouped Product 858012' + name: 'Grouped Product 858012', }; - return await groupedRepo.create(groupedProductData); + return await groupedRepo.create( groupedProductData ); }; const initExternalProduct = async () => { - const repo = ExternalProduct.restRepository(httpClient); - const defaultProps = config.get('products.external'); + const repo = ExternalProduct.restRepository( httpClient ); + const defaultProps = config.get( 'products.external' ); const props = { ...defaultProps, name: 'External product 786794', regularPrice: '800', - taxClass: 'Tax Class External' + taxClass: 'Tax Class External', }; - return await repo.create(props); + return await repo.create( props ); }; // Create a product for each product type @@ -146,66 +150,78 @@ const initProducts = async () => { const groupedProduct = await initGroupedProduct(); const externalProduct = await initExternalProduct(); - return [simpleProduct, variableProduct, groupedProduct, externalProduct]; + return [ simpleProduct, variableProduct, groupedProduct, externalProduct ]; }; let products; const runCreateOrderTest = () => { - describe('WooCommerce Orders > Add new order', () => { - beforeAll(async () => { + describe( 'WooCommerce Orders > Add new order', () => { + beforeAll( async () => { // Initialize products for each product type products = await initProducts(); // Login await merchant.login(); - }); + } ); - it('can create new order', async () => { + it( 'can create new order', async () => { // Go to "add order" page await merchant.openNewOrder(); // Make sure we're on the add order page - await expect(page.title()).resolves.toMatch('Add new order'); + await expect( page.title() ).resolves.toMatch( 'Add new order' ); // Set order data - await expect(page).toSelect('#order_status', 'Processing'); - await expect(page).toFill('input[name=order_date]', '2018-12-13'); - await expect(page).toFill('input[name=order_date_hour]', '18'); - await expect(page).toFill('input[name=order_date_minute]', '55'); + await expect( page ).toSelect( '#order_status', 'Processing' ); + await expect( page ).toFill( + 'input[name=order_date]', + '2018-12-13' + ); + await expect( page ).toFill( 'input[name=order_date_hour]', '18' ); + await expect( page ).toFill( + 'input[name=order_date_minute]', + '55' + ); // Create order, verify that it was created. Trash order, verify that it was trashed. const orderEdit = new AdminEdit(); await orderEdit.verifyPublish( '.order_actions li .save_order', '#message', - 'Order updated.', + 'Order updated.' ); - await expect( page ).toMatchElement( '#select2-order_status-container', { text: 'Processing' } ); + await expect( page ).toMatchElement( + '#select2-order_status-container', + { + text: 'Processing', + } + ); await expect( page ).toMatchElement( '#woocommerce-order-notes .note_content', { - text: 'Order status changed from Pending payment to Processing.', + text: + 'Order status changed from Pending payment to Processing.', } ); - }); + } ); - it('can create new complex order with multiple product types & tax classes', async () => { + it( 'can create new complex order with multiple product types & tax classes', async () => { // Go to "add order" page await merchant.openNewOrder(); // Open modal window for adding line items - await expect(page).toClick('button.add-line-item'); - await expect(page).toClick('button.add-order-item'); - await page.waitForSelector('.wc-backbone-modal-header'); + await expect( page ).toClick( 'button.add-line-item' ); + await expect( page ).toClick( 'button.add-order-item' ); + await page.waitForSelector( '.wc-backbone-modal-header' ); // Search for each product to add, then verify that they are saved - for (const { name } of products) { - await expect(page).toClick( + for ( const { name } of products ) { + await expect( page ).toClick( '.wc-backbone-modal-content tr:last-child .select2-selection__arrow' ); - await expect(page).toFill( + await expect( page ).toFill( '#wc-backbone-modal-dialog + .select2-container .select2-search__field', name ); @@ -213,52 +229,60 @@ const runCreateOrderTest = () => { 'li[data-selected]' ); await firstResult.click(); - await expect(page).toMatchElement( + await expect( page ).toMatchElement( '.wc-backbone-modal-content tr:nth-last-child(2) .wc-product-search option', name ); } // Save the line items - await expect(page).toClick('.wc-backbone-modal-content #btn-ok'); + await expect( page ).toClick( + '.wc-backbone-modal-content #btn-ok' + ); await uiUnblocked(); // Recalculate taxes - await expect(page).toDisplayDialog(async () => { - await expect(page).toClick('.calculate-action'); - }); - await page.waitForSelector('th.line_tax'); + await expect( page ).toDisplayDialog( async () => { + await expect( page ).toClick( '.calculate-action' ); + } ); + await page.waitForSelector( 'th.line_tax' ); // Save the order and verify line items - await expect(page).toClick('button.save_order'); + await expect( page ).toClick( 'button.save_order' ); await page.waitForNavigation(); - for (const { name } of products) { - await expect(page).toMatchElement('.wc-order-item-name', { - text: name - }); + for ( const { name } of products ) { + await expect( page ).toMatchElement( '.wc-order-item-name', { + text: name, + } ); } // Verify that the names of each tax class were shown - for (const taxRate of taxRates) { - await expect(page).toMatchElement('th.line_tax', { - text: taxRate.name - }); - await expect(page).toMatchElement('.wc-order-totals td.label', { - text: taxRate.name - }); + for ( const taxRate of taxRates ) { + await expect( page ).toMatchElement( 'th.line_tax', { + text: taxRate.name, + } ); + await expect( page ).toMatchElement( + '.wc-order-totals td.label', + { + text: taxRate.name, + } + ); } // Verify tax amounts - for (const amount of taxTotals) { - await expect(page).toMatchElement('td.line_tax', { - text: amount - }); - await expect(page).toMatchElement('.wc-order-totals td.total', { - text: amount - }); + for ( const amount of taxTotals ) { + await expect( page ).toMatchElement( 'td.line_tax', { + text: amount, + } ); + await expect( page ).toMatchElement( + '.wc-order-totals td.total', + { + text: amount, + } + ); } - }); - }); + } ); + } ); }; module.exports = runCreateOrderTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund-restock.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund-restock.test.js index 49ee6af813d..5a1dab8d7fc 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund-restock.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund-restock.test.js @@ -18,7 +18,7 @@ const { * * @param {string} buttonSelector * @param {string} resultSelector - * @returns {Promise} + * @return {Promise} */ const clickAndWaitForSelector = async ( buttonSelector, resultSelector ) => { await evalAndClick( buttonSelector ); diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund.test.js index 60f7ee5b53c..5193a1e7b9d 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-refund.test.js @@ -12,84 +12,121 @@ const { } = require( '@woocommerce/e2e-utils' ); const config = require( 'config' ); -const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const runRefundOrderTest = () => { - describe('WooCommerce Orders > Refund an order', () => { + describe( 'WooCommerce Orders > Refund an order', () => { let productId; let orderId; let currencySymbol; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); orderId = await createOrder( { productId, - status: 'completed' + status: 'completed', } ); await merchant.login(); await merchant.goToOrder( orderId ); // Get the currency symbol for the store's selected currency - await page.waitForSelector('.woocommerce-Price-currencySymbol'); - let currencyElement = await page.$('.woocommerce-Price-currencySymbol'); - currencySymbol = await page.evaluate(el => el.textContent, currencyElement); - }); + await page.waitForSelector( '.woocommerce-Price-currencySymbol' ); + const currencyElement = await page.$( + '.woocommerce-Price-currencySymbol' + ); + currencySymbol = await page.evaluate( + ( el ) => el.textContent, + currencyElement + ); + } ); - it('can issue a refund by quantity', async () => { + it( 'can issue a refund by quantity', async () => { // Click the Refund button - await expect(page).toClick('button.refund-items'); + await expect( page ).toClick( 'button.refund-items' ); // Verify the refund section shows - await page.waitForSelector('div.wc-order-refund-items', { visible: true }); - await verifyCheckboxIsSet('#restock_refunded_items'); + await page.waitForSelector( 'div.wc-order-refund-items', { + visible: true, + } ); + await verifyCheckboxIsSet( '#restock_refunded_items' ); // Initiate a refund - await expect(page).toFill('.refund_order_item_qty', '1'); - await expect(page).toFill('#refund_reason', 'No longer wanted'); + await expect( page ).toFill( '.refund_order_item_qty', '1' ); + await expect( page ).toFill( '#refund_reason', 'No longer wanted' ); - await Promise.all([ - verifyValueOfInputField('.refund_line_total', simpleProductPrice), - verifyValueOfInputField('#refund_amount', simpleProductPrice), - expect(page).toMatchElement('.do-manual-refund', { text: `Refund ${currencySymbol + simpleProductPrice} manually` }), - ]); + await Promise.all( [ + verifyValueOfInputField( + '.refund_line_total', + simpleProductPrice + ), + verifyValueOfInputField( '#refund_amount', simpleProductPrice ), + expect( page ).toMatchElement( '.do-manual-refund', { + text: `Refund ${ + currencySymbol + simpleProductPrice + } manually`, + } ), + ] ); - await clickAndWaitForSelector( '.do-manual-refund', '.quantity .refunded' ); + await clickAndWaitForSelector( + '.do-manual-refund', + '.quantity .refunded' + ); await uiUnblocked(); - await Promise.all([ + await Promise.all( [ // Verify the product line item shows the refunded quantity and amount - expect(page).toMatchElement('.quantity .refunded', { text: '-1' }), - expect(page).toMatchElement('.line_cost .refunded', { text: `-${currencySymbol + simpleProductPrice}` }), + expect( page ).toMatchElement( '.quantity .refunded', { + text: '-1', + } ), + expect( page ).toMatchElement( '.line_cost .refunded', { + text: `-${ currencySymbol + simpleProductPrice }`, + } ), // Verify the refund shows in the list with the amount - expect(page).toMatchElement('.refund .description', { text: 'No longer wanted' }), - expect(page).toMatchElement('.refund > .line_cost', { text: `-${currencySymbol + simpleProductPrice}` }), + expect( page ).toMatchElement( '.refund .description', { + text: 'No longer wanted', + } ), + expect( page ).toMatchElement( '.refund > .line_cost', { + text: `-${ currencySymbol + simpleProductPrice }`, + } ), // Verify system note was added - expect(page).toMatchElement('.system-note', { text: 'Order status changed from Completed to Refunded.' }), - ]); - }); + expect( page ).toMatchElement( '.system-note', { + text: 'Order status changed from Completed to Refunded.', + } ), + ] ); + } ); - it('can delete an issued refund', async () => { + it( 'can delete an issued refund', async () => { await clickAndWaitForSelector( 'a.delete_refund', '.refund-items' ); await uiUnblocked(); - await Promise.all([ + await Promise.all( [ // Verify the refunded row item is no longer showing - expect(page).not.toMatchElement('tr.refund', { visible: true }), + expect( page ).not.toMatchElement( 'tr.refund', { + visible: true, + } ), // Verify the product line item doesn't show the refunded quantity and amount - expect(page).not.toMatchElement('.quantity .refunded', { text: '-1' }), - expect(page).not.toMatchElement('.line_cost .refunded', { text: `-${currencySymbol + simpleProductPrice}` }), + expect( page ).not.toMatchElement( '.quantity .refunded', { + text: '-1', + } ), + expect( page ).not.toMatchElement( '.line_cost .refunded', { + text: `-${ currencySymbol + simpleProductPrice }`, + } ), // Verify the refund shows in the list with the amount - expect(page).not.toMatchElement('.refund .description', { text: 'No longer wanted' }), - expect(page).not.toMatchElement('.refund > .line_cost', { text: `-${currencySymbol + simpleProductPrice}` }), - ]); - }); - - }); - + expect( page ).not.toMatchElement( '.refund .description', { + text: 'No longer wanted', + } ), + expect( page ).not.toMatchElement( '.refund > .line_cost', { + text: `-${ currencySymbol + simpleProductPrice }`, + } ), + ] ); + } ); + } ); }; module.exports = runRefundOrderTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-searching.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-searching.test.js index 306b3a5add2..503ebc6eaa7 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-searching.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-searching.test.js @@ -42,7 +42,7 @@ const customerShipping = { /** * Set the billing fields for the customer account for this test suite. * - * @returns {Promise} + * @return {Promise} */ const updateCustomerBilling = async () => { const client = factories.api.withDefaultPermalinks; @@ -55,7 +55,7 @@ const updateCustomerBilling = async () => { return; } - const customerId = customers.data[0].id; + const customerId = customers.data[ 0 ].id; const customerData = { id: customerId, billing: customerBilling, @@ -69,65 +69,65 @@ const updateCustomerBilling = async () => { * Data table to be fed into `it.each()`. */ const queries = [ - [customerBilling.first_name, 'billing first name'], - [customerBilling.last_name, 'billing last name'], - [customerBilling.company, 'billing company name'], - [customerBilling.address_1, 'billing first address'], - [customerBilling.address_2, 'billing second address'], - [customerBilling.city, 'billing city name'], - [customerBilling.postcode, 'billing post code'], - [customerBilling.email, 'billing email'], - [customerBilling.phone, 'billing phone'], - [customerBilling.state, 'billing state'], - [customerShipping.first_name, 'shipping first name'], - [customerShipping.last_name, 'shipping last name'], - [customerShipping.address_1, 'shipping first address'], - [customerShipping.address_2, 'shipping second address'], - [customerShipping.city, 'shipping city name'], - [customerShipping.postcode, 'shipping post code'], - [itemName, 'shipping item name'] + [ customerBilling.first_name, 'billing first name' ], + [ customerBilling.last_name, 'billing last name' ], + [ customerBilling.company, 'billing company name' ], + [ customerBilling.address_1, 'billing first address' ], + [ customerBilling.address_2, 'billing second address' ], + [ customerBilling.city, 'billing city name' ], + [ customerBilling.postcode, 'billing post code' ], + [ customerBilling.email, 'billing email' ], + [ customerBilling.phone, 'billing phone' ], + [ customerBilling.state, 'billing state' ], + [ customerShipping.first_name, 'shipping first name' ], + [ customerShipping.last_name, 'shipping last name' ], + [ customerShipping.address_1, 'shipping first address' ], + [ customerShipping.address_2, 'shipping second address' ], + [ customerShipping.city, 'shipping city name' ], + [ customerShipping.postcode, 'shipping post code' ], + [ itemName, 'shipping item name' ], ]; const runOrderSearchingTest = () => { - describe('WooCommerce Orders > Search orders', () => { + describe( 'WooCommerce Orders > Search orders', () => { let productId; let orderId; let customerId; beforeAll( async () => { - productId = await createSimpleProduct('Wanted Product'); + productId = await createSimpleProduct( 'Wanted Product' ); customerId = await updateCustomerBilling(); - orderId = await createOrder({ + orderId = await createOrder( { customerId, productId, customerBilling, customerShipping, - }); + } ); // Login and open All Orders view await merchant.login(); await merchant.openAllOrdersView(); - }); + } ); - it('can search for order by order id', async () => { + it( 'can search for order by order id', async () => { // Convert the order ID to string so we can search on it - await searchForOrder(orderId.toString(), orderId, searchString); - }); + await searchForOrder( orderId.toString(), orderId, searchString ); + } ); - it.each(queries)( + it.each( queries )( 'can search for order containing "%s" as the %s', - async (value) => { - await searchForOrder(value, orderId, searchString); + async ( value ) => { + await searchForOrder( value, orderId, searchString ); } ); /** * shipping state is abbreviated. This test passes if billing and shipping state are the same */ - it.skip('can search for order by shipping state name', async () => { - await searchForOrder('New York', orderId, searchString); - }) - }); + it.skip( 'can search for order by shipping state name', async () => { + await searchForOrder( 'New York', orderId, searchString ); + } ); + } ); }; module.exports = runOrderSearchingTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-status-filters.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-status-filters.test.js index 75b970184c1..5079febf1b0 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-status-filters.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-order-status-filters.test.js @@ -12,13 +12,13 @@ const statusColumnTextSelector = 'mark.order-status > span'; // Define order statuses to filter against const orderStatus = [ - ['Pending payment', 'wc-pending'], - ['Processing', 'wc-processing'], - ['On hold', 'wc-on-hold'], - ['Completed', 'wc-completed'], - ['Cancelled', 'wc-cancelled'], - ['Refunded', 'wc-refunded'], - ['Failed', 'wc-failed'], + [ 'Pending payment', 'wc-pending' ], + [ 'Processing', 'wc-processing' ], + [ 'On hold', 'wc-on-hold' ], + [ 'Completed', 'wc-completed' ], + [ 'Cancelled', 'wc-cancelled' ], + [ 'Refunded', 'wc-refunded' ], + [ 'Failed', 'wc-failed' ], ]; const defaultOrder = { payment_method: 'cod', @@ -26,21 +26,21 @@ const defaultOrder = { first_name: 'John', last_name: 'Doe', email: 'john.doe@example.com', - } + }, }; const runOrderStatusFiltersTest = () => { - describe('WooCommerce Orders > Filter Orders by Status', () => { - beforeAll(async () => { + describe( 'WooCommerce Orders > Filter Orders by Status', () => { + beforeAll( async () => { // First, let's create some orders we can filter against - const orders = orderStatus.map((entryPair) => { - const statusName = entryPair[1].replace('wc-', ''); + const orders = orderStatus.map( ( entryPair ) => { + const statusName = entryPair[ 1 ].replace( 'wc-', '' ); return { ...defaultOrder, status: statusName, }; - }); + } ); // Create the orders using the API await withRestApi.batchCreateOrders( orders, false ); @@ -48,42 +48,53 @@ const runOrderStatusFiltersTest = () => { // Next, let's login and navigate to the Orders page await merchant.login(); await merchant.openAllOrdersView(); - }); + } ); afterAll( async () => { // Make sure we're on the all orders view and cleanup the orders we created await merchant.openAllOrdersView(); await moveAllItemsToTrash(); - }); + } ); - it.each(orderStatus)('should filter by %s', async (statusText, statusClassName) => { - // Identify which statuses should be shown or hidden - const shownStatus = { text: statusText }; - const hiddenStatuses = orderStatus - .filter((pair) => !pair.includes(statusText)) - .map(([statusText]) => { - return { text: statusText }; - }); + it.each( orderStatus )( + 'should filter by %s', + async ( statusText, statusClassName ) => { + // Identify which statuses should be shown or hidden + const shownStatus = { text: statusText }; + const hiddenStatuses = orderStatus + .filter( ( pair ) => ! pair.includes( statusText ) ) + .map( ( [ statusText ] ) => { + return { text: statusText }; + } ); - // Click the status filter and verify that only the matching order is shown - await clickFilter('.' + statusClassName); - await expect(page).toMatchElement(statusColumnTextSelector, shownStatus); + // Click the status filter and verify that only the matching order is shown + await clickFilter( '.' + statusClassName ); + await expect( page ).toMatchElement( + statusColumnTextSelector, + shownStatus + ); - // Verify other statuses don't show - for (const hiddenStatus of hiddenStatuses) { - await expect(page).not.toMatchElement(statusColumnTextSelector, hiddenStatus); + // Verify other statuses don't show + for ( const hiddenStatus of hiddenStatuses ) { + await expect( page ).not.toMatchElement( + statusColumnTextSelector, + hiddenStatus + ); + } } - }); + ); - it('should filter by All', async () => { + it( 'should filter by All', async () => { // Make sure all the order statuses that were created show in this list - await clickFilter('.all'); + await clickFilter( '.all' ); - for (const [statusText] of orderStatus) { - await expect(page).toMatchElement(statusColumnTextSelector, { text: statusText }); + for ( const [ statusText ] of orderStatus ) { + await expect( page ).toMatchElement( statusColumnTextSelector, { + text: statusText, + } ); } - }); - }); + } ); + } ); }; module.exports = runOrderStatusFiltersTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-page-loads.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-page-loads.test.js index 8a4226d0017..a2cf1db6183 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-page-loads.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-page-loads.test.js @@ -11,7 +11,7 @@ const { it, describe, beforeAll } = require( '@jest/globals' ); const runPageLoadTest = () => { describe.each( MENUS )( - ' %s > Opening Top Level Pages', + '%s > Opening Top Level Pages', ( menuTitle, menuElement, subMenus ) => { beforeAll( async () => { await merchant.login(); @@ -34,9 +34,11 @@ const runPageLoadTest = () => { // Click sub-menu item and wait for the page to finish loading if ( subMenuElement.length ) { - await Promise.all([ + await Promise.all( [ page.click( subMenuElement ), - page.waitForNavigation( { waitUntil: 'networkidle0' } ), + page.waitForNavigation( { + waitUntil: 'networkidle0', + } ), ] ); } diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-edit-details.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-edit-details.test.js index 7e3bbf489de..7863deaa974 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-edit-details.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-edit-details.test.js @@ -18,37 +18,43 @@ const { it, describe, beforeAll } = require( '@jest/globals' ); let productId; const runProductEditDetailsTest = () => { - describe('Products > Edit Product', () => { - beforeAll(async () => { + describe( 'Products > Edit Product', () => { + beforeAll( async () => { productId = await createSimpleProduct(); await merchant.login(); - }); + } ); - it('can edit a product and save the changes', async () => { - await merchant.goToProduct(productId); + it( 'can edit a product and save the changes', async () => { + await merchant.goToProduct( productId ); // Clear the input fields first, then add the new values - await expect(page).toFill('#title', ''); - await expect(page).toFill('#_regular_price', ''); + await expect( page ).toFill( '#title', '' ); + await expect( page ).toFill( '#_regular_price', '' ); - await expect(page).toFill('#title', 'Awesome product'); + await expect( page ).toFill( '#title', 'Awesome product' ); // Switch to text mode to work around the iframe - await expect(page).toClick('#content-html'); - await expect(page).toFill('.wp-editor-area', 'This product is pretty awesome.'); + await expect( page ).toClick( '#content-html' ); + await expect( page ).toFill( + '.wp-editor-area', + 'This product is pretty awesome.' + ); - await expect(page).toFill('#_regular_price', '100.05'); + await expect( page ).toFill( '#_regular_price', '100.05' ); // Save the changes - await verifyAndPublish('Product updated.'); + await verifyAndPublish( 'Product updated.' ); await uiUnblocked(); // Verify the changes saved - await expect(page).toMatchElement('#title', 'Awesome product'); - await expect(page).toMatchElement('.wp-editor-area', 'This product is pretty awesome.'); - await expect(page).toMatchElement('#_regular_price', '100.05'); - }); - }); -} + await expect( page ).toMatchElement( '#title', 'Awesome product' ); + await expect( page ).toMatchElement( + '.wp-editor-area', + 'This product is pretty awesome.' + ); + await expect( page ).toMatchElement( '#_regular_price', '100.05' ); + } ); + } ); +}; module.exports = runProductEditDetailsTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-import-csv.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-import-csv.test.js index 2c79d670a5e..eb356e0c2f0 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-import-csv.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-import-csv.test.js @@ -104,13 +104,13 @@ const runImportProductsTest = () => { await merchant.openImportProducts(); } ); - afterAll(async () => { + afterAll( async () => { // Delete imported products await withRestApi.deleteAllProducts(); await withRestApi.deleteAllProductAttributes( false ); await withRestApi.deleteAllProductCategories( false ); await withRestApi.deleteAllProductTags( false ); - }); + } ); it( 'should show error message if you go without providing CSV file', async () => { // Verify the error message if you go without providing CSV file diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-new.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-new.test.js index e5ca29f502a..0b662011c1e 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-new.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-new.test.js @@ -13,22 +13,19 @@ const { waitForSelector, waitForSelectorWithoutThrow, } = require( '@woocommerce/e2e-utils' ); -const { - waitAndClick, -} = require( '@woocommerce/e2e-environment' ); +const { waitAndClick } = require( '@woocommerce/e2e-environment' ); /** * External dependencies */ -const { - it, - describe, -} = require( '@jest/globals' ); +const { it, describe } = require( '@jest/globals' ); const config = require( 'config' ); const VirtualProductName = 'Virtual Product Name'; const NonVirtualProductName = 'Non-Virtual Product Name'; -const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const defaultAttributes = [ 'val2', 'val1', 'val2' ]; const openNewProductAndVerify = async () => { @@ -36,13 +33,13 @@ const openNewProductAndVerify = async () => { await merchant.openNewProduct(); // Make sure we're on the add product page - await expect(page.title()).resolves.toMatch('Add new product'); -} + await expect( page.title() ).resolves.toMatch( 'Add new product' ); +}; /** * Select a variation action from the actions menu. * - * @param action item you selected from the variation actions menu + * @param action item you selected from the variation actions menu */ const selectVariationAction = async ( action ) => { await waitForSelector( page, 'select.variation_actions:not(:disabled)' ); @@ -67,9 +64,8 @@ const expandVariations = async () => { }; const runAddSimpleProductTest = () => { - describe('Add New Simple Product Page', () => { - it('can create simple virtual product and add it to the cart', async () => { - + describe( 'Add New Simple Product Page', () => { + it( 'can create simple virtual product and add it to the cart', async () => { // @todo: remove this once https://github.com/woocommerce/woocommerce/issues/31337 has been addressed await setBrowserViewport( { width: 970, @@ -80,30 +76,35 @@ const runAddSimpleProductTest = () => { await openNewProductAndVerify(); // Set product data and publish the product - await expect(page).toFill('#title', VirtualProductName); - await expect(page).toClick('#_virtual'); - await clickTab('General'); - await expect(page).toFill('#_regular_price', simpleProductPrice); + await expect( page ).toFill( '#title', VirtualProductName ); + await expect( page ).toClick( '#_virtual' ); + await clickTab( 'General' ); + await expect( page ).toFill( + '#_regular_price', + simpleProductPrice + ); await verifyAndPublish(); await merchant.logout(); - }); + } ); - it('can have a shopper add the simple virtual product to the cart', async () => { + it( 'can have a shopper add the simple virtual product to the cart', async () => { // See product in the shop and add it to the cart await shopper.goToShop(); - await shopper.addToCartFromShopPage(VirtualProductName); + await shopper.addToCartFromShopPage( VirtualProductName ); await shopper.goToCart(); - await shopper.productIsInCart(VirtualProductName); + await shopper.productIsInCart( VirtualProductName ); // Assert that the page does not contain shipping calculation button - await expect(page).not.toMatchElement('a.shipping-calculator-button'); + await expect( page ).not.toMatchElement( + 'a.shipping-calculator-button' + ); // Remove product from cart - await shopper.removeFromCart(VirtualProductName); - }); + await shopper.removeFromCart( VirtualProductName ); + } ); - it('can create simple non-virtual product and add it to the cart', async () => { + it( 'can create simple non-virtual product and add it to the cart', async () => { // @todo: remove this once https://github.com/woocommerce/woocommerce/issues/31337 has been addressed await setBrowserViewport( { width: 960, @@ -114,74 +115,104 @@ const runAddSimpleProductTest = () => { await openNewProductAndVerify(); // Set product data and publish the product - await expect(page).toFill('#title', NonVirtualProductName); - await clickTab('General'); - await expect(page).toFill('#_regular_price', simpleProductPrice); + await expect( page ).toFill( '#title', NonVirtualProductName ); + await clickTab( 'General' ); + await expect( page ).toFill( + '#_regular_price', + simpleProductPrice + ); await verifyAndPublish(); await merchant.logout(); - }); + } ); - it('can have a shopper add the simple non-virtual product to the cart', async () => { + it( 'can have a shopper add the simple non-virtual product to the cart', async () => { // See product in the shop and add it to the cart await shopper.goToShop(); - await page.reload({ waitUntil: ['networkidle0', 'domcontentloaded'] }); + await page.reload( { + waitUntil: [ 'networkidle0', 'domcontentloaded' ], + } ); - await shopper.addToCartFromShopPage(NonVirtualProductName); + await shopper.addToCartFromShopPage( NonVirtualProductName ); await shopper.goToCart(); - await shopper.productIsInCart(NonVirtualProductName); + await shopper.productIsInCart( NonVirtualProductName ); // Assert that the page does contain shipping calculation button - await page.waitForSelector('a.shipping-calculator-button'); - await expect(page).toMatchElement('a.shipping-calculator-button'); + await page.waitForSelector( 'a.shipping-calculator-button' ); + await expect( page ).toMatchElement( + 'a.shipping-calculator-button' + ); // Remove product from cart - await shopper.removeFromCart(NonVirtualProductName); - }); - }); + await shopper.removeFromCart( NonVirtualProductName ); + } ); + } ); }; const runAddVariableProductTest = () => { - describe('Add New Variable Product Page', () => { - it('can create product with variations', async () => { + describe( 'Add New Variable Product Page', () => { + it( 'can create product with variations', async () => { await merchant.login(); await openNewProductAndVerify(); // Set product data - await expect(page).toFill('#title', 'Variable Product with Three Variations'); - await expect(page).toSelect('#product-type', 'Variable product'); - }); - - it('can create set variable product attributes', async () => { + await expect( page ).toFill( + '#title', + 'Variable Product with Three Variations' + ); + await expect( page ).toSelect( + '#product-type', + 'Variable product' + ); + } ); + it( 'can create set variable product attributes', async () => { // Create attributes for variations await waitAndClick( page, '.attribute_tab a' ); - await expect( page ).toSelect( 'select[name="attribute_taxonomy"]', 'Custom product attribute' ); + await expect( page ).toSelect( + 'select[name="attribute_taxonomy"]', + 'Custom product attribute' + ); for ( let i = 0; i < 3; i++ ) { - await expect(page).toClick( 'button.add_attribute', {text: 'Add'} ); + await expect( page ).toClick( 'button.add_attribute', { + text: 'Add', + } ); // Wait for attribute form to load await uiUnblocked(); - await page.focus(`input[name="attribute_names[${i}]"]`); - await expect(page).toFill(`input[name="attribute_names[${i}]"]`, 'attr #' + (i + 1)); - await expect(page).toFill(`textarea[name="attribute_values[${i}]"]`, 'val1 | val2'); - await waitAndClick( page, `input[name="attribute_variation[${i}]"]`); + await page.focus( `input[name="attribute_names[${ i }]"]` ); + await expect( page ).toFill( + `input[name="attribute_names[${ i }]"]`, + 'attr #' + ( i + 1 ) + ); + await expect( page ).toFill( + `textarea[name="attribute_values[${ i }]"]`, + 'val1 | val2' + ); + await waitAndClick( + page, + `input[name="attribute_variation[${ i }]"]` + ); } - await expect(page).toClick( 'button', {text: 'Save attributes'}); + await expect( page ).toClick( 'button', { + text: 'Save attributes', + } ); // Wait for attribute form to save (triggers 2 UI blocks) await uiUnblocked(); await uiUnblocked(); - }); + } ); - it('can create variations from all attributes', async () => { + it( 'can create variations from all attributes', async () => { // Create variations from attributes await waitForSelector( page, '.variations_tab' ); await waitAndClick( page, '.variations_tab a' ); - await selectVariationAction('Create variations from all attributes'); + await selectVariationAction( + 'Create variations from all attributes' + ); // headless: false doesn't require this const firstDialog = await expect( page ).toDisplayDialog( @@ -190,24 +221,22 @@ const runAddVariableProductTest = () => { } ); - await expect(firstDialog.message()).toMatch('Are you sure you want to link all variations?'); + await expect( firstDialog.message() ).toMatch( + 'Are you sure you want to link all variations?' + ); // Set some variation data await uiUnblocked(); await uiUnblocked(); - }); + } ); - it('can add variation attributes', async () => { + it( 'can add variation attributes', async () => { await waitAndClick( page, '.variations_tab a' ); await uiUnblocked(); - await waitForSelector( - page, - 'select[name="attribute_attr-1[0]"]', - { - visible: true, - timeout: 5000 - } - ); + await waitForSelector( page, 'select[name="attribute_attr-1[0]"]', { + visible: true, + timeout: 5000, + } ); // Verify that variations were created for ( let index = 0; index < 8; index++ ) { @@ -215,34 +244,67 @@ const runAddVariableProductTest = () => { const val2 = { text: 'val2' }; // odd / even - let attr3 = !! ( index % 2 ); + const attr3 = !! ( index % 2 ); // 0-1,4-5 / 2-3,6-7 - let attr2 = ( index % 4 ) > 1; + const attr2 = index % 4 > 1; // 0-3 / 4-7 - let attr1 = ( index > 3 ); + const attr1 = index > 3; - await expect( page ).toMatchElement( `select[name="attribute_attr-1[${index}]"]`, attr1 ? val2 : val1 ); - await expect( page ).toMatchElement( `select[name="attribute_attr-2[${index}]"]`, attr2 ? val2 : val1 ); - await expect( page ).toMatchElement( `select[name="attribute_attr-3[${index}]"]`, attr3 ? val2 : val1 ); + await expect( page ).toMatchElement( + `select[name="attribute_attr-1[${ index }]"]`, + attr1 ? val2 : val1 + ); + await expect( page ).toMatchElement( + `select[name="attribute_attr-2[${ index }]"]`, + attr2 ? val2 : val1 + ); + await expect( page ).toMatchElement( + `select[name="attribute_attr-3[${ index }]"]`, + attr3 ? val2 : val1 + ); } await expandVariations(); - await waitForSelectorWithoutThrow( 'input[name="variable_is_virtual[0]"]', 5 ); - await setCheckbox('input[name="variable_is_virtual[0]"]'); - await expect(page).toFill('input[name="variable_regular_price[0]"]', '9.99'); + await waitForSelectorWithoutThrow( + 'input[name="variable_is_virtual[0]"]', + 5 + ); + await setCheckbox( 'input[name="variable_is_virtual[0]"]' ); + await expect( page ).toFill( + 'input[name="variable_regular_price[0]"]', + '9.99' + ); - await setCheckbox('input[name="variable_is_virtual[1]"]'); - await expect(page).toFill('input[name="variable_regular_price[1]"]', '11.99'); + await setCheckbox( 'input[name="variable_is_virtual[1]"]' ); + await expect( page ).toFill( + 'input[name="variable_regular_price[1]"]', + '11.99' + ); - await setCheckbox('input[name="variable_manage_stock[2]"]'); - await expect(page).toFill('input[name="variable_regular_price[2]"]', '20'); - await expect(page).toFill('input[name="variable_weight[2]"]', '200'); - await expect(page).toFill('input[name="variable_length[2]"]', '10'); - await expect(page).toFill('input[name="variable_width[2]"]', '20'); - await expect(page).toFill('input[name="variable_height[2]"]', '15'); + await setCheckbox( 'input[name="variable_manage_stock[2]"]' ); + await expect( page ).toFill( + 'input[name="variable_regular_price[2]"]', + '20' + ); + await expect( page ).toFill( + 'input[name="variable_weight[2]"]', + '200' + ); + await expect( page ).toFill( + 'input[name="variable_length[2]"]', + '10' + ); + await expect( page ).toFill( + 'input[name="variable_width[2]"]', + '20' + ); + await expect( page ).toFill( + 'input[name="variable_height[2]"]', + '15' + ); await saveChanges(); - }); + } ); it( 'can bulk-edit variations', async () => { // Verify that all 'Downloadable' checkboxes are UNCHECKED. @@ -258,7 +320,7 @@ const runAddVariableProductTest = () => { } // Perform the 'Toggle "Downloadable"' bulk action - await selectVariationAction('Toggle "Downloadable"'); + await selectVariationAction( 'Toggle "Downloadable"' ); await clickGoButton(); await uiUnblocked(); @@ -407,7 +469,7 @@ const runAddVariableProductTest = () => { const variationsCount = await page.$$( '.woocommerce_variation' ); expect( variationsCount ).toHaveLength( 0 ); } ); - }); + } ); }; module.exports = { diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-search.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-search.test.js index d397c5685dc..0780eccf288 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-search.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-product-search.test.js @@ -3,76 +3,88 @@ /** * Internal dependencies */ -const { - merchant, - createSimpleProduct -} = require( '@woocommerce/e2e-utils' ); +const { merchant, createSimpleProduct } = require( '@woocommerce/e2e-utils' ); const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); -const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const runProductSearchTest = () => { - describe('Products > Search and View a product', () => { - beforeAll(async () => { + describe( 'Products > Search and View a product', () => { + beforeAll( async () => { await createSimpleProduct(); // Make sure the simple product name is greater than 1 to do a search - await expect(simpleProductName.length).toBeGreaterThan(1); + await expect( simpleProductName.length ).toBeGreaterThan( 1 ); await merchant.login(); - }); + } ); - beforeEach(async () => { + beforeEach( async () => { await merchant.openAllProductsView(); - }); + } ); - it('can do a partial search for a product', async () => { + it( 'can do a partial search for a product', async () => { // Create partial search string - let searchString = simpleProductName.substring(0, (simpleProductName.length / 2)); - await expect(page).toFill('#post-search-input', searchString); + const searchString = simpleProductName.substring( + 0, + simpleProductName.length / 2 + ); + await expect( page ).toFill( '#post-search-input', searchString ); // Click search and wait for the page to finish loading await Promise.all( [ page.click( '#search-submit' ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); // Verify we are getting the results back in the list - await expect(page).toMatchElement('.row-title', { text: simpleProductName }); - }); + await expect( page ).toMatchElement( '.row-title', { + text: simpleProductName, + } ); + } ); - it('can view a product\'s details after search', async () => { - await expect(page).toFill('#post-search-input', simpleProductName); + it( "can view a product's details after search", async () => { + await expect( page ).toFill( + '#post-search-input', + simpleProductName + ); await Promise.all( [ page.click( '#search-submit' ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); // Click to view the product and wait for the page to finish loading await Promise.all( [ - expect(page).toClick('.row-title', simpleProductName), + expect( page ).toClick( '.row-title', simpleProductName ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); - await expect(page).toMatchElement('#title', simpleProductName); - await expect(page).toMatchElement('#_regular_price', simpleProductPrice); - }); + await expect( page ).toMatchElement( '#title', simpleProductName ); + await expect( page ).toMatchElement( + '#_regular_price', + simpleProductPrice + ); + } ); - it('returns no results for non-existent product search', async () => { - await expect(page).toFill('#post-search-input', 'abcd1234'); + it( 'returns no results for non-existent product search', async () => { + await expect( page ).toFill( '#post-search-input', 'abcd1234' ); // Click search and wait for the page to finish loading await Promise.all( [ page.click( '#search-submit' ), page.waitForNavigation( { waitUntil: 'networkidle0' } ), - ]); + ] ); // Verify we are getting the results back in the list - await expect(page).toMatchElement('.no-items', { text: 'No products found' }); - }); - }); -} + await expect( page ).toMatchElement( '.no-items', { + text: 'No products found', + } ); + } ); + } ); +}; module.exports = runProductSearchTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-general.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-general.test.js index 9198d5ceb4e..e4200ec3976 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-general.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-general.test.js @@ -11,74 +11,126 @@ const { /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); const runUpdateGeneralSettingsTest = () => { - describe('WooCommerce General Settings', () => { - beforeAll(async () => { + describe( 'WooCommerce General Settings', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can update settings', async () => { + it( 'can update settings', async () => { // Go to general settings page - await merchant.openSettings('general'); + await merchant.openSettings( 'general' ); // Make sure the general tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'General'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'General', + } ); // Set selling location to all countries first, // so we can choose california as base location. - await expect(page).toSelect('#woocommerce_allowed_countries', 'Sell to all countries'); + await expect( page ).toSelect( + '#woocommerce_allowed_countries', + 'Sell to all countries' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_allowed_countries', {text: 'Sell to all countries'}), - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( + '#woocommerce_allowed_countries', + { text: 'Sell to all countries' } + ), + ] ); // Set base location with state CA. - await expect(page).toSelect('select[name="woocommerce_default_country"]', 'United States (US) — California'); + await expect( page ).toSelect( + 'select[name="woocommerce_default_country"]', + 'United States (US) — California' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('select[name="woocommerce_default_country"]', {text: 'United States (US) — California'}), - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( + page + ).toMatchElement( + 'select[name="woocommerce_default_country"]', + { text: 'United States (US) — California' } + ), + ] ); // Set selling location to specific countries first, so we can choose U.S as base location (without state). // This will makes specific countries option appears. - await expect(page).toSelect('#woocommerce_allowed_countries', 'Sell to specific countries'); - await expect(page).toSelect('select[name="woocommerce_specific_allowed_countries[]"]', 'United States (US)'); + await expect( page ).toSelect( + '#woocommerce_allowed_countries', + 'Sell to specific countries' + ); + await expect( page ).toSelect( + 'select[name="woocommerce_specific_allowed_countries[]"]', + 'United States (US)' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_allowed_countries', {text: 'Sell to specific countries'}), - expect(page).toMatchElement('select[name="woocommerce_specific_allowed_countries[]"]', {text: 'United States (US)'}), - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( + '#woocommerce_allowed_countries', + { text: 'Sell to specific countries' } + ), + expect( + page + ).toMatchElement( + 'select[name="woocommerce_specific_allowed_countries[]"]', + { text: 'United States (US)' } + ), + ] ); // Set currency options. - await expect(page).toFill('#woocommerce_price_thousand_sep', ','); - await expect(page).toFill('#woocommerce_price_decimal_sep', '.'); - await expect(page).toFill('#woocommerce_price_num_decimals', '2'); + await expect( page ).toFill( + '#woocommerce_price_thousand_sep', + ',' + ); + await expect( page ).toFill( + '#woocommerce_price_decimal_sep', + '.' + ); + await expect( page ).toFill( + '#woocommerce_price_num_decimals', + '2' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - verifyValueOfInputField('#woocommerce_price_thousand_sep', ','), - verifyValueOfInputField('#woocommerce_price_decimal_sep', '.'), - verifyValueOfInputField('#woocommerce_price_num_decimals', '2'), - ]); - }); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + verifyValueOfInputField( + '#woocommerce_price_thousand_sep', + ',' + ), + verifyValueOfInputField( + '#woocommerce_price_decimal_sep', + '.' + ), + verifyValueOfInputField( + '#woocommerce_price_num_decimals', + '2' + ), + ] ); + } ); + } ); }; module.exports = runUpdateGeneralSettingsTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-product.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-product.test.js index a88e29db467..dab40e7df7f 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-product.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-product.test.js @@ -12,65 +12,124 @@ const { } = require( '@woocommerce/e2e-utils' ); const runProductSettingsTest = () => { - describe('WooCommerce Products > Downloadable Products Settings', () => { - beforeAll(async () => { + describe( 'WooCommerce Products > Downloadable Products Settings', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can update settings', async () => { + it( 'can update settings', async () => { // Go to downloadable products settings page - await merchant.openSettings('products', 'downloadable'); + await merchant.openSettings( 'products', 'downloadable' ); // Make sure the product tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'Products'}); - await expect(page).toMatchElement('ul.subsubsub > li > a.current', {text: 'Downloadable products'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'Products', + } ); + await expect( page ).toMatchElement( + 'ul.subsubsub > li > a.current', + { + text: 'Downloadable products', + } + ); - await expect(page).toSelect('#woocommerce_file_download_method', 'Redirect only (Insecure)'); - await setCheckbox('#woocommerce_downloads_require_login'); - await setCheckbox('#woocommerce_downloads_grant_access_after_payment'); - await setCheckbox('#woocommerce_downloads_redirect_fallback_allowed'); - await unsetCheckbox('#woocommerce_downloads_add_hash_to_filename'); + await expect( page ).toSelect( + '#woocommerce_file_download_method', + 'Redirect only (Insecure)' + ); + await setCheckbox( '#woocommerce_downloads_require_login' ); + await setCheckbox( + '#woocommerce_downloads_grant_access_after_payment' + ); + await setCheckbox( + '#woocommerce_downloads_redirect_fallback_allowed' + ); + await unsetCheckbox( + '#woocommerce_downloads_add_hash_to_filename' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_file_download_method', {text: 'Redirect only (Insecure)'}), - verifyCheckboxIsSet('#woocommerce_downloads_require_login'), - verifyCheckboxIsSet('#woocommerce_downloads_grant_access_after_payment'), - verifyCheckboxIsSet('#woocommerce_downloads_redirect_fallback_allowed'), - verifyCheckboxIsUnset('#woocommerce_downloads_add_hash_to_filename') - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( + '#woocommerce_file_download_method', + { + text: 'Redirect only (Insecure)', + } + ), + verifyCheckboxIsSet( '#woocommerce_downloads_require_login' ), + verifyCheckboxIsSet( + '#woocommerce_downloads_grant_access_after_payment' + ), + verifyCheckboxIsSet( + '#woocommerce_downloads_redirect_fallback_allowed' + ), + verifyCheckboxIsUnset( + '#woocommerce_downloads_add_hash_to_filename' + ), + ] ); await page.reload(); - await expect(page).toSelect('#woocommerce_file_download_method', 'X-Accel-Redirect/X-Sendfile'); - await unsetCheckbox('#woocommerce_downloads_require_login'); - await unsetCheckbox('#woocommerce_downloads_grant_access_after_payment'); - await unsetCheckbox('#woocommerce_downloads_redirect_fallback_allowed'); - await setCheckbox('#woocommerce_downloads_add_hash_to_filename'); + await expect( page ).toSelect( + '#woocommerce_file_download_method', + 'X-Accel-Redirect/X-Sendfile' + ); + await unsetCheckbox( '#woocommerce_downloads_require_login' ); + await unsetCheckbox( + '#woocommerce_downloads_grant_access_after_payment' + ); + await unsetCheckbox( + '#woocommerce_downloads_redirect_fallback_allowed' + ); + await setCheckbox( '#woocommerce_downloads_add_hash_to_filename' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_file_download_method', {text: 'X-Accel-Redirect/X-Sendfile'}), - verifyCheckboxIsUnset('#woocommerce_downloads_require_login'), - verifyCheckboxIsUnset('#woocommerce_downloads_grant_access_after_payment'), - verifyCheckboxIsUnset('#woocommerce_downloads_redirect_fallback_allowed'), - verifyCheckboxIsSet('#woocommerce_downloads_add_hash_to_filename') - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( + '#woocommerce_file_download_method', + { + text: 'X-Accel-Redirect/X-Sendfile', + } + ), + verifyCheckboxIsUnset( '#woocommerce_downloads_require_login' ), + verifyCheckboxIsUnset( + '#woocommerce_downloads_grant_access_after_payment' + ), + verifyCheckboxIsUnset( + '#woocommerce_downloads_redirect_fallback_allowed' + ), + verifyCheckboxIsSet( + '#woocommerce_downloads_add_hash_to_filename' + ), + ] ); await page.reload(); - await expect(page).toSelect('#woocommerce_file_download_method', 'Force downloads'); + await expect( page ).toSelect( + '#woocommerce_file_download_method', + 'Force downloads' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_file_download_method', {text: 'Force downloads'}) - ]); - }); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( + '#woocommerce_file_download_method', + { + text: 'Force downloads', + } + ), + ] ); + } ); + } ); }; module.exports = runProductSettingsTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-classes.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-classes.test.js index 323b33b14ef..e7d1e977b32 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-classes.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-classes.test.js @@ -1,72 +1,76 @@ /** * Internal dependencies */ -const { merchant, withRestApi } = require('@woocommerce/e2e-utils'); +const { merchant, withRestApi } = require( '@woocommerce/e2e-utils' ); const runAddShippingClassesTest = () => { - describe('Merchant can add shipping classes', () => { - beforeAll(async () => { + describe( 'Merchant can add shipping classes', () => { + beforeAll( async () => { await merchant.login(); // Go to Shipping Classes page - await merchant.openSettings('shipping', 'classes'); - }); + await merchant.openSettings( 'shipping', 'classes' ); + } ); - afterAll(async () => { + afterAll( async () => { await withRestApi.deleteAllShippingClasses( false ); - }); + } ); - it('can add shipping classes', async () => { + it( 'can add shipping classes', async () => { const shippingClassSlug = { name: 'Small Items', slug: 'small-items', - description: 'Small items that don\'t cost much to ship.' + description: "Small items that don't cost much to ship.", }; const shippingClassNoSlug = { name: 'Poster Pack', slug: '', - description: '' + description: '', }; - const shippingClasses = [shippingClassSlug, shippingClassNoSlug]; + const shippingClasses = [ shippingClassSlug, shippingClassNoSlug ]; // Add shipping classes - for (const { name, slug, description } of shippingClasses) { - await expect(page).toClick('.wc-shipping-class-add'); - await expect(page).toFill( + for ( const { name, slug, description } of shippingClasses ) { + await expect( page ).toClick( '.wc-shipping-class-add' ); + await expect( page ).toFill( '.editing:last-child [data-attribute="name"]', name ); - await expect(page).toFill( + await expect( page ).toFill( '.editing:last-child [data-attribute="slug"]', slug ); - await expect(page).toFill( + await expect( page ).toFill( '.editing:last-child [data-attribute="description"]', description ); } - await expect(page).toClick('.wc-shipping-class-save'); + await expect( page ).toClick( '.wc-shipping-class-save' ); // Set the expected auto-generated slug shippingClassNoSlug.slug = 'poster-pack'; // Verify that the specified shipping classes were saved - for (const { name, slug, description } of shippingClasses) { - const row = await expect( - page - ).toMatchElement('.wc-shipping-class-rows tr', { text: slug, timeout: 50000 }); + for ( const { name, slug, description } of shippingClasses ) { + const row = await expect( page ).toMatchElement( + '.wc-shipping-class-rows tr', + { + text: slug, + timeout: 50000, + } + ); - await expect(row).toMatchElement( + await expect( row ).toMatchElement( '.wc-shipping-class-name', name ); - await expect(row).toMatchElement( + await expect( row ).toMatchElement( '.wc-shipping-class-description', description ); } - }); - }); + } ); + } ); }; module.exports = runAddShippingClassesTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-zones.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-zones.test.js index ec59ac1df15..db096d1dc75 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-zones.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-shipping-zones.test.js @@ -15,14 +15,12 @@ const { /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); const config = require( 'config' ); -const simpleProductPrice = config.has( 'products.simple.price' ) ? config.get( 'products.simple.price' ) : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const california = 'state:US:CA'; const sanFranciscoZIP = '94107'; const shippingZoneNameUS = 'US with Flat rate'; @@ -30,41 +28,56 @@ const shippingZoneNameFL = 'CA with Free shipping'; const shippingZoneNameSF = 'SF with Local pickup'; const runAddNewShippingZoneTest = () => { - describe('WooCommerce Shipping Settings - Add new shipping zone', () => { + describe( 'WooCommerce Shipping Settings - Add new shipping zone', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); await withRestApi.deleteAllShippingZones( false ); await merchant.login(); - }); + } ); afterAll( async () => { await shopper.logout(); } ); - it('add shipping zone for San Francisco with free Local pickup', async () => { + it( 'add shipping zone for San Francisco with free Local pickup', async () => { // Add a new shipping zone for San Francisco 94107, CA, US with Local pickup - await addShippingZoneAndMethod(shippingZoneNameSF, california, sanFranciscoZIP, 'local_pickup'); - }); + await addShippingZoneAndMethod( + shippingZoneNameSF, + california, + sanFranciscoZIP, + 'local_pickup' + ); + } ); - it('add shipping zone for California with Free shipping', async () => { + it( 'add shipping zone for California with Free shipping', async () => { // Add a new shipping zone for CA, US with Free shipping - await addShippingZoneAndMethod(shippingZoneNameFL, california, ' ', 'free_shipping'); - }); + await addShippingZoneAndMethod( + shippingZoneNameFL, + california, + ' ', + 'free_shipping' + ); + } ); - it('add shipping zone for the US with Flat rate', async () => { + it( 'add shipping zone for the US with Flat rate', async () => { // Add a new shipping zone for the US with Flat rate - await addShippingZoneAndMethod(shippingZoneNameUS); + await addShippingZoneAndMethod( shippingZoneNameUS ); // Set Flat rate cost - await expect(page).toClick('a.wc-shipping-zone-method-settings', {text: 'Flat rate'}); - await clearAndFillInput('#woocommerce_flat_rate_cost', '10'); - await expect(page).toClick('.wc-backbone-modal-main button#btn-ok'); + await expect( page ).toClick( + 'a.wc-shipping-zone-method-settings', + { text: 'Flat rate' } + ); + await clearAndFillInput( '#woocommerce_flat_rate_cost', '10' ); + await expect( page ).toClick( + '.wc-backbone-modal-main button#btn-ok' + ); await merchant.logout(); - }); + } ); - it('allows customer to pay for a Flat rate shipping method', async() => { + it( 'allows customer to pay for a Flat rate shipping method', async () => { await shopper.login(); // Add product to cart as a shopper @@ -73,61 +86,85 @@ const runAddNewShippingZoneTest = () => { await shopper.goToCart(); // Set shipping country to United States (US) - await expect(page).toClick('a.shipping-calculator-button'); - await expect(page).toClick('#select2-calc_shipping_country-container'); - await selectOptionInSelect2('United States (US)'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await expect( page ).toClick( + '#select2-calc_shipping_country-container' + ); + await selectOptionInSelect2( 'United States (US)' ); // Set shipping state to New York - await expect(page).toClick('#select2-calc_shipping_state-container'); - await selectOptionInSelect2('New York'); - await expect(page).toClick('button[name="calc_shipping"]'); + await expect( page ).toClick( + '#select2-calc_shipping_state-container' + ); + await selectOptionInSelect2( 'New York' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping costs - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping .amount', {text: '$10.00'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$1${simpleProductPrice}`}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.shipping .amount', { + text: '$10.00', + } ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$1${ simpleProductPrice }`, + } ); + } ); - it('allows customer to benefit from a Free shipping if in CA', async () => { + it( 'allows customer to benefit from a Free shipping if in CA', async () => { await page.reload(); // Set shipping state to California - await expect(page).toClick('a.shipping-calculator-button'); - await expect(page).toClick('#select2-calc_shipping_state-container'); - await selectOptionInSelect2('California'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await expect( page ).toClick( + '#select2-calc_shipping_state-container' + ); + await selectOptionInSelect2( 'California' ); // Set shipping postcode to 94000 - await clearAndFillInput('#calc_shipping_postcode', '94000'); - await expect(page).toClick('button[name="calc_shipping"]'); + await clearAndFillInput( '#calc_shipping_postcode', '94000' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping method and cost - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping ul#shipping_method > li', {text: 'Free shipping'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$${simpleProductPrice}`}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( + '.shipping ul#shipping_method > li', + { + text: 'Free shipping', + } + ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ simpleProductPrice }`, + } ); + } ); - it('allows customer to benefit from a free Local pickup if in SF', async () => { + it( 'allows customer to benefit from a free Local pickup if in SF', async () => { await page.reload(); // Set shipping postcode to 94107 - await expect(page).toClick('a.shipping-calculator-button'); - await clearAndFillInput('#calc_shipping_postcode', '94107'); - await expect(page).toClick('button[name="calc_shipping"]'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await clearAndFillInput( '#calc_shipping_postcode', '94107' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping method and cost - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping ul#shipping_method > li', {text: 'Local pickup'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$${simpleProductPrice}`}); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( + '.shipping ul#shipping_method > li', + { + text: 'Local pickup', + } + ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ simpleProductPrice }`, + } ); await shopper.removeFromCart( productId ); - }); - }); + } ); + } ); }; module.exports = runAddNewShippingZoneTest; diff --git a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-tax.test.js b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-tax.test.js index f97f01a4c5a..1e891859aa2 100644 --- a/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-tax.test.js +++ b/packages/js/e2e-core-tests/src/specs/merchant/wp-admin-settings-tax.test.js @@ -14,165 +14,254 @@ const { /** * External dependencies */ -const { - it, - describe, - beforeAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll } = require( '@jest/globals' ); const runTaxSettingsTest = () => { - describe('WooCommerce Tax Settings', () => { - beforeAll(async () => { + describe( 'WooCommerce Tax Settings', () => { + beforeAll( async () => { await merchant.login(); - }); + } ); - it('can enable tax calculation', async () => { + it( 'can enable tax calculation', async () => { // Go to general settings page - await merchant.openSettings('general'); + await merchant.openSettings( 'general' ); // Make sure the general tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'General'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'General', + } ); // Enable tax calculation - await setCheckbox('input[name="woocommerce_calc_taxes"]'); + await setCheckbox( 'input[name="woocommerce_calc_taxes"]' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - verifyCheckboxIsSet('#woocommerce_calc_taxes'), - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + verifyCheckboxIsSet( '#woocommerce_calc_taxes' ), + ] ); // Verify that tax settings are now present - await expect(page).toMatchElement('a.nav-tab', {text: 'Tax'}); - }); + await expect( page ).toMatchElement( 'a.nav-tab', { text: 'Tax' } ); + } ); - it('can set tax options', async () => { + it( 'can set tax options', async () => { // Go to tax settings page - await merchant.openSettings('tax'); + await merchant.openSettings( 'tax' ); // Make sure the tax tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'Tax'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'Tax', + } ); // Prices exclusive of tax - await expect(page).toClick('input[name="woocommerce_prices_include_tax"][value="no"]'); + await expect( page ).toClick( + 'input[name="woocommerce_prices_include_tax"][value="no"]' + ); // Tax based on customer shipping address - await expect(page).toSelect('#woocommerce_tax_based_on', 'Customer shipping address'); + await expect( page ).toSelect( + '#woocommerce_tax_based_on', + 'Customer shipping address' + ); // Standard tax class for shipping - await expect(page).toSelect('#woocommerce_shipping_tax_class', 'Standard'); + await expect( page ).toSelect( + '#woocommerce_shipping_tax_class', + 'Standard' + ); // Leave rounding unchecked (no-op) // Display prices excluding tax - await expect(page).toSelect('#woocommerce_tax_display_shop', 'Excluding tax'); + await expect( page ).toSelect( + '#woocommerce_tax_display_shop', + 'Excluding tax' + ); // Display prices including tax in cart and at checkout - await expect(page).toSelect('#woocommerce_tax_display_cart', 'Including tax'); + await expect( page ).toSelect( + '#woocommerce_tax_display_cart', + 'Including tax' + ); // Display a single tax total - await expect(page).toSelect('#woocommerce_tax_total_display', 'As a single total'); + await expect( page ).toSelect( + '#woocommerce_tax_total_display', + 'As a single total' + ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - verifyValueOfInputField('input[name="woocommerce_prices_include_tax"][value="no"]', 'no'), - expect(page).toMatchElement('#woocommerce_tax_based_on', {text: 'Customer shipping address'}), - expect(page).toMatchElement('#woocommerce_shipping_tax_class', {text: 'Standard'}), - expect(page).toMatchElement('#woocommerce_tax_display_shop', {text: 'Excluding tax'}), - expect(page).toMatchElement('#woocommerce_tax_display_cart', {text: 'Including tax'}), - expect(page).toMatchElement('#woocommerce_tax_total_display', {text: 'As a single total'}), - ]); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + verifyValueOfInputField( + 'input[name="woocommerce_prices_include_tax"][value="no"]', + 'no' + ), + expect( page ).toMatchElement( '#woocommerce_tax_based_on', { + text: 'Customer shipping address', + } ), + expect( page ).toMatchElement( + '#woocommerce_shipping_tax_class', + { + text: 'Standard', + } + ), + expect( page ).toMatchElement( + '#woocommerce_tax_display_shop', + { text: 'Excluding tax' } + ), + expect( page ).toMatchElement( + '#woocommerce_tax_display_cart', + { text: 'Including tax' } + ), + expect( page ).toMatchElement( + '#woocommerce_tax_total_display', + { text: 'As a single total' } + ), + ] ); + } ); - it('can add tax classes', async () => { + it( 'can add tax classes', async () => { // Go to tax settings page - await merchant.openSettings('tax'); + await merchant.openSettings( 'tax' ); // Make sure the tax tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'Tax'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'Tax', + } ); // Remove additional tax classes - await clearAndFillInput('#woocommerce_tax_classes', ''); + await clearAndFillInput( '#woocommerce_tax_classes', '' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('#woocommerce_tax_classes', {text: ''}), - ]); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( '#woocommerce_tax_classes', { + text: '', + } ), + ] ); // Add a "fancy" tax class - await clearAndFillInput('#woocommerce_tax_classes', 'Fancy'); + await clearAndFillInput( '#woocommerce_tax_classes', 'Fancy' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).toMatchElement('ul.subsubsub > li > a', {text: 'Fancy rates'}), - ]); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).toMatchElement( 'ul.subsubsub > li > a', { + text: 'Fancy rates', + } ), + ] ); + } ); - it('can set rate settings', async () => { + it( 'can set rate settings', async () => { // Go to "fancy" rates tax settings page - await merchant.openSettings('tax', 'fancy'); + await merchant.openSettings( 'tax', 'fancy' ); // Make sure the tax tab is active, with the "fancy" subsection - await expect(page).toMatchElement('a.nav-tab-active', {text: 'Tax'}); - await expect(page).toMatchElement('ul.subsubsub > li > a.current', {text: 'Fancy rates'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'Tax', + } ); + await expect( page ).toMatchElement( + 'ul.subsubsub > li > a.current', + { + text: 'Fancy rates', + } + ); // Create a state tax - await expect(page).toClick('.wc_tax_rates a.insert'); - await expect(page).toFill('input[name^="tax_rate_country[new-0"]', 'US'); - await expect(page).toFill('input[name^="tax_rate_state[new-0"]', 'CA'); - await expect(page).toFill('input[name^="tax_rate[new-0"]', '7.5'); - await expect(page).toFill('input[name^="tax_rate_name[new-0"]', 'CA State Tax'); + await expect( page ).toClick( '.wc_tax_rates a.insert' ); + await expect( page ).toFill( + 'input[name^="tax_rate_country[new-0"]', + 'US' + ); + await expect( page ).toFill( + 'input[name^="tax_rate_state[new-0"]', + 'CA' + ); + await expect( page ).toFill( + 'input[name^="tax_rate[new-0"]', + '7.5' + ); + await expect( page ).toFill( + 'input[name^="tax_rate_name[new-0"]', + 'CA State Tax' + ); // Create a federal tax - await expect(page).toClick('.wc_tax_rates a.insert'); - await expect(page).toFill('input[name^="tax_rate_country[new-1"]', 'US'); - await expect(page).toFill('input[name^="tax_rate[new-1"]', '1.5'); - await expect(page).toFill('input[name^="tax_rate_priority[new-1"]', '2'); - await expect(page).toFill('input[name^="tax_rate_name[new-1"]', 'Federal Tax'); - await expect(page).toClick('input[name^="tax_rate_shipping[new-1"]'); + await expect( page ).toClick( '.wc_tax_rates a.insert' ); + await expect( page ).toFill( + 'input[name^="tax_rate_country[new-1"]', + 'US' + ); + await expect( page ).toFill( + 'input[name^="tax_rate[new-1"]', + '1.5' + ); + await expect( page ).toFill( + 'input[name^="tax_rate_priority[new-1"]', + '2' + ); + await expect( page ).toFill( + 'input[name^="tax_rate_name[new-1"]', + 'Federal Tax' + ); + await expect( page ).toClick( + 'input[name^="tax_rate_shipping[new-1"]' + ); // Save changes (AJAX here) - await expect(page).toClick('button.woocommerce-save-button'); + await expect( page ).toClick( 'button.woocommerce-save-button' ); await uiUnblocked(); // Verify 2 tax rates - expect(await page.$$('#rates tr')).toHaveLength(2); + expect( await page.$$( '#rates tr' ) ).toHaveLength( 2 ); // Delete federal rate - await expect(page).toClick('#rates tr:nth-child(2) input'); - await expect(page).toClick('.wc_tax_rates a.remove_tax_rates'); + await expect( page ).toClick( '#rates tr:nth-child(2) input' ); + await expect( page ).toClick( '.wc_tax_rates a.remove_tax_rates' ); // Save changes (AJAX here) - await expect(page).toClick('button.woocommerce-save-button'); + await expect( page ).toClick( 'button.woocommerce-save-button' ); await uiUnblocked(); // Verify 1 rate - expect(await page.$$('#rates tr')).toHaveLength(1); - await expect(page).toMatchElement( + expect( await page.$$( '#rates tr' ) ).toHaveLength( 1 ); + await expect( page ).toMatchElement( '#rates tr:first-of-type input[name^="tax_rate_state"][value="CA"]' ); - }); + } ); - it('can remove tax classes', async () => { + it( 'can remove tax classes', async () => { // Go to tax settings page - await merchant.openSettings('tax'); + await merchant.openSettings( 'tax' ); // Make sure the tax tab is active - await expect(page).toMatchElement('a.nav-tab-active', {text: 'Tax'}); + await expect( page ).toMatchElement( 'a.nav-tab-active', { + text: 'Tax', + } ); // Remove "fancy" tax class - await clearAndFillInput('#woocommerce_tax_classes', ' '); + await clearAndFillInput( '#woocommerce_tax_classes', ' ' ); await settingsPageSaveChanges(); // Verify that settings have been saved - await Promise.all([ - expect(page).toMatchElement('#message', {text: 'Your settings have been saved.'}), - expect(page).not.toMatchElement('ul.subsubsub > li > a', {text: 'Fancy rates'}), - ]); - }); - }); + await Promise.all( [ + expect( page ).toMatchElement( '#message', { + text: 'Your settings have been saved.', + } ), + expect( page ).not.toMatchElement( 'ul.subsubsub > li > a', { + text: 'Fancy rates', + } ), + ] ); + } ); + } ); }; module.exports = runTaxSettingsTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-calculate-shipping.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-calculate-shipping.test.js index f44a828e81c..7e8ab797c44 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-calculate-shipping.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-calculate-shipping.test.js @@ -15,13 +15,15 @@ const { const { it, describe, beforeAll } = require( '@jest/globals' ); const config = require( 'config' ); -const firstProductPrice = config.has( 'products.simple.price' ) ? config.get( 'products.simple.price' ) : '9.99'; +const firstProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const secondProductPrice = '4.99'; const fourProductPrice = firstProductPrice * 4; -var twoProductsPrice = (+firstProductPrice) + (+secondProductPrice); -var firstProductPriceWithFlatRate = (+firstProductPrice) + (+5); -var fourProductPriceWithFlatRate = (+fourProductPrice) + (+5); -var twoProductsPriceWithFlatRate = (+twoProductsPrice) + (+5); +const twoProductsPrice = +firstProductPrice + +secondProductPrice; +const firstProductPriceWithFlatRate = +firstProductPrice + +5; +const fourProductPriceWithFlatRate = +fourProductPrice + +5; +const twoProductsPriceWithFlatRate = +twoProductsPrice + +5; const firstProductName = 'First Product'; const secondProductName = 'Second Product'; const shippingZoneNameDE = 'Germany Free Shipping'; @@ -30,98 +32,146 @@ const shippingZoneNameFR = 'France Flat Local'; const shippingCountryFR = 'country:FR'; const runCartCalculateShippingTest = () => { - describe('Cart Calculate Shipping', () => { + describe( 'Cart Calculate Shipping', () => { let firstProductId; let secondProductId; - beforeAll(async () => { - firstProductId = await createSimpleProduct(firstProductName); - secondProductId = await createSimpleProduct(secondProductName, secondProductPrice); + beforeAll( async () => { + firstProductId = await createSimpleProduct( firstProductName ); + secondProductId = await createSimpleProduct( + secondProductName, + secondProductPrice + ); await withRestApi.resetSettingsGroupToDefault( 'general', false ); // Add a new shipping zone Germany with Free shipping - await withRestApi.addShippingZoneAndMethod(shippingZoneNameDE, shippingCountryDE, ' ', 'free_shipping', '', [], false ); + await withRestApi.addShippingZoneAndMethod( + shippingZoneNameDE, + shippingCountryDE, + ' ', + 'free_shipping', + '', + [], + false + ); // Add a new shipping zone for France with Flat rate & Local pickup - await withRestApi.addShippingZoneAndMethod(shippingZoneNameFR, shippingCountryFR, ' ', 'flat_rate', '5', ['local_pickup'], false ); + await withRestApi.addShippingZoneAndMethod( + shippingZoneNameFR, + shippingCountryFR, + ' ', + 'flat_rate', + '5', + [ 'local_pickup' ], + false + ); await shopper.emptyCart(); - }); + } ); - afterAll(async () => { + afterAll( async () => { await withRestApi.deleteAllShippingZones( false ); - }); + } ); - it('allows customer to calculate Free Shipping if in Germany', async () => { + it( 'allows customer to calculate Free Shipping if in Germany', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( firstProductId ); await shopper.goToCart(); // Set shipping country to Germany - await expect(page).toClick('a.shipping-calculator-button'); - await expect(page).toClick('#select2-calc_shipping_country-container'); - await selectOptionInSelect2('Germany'); - await expect(page).toClick('button[name="calc_shipping"]'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await expect( page ).toClick( + '#select2-calc_shipping_country-container' + ); + await selectOptionInSelect2( 'Germany' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping costs - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping ul#shipping_method > li', {text: 'Free shipping'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$${firstProductPrice}`}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( + '.shipping ul#shipping_method > li', + { + text: 'Free shipping', + } + ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ firstProductPrice }`, + } ); + } ); - it('allows customer to calculate Flat rate and Local pickup if in France', async () => { - await page.reload( { waitUntil: ['networkidle0', 'domcontentloaded'] } ); + it( 'allows customer to calculate Flat rate and Local pickup if in France', async () => { + await page.reload( { + waitUntil: [ 'networkidle0', 'domcontentloaded' ], + } ); // Set shipping country to France - await expect(page).toClick('a.shipping-calculator-button'); - await expect(page).toClick('#select2-calc_shipping_country-container'); - await selectOptionInSelect2('France'); - await expect(page).toClick('button[name="calc_shipping"]'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await expect( page ).toClick( + '#select2-calc_shipping_country-container' + ); + await selectOptionInSelect2( 'France' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping costs - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping .amount', {text: '$5.00'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$${firstProductPriceWithFlatRate}`}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.shipping .amount', { + text: '$5.00', + } ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ firstProductPriceWithFlatRate }`, + } ); + } ); - it('should show correct total cart price after updating quantity', async () => { - await shopper.setCartQuantity(firstProductName, 4); - await expect(page).toClick('button', {text: 'Update cart'}); + it( 'should show correct total cart price after updating quantity', async () => { + await shopper.setCartQuantity( firstProductName, 4 ); + await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); - await expect(page).toMatchElement('.order-total .amount', {text: `$${fourProductPriceWithFlatRate}`}); - }); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ fourProductPriceWithFlatRate }`, + } ); + } ); - it('should show correct total cart price with 2 products and flat rate', async () => { + it( 'should show correct total cart price with 2 products and flat rate', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( secondProductId ); await shopper.goToCart(); - await shopper.setCartQuantity(firstProductName, 1); - await expect(page).toClick('button', {text: 'Update cart'}); + await shopper.setCartQuantity( firstProductName, 1 ); + await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.shipping .amount', {text: '$5.00'}); - await expect(page).toMatchElement('.order-total .amount', {text: `$${twoProductsPriceWithFlatRate}`}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.shipping .amount', { + text: '$5.00', + } ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ twoProductsPriceWithFlatRate }`, + } ); + } ); - it('should show correct total cart price with 2 products without flat rate', async () => { - await page.reload( { waitUntil: ['networkidle0', 'domcontentloaded'] } ); + it( 'should show correct total cart price with 2 products without flat rate', async () => { + await page.reload( { + waitUntil: [ 'networkidle0', 'domcontentloaded' ], + } ); // Set shipping country to Spain - await expect(page).toClick('a.shipping-calculator-button'); - await expect(page).toClick('#select2-calc_shipping_country-container'); - await selectOptionInSelect2('Spain'); - await expect(page).toClick('button[name="calc_shipping"]'); + await expect( page ).toClick( 'a.shipping-calculator-button' ); + await expect( page ).toClick( + '#select2-calc_shipping_country-container' + ); + await selectOptionInSelect2( 'Spain' ); + await expect( page ).toClick( 'button[name="calc_shipping"]' ); await uiUnblocked(); // Verify shipping costs - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.order-total .amount', {text: `$${twoProductsPrice}`}); - }); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: `$${ twoProductsPrice }`, + } ); + } ); + } ); }; module.exports = runCartCalculateShippingTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-coupons.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-coupons.test.js index 928df8fc16a..41c8c686242 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-coupons.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-coupons.test.js @@ -16,56 +16,79 @@ const { getCouponId, getCouponsTable } = require( '../utils/coupons' ); const { it, describe, beforeAll } = require( '@jest/globals' ); const runCartApplyCouponsTest = () => { - describe('Cart applying coupons', () => { + describe( 'Cart applying coupons', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); await shopper.emptyCart(); await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await uiUnblocked(); await shopper.goToCart(); - }); + } ); - it.each( getCouponsTable() )( 'allows cart to apply %s coupon', async ( couponType, cartDiscount, orderTotal ) => { - const coupon = await getCouponId( couponType ); - await applyCoupon(coupon); - await expect(page).toMatchElement('.woocommerce-message', { text: 'Coupon code applied successfully.' }); + it.each( getCouponsTable() )( + 'allows cart to apply %s coupon', + async ( couponType, cartDiscount, orderTotal ) => { + const coupon = await getCouponId( couponType ); + await applyCoupon( coupon ); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); - // Verify discount applied and order total - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.cart-discount .amount', cartDiscount); - await expect(page).toMatchElement('.order-total .amount', orderTotal); - await removeCoupon(coupon); - }); + // Verify discount applied and order total + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( + '.cart-discount .amount', + cartDiscount + ); + await expect( page ).toMatchElement( + '.order-total .amount', + orderTotal + ); + await removeCoupon( coupon ); + } + ); - it('prevents cart applying same coupon twice', async () => { + it( 'prevents cart applying same coupon twice', async () => { const couponId = await getCouponId( 'fixed cart' ); await applyCoupon( couponId ); - await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); await applyCoupon( couponId ); // Verify only one discount applied // This is a work around for Puppeteer inconsistently finding 'Coupon code already applied' - await expect(page).toMatchElement('.cart-discount .amount', {text: '$5.00'}); - await expect(page).toMatchElement('.order-total .amount', {text: '$4.99'}); - }); + await expect( page ).toMatchElement( '.cart-discount .amount', { + text: '$5.00', + } ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$4.99', + } ); + } ); - it('allows cart to apply multiple coupons', async () => { + it( 'allows cart to apply multiple coupons', async () => { await applyCoupon( await getCouponId( 'fixed product' ) ); - await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); // Verify discount applied and order total - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.order-total .amount', {text: '$0.00'}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$0.00', + } ); + } ); - it('restores cart total when coupons are removed', async () => { + it( 'restores cart total when coupons are removed', async () => { await removeCoupon( await getCouponId( 'fixed cart' ) ); await removeCoupon( await getCouponId( 'fixed product' ) ); - await expect(page).toMatchElement('.order-total .amount', {text: '$9.99'}); - }); - }); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$9.99', + } ); + } ); + } ); }; module.exports = runCartApplyCouponsTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-redirection.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-redirection.test.js index e91262de4cd..dedbd31ed2b 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-redirection.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart-redirection.test.js @@ -1,7 +1,7 @@ /** * Internal dependencies */ - const { +const { shopper, merchant, createSimpleProduct, @@ -14,63 +14,59 @@ /** * External dependencies */ - const { - it, - describe, - beforeAll, - afterAll, -} = require( '@jest/globals' ); +const { it, describe, beforeAll, afterAll } = require( '@jest/globals' ); const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); const runCartRedirectionTest = () => { - describe('Cart > Redirect to cart from shop', () => { + describe( 'Cart > Redirect to cart from shop', () => { let simplePostIdValue; - beforeAll(async () => { + beforeAll( async () => { simplePostIdValue = await createSimpleProduct(); // Set checkbox in settings to enable cart redirection await merchant.login(); - await merchant.openSettings('products'); - await setCheckbox('#woocommerce_cart_redirect_after_add'); + await merchant.openSettings( 'products' ); + await setCheckbox( '#woocommerce_cart_redirect_after_add' ); await settingsPageSaveChanges(); await merchant.logout(); - }); + } ); - it('can redirect user to cart from shop page', async () => { + it( 'can redirect user to cart from shop page', async () => { await shopper.goToShop(); // Add to cart from shop page - const addToCartXPath = `//li[contains(@class, "type-product") and a/h2[contains(text(), "${ simpleProductName }")]]` + - '//a[contains(@class, "add_to_cart_button") and contains(@class, "ajax_add_to_cart")'; + const addToCartXPath = + `//li[contains(@class, "type-product") and a/h2[contains(text(), "${ simpleProductName }")]]` + + '//a[contains(@class, "add_to_cart_button") and contains(@class, "ajax_add_to_cart")'; const [ addToCartButton ] = await page.$x( addToCartXPath + ']' ); addToCartButton.click(); await utils.waitForTimeout( 1000 ); // to avoid flakiness - await shopper.productIsInCart(simpleProductName); + await shopper.productIsInCart( simpleProductName ); await shopper.removeFromCart( simplePostIdValue ); - }); + } ); - it('can redirect user to cart from detail page', async () => { - await shopper.goToProduct(simplePostIdValue); + it( 'can redirect user to cart from detail page', async () => { + await shopper.goToProduct( simplePostIdValue ); // Add to cart from detail page await shopper.addToCart(); await utils.waitForTimeout( 1000 ); // to avoid flakiness - await shopper.productIsInCart(simpleProductName); + await shopper.productIsInCart( simpleProductName ); await shopper.removeFromCart( simplePostIdValue ); - }); + } ); - afterAll(async () => { + afterAll( async () => { await merchant.login(); - await merchant.openSettings('products'); - await unsetCheckbox('#woocommerce_cart_redirect_after_add'); + await merchant.openSettings( 'products' ); + await unsetCheckbox( '#woocommerce_cart_redirect_after_add' ); await settingsPageSaveChanges(); - }); - }); + } ); + } ); }; module.exports = runCartRedirectionTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart.test.js index b16a15441e1..0da7a143c20 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-cart.test.js @@ -15,83 +15,95 @@ const { it, describe, beforeAll } = require( '@jest/globals' ); const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); -const singleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const singleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const twoProductPrice = singleProductPrice * 2; const runCartPageTest = () => { - describe('Cart page', () => { + describe( 'Cart page', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); await withRestApi.resetSettingsGroupToDefault( 'general', false ); await withRestApi.resetSettingsGroupToDefault( 'products', false ); await withRestApi.resetSettingsGroupToDefault( 'tax', false ); - }); + } ); - it('should display no item in the cart', async () => { + it( 'should display no item in the cart', async () => { await shopper.goToCart(); - await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); - }); + await expect( page ).toMatchElement( '.cart-empty', { + text: 'Your cart is currently empty.', + } ); + } ); - it('should add the product to the cart from the shop page', async () => { + it( 'should add the product to the cart from the shop page', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCart(); - await shopper.productIsInCart(simpleProductName); - }); + await shopper.productIsInCart( simpleProductName ); + } ); - it('should increase item qty when "Add to cart" of the same product is clicked', async () => { + it( 'should increase item qty when "Add to cart" of the same product is clicked', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCart(); - await shopper.productIsInCart(simpleProductName, 2); - }); + await shopper.productIsInCart( simpleProductName, 2 ); + } ); - it('should update qty when updated via qty input', async () => { + it( 'should update qty when updated via qty input', async () => { await shopper.goToCart(); - await shopper.setCartQuantity(simpleProductName, 4); - await expect(page).toClick('button', {text: 'Update cart'}); + await shopper.setCartQuantity( simpleProductName, 4 ); + await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); - await shopper.productIsInCart(simpleProductName, 4); - }); + await shopper.productIsInCart( simpleProductName, 4 ); + } ); - it('should remove the item from the cart when remove is clicked', async () => { + it( 'should remove the item from the cart when remove is clicked', async () => { await shopper.goToCart(); await shopper.removeFromCart( productId ); await uiUnblocked(); - await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); - }); + await expect( page ).toMatchElement( '.cart-empty', { + text: 'Your cart is currently empty.', + } ); + } ); - it('should update subtotal in cart totals when adding product to the cart', async () => { + it( 'should update subtotal in cart totals when adding product to the cart', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCart(); - await shopper.productIsInCart(simpleProductName, 1); - await expect(page).toMatchElement('.cart-subtotal .amount', {text: `$${ singleProductPrice }`}); + await shopper.productIsInCart( simpleProductName, 1 ); + await expect( page ).toMatchElement( '.cart-subtotal .amount', { + text: `$${ singleProductPrice }`, + } ); - await shopper.setCartQuantity(simpleProductName, 2); - await expect(page).toClick('button', {text: 'Update cart'}); + await shopper.setCartQuantity( simpleProductName, 2 ); + await expect( page ).toClick( 'button', { text: 'Update cart' } ); await uiUnblocked(); - await expect(page).toMatchElement('.cart-subtotal .amount', {text: `$${ twoProductPrice }`}); - }); + await expect( page ).toMatchElement( '.cart-subtotal .amount', { + text: `$${ twoProductPrice }`, + } ); + } ); - it('should go to the checkout page when "Proceed to Checkout" is clicked', async () => { + it( 'should go to the checkout page when "Proceed to Checkout" is clicked', async () => { await shopper.goToCart(); - await Promise.all([ - page.waitForNavigation({waitUntil: 'networkidle0'}), - expect(page).toClick('.checkout-button', {text: 'Proceed to checkout'}), - ]); + await Promise.all( [ + page.waitForNavigation( { waitUntil: 'networkidle0' } ), + expect( page ).toClick( '.checkout-button', { + text: 'Proceed to checkout', + } ), + ] ); - await expect(page).toMatchElement('#order_review'); - }); - }); + await expect( page ).toMatchElement( '#order_review' ); + } ); + } ); }; module.exports = runCartPageTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-coupons.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-coupons.test.js index bb1fcc05305..4f196dc2ea2 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-coupons.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-coupons.test.js @@ -16,12 +16,11 @@ const { getCouponId, getCouponsTable } = require( '../utils/coupons' ); */ const { it, describe, beforeAll } = require( '@jest/globals' ); - const runCheckoutApplyCouponsTest = () => { - describe('Checkout coupons', () => { + describe( 'Checkout coupons', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); await shopper.emptyCart(); await shopper.goToShop(); @@ -29,48 +28,71 @@ const runCheckoutApplyCouponsTest = () => { await shopper.addToCartFromShopPage( productId ); await uiUnblocked(); await shopper.goToCheckout(); - }); + } ); - it.each( getCouponsTable() )( 'allows checkout to apply %s coupon', async ( couponType, cartDiscount, orderTotal ) => { - const coupon = await getCouponId( couponType ); - await applyCoupon(coupon); - await expect(page).toMatchElement('.woocommerce-message', { text: 'Coupon code applied successfully.' }); + it.each( getCouponsTable() )( + 'allows checkout to apply %s coupon', + async ( couponType, cartDiscount, orderTotal ) => { + const coupon = await getCouponId( couponType ); + await applyCoupon( coupon ); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); - // Wait for page to expand total calculations to avoid flakyness - await page.waitForSelector('.order-total'); + // Wait for page to expand total calculations to avoid flakyness + await page.waitForSelector( '.order-total' ); - // Verify discount applied and order total - await expect(page).toMatchElement('.cart-discount .amount', cartDiscount); - await expect(page).toMatchElement('.order-total .amount', orderTotal); - await removeCoupon(coupon); - }); + // Verify discount applied and order total + await expect( page ).toMatchElement( + '.cart-discount .amount', + cartDiscount + ); + await expect( page ).toMatchElement( + '.order-total .amount', + orderTotal + ); + await removeCoupon( coupon ); + } + ); - it('prevents checkout applying same coupon twice', async () => { + it( 'prevents checkout applying same coupon twice', async () => { const couponId = await getCouponId( 'fixed cart' ); await applyCoupon( couponId ); - await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); await applyCoupon( couponId ); // Verify only one discount applied // This is a work around for Puppeteer inconsistently finding 'Coupon code already applied' - await expect(page).toMatchElement('.cart-discount .amount', {text: '$5.00'}); - await expect(page).toMatchElement('.order-total .amount', {text: '$4.99'}); - }); + await expect( page ).toMatchElement( '.cart-discount .amount', { + text: '$5.00', + } ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$4.99', + } ); + } ); - it('allows checkout to apply multiple coupons', async () => { + it( 'allows checkout to apply multiple coupons', async () => { await applyCoupon( await getCouponId( 'fixed product' ) ); - await expect(page).toMatchElement('.woocommerce-message', {text: 'Coupon code applied successfully.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'Coupon code applied successfully.', + } ); // Verify discount applied and order total - await page.waitForSelector('.order-total'); - await expect(page).toMatchElement('.order-total .amount', {text: '$0.00'}); - }); + await page.waitForSelector( '.order-total' ); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$0.00', + } ); + } ); - it('restores checkout total when coupons are removed', async () => { + it( 'restores checkout total when coupons are removed', async () => { await removeCoupon( await getCouponId( 'fixed cart' ) ); await removeCoupon( await getCouponId( 'fixed product' ) ); - await expect(page).toMatchElement('.order-total .amount', {text: '$9.99'}); - }); - }); + await expect( page ).toMatchElement( '.order-total .amount', { + text: '$9.99', + } ); + } ); + } ); }; module.exports = runCheckoutApplyCouponsTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-create-account.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-create-account.test.js index 377d95bff84..73ee0b835f0 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-create-account.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-create-account.test.js @@ -1,7 +1,7 @@ /** * Internal dependencies */ - const { +const { shopper, merchant, createSimpleProduct, @@ -21,21 +21,28 @@ const config = require( 'config' ); const customerBilling = config.get( 'addresses.customer.billing' ); const runCheckoutCreateAccountTest = () => { - describe('Shopper Checkout Create Account', () => { + describe( 'Shopper Checkout Create Account', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); await withRestApi.deleteCustomerByEmail( customerBilling.email ); // Set checkbox for creating an account during checkout await merchant.login(); - await merchant.openSettings('account'); - await setCheckbox('#woocommerce_enable_signup_and_login_from_checkout'); + await merchant.openSettings( 'account' ); + await setCheckbox( + '#woocommerce_enable_signup_and_login_from_checkout' + ); await settingsPageSaveChanges(); // Set free shipping within California - await addShippingZoneAndMethod('Free Shipping CA', 'state:US:CA', ' ', 'free_shipping' ); + await addShippingZoneAndMethod( + 'Free Shipping CA', + 'state:US:CA', + ' ', + 'free_shipping' + ); await merchant.logout(); @@ -46,25 +53,29 @@ const runCheckoutCreateAccountTest = () => { await shopper.goToCheckout(); }, 45000 ); - it('can create an account during checkout', async () => { + it( 'can create an account during checkout', async () => { // Fill all the details for a new customer await shopper.fillBillingDetails( customerBilling ); await uiUnblocked(); // Set checkbox for creating account during checkout - await setCheckbox('#createaccount'); + await setCheckbox( '#createaccount' ); // Place an order await shopper.placeOrder(); - await expect(page).toMatchElement('h1.entry-title', {text: 'Order received'}); - }); + await expect( page ).toMatchElement( 'h1.entry-title', { + text: 'Order received', + } ); + } ); - it('can verify that the customer has been created', async () => { + it( 'can verify that the customer has been created', async () => { await merchant.login(); await merchant.openAllUsersView(); - await expect(page).toMatchElement('td.email.column-email > a', { text: customerBilling.email }); - }); - }); + await expect( page ).toMatchElement( 'td.email.column-email > a', { + text: customerBilling.email, + } ); + } ); + } ); }; module.exports = runCheckoutCreateAccountTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-login-account.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-login-account.test.js index ab444a64529..f2b28cd3ea1 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-login-account.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout-login-account.test.js @@ -1,7 +1,7 @@ /** * Internal dependencies */ - const { +const { shopper, merchant, createSimpleProduct, @@ -15,19 +15,19 @@ */ const { it, describe, beforeAll } = require( '@jest/globals' ); -const config = require('config'); +const config = require( 'config' ); const runCheckoutLoginAccountTest = () => { - describe('Shopper Checkout Login Account', () => { + describe( 'Shopper Checkout Login Account', () => { let productId; - beforeAll(async () => { + beforeAll( async () => { productId = await createSimpleProduct(); // Set checkbox for logging to account during checkout await merchant.login(); - await merchant.openSettings('account'); - await setCheckbox('#woocommerce_enable_checkout_login_reminder'); + await merchant.openSettings( 'account' ); + await setCheckbox( '#woocommerce_enable_checkout_login_reminder' ); await settingsPageSaveChanges(); await merchant.logout(); @@ -36,42 +36,54 @@ const runCheckoutLoginAccountTest = () => { await shopper.addToCartFromShopPage( productId ); await uiUnblocked(); await shopper.goToCheckout(); - }); + } ); afterAll( async () => { await shopper.logout(); } ); - it('can login to an existing account during checkout', async () => { + it( 'can login to an existing account during checkout', async () => { // Click to login during checkout - await page.waitForSelector('.woocommerce-form-login-toggle'); - await expect(page).toClick('.woocommerce-info > a.showlogin'); + await page.waitForSelector( '.woocommerce-form-login-toggle' ); + await expect( page ).toClick( '.woocommerce-info > a.showlogin' ); // Fill shopper's login credentials and proceed further - await page.type( '#username', config.get('users.customer.username') ); - await page.type( '#password', config.get('users.customer.password') ); + await page.type( + '#username', + config.get( 'users.customer.username' ) + ); + await page.type( + '#password', + config.get( 'users.customer.password' ) + ); - await Promise.all([ - page.waitForNavigation({waitUntil: 'networkidle0'}), - page.click('button[name="login"]'), - ]); + await Promise.all( [ + page.waitForNavigation( { waitUntil: 'networkidle0' } ), + page.click( 'button[name="login"]' ), + ] ); // Place an order await shopper.placeOrder(); - await expect(page).toMatchElement('h1.entry-title', {text: 'Order received'}); + await expect( page ).toMatchElement( 'h1.entry-title', { + text: 'Order received', + } ); // Verify the email of a logged in user - await expect(page).toMatchElement('ul > li.email', {text: 'Email: john.doe@example.com'}); + await expect( page ).toMatchElement( 'ul > li.email', { + text: 'Email: john.doe@example.com', + } ); // Verify the user is logged in on my account page await shopper.gotoMyAccount(); await Promise.all( [ - await expect(page.url()).toMatch('my-account/'), - await expect(page).toMatchElement('h1', {text: 'My account'}), + await expect( page.url() ).toMatch( 'my-account/' ), + await expect( page ).toMatchElement( 'h1', { + text: 'My account', + } ), ] ); - }); - }); + } ); + } ); }; module.exports = runCheckoutLoginAccountTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout.test.js index 5c2e068f41f..467a928d637 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-checkout.test.js @@ -16,7 +16,9 @@ const { it, describe, beforeAll, afterAll } = require( '@jest/globals' ); const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); -const singleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const singleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const twoProductPrice = singleProductPrice * 2; const threeProductPrice = singleProductPrice * 3; const fourProductPrice = singleProductPrice * 4; @@ -28,128 +30,233 @@ let customerOrderId; const runCheckoutPageTest = () => { let productId; - describe('Checkout page', () => { - beforeAll(async () => { + describe( 'Checkout page', () => { + beforeAll( async () => { productId = await createSimpleProduct(); await withRestApi.resetSettingsGroupToDefault( 'general', false ); await withRestApi.resetSettingsGroupToDefault( 'products', false ); await withRestApi.resetSettingsGroupToDefault( 'tax', false ); // Set free shipping within California - await withRestApi.addShippingZoneAndMethod('Free Shipping CA', 'state:US:CA', '', 'free_shipping', '', [], false ); + await withRestApi.addShippingZoneAndMethod( + 'Free Shipping CA', + 'state:US:CA', + '', + 'free_shipping', + '', + [], + false + ); // Set base location with state CA. - await withRestApi.updateSettingOption( 'general', 'woocommerce_default_country', { value: 'US:CA' } ); + await withRestApi.updateSettingOption( + 'general', + 'woocommerce_default_country', + { value: 'US:CA' } + ); // Sell to all countries - await withRestApi.updateSettingOption( 'general', 'woocommerce_allowed_countries', { value: 'all' } ); + await withRestApi.updateSettingOption( + 'general', + 'woocommerce_allowed_countries', + { value: 'all' } + ); // Set currency to USD - await withRestApi.updateSettingOption( 'general', 'woocommerce_currency', { value: 'USD' } ); + await withRestApi.updateSettingOption( + 'general', + 'woocommerce_currency', + { value: 'USD' } + ); // Tax calculation should have been enabled by another test - no-op // Enable BACS payment method - await withRestApi.updatePaymentGateway( 'bacs', { enabled: true }, false ); + await withRestApi.updatePaymentGateway( + 'bacs', + { enabled: true }, + false + ); // Enable COD payment method - await withRestApi.updatePaymentGateway( 'cod', { enabled: true }, false ); - }); + await withRestApi.updatePaymentGateway( + 'cod', + { enabled: true }, + false + ); + } ); - afterAll(async () => { + afterAll( async () => { await withRestApi.deleteAllShippingZones( false ); - }); + } ); - it('should display cart items in order review', async () => { + it( 'should display cart items in order review', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `1`, singleProductPrice, singleProductPrice); - }); + await shopper.productIsInCheckout( + simpleProductName, + `1`, + singleProductPrice, + singleProductPrice + ); + } ); - it('allows customer to choose available payment methods', async () => { + it( 'allows customer to choose available payment methods', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `2`, twoProductPrice, twoProductPrice); + await shopper.productIsInCheckout( + simpleProductName, + `2`, + twoProductPrice, + twoProductPrice + ); - await expect(page).toClick('.wc_payment_method label', {text: 'Direct bank transfer'}); - await expect(page).toClick('.wc_payment_method label', {text: 'Cash on delivery'}); - }); + await expect( page ).toClick( '.wc_payment_method label', { + text: 'Direct bank transfer', + } ); + await expect( page ).toClick( '.wc_payment_method label', { + text: 'Cash on delivery', + } ); + } ); - it('allows customer to fill billing details', async () => { + it( 'allows customer to fill billing details', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `3`, threeProductPrice, threeProductPrice); - await shopper.fillBillingDetails(config.get('addresses.customer.billing')); - }); + await shopper.productIsInCheckout( + simpleProductName, + `3`, + threeProductPrice, + threeProductPrice + ); + await shopper.fillBillingDetails( + config.get( 'addresses.customer.billing' ) + ); + } ); - it('allows customer to fill shipping details', async () => { + it( 'allows customer to fill shipping details', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `4`, fourProductPrice, fourProductPrice); + await shopper.productIsInCheckout( + simpleProductName, + `4`, + fourProductPrice, + fourProductPrice + ); // Select checkbox to ship to a different address - await page.evaluate(() => { - document.querySelector('#ship-to-different-address-checkbox').click(); - }); + await page.evaluate( () => { + document + .querySelector( '#ship-to-different-address-checkbox' ) + .click(); + } ); await uiUnblocked(); - await shopper.fillShippingDetails(config.get('addresses.customer.shipping')); - }); + await shopper.fillShippingDetails( + config.get( 'addresses.customer.shipping' ) + ); + } ); - it('allows guest customer to place order', async () => { + it( 'allows guest customer to place order', async () => { await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `5`, fiveProductPrice, fiveProductPrice); - await shopper.fillBillingDetails(config.get('addresses.customer.billing')); + await shopper.productIsInCheckout( + simpleProductName, + `5`, + fiveProductPrice, + fiveProductPrice + ); + await shopper.fillBillingDetails( + config.get( 'addresses.customer.billing' ) + ); await uiUnblocked(); - await expect(page).toClick('.wc_payment_method label', {text: 'Cash on delivery'}); - await expect(page).toMatchElement('.payment_method_cod', {text: 'Pay with cash upon delivery.'}); + await expect( page ).toClick( '.wc_payment_method label', { + text: 'Cash on delivery', + } ); + await expect( page ).toMatchElement( '.payment_method_cod', { + text: 'Pay with cash upon delivery.', + } ); await uiUnblocked(); await shopper.placeOrder(); - await expect(page).toMatch('Order received'); + await expect( page ).toMatch( 'Order received' ); // Get order ID from the order received html element on the page - let orderReceivedHtmlElement = await page.$('.woocommerce-order-overview__order.order'); - let orderReceivedText = await page.evaluate(element => element.textContent, orderReceivedHtmlElement); - guestOrderId = orderReceivedText.split(/(\s+)/)[6].toString(); - }); + const orderReceivedHtmlElement = await page.$( + '.woocommerce-order-overview__order.order' + ); + const orderReceivedText = await page.evaluate( + ( element ) => element.textContent, + orderReceivedHtmlElement + ); + guestOrderId = orderReceivedText.split( /(\s+)/ )[ 6 ].toString(); + } ); - it('allows existing customer to place order', async () => { + it( 'allows existing customer to place order', async () => { await shopper.login(); await shopper.goToShop(); await shopper.addToCartFromShopPage( productId ); await shopper.goToCheckout(); - await shopper.productIsInCheckout(simpleProductName, `1`, singleProductPrice, singleProductPrice); - await shopper.fillBillingDetails(config.get('addresses.customer.billing')); + await shopper.productIsInCheckout( + simpleProductName, + `1`, + singleProductPrice, + singleProductPrice + ); + await shopper.fillBillingDetails( + config.get( 'addresses.customer.billing' ) + ); await uiUnblocked(); - await expect(page).toClick('.wc_payment_method label', {text: 'Cash on delivery'}); - await expect(page).toMatchElement('.payment_method_cod', {text: 'Pay with cash upon delivery.'}); + await expect( page ).toClick( '.wc_payment_method label', { + text: 'Cash on delivery', + } ); + await expect( page ).toMatchElement( '.payment_method_cod', { + text: 'Pay with cash upon delivery.', + } ); await uiUnblocked(); await shopper.placeOrder(); - await expect(page).toMatch('Order received'); + await expect( page ).toMatch( 'Order received' ); // Get order ID from the order received html element on the page - let orderReceivedHtmlElement = await page.$('.woocommerce-order-overview__order.order'); - let orderReceivedText = await page.evaluate(element => element.textContent, orderReceivedHtmlElement); - customerOrderId = orderReceivedText.split(/(\s+)/)[6].toString(); - }); + const orderReceivedHtmlElement = await page.$( + '.woocommerce-order-overview__order.order' + ); + const orderReceivedText = await page.evaluate( + ( element ) => element.textContent, + orderReceivedHtmlElement + ); + customerOrderId = orderReceivedText + .split( /(\s+)/ )[ 6 ] + .toString(); + } ); - it('merchant can confirm the order was received', async () => { + it( 'merchant can confirm the order was received', async () => { await merchant.login(); - await merchant.verifyOrder(guestOrderId, simpleProductName, singleProductPrice, 5, fiveProductPrice); - await merchant.verifyOrder(customerOrderId, simpleProductName, singleProductPrice, 1, singleProductPrice, true); - }); - }); + await merchant.verifyOrder( + guestOrderId, + simpleProductName, + singleProductPrice, + 5, + fiveProductPrice + ); + await merchant.verifyOrder( + customerOrderId, + simpleProductName, + singleProductPrice, + 1, + singleProductPrice, + true + ); + } ); + } ); }; module.exports = runCheckoutPageTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-create-account.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-create-account.test.js index d62d31f4821..22729164fe1 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-create-account.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-create-account.test.js @@ -17,37 +17,42 @@ const { it, describe, beforeAll, afterAll } = require( '@jest/globals' ); const customerEmailAddress = 'john.doe.test@example.com'; const runMyAccountCreateAccountTest = () => { - describe('Shopper My Account Create Account', () => { - beforeAll(async () => { + describe( 'Shopper My Account Create Account', () => { + beforeAll( async () => { await withRestApi.deleteCustomerByEmail( customerEmailAddress ); await merchant.login(); // Set checkbox in the settings to enable registration in my account - await merchant.openSettings('account'); - await setCheckbox('#woocommerce_enable_myaccount_registration'); + await merchant.openSettings( 'account' ); + await setCheckbox( '#woocommerce_enable_myaccount_registration' ); await settingsPageSaveChanges(); await merchant.logout(); - }); + } ); afterAll( async () => { await shopper.logout(); } ); - it('can create a new account via my account', async () => { + it( 'can create a new account via my account', async () => { await shopper.gotoMyAccount(); - await page.waitForSelector('.woocommerce-form-register'); - await expect(page).toFill('input#reg_email', customerEmailAddress); - await expect(page).toClick('button[name="register"]'); - await page.waitForNavigation({waitUntil: 'networkidle0'}); - await expect(page).toMatchElement('h1', 'My account'); + await page.waitForSelector( '.woocommerce-form-register' ); + await expect( page ).toFill( + 'input#reg_email', + customerEmailAddress + ); + await expect( page ).toClick( 'button[name="register"]' ); + await page.waitForNavigation( { waitUntil: 'networkidle0' } ); + await expect( page ).toMatchElement( 'h1', 'My account' ); // Verify user has been created successfully await merchant.login(); await merchant.openAllUsersView(); - await expect(page).toMatchElement('td.email.column-email > a', {text: customerEmailAddress}); - }); - }); + await expect( page ).toMatchElement( 'td.email.column-email > a', { + text: customerEmailAddress, + } ); + } ); + } ); }; module.exports = runMyAccountCreateAccountTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-pay-order.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-pay-order.test.js index 6e9e61ba663..97657d30aec 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-pay-order.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account-pay-order.test.js @@ -6,7 +6,7 @@ const { shopper, merchant, createSimpleProduct, - uiUnblocked + uiUnblocked, } = require( '@woocommerce/e2e-utils' ); /** @@ -20,39 +20,46 @@ const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); const runMyAccountPayOrderTest = () => { - describe('Customer can pay for their order through My Account', () => { - beforeAll(async () => { + describe( 'Customer can pay for their order through My Account', () => { + beforeAll( async () => { simplePostIdValue = await createSimpleProduct(); await shopper.login(); - await shopper.goToProduct(simplePostIdValue); - await shopper.addToCart(simpleProductName); + await shopper.goToProduct( simplePostIdValue ); + await shopper.addToCart( simpleProductName ); await shopper.goToCheckout(); - await shopper.fillBillingDetails(config.get('addresses.customer.billing')); + await shopper.fillBillingDetails( + config.get( 'addresses.customer.billing' ) + ); await uiUnblocked(); await shopper.placeOrder(); // Get order ID from the order received html element on the page - orderNum = await page.$$eval(".woocommerce-order-overview__order strong", elements => elements.map(item => item.textContent)); + orderNum = await page.$$eval( + '.woocommerce-order-overview__order strong', + ( elements ) => elements.map( ( item ) => item.textContent ) + ); await merchant.login(); - await merchant.updateOrderStatus(orderNum, 'Pending payment'); + await merchant.updateOrderStatus( orderNum, 'Pending payment' ); await merchant.logout(); - }); + } ); afterAll( async () => { await shopper.logout(); } ); - it('allows customer to pay for their order in My Account', async () => { + it( 'allows customer to pay for their order in My Account', async () => { await shopper.login(); await shopper.goToOrders(); - await expect(page).toClick('a.woocommerce-button.button.pay'); - await page.waitForNavigation({waitUntil: 'networkidle0'}); - await expect(page).toMatchElement('.entry-title', {text: 'Pay for order'}); + await expect( page ).toClick( 'a.woocommerce-button.button.pay' ); + await page.waitForNavigation( { waitUntil: 'networkidle0' } ); + await expect( page ).toMatchElement( '.entry-title', { + text: 'Pay for order', + } ); await shopper.placeOrder(); - await expect(page).toMatch('Order received'); - }); - }); -} + await expect( page ).toMatch( 'Order received' ); + } ); + } ); +}; module.exports = runMyAccountPayOrderTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account.test.js index 51d495b30a0..279a2623b37 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-my-account.test.js @@ -2,9 +2,7 @@ /** * Internal dependencies */ -const { - shopper, -} = require( '@woocommerce/e2e-utils' ); +const { shopper } = require( '@woocommerce/e2e-utils' ); /** * External dependencies @@ -12,35 +10,74 @@ const { const { it, describe } = require( '@jest/globals' ); const pages = [ - ['Orders', 'my-account/orders', shopper.goToOrders], - ['Downloads', 'my-account/downloads', shopper.goToDownloads], - ['Addresses', 'my-account/edit-address', shopper.goToAddresses], - ['Account details', 'my-account/edit-account', shopper.goToAccountDetails] + [ 'Orders', 'my-account/orders', shopper.goToOrders ], + [ 'Downloads', 'my-account/downloads', shopper.goToDownloads ], + [ 'Addresses', 'my-account/edit-address', shopper.goToAddresses ], + [ + 'Account details', + 'my-account/edit-account', + shopper.goToAccountDetails, + ], ]; const runMyAccountPageTest = () => { - describe('My account page', () => { + describe( 'My account page', () => { afterAll( async () => { await shopper.logout(); } ); - it('allows customer to login', async () => { + it( 'allows customer to login', async () => { await shopper.login(); - expect(page).toMatch('Hello'); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Dashboard' }); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Orders' }); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Downloads' }); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Addresses' }); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Account details' }); - await expect(page).toMatchElement('.woocommerce-MyAccount-navigation-link', { text: 'Logout' }); - }); + expect( page ).toMatch( 'Hello' ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Dashboard', + } + ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Orders', + } + ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Downloads', + } + ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Addresses', + } + ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Account details', + } + ); + await expect( page ).toMatchElement( + '.woocommerce-MyAccount-navigation-link', + { + text: 'Logout', + } + ); + } ); - it.each(pages)('allows customer to see %s page', async (pageTitle, path, goToPage) => { - await goToPage(); - expect(page.url()).toMatch(path); - await expect(page).toMatchElement('h1', { text: pageTitle }); - }); - }); -} + it.each( pages )( + 'allows customer to see %s page', + async ( pageTitle, path, goToPage ) => { + await goToPage(); + expect( page.url() ).toMatch( path ); + await expect( page ).toMatchElement( 'h1', { + text: pageTitle, + } ); + } + ); + } ); +}; module.exports = runMyAccountPageTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-order-email-receiving.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-order-email-receiving.test.js index a56e10ef109..3465e62721b 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-order-email-receiving.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-order-email-receiving.test.js @@ -2,7 +2,7 @@ /** * Internal dependencies */ - const { +const { shopper, merchant, createSimpleProduct, @@ -23,38 +23,45 @@ const customerEmail = config.get( 'addresses.customer.billing.email' ); const storeName = 'WooCommerce Core E2E Test Suite'; const runOrderEmailReceivingTest = () => { - describe('Shopper Order Email Receiving', () => { - beforeAll(async () => { + describe( 'Shopper Order Email Receiving', () => { + beforeAll( async () => { simplePostIdValue = await createSimpleProduct(); await merchant.login(); await deleteAllEmailLogs(); await merchant.logout(); - }); + } ); afterAll( async () => { await shopper.logout(); } ); - it('should receive order email after purchasing an item', async () => { + it( 'should receive order email after purchasing an item', async () => { await shopper.login(); // Go to the shop and purchase an item - await shopper.goToProduct(simplePostIdValue); - await shopper.addToCart(simpleProductName); + await shopper.goToProduct( simplePostIdValue ); + await shopper.addToCart( simpleProductName ); await shopper.goToCheckout(); await uiUnblocked(); await shopper.placeOrder(); // Get order ID from the order received html element on the page - orderId = await page.$$eval(".woocommerce-order-overview__order strong", elements => elements.map(item => item.textContent)); + orderId = await page.$$eval( + '.woocommerce-order-overview__order strong', + ( elements ) => elements.map( ( item ) => item.textContent ) + ); // Verify the new order email has been received await merchant.login(); await merchant.openEmailLog(); - await expect( page ).toMatchElement( '.column-receiver', { text: customerEmail } ); - await expect( page ).toMatchElement( '.column-subject', { text: `[${storeName}]: New order #${orderId}` } ); - }); - }); + await expect( page ).toMatchElement( '.column-receiver', { + text: customerEmail, + } ); + await expect( page ).toMatchElement( '.column-subject', { + text: `[${ storeName }]: New order #${ orderId }`, + } ); + } ); + } ); }; module.exports = runOrderEmailReceivingTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-product-browse-search-sort.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-product-browse-search-sort.test.js index e5bcdadb73a..fb65aa0028c 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-product-browse-search-sort.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-product-browse-search-sort.test.js @@ -15,9 +15,15 @@ const { it, beforeAll } = require( '@jest/globals' ); const config = require( 'config' ); const simpleProductName = config.get( 'products.simple.name' ); -const singleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; -const singleProductPrice2 = config.has('products.simple.price') ? '1' + singleProductPrice : '19.99'; -const singleProductPrice3 = config.has('products.simple.price') ? '2' + singleProductPrice : '29.99'; +const singleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; +const singleProductPrice2 = config.has( 'products.simple.price' ) + ? '1' + singleProductPrice + : '19.99'; +const singleProductPrice3 = config.has( 'products.simple.price' ) + ? '2' + singleProductPrice + : '29.99'; const clothing = 'Clothing'; const audio = 'Audio'; const hardware = 'Hardware'; @@ -26,60 +32,88 @@ const productTitle = 'li.first > a > h2.woocommerce-loop-product__title'; const getWordPressVersion = async () => { const context = await getEnvironmentContext(); return context.wpVersion; -} +}; const runProductBrowseSearchSortTest = () => { - utils.describeIf( getWordPressVersion() >= 5.8 )( 'Search, browse by categories and sort items in the shop', () => { - beforeAll(async () => { - // Create 1st product with Clothing category - await createSimpleProductWithCategory(simpleProductName + ' 1', singleProductPrice, clothing); - // Create 2nd product with Audio category - await createSimpleProductWithCategory(simpleProductName + ' 2', singleProductPrice2, audio); - // Create 3rd product with Hardware category - await createSimpleProductWithCategory(simpleProductName + ' 3', singleProductPrice3, hardware); - }); + utils.describeIf( getWordPressVersion() >= 5.8 )( + 'Search, browse by categories and sort items in the shop', + () => { + beforeAll( async () => { + // Create 1st product with Clothing category + await createSimpleProductWithCategory( + simpleProductName + ' 1', + singleProductPrice, + clothing + ); + // Create 2nd product with Audio category + await createSimpleProductWithCategory( + simpleProductName + ' 2', + singleProductPrice2, + audio + ); + // Create 3rd product with Hardware category + await createSimpleProductWithCategory( + simpleProductName + ' 3', + singleProductPrice3, + hardware + ); + } ); - it('should let user search the store', async () => { - await shopper.goToShop(); - await shopper.searchForProduct(simpleProductName + ' 1'); - page.waitForNavigation({waitUntil: 'networkidle0'}); - }); + it( 'should let user search the store', async () => { + await shopper.goToShop(); + await shopper.searchForProduct( simpleProductName + ' 1' ); + page.waitForNavigation( { waitUntil: 'networkidle0' } ); + } ); - it('should let user browse products by categories', async () => { - // Browse through Clothing category link - await Promise.all([ - page.click('span.posted_in > a', {text: clothing}), - page.waitForNavigation({waitUntil: 'networkidle0'}), - ]); + it( 'should let user browse products by categories', async () => { + // Browse through Clothing category link + await Promise.all( [ + page.click( 'span.posted_in > a', { text: clothing } ), + page.waitForNavigation( { waitUntil: 'networkidle0' } ), + ] ); - // Verify Clothing category page - await page.waitForSelector(productTitle); - await expect(page).toMatchElement(productTitle, {text: simpleProductName + ' 1'}); - await expect(page).toClick(productTitle, {text: simpleProductName + ' 1'}); - page.waitForNavigation({waitUntil: 'networkidle0'}); - await page.waitForSelector('h1.entry-title'); - await expect(page).toMatchElement('h1.entry-title', simpleProductName + ' 1'); - }); + // Verify Clothing category page + await page.waitForSelector( productTitle ); + await expect( page ).toMatchElement( productTitle, { + text: simpleProductName + ' 1', + } ); + await expect( page ).toClick( productTitle, { + text: simpleProductName + ' 1', + } ); + page.waitForNavigation( { waitUntil: 'networkidle0' } ); + await page.waitForSelector( 'h1.entry-title' ); + await expect( page ).toMatchElement( + 'h1.entry-title', + simpleProductName + ' 1' + ); + } ); - it('should let user sort the products in the shop', async () => { - await shopper.goToShop(); + it( 'should let user sort the products in the shop', async () => { + await shopper.goToShop(); - // Sort by price high to low - await page.select('.orderby', 'price-desc'); - // Verify the first product in sort order - await expect(page).toMatchElement(productTitle, {text: simpleProductName + ' 3'}); + // Sort by price high to low + await page.select( '.orderby', 'price-desc' ); + // Verify the first product in sort order + await expect( page ).toMatchElement( productTitle, { + text: simpleProductName + ' 3', + } ); - // Sort by price low to high - await page.select('.orderby', 'price'); - // Verify the first product in sort order - await expect(page).toMatchElement(productTitle, {text: simpleProductName + ' 1'}); + // Sort by price low to high + await page.select( '.orderby', 'price' ); + // Verify the first product in sort order + await expect( page ).toMatchElement( productTitle, { + text: simpleProductName + ' 1', + } ); - // Sort by date of creation, latest to oldest - await page.select('.orderby', 'date'); - // Verify the first product in sort order - await expect(page).toMatchElement(productTitle, {text: simpleProductName + ' 3'}); - }); - }); + // Sort by date of creation, latest to oldest + await page.select( '.orderby', 'date' ); + // Verify the first product in sort order + await expect( page ).toMatchElement( productTitle, { + text: simpleProductName + ' 3', + } ); + } ); + } + ); }; module.exports = runProductBrowseSearchSortTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-single-product.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-single-product.test.js index f5db7c73f1a..644a53752be 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-single-product.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-single-product.test.js @@ -24,123 +24,147 @@ const defaultVariableProduct = config.get( 'products.variable' ); let variableProductId; // Variables for grouped product -const simpleProductPrice = config.has('products.simple.price') ? config.get('products.simple.price') : '9.99'; +const simpleProductPrice = config.has( 'products.simple.price' ) + ? config.get( 'products.simple.price' ) + : '9.99'; const simple1 = { name: simpleProductName + ' 1', - regularPrice: simpleProductPrice + regularPrice: simpleProductPrice, }; const simple2 = { name: simpleProductName + ' 2', - regularPrice: simpleProductPrice + regularPrice: simpleProductPrice, }; const groupedProduct = { name: 'Grouped Product', - groupedProducts: [simple1, simple2] + groupedProducts: [ simple1, simple2 ], }; let groupedPostIdValue; const runSingleProductPageTest = () => { - describe('Single Product Page', () => { - beforeAll(async () => { + describe( 'Single Product Page', () => { + beforeAll( async () => { simplePostIdValue = await createSimpleProduct(); - }); + } ); - it('should be able to add simple products to the cart', async () => { + it( 'should be able to add simple products to the cart', async () => { // Add 5 simple products to cart - await shopper.goToProduct(simplePostIdValue); - await expect(page).toFill('div.quantity input.qty', '5'); + await shopper.goToProduct( simplePostIdValue ); + await expect( page ).toFill( 'div.quantity input.qty', '5' ); await shopper.addToCart(); - await expect(page).toMatchElement('.woocommerce-message', {text: 'have been added to your cart.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'have been added to your cart.', + } ); // Verify cart contents await shopper.goToCart(); - await shopper.productIsInCart(simpleProductName, 5); - }); + await shopper.productIsInCart( simpleProductName, 5 ); + } ); - it('should be able to remove simple products from the cart', async () => { + it( 'should be able to remove simple products from the cart', async () => { // Remove items from cart await shopper.removeFromCart( simplePostIdValue ); await uiUnblocked(); - await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); - }); - }); + await expect( page ).toMatchElement( '.cart-empty', { + text: 'Your cart is currently empty.', + } ); + } ); + } ); - describe('Variable Product Page', () => { - beforeAll(async () => { + describe( 'Variable Product Page', () => { + beforeAll( async () => { variableProductId = await createVariableProduct(); - }); + } ); - it('should be able to add variation products to the cart', async () => { + it( 'should be able to add variation products to the cart', async () => { // Add a product with one set of variations to cart - await shopper.goToProduct(variableProductId); + await shopper.goToProduct( variableProductId ); - for (const attr of defaultVariableProduct.attributes) { + for ( const attr of defaultVariableProduct.attributes ) { const { name, options } = attr; - const selectElem = `#${name.toLowerCase()}`; - const value = options[0]; + const selectElem = `#${ name.toLowerCase() }`; + const value = options[ 0 ]; - await expect(page).toSelect(selectElem, value); + await expect( page ).toSelect( selectElem, value ); } await shopper.addToCart(); - await expect(page).toMatchElement('.woocommerce-message', {text: 'has been added to your cart.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: 'has been added to your cart.', + } ); // Verify cart contents await shopper.goToCart(); - await shopper.productIsInCart(defaultVariableProduct.name); - }); + await shopper.productIsInCart( defaultVariableProduct.name ); + } ); - it('should be able to remove variation products from the cart', async () => { + it( 'should be able to remove variation products from the cart', async () => { // Remove items from cart await shopper.removeFromCart( variableProductId ); await uiUnblocked(); - await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); - }); - }); + await expect( page ).toMatchElement( '.cart-empty', { + text: 'Your cart is currently empty.', + } ); + } ); + } ); - describe('Grouped Product Page', () => { - beforeAll(async () => { - groupedPostIdValue = await createGroupedProduct(groupedProduct); - }); + describe( 'Grouped Product Page', () => { + beforeAll( async () => { + groupedPostIdValue = await createGroupedProduct( groupedProduct ); + } ); - it('should be able to add grouped products to the cart', async () => { + it( 'should be able to add grouped products to the cart', async () => { // Add a grouped product to cart - await shopper.goToProduct(groupedPostIdValue); - await page.waitForSelector('form.grouped_form'); + await shopper.goToProduct( groupedPostIdValue ); + await page.waitForSelector( 'form.grouped_form' ); await shopper.addToCart(); - await expect(page).toMatchElement('.woocommerce-error', - {text: 'Please choose the quantity of items you wish to add to your cart…'}); - const quantityFields = await page.$$('div.quantity input.qty'); - await quantityFields[0].click({clickCount: 3}); - await quantityFields[0].type('5'); - await quantityFields[1].click({clickCount: 3}); - await quantityFields[1].type('5'); + await expect( page ).toMatchElement( '.woocommerce-error', { + text: + 'Please choose the quantity of items you wish to add to your cart…', + } ); + const quantityFields = await page.$$( 'div.quantity input.qty' ); + await quantityFields[ 0 ].click( { clickCount: 3 } ); + await quantityFields[ 0 ].type( '5' ); + await quantityFields[ 1 ].click( { clickCount: 3 } ); + await quantityFields[ 1 ].type( '5' ); await shopper.addToCart(); - await expect(page).toMatchElement('.woocommerce-message', - {text: '“'+simpleProductName+' 1” and “'+simpleProductName+' 2” have been added to your cart.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: + '“' + + simpleProductName + + ' 1” and “' + + simpleProductName + + ' 2” have been added to your cart.', + } ); // Verify cart contents await shopper.goToCart(); - await shopper.productIsInCart(simpleProductName+' 1'); - await shopper.productIsInCart(simpleProductName+' 2'); - }); + await shopper.productIsInCart( simpleProductName + ' 1' ); + await shopper.productIsInCart( simpleProductName + ' 2' ); + } ); - it('should be able to remove grouped products from the cart', async () => { + it( 'should be able to remove grouped products from the cart', async () => { // Remove items from cart - await shopper.removeFromCart( simpleProductName+' 1' ); + await shopper.removeFromCart( simpleProductName + ' 1' ); await uiUnblocked(); - await expect(page).toMatchElement('.woocommerce-message', {text: '“'+simpleProductName+' 1” removed.'}); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: '“' + simpleProductName + ' 1” removed.', + } ); await Promise.all( [ // Reload page and perform item removal, since removeFromCart won't remove it when placed in a row page.reload(), page.waitForNavigation( { waitUntil: 'networkidle0' } ), ] ); - await shopper.removeFromCart(simpleProductName+' 2'); + await shopper.removeFromCart( simpleProductName + ' 2' ); await uiUnblocked(); - await expect(page).toMatchElement('.woocommerce-message', {text: '“'+simpleProductName+' 2” removed.'}); - await expect(page).toMatchElement('.cart-empty', {text: 'Your cart is currently empty.'}); - }); - }); + await expect( page ).toMatchElement( '.woocommerce-message', { + text: '“' + simpleProductName + ' 2” removed.', + } ); + await expect( page ).toMatchElement( '.cart-empty', { + text: 'Your cart is currently empty.', + } ); + } ); + } ); }; module.exports = runSingleProductPageTest; diff --git a/packages/js/e2e-core-tests/src/specs/shopper/front-end-variable-product-updates.test.js b/packages/js/e2e-core-tests/src/specs/shopper/front-end-variable-product-updates.test.js index 8c0ac5a9c5f..13762dd39a1 100644 --- a/packages/js/e2e-core-tests/src/specs/shopper/front-end-variable-product-updates.test.js +++ b/packages/js/e2e-core-tests/src/specs/shopper/front-end-variable-product-updates.test.js @@ -2,105 +2,128 @@ /** * Internal dependencies */ -const { - shopper, - createVariableProduct, -} = require( '@woocommerce/e2e-utils' ); -const config = require('config'); +const { shopper, createVariableProduct } = require( '@woocommerce/e2e-utils' ); +const config = require( 'config' ); let variablePostIdValue; -const cartDialogMessage = 'Please select some product options before adding this product to your cart.'; -const attributes = config.get( 'products.variable.attributes' ) +const cartDialogMessage = + 'Please select some product options before adding this product to your cart.'; +const attributes = config.get( 'products.variable.attributes' ); const runVariableProductUpdateTest = () => { - describe('Shopper > Update variable product',() => { - beforeAll(async () => { + describe( 'Shopper > Update variable product', () => { + beforeAll( async () => { variablePostIdValue = await createVariableProduct(); - }); + } ); - it('shopper can change variable attributes to the same value', async () => { - await shopper.goToProduct(variablePostIdValue); + it( 'shopper can change variable attributes to the same value', async () => { + await shopper.goToProduct( variablePostIdValue ); - for (const a of attributes) { + for ( const a of attributes ) { const { name, options } = a; - const attrHTMLId = `#${name.toLowerCase()}`; + const attrHTMLId = `#${ name.toLowerCase() }`; - await expect(page).toSelect(attrHTMLId, options[0]); + await expect( page ).toSelect( attrHTMLId, options[ 0 ] ); } - await expect(page).toMatchElement('.woocommerce-variation-price', { - text: '9.99' - }); - }); + await expect( page ).toMatchElement( + '.woocommerce-variation-price', + { + text: '9.99', + } + ); + } ); - it('shopper can change attributes to combination with dimensions and weight', async () => { - await shopper.goToProduct(variablePostIdValue); - await expect(page).toSelect( - `#${attributes[0].name.toLowerCase()}`, - attributes[0].options[0] + it( 'shopper can change attributes to combination with dimensions and weight', async () => { + await shopper.goToProduct( variablePostIdValue ); + await expect( page ).toSelect( + `#${ attributes[ 0 ].name.toLowerCase() }`, + attributes[ 0 ].options[ 0 ] ); - await expect(page).toSelect( - `#${attributes[1].name.toLowerCase()}`, - attributes[1].options[1] + await expect( page ).toSelect( + `#${ attributes[ 1 ].name.toLowerCase() }`, + attributes[ 1 ].options[ 1 ] ); - await expect(page).toSelect( - `#${attributes[2].name.toLowerCase()}`, - attributes[2].options[0] + await expect( page ).toSelect( + `#${ attributes[ 2 ].name.toLowerCase() }`, + attributes[ 2 ].options[ 0 ] ); - await expect(page).toMatchElement('.woocommerce-variation-price', { text: '20.00' }); - await expect(page).toMatchElement('.woocommerce-variation-availability', { text: 'Out of stock' }); - await expect(page).toMatchElement('.woocommerce-product-attributes-item--weight', { text: '200 kg' }); - await expect(page).toMatchElement('.woocommerce-product-attributes-item--dimensions', { text: '10 × 20 × 15 cm' }); - - }); - - it('shopper can change variable product attributes to variation with a different price', async () => { - await shopper.goToProduct(variablePostIdValue); - await expect(page).toSelect( - `#${attributes[0].name.toLowerCase()}`, - attributes[0].options[0] + await expect( page ).toMatchElement( + '.woocommerce-variation-price', + { text: '20.00' } ); - await expect(page).toSelect( - `#${attributes[1].name.toLowerCase()}`, - attributes[1].options[0] + await expect( page ).toMatchElement( + '.woocommerce-variation-availability', + { + text: 'Out of stock', + } ); - await expect(page).toSelect( - `#${attributes[2].name.toLowerCase()}`, - attributes[2].options[1] + await expect( page ).toMatchElement( + '.woocommerce-product-attributes-item--weight', + { + text: '200 kg', + } + ); + await expect( + page + ).toMatchElement( + '.woocommerce-product-attributes-item--dimensions', + { text: '10 × 20 × 15 cm' } + ); + } ); + + it( 'shopper can change variable product attributes to variation with a different price', async () => { + await shopper.goToProduct( variablePostIdValue ); + await expect( page ).toSelect( + `#${ attributes[ 0 ].name.toLowerCase() }`, + attributes[ 0 ].options[ 0 ] + ); + await expect( page ).toSelect( + `#${ attributes[ 1 ].name.toLowerCase() }`, + attributes[ 1 ].options[ 0 ] + ); + await expect( page ).toSelect( + `#${ attributes[ 2 ].name.toLowerCase() }`, + attributes[ 2 ].options[ 1 ] ); - await expect(page).toMatchElement('.woocommerce-variation-price', { text: '11.99' }); - }); + await expect( page ).toMatchElement( + '.woocommerce-variation-price', + { text: '11.99' } + ); + } ); - it('shopper can reset variations', async () => { - await shopper.goToProduct(variablePostIdValue); - await expect(page).toSelect( - `#${attributes[0].name.toLowerCase()}`, - attributes[0].options[0] + it( 'shopper can reset variations', async () => { + await shopper.goToProduct( variablePostIdValue ); + await expect( page ).toSelect( + `#${ attributes[ 0 ].name.toLowerCase() }`, + attributes[ 0 ].options[ 0 ] ); - await expect(page).toSelect( - `#${attributes[1].name.toLowerCase()}`, - attributes[1].options[1] + await expect( page ).toSelect( + `#${ attributes[ 1 ].name.toLowerCase() }`, + attributes[ 1 ].options[ 1 ] ); - await expect(page).toSelect( - `#${attributes[2].name.toLowerCase()}`, - attributes[2].options[0] + await expect( page ).toSelect( + `#${ attributes[ 2 ].name.toLowerCase() }`, + attributes[ 2 ].options[ 0 ] ); - await expect(page).toClick('.reset_variations'); + await expect( page ).toClick( '.reset_variations' ); // Verify the reset by attempting to add the product to the cart - const couponDialog = await expect(page).toDisplayDialog(async () => { - await expect(page).toClick('.single_add_to_cart_button'); - }); + const couponDialog = await expect( page ).toDisplayDialog( + async () => { + await expect( page ).toClick( + '.single_add_to_cart_button' + ); + } + ); - expect(couponDialog.message()).toMatch(cartDialogMessage); - }); - - }); - + expect( couponDialog.message() ).toMatch( cartDialogMessage ); + } ); + } ); }; module.exports = runVariableProductUpdateTest; diff --git a/packages/js/e2e-core-tests/src/specs/utils/coupons.js b/packages/js/e2e-core-tests/src/specs/utils/coupons.js index f39532abad1..3a5d478e36e 100644 --- a/packages/js/e2e-core-tests/src/specs/utils/coupons.js +++ b/packages/js/e2e-core-tests/src/specs/utils/coupons.js @@ -6,7 +6,7 @@ const { createCoupon } = require( '@woocommerce/e2e-utils' ); const couponsTable = [ [ 'fixed cart', { text: '$5.00' }, { text: '$4.99' } ], [ 'percentage', { text: '$4.99' }, { text: '$5.00' } ], - [ 'fixed product', { text: '$5.00' }, { text: '$4.99' } ] + [ 'fixed product', { text: '$5.00' }, { text: '$4.99' } ], ]; let couponFixedCart; @@ -28,12 +28,18 @@ const getCouponId = async ( couponType ) => { return couponFixedCart; case 'percentage': if ( ! couponPercentage ) { - couponPercentage = await createCoupon( '50', 'Percentage discount' ); + couponPercentage = await createCoupon( + '50', + 'Percentage discount' + ); } return couponPercentage; case 'fixed product': if ( ! couponFixedProduct ) { - couponFixedProduct = await createCoupon( '5', 'Fixed product discount' ); + couponFixedProduct = await createCoupon( + '5', + 'Fixed product discount' + ); } return couponFixedProduct; } diff --git a/packages/js/e2e-environment/.eslintrc.js b/packages/js/e2e-environment/.eslintrc.js index a54292c2b19..a10fc099765 100644 --- a/packages/js/e2e-environment/.eslintrc.js +++ b/packages/js/e2e-environment/.eslintrc.js @@ -1,7 +1,5 @@ module.exports = { - extends: [ - 'plugin:jest/recommended', - ], + extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ], env: { 'jest/globals': true, }, diff --git a/packages/js/e2e-environment/changelog/fix-standardize-lint-e2e b/packages/js/e2e-environment/changelog/fix-standardize-lint-e2e new file mode 100644 index 00000000000..72f3afe233e --- /dev/null +++ b/packages/js/e2e-environment/changelog/fix-standardize-lint-e2e @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize linting: Ensure e2e packages are lintable diff --git a/packages/js/e2e-environment/package.json b/packages/js/e2e-environment/package.json index 38df8fe81d1..094cf68fe2c 100644 --- a/packages/js/e2e-environment/package.json +++ b/packages/js/e2e-environment/package.json @@ -29,9 +29,9 @@ "@wordpress/jest-preset-default": "^7.1.3", "app-root-path": "^3.0.0", "commander": "4.1.1", - "config": "3.3.3", + "config": "3.3.3", "jest": "^25.1.0", - "jest-circus": "25.1.0", + "jest-circus": "25.1.0", "jest-each": "25.5.0", "jest-puppeteer": "^4.4.0", "node-stream-zip": "^1.13.6", @@ -53,7 +53,7 @@ "@wordpress/babel-plugin-import-jsx-pragma": "1.1.3", "@wordpress/babel-preset-default": "3.0.2", "@wordpress/browserslist-config": "^4.1.0", - "@wordpress/eslint-plugin": "7.3.0", + "@woocommerce/eslint-plugin": "workspace:*", "eslint": "^8.1.0", "ndb": "^1.1.5", "semver": "^7.3.2" @@ -66,7 +66,7 @@ "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", - "prepack": "pnpm run build", + "prepare": "pnpm run build", "docker:up": "./bin/docker-compose.sh up", "docker:wait": "bash ./bin/wait-for-build.sh", "docker:down": "./bin/docker-compose.sh down", @@ -75,14 +75,15 @@ "test:e2e": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js", "test:e2e-debug": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev --debug", "test:e2e-dev": "bash ./bin/wait-for-build.sh && ./bin/e2e-test-integration.js --dev", - "lint": "eslint src" + "lint": "eslint src --ext=js,ts,tsx", + "lint:fix": "eslint src --ext=js,ts,tsx --fix" }, "bin": { "wc-e2e": "bin/wc-e2e.sh" }, "lint-staged": { "*.(t|j)s?(x)": [ - "eslint --fix" + "pnpm lint:fix" ] } } diff --git a/packages/js/e2e-environment/src/setup/jest.failure.js b/packages/js/e2e-environment/src/setup/jest.failure.js index 2f74adebc87..41b934fefe1 100644 --- a/packages/js/e2e-environment/src/setup/jest.failure.js +++ b/packages/js/e2e-environment/src/setup/jest.failure.js @@ -78,8 +78,8 @@ global.it = ( () => { /** * Save a screenshot during a test if the test fails. * - * @param testName - * @param callback + * @param testName + * @param callback * @return {Promise} */ const screenshotTest = async ( testName, callback ) => { diff --git a/packages/js/e2e-environment/src/slack/reporter.js b/packages/js/e2e-environment/src/slack/reporter.js index 67a7b9ba403..da918fd9022 100644 --- a/packages/js/e2e-environment/src/slack/reporter.js +++ b/packages/js/e2e-environment/src/slack/reporter.js @@ -67,7 +67,7 @@ const initializeSlack = () => { /** * Post a message to a Slack channel for a failed test. * - * @param testName + * @param testName * @return {Promise} */ async function sendFailedTestMessageToSlack( testName ) { @@ -131,7 +131,7 @@ async function sendFailedTestMessageToSlack( testName ) { /** * Post a screenshot to a Slack channel for a failed test. * - * @param screenshotOfFailedTest + * @param screenshotOfFailedTest * @return {Promise} */ async function sendFailedTestScreenshotToSlack( screenshotOfFailedTest ) { diff --git a/packages/js/e2e-utils/changelog/fix-standardize-lint-e2e b/packages/js/e2e-utils/changelog/fix-standardize-lint-e2e new file mode 100644 index 00000000000..72f3afe233e --- /dev/null +++ b/packages/js/e2e-utils/changelog/fix-standardize-lint-e2e @@ -0,0 +1,4 @@ +Significance: patch +Type: dev + +Standardize linting: Ensure e2e packages are lintable diff --git a/packages/js/e2e-utils/package.json b/packages/js/e2e-utils/package.json index b4aa1afcffe..6cef88f9250 100644 --- a/packages/js/e2e-utils/package.json +++ b/packages/js/e2e-utils/package.json @@ -45,7 +45,13 @@ "clean": "rm -rf ./build ./build-module", "compile": "e2e-builds", "build": "pnpm run clean && pnpm run compile", - "prepack": "pnpm run build", - "lint": "eslint src" + "prepare": "pnpm run build", + "lint": "eslint src --ext=js,ts,tsx", + "lint:fix": "eslint src --ext=js,ts,tsx --fix" + }, + "lint-staged": { + "*.(t|j)s?(x)": [ + "pnpm lint:fix" + ] } } diff --git a/packages/js/e2e-utils/src/components.js b/packages/js/e2e-utils/src/components.js index f117738a7ec..a2d5852fc63 100644 --- a/packages/js/e2e-utils/src/components.js +++ b/packages/js/e2e-utils/src/components.js @@ -34,7 +34,7 @@ const uuid = require( 'uuid' ); /** * Verify and publish * - * @param noticeText The text that appears in the notice after publishing. + * @param noticeText The text that appears in the notice after publishing. */ const verifyAndPublish = async ( noticeText ) => { // Wait for auto save @@ -53,7 +53,7 @@ const verifyAndPublish = async ( noticeText ) => { /** * Wait for primary button to be enabled and click. * - * @param waitForNetworkIdle - Wait for network idle after click + * @param waitForNetworkIdle - Wait for network idle after click * @return {Promise} */ const waitAndClickPrimary = async ( waitForNetworkIdle = true ) => { @@ -231,8 +231,8 @@ const completeOnboardingWizard = async () => { /** * Create simple product. * - * @param {string} productTitle Defaults to Simple Product. Customizable title. - * @param {string} productPrice Defaults to $9.99. Customizable pricing. + * @param {string} productTitle Defaults to Simple Product. Customizable title. + * @param {string} productPrice Defaults to $9.99. Customizable pricing. * @param {Object} additionalProps Defaults to nothing. Additional product properties. */ const createSimpleProduct = async ( @@ -252,9 +252,9 @@ const createSimpleProduct = async ( /** * Create simple product with categories * - * @param productName Product's name which can be changed when writing a test - * @param productPrice Product's price which can be changed when writing a test - * @param categoryName Product's category which can be changed when writing a test + * @param productName Product's name which can be changed when writing a test + * @param productPrice Product's price which can be changed when writing a test + * @param categoryName Product's category which can be changed when writing a test */ const createSimpleProductWithCategory = async ( productName, @@ -281,10 +281,10 @@ const createSimpleProductWithCategory = async ( /** * Create simple downloadable product * - * @param name Product's name. Defaults to 'Simple Product' (see createSimpleProduct definition). - * @param downloadLimit Product's download limit. Defaults to '-1' (unlimited). - * @param downloadName Product's download name. Defaults to 'Single'. - * @param price Product's price. Defaults to '$9.99' (see createSimpleProduct definition). + * @param name Product's name. Defaults to 'Simple Product' (see createSimpleProduct definition). + * @param downloadLimit Product's download limit. Defaults to '-1' (unlimited). + * @param downloadName Product's download name. Defaults to 'Single'. + * @param price Product's price. Defaults to '$9.99' (see createSimpleProduct definition). */ const createSimpleDownloadableProduct = async ( name, @@ -312,7 +312,7 @@ const createSimpleDownloadableProduct = async ( * Create variable product. * Also, create variations for all attributes. * - * @param varProduct Defaults to the variable product object in `default.json` + * @param varProduct Defaults to the variable product object in `default.json` * @return the ID of the created variable product */ const createVariableProduct = async ( varProduct = defaultVariableProduct ) => { @@ -383,7 +383,7 @@ const createVariableProduct = async ( varProduct = defaultVariableProduct ) => { /** * Create grouped product. * - * @param groupedProduct Defaults to the grouped product object in `default.json` + * @param groupedProduct Defaults to the grouped product object in `default.json` * @return ID of the grouped product */ const createGroupedProduct = async ( @@ -446,7 +446,7 @@ const createOrder = async ( orderOptions = {} ) => { /** * Create a basic order with the provided order status. * - * @param orderStatus Status of the new order. Defaults to `Pending payment`. + * @param orderStatus Status of the new order. Defaults to `Pending payment`. */ const createSimpleOrder = async ( orderStatus = 'Pending payment' ) => { // Go to 'Add new order' page @@ -481,7 +481,7 @@ const createSimpleOrder = async ( orderStatus = 'Pending payment' ) => { * Creates a batch of orders from the given `statuses` * using the "Batch Create Order" API. * - * @param statuses Array of order statuses + * @param statuses Array of order statuses */ const batchCreateOrders = async ( statuses ) => { const defaultOrder = config.get( 'orders.basicPaidOrder' ); @@ -505,8 +505,8 @@ const batchCreateOrders = async ( statuses ) => { /** * Adds a product to an order in the merchant. * - * @param orderId ID of the order to add the product to. - * @param productName Name of the product being added to the order. + * @param orderId ID of the order to add the product to. + * @param productName Name of the product being added to the order. */ const addProductToOrder = async ( orderId, productName ) => { await merchant.goToOrder( orderId ); @@ -539,8 +539,8 @@ const addProductToOrder = async ( orderId, productName ) => { /** * Creates a basic coupon with the provided coupon amount. Returns the coupon code. * - * @param couponAmount Amount to be applied. Defaults to 5. - * @param discountType Type of a coupon. Defaults to Fixed cart discount. + * @param couponAmount Amount to be applied. Defaults to 5. + * @param discountType Type of a coupon. Defaults to Fixed cart discount. */ const createCoupon = async ( couponAmount = '5', @@ -576,10 +576,10 @@ const createCoupon = async ( /** * Adds a shipping zone along with a shipping method. * - * @param zoneName Shipping zone name. - * @param zoneLocation Shiping zone location. Defaults to country:US. For states use: state:US:CA - * @param zipCode Shipping zone zip code. Defaults to empty one space. - * @param zoneMethod Shipping method type. Defaults to flat_rate (use also: free_shipping or local_pickup) + * @param zoneName Shipping zone name. + * @param zoneLocation Shiping zone location. Defaults to country:US. For states use: state:US:CA + * @param zipCode Shipping zone zip code. Defaults to empty one space. + * @param zoneMethod Shipping method type. Defaults to flat_rate (use also: free_shipping or local_pickup) */ const addShippingZoneAndMethod = async ( zoneName, @@ -626,8 +626,8 @@ const addShippingZoneAndMethod = async ( /** * Click the Update button on the order details page. * - * @param noticeText The text that appears in the notice after updating the order. - * @param waitForSave Optionally wait for auto save. + * @param noticeText The text that appears in the notice after updating the order. + * @param waitForSave Optionally wait for auto save. */ const clickUpdateOrder = async ( noticeText, waitForSave = false ) => { if ( waitForSave ) { diff --git a/packages/js/e2e-utils/src/flows/merchant.js b/packages/js/e2e-utils/src/flows/merchant.js index 086b47db362..d6f5c0e1de8 100644 --- a/packages/js/e2e-utils/src/flows/merchant.js +++ b/packages/js/e2e-utils/src/flows/merchant.js @@ -531,7 +531,7 @@ const merchant = { /** * Deactivate a plugin by the plugin's name with the option to delete the plugin as well. * - * @param {string} pluginName The name of the plugin to deactivate. For example, `WooCommerce`. + * @param {string} pluginName The name of the plugin to deactivate. For example, `WooCommerce`. * @param {boolean} deletePlugin Pass in `true` to delete the plugin. Defaults to `false`. */ deactivatePlugin: async ( pluginName, deletePlugin = false ) => { diff --git a/packages/js/e2e-utils/src/flows/utils.js b/packages/js/e2e-utils/src/flows/utils.js index 4dd531a57bf..ca061416cee 100644 --- a/packages/js/e2e-utils/src/flows/utils.js +++ b/packages/js/e2e-utils/src/flows/utils.js @@ -2,9 +2,9 @@ * Take a string name and generate the slug for it. * Example: 'My plugin' => 'my-plugin' * - * @param text string to convert to a slug + * @param text string to convert to a slug * - * Sourced from: https://gist.github.com/spyesx/561b1d65d4afb595f295 + * Sourced from: https://gist.github.com/spyesx/561b1d65d4afb595f295 */ export const getSlug = ( text ) => { text = text.trim().toLowerCase(); @@ -39,7 +39,7 @@ export const itIf = ( condition ) => ( condition ? it : it.skip ); /** * Wait for a timeout in milliseconds * - * @param timeout delay time in milliseconds + * @param timeout delay time in milliseconds * @return {Promise} */ export const waitForTimeout = async ( timeout ) => { diff --git a/packages/js/e2e-utils/src/flows/with-rest-api.js b/packages/js/e2e-utils/src/flows/with-rest-api.js index 455c1299616..42faacdf447 100644 --- a/packages/js/e2e-utils/src/flows/with-rest-api.js +++ b/packages/js/e2e-utils/src/flows/with-rest-api.js @@ -16,9 +16,9 @@ const userEndpoint = '/wp/v2/users'; /** * Utility function to delete all merchant created data store objects. * - * @param repository - * @param defaultObjectId - * @param statuses Status of the object to check + * @param repository + * @param defaultObjectId + * @param statuses Status of the object to check * @return {Promise} */ const deleteAllRepositoryObjects = async ( @@ -226,13 +226,13 @@ export const withRestApi = { /** * Adds a shipping zone along with a shipping method using the API. * - * @param zoneName Shipping zone name. - * @param zoneLocation Shiping zone location. Defaults to country:US. For states use: state:US:CA. - * @param zipCode Shipping zone zip code. Default is no zip code. - * @param zoneMethod Shipping method type. Defaults to flat_rate (use also: free_shipping or local_pickup). - * @param cost Shipping method cost. Default is no cost. - * @param additionalZoneMethods Array of additional zone methods to add to the shipping zone. - * @param {boolean} testResponse Test the response status code. + * @param zoneName Shipping zone name. + * @param zoneLocation Shiping zone location. Defaults to country:US. For states use: state:US:CA. + * @param zipCode Shipping zone zip code. Default is no zip code. + * @param zoneMethod Shipping method type. Defaults to flat_rate (use also: free_shipping or local_pickup). + * @param cost Shipping method cost. Default is no cost. + * @param additionalZoneMethods Array of additional zone methods to add to the shipping zone. + * @param {boolean} testResponse Test the response status code. */ addShippingZoneAndMethod: async ( zoneName, @@ -367,7 +367,7 @@ export const withRestApi = { /** * Delete a customer account by their email address if the user exists. * - * @param emailAddress Customer user account email address. + * @param emailAddress Customer user account email address. * @return {Promise} */ deleteCustomerByEmail: async ( emailAddress ) => { @@ -394,8 +394,8 @@ export const withRestApi = { /** * Reset a settings group to default values except selects. * - * @param settingsGroup - * @param {boolean} testResponse Test the response status code. + * @param settingsGroup + * @param {boolean} testResponse Test the response status code. * @return {Promise} */ resetSettingsGroupToDefault: async ( @@ -437,8 +437,8 @@ export const withRestApi = { * Update a setting to the supplied value. * * @param {string} settingsGroup The settings group to update. - * @param {string} settingId The setting ID to update - * @param {Object} payload An object with a key/value pair to update. + * @param {string} settingId The setting ID to update + * @param {Object} payload An object with a key/value pair to update. */ updateSettingOption: async ( settingsGroup, settingId, payload = {} ) => { const settingsClient = Setting.restRepository( client ); @@ -447,9 +447,9 @@ export const withRestApi = { /** * Update a payment gateway. * - * @param {string} paymentGatewayId The ID of the payment gateway to update. - * @param {Object} payload An object with the key/value pair to update. - * @param {boolean} testResponse Test the response status code. + * @param {string} paymentGatewayId The ID of the payment gateway to update. + * @param {Object} payload An object with the key/value pair to update. + * @param {boolean} testResponse Test the response status code. */ updatePaymentGateway: async ( paymentGatewayId, @@ -467,7 +467,7 @@ export const withRestApi = { /** * Create a batch of orders using the "Batch Create Order" API endpoint. * - * @param orders Array of orders to be created + * @param orders Array of orders to be created * @param {boolean} testResponse Test the response status code. */ batchCreateOrders: async ( orders, testResponse = true ) => { diff --git a/packages/js/e2e-utils/src/page-utils.js b/packages/js/e2e-utils/src/page-utils.js index e052817be99..05367bc0651 100644 --- a/packages/js/e2e-utils/src/page-utils.js +++ b/packages/js/e2e-utils/src/page-utils.js @@ -114,8 +114,8 @@ export const backboneUnblocked = async () => { /** * Conditionally wait for a selector without throwing an error. * - * @param selector - * @param timeoutInSeconds + * @param selector + * @param timeoutInSeconds * @return {Promise} */ export const waitForSelectorWithoutThrow = async ( @@ -136,7 +136,7 @@ export const waitForSelectorWithoutThrow = async ( /** * Publish, verify that item was published. Trash, verify that item was trashed. * - * @param {string} button (Publish) + * @param {string} button (Publish) * @param {string} publishNotice * @param {string} publishVerification * @param {string} trashVerification @@ -193,7 +193,7 @@ export const verifyCheckboxIsUnset = async ( selector ) => { * Verify the value of input field once it was saved (can be used for radio buttons verification as well). * * @param {string} selector Selector of the input field that needs to be verified. - * @param {string} value Value of the input field that needs to be verified. + * @param {string} value Value of the input field that needs to be verified. */ export const verifyValueOfInputField = async ( selector, value ) => { await page.focus( selector ); @@ -249,7 +249,7 @@ export const evalAndClick = async ( selector ) => { /** * Select a value from select2 search input field. * - * @param {string} value Value of what to be selected + * @param {string} value Value of what to be selected * @param {string} selector Selector of the select2 search field */ export const selectOptionInSelect2 = async ( @@ -266,8 +266,8 @@ export const selectOptionInSelect2 = async ( /** * Search by any term for an order * - * @param {string} value Value to be entered into the search field - * @param {string} orderId Order ID + * @param {string} value Value to be entered into the search field + * @param {string} orderId Order ID * @param {string} customerName Customer's full name attached to order ID. */ export const searchForOrder = async ( value, orderId, customerName ) => { @@ -284,7 +284,7 @@ export const searchForOrder = async ( value, orderId, customerName ) => { * Apply a coupon code within cart or checkout. * Method will try to apply a coupon in the checkout, otherwise will try to apply in the cart. * - * @param couponCode string + * @param couponCode string * @return {Promise} */ export const applyCoupon = async ( couponCode ) => { @@ -310,7 +310,7 @@ export const applyCoupon = async ( couponCode ) => { /** * Remove one coupon within cart or checkout. * - * @param couponCode Coupon name. + * @param couponCode Coupon name. * @return {Promise} */ export const removeCoupon = async ( couponCode ) => { @@ -348,7 +348,7 @@ export const selectOrderAction = async ( action ) => { * * @param {string} buttonSelector Selector of button to click * @param {string} resultSelector Selector to wait for after click - * @param {number} timeout Timeout length in milliseconds. Default 5000. + * @param {number} timeout Timeout length in milliseconds. Default 5000. * @return {Promise} */ export const clickAndWaitForSelector = async ( @@ -367,9 +367,9 @@ export const clickAndWaitForSelector = async ( * Behavior can be modified with @param options. Possible keys: `visible`, `hidden`, `timeout`. * More details at: https://pptr.dev/#?product=Puppeteer&show=api-pagewaitforselectorselector-options * - * @param {Puppeteer.Page} page Puppeteer representation of the page. - * @param {string} selector CSS selector of the element - * @param {Object} options Custom options to modify function behavior. + * @param {Puppeteer.Page} page Puppeteer representation of the page. + * @param {string} selector CSS selector of the element + * @param {Object} options Custom options to modify function behavior. */ export async function waitForSelector( page, selector, options = {} ) { // set up default options @@ -384,7 +384,7 @@ export async function waitForSelector( page, selector, options = {} ) { * Retrieves the desired HTML attribute from a selector. * For example, the 'value' attribute of an input element. * - * @param {string} selector Selector of the element you want to get the attribute from. + * @param {string} selector Selector of the element you want to get the attribute from. * @param {string} attribute The desired HTML attribute. * @return {Promise} */ @@ -399,8 +399,8 @@ export async function getSelectorAttribute( selector, attribute ) { /** * Asserts the value of the desired HTML attribute of a selector. * - * @param {string} selector Selector of the element you want to verify. - * @param {string} attribute The desired HTML attribute. + * @param {string} selector Selector of the element you want to verify. + * @param {string} attribute The desired HTML attribute. * @param {string} expectedValue The expected value. */ export async function verifyValueOfElementAttribute( diff --git a/packages/js/e2e-utils/src/pages/admin-edit.js b/packages/js/e2e-utils/src/pages/admin-edit.js index 19a82fb0566..3ab4c0c9808 100644 --- a/packages/js/e2e-utils/src/pages/admin-edit.js +++ b/packages/js/e2e-utils/src/pages/admin-edit.js @@ -4,9 +4,9 @@ export class AdminEdit { /** * Publish the object being edited and verify published status * - * @param button Publish button selector - * @param publishNotice Publish notice selector - * @param publishVerification Expected notice on successful publish + * @param button Publish button selector + * @param publishNotice Publish notice selector + * @param publishVerification Expected notice on successful publish * @return {Promise} */ async verifyPublish( button, publishNotice, publishVerification ) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e61b8716b1f..0c984fd0d73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -187,8 +187,10 @@ importers: packages/js/api-core-tests: specifiers: + '@woocommerce/eslint-plugin': workspace:* allure-commandline: ^2.17.2 dotenv: ^10.0.0 + eslint: ^8.12.0 jest: ^25.1.0 jest-allure: ^0.1.3 jest-runner-groups: ^2.1.0 @@ -202,6 +204,9 @@ importers: jest-runner-groups: 2.1.0 postman-collection: 4.1.0 supertest: 6.1.6 + devDependencies: + '@woocommerce/eslint-plugin': link:../eslint-plugin + eslint: 8.12.0 packages/js/components: specifiers: @@ -605,13 +610,17 @@ importers: packages/js/e2e-builds: specifiers: '@babel/core': 7.12.9 + '@woocommerce/eslint-plugin': workspace:* chalk: ^4.1.2 + eslint: ^8.12.0 glob: ^7.2.0 lodash: ^4.17.21 mkdirp: ^1.0.4 devDependencies: '@babel/core': 7.12.9 + '@woocommerce/eslint-plugin': link:../eslint-plugin chalk: 4.1.2 + eslint: 8.12.0 glob: 7.2.0 lodash: 4.17.21 mkdirp: 1.0.4 @@ -628,11 +637,13 @@ importers: '@babel/preset-env': 7.12.7 '@jest/globals': ^26.4.2 '@woocommerce/e2e-builds': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': ^4.1.0 '@wordpress/deprecated': ^3.2.3 config: 3.3.3 + eslint: ^8.12.0 dependencies: '@jest/globals': 26.6.2 '@wordpress/deprecated': 3.2.3 @@ -647,9 +658,11 @@ importers: '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@woocommerce/e2e-builds': link:../e2e-builds + '@woocommerce/eslint-plugin': link:../eslint-plugin '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': 4.1.0 + eslint: 8.12.0 packages/js/e2e-environment: specifiers: @@ -666,11 +679,11 @@ importers: '@slack/web-api': ^6.1.0 '@woocommerce/api': ^0.2.0 '@woocommerce/e2e-builds': workspace:* + '@woocommerce/eslint-plugin': workspace:* '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': ^4.1.0 '@wordpress/e2e-test-utils': ^4.16.1 - '@wordpress/eslint-plugin': 7.3.0 '@wordpress/jest-preset-default': ^7.1.3 app-root-path: ^3.0.0 commander: 4.1.1 @@ -716,10 +729,10 @@ importers: '@babel/polyfill': 7.12.1 '@babel/preset-env': 7.12.7_@babel+core@7.12.9 '@woocommerce/e2e-builds': link:../e2e-builds + '@woocommerce/eslint-plugin': link:../eslint-plugin '@wordpress/babel-plugin-import-jsx-pragma': 1.1.3_@babel+core@7.12.9 '@wordpress/babel-preset-default': 3.0.2 '@wordpress/browserslist-config': 4.1.0 - '@wordpress/eslint-plugin': 7.3.0_eslint@8.2.0+typescript@4.2.4 eslint: 8.2.0 ndb: 1.1.5 semver: 7.3.5 @@ -13960,22 +13973,6 @@ packages: - typescript dev: true - /@typescript-eslint/experimental-utils/2.34.0_eslint@8.2.0+typescript@4.2.4: - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: '*' - dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.2.4 - eslint: 8.2.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/experimental-utils/3.10.1_eslint@6.8.0+typescript@3.9.7: resolution: {integrity: sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -14316,27 +14313,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/2.34.0_typescript@4.2.4: - resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - debug: 4.3.3 - eslint-visitor-keys: 1.3.0 - glob: 7.2.0 - is-glob: 4.0.3 - lodash: 4.17.21 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.2.4 - typescript: 4.2.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree/2.34.0_typescript@4.6.2: resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} @@ -15881,30 +15857,6 @@ packages: - supports-color dev: true - /@wordpress/eslint-plugin/7.3.0_eslint@8.2.0+typescript@4.2.4: - resolution: {integrity: sha512-7wIFzzc14E1XuuT9haBuhoA9FRUGWlbD4Oek+XkiZlzNVqZI3slgbtIFJ6/Mfij1V18rv6Ns9a1cPJLtCU8JHQ==} - peerDependencies: - eslint: ^6 || ^7 - dependencies: - '@wordpress/prettier-config': 0.4.0 - babel-eslint: 10.1.0_eslint@8.2.0 - cosmiconfig: 7.0.1 - eslint: 8.2.0 - eslint-config-prettier: 6.15.0_eslint@8.2.0 - eslint-plugin-jest: 23.20.0_eslint@8.2.0+typescript@4.2.4 - eslint-plugin-jsdoc: 30.7.13_eslint@8.2.0 - eslint-plugin-jsx-a11y: 6.5.1_eslint@8.2.0 - eslint-plugin-prettier: 3.4.1_1786dfa66f4aafe2692523a4f07ad974 - eslint-plugin-react: 7.29.4_eslint@8.2.0 - eslint-plugin-react-hooks: 4.3.0_eslint@8.2.0 - globals: 12.4.0 - prettier: /wp-prettier/2.0.5 - requireindex: 1.2.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@wordpress/eslint-plugin/7.4.0_eslint@7.32.0+typescript@4.6.2: resolution: {integrity: sha512-HJpDYz2drtC9rY8MiYtYJ3cimioEIweGyb3P2DQTjUZ3sC4AGg+97PhXLHUdKfsFQ31JRxyLS9kKuGdDVBwWww==} engines: {node: '>=10', npm: '>=6.9'} @@ -17437,24 +17389,6 @@ packages: - supports-color dev: true - /babel-eslint/10.1.0_eslint@8.2.0: - resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} - engines: {node: '>=6'} - deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. - peerDependencies: - eslint: '>= 4.12.1' - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/parser': 7.16.4 - '@babel/traverse': 7.16.3 - '@babel/types': 7.16.0 - eslint: 8.2.0 - eslint-visitor-keys: 1.3.0 - resolve: 1.20.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-generator/6.26.1: resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} dependencies: @@ -21613,16 +21547,6 @@ packages: get-stdin: 6.0.0 dev: true - /eslint-config-prettier/6.15.0_eslint@8.2.0: - resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - dependencies: - eslint: 8.2.0 - get-stdin: 6.0.0 - dev: true - /eslint-config-prettier/8.5.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true @@ -21801,19 +21725,6 @@ packages: - typescript dev: true - /eslint-plugin-jest/23.20.0_eslint@8.2.0+typescript@4.2.4: - resolution: {integrity: sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw==} - engines: {node: '>=8'} - peerDependencies: - eslint: '>=5' - dependencies: - '@typescript-eslint/experimental-utils': 2.34.0_eslint@8.2.0+typescript@4.2.4 - eslint: 8.2.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /eslint-plugin-jest/25.7.0_6bef967891becc1ab6057e2949a5834f: resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -21896,24 +21807,6 @@ packages: - supports-color dev: true - /eslint-plugin-jsdoc/30.7.13_eslint@8.2.0: - resolution: {integrity: sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 - dependencies: - comment-parser: 0.7.6 - debug: 4.3.4 - eslint: 8.2.0 - jsdoctypeparser: 9.0.0 - lodash: 4.17.21 - regextras: 0.7.1 - semver: 7.3.5 - spdx-expression-parse: 3.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-plugin-jsdoc/37.9.7: resolution: {integrity: sha512-8alON8yYcStY94o0HycU2zkLKQdcS+qhhOUNQpfONHHwvI99afbmfpYuPqf6PbLz5pLZldG3Te5I0RbAiTN42g==} engines: {node: ^12 || ^14 || ^16 || ^17} @@ -22051,27 +21944,6 @@ packages: language-tags: 1.0.5 minimatch: 3.1.2 - /eslint-plugin-jsx-a11y/6.5.1_eslint@8.2.0: - resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.17.7 - aria-query: 4.2.2 - array-includes: 3.1.4 - ast-types-flow: 0.0.7 - axe-core: 4.3.5 - axobject-query: 2.2.0 - damerau-levenshtein: 1.0.7 - emoji-regex: 9.2.2 - eslint: 8.2.0 - has: 1.0.3 - jsx-ast-utils: 3.2.1 - language-tags: 1.0.5 - minimatch: 3.1.2 - dev: true - /eslint-plugin-markdown/1.0.2: resolution: {integrity: sha512-BfvXKsO0K+zvdarNc801jsE/NTLmig4oKhZ1U3aSUgTf2dB/US5+CrfGxMsCK2Ki1vS1R3HPok+uYpufFndhzw==} engines: {node: ^6.14.0 || ^8.10.0 || >=9.10.0} @@ -22081,23 +21953,6 @@ packages: unified: 6.2.0 dev: true - /eslint-plugin-prettier/3.4.1_1786dfa66f4aafe2692523a4f07ad974: - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.2.0 - eslint-config-prettier: 6.15.0_eslint@8.2.0 - prettier: /wp-prettier/2.0.5 - prettier-linter-helpers: 1.0.0 - dev: true - /eslint-plugin-prettier/3.4.1_41158af9eda640c62e4773187c5a8429: resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} engines: {node: '>=6.0.0'} @@ -22206,15 +22061,6 @@ packages: dependencies: eslint: 8.12.0 - /eslint-plugin-react-hooks/4.3.0_eslint@8.2.0: - resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.2.0 - dev: true - /eslint-plugin-react/7.29.4: resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} engines: {node: '>=4'} @@ -22305,29 +22151,6 @@ packages: semver: 6.3.0 string.prototype.matchall: 4.0.6 - /eslint-plugin-react/7.29.4_eslint@8.2.0: - resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.4 - array.prototype.flatmap: 1.2.5 - doctrine: 2.1.0 - eslint: 8.2.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.2.1 - minimatch: 3.1.2 - object.entries: 1.1.5 - object.fromentries: 2.0.5 - object.hasown: 1.1.0 - object.values: 1.1.5 - prop-types: 15.8.1 - resolve: 2.0.0-next.3 - semver: 6.3.0 - string.prototype.matchall: 4.0.6 - dev: true - /eslint-plugin-testing-library/5.1.0_eslint@8.12.0+typescript@4.6.2: resolution: {integrity: sha512-YSNzasJUbyhOTe14ZPygeOBvcPvcaNkwHwrj4vdf+uirr2D32JTDaKi6CP5Os2aWtOcvt4uBSPXp9h5xGoqvWQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} @@ -37310,7 +37133,7 @@ packages: serialize-javascript: 6.0.0 source-map: 0.6.1 terser: 5.10.0_acorn@8.7.0 - webpack: 5.70.0 + webpack: 5.70.0_webpack-cli@3.3.12 transitivePeerDependencies: - acorn dev: true From 5537da6e9ddde39a8ec3db0bf292e5970c58a22d Mon Sep 17 00:00:00 2001 From: Paul Sealock Date: Thu, 5 May 2022 15:26:36 +1200 Subject: [PATCH 319/327] Packages: Add Changelogger scripts (#32813) --- .../changelog/add-js-packages-changelogger | 4 + packages/js/admin-e2e-tests/composer.json | 27 + packages/js/admin-e2e-tests/composer.lock | 1025 +++++++++++++++++ packages/js/admin-e2e-tests/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + .../changelog/add-js-packages-changelogger | 4 + packages/js/components/composer.json | 27 + packages/js/components/composer.lock | 1025 +++++++++++++++++ packages/js/components/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/csv-export/composer.json | 27 + packages/js/csv-export/composer.lock | 1025 +++++++++++++++++ packages/js/csv-export/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/currency/composer.json | 27 + packages/js/currency/composer.lock | 1025 +++++++++++++++++ packages/js/currency/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + .../js/customer-effort-score/composer.json | 27 + .../js/customer-effort-score/composer.lock | 1025 +++++++++++++++++ .../js/customer-effort-score/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/data/composer.json | 27 + packages/js/data/composer.lock | 1025 +++++++++++++++++ packages/js/data/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/date/composer.json | 27 + packages/js/date/composer.lock | 1025 +++++++++++++++++ packages/js/date/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + .../composer.json | 27 + .../composer.lock | 1025 +++++++++++++++++ .../package.json | 3 +- .../changelog/add-js-packages-changelogger | 4 + packages/js/eslint-plugin/composer.json | 27 + packages/js/eslint-plugin/composer.lock | 1025 +++++++++++++++++ packages/js/eslint-plugin/package.json | 3 +- .../changelog/add-js-packages-changelogger | 4 + packages/js/experimental/composer.json | 27 + packages/js/experimental/composer.lock | 1025 +++++++++++++++++ packages/js/experimental/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/explat/composer.json | 27 + packages/js/explat/composer.lock | 1025 +++++++++++++++++ packages/js/explat/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/js-tests/composer.json | 27 + packages/js/js-tests/composer.lock | 1025 +++++++++++++++++ packages/js/js-tests/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/navigation/composer.json | 27 + packages/js/navigation/composer.lock | 1025 +++++++++++++++++ packages/js/navigation/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/notices/composer.json | 27 + packages/js/notices/composer.lock | 1025 +++++++++++++++++ packages/js/notices/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/number/composer.json | 27 + packages/js/number/composer.lock | 1025 +++++++++++++++++ packages/js/number/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/onboarding/composer.json | 27 + packages/js/onboarding/composer.lock | 1025 +++++++++++++++++ packages/js/onboarding/package.json | 1 + .../changelog/add-js-packages-changelogger | 4 + packages/js/style-build/composer.json | 27 + packages/js/style-build/composer.lock | 1025 +++++++++++++++++ packages/js/style-build/package.json | 3 +- .../changelog/add-js-packages-changelogger | 4 + packages/js/tracks/composer.json | 27 + packages/js/tracks/composer.lock | 1025 +++++++++++++++++ packages/js/tracks/package.json | 1 + 73 files changed, 19033 insertions(+), 3 deletions(-) create mode 100644 packages/js/admin-e2e-tests/changelog/add-js-packages-changelogger create mode 100644 packages/js/admin-e2e-tests/composer.json create mode 100644 packages/js/admin-e2e-tests/composer.lock create mode 100644 packages/js/api-core-tests/changelog/add-js-packages-changelogger create mode 100644 packages/js/components/changelog/add-js-packages-changelogger create mode 100644 packages/js/components/composer.json create mode 100644 packages/js/components/composer.lock create mode 100644 packages/js/csv-export/changelog/add-js-packages-changelogger create mode 100644 packages/js/csv-export/composer.json create mode 100644 packages/js/csv-export/composer.lock create mode 100644 packages/js/currency/changelog/add-js-packages-changelogger create mode 100644 packages/js/currency/composer.json create mode 100644 packages/js/currency/composer.lock create mode 100644 packages/js/customer-effort-score/changelog/add-js-packages-changelogger create mode 100644 packages/js/customer-effort-score/composer.json create mode 100644 packages/js/customer-effort-score/composer.lock create mode 100644 packages/js/data/changelog/add-js-packages-changelogger create mode 100644 packages/js/data/composer.json create mode 100644 packages/js/data/composer.lock create mode 100644 packages/js/date/changelog/add-js-packages-changelogger create mode 100644 packages/js/date/composer.json create mode 100644 packages/js/date/composer.lock create mode 100644 packages/js/dependency-extraction-webpack-plugin/changelog/add-js-packages-changelogger create mode 100644 packages/js/dependency-extraction-webpack-plugin/composer.json create mode 100644 packages/js/dependency-extraction-webpack-plugin/composer.lock create mode 100644 packages/js/eslint-plugin/changelog/add-js-packages-changelogger create mode 100644 packages/js/eslint-plugin/composer.json create mode 100644 packages/js/eslint-plugin/composer.lock create mode 100644 packages/js/experimental/changelog/add-js-packages-changelogger create mode 100644 packages/js/experimental/composer.json create mode 100644 packages/js/experimental/composer.lock create mode 100644 packages/js/explat/changelog/add-js-packages-changelogger create mode 100644 packages/js/explat/composer.json create mode 100644 packages/js/explat/composer.lock create mode 100644 packages/js/js-tests/changelog/add-js-packages-changelogger create mode 100644 packages/js/js-tests/composer.json create mode 100644 packages/js/js-tests/composer.lock create mode 100644 packages/js/navigation/changelog/add-js-packages-changelogger create mode 100644 packages/js/navigation/composer.json create mode 100644 packages/js/navigation/composer.lock create mode 100644 packages/js/notices/changelog/add-js-packages-changelogger create mode 100644 packages/js/notices/composer.json create mode 100644 packages/js/notices/composer.lock create mode 100644 packages/js/number/changelog/add-js-packages-changelogger create mode 100644 packages/js/number/composer.json create mode 100644 packages/js/number/composer.lock create mode 100644 packages/js/onboarding/changelog/add-js-packages-changelogger create mode 100644 packages/js/onboarding/composer.json create mode 100644 packages/js/onboarding/composer.lock create mode 100644 packages/js/style-build/changelog/add-js-packages-changelogger create mode 100644 packages/js/style-build/composer.json create mode 100644 packages/js/style-build/composer.lock create mode 100644 packages/js/tracks/changelog/add-js-packages-changelogger create mode 100644 packages/js/tracks/composer.json create mode 100644 packages/js/tracks/composer.lock diff --git a/packages/js/admin-e2e-tests/changelog/add-js-packages-changelogger b/packages/js/admin-e2e-tests/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/admin-e2e-tests/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/admin-e2e-tests/composer.json b/packages/js/admin-e2e-tests/composer.json new file mode 100644 index 00000000000..739107534c8 --- /dev/null +++ b/packages/js/admin-e2e-tests/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/admin-e2e-tests", + "description": "WooCommerce Admin end to end tests", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/admin-e2e-tests/composer.lock b/packages/js/admin-e2e-tests/composer.lock new file mode 100644 index 00000000000..cf9fb316e39 --- /dev/null +++ b/packages/js/admin-e2e-tests/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "9e44e9196e58725e4fdaf987d49d0ef2", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/admin-e2e-tests/package.json b/packages/js/admin-e2e-tests/package.json index aea3c4be449..fa338ff8e63 100644 --- a/packages/js/admin-e2e-tests/package.json +++ b/packages/js/admin-e2e-tests/package.json @@ -50,6 +50,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "build": "tsc --build", "start": "tsc --build --watch", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", diff --git a/packages/js/api-core-tests/changelog/add-js-packages-changelogger b/packages/js/api-core-tests/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/api-core-tests/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/components/changelog/add-js-packages-changelogger b/packages/js/components/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/components/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/components/composer.json b/packages/js/components/composer.json new file mode 100644 index 00000000000..3feed0a6b53 --- /dev/null +++ b/packages/js/components/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/components", + "description": "WooCommerce JS component library", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/components/composer.lock b/packages/js/components/composer.lock new file mode 100644 index 00000000000..e9b54dc8657 --- /dev/null +++ b/packages/js/components/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "2a4c411fb00743b19e226cfe3d9c621d", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/components/package.json b/packages/js/components/package.json index e41787c6f22..22da26ffc03 100644 --- a/packages/js/components/package.json +++ b/packages/js/components/package.json @@ -112,6 +112,7 @@ "webpack-cli": "^3.3.12" }, "scripts": { + "postinstall": "composer install", "build": "pnpm run build:js && pnpm run build:css", "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "build:css": "webpack", diff --git a/packages/js/csv-export/changelog/add-js-packages-changelogger b/packages/js/csv-export/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/csv-export/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/csv-export/composer.json b/packages/js/csv-export/composer.json new file mode 100644 index 00000000000..9d015d43b93 --- /dev/null +++ b/packages/js/csv-export/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/csv-export", + "description": "WooCommerce CSV export package", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/csv-export/composer.lock b/packages/js/csv-export/composer.lock new file mode 100644 index 00000000000..bf5467fbdd8 --- /dev/null +++ b/packages/js/csv-export/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "24d0d96d26294914146775e050b0eb4d", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/csv-export/package.json b/packages/js/csv-export/package.json index f99519ef6d2..ff545eb2593 100644 --- a/packages/js/csv-export/package.json +++ b/packages/js/csv-export/package.json @@ -28,6 +28,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/currency/changelog/add-js-packages-changelogger b/packages/js/currency/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/currency/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/currency/composer.json b/packages/js/currency/composer.json new file mode 100644 index 00000000000..8d6712192e6 --- /dev/null +++ b/packages/js/currency/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/currency", + "description": "WooCommerce JS currency utils", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/currency/composer.lock b/packages/js/currency/composer.lock new file mode 100644 index 00000000000..b69c957c9c9 --- /dev/null +++ b/packages/js/currency/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "596f57691d92b5d8da54cb47b067656e", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/currency/package.json b/packages/js/currency/package.json index ca8207cdd8a..aa2d964334d 100644 --- a/packages/js/currency/package.json +++ b/packages/js/currency/package.json @@ -31,6 +31,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/customer-effort-score/changelog/add-js-packages-changelogger b/packages/js/customer-effort-score/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/customer-effort-score/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/customer-effort-score/composer.json b/packages/js/customer-effort-score/composer.json new file mode 100644 index 00000000000..6378ae5a6a1 --- /dev/null +++ b/packages/js/customer-effort-score/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/customer-effort-score", + "description": "WooCommerce utility to measure user effort.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/customer-effort-score/composer.lock b/packages/js/customer-effort-score/composer.lock new file mode 100644 index 00000000000..13d4c17e0c1 --- /dev/null +++ b/packages/js/customer-effort-score/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "2e68f0f016cec24de73107acbba4444f", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/customer-effort-score/package.json b/packages/js/customer-effort-score/package.json index 0ee0fa1b677..d481a36d154 100644 --- a/packages/js/customer-effort-score/package.json +++ b/packages/js/customer-effort-score/package.json @@ -60,6 +60,7 @@ "react-dom": "^17.0.0" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "pnpm run build:js && pnpm run build:css", "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", diff --git a/packages/js/data/changelog/add-js-packages-changelogger b/packages/js/data/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/data/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/data/composer.json b/packages/js/data/composer.json new file mode 100644 index 00000000000..5c2638f01ac --- /dev/null +++ b/packages/js/data/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/data", + "description": "WooCommerce Admin data store and utilities", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/data/composer.lock b/packages/js/data/composer.lock new file mode 100644 index 00000000000..5d10d4750fe --- /dev/null +++ b/packages/js/data/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "bf65398fc598e0e8c13ae680cc4465f3", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/data/package.json b/packages/js/data/package.json index 33b4df191ac..ebaf6d89434 100644 --- a/packages/js/data/package.json +++ b/packages/js/data/package.json @@ -68,6 +68,7 @@ "react-dom": "^17.0.0" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/date/changelog/add-js-packages-changelogger b/packages/js/date/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/date/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/date/composer.json b/packages/js/date/composer.json new file mode 100644 index 00000000000..f8aa7a387ec --- /dev/null +++ b/packages/js/date/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/date", + "description": "WooCommerce date utilities.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/date/composer.lock b/packages/js/date/composer.lock new file mode 100644 index 00000000000..4feda3fe76a --- /dev/null +++ b/packages/js/date/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "e624ba08f24d164e08f2bf4772a04e23", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/date/package.json b/packages/js/date/package.json index b59bd4d85f7..1be19e085c6 100644 --- a/packages/js/date/package.json +++ b/packages/js/date/package.json @@ -44,6 +44,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/add-js-packages-changelogger b/packages/js/dependency-extraction-webpack-plugin/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/dependency-extraction-webpack-plugin/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/dependency-extraction-webpack-plugin/composer.json b/packages/js/dependency-extraction-webpack-plugin/composer.json new file mode 100644 index 00000000000..2886515871b --- /dev/null +++ b/packages/js/dependency-extraction-webpack-plugin/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/dependency-extraction-webpack-plugin", + "description": "WooCommerce Dependency Extraction Webpack Plugin", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/dependency-extraction-webpack-plugin/composer.lock b/packages/js/dependency-extraction-webpack-plugin/composer.lock new file mode 100644 index 00000000000..b0397306da6 --- /dev/null +++ b/packages/js/dependency-extraction-webpack-plugin/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "b7dc63766d55bafffceef6ed9703c0ac", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/dependency-extraction-webpack-plugin/package.json b/packages/js/dependency-extraction-webpack-plugin/package.json index 05edfe9f897..553f3432bc1 100644 --- a/packages/js/dependency-extraction-webpack-plugin/package.json +++ b/packages/js/dependency-extraction-webpack-plugin/package.json @@ -37,7 +37,8 @@ }, "scripts": { "lint": "eslint src", - "lint:fix": "eslint src --fix" + "lint:fix": "eslint src --fix", + "postinstall": "composer install" }, "lint-staged": { "*.(t|j)s?(x)": [ diff --git a/packages/js/eslint-plugin/changelog/add-js-packages-changelogger b/packages/js/eslint-plugin/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/eslint-plugin/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/eslint-plugin/composer.json b/packages/js/eslint-plugin/composer.json new file mode 100644 index 00000000000..e96b11db186 --- /dev/null +++ b/packages/js/eslint-plugin/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/eslint-plugin", + "description": "ESLint plugin for WooCommerce development.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/eslint-plugin/composer.lock b/packages/js/eslint-plugin/composer.lock new file mode 100644 index 00000000000..b69696b1781 --- /dev/null +++ b/packages/js/eslint-plugin/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "77eb76e3ae06f3471cc9d897f19838d3", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/eslint-plugin/package.json b/packages/js/eslint-plugin/package.json index 9d0fee890ff..6d7649be2d7 100644 --- a/packages/js/eslint-plugin/package.json +++ b/packages/js/eslint-plugin/package.json @@ -37,7 +37,8 @@ }, "scripts": { "lint": "eslint ./rules ./configs", - "lint:fix": "eslint ./rules ./configs --fix" + "lint:fix": "eslint ./rules ./configs --fix", + "postinstall": "composer install" }, "devDependencies": { "@babel/core": "^7.17.5", diff --git a/packages/js/experimental/changelog/add-js-packages-changelogger b/packages/js/experimental/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/experimental/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/experimental/composer.json b/packages/js/experimental/composer.json new file mode 100644 index 00000000000..cde1a04a5f4 --- /dev/null +++ b/packages/js/experimental/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/experimental", + "description": "WooCommerce experimental components.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/experimental/composer.lock b/packages/js/experimental/composer.lock new file mode 100644 index 00000000000..92f5bdbe2d4 --- /dev/null +++ b/packages/js/experimental/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "602450597be6eceeeb51620f121059c1", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/experimental/package.json b/packages/js/experimental/package.json index 98132bbcb6c..38d1925a5ce 100644 --- a/packages/js/experimental/package.json +++ b/packages/js/experimental/package.json @@ -74,6 +74,7 @@ "react-dom": "^17.0.0" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "pnpm run build:js && pnpm run build:css", "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", diff --git a/packages/js/explat/changelog/add-js-packages-changelogger b/packages/js/explat/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/explat/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/explat/composer.json b/packages/js/explat/composer.json new file mode 100644 index 00000000000..57ea9ca8993 --- /dev/null +++ b/packages/js/explat/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/explat", + "description": "WooCommerce component and utils for A/B testing.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/explat/composer.lock b/packages/js/explat/composer.lock new file mode 100644 index 00000000000..f68c873a4c3 --- /dev/null +++ b/packages/js/explat/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "0260b2daa4e977de2038ce1df7e5422d", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/explat/package.json b/packages/js/explat/package.json index 656cfab13bb..0e25bb94f8d 100644 --- a/packages/js/explat/package.json +++ b/packages/js/explat/package.json @@ -47,6 +47,7 @@ "typescript": "^4.6.2" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/js-tests/changelog/add-js-packages-changelogger b/packages/js/js-tests/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/js-tests/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/js-tests/composer.json b/packages/js/js-tests/composer.json new file mode 100644 index 00000000000..38bb16bc674 --- /dev/null +++ b/packages/js/js-tests/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/js-tests", + "description": "JavaScript test tooling.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/js-tests/composer.lock b/packages/js/js-tests/composer.lock new file mode 100644 index 00000000000..8a9803d488f --- /dev/null +++ b/packages/js/js-tests/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "700da970b96607ea4ce39369686470b3", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/js-tests/package.json b/packages/js/js-tests/package.json index 9b865a7458b..0950ac6e72a 100644 --- a/packages/js/js-tests/package.json +++ b/packages/js/js-tests/package.json @@ -17,6 +17,7 @@ "main": "build/util/index.js", "module": "build-module/util/index.js", "scripts": { + "postinstall": "composer install", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "ts:check": "tsc --noEmit --project ./tsconfig.json", "clean": "pnpm exec rimraf *.tsbuildinfo build build-*", diff --git a/packages/js/navigation/changelog/add-js-packages-changelogger b/packages/js/navigation/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/navigation/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/navigation/composer.json b/packages/js/navigation/composer.json new file mode 100644 index 00000000000..55e37fe5239 --- /dev/null +++ b/packages/js/navigation/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/navigation", + "description": "WooCommerce navigation utilities.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/navigation/composer.lock b/packages/js/navigation/composer.lock new file mode 100644 index 00000000000..170a3f0c802 --- /dev/null +++ b/packages/js/navigation/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "61ac308cfc0060e5f958c0776094711a", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/navigation/package.json b/packages/js/navigation/package.json index 58bc2eb9a38..24a1a4343e0 100644 --- a/packages/js/navigation/package.json +++ b/packages/js/navigation/package.json @@ -39,6 +39,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/notices/changelog/add-js-packages-changelogger b/packages/js/notices/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/notices/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/notices/composer.json b/packages/js/notices/composer.json new file mode 100644 index 00000000000..2b94950d32f --- /dev/null +++ b/packages/js/notices/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/notices", + "description": "State management for notices.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/notices/composer.lock b/packages/js/notices/composer.lock new file mode 100644 index 00000000000..528470c0515 --- /dev/null +++ b/packages/js/notices/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "05e0e3a86ff900b25cc1c131811fc92e", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/notices/package.json b/packages/js/notices/package.json index 83a218f8d1f..927b41d98ee 100644 --- a/packages/js/notices/package.json +++ b/packages/js/notices/package.json @@ -36,6 +36,7 @@ }, "private": true, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/number/changelog/add-js-packages-changelogger b/packages/js/number/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/number/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/number/composer.json b/packages/js/number/composer.json new file mode 100644 index 00000000000..3f195f6bd23 --- /dev/null +++ b/packages/js/number/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/number", + "description": "Number formatting utilities for WooCommerce.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/number/composer.lock b/packages/js/number/composer.lock new file mode 100644 index 00000000000..af805805664 --- /dev/null +++ b/packages/js/number/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "20d857dccdfa50c88b3aa6e72391f8d0", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/number/package.json b/packages/js/number/package.json index f5873c8f99f..5ff0f60acc8 100644 --- a/packages/js/number/package.json +++ b/packages/js/number/package.json @@ -26,6 +26,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", diff --git a/packages/js/onboarding/changelog/add-js-packages-changelogger b/packages/js/onboarding/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/onboarding/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/onboarding/composer.json b/packages/js/onboarding/composer.json new file mode 100644 index 00000000000..307e0286263 --- /dev/null +++ b/packages/js/onboarding/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/onboarding", + "description": "Onboarding utilities.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/onboarding/composer.lock b/packages/js/onboarding/composer.lock new file mode 100644 index 00000000000..db7f6ba0a49 --- /dev/null +++ b/packages/js/onboarding/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "c46a9cee3a14fc2119f7f624ec85c531", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json index ac4c5b06d8a..f38ad112585 100644 --- a/packages/js/onboarding/package.json +++ b/packages/js/onboarding/package.json @@ -53,6 +53,7 @@ "webpack-cli": "^3.3.12" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "pnpm run build:js && pnpm run build:css", "build:js": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", diff --git a/packages/js/style-build/changelog/add-js-packages-changelogger b/packages/js/style-build/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/style-build/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/style-build/composer.json b/packages/js/style-build/composer.json new file mode 100644 index 00000000000..df58dd57c83 --- /dev/null +++ b/packages/js/style-build/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/style-build", + "description": "WooCommerce Components SASS Build", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/style-build/composer.lock b/packages/js/style-build/composer.lock new file mode 100644 index 00000000000..04978551067 --- /dev/null +++ b/packages/js/style-build/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "8fe433a4d629c3b8961e5c26d1b5d1ba", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/style-build/package.json b/packages/js/style-build/package.json index afc4d971b09..764f349a117 100644 --- a/packages/js/style-build/package.json +++ b/packages/js/style-build/package.json @@ -30,7 +30,8 @@ }, "scripts": { "lint": "eslint index.js", - "lint:fix": "eslint index.js --fix" + "lint:fix": "eslint index.js --fix", + "postinstall": "composer install" }, "private": true, "devDependencies": { diff --git a/packages/js/tracks/changelog/add-js-packages-changelogger b/packages/js/tracks/changelog/add-js-packages-changelogger new file mode 100644 index 00000000000..34c7e271ae2 --- /dev/null +++ b/packages/js/tracks/changelog/add-js-packages-changelogger @@ -0,0 +1,4 @@ +Significance: minor +Type: dev + +Add Jetpack Changelogger diff --git a/packages/js/tracks/composer.json b/packages/js/tracks/composer.json new file mode 100644 index 00000000000..6448656fa8d --- /dev/null +++ b/packages/js/tracks/composer.json @@ -0,0 +1,27 @@ +{ + "name": "woocommerce/tracks", + "description": "WooCommerce user event tracking utilities for Automattic based projects.", + "type": "library", + "license": "GPL-3.0-or-later", + "minimum-stability": "dev", + "require-dev": { + "automattic/jetpack-changelogger": "3.0.2" + }, + "extra": { + "changelogger": { + "formatter": { + "filename": "../../../tools/changelogger/PackageFormatter.php" + }, + "types": { + "fix": "Fixes an existing bug", + "add": "Adds functionality", + "update": "Update existing functionality", + "dev": "Development related task", + "tweak": "A minor adjustment to the codebase", + "performance": "Address performance issues", + "enhancement": "Improve existing functionality" + }, + "changelog": "NEXT_CHANGELOG.md" + } + } +} diff --git a/packages/js/tracks/composer.lock b/packages/js/tracks/composer.lock new file mode 100644 index 00000000000..0c30ad98c5f --- /dev/null +++ b/packages/js/tracks/composer.lock @@ -0,0 +1,1025 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "6c9a15ff0a87d2d869bcae9c7beb220c", + "packages": [], + "packages-dev": [ + { + "name": "automattic/jetpack-changelogger", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/Automattic/jetpack-changelogger.git", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "reference": "b76f9cb4c22ec08490eff91a2e0e5aa586ee04b3", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "symfony/console": "^3.4 | ^5.2", + "symfony/process": "^3.4 | ^5.2", + "wikimedia/at-ease": "^1.2 | ^2.0" + }, + "require-dev": { + "wikimedia/testing-access-wrapper": "^1.0 | ^2.0", + "yoast/phpunit-polyfills": "1.0.2" + }, + "bin": [ + "bin/changelogger" + ], + "type": "project", + "extra": { + "autotagger": true, + "branch-alias": { + "dev-master": "3.0.x-dev" + }, + "mirror-repo": "Automattic/jetpack-changelogger", + "version-constants": { + "::VERSION": "src/Application.php" + }, + "changelogger": { + "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}" + } + }, + "autoload": { + "psr-4": { + "Automattic\\Jetpack\\Changelog\\": "lib", + "Automattic\\Jetpack\\Changelogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.", + "time": "2021-11-02T14:06:49+00:00" + }, + { + "name": "psr/container", + "version": "1.1.x-dev", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "symfony/console", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "reference": "ffe3aed36c4d60da2cf1b0a1cee6b8f2e5fa881b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-12T16:02:29+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/process", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "2.5.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/string", + "version": "5.4.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "reference": "3c061a76bff6d6ea427d85e12ad1bb8ed8cd43e8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-19T10:40:37+00:00" + }, + { + "name": "wikimedia/at-ease", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/wikimedia/at-ease.git", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33", + "shasum": "" + }, + "require": { + "php": ">=7.2.9" + }, + "require-dev": { + "mediawiki/mediawiki-codesniffer": "35.0.0", + "mediawiki/minus-x": "1.1.1", + "ockcyp/covers-validator": "1.3.3", + "php-parallel-lint/php-console-highlighter": "0.5.0", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/Wikimedia/Functions.php" + ], + "psr-4": { + "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Tim Starling", + "email": "tstarling@wikimedia.org" + }, + { + "name": "MediaWiki developers", + "email": "wikitech-l@lists.wikimedia.org" + } + ], + "description": "Safe replacement to @ for suppressing warnings.", + "homepage": "https://www.mediawiki.org/wiki/at-ease", + "time": "2021-02-27T15:53:37+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/packages/js/tracks/package.json b/packages/js/tracks/package.json index a6c45f92dfa..67066a36895 100644 --- a/packages/js/tracks/package.json +++ b/packages/js/tracks/package.json @@ -27,6 +27,7 @@ "access": "public" }, "scripts": { + "postinstall": "composer install", "clean": "pnpm exec rimraf tsconfig.tsbuildinfo build build-*", "build": "tsc --build ./tsconfig.json ./tsconfig-cjs.json", "start": "tsc --build --watch", From 7add4dca889b65728b66508f19e793978517f851 Mon Sep 17 00:00:00 2001 From: Chris Aprea Date: Thu, 5 May 2022 15:04:27 +1000 Subject: [PATCH 320/327] Implement the new subscriptions page design --- .../client/subscriptions/cards/amex.js | 27 ++ .../client/subscriptions/cards/diners.js | 255 ++++++++++++++++++ .../client/subscriptions/cards/discover.js | 47 ++++ .../client/subscriptions/cards/jcb.js | 39 +++ .../client/subscriptions/cards/maestro.js | 67 +++++ .../client/subscriptions/cards/mastercard.js | 39 +++ .../client/subscriptions/cards/unionpay.js | 111 ++++++++ .../client/subscriptions/cards/visa.js | 41 +++ .../client/subscriptions/index.tsx | 194 ++++++++++--- .../client/subscriptions/style.scss | 126 +++++++-- .../subscriptions-empty-state-unconnected.svg | 42 --- 11 files changed, 881 insertions(+), 107 deletions(-) create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/amex.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/diners.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/discover.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/jcb.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/maestro.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/mastercard.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/unionpay.js create mode 100644 plugins/woocommerce-admin/client/subscriptions/cards/visa.js delete mode 100644 plugins/woocommerce-admin/client/subscriptions/subscriptions-empty-state-unconnected.svg diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/amex.js b/plugins/woocommerce-admin/client/subscriptions/cards/amex.js new file mode 100644 index 00000000000..1ebef0bdda9 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/amex.js @@ -0,0 +1,27 @@ +export default () => ( + /* eslint-disable */ + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/diners.js b/plugins/woocommerce-admin/client/subscriptions/cards/diners.js new file mode 100644 index 00000000000..6a7e03f4208 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/diners.js @@ -0,0 +1,255 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/discover.js b/plugins/woocommerce-admin/client/subscriptions/cards/discover.js new file mode 100644 index 00000000000..42439da3e86 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/discover.js @@ -0,0 +1,47 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/jcb.js b/plugins/woocommerce-admin/client/subscriptions/cards/jcb.js new file mode 100644 index 00000000000..aac8d382666 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/jcb.js @@ -0,0 +1,39 @@ +export default () => ( + /* eslint-disable */ + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/maestro.js b/plugins/woocommerce-admin/client/subscriptions/cards/maestro.js new file mode 100644 index 00000000000..a8b580579f4 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/maestro.js @@ -0,0 +1,67 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/mastercard.js b/plugins/woocommerce-admin/client/subscriptions/cards/mastercard.js new file mode 100644 index 00000000000..6830585f03b --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/mastercard.js @@ -0,0 +1,39 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/unionpay.js b/plugins/woocommerce-admin/client/subscriptions/cards/unionpay.js new file mode 100644 index 00000000000..3f364be6948 --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/unionpay.js @@ -0,0 +1,111 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + + + + + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/cards/visa.js b/plugins/woocommerce-admin/client/subscriptions/cards/visa.js new file mode 100644 index 00000000000..2634d362b8a --- /dev/null +++ b/plugins/woocommerce-admin/client/subscriptions/cards/visa.js @@ -0,0 +1,41 @@ +export default () => ( + /* eslint-disable */ + + + + + + + + /* eslint-enable */ +); diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index 2df5a4b6965..3a923f09dcc 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -3,7 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { createInterpolateElement, useState } from '@wordpress/element'; -import { Button, Notice } from '@wordpress/components'; +import { Button, Card, CardBody, Notice } from '@wordpress/components'; import { PLUGINS_STORE_NAME } from '@woocommerce/data'; import { useDispatch } from '@wordpress/data'; import { recordEvent } from '@woocommerce/tracks'; @@ -11,9 +11,14 @@ import { recordEvent } from '@woocommerce/tracks'; /** * Internal dependencies */ -import unconnectedImage from './subscriptions-empty-state-unconnected.svg'; +import Visa from './cards/visa.js'; +import MasterCard from './cards/mastercard.js'; +import Amex from './cards/amex.js'; +import DinersClub from './cards/diners.js'; +import Discover from './cards/discover.js'; +import JCB from './cards/jcb.js'; +import UnionPay from './cards/unionpay.js'; import './style.scss'; - declare global { interface Window { wcWcpaySubscriptions: { @@ -28,11 +33,9 @@ const { onboardingUrl, } = window.wcWcpaySubscriptions; -const ErrorNotice = ( { isError }: { isError: boolean } ) => { - if ( ! isError ) { - return null; - } +type setHasErrorFunction = React.Dispatch< React.SetStateAction< boolean > >; +const ErrorNotice = () => { return ( { ); }; -const TOS = () => ( -

- { createInterpolateElement( - __( - 'By clicking "Get started", you agree to the Terms of Service', - 'woocommerce' - ), - { - a: ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - } - ) } -

-); +type GetStartedButtonProps = { + setHasError: setHasErrorFunction; +}; -// eslint-disable-next-line @typescript-eslint/ban-types -const GetStartedButton = ( { setIsError }: { setIsError: Function } ) => { +const GetStartedButton: React.FC< GetStartedButtonProps > = ( { + setHasError, +} ) => { const [ isGettingStarted, setIsGettingStarted ] = useState( false ); const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME ); @@ -109,7 +96,7 @@ const GetStartedButton = ( { setIsError }: { setIsError: Function } ) => { } ) .catch( () => { setIsGettingStarted( false ); - setIsError( true ); + setHasError( true ); } ); } } > @@ -119,22 +106,151 @@ const GetStartedButton = ( { setIsError }: { setIsError: Function } ) => { ); }; -const SubscriptionsPage = () => { - const [ isError, setIsError ] = useState( false ); +const StepNumber: React.FC = ( { children } ) => ( + + { children } + +); +const TermsOfService = () => ( + + { createInterpolateElement( + __( + 'By clicking “Get started”, the WooCommerce Payments plugin will be installed and you agree to the Terms of Service', + 'woocommerce' + ), + { + a: ( + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + } + ) } + +); + +type MainContentProps = { + setHasError: setHasErrorFunction; +}; + +const MainContent: React.FC< MainContentProps > = ( { setHasError } ) => { return ( -
- - -

+ <> +

+ { __( 'Start selling subscriptions today', 'woocommerce' ) } +

+

{ __( - 'Track recurring revenue and manage active subscriptions directly from your store’s dashboard — powered by WooCommerce Payments.', + 'With WooCommerce Payments, you can sell subscriptions with no setup costs or monthly fees. Create subscription products, track recurring revenue, and manages subscriptions directly from your store’s dashboard.', 'woocommerce' ) } +
+
+ { __( 'Learn more', 'woocommerce' ) } +

- - + +

{ __( 'Accepted payment methods', 'woocommerce' ) }

+ +
+ + + + + + + +
+ +
+ +

+ +

+ + + + ); +}; + +const OnboardingSteps = () => ( + <> +

+ { __( + 'You’re only steps away from selling subscriptions', + 'woocommerce' + ) } +

+
+
+ 1 +

+ { __( 'Create and connect your account', 'woocommerce' ) } +

+

+ { __( + 'To ensure safe and secure transactions, a WordPress.com account is required.', + 'woocommerce' + ) } +

+
+
+ 2 +

+ { __( 'Provide a few business details', 'woocommerce' ) } +

+

+ { __( + 'Next we’ll ask you to verify your business and payment details to enable deposits.', + 'woocommerce' + ) } +

+
+
+ 3 +

{ __( 'Create subscriptions', 'woocommerce' ) }

+

+ { __( + 'Finally, publish subscription products to offer on your store.', + 'woocommerce' + ) } +

+
+ +); + +const SubscriptionsPage = () => { + const [ hasError, setHasError ] = useState( false ); + + return ( + <> + { hasError && } +
+
+ + +
+ +
+
+
+ + + + + +
+
+ ); }; diff --git a/plugins/woocommerce-admin/client/subscriptions/style.scss b/plugins/woocommerce-admin/client/subscriptions/style.scss index f03a7f32c68..4e979e1f6b7 100644 --- a/plugins/woocommerce-admin/client/subscriptions/style.scss +++ b/plugins/woocommerce-admin/client/subscriptions/style.scss @@ -1,35 +1,109 @@ -.wcpay-empty-subscriptions__container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - padding: 48px 0; - position: static; - height: 344px; - left: calc(50% - 1240px / 2); - top: 271px; - flex: none; - order: 1; - flex-grow: 0; - margin: 0; - text-align: center; +$max-width: 680px; - .wcpay-empty-subscriptions__description { - max-width: 535px; - margin: 15px 0; +.wcpay-empty-subscriptions__error { + margin: 0 auto 24px; + max-width: $max-width; +} + +.subscriptions-page { + margin: 0 auto; + max-width: $max-width; + + .components-card { + margin-bottom: 24px; } - .wcpay-empty-subscriptions__tos { - font-size: 11px; - color: #757575; - margin-bottom: 6px; + .wcpay-empty-subscriptions-page-payment-methods { + svg { + display: inline-block; + height: 35px; + width: 52px; + margin-right: 0.5em; + margin-bottom: 0.5em; + } } - .wcpay-empty-subscriptions__button_container { - margin: 8px 0; + .wcpay-empty-subscriptions-page-terms-of-service { + display: block; + margin: 0.5em 0; } - .wcpay-empty-subscriptions__error { - margin: 15px 0; + .subscriptions-page-onboarding-steps { + @include breakpoint( '>600px' ) { + display: flex; + flex-direction: row; + } + + .subscriptions-page-onboarding-steps-item { + margin-top: 30px; + + @include breakpoint( '>600px' ) { + margin-top: 0; + margin-right: 80px; + } + } + } + + .wcpay-empty-subscriptions-page-step-number { + background-color: $studio-woocommerce-purple-50; + color: $white; + font-size: 20px; + border-radius: 50%; + min-height: 32px; + min-width: 32px; + display: inline-block; + text-align: center; + line-height: 32px; + } + + .subscriptions { + h2 { + font-size: 20px; + font-weight: 300; + margin-top: 0; + } + + h3 { + font-size: 1em; + } + + p { + color: #3c434a; + } + + .subscriptions__card { + .components-card__body { + padding: 0; + + .content { + padding: 24px; + + a { + text-decoration: none; + } + + hr { + position: relative; + left: -24px; + width: calc( 100% + 48px ); + } + } + } + } + + .subscriptions__action { + margin-top: 16px; + margin-bottom: 0; + } + + .subscriptions__steps { + .components-card__body { + padding: 24px; + } + + h2 { + margin-top: 0; + } + } } } diff --git a/plugins/woocommerce-admin/client/subscriptions/subscriptions-empty-state-unconnected.svg b/plugins/woocommerce-admin/client/subscriptions/subscriptions-empty-state-unconnected.svg deleted file mode 100644 index 8823ffa6132..00000000000 --- a/plugins/woocommerce-admin/client/subscriptions/subscriptions-empty-state-unconnected.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From b223ed27f6b59303184a0df16e968b0273288ec7 Mon Sep 17 00:00:00 2001 From: Chris Aprea Date: Mon, 9 May 2022 10:47:06 +1000 Subject: [PATCH 321/327] Fix typo. --- plugins/woocommerce-admin/client/subscriptions/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index 3a923f09dcc..82e6e56aa7b 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -145,7 +145,7 @@ const MainContent: React.FC< MainContentProps > = ( { setHasError } ) => {

{ __( - 'With WooCommerce Payments, you can sell subscriptions with no setup costs or monthly fees. Create subscription products, track recurring revenue, and manages subscriptions directly from your store’s dashboard.', + 'With WooCommerce Payments, you can sell subscriptions with no setup costs or monthly fees. Create subscription products, track recurring revenue, and manage subscribers directly from your store’s dashboard.', 'woocommerce' ) }
From f34fcab0400db34393865071c6feee14530573d2 Mon Sep 17 00:00:00 2001 From: Chris Aprea Date: Mon, 9 May 2022 10:55:04 +1000 Subject: [PATCH 322/327] Fix font weight. --- plugins/woocommerce-admin/client/subscriptions/style.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/style.scss b/plugins/woocommerce-admin/client/subscriptions/style.scss index 4e979e1f6b7..b9eaa4a2ba9 100644 --- a/plugins/woocommerce-admin/client/subscriptions/style.scss +++ b/plugins/woocommerce-admin/client/subscriptions/style.scss @@ -59,7 +59,7 @@ $max-width: 680px; .subscriptions { h2 { font-size: 20px; - font-weight: 300; + font-weight: 400; margin-top: 0; } From 738b3764e53e09c4667fbeded45971f35009d873 Mon Sep 17 00:00:00 2001 From: James Allan Date: Mon, 9 May 2022 13:41:16 +1000 Subject: [PATCH 323/327] Add a dismiss ("No thanks") button to the wcpay susbcriptions welcome page --- .../client/subscriptions/index.tsx | 97 +++++++++++++------ .../client/subscriptions/style.scss | 8 +- .../Internal/Admin/WcPaySubscriptionsPage.php | 13 +++ 3 files changed, 86 insertions(+), 32 deletions(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index 82e6e56aa7b..d42a4368296 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -7,6 +7,7 @@ import { Button, Card, CardBody, Notice } from '@wordpress/components'; import { PLUGINS_STORE_NAME } from '@woocommerce/data'; import { useDispatch } from '@wordpress/data'; import { recordEvent } from '@woocommerce/tracks'; +import apiFetch from '@wordpress/api-fetch'; /** * Internal dependencies @@ -24,6 +25,8 @@ declare global { wcWcpaySubscriptions: { newSubscriptionProductUrl: string; onboardingUrl: string; + noThanksUrl: string; + dismissOptionKey: string; }; } } @@ -31,6 +34,8 @@ declare global { const { newSubscriptionProductUrl, onboardingUrl, + noThanksUrl, + dismissOptionKey, } = window.wcWcpaySubscriptions; type setHasErrorFunction = React.Dispatch< React.SetStateAction< boolean > >; @@ -62,6 +67,35 @@ const ErrorNotice = () => { ); }; +const NoThanksButton = () => { + const [ isNoThanksClicked, setIsNoThanksClicked ] = useState( false ); + + return ( + + ); +}; + type GetStartedButtonProps = { setHasError: setHasErrorFunction; }; @@ -73,36 +107,34 @@ const GetStartedButton: React.FC< GetStartedButtonProps > = ( { const { installAndActivatePlugins } = useDispatch( PLUGINS_STORE_NAME ); return ( -

- -
+ ); }; @@ -176,7 +208,10 @@ const MainContent: React.FC< MainContentProps > = ( { setHasError } ) => {

- +
+ + +
); }; diff --git a/plugins/woocommerce-admin/client/subscriptions/style.scss b/plugins/woocommerce-admin/client/subscriptions/style.scss index b9eaa4a2ba9..63cde73e491 100644 --- a/plugins/woocommerce-admin/client/subscriptions/style.scss +++ b/plugins/woocommerce-admin/client/subscriptions/style.scss @@ -85,7 +85,7 @@ $max-width: 680px; hr { position: relative; left: -24px; - width: calc( 100% + 48px ); + width: calc(100% + 48px); } } } @@ -106,4 +106,10 @@ $max-width: 680px; } } } + + .wcpay-empty-subscriptions__button_container { + button:not(:first-child) { + margin-left: 10px; + } + } } diff --git a/plugins/woocommerce/src/Internal/Admin/WcPaySubscriptionsPage.php b/plugins/woocommerce/src/Internal/Admin/WcPaySubscriptionsPage.php index db8708af919..8d3c6b66759 100644 --- a/plugins/woocommerce/src/Internal/Admin/WcPaySubscriptionsPage.php +++ b/plugins/woocommerce/src/Internal/Admin/WcPaySubscriptionsPage.php @@ -24,6 +24,13 @@ class WcPaySubscriptionsPage { */ private $user_viewed_option = 'woocommerce-wcpay-subscriptions_page_viewed'; + /** + * The option key used to record when the user dismisses the WCPay Subscriptions page. + * + * @var string + */ + private $user_dismissed_option = 'woocommerce-wcpay-subscriptions_dismissed'; + /** * Hook into WooCommerce. */ @@ -42,6 +49,10 @@ class WcPaySubscriptionsPage { public function register_subscriptions_page() { global $submenu; + if ( 'yes' === get_option( $this->user_dismissed_option, 'no' ) ) { + return; + } + // WC Payments must not be active. if ( is_plugin_active( 'woocommerce-payments/woocommerce-payments.php' ) ) { return; @@ -113,6 +124,8 @@ class WcPaySubscriptionsPage { ), admin_url( 'admin.php' ) ), + 'dismissOptionKey' => $this->user_dismissed_option, + 'noThanksUrl' => wc_admin_url(), ); wp_add_inline_script( WC_ADMIN_APP, 'window.wcWcpaySubscriptions = ' . wp_json_encode( $data ), 'before' ); From 59478e391c51cdc38adf12cae80988a019126c40 Mon Sep 17 00:00:00 2001 From: James Allan Date: Mon, 9 May 2022 14:56:59 +1000 Subject: [PATCH 324/327] Reorder and self close the No thanks buttons --- plugins/woocommerce-admin/client/subscriptions/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index d42a4368296..da6b4a91be9 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -209,8 +209,8 @@ const MainContent: React.FC< MainContentProps > = ( { setHasError } ) => {

- +
); From b45d095e2d93c66794e11d152323af11da817b0d Mon Sep 17 00:00:00 2001 From: James Allan Date: Mon, 9 May 2022 15:10:17 +1000 Subject: [PATCH 325/327] Use updateOptions from @woocommerce/data OPTIONS_STORE_NAME to set wp options instead of using apiFetch --- .../woocommerce-admin/client/subscriptions/index.tsx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/plugins/woocommerce-admin/client/subscriptions/index.tsx b/plugins/woocommerce-admin/client/subscriptions/index.tsx index da6b4a91be9..62546885a9f 100644 --- a/plugins/woocommerce-admin/client/subscriptions/index.tsx +++ b/plugins/woocommerce-admin/client/subscriptions/index.tsx @@ -4,10 +4,9 @@ import { __ } from '@wordpress/i18n'; import { createInterpolateElement, useState } from '@wordpress/element'; import { Button, Card, CardBody, Notice } from '@wordpress/components'; -import { PLUGINS_STORE_NAME } from '@woocommerce/data'; +import { PLUGINS_STORE_NAME, OPTIONS_STORE_NAME } from '@woocommerce/data'; import { useDispatch } from '@wordpress/data'; import { recordEvent } from '@woocommerce/tracks'; -import apiFetch from '@wordpress/api-fetch'; /** * Internal dependencies @@ -69,6 +68,7 @@ const ErrorNotice = () => { const NoThanksButton = () => { const [ isNoThanksClicked, setIsNoThanksClicked ] = useState( false ); + const { updateOptions } = useDispatch( OPTIONS_STORE_NAME ); return (