From e8efdbeb347636bf265c785311145568c28e7d97 Mon Sep 17 00:00:00 2001 From: Keith Solomon Date: Fri, 22 Aug 2025 15:40:01 -0500 Subject: [PATCH] Initial commit to github --- .env.example | 2 + .github/workflows/phpcs.yml | 33 + .github/workflows/todos.yml | 26 + .github/workflows/wpengine.yml | 65 + .gitignore | 16 + .phpcs.xml | 46 + .vscode/settings.json | 8 + 404.php | 47 + README.md | 475 + TODO_SUMMARY.md | 16 + Theme_TODOs.md | 4 + acf/group_5f7f85a2a3e13.json | 179 + acf/group_5fd3e006e5da5.json | 459 + acf/group_600f5a9e242c3.json | 362 + acf/group_60106ed700da3.json | 256 + acf/group_60bfb84ae973c.json | 192 + acf/group_60bfdb328901d.json | 106 + acf/group_6261bc658dd80.json | 556 + acf/group_645e51f721207.json | 132 + acf/group_645e7cf448e66.json | 389 + bin/.build.js | 24 + bin/.utils.js | 25 + bin/.watch.js | 48 + composer.json | 32 + composer.lock | 417 + content/basic-wp-test-content.xml | 11646 ++++++++++++++++ db/menus.json | 728 + db/options.json | 519 + db/page/page-126.json | 56 + db/page/page-137.json | 62 + db/page/page-2.json | 62 + db/page/page-201.json | 56 + db/page/page-259.json | 62 + db/page/page-286.json | 56 + db/page/page-33.json | 56 + db/page/page-40.json | 44 + db/page/page-42.json | 53 + db/page/page-520.json | 62 + db/page/page-537.json | 59 + db/post/post-1.json | 10 + db/post/post-100.json | 17 + db/post/post-102.json | 17 + db/post/post-104.json | 17 + db/post/post-106.json | 17 + db/post/post-108.json | 17 + db/post/post-110.json | 17 + db/post/post-112.json | 17 + db/post/post-114.json | 17 + db/post/post-116.json | 17 + db/post/post-118.json | 17 + db/post/post-120.json | 17 + db/post/post-122.json | 17 + db/post/post-124.json | 17 + db/post/post-46.json | 17 + db/post/post-48.json | 17 + db/post/post-50.json | 17 + db/post/post-52.json | 17 + db/post/post-54.json | 17 + db/post/post-56.json | 17 + db/post/post-58.json | 17 + db/post/post-60.json | 17 + db/post/post-62.json | 17 + db/post/post-64.json | 17 + db/post/post-66.json | 17 + db/post/post-68.json | 17 + db/post/post-70.json | 17 + db/post/post-72.json | 17 + db/post/post-74.json | 17 + db/post/post-76.json | 17 + db/post/post-78.json | 17 + db/post/post-80.json | 17 + db/post/post-82.json | 17 + db/post/post-84.json | 62 + db/post/post-86.json | 17 + db/post/post-88.json | 17 + db/post/post-90.json | 17 + db/post/post-92.json | 17 + db/post/post-94.json | 17 + db/post/post-96.json | 17 + db/post/post-98.json | 17 + db/resources/resources-337.json | 17 + db/resources/resources-343.json | 17 + db/resources/resources-345.json | 17 + db/resources/resources-347.json | 17 + db/resources/resources-349.json | 17 + db/resources/resources-351.json | 17 + db/resources/resources-353.json | 17 + db/resources/resources-355.json | 17 + db/resources/resources-357.json | 17 + db/resources/resources-361.json | 17 + db/resources/resources-365.json | 17 + db/resources/resources-367.json | 17 + db/resources/resources-371.json | 17 + db/resources/resources-373.json | 17 + db/resources/resources-375.json | 17 + db/resources/resources-377.json | 17 + db/resources/resources-379.json | 17 + db/resources/resources-385.json | 17 + db/resources/resources-389.json | 17 + db/resources/resources-391.json | 17 + db/resources/resources-397.json | 17 + db/resources/resources-401.json | 17 + db/resources/resources-403.json | 17 + db/resources/resources-411.json | 17 + db/resources/resources-413.json | 17 + db/resources/resources-417.json | 17 + db/resources/resources-425.json | 17 + db/resources/resources-427.json | 17 + db/resources/resources-429.json | 17 + db/resources/resources-433.json | 17 + footer.php | 108 + front-page.php | 27 + functions.php | 38 + header.php | 62 + index.php | 96 + lib/activation.php | 251 + lib/class-acf.php | 59 + lib/class-breadcrumbs.php | 396 + lib/class-enqueue.php | 100 + lib/class-menuitems.php | 185 + lib/class-resources.php | 129 + lib/extras.php | 260 + lib/helpers.php | 155 + lib/hooks.php | 251 + lib/search-features.php | 122 + package-lock.json | 3021 ++++ package.json | 42 + page.php | 39 + playwright.config.js | 82 + screenshot.png | Bin 0 -> 68156 bytes search.php | 103 + sidebar-page.php | 15 + sidebar.php | 14 + single.php | 86 + static/img/logo.svg | 7 + static/img/select_arrow.png | Bin 0 -> 976 bytes static/js/admin.js | 12 + static/js/components/backToTop.js | 23 + static/js/components/button.js | 76 + static/js/modules/FocusStyling.js | 17 + static/js/modules/GetHeaderHeight.js | 12 + static/js/modules/Navigation.js | 225 + static/js/theme.js | 74 + style.css | 6 + styles/backend/admin.css | 15 + styles/backend/editor.css | 10 + styles/base/break-out.css | 24 + styles/base/colors.css | 41 + styles/base/forms.css | 97 + styles/base/global.css | 84 + styles/base/index.css | 9 + styles/base/misc.css | 1 + styles/base/prose.css | 36 + styles/base/skip-link.css | 25 + styles/base/typography.css | 154 + styles/blocks/buttons.css | 158 + styles/blocks/core.css | 5 + styles/blocks/index.css | 4 + styles/components/breadcrumbs.css | 13 + styles/components/index.css | 8 + styles/components/pagination.css | 35 + styles/components/post-list.css | 37 + styles/components/sidebar.css | 28 + styles/components/site-footer.css | 41 + styles/components/site-header.css | 22 + styles/fonts/Lineicons.svg | 1835 +++ styles/fonts/Lineicons.woff2 | Bin 0 -> 66824 bytes styles/fonts/lineicons.css | 2530 ++++ styles/navigation/index.css | 19 + styles/navigation/nav-aux.css | 36 + styles/navigation/nav-footer.css | 102 + styles/navigation/nav-functional.css | 100 + styles/navigation/nav-main-default.css | 102 + styles/navigation/nav-main-mega.css | 129 + styles/theme.css | 22 + tests/site-a11y.spec.js | 212 + views/blocks/accordion/accordion.css | 68 + views/blocks/accordion/accordion.php | 51 + views/blocks/accordion/block.json | 27 + views/blocks/boilerplate/block.json | 26 + views/blocks/boilerplate/boilerplate.css | 0 views/blocks/boilerplate/boilerplate.php | 27 + views/blocks/button/block.json | 24 + views/blocks/button/button.php | 51 + views/blocks/buttons/block.json | 24 + views/blocks/buttons/buttons.php | 27 + views/blocks/grid-cell/block.json | 27 + views/blocks/grid-cell/grid-cell.css | 0 views/blocks/grid-cell/grid-cell.php | 48 + views/blocks/grid/block.json | 27 + views/blocks/grid/grid.css | 0 views/blocks/grid/grid.php | 47 + views/blocks/homepage-hero/block.json | 28 + views/blocks/homepage-hero/homepage-hero.css | 0 views/blocks/homepage-hero/homepage-hero.php | 75 + .../blocks/media-text-innerblocks/block.json | 31 + .../media-text-innerblocks.css | 0 .../media-text-innerblocks.php | 57 + views/blocks/media-text/block.json | 31 + views/blocks/media-text/media-text.css | 0 views/blocks/media-text/media-text.php | 104 + views/blocks/page-children/block.json | 26 + views/blocks/page-children/page-children.css | 0 views/blocks/page-children/page-children.php | 37 + views/blocks/section/block.json | 27 + views/blocks/section/section.css | 0 views/blocks/section/section.php | 86 + views/components/menu-items/has-children.php | 68 + views/components/menu-items/index.php | 33 + views/components/menu-items/single.php | 32 + views/components/nav-aux.php | 39 + views/components/nav-main.php | 24 + views/components/nav-main__toggle.php | 46 + views/forms/search.php | 29 + views/icons/facebook.php | 1 + views/icons/heart.php | 3 + views/icons/instagram.php | 1 + views/icons/linkedin.php | 1 + views/icons/menu.php | 1 + views/icons/pinterest.php | 1 + views/icons/search.php | 6 + views/icons/shop.php | 1 + views/icons/shopping-basket.php | 7 + views/icons/twitter-.php | 1 + views/icons/twitter.php | 1 + views/icons/user.php | 6 + views/icons/youtube.php | 1 + views/partials/page-hero.php | 56 + views/partials/social-media.php | 39 + whitelist.php | 132 + 230 files changed, 32213 insertions(+) create mode 100644 .env.example create mode 100644 .github/workflows/phpcs.yml create mode 100644 .github/workflows/todos.yml create mode 100644 .github/workflows/wpengine.yml create mode 100644 .gitignore create mode 100644 .phpcs.xml create mode 100644 .vscode/settings.json create mode 100644 404.php create mode 100644 README.md create mode 100644 TODO_SUMMARY.md create mode 100644 Theme_TODOs.md create mode 100644 acf/group_5f7f85a2a3e13.json create mode 100644 acf/group_5fd3e006e5da5.json create mode 100644 acf/group_600f5a9e242c3.json create mode 100644 acf/group_60106ed700da3.json create mode 100755 acf/group_60bfb84ae973c.json create mode 100755 acf/group_60bfdb328901d.json create mode 100644 acf/group_6261bc658dd80.json create mode 100644 acf/group_645e51f721207.json create mode 100644 acf/group_645e7cf448e66.json create mode 100644 bin/.build.js create mode 100644 bin/.utils.js create mode 100644 bin/.watch.js create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 content/basic-wp-test-content.xml create mode 100644 db/menus.json create mode 100644 db/options.json create mode 100644 db/page/page-126.json create mode 100644 db/page/page-137.json create mode 100644 db/page/page-2.json create mode 100644 db/page/page-201.json create mode 100644 db/page/page-259.json create mode 100644 db/page/page-286.json create mode 100644 db/page/page-33.json create mode 100644 db/page/page-40.json create mode 100644 db/page/page-42.json create mode 100644 db/page/page-520.json create mode 100644 db/page/page-537.json create mode 100644 db/post/post-1.json create mode 100644 db/post/post-100.json create mode 100644 db/post/post-102.json create mode 100644 db/post/post-104.json create mode 100644 db/post/post-106.json create mode 100644 db/post/post-108.json create mode 100644 db/post/post-110.json create mode 100644 db/post/post-112.json create mode 100644 db/post/post-114.json create mode 100644 db/post/post-116.json create mode 100644 db/post/post-118.json create mode 100644 db/post/post-120.json create mode 100644 db/post/post-122.json create mode 100644 db/post/post-124.json create mode 100644 db/post/post-46.json create mode 100644 db/post/post-48.json create mode 100644 db/post/post-50.json create mode 100644 db/post/post-52.json create mode 100644 db/post/post-54.json create mode 100644 db/post/post-56.json create mode 100644 db/post/post-58.json create mode 100644 db/post/post-60.json create mode 100644 db/post/post-62.json create mode 100644 db/post/post-64.json create mode 100644 db/post/post-66.json create mode 100644 db/post/post-68.json create mode 100644 db/post/post-70.json create mode 100644 db/post/post-72.json create mode 100644 db/post/post-74.json create mode 100644 db/post/post-76.json create mode 100644 db/post/post-78.json create mode 100644 db/post/post-80.json create mode 100644 db/post/post-82.json create mode 100644 db/post/post-84.json create mode 100644 db/post/post-86.json create mode 100644 db/post/post-88.json create mode 100644 db/post/post-90.json create mode 100644 db/post/post-92.json create mode 100644 db/post/post-94.json create mode 100644 db/post/post-96.json create mode 100644 db/post/post-98.json create mode 100644 db/resources/resources-337.json create mode 100644 db/resources/resources-343.json create mode 100644 db/resources/resources-345.json create mode 100644 db/resources/resources-347.json create mode 100644 db/resources/resources-349.json create mode 100644 db/resources/resources-351.json create mode 100644 db/resources/resources-353.json create mode 100644 db/resources/resources-355.json create mode 100644 db/resources/resources-357.json create mode 100644 db/resources/resources-361.json create mode 100644 db/resources/resources-365.json create mode 100644 db/resources/resources-367.json create mode 100644 db/resources/resources-371.json create mode 100644 db/resources/resources-373.json create mode 100644 db/resources/resources-375.json create mode 100644 db/resources/resources-377.json create mode 100644 db/resources/resources-379.json create mode 100644 db/resources/resources-385.json create mode 100644 db/resources/resources-389.json create mode 100644 db/resources/resources-391.json create mode 100644 db/resources/resources-397.json create mode 100644 db/resources/resources-401.json create mode 100644 db/resources/resources-403.json create mode 100644 db/resources/resources-411.json create mode 100644 db/resources/resources-413.json create mode 100644 db/resources/resources-417.json create mode 100644 db/resources/resources-425.json create mode 100644 db/resources/resources-427.json create mode 100644 db/resources/resources-429.json create mode 100644 db/resources/resources-433.json create mode 100644 footer.php create mode 100644 front-page.php create mode 100644 functions.php create mode 100644 header.php create mode 100644 index.php create mode 100644 lib/activation.php create mode 100644 lib/class-acf.php create mode 100644 lib/class-breadcrumbs.php create mode 100644 lib/class-enqueue.php create mode 100644 lib/class-menuitems.php create mode 100644 lib/class-resources.php create mode 100644 lib/extras.php create mode 100644 lib/helpers.php create mode 100644 lib/hooks.php create mode 100644 lib/search-features.php create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 page.php create mode 100644 playwright.config.js create mode 100644 screenshot.png create mode 100644 search.php create mode 100644 sidebar-page.php create mode 100644 sidebar.php create mode 100644 single.php create mode 100644 static/img/logo.svg create mode 100644 static/img/select_arrow.png create mode 100644 static/js/admin.js create mode 100644 static/js/components/backToTop.js create mode 100644 static/js/components/button.js create mode 100644 static/js/modules/FocusStyling.js create mode 100644 static/js/modules/GetHeaderHeight.js create mode 100644 static/js/modules/Navigation.js create mode 100644 static/js/theme.js create mode 100644 style.css create mode 100644 styles/backend/admin.css create mode 100644 styles/backend/editor.css create mode 100644 styles/base/break-out.css create mode 100644 styles/base/colors.css create mode 100644 styles/base/forms.css create mode 100644 styles/base/global.css create mode 100644 styles/base/index.css create mode 100644 styles/base/misc.css create mode 100644 styles/base/prose.css create mode 100644 styles/base/skip-link.css create mode 100644 styles/base/typography.css create mode 100644 styles/blocks/buttons.css create mode 100644 styles/blocks/core.css create mode 100644 styles/blocks/index.css create mode 100644 styles/components/breadcrumbs.css create mode 100644 styles/components/index.css create mode 100644 styles/components/pagination.css create mode 100644 styles/components/post-list.css create mode 100644 styles/components/sidebar.css create mode 100644 styles/components/site-footer.css create mode 100644 styles/components/site-header.css create mode 100644 styles/fonts/Lineicons.svg create mode 100644 styles/fonts/Lineicons.woff2 create mode 100644 styles/fonts/lineicons.css create mode 100644 styles/navigation/index.css create mode 100644 styles/navigation/nav-aux.css create mode 100644 styles/navigation/nav-footer.css create mode 100644 styles/navigation/nav-functional.css create mode 100644 styles/navigation/nav-main-default.css create mode 100644 styles/navigation/nav-main-mega.css create mode 100644 styles/theme.css create mode 100644 tests/site-a11y.spec.js create mode 100644 views/blocks/accordion/accordion.css create mode 100644 views/blocks/accordion/accordion.php create mode 100644 views/blocks/accordion/block.json create mode 100644 views/blocks/boilerplate/block.json create mode 100644 views/blocks/boilerplate/boilerplate.css create mode 100644 views/blocks/boilerplate/boilerplate.php create mode 100644 views/blocks/button/block.json create mode 100644 views/blocks/button/button.php create mode 100644 views/blocks/buttons/block.json create mode 100644 views/blocks/buttons/buttons.php create mode 100644 views/blocks/grid-cell/block.json create mode 100644 views/blocks/grid-cell/grid-cell.css create mode 100644 views/blocks/grid-cell/grid-cell.php create mode 100644 views/blocks/grid/block.json create mode 100644 views/blocks/grid/grid.css create mode 100644 views/blocks/grid/grid.php create mode 100644 views/blocks/homepage-hero/block.json create mode 100644 views/blocks/homepage-hero/homepage-hero.css create mode 100644 views/blocks/homepage-hero/homepage-hero.php create mode 100644 views/blocks/media-text-innerblocks/block.json create mode 100644 views/blocks/media-text-innerblocks/media-text-innerblocks.css create mode 100644 views/blocks/media-text-innerblocks/media-text-innerblocks.php create mode 100644 views/blocks/media-text/block.json create mode 100644 views/blocks/media-text/media-text.css create mode 100644 views/blocks/media-text/media-text.php create mode 100644 views/blocks/page-children/block.json create mode 100644 views/blocks/page-children/page-children.css create mode 100644 views/blocks/page-children/page-children.php create mode 100644 views/blocks/section/block.json create mode 100644 views/blocks/section/section.css create mode 100644 views/blocks/section/section.php create mode 100644 views/components/menu-items/has-children.php create mode 100644 views/components/menu-items/index.php create mode 100644 views/components/menu-items/single.php create mode 100644 views/components/nav-aux.php create mode 100644 views/components/nav-main.php create mode 100644 views/components/nav-main__toggle.php create mode 100644 views/forms/search.php create mode 100644 views/icons/facebook.php create mode 100644 views/icons/heart.php create mode 100644 views/icons/instagram.php create mode 100644 views/icons/linkedin.php create mode 100644 views/icons/menu.php create mode 100644 views/icons/pinterest.php create mode 100644 views/icons/search.php create mode 100644 views/icons/shop.php create mode 100644 views/icons/shopping-basket.php create mode 100644 views/icons/twitter-.php create mode 100644 views/icons/twitter.php create mode 100644 views/icons/user.php create mode 100644 views/icons/youtube.php create mode 100644 views/partials/page-hero.php create mode 100644 views/partials/social-media.php create mode 100644 whitelist.php diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..cb303ab --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +LOCALHOST_URL=https://basic-wp.test +BROWSERSYNC_PORT=5000 diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml new file mode 100644 index 0000000..030c76a --- /dev/null +++ b/.github/workflows/phpcs.yml @@ -0,0 +1,33 @@ +name: PHPCS check +on: + # push: + pull_request: + # Allow manually triggering the workflow. + workflow_dispatch: + +# Cancel all previous workflow runs for the same branch that have not yet completed. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + phpcs: + name: PHPCS + runs-on: ubuntu-22.04 + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Setup PHP + uses: "shivammathur/setup-php@v2" + with: + php-version: "8.2" + ini-values: "memory_limit=1G" + coverage: none + tools: cs2pr + - name: Install Composer dependencies + uses: "ramsey/composer-install@v3" + - name: Run PHPCS checks + continue-on-error: true + run: vendor/bin/phpcs --report-full --report-checkstyle=./phpcs-report.xml . + - name: Show PHPCS results in PR + run: cs2pr ./phpcs-report.xml diff --git a/.github/workflows/todos.yml b/.github/workflows/todos.yml new file mode 100644 index 0000000..7e2aa27 --- /dev/null +++ b/.github/workflows/todos.yml @@ -0,0 +1,26 @@ +name: Sync TODOs with Issues + +on: + workflow_dispatch: + push: + paths-ignore: + - '**.md' + +jobs: + sync_todos: + runs-on: ubuntu-latest + permissions: + contents: write + issues: write + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Sync TODOs + uses: Solo-Web-Works/TODO-Sync@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + summary_file: TODO_SUMMARY.md + dry_run: false + commit: false diff --git a/.github/workflows/wpengine.yml b/.github/workflows/wpengine.yml new file mode 100644 index 0000000..e12b469 --- /dev/null +++ b/.github/workflows/wpengine.yml @@ -0,0 +1,65 @@ +name: Deploy to WPEngine +on: + # workflow_dispatch + # Remove "workflow_dispatch" above and uncomment the lines below to enable deploy on push + # only do this once you're actually ready to start deploying to Flywheel + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, '#skipGA') }} + + steps: + - uses: actions/checkout@v3 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + + - name: Install PHP Composer + uses: php-actions/composer@v6 + with: + php_version: "8.2" + + - name: Cache node modules + id: cache-npm + uses: actions/cache@v3 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: Install npm dependencies + run: yarn install + + - name: Run build task + run: yarn build + + - name: Clean up node modules (not needed to deploy) + run: rm -rf node_modules + + - name: Deploy to WPE + uses: wpengine/github-action-wpe-site-deploy@v3 + with: + WPE_SSHG_KEY_PRIVATE: ${{ secrets.WPE_SSHG_KEY_PRIVATE }} + WPE_ENV: cupemb + FLAGS: '-azvr --inplace --delete --exclude=".*"' + REMOTE_PATH: "wp-content/themes/cupe" + SCRIPT: "post-deploy.sh" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a26245 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*~ +.DS_Store +vendor +node_modules +static/dist/ +.env +bak/ +testimonials.class.php +resource-filter/ +phpcs-results.txt + +# Playwright +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/.phpcs.xml b/.phpcs.xml new file mode 100644 index 0000000..85c37aa --- /dev/null +++ b/.phpcs.xml @@ -0,0 +1,46 @@ + + + Coding Style Checks. + + + + + + + + vendor/ + node_modules/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..de385f1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "workbench.colorCustomizations": { + "tree.indentGuidesStroke": "#3d92ec", + "activityBar.background": "#213309", + "titleBar.activeBackground": "#2E470C", + "titleBar.activeForeground": "#F6FCEE" + } +} diff --git a/404.php b/404.php new file mode 100644 index 0000000..cca68d1 --- /dev/null +++ b/404.php @@ -0,0 +1,47 @@ + + +
+

Page Not Found

+

Sorry, the page you're looking for doesn't exist.

+ +

It might have been removed, had its name changed, or is temporarily unavailable.

+ +

+

+

+ +

Or check out the links below:

+ +
+ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..671e70a --- /dev/null +++ b/README.md @@ -0,0 +1,475 @@ +# Basic-WP WordPress Theme Starter + +Basic-WP is a minimal WordPress theme designed as a starting point for custom theme development. It focuses on modern development approaches with a lean architecture that avoids the overhead of theme frameworks. + +## Key Features + +- Tailwind CSS +- Namespaced PHP for isolation +- Built-in support for ACF blocks +- Fast development workflow with watch and compile functions + +## Project Structure + +```plaintext +Basic-WP/ +├── acf/ # ACF field group JSON definitions +├── bin/ # Build scripts +├── content/ # Sample page and post content for testing +├── lib/ # PHP library files +│ ├── class-breadcrumbs.php # Breadcrumb generation +│ ├── class-acf.php # ACF integration +│ ├── class-enqueue.php # Assets enqueuing +│ ├── class-menuitems.php # Navigation menu builder +│ ├── class-resources.php # Custom Resources post type +│ ├── extras.php # Miscellaneous theme functions +│ ├── helpers.php # Helper functions +│ ├── hooks.php # WordPress hooks and filters +│ └── search-features.php # Enhanced search functionality +├── static/ # Static assets +│ ├── dist/ # Compiled assets +│ ├── img/ # Static theme images +│ └── js/ # JavaScript files +│ ├── components/ # JS components +│ │ └── button.js # Button custom component +│ ├── modules/ # JS theme modules +│ │ ├── FocusStyling.js # Replace focus styling for keyboard navigation +│ │ ├── GetHeaderHeight.js # Calculate header height and set it as a CSS variable +│ │ └── Navigation.js # Script controlling navigation behavior +│ ├── admin.js # Admin-specific JS +│ └── theme.js # Main theme JS +├── styles/ # CSS styles +│ ├── backend/ # Admin styles +│ ├── base/ # Base styles +│ ├── blocks/ # Block styles +│ ├── components/ # Component styles +│ ├── fonts/ # Font styles +│ └── theme.css # Main CSS entry point +├── tests/ # Automated Playwright tests +│ └── site-a11y.spec.js # Site Accessibility tests +├── views/ # Template views +│ ├── blocks/ # Custom ACF blocks +│ ├── icons/ # SVG icons +│ ├── forms/ # Form templates +│ └── partials/ # Reusable template parts +├── 404.php # 404 error template +├── footer.php # Footer template +├── front-page.php # Front page template +├── functions.php # Main functions file +├── header.php # Header template +├── index.php # Main template +├── page.php # Page template +├── search.php # Search results template +├── sidebar.php # Main sidebar template +├── sidebar-page.php # Page sidebar template +├── single.php # Single post template +├── style.css # Theme metadata +└── whitelist.php # Tailwind class whitelist +``` + +## Core Files and Templates + +### Theme Core Files + +- **style.css**: Contains theme metadata and registration information +- **functions.php**: Initializes the theme and loads necessary dependencies +- **class-acf.php**: Handles Advanced Custom Fields (ACF) functionality +- **class-breadcrumbs.php**: Generates breadcrumb navigation for the site +- **class-enqueue.php**: Manages script and style enqueuing for frontend and backend +- **class-menuitems.php**: Builder for the navigation menus +- **class-resources.php**: Custom post type management for "Resources", included as an example of CPT usage +- **extras.php**: Miscellaneous theme functions, including sidebar and page header checks +- **helpers.php**: Utility functions for common tasks +- **hooks.php**: Contains WordPress hooks and filters for theme functionality +- **search-features.php**: Enhances search functionality with custom queries and filters +- **whitelist.php**: Contains Tailwind CSS class whitelist for styles used in WordPress editor + +### Template Files + +- **header.php**: Defines the site header with primary navigation +- **footer.php**: Defines the site footer with widget areas and copyright +- **front-page.php**: Template for the front page of the site +- **page.php**: Displays individual static pages with optional sidebar +- **index.php**: Main template file that displays the blog posts list +- **single.php**: Displays individual posts with author and category information +- **search.php**: Displays search results with pagination +- **404.php**: Custom "Page Not Found" template with search form +- **sidebar.php**: Primary sidebar template +- **sidebar-page.php**: Page-specific sidebar template +- **views/forms/search.php** - Search form template for use in various locations + +### Included Blocks + +- **Boilerplate**: Example block for custom development +- **Accordion**: Collapsible content sections +- **Buttons**: Group of buttons +- **Button**: Configurable button element +- **Grid**: Flexible grid layout system +- **Grid Cell**: Individual grid item +- **Homepage Hero**: Hero section typically used on homepage +- **Media Text**: Image or video with accompanying text +- **Media Text with Inner Blocks**: Media-text with nested block support +- **Page Children**: Displays child pages of current page +- **Section**: Container block with background and width (contained and full-screen width) options + +## Library Functions and Classes + +### helpers.php + +```php +getFieldValue($field_path) +``` + +- Retrieves a nested value from an ACF field using dot notation +- **Parameters**: `$field_path` - The dot-notated path to the value (e.g., `contact_info.phone`) +- **Returns**: The value at the specified path + +```php +customMenuOrder($menu_ord) +``` + +- Customizes the order of admin menu items in WordPress dashboard +- Add other admin menu URLs to the array to change their order +- **Parameters**: `$menu_ord` - The existing menu order array +- **Returns**: Array specifying the custom menu order, or true for default order + +```php +blockCategories($categories) +``` + +- Adds custom block category for theme blocks +- **Parameters**: `$categories` - The existing block categories +- **Returns**: Modified array of categories + +```php +consoleLog($data) +``` + +- Utility function to print a variable to the console for debugging +- **Parameters**: `$data` - The data to print to the console + +### search-features.php + +```php +pageSearch($query) +``` + +- Modifies the WordPress query for page search functionality +- **Parameters**: `$query` - The WordPress query object +- **Returns**: void + +```php +postSort($key) +``` + +- Returns a sorting function for WP_Post objects in reverse order +- **Parameters**: `$key` - WP_Post object property used for sorting +- **Returns**: Sorting function + +```php +dedupe($posts, $key) +``` + +- Removes duplicate posts based on a specified key +- **Parameters**: + - `$posts` - Array of posts + - `$key` - Key to check for duplicates +- **Returns**: Filtered array of posts + +```php +searchResultFilter($posts, $query) +``` + +- Filters and processes search results +- **Parameters**: + - `$posts` - Array of posts + - `$query` - The search query +- **Returns**: Filtered array of posts + +### extras.php + +```php +getChildrenPages() +``` + +- Gets child pages of the current page +- **Returns**: Array of child pages or empty array + +```php +hasSidebar() +``` + +- Checks if sidebar should be rendered +- **Returns**: Boolean indicating sidebar presence + +```php +hasPageHeader() +``` + +- Checks if the page should render a page header +- **Returns**: Boolean indicating page header presence + +```php +createOwnerRole() +``` + +- Creates a new WordPress role named "Owner" with admin capabilities minus plugin/theme management +- **Returns**: void + +```php +getTheTitle() +``` + +- Gets the title based on the current context (archive, search, etc.) +- **Returns**: Appropriate title string + +```php +divWrapper($content) +``` + +- Wraps iframes and embeds in a div with the class "embed" +- **Parameters**: `$content` - The content to process +- **Returns**: Modified content + +### Class: Resources (class-resources.php) + +Custom post type and taxonomy management for "Resources" + +### Class: Enqueue (class-enqueue.php) + +Manages script and style enqueueing + +```php +enqFEAssets() +``` + +- Enqueues frontend CSS and JS files +- **Returns**: void + +```php +enqBEAssets() +``` + +- Enqueues backend (admin/editor) CSS and JS files +- **Returns**: void + +### Class: ACF (class-acf.php) + +Handles ACF (Advanced Custom Fields) functionality + +```php +saveJson($path) +``` + +- Sets the path for saving ACF field groups as JSON +- **Parameters**: `$path` - The default path +- **Returns**: Modified path + +```php +loadJson($paths) +``` + +- Sets the path for loading ACF field groups from JSON +- **Parameters**: `$paths` - The default paths +- **Returns**: Modified paths array + +### Class: Breadcrumbs (class-breadcrumbs.php) + +Generates and displays breadcrumb navigation + +```php +generate() +``` + +- Generates breadcrumb data based on the current page +- **Returns**: Array of breadcrumb items + +```php +render() +``` + +- Renders breadcrumb HTML with schema.org markup +- **Returns**: void (echoes HTML) + +The class also includes other helper methods for different page types: + +- `getHomeBreadcrumb()` +- `getBlogPostsIndexBreadcrumb()` +- `getSinglePostBreadcrumbs()` +- `getCustomPostTypeBreadcrumbs()` +- `getStaticPageBreadcrumbs($post)` +- `getTaxonomyArchiveBreadcrumb()` +- `getPostTypeArchiveBreadcrumb()` +- `getDateArchiveBreadcrumbs()` +- `getMonthArchiveBreadcrumb()` +- `getYearArchiveBreadcrumb()` +- `getAuthorArchiveBreadcrumb()` +- `getSearchBreadcrumb()` +- `get404Breadcrumb()` + +## ACF Blocks System + +The theme implements a custom block system using Advanced Custom Fields. Blocks are registered automatically in functions.php via the `regACFBlocks()` function. + +See `views/blocks/boilerplate/` for a starting point for custom blocks. + +### Block Structure + +Each block consists of: + +- PHP template file (block rendering) +- CSS file (block-specific styles) +- block.json file (block configuration) + +See the [ACF Blocks Documentation](https://www.advancedcustomfields.com/resources/#acf-blocks) for more details on creating custom blocks. + +## JavaScript Components + +The theme utilizes custom web components for enhanced functionality. + +### ButtonComponent + +A custom HTML element for creating buttons with various configurations: + +```javascript +class ButtonComponent extends HTMLElement { + // Attributes: + // - btnClasses: Additional CSS classes + // - element: The element to use (`a` or `button`) + // - type: Button type (for non-anchor elements) + // - url: The URL for links + // - target: Target attribute for links + // - title: Button text + // - color: Button color + // - variant: Button style variant + // - size: Button size + // - width: Button width +} +``` + +Usage: + +```html + +``` + +## Asset Management + +### CSS + +The theme uses Tailwind CSS for styling with custom utilities: + +- Base styles in `views/styles/base` +- Component styles in `views/styles/components` +- Block-specific styles in individual block folders and `views/styles/blocks` +- Admin/editor styles in `views/styles/backend` + +### JavaScript + +- **theme.js**: Main frontend JavaScript +- **admin.js**: Admin-specific JavaScript +- **components**: JavaScript components +- **modules**: JavaScript modules for specific functionality (e.g., navigation, focus styling) + +### Build System + +The theme includes a simple build system in the bin directory: + +- **.build.js**: Production build script that compiles Tailwind CSS +- **.watch.js**: Development watch script with BrowserSync for live reloading +- **.utils.js**: Shared utility functions for the build process + +## Development Workflow + +### Setup + +1. Create a new repo using this one as a template. +2. Clone the repo to your local dev folder. +3. Install dependencies (if asked to overwrite, choose "no"): + + ```bash + composer install + npm i + npm init playwright@latest --yes "--" . '--quiet' '--browser=chromium' '--browser=firefox' '--browser=webkit' '--lang=js' + ``` + +4. Create .env file from .env.example and set: + + - `LOCALHOST_URL`: Local development URL. + - `BROWSERSYNC_PORT`: Port for BrowserSync (default: 5000). + +5. Start building your project. + + - (Optional) Import the sample content from `content`. + +### Sart Development Server + +- Run `npm run watch` or `npm run start` to start development server with live reloading. +- Changes to PHP, CSS, and JS files will trigger automatic reload. + +### Production + +- Run `npm run build` to compile and optimize CSS for production (normally handled by GitHub Actions). + +### Deployment + +- Deployment is handled via GitHub Actions. +- Ensure you update `.github/workflows/wpengine,yml` with the correct WP Engine deployment configuration (environment and theme folder). + +## Testing + +The theme includes a suite of testing tools to ensure code quality and functionality. + +Accessibility tests using Playwright and Axe: + +- Test files located in `tests`. +- Run via the [VSCode Playwright extension](https://marketplace.visualstudio.com/items/?itemName=ms-playwright.playwright) or with `npx playwright test` in your terminal. +- Tests include: + - `site-a11y.spec.js`: Accessibility tests for the site. +- Generates reports in `playwright-report` and screenshots in `test-results`. + +Code linting for modified WordPress coding standards using phpcs: + +- Run `composer lint` in your terminal to check PHP files for coding standards violations + - Test results are saved in `phpcs-results.txt`. Review the file for error details. + - Automated fixes noted in the results can be done using `composer fix .php` in your terminal. + +### Files + +- `404.php` - Displays a custom "Page Not Found" message when a visitor tries to access a page that doesn't exist. +- `archive.php` - Displays a list of posts from a particular archive, such as a category, date, or tag archive. +- `author.php` - Displays a list of posts by a specific author, along with the author's information. +- `category.php` - Displays a list of posts from a specific category. +- `footer.php` - Contains the footer section of the theme, typically including closing HTML tags and widgets or navigation in the footer area. +- `front-page.php` - The template used for the front page of the site, either static or a blog, depending on the site settings. +- `functions.php` - Imports custom functionality for the theme. **Should not be edited**, all changes/additions should live in the `lib` directory. +- `header.php` - Contains the header section of the theme, typically including the site's title, meta tags, and navigation menu. +- `index.php` - The fallback template for all WordPress pages, used if no other more specific template (like `category.php` or `single.php`) is available. +- `page.php` - Displays individual static pages, such as "About" or "Contact" pages. +- `screenshot.png` - An image of the theme’s design, shown in the WordPress theme selector to give users a preview of the theme's appearance. +- `search.php` - Displays the results of a search query, showing posts or pages that match the search terms entered by the user. +- `single.php` - Displays individual posts, often used for blog posts or custom post types. +- `tag.php` - Displays a list of posts associated with a specific tag. + +### Folders + +- `acf` - Storage for ACF field group JSON files. You shouldn't edit anything here manually. +- `bin` - Helper files for the dev and build processes. +- `lib` - Main library for the theme, including the Twig engine and other helper functions. +- `static` - Static assets for the theme, including CSS, JS, and images. The rendered stylesheet is stored here. +- `styles` - The raw CSS files compiled by Tailwind into the final CSS file. +- `views` - Twig view templates for the theme. This is where you will do most of your work. + - `blocks` - ACF block templates. + - `boilerplate` - Example ACF block template. Used to build your own blocks (more on this below). + - `icons` - Icon templates for SVG icons. + - `partials` - Partial templates for the page hero, breadcrumb, and social media sections. diff --git a/TODO_SUMMARY.md b/TODO_SUMMARY.md new file mode 100644 index 0000000..cf68259 --- /dev/null +++ b/TODO_SUMMARY.md @@ -0,0 +1,16 @@ +# 📋 TODO Summary + +## to-research +- [ ] Rework break-out styles referencing [this guide](https://css-tip.com/full-bleed-layout/) (in `Theme_TODOs.md`, line 3) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) +- [ ] Implement container queries. (in `Theme_TODOs.md`, line 4) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) + +## tailwind +- [ ] Rework break-out styles referencing [this guide](https://css-tip.com/full-bleed-layout/) (in `Theme_TODOs.md`, line 3) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) +- [ ] Implement container queries. (in `Theme_TODOs.md`, line 4) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) + +## enhancement +- [ ] Implement container queries. (in `Theme_TODOs.md`, line 4) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) + +## uncategorized +- [ ] Add documenation link here (in `styles/navigation/nav-main-default.css`, line 5) ([commit](https://github.com/keith/Basic-WP/commit/b99f7085c741c83e424bb0728168a3c1df3e9259)) + diff --git a/Theme_TODOs.md b/Theme_TODOs.md new file mode 100644 index 0000000..6d3d491 --- /dev/null +++ b/Theme_TODOs.md @@ -0,0 +1,4 @@ +# Theme TODOs + +TODO: Rework break-out styles referencing [this guide](https://css-tip.com/full-bleed-layout/) Label: to-research, tailwind +TODO: Implement container queries. Label: to-research, tailwind, enhancement diff --git a/acf/group_5f7f85a2a3e13.json b/acf/group_5f7f85a2a3e13.json new file mode 100644 index 0000000..c799804 --- /dev/null +++ b/acf/group_5f7f85a2a3e13.json @@ -0,0 +1,179 @@ +{ + "key": "group_5f7f85a2a3e13", + "title": "Button", + "fields": [ + { + "key": "field_67d5cd1108a6e", + "label": "Element", + "name": "element", + "aria-label": "", + "type": "radio", + "instructions": "", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "a": "<a> Element", + "button": "<button> Element" + }, + "default_value": "a", + "return_format": "value", + "allow_null": 0, + "other_choice": 0, + "allow_in_bindings": 0, + "layout": "horizontal", + "save_other_choice": 0 + }, + { + "key": "field_5f7f85a71151d", + "label": "Link", + "name": "link", + "aria-label": "", + "type": "link", + "instructions": "", + "required": 1, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array" + }, + { + "key": "field_5f7f85bd1151e", + "label": "Color", + "name": "color", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "primary": "Primary", + "secondary": "Secondary", + "white": "White", + "black": "Black" + }, + "default_value": "primary", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "allow_in_bindings": 1, + "ui": 0, + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_5f7f85e41151f", + "label": "Variant", + "name": "variant", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "default": "Default", + "outline": "Outline" + }, + "default_value": "default", + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_5f807a47dd2a8", + "label": "Size", + "name": "size", + "aria-label": "", + "type": "select", + "instructions": "Controls the padding of the buttons", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "small": "Small", + "medium": "Medium", + "large": "Large" + }, + "default_value": "medium", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "allow_in_bindings": 1, + "ui": 0, + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_605924972a98a", + "label": "Width", + "name": "width", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "auto": "Auto", + "small": "Small", + "wide": "Wide", + "full": "Full Width" + }, + "default_value": "auto", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "allow_in_bindings": 1, + "ui": 0, + "ajax": 0, + "placeholder": "" + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/button" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1742236256 +} diff --git a/acf/group_5fd3e006e5da5.json b/acf/group_5fd3e006e5da5.json new file mode 100644 index 0000000..ed58037 --- /dev/null +++ b/acf/group_5fd3e006e5da5.json @@ -0,0 +1,459 @@ +{ + "key": "group_5fd3e006e5da5", + "title": "Global Fields", + "fields": [ + { + "key": "field_5fd3e0137bfed", + "label": "Contact Info", + "name": "contact_info", + "aria-label": "", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "sub_fields": [ + { + "key": "field_5fd3e0277bfee", + "label": "Email", + "name": "email", + "aria-label": "", + "type": "email", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_5fd3e02f7bfef", + "label": "Phone", + "name": "phone", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "", + "maxlength": "" + }, + { + "key": "field_684ad36ebaf40", + "label": "Fax", + "name": "fax", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "allow_in_bindings": 1, + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_5fd3e0437bff0", + "label": "Address", + "name": "address", + "aria-label": "", + "type": "textarea", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "maxlength": "", + "rows": 3, + "new_lines": "br" + }, + { + "key": "field_60381dcb082b5", + "label": "Hours", + "name": "hours", + "aria-label": "", + "type": "textarea", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "maxlength": "", + "rows": 3, + "new_lines": "br" + } + ] + }, + { + "key": "field_677bf0e692d37", + "label": "Social Media", + "name": "social_media", + "aria-label": "", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "sub_fields": [ + { + "key": "field_677bf0e692d3c", + "label": "Facebook", + "name": "facebook", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + }, + { + "key": "field_677bf0e692d3e", + "label": "Instagram", + "name": "instagram", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + }, + { + "key": "field_677bf0e692d3d", + "label": "X\/Twitter", + "name": "twitter", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + }, + { + "key": "field_677bf0e692d41", + "label": "LinkedIn", + "name": "linkedin", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + }, + { + "key": "field_677bf0e692d40", + "label": "Youtube", + "name": "youtube", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + }, + { + "key": "field_677bf0e692d3f", + "label": "Pinterest", + "name": "pinterest", + "aria-label": "", + "type": "url", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "allow_in_bindings": 1, + "placeholder": "" + } + ] + }, + { + "key": "field_60302ebb3604d", + "label": "Header", + "name": "header", + "aria-label": "", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "sub_fields": [ + { + "key": "field_60cbbb8fc100a", + "label": "Header Logo", + "name": "header_logo", + "aria-label": "", + "type": "image", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "preview_size": "medium", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "" + } + ] + }, + { + "key": "field_61df32ca33bc0", + "label": "Footer", + "name": "footer", + "aria-label": "", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "block", + "sub_fields": [ + { + "key": "field_61df32e833bc1", + "label": "Footer Logo", + "name": "footer_logo", + "aria-label": "", + "type": "image", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "preview_size": "medium", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "" + }, + { + "key": "field_64761ea8cb0dd", + "label": "Footer Description", + "name": "footer_description", + "aria-label": "", + "type": "wysiwyg", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "tabs": "all", + "toolbar": "full", + "media_upload": 1, + "delay": 0 + }, + { + "key": "field_61df3348c3795", + "label": "Copyright Text", + "name": "copyright_text", + "aria-label": "", + "type": "text", + "instructions": "Use '%Y' to display the current year.", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "© %Y. All rights reserved.", + "maxlength": "", + "allow_in_bindings": 1, + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_684af923d5f68", + "label": "Credit Text", + "name": "credit_text", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "Web Design & Development by Vincent Design<\/strong><\/a>", + "maxlength": "", + "allow_in_bindings": 1, + "placeholder": "", + "prepend": "", + "append": "" + } + ] + }, + { + "key": "field_60cbbba3c100b", + "label": "Admin", + "name": "admin", + "aria-label": "", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "sub_fields": [ + { + "key": "field_60cbbbb2c100c", + "label": "404 Page", + "name": "404_page", + "aria-label": "", + "type": "post_object", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "post_type": [ + "page" + ], + "taxonomy": "", + "allow_null": 0, + "multiple": 0, + "return_format": "object", + "ui": 1, + "bidirectional_target": [] + } + ] + } + ], + "location": [ + [ + { + "param": "options_page", + "operator": "==", + "value": "acf-options-global-fields" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1749744328 +} diff --git a/acf/group_600f5a9e242c3.json b/acf/group_600f5a9e242c3.json new file mode 100644 index 0000000..e63bf97 --- /dev/null +++ b/acf/group_600f5a9e242c3.json @@ -0,0 +1,362 @@ +{ + "key": "group_600f5a9e242c3", + "title": "Grid", + "fields": [ + { + "key": "field_6010666abf912", + "label": "Grid Settings", + "name": "", + "aria-label": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 1, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_600f6ea6251d4", + "label": "Columns", + "name": "columns", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_600f6ee1251d6", + "label": "Columns (sm)", + "name": "columns_sm", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106fa83e9ae", + "operator": "==", + "value": "sm" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_600f6f41251d7", + "label": "Columns (md)", + "name": "columns_md", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106fa83e9ae", + "operator": "==", + "value": "md" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_600f6f4d251d8", + "label": "Columns (lg)", + "name": "columns_lg", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106fa83e9ae", + "operator": "==", + "value": "lg" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_600f6f57251d9", + "label": "Columns (xl)", + "name": "columns_xl", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106fa83e9ae", + "operator": "==", + "value": "xl" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_600f6f66251da", + "label": "Columns (2xl)", + "name": "columns_2xl", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106fa83e9ae", + "operator": "==", + "value": "2xl" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106fa83e9ae", + "label": "Breakpoints", + "name": "columns_breakpoints", + "aria-label": "", + "type": "checkbox", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "sm": "sm (640px)", + "md": "md (768px)", + "lg": "lg (1024px)", + "xl": "xl (1280px)", + "2xl": "2xl (1536px)" + }, + "allow_custom": 0, + "default_value": [], + "layout": "vertical", + "toggle": 0, + "return_format": "value", + "save_custom": 0, + "custom_choice_button_text": "Add new choice" + }, + { + "key": "field_600f5d3ec8e30", + "label": "Gap X", + "name": "gap_x", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "11": "11", + "12": "12", + "14": "14", + "16": "16", + "18": "18", + "20": "20", + "24": "24", + "28": "28", + "32": "32", + "36": "36", + "40": "40", + "48": "48", + "56": "56", + "64": "64", + "72": "72", + "80": "80", + "88": "88", + "96": "96" + }, + "default_value": 0, + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_60dca39d232a1", + "label": "Gap Y", + "name": "gap_y", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + "11": "11", + "12": "12", + "14": "14", + "16": "16", + "18": "18", + "20": "20", + "24": "24", + "28": "28", + "32": "32", + "36": "36", + "40": "40", + "48": "48", + "56": "56", + "64": "64", + "72": "72", + "80": "80", + "88": "88", + "96": "96" + }, + "default_value": 0, + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_60106e64bf91c", + "label": "Grid Settings End", + "name": "", + "aria-label": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/grid" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1744581665 +} diff --git a/acf/group_60106ed700da3.json b/acf/group_60106ed700da3.json new file mode 100644 index 0000000..c6061f8 --- /dev/null +++ b/acf/group_60106ed700da3.json @@ -0,0 +1,256 @@ +{ + "key": "group_60106ed700da3", + "title": "Grid Cell", + "fields": [ + { + "key": "field_60106ed7117ef", + "label": "Col Span", + "name": "", + "aria-label": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 1, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_60106ed7117f7", + "label": "Default", + "name": "col_span", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "hide-top-label", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed711802", + "label": "(sm)", + "name": "col_span_sm", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106ed711830", + "operator": "==", + "value": "sm" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed71180a", + "label": "(md)", + "name": "col_span_md", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106ed711830", + "operator": "==", + "value": "md" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed711811", + "label": "(lg)", + "name": "col_span_lg", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106ed711830", + "operator": "==", + "value": "lg" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed71181d", + "label": "(xl)", + "name": "col_span_xl", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106ed711830", + "operator": "==", + "value": "xl" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed711825", + "label": "(2xl)", + "name": "col_span_2xl", + "aria-label": "", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60106ed711830", + "operator": "==", + "value": "2xl" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": 1, + "max": 12, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_60106ed711830", + "label": "Breakpoints", + "name": "col_span_breakpoints", + "aria-label": "", + "type": "checkbox", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "sm": "sm (640px)", + "md": "md (768px)", + "lg": "lg (1024px)", + "xl": "xl (1280px)", + "2xl": "2xl (1536px)" + }, + "allow_custom": 0, + "default_value": [], + "layout": "vertical", + "toggle": 0, + "return_format": "value", + "save_custom": 0, + "custom_choice_button_text": "Add new choice" + }, + { + "key": "field_60106ed711838", + "label": "Col Span End", + "name": "", + "aria-label": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/grid-cell" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1697125043 +} diff --git a/acf/group_60bfb84ae973c.json b/acf/group_60bfb84ae973c.json new file mode 100755 index 0000000..eea5b46 --- /dev/null +++ b/acf/group_60bfb84ae973c.json @@ -0,0 +1,192 @@ +{ + "key": "group_60bfb84ae973c", + "title": "Page Heading", + "fields": [ + { + "key": "field_60bfda53dc0f2", + "label": "Hero Style", + "name": "hero_style", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "default": "Default", + "none": "None" + }, + "default_value": false, + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_6478f669004aa", + "label": "Background Color", + "name": "background_color", + "aria-label": "", + "type": "color_picker", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "enable_opacity": 0, + "return_format": "string" + }, + { + "key": "field_6478f68c004ab", + "label": "Is Dark?", + "name": "is_dark", + "aria-label": "", + "type": "true_false", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "message": "", + "default_value": 1, + "ui": 0, + "ui_on_text": "", + "ui_off_text": "" + }, + { + "key": "field_60bfb8534a41f", + "label": "Heading", + "name": "heading", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60bfda53dc0f2", + "operator": "!=", + "value": "none" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "", + "maxlength": "" + }, + { + "key": "field_60bfb85a4a420", + "label": "Intro", + "name": "intro", + "aria-label": "", + "type": "textarea", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_60bfda53dc0f2", + "operator": "!=", + "value": "none" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "maxlength": "", + "rows": "", + "new_lines": "" + }, + { + "key": "field_60bfb8614a421", + "label": "Call to Actions", + "name": "call_to_actions", + "aria-label": "", + "type": "repeater", + "instructions": "", + "required": 0, + "conditional_logic": false, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "collapsed": "", + "min": 0, + "max": 0, + "layout": "table", + "button_label": "Add Call to Action", + "rows_per_page": 20, + "sub_fields": [ + { + "key": "field_60bfb86e4a422", + "label": "Link", + "name": "link", + "aria-label": "", + "type": "link", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "parent_repeater": "field_60bfb8614a421" + } + ] + } + ], + "location": [ + [ + { + "param": "post_type", + "operator": "==", + "value": "page" + } + ], + [ + { + "param": "post_type", + "operator": "==", + "value": "post" + } + ] + ], + "menu_order": 1, + "position": "side", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1746895738 +} diff --git a/acf/group_60bfdb328901d.json b/acf/group_60bfdb328901d.json new file mode 100755 index 0000000..815a701 --- /dev/null +++ b/acf/group_60bfdb328901d.json @@ -0,0 +1,106 @@ +{ + "key": "group_60bfdb328901d", + "title": "Homepage Hero", + "fields": [ + { + "key": "field_60bfdb328cfae", + "label": "Heading", + "name": "heading", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "placeholder": "", + "prepend": "", + "append": "", + "maxlength": "" + }, + { + "key": "field_60bfdb328cfb9", + "label": "Intro", + "name": "intro", + "aria-label": "", + "type": "wysiwyg", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "tabs": "all", + "toolbar": "full", + "media_upload": 1, + "delay": 0 + }, + { + "key": "field_60bfdb328cfc0", + "label": "Calls to Action", + "name": "calls_to_action", + "aria-label": "", + "type": "repeater", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "table", + "pagination": 0, + "min": 0, + "max": 0, + "collapsed": "", + "button_label": "Add Call to Action", + "rows_per_page": 20, + "sub_fields": [ + { + "key": "field_60bfdb3294667", + "label": "Link", + "name": "link", + "aria-label": "", + "type": "link", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "parent_repeater": "field_60bfdb328cfc0" + } + ] + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/homepage-hero" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1742332828 +} diff --git a/acf/group_6261bc658dd80.json b/acf/group_6261bc658dd80.json new file mode 100644 index 0000000..c04d051 --- /dev/null +++ b/acf/group_6261bc658dd80.json @@ -0,0 +1,556 @@ +{ + "key": "group_6261bc658dd80", + "title": "Section", + "fields": [ + { + "key": "field_6262e24ce0672", + "label": "Background", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_6262df5194500", + "label": "Background Color", + "name": "background_color", + "type": "color_picker", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "enable_opacity": 0, + "return_format": "string" + }, + { + "key": "field_6261bc723d308", + "label": "Background Image", + "name": "background_image", + "type": "image", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "preview_size": "medium", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "" + }, + { + "key": "field_62a9e85035329", + "label": "Background Position", + "name": "background_position", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_6261bc723d308", + "operator": "!=empty" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "block", + "sub_fields": [ + { + "key": "field_62a9e87c3532a", + "label": "Size", + "name": "size", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "cover": "Cover", + "contain": "Contain", + "custom": "Custom" + }, + "default_value": false, + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_62a9e8ef3532b", + "label": "Scale", + "name": "scale", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_62a9e87c3532a", + "operator": "==", + "value": "custom" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 100, + "min": "", + "max": 200, + "step": "", + "prepend": "", + "append": "%" + }, + { + "key": "field_62a9e92e3532c", + "label": "X", + "name": "x", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 50, + "min": "", + "max": "", + "step": "", + "prepend": "", + "append": "%" + }, + { + "key": "field_62a9e98c3532d", + "label": "Y", + "name": "y", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 50, + "min": "", + "max": "", + "step": "", + "prepend": "", + "append": "%" + } + ] + }, + { + "key": "field_6262df6394501", + "label": "Background End", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + }, + { + "key": "field_6262df8794502", + "label": "Overlay", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_6261bfcb2d09c", + "label": "Overlay Color", + "name": "overlay_color", + "type": "color_picker", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "enable_opacity": 0, + "return_format": "string" + }, + { + "key": "field_6262df9994503", + "label": "Overlay Image", + "name": "overlay_image", + "type": "image", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "preview_size": "medium", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "" + }, + { + "key": "field_6261c02e08b7f", + "label": "Overlay Opacity", + "name": "overlay_opacity", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_6261bfcb2d09c", + "operator": "!=empty" + } + ], + [ + { + "field": "field_6262df9994503", + "operator": "!=empty" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "min": "", + "max": "", + "step": "", + "prepend": "", + "append": "%" + }, + { + "key": "field_62a9e9ab3532e", + "label": "Overlay Position", + "name": "overlay_position", + "type": "group", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_6262df9994503", + "operator": "!=empty" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "block", + "sub_fields": [ + { + "key": "field_62a9e9ab3532f", + "label": "Size", + "name": "size", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "cover": "Cover", + "contain": "Contain", + "custom": "Custom" + }, + "default_value": false, + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_62a9e9ab35330", + "label": "Scale", + "name": "scale", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_62a9e9ab3532f", + "operator": "==", + "value": "custom" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 100, + "min": "", + "max": 200, + "step": "", + "prepend": "", + "append": "" + }, + { + "key": "field_62a9e9ab35331", + "label": "X", + "name": "x", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 50, + "min": "", + "max": "", + "step": "", + "prepend": "", + "append": "%" + }, + { + "key": "field_62a9e9ab35332", + "label": "Y", + "name": "y", + "type": "range", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": 50, + "min": "", + "max": "", + "step": "", + "prepend": "", + "append": "%" + } + ] + }, + { + "key": "field_6262e26be0673", + "label": "Overlay End", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + }, + { + "key": "field_6262dfbb94504", + "label": "Theme", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_6261c14931371", + "label": "Is Dark", + "name": "is_dark", + "type": "true_false", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "message": "", + "default_value": 0, + "ui": 0, + "ui_on_text": "", + "ui_off_text": "" + }, + { + "key": "field_6262e2b1e0674", + "label": "Theme End", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + }, + { + "key": "field_6262eadf25dae", + "label": "Content", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 1, + "endpoint": 0 + }, + { + "key": "field_6262eb0025db0", + "label": "Content Width", + "name": "content_width", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "default": "Default", + "full": "Full Width" + }, + "default_value": "default", + "allow_null": 0, + "multiple": 0, + "ui": 0, + "return_format": "value", + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_6262eaeb25daf", + "label": "Content End", + "name": "", + "type": "accordion", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "open": 0, + "multi_expand": 0, + "endpoint": 1 + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/section" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1655311426 +} diff --git a/acf/group_645e51f721207.json b/acf/group_645e51f721207.json new file mode 100644 index 0000000..d3fb96c --- /dev/null +++ b/acf/group_645e51f721207.json @@ -0,0 +1,132 @@ +{ + "key": "group_645e51f721207", + "title": "Accordion Block", + "fields": [ + { + "key": "field_64639b159080f", + "label": "First Item Open?", + "name": "open", + "aria-label": "", + "type": "true_false", + "instructions": "Should the first accordion item be open on page load?", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "message": "", + "default_value": 0, + "ui": 0, + "ui_on_text": "", + "ui_off_text": "" + }, + { + "key": "field_67fabc2185ea0", + "label": "Item Group Name", + "name": "group_items", + "aria-label": "", + "type": "text", + "instructions": "Enables single expansion mode – closes previously open items when opening a new one.", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "allow_in_bindings": 0, + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_645e52e3e0ac2", + "label": "Accordion Items", + "name": "accordion_items", + "aria-label": "", + "type": "repeater", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "pagination": 0, + "min": 0, + "max": 0, + "collapsed": "", + "button_label": "Add Row", + "rows_per_page": 20, + "sub_fields": [ + { + "key": "field_645e51f7eadcb", + "label": "Title", + "name": "title", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "placeholder": "", + "prepend": "", + "append": "", + "parent_repeater": "field_645e52e3e0ac2" + }, + { + "key": "field_645e523feadcc", + "label": "Content", + "name": "content", + "aria-label": "", + "type": "wysiwyg", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "tabs": "all", + "toolbar": "full", + "media_upload": 1, + "delay": 0, + "parent_repeater": "field_645e52e3e0ac2" + } + ] + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/accordion" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1744493675 +} diff --git a/acf/group_645e7cf448e66.json b/acf/group_645e7cf448e66.json new file mode 100644 index 0000000..a15dbe9 --- /dev/null +++ b/acf/group_645e7cf448e66.json @@ -0,0 +1,389 @@ +{ + "key": "group_645e7cf448e66", + "title": "Media With Text Block", + "fields": [ + { + "key": "field_645e7cf4c6700", + "label": "Background Color", + "name": "background_color", + "aria-label": "", + "type": "color_picker", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "enable_opacity": 0, + "return_format": "string" + }, + { + "key": "field_645e7d22c6701", + "label": "Is Dark", + "name": "is_dark", + "aria-label": "", + "type": "true_false", + "instructions": "If the background is dark, check this so text will remain legible", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "message": "", + "default_value": 0, + "ui": 0, + "ui_on_text": "", + "ui_off_text": "" + }, + { + "key": "field_645e7df0c6702", + "label": "Media Type", + "name": "media_type", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "image": "Image", + "video": "Video" + }, + "default_value": false, + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "ui": 0, + "ajax": 0, + "placeholder": "" + }, + { + "key": "field_645e7e2cc6703", + "label": "Image", + "name": "image", + "aria-label": "", + "type": "image", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_645e7df0c6702", + "operator": "==", + "value": "image" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "", + "preview_size": "medium" + }, + { + "key": "field_645e7e60c6704", + "label": "Video", + "name": "video", + "aria-label": "", + "type": "oembed", + "instructions": "", + "required": 0, + "conditional_logic": [ + [ + { + "field": "field_645e7df0c6702", + "operator": "==", + "value": "video" + } + ] + ], + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "width": "", + "height": "" + }, + { + "key": "field_645e7f04c6705", + "label": "Media on Left", + "name": "media_on_left", + "aria-label": "", + "type": "true_false", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "message": "", + "default_value": 0, + "ui": 0, + "ui_on_text": "", + "ui_off_text": "" + }, + { + "key": "field_645e7f26c6706", + "label": "Heading", + "name": "heading", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_645e7f3dc6707", + "label": "Subheading", + "name": "subheading", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_645e7f49c6708", + "label": "Content", + "name": "content", + "aria-label": "", + "type": "wysiwyg", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "tabs": "all", + "toolbar": "full", + "media_upload": 1, + "delay": 0 + }, + { + "key": "field_645e7f85c6709", + "label": "Calls To Action", + "name": "calls_to_action", + "aria-label": "", + "type": "repeater", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "block", + "pagination": 0, + "min": 0, + "max": 0, + "collapsed": "", + "button_label": "Add Row", + "rows_per_page": 20, + "sub_fields": [ + { + "key": "field_645e7f93c670a", + "label": "Link", + "name": "link", + "aria-label": "", + "type": "link", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "parent_repeater": "field_645e7f85c6709" + }, + { + "key": "field_646500c05f6da", + "label": "Color", + "name": "color", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "primary": "Primary", + "secondary": "Secondary", + "white": "White", + "gray": "Gray" + }, + "default_value": "primary", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "ui": 0, + "ajax": 0, + "placeholder": "", + "parent_repeater": "field_645e7f85c6709" + }, + { + "key": "field_646501305f6db", + "label": "Variant", + "name": "variant", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "default": "Default", + "outline": "Outline" + }, + "default_value": "default", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "ui": 0, + "ajax": 0, + "placeholder": "", + "parent_repeater": "field_645e7f85c6709" + }, + { + "key": "field_646501565f6dc", + "label": "Size", + "name": "size", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "small": "Small", + "medium": "Medium", + "large": "Large" + }, + "default_value": "medium", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "ui": 0, + "ajax": 0, + "placeholder": "", + "parent_repeater": "field_645e7f85c6709" + }, + { + "key": "field_646501735f6dd", + "label": "Width", + "name": "width", + "aria-label": "", + "type": "select", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "choices": { + "auto": "Auto", + "small": "Small", + "wide": "Wide", + "full": "Full Width" + }, + "default_value": "auto", + "return_format": "value", + "multiple": 0, + "allow_null": 0, + "allow_in_bindings": 1, + "ui": 0, + "ajax": 0, + "placeholder": "", + "parent_repeater": "field_645e7f85c6709" + } + ] + } + ], + "location": [ + [ + { + "param": "block", + "operator": "==", + "value": "acf\/media-text" + } + ], + [ + { + "param": "block", + "operator": "==", + "value": "acf\/media-text-innerblocks" + } + ] + ], + "menu_order": 0, + "position": "normal", + "style": "default", + "label_placement": "top", + "instruction_placement": "label", + "hide_on_screen": "", + "active": true, + "description": "", + "show_in_rest": 0, + "modified": 1742680440 +} diff --git a/bin/.build.js b/bin/.build.js new file mode 100644 index 0000000..4af1d81 --- /dev/null +++ b/bin/.build.js @@ -0,0 +1,24 @@ +require("dotenv").config(); + +const fs = require("fs"); +const path = require("path"); +const distDir = path.resolve(`static/dist`); +const { tailwindToCSS } = require(`./.utils`); +const start = performance.now(); + +// Tailwind to CSS +try { + // Ensure the output directory exists + if (!fs.existsSync(distDir)) { + fs.mkdirSync(distDir, { recursive: true }); + } + + // Compile Tailwind + tailwindToCSS(); + + const end = performance.now(); + const runtime = (end - start).toFixed(3); + console.log(`Production build successfully run in ${runtime}ms`); +} catch (error) { + console.error("Error processing CSS files:", error); +} diff --git a/bin/.utils.js b/bin/.utils.js new file mode 100644 index 0000000..9f3b807 --- /dev/null +++ b/bin/.utils.js @@ -0,0 +1,25 @@ +/** + * Utility functions shared between builds + */ + +const fs = require("fs"); +const path = require("path"); +const distDir = path.resolve(`static/dist`); +const debounce = require("lodash.debounce"); + +require("dotenv").config(); + +// Theme root as working directory +const cwd = path.resolve(".."); + +// Compile Tailwind +module.exports.tailwindToCSS = debounce(() => { + try { + require("child_process").execSync( + `npx @tailwindcss/cli -i styles/theme.css -o static/dist/theme.css`, + { stdio: "inherit" } + ); + } catch (error) { + console.log(`Error compiling Tailwind to CSS:`, error); + } +}, 50); diff --git a/bin/.watch.js b/bin/.watch.js new file mode 100644 index 0000000..5aaafd9 --- /dev/null +++ b/bin/.watch.js @@ -0,0 +1,48 @@ +require("dotenv").config(); + +const fs = require("fs"); +const path = require("path"); +const browserSync = require("browser-sync").create(); +const { tailwindToCSS } = require(`./.utils`); + +// Theme root as working directory +const cwd = path.resolve("../"); + +// Initialize BrowserSync +browserSync.init({ + proxy: process.env.LOCALHOST_URL, + port: process.env.BROWSERSYNC_PORT, + cors: true, + cwd: cwd, + logLevel: `warn`, + minify: false, + open: false, + ui: false, + ghostMode: false, + reloadOnRestart: true, + notify: false, + watch: true, +}); + +// Reload JS during development +browserSync.watch(`static/js/*.js`, (event, file) => { + if (event !== "change") return; + + const start = performance.now(); + try { + browserSync.stream(); + const end = performance.now(); + const runtime = (end - start).toFixed(3); + console.log(`JS re-injected successfully in ${runtime}ms`); + } catch (error) { + console.log("Error compiling JS:", error); + } +}); + +// Compile tailwind to css and reload on changes +browserSync.watch(["styles/**/*.css", "**/*.php"], (event, file) => { + if (event !== "change") return; + + tailwindToCSS(); + browserSync.reload(); +}); diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..8917e77 --- /dev/null +++ b/composer.json @@ -0,0 +1,32 @@ +{ + "name": "vincentdesigninc/basic-wp", + "description": "Minimal custom WordPress theme with modern templating, a lightning fast build process, and no tom foolery.", + "type": "project", + "license": "MIT", + "authors": [ + { + "name": "Keith Solomon", + "email": "keith@vincentdesign.ca" + } + ], + "require-dev": { + "squizlabs/php_codesniffer": "^3.12", + "wp-coding-standards/wpcs": "^3.1" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + }, + "scripts": { + "lint": [ + "phpcs --report-full=./phpcs-results.txt ." + ], + "fix": [ + "phpcbf --standard=WordPress" + ], + "phpcs-config": [ + "phpcs --config-show" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..b912502 --- /dev/null +++ b/composer.lock @@ -0,0 +1,417 @@ +{ + "_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": "2c997c41672ef92cfa6b4d04f9c9097a", + "packages": [], + "packages-dev": [ + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "phpcsstandards/phpcsextra", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", + "reference": "46d08eb86eec622b96c466adec3063adfed280dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/46d08eb86eec622b96c466adec3063adfed280dd", + "reference": "46d08eb86eec622b96c466adec3063adfed280dd", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.0.9", + "squizlabs/php_codesniffer": "^3.12.1" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "phpcsstandards/phpcsdevtools": "^1.2.1", + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors" + } + ], + "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", + "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSExtra" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-04-20T23:35:32+00:00" + }, + { + "name": "phpcsstandards/phpcsutils", + "version": "1.0.12", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/87b233b00daf83fb70f40c9a28692be017ea7c6c", + "reference": "87b233b00daf83fb70f40c9a28692be017ea7c6c", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.10.0 || 4.0.x-dev@dev" + }, + "require-dev": { + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPCSUtils/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" + } + ], + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "phpcs3", + "standards", + "static analysis", + "tokens", + "utility" + ], + "support": { + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-05-20T13:34:27+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.12.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-04-13T04:10:18+00:00" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "reference": "9333efcbff231f10dfd9c56bb7b65818b4733ca7", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "ext-libxml": "*", + "ext-tokenizer": "*", + "ext-xmlreader": "*", + "php": ">=5.4", + "phpcsstandards/phpcsextra": "^1.2.1", + "phpcsstandards/phpcsutils": "^1.0.10", + "squizlabs/php_codesniffer": "^3.9.0" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcompatibility/php-compatibility": "^9.0", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "suggest": { + "ext-iconv": "For improved results", + "ext-mbstring": "For improved results" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" + }, + "funding": [ + { + "url": "https://opencollective.com/php_codesniffer", + "type": "custom" + } + ], + "time": "2024-03-25T16:39:00+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": {}, + "prefer-stable": false, + "prefer-lowest": false, + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} diff --git a/content/basic-wp-test-content.xml b/content/basic-wp-test-content.xml new file mode 100644 index 0000000..c6d1357 --- /dev/null +++ b/content/basic-wp-test-content.xml @@ -0,0 +1,11646 @@ + + + + + + + + + + + + + + + + + + + + + + + Basic-WP + http://basic-wp.test + + Mon, 19 May 2025 17:23:14 +0000 + en-US + 1.2 + http://basic-wp.test + http://basic-wp.test + + 1 + + + 6 + + + + + + 4 + + + + + + 3 + + + + + + 7 + + + + + + 1 + + + + + + 5 + + + + + + 8 + + + + + 12 + + + + + 11 + + + + + 10 + + + + + 9 + + + + 21nav_menu + + 13nav_menu + + 2nav_menu + + + https://wordpress.org/?v=6.8.1 + + + <![CDATA[First Item Open?]]> + http://basic-wp.test/?post_type=acf-field&p=6 + Sun, 09 Mar 2025 19:14:24 +0000 + + http://basic-wp.test/?post_type=acf-field&p=6 + + + + 6 + + + + + + + + + 5 + 0 + + + 0 + + + <![CDATA[Accordion Items]]> + http://basic-wp.test/?post_type=acf-field&p=7 + Sun, 09 Mar 2025 19:14:24 +0000 + + http://basic-wp.test/?post_type=acf-field&p=7 + + + + 7 + + + + + + + + + 5 + 2 + + + 0 + + + <![CDATA[Title]]> + http://basic-wp.test/?post_type=acf-field&p=8 + Sun, 09 Mar 2025 19:14:24 +0000 + + http://basic-wp.test/?post_type=acf-field&p=8 + + + + 8 + + + + + + + + + 7 + 0 + + + 0 + + + <![CDATA[Content]]> + http://basic-wp.test/?post_type=acf-field&p=9 + Sun, 09 Mar 2025 19:14:24 +0000 + + http://basic-wp.test/?post_type=acf-field&p=9 + + + + 9 + + + + + + + + + 7 + 1 + + + 0 + + + <![CDATA[Contact Info]]> + http://basic-wp.test/?post_type=acf-field&p=11 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=11 + + + + 11 + + + + + + + + + 10 + 0 + + + 0 + + + <![CDATA[Email]]> + http://basic-wp.test/?post_type=acf-field&p=12 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=12 + + + + 12 + + + + + + + + + 11 + 0 + + + 0 + + + <![CDATA[Phone]]> + http://basic-wp.test/?post_type=acf-field&p=13 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=13 + + + + 13 + + + + + + + + + 11 + 1 + + + 0 + + + <![CDATA[Address]]> + http://basic-wp.test/?post_type=acf-field&p=14 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=14 + + + + 14 + + + + + + + + + 11 + 2 + + + 0 + + + <![CDATA[Hours]]> + http://basic-wp.test/?post_type=acf-field&p=15 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=15 + + + + 15 + + + + + + + + + 11 + 3 + + + 0 + + + <![CDATA[Social Media]]> + http://basic-wp.test/?post_type=acf-field&p=16 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=16 + + + + 16 + + + + + + + + + 10 + 1 + + + 0 + + + <![CDATA[Facebook]]> + http://basic-wp.test/?post_type=acf-field&p=17 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=17 + + + + 17 + + + + + + + + + 16 + 0 + + + 0 + + + <![CDATA[X/Twitter]]> + http://basic-wp.test/?post_type=acf-field&p=18 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=18 + + + + 18 + + + + + + + + + 16 + 1 + + + 0 + + + <![CDATA[Instagram]]> + http://basic-wp.test/?post_type=acf-field&p=19 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=19 + + + + 19 + + + + + + + + + 16 + 2 + + + 0 + + + <![CDATA[Pinterest]]> + http://basic-wp.test/?post_type=acf-field&p=20 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=20 + + + + 20 + + + + + + + + + 16 + 3 + + + 0 + + + <![CDATA[Youtube]]> + http://basic-wp.test/?post_type=acf-field&p=21 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=21 + + + + 21 + + + + + + + + + 16 + 4 + + + 0 + + + <![CDATA[LinkedIn]]> + http://basic-wp.test/?post_type=acf-field&p=22 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=22 + + + + 22 + + + + + + + + + 16 + 5 + + + 0 + + + <![CDATA[Header]]> + http://basic-wp.test/?post_type=acf-field&p=23 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=23 + + + + 23 + + + + + + + + + 10 + 2 + + + 0 + + + <![CDATA[Header Logo]]> + http://basic-wp.test/?post_type=acf-field&p=24 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=24 + + + + 24 + + + + + + + + + 23 + 0 + + + 0 + + + <![CDATA[Footer]]> + http://basic-wp.test/?post_type=acf-field&p=25 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=25 + + + + 25 + + + + + + + + + 10 + 3 + + + 0 + + + <![CDATA[Footer Logo]]> + http://basic-wp.test/?post_type=acf-field&p=26 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=26 + + + + 26 + + + + + + + + + 25 + 0 + + + 0 + + + <![CDATA[Footer Description]]> + http://basic-wp.test/?post_type=acf-field&p=27 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=27 + + + + 27 + + + + + + + + + 25 + 1 + + + 0 + + + <![CDATA[Copyright Text]]> + http://basic-wp.test/?post_type=acf-field&p=28 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=28 + + + + 28 + + + + + + + + + 25 + 2 + + + 0 + + + <![CDATA[Admin]]> + http://basic-wp.test/?post_type=acf-field&p=29 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=29 + + + + 29 + + + + + + + + + 10 + 4 + + + 0 + + + <![CDATA[404 Page]]> + http://basic-wp.test/?post_type=acf-field&p=30 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?post_type=acf-field&p=30 + + + + 30 + + + + + + + + + 29 + 0 + + + 0 + + + <![CDATA[Link]]> + http://basic-wp.test/?post_type=acf-field&p=144 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=144 + + + + 144 + + + + + + + + + 143 + 1 + + + 0 + + + <![CDATA[Color]]> + http://basic-wp.test/?post_type=acf-field&p=145 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=145 + + + + 145 + + + + + + + + + 143 + 2 + + + 0 + + + <![CDATA[Variant]]> + http://basic-wp.test/?post_type=acf-field&p=146 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=146 + + + + 146 + + + + + + + + + 143 + 3 + + + 0 + + + <![CDATA[Size]]> + http://basic-wp.test/?post_type=acf-field&p=147 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=147 + + + + 147 + + + + + + + + + 143 + 4 + + + 0 + + + <![CDATA[Width]]> + http://basic-wp.test/?post_type=acf-field&p=148 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=148 + + + + 148 + + + + + + + + + 143 + 5 + + + 0 + + + <![CDATA[Element]]> + http://basic-wp.test/?post_type=acf-field&p=150 + Sat, 15 Mar 2025 18:57:03 +0000 + + http://basic-wp.test/?post_type=acf-field&p=150 + + + + 150 + + + + + + + + + 143 + 0 + + + 0 + + + <![CDATA[Heading]]> + http://basic-wp.test/?post_type=acf-field&p=184 + Tue, 18 Mar 2025 21:20:00 +0000 + + http://basic-wp.test/?post_type=acf-field&p=184 + + + + 184 + + + + + + + + + 183 + 0 + + + 0 + + + <![CDATA[Intro]]> + http://basic-wp.test/?post_type=acf-field&p=185 + Tue, 18 Mar 2025 21:20:00 +0000 + + http://basic-wp.test/?post_type=acf-field&p=185 + + + + 185 + + + + + + + + + 183 + 1 + + + 0 + + + <![CDATA[Calls to Action]]> + http://basic-wp.test/?post_type=acf-field&p=186 + Tue, 18 Mar 2025 21:20:00 +0000 + + http://basic-wp.test/?post_type=acf-field&p=186 + + + + 186 + + + + + + + + + 183 + 2 + + + 0 + + + <![CDATA[Link]]> + http://basic-wp.test/?post_type=acf-field&p=187 + Tue, 18 Mar 2025 21:20:00 +0000 + + http://basic-wp.test/?post_type=acf-field&p=187 + + + + 187 + + + + + + + + + 186 + 0 + + + 0 + + + <![CDATA[Hero Style]]> + http://basic-wp.test/?post_type=acf-field&p=194 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=194 + + + + 194 + + + + + + + + + 193 + 0 + + + 0 + + + <![CDATA[Background Color]]> + http://basic-wp.test/?post_type=acf-field&p=195 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=195 + + + + 195 + + + + + + + + + 193 + 1 + + + 0 + + + <![CDATA[Is Dark?]]> + http://basic-wp.test/?post_type=acf-field&p=196 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=196 + + + + 196 + + + + + + + + + 193 + 2 + + + 0 + + + <![CDATA[Heading]]> + http://basic-wp.test/?post_type=acf-field&p=197 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=197 + + + + 197 + + + + + + + + + 193 + 3 + + + 0 + + + <![CDATA[Intro]]> + http://basic-wp.test/?post_type=acf-field&p=198 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=198 + + + + 198 + + + + + + + + + 193 + 4 + + + 0 + + + <![CDATA[Call to Actions]]> + http://basic-wp.test/?post_type=acf-field&p=199 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=199 + + + + 199 + + + + + + + + + 193 + 5 + + + 0 + + + <![CDATA[Link]]> + http://basic-wp.test/?post_type=acf-field&p=200 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?post_type=acf-field&p=200 + + + + 200 + + + + + + + + + 199 + 0 + + + 0 + + + <![CDATA[Background Color]]> + http://basic-wp.test/?post_type=acf-field&p=212 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=212 + + + + 212 + + + + + + + + + 211 + 0 + + + 0 + + + <![CDATA[Is Dark]]> + http://basic-wp.test/?post_type=acf-field&p=213 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=213 + + + + 213 + + + + + + + + + 211 + 1 + + + 0 + + + <![CDATA[Media Type]]> + http://basic-wp.test/?post_type=acf-field&p=214 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=214 + + + + 214 + + + + + + + + + 211 + 2 + + + 0 + + + <![CDATA[Image]]> + http://basic-wp.test/?post_type=acf-field&p=215 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=215 + + + + 215 + + + + + + + + + 211 + 3 + + + 0 + + + <![CDATA[Video]]> + http://basic-wp.test/?post_type=acf-field&p=216 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=216 + + + + 216 + + + + + + + + + 211 + 4 + + + 0 + + + <![CDATA[Media on Left]]> + http://basic-wp.test/?post_type=acf-field&p=217 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=217 + + + + 217 + + + + + + + + + 211 + 5 + + + 0 + + + <![CDATA[Heading]]> + http://basic-wp.test/?post_type=acf-field&p=218 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=218 + + + + 218 + + + + + + + + + 211 + 6 + + + 0 + + + <![CDATA[Subheading]]> + http://basic-wp.test/?post_type=acf-field&p=219 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=219 + + + + 219 + + + + + + + + + 211 + 7 + + + 0 + + + <![CDATA[Content]]> + http://basic-wp.test/?post_type=acf-field&p=220 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=220 + + + + 220 + + + + + + + + + 211 + 8 + + + 0 + + + <![CDATA[Calls To Action]]> + http://basic-wp.test/?post_type=acf-field&p=221 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=221 + + + + 221 + + + + + + + + + 211 + 9 + + + 0 + + + <![CDATA[Link]]> + http://basic-wp.test/?post_type=acf-field&p=222 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=222 + + + + 222 + + + + + + + + + 221 + 0 + + + 0 + + + <![CDATA[Color]]> + http://basic-wp.test/?post_type=acf-field&p=223 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=223 + + + + 223 + + + + + + + + + 221 + 1 + + + 0 + + + <![CDATA[Variant]]> + http://basic-wp.test/?post_type=acf-field&p=224 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=224 + + + + 224 + + + + + + + + + 221 + 2 + + + 0 + + + <![CDATA[Size]]> + http://basic-wp.test/?post_type=acf-field&p=225 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=225 + + + + 225 + + + + + + + + + 221 + 3 + + + 0 + + + <![CDATA[Width]]> + http://basic-wp.test/?post_type=acf-field&p=226 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?post_type=acf-field&p=226 + + + + 226 + + + + + + + + + 221 + 4 + + + 0 + + + <![CDATA[Grid Settings]]> + http://basic-wp.test/?post_type=acf-field&p=235 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=235 + + + + 235 + + + + + + + + + 234 + 0 + + + 0 + + + <![CDATA[Columns]]> + http://basic-wp.test/?post_type=acf-field&p=236 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=236 + + + + 236 + + + + + + + + + 234 + 1 + + + 0 + + + <![CDATA[Columns (sm)]]> + http://basic-wp.test/?post_type=acf-field&p=237 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=237 + + + + 237 + + + + + + + + + 234 + 2 + + + 0 + + + <![CDATA[Columns (md)]]> + http://basic-wp.test/?post_type=acf-field&p=238 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=238 + + + + 238 + + + + + + + + + 234 + 3 + + + 0 + + + <![CDATA[Columns (lg)]]> + http://basic-wp.test/?post_type=acf-field&p=239 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=239 + + + + 239 + + + + + + + + + 234 + 4 + + + 0 + + + <![CDATA[Columns (xl)]]> + http://basic-wp.test/?post_type=acf-field&p=240 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=240 + + + + 240 + + + + + + + + + 234 + 5 + + + 0 + + + <![CDATA[Columns (2xl)]]> + http://basic-wp.test/?post_type=acf-field&p=241 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=241 + + + + 241 + + + + + + + + + 234 + 6 + + + 0 + + + <![CDATA[Breakpoints]]> + http://basic-wp.test/?post_type=acf-field&p=242 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=242 + + + + 242 + + + + + + + + + 234 + 7 + + + 0 + + + <![CDATA[Gap X]]> + http://basic-wp.test/?post_type=acf-field&p=243 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=243 + + + + 243 + + + + + + + + + 234 + 8 + + + 0 + + + <![CDATA[Gap Y]]> + http://basic-wp.test/?post_type=acf-field&p=244 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=244 + + + + 244 + + + + + + + + + 234 + 9 + + + 0 + + + <![CDATA[Grid Settings End]]> + http://basic-wp.test/?post_type=acf-field&p=245 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=245 + + + + 245 + + + + + + + + + 234 + 10 + + + 0 + + + <![CDATA[Col Span]]> + http://basic-wp.test/?post_type=acf-field&p=250 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=250 + + + + 250 + + + + + + + + + 249 + 0 + + + 0 + + + <![CDATA[Default]]> + http://basic-wp.test/?post_type=acf-field&p=251 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=251 + + + + 251 + + + + + + + + + 249 + 1 + + + 0 + + + <![CDATA[(sm)]]> + http://basic-wp.test/?post_type=acf-field&p=252 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=252 + + + + 252 + + + + + + + + + 249 + 2 + + + 0 + + + <![CDATA[(md)]]> + http://basic-wp.test/?post_type=acf-field&p=253 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=253 + + + + 253 + + + + + + + + + 249 + 3 + + + 0 + + + <![CDATA[(lg)]]> + http://basic-wp.test/?post_type=acf-field&p=254 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=254 + + + + 254 + + + + + + + + + 249 + 4 + + + 0 + + + <![CDATA[(xl)]]> + http://basic-wp.test/?post_type=acf-field&p=255 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=255 + + + + 255 + + + + + + + + + 249 + 5 + + + 0 + + + <![CDATA[(2xl)]]> + http://basic-wp.test/?post_type=acf-field&p=256 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=256 + + + + 256 + + + + + + + + + 249 + 6 + + + 0 + + + <![CDATA[Breakpoints]]> + http://basic-wp.test/?post_type=acf-field&p=257 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=257 + + + + 257 + + + + + + + + + 249 + 7 + + + 0 + + + <![CDATA[Col Span End]]> + http://basic-wp.test/?post_type=acf-field&p=258 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?post_type=acf-field&p=258 + + + + 258 + + + + + + + + + 249 + 8 + + + 0 + + + <![CDATA[Background]]> + http://basic-wp.test/?post_type=acf-field&p=292 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=292 + + + + 292 + + + + + + + + + 291 + 0 + + + 0 + + + <![CDATA[Background Color]]> + http://basic-wp.test/?post_type=acf-field&p=293 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=293 + + + + 293 + + + + + + + + + 291 + 1 + + + 0 + + + <![CDATA[Background Image]]> + http://basic-wp.test/?post_type=acf-field&p=294 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=294 + + + + 294 + + + + + + + + + 291 + 2 + + + 0 + + + <![CDATA[Background Position]]> + http://basic-wp.test/?post_type=acf-field&p=295 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=295 + + + + 295 + + + + + + + + + 291 + 3 + + + 0 + + + <![CDATA[Size]]> + http://basic-wp.test/?post_type=acf-field&p=296 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=296 + + + + 296 + + + + + + + + + 295 + 0 + + + 0 + + + <![CDATA[Scale]]> + http://basic-wp.test/?post_type=acf-field&p=297 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=297 + + + + 297 + + + + + + + + + 295 + 1 + + + 0 + + + <![CDATA[X]]> + http://basic-wp.test/?post_type=acf-field&p=298 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=298 + + + + 298 + + + + + + + + + 295 + 2 + + + 0 + + + <![CDATA[Y]]> + http://basic-wp.test/?post_type=acf-field&p=299 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=299 + + + + 299 + + + + + + + + + 295 + 3 + + + 0 + + + <![CDATA[Background End]]> + http://basic-wp.test/?post_type=acf-field&p=300 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=300 + + + + 300 + + + + + + + + + 291 + 4 + + + 0 + + + <![CDATA[Overlay]]> + http://basic-wp.test/?post_type=acf-field&p=301 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=301 + + + + 301 + + + + + + + + + 291 + 5 + + + 0 + + + <![CDATA[Overlay Color]]> + http://basic-wp.test/?post_type=acf-field&p=302 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=302 + + + + 302 + + + + + + + + + 291 + 6 + + + 0 + + + <![CDATA[Overlay Image]]> + http://basic-wp.test/?post_type=acf-field&p=303 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=303 + + + + 303 + + + + + + + + + 291 + 7 + + + 0 + + + <![CDATA[Overlay Opacity]]> + http://basic-wp.test/?post_type=acf-field&p=304 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=304 + + + + 304 + + + + + + + + + 291 + 8 + + + 0 + + + <![CDATA[Overlay Position]]> + http://basic-wp.test/?post_type=acf-field&p=305 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=305 + + + + 305 + + + + + + + + + 291 + 9 + + + 0 + + + <![CDATA[Size]]> + http://basic-wp.test/?post_type=acf-field&p=306 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=306 + + + + 306 + + + + + + + + + 305 + 0 + + + 0 + + + <![CDATA[Scale]]> + http://basic-wp.test/?post_type=acf-field&p=307 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=307 + + + + 307 + + + + + + + + + 305 + 1 + + + 0 + + + <![CDATA[X]]> + http://basic-wp.test/?post_type=acf-field&p=308 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=308 + + + + 308 + + + + + + + + + 305 + 2 + + + 0 + + + <![CDATA[Y]]> + http://basic-wp.test/?post_type=acf-field&p=309 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=309 + + + + 309 + + + + + + + + + 305 + 3 + + + 0 + + + <![CDATA[Overlay End]]> + http://basic-wp.test/?post_type=acf-field&p=310 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=310 + + + + 310 + + + + + + + + + 291 + 10 + + + 0 + + + <![CDATA[Theme]]> + http://basic-wp.test/?post_type=acf-field&p=311 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=311 + + + + 311 + + + + + + + + + 291 + 11 + + + 0 + + + <![CDATA[Is Dark]]> + http://basic-wp.test/?post_type=acf-field&p=312 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=312 + + + + 312 + + + + + + + + + 291 + 12 + + + 0 + + + <![CDATA[Theme End]]> + http://basic-wp.test/?post_type=acf-field&p=313 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=313 + + + + 313 + + + + + + + + + 291 + 13 + + + 0 + + + <![CDATA[Content]]> + http://basic-wp.test/?post_type=acf-field&p=314 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=314 + + + + 314 + + + + + + + + + 291 + 14 + + + 0 + + + <![CDATA[Content Width]]> + http://basic-wp.test/?post_type=acf-field&p=315 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=315 + + + + 315 + + + + + + + + + 291 + 15 + + + 0 + + + <![CDATA[Accordion Block]]> + http://basic-wp.test/?post_type=acf-field-group&p=5 + Sun, 09 Mar 2025 19:14:24 +0000 + + http://basic-wp.test/?p=5 + + + + 5 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[Global Fields]]> + http://basic-wp.test/?post_type=acf-field-group&p=10 + Sun, 09 Mar 2025 19:14:30 +0000 + + http://basic-wp.test/?p=10 + + + + 10 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[wp_dummy_content_generator_46.jpg]]> + http://basic-wp.test/est-facilis-rem-at-ex-velit-temporibus/wp_dummy_content_generator_46-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/est-facilis-rem-at-ex-velit-temporibus/wp_dummy_content_generator_46-jpg/ + + + + 47 + + + + + + + + + 46 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_48.jpg]]> + http://basic-wp.test/et-dolores-magnam-repudiandae-officia/wp_dummy_content_generator_48-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/et-dolores-magnam-repudiandae-officia/wp_dummy_content_generator_48-jpg/ + + + + 49 + + + + + + + + + 48 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_50.jpg]]> + http://basic-wp.test/quo-sint-eveniet-debitis-aut/wp_dummy_content_generator_50-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/quo-sint-eveniet-debitis-aut/wp_dummy_content_generator_50-jpg/ + + + + 51 + + + + + + + + + 50 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_52.jpg]]> + http://basic-wp.test/ut-eaque-est-quibusdam-quaerat-non/wp_dummy_content_generator_52-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/ut-eaque-est-quibusdam-quaerat-non/wp_dummy_content_generator_52-jpg/ + + + + 53 + + + + + + + + + 52 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_54.jpg]]> + http://basic-wp.test/quia-quo-sit-voluptates-excepturi/wp_dummy_content_generator_54-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/quia-quo-sit-voluptates-excepturi/wp_dummy_content_generator_54-jpg/ + + + + 55 + + + + + + + + + 54 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_56.jpg]]> + http://basic-wp.test/dolorem-vitae-voluptas-architecto/wp_dummy_content_generator_56-jpg/ + Sat, 15 Mar 2025 15:28:41 +0000 + + http://basic-wp.test/2025/03/15/dolorem-vitae-voluptas-architecto/wp_dummy_content_generator_56-jpg/ + + + + 57 + + + + + + + + + 56 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_58.jpg]]> + http://basic-wp.test/nulla-provident-aut-dolores-velit-fuga/wp_dummy_content_generator_58-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/nulla-provident-aut-dolores-velit-fuga/wp_dummy_content_generator_58-jpg/ + + + + 59 + + + + + + + + + 58 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_60.jpg]]> + http://basic-wp.test/dignissimos-est-sint-et-esse-ut/wp_dummy_content_generator_60-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/dignissimos-est-sint-et-esse-ut/wp_dummy_content_generator_60-jpg/ + + + + 61 + + + + + + + + + 60 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[Button]]> + http://basic-wp.test/?post_type=acf-field-group&p=143 + Sat, 15 Mar 2025 18:30:57 +0000 + + http://basic-wp.test/?p=143 + + + + 143 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[Homepage Hero]]> + http://basic-wp.test/?post_type=acf-field-group&p=183 + Tue, 18 Mar 2025 21:20:00 +0000 + + http://basic-wp.test/?p=183 + + + + 183 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[Page Heading]]> + http://basic-wp.test/?post_type=acf-field-group&p=193 + Thu, 20 Mar 2025 16:04:22 +0000 + + http://basic-wp.test/?p=193 + + + + 193 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + <![CDATA[Media With Text Block]]> + http://basic-wp.test/?post_type=acf-field-group&p=211 + Sat, 22 Mar 2025 18:26:01 +0000 + + http://basic-wp.test/?p=211 + + + + 211 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[Grid]]> + http://basic-wp.test/?post_type=acf-field-group&p=234 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?p=234 + + + + 234 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + <![CDATA[Grid Cell]]> + http://basic-wp.test/?post_type=acf-field-group&p=249 + Sat, 22 Mar 2025 19:15:31 +0000 + + http://basic-wp.test/?p=249 + + + + 249 + + + + + + + + + 0 + 0 + + + 0 + + + <![CDATA[Section]]> + http://basic-wp.test/?post_type=acf-field-group&p=291 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?p=291 + + + + 291 + + + + + + + + + 0 + 0 + + + 0 + + + <![CDATA[Content End]]> + http://basic-wp.test/?post_type=acf-field&p=316 + Sat, 22 Mar 2025 23:14:57 +0000 + + http://basic-wp.test/?post_type=acf-field&p=316 + + + + 316 + + + + + + + + + 291 + 16 + + + 0 + + + <![CDATA[Item Group Name]]> + http://basic-wp.test/?post_type=acf-field&p=447 + Sat, 12 Apr 2025 19:18:26 +0000 + + http://basic-wp.test/?post_type=acf-field&p=447 + + + + 447 + + + + + + + + + 5 + 1 + + + 0 + + + <![CDATA[Default Post Image]]> + http://basic-wp.test/?post_type=acf-field&p=522 + Sun, 04 May 2025 21:06:37 +0000 + + http://basic-wp.test/?post_type=acf-field&p=522 + + + + 522 + + + + + + + + + 29 + 1 + + + 0 + + + <![CDATA[wp_dummy_content_generator_62.jpg]]> + http://basic-wp.test/praesentium-quia-qui-sequi-dicta/wp_dummy_content_generator_62-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/praesentium-quia-qui-sequi-dicta/wp_dummy_content_generator_62-jpg/ + + + + 63 + + + + + + + + + 62 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_64.jpg]]> + http://basic-wp.test/et-dolor-dolor-voluptas-temporibus/wp_dummy_content_generator_64-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/et-dolor-dolor-voluptas-temporibus/wp_dummy_content_generator_64-jpg/ + + + + 65 + + + + + + + + + 64 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_66.jpg]]> + http://basic-wp.test/laboriosam-quae-enim-suscipit-a/wp_dummy_content_generator_66-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/laboriosam-quae-enim-suscipit-a/wp_dummy_content_generator_66-jpg/ + + + + 67 + + + + + + + + + 66 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_68.jpg]]> + http://basic-wp.test/ab-corrupti-libero-molestiae-et/wp_dummy_content_generator_68-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/ab-corrupti-libero-molestiae-et/wp_dummy_content_generator_68-jpg/ + + + + 69 + + + + + + + + + 68 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_70.jpg]]> + http://basic-wp.test/magnam-atque-et-sed-itaque-aut/wp_dummy_content_generator_70-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/magnam-atque-et-sed-itaque-aut/wp_dummy_content_generator_70-jpg/ + + + + 71 + + + + + + + + + 70 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_72.jpg]]> + http://basic-wp.test/veniam-aut-qui-atque-eum/wp_dummy_content_generator_72-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/veniam-aut-qui-atque-eum/wp_dummy_content_generator_72-jpg/ + + + + 73 + + + + + + + + + 72 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_74.jpg]]> + http://basic-wp.test/nam-quo-rem-enim-incidunt/wp_dummy_content_generator_74-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/nam-quo-rem-enim-incidunt/wp_dummy_content_generator_74-jpg/ + + + + 75 + + + + + + + + + 74 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_76.jpg]]> + http://basic-wp.test/ut-ratione-asperiores-autem/wp_dummy_content_generator_76-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/ut-ratione-asperiores-autem/wp_dummy_content_generator_76-jpg/ + + + + 77 + + + + + + + + + 76 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_78.jpg]]> + http://basic-wp.test/non-porro-qui-sed-quam-soluta-hic/wp_dummy_content_generator_78-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/non-porro-qui-sed-quam-soluta-hic/wp_dummy_content_generator_78-jpg/ + + + + 79 + + + + + + + + + 78 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_80.jpg]]> + http://basic-wp.test/quidem-quis-nihil-numquam-ea-facere/wp_dummy_content_generator_80-jpg/ + Sat, 15 Mar 2025 15:28:42 +0000 + + http://basic-wp.test/2025/03/15/quidem-quis-nihil-numquam-ea-facere/wp_dummy_content_generator_80-jpg/ + + + + 81 + + + + + + + + + 80 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_82.jpg]]> + http://basic-wp.test/rerum-eligendi-sint-vero-quia/wp_dummy_content_generator_82-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/rerum-eligendi-sint-vero-quia/wp_dummy_content_generator_82-jpg/ + + + + 83 + + + + + + + + + 82 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_84.jpg]]> + http://basic-wp.test/vel-consectetur-vero-laudantium/wp_dummy_content_generator_84-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/vel-consectetur-vero-laudantium/wp_dummy_content_generator_84-jpg/ + + + + 85 + + + + + + + + + 84 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_86.jpg]]> + http://basic-wp.test/adipisci-natus-fugit-illum-nemo/wp_dummy_content_generator_86-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/adipisci-natus-fugit-illum-nemo/wp_dummy_content_generator_86-jpg/ + + + + 87 + + + + + + + + + 86 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_88.jpg]]> + http://basic-wp.test/ipsum-quos-non-nihil-ipsa-fugit/wp_dummy_content_generator_88-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/ipsum-quos-non-nihil-ipsa-fugit/wp_dummy_content_generator_88-jpg/ + + + + 89 + + + + + + + + + 88 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_90.jpg]]> + http://basic-wp.test/totam-nam-molestiae-quo-et-hic/wp_dummy_content_generator_90-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/totam-nam-molestiae-quo-et-hic/wp_dummy_content_generator_90-jpg/ + + + + 91 + + + + + + + + + 90 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_92.jpg]]> + http://basic-wp.test/aut-quia-quia-qui-excepturi-itaque/wp_dummy_content_generator_92-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/aut-quia-quia-qui-excepturi-itaque/wp_dummy_content_generator_92-jpg/ + + + + 93 + + + + + + + + + 92 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_94.jpg]]> + http://basic-wp.test/voluptatum-consequatur-quae-dolor-cum/wp_dummy_content_generator_94-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/voluptatum-consequatur-quae-dolor-cum/wp_dummy_content_generator_94-jpg/ + + + + 95 + + + + + + + + + 94 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_96.jpg]]> + http://basic-wp.test/eveniet-eaque-veritatis-aut-voluptas/wp_dummy_content_generator_96-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/eveniet-eaque-veritatis-aut-voluptas/wp_dummy_content_generator_96-jpg/ + + + + 97 + + + + + + + + + 96 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_98.jpg]]> + http://basic-wp.test/voluptate-at-aut-minima-alias/wp_dummy_content_generator_98-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/voluptate-at-aut-minima-alias/wp_dummy_content_generator_98-jpg/ + + + + 99 + + + + + + + + + 98 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_100.jpg]]> + http://basic-wp.test/quasi-consequatur-ut-ut-aut/wp_dummy_content_generator_100-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/quasi-consequatur-ut-ut-aut/wp_dummy_content_generator_100-jpg/ + + + + 101 + + + + + + + + + 100 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_102.jpg]]> + http://basic-wp.test/ratione-facilis-expedita-nostrum/wp_dummy_content_generator_102-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/ratione-facilis-expedita-nostrum/wp_dummy_content_generator_102-jpg/ + + + + 103 + + + + + + + + + 102 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_104.jpg]]> + http://basic-wp.test/dolore-quod-minus-veniam-dolore/wp_dummy_content_generator_104-jpg/ + Sat, 15 Mar 2025 15:28:43 +0000 + + http://basic-wp.test/2025/03/15/dolore-quod-minus-veniam-dolore/wp_dummy_content_generator_104-jpg/ + + + + 105 + + + + + + + + + 104 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_106.jpg]]> + http://basic-wp.test/eos-nihil-facilis-aut-esse/wp_dummy_content_generator_106-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/eos-nihil-facilis-aut-esse/wp_dummy_content_generator_106-jpg/ + + + + 107 + + + + + + + + + 106 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_108.jpg]]> + http://basic-wp.test/minus-qui-aspernatur-ut-saepe-sapiente/wp_dummy_content_generator_108-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/minus-qui-aspernatur-ut-saepe-sapiente/wp_dummy_content_generator_108-jpg/ + + + + 109 + + + + + + + + + 108 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_110.jpg]]> + http://basic-wp.test/dolorem-nam-nesciunt-quos/wp_dummy_content_generator_110-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/dolorem-nam-nesciunt-quos/wp_dummy_content_generator_110-jpg/ + + + + 111 + + + + + + + + + 110 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_112.jpg]]> + http://basic-wp.test/hic-sed-ex-vel-doloribus-sapiente/wp_dummy_content_generator_112-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/hic-sed-ex-vel-doloribus-sapiente/wp_dummy_content_generator_112-jpg/ + + + + 113 + + + + + + + + + 112 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_114.jpg]]> + http://basic-wp.test/doloremque-omnis-nobis-vel-rem-ut-vero/wp_dummy_content_generator_114-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/doloremque-omnis-nobis-vel-rem-ut-vero/wp_dummy_content_generator_114-jpg/ + + + + 115 + + + + + + + + + 114 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_116.jpg]]> + http://basic-wp.test/mollitia-quo-aut-dolor/wp_dummy_content_generator_116-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/mollitia-quo-aut-dolor/wp_dummy_content_generator_116-jpg/ + + + + 117 + + + + + + + + + 116 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_118.jpg]]> + http://basic-wp.test/modi-est-nobis-modi-quasi-doloremque/wp_dummy_content_generator_118-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/modi-est-nobis-modi-quasi-doloremque/wp_dummy_content_generator_118-jpg/ + + + + 119 + + + + + + + + + 118 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_120.jpg]]> + http://basic-wp.test/excepturi-dolore-modi-eius-doloribus/wp_dummy_content_generator_120-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/excepturi-dolore-modi-eius-doloribus/wp_dummy_content_generator_120-jpg/ + + + + 121 + + + + + + + + + 120 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_122.jpg]]> + http://basic-wp.test/fugit-eum-labore-cupiditate/wp_dummy_content_generator_122-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/fugit-eum-labore-cupiditate/wp_dummy_content_generator_122-jpg/ + + + + 123 + + + + + + + + + 122 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_124.jpg]]> + http://basic-wp.test/aut-eos-cumque-sit-beatae/wp_dummy_content_generator_124-jpg/ + Sat, 15 Mar 2025 15:28:44 +0000 + + http://basic-wp.test/2025/03/15/aut-eos-cumque-sit-beatae/wp_dummy_content_generator_124-jpg/ + + + + 125 + + + + + + + + + 124 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[aurora]]> + http://basic-wp.test/blocks/media-text-block/aurora/ + Sat, 22 Mar 2025 18:19:58 +0000 + + http://basic-wp.test/wp-content/uploads/2025/03/aurora.jpg + + + + 207 + + + + + + + + + 201 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[logo]]> + http://basic-wp.test/logo/ + Sat, 22 Mar 2025 21:41:56 +0000 + + http://basic-wp.test/wp-content/uploads/2025/03/logo.svg + + + + 274 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_335.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_335-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/deleniti-velit-odit-molestiae-qui/wp_dummy_content_generator_335-jpg/ + + + + 336 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_337.jpg]]> + http://basic-wp.test/resources/earum-quis-quasi-qui-in/wp_dummy_content_generator_337-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/earum-quis-quasi-qui-in/wp_dummy_content_generator_337-jpg/ + + + + 338 + + + + + + + + + 337 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_339.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_339-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/ea-nulla-pariatur-sapiente-et-sequi/wp_dummy_content_generator_339-jpg/ + + + + 340 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_341.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_341-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/animi-eum-et-ut-odio-provident/wp_dummy_content_generator_341-jpg/ + + + + 342 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_343.jpg]]> + http://basic-wp.test/resources/consequatur-omnis-quo-tempora-amet/wp_dummy_content_generator_343-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/consequatur-omnis-quo-tempora-amet/wp_dummy_content_generator_343-jpg/ + + + + 344 + + + + + + + + + 343 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_345.jpg]]> + http://basic-wp.test/resources/at-optio-eos-quibusdam/wp_dummy_content_generator_345-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/at-optio-eos-quibusdam/wp_dummy_content_generator_345-jpg/ + + + + 346 + + + + + + + + + 345 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_347.jpg]]> + http://basic-wp.test/resources/et-nihil-ipsam-et-magnam/wp_dummy_content_generator_347-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/et-nihil-ipsam-et-magnam/wp_dummy_content_generator_347-jpg/ + + + + 348 + + + + + + + + + 347 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_349.jpg]]> + http://basic-wp.test/resources/beatae-et-qui-quia-laudantium/wp_dummy_content_generator_349-jpg/ + Sat, 29 Mar 2025 18:00:20 +0000 + + http://basic-wp.test/resources/beatae-et-qui-quia-laudantium/wp_dummy_content_generator_349-jpg/ + + + + 350 + + + + + + + + + 349 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_351.jpg]]> + http://basic-wp.test/resources/dicta-cum-repellendus-qui-qui-ut/wp_dummy_content_generator_351-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/dicta-cum-repellendus-qui-qui-ut/wp_dummy_content_generator_351-jpg/ + + + + 352 + + + + + + + + + 351 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_353.jpg]]> + http://basic-wp.test/resources/architecto-quam-molestias-et/wp_dummy_content_generator_353-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/architecto-quam-molestias-et/wp_dummy_content_generator_353-jpg/ + + + + 354 + + + + + + + + + 353 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_355.jpg]]> + http://basic-wp.test/resources/autem-esse-repellat-quasi-et/wp_dummy_content_generator_355-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/autem-esse-repellat-quasi-et/wp_dummy_content_generator_355-jpg/ + + + + 356 + + + + + + + + + 355 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_357.jpg]]> + http://basic-wp.test/resources/aut-soluta-totam-fuga-dolores/wp_dummy_content_generator_357-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/aut-soluta-totam-fuga-dolores/wp_dummy_content_generator_357-jpg/ + + + + 358 + + + + + + + + + 357 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_359.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_359-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/laborum-dolores-qui-praesentium-at/wp_dummy_content_generator_359-jpg/ + + + + 360 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_361.jpg]]> + http://basic-wp.test/resources/voluptatibus-quo-ipsum-dolor-omnis/wp_dummy_content_generator_361-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/voluptatibus-quo-ipsum-dolor-omnis/wp_dummy_content_generator_361-jpg/ + + + + 362 + + + + + + + + + 361 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_363.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_363-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/et-sit-rerum-asperiores/wp_dummy_content_generator_363-jpg/ + + + + 364 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_365.jpg]]> + http://basic-wp.test/resources/est-ipsa-tempore-veniam-officia-et-est/wp_dummy_content_generator_365-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/est-ipsa-tempore-veniam-officia-et-est/wp_dummy_content_generator_365-jpg/ + + + + 366 + + + + + + + + + 365 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_367.jpg]]> + http://basic-wp.test/resources/eius-deserunt-nemo-a/wp_dummy_content_generator_367-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/eius-deserunt-nemo-a/wp_dummy_content_generator_367-jpg/ + + + + 368 + + + + + + + + + 367 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_369.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_369-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/quo-distinctio-aut-ea-modi-voluptate/wp_dummy_content_generator_369-jpg/ + + + + 370 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_371.jpg]]> + http://basic-wp.test/resources/nemo-dolores-illum-quia-dolor/wp_dummy_content_generator_371-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/nemo-dolores-illum-quia-dolor/wp_dummy_content_generator_371-jpg/ + + + + 372 + + + + + + + + + 371 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_373.jpg]]> + http://basic-wp.test/resources/officia-necessitatibus-neque-enim/wp_dummy_content_generator_373-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/officia-necessitatibus-neque-enim/wp_dummy_content_generator_373-jpg/ + + + + 374 + + + + + + + + + 373 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_375.jpg]]> + http://basic-wp.test/resources/voluptas-id-non-voluptate-quod-aut/wp_dummy_content_generator_375-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/voluptas-id-non-voluptate-quod-aut/wp_dummy_content_generator_375-jpg/ + + + + 376 + + + + + + + + + 375 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_377.jpg]]> + http://basic-wp.test/resources/aut-nemo-sint-consequatur-molestiae/wp_dummy_content_generator_377-jpg/ + Sat, 29 Mar 2025 18:00:21 +0000 + + http://basic-wp.test/resources/aut-nemo-sint-consequatur-molestiae/wp_dummy_content_generator_377-jpg/ + + + + 378 + + + + + + + + + 377 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_379.jpg]]> + http://basic-wp.test/resources/voluptate-fugiat-nemo-nisi/wp_dummy_content_generator_379-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/voluptate-fugiat-nemo-nisi/wp_dummy_content_generator_379-jpg/ + + + + 380 + + + + + + + + + 379 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_381.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_381-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/et-sapiente-et-facere-temporibus-iusto/wp_dummy_content_generator_381-jpg/ + + + + 382 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_383.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_383-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/totam-sint-debitis-sit/wp_dummy_content_generator_383-jpg/ + + + + 384 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_385.jpg]]> + http://basic-wp.test/resources/et-repudiandae-maxime-qui-quas/wp_dummy_content_generator_385-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/et-repudiandae-maxime-qui-quas/wp_dummy_content_generator_385-jpg/ + + + + 386 + + + + + + + + + 385 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_387.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_387-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/cumque-aut-natus-et-ea-id-omnis-animi/wp_dummy_content_generator_387-jpg/ + + + + 388 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_389.jpg]]> + http://basic-wp.test/resources/eum-sint-expedita-doloremque/wp_dummy_content_generator_389-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/eum-sint-expedita-doloremque/wp_dummy_content_generator_389-jpg/ + + + + 390 + + + + + + + + + 389 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_391.jpg]]> + http://basic-wp.test/resources/eum-dolorem-in-qui/wp_dummy_content_generator_391-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/eum-dolorem-in-qui/wp_dummy_content_generator_391-jpg/ + + + + 392 + + + + + + + + + 391 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_393.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_393-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/quia-dignissimos-error-alias-qui-in/wp_dummy_content_generator_393-jpg/ + + + + 394 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_395.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_395-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/et-eveniet-alias-omnis-sed-deleniti-ut/wp_dummy_content_generator_395-jpg/ + + + + 396 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_397.jpg]]> + http://basic-wp.test/resources/id-enim-iusto-quis-est-dolorem/wp_dummy_content_generator_397-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/id-enim-iusto-quis-est-dolorem/wp_dummy_content_generator_397-jpg/ + + + + 398 + + + + + + + + + 397 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_399.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_399-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/aut-pariatur-fugiat-ducimus-expedita/wp_dummy_content_generator_399-jpg/ + + + + 400 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_401.jpg]]> + http://basic-wp.test/resources/blanditiis-est-voluptatem-quisquam-rem/wp_dummy_content_generator_401-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/blanditiis-est-voluptatem-quisquam-rem/wp_dummy_content_generator_401-jpg/ + + + + 402 + + + + + + + + + 401 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_403.jpg]]> + http://basic-wp.test/resources/saepe-aliquam-quaerat-corporis-quam/wp_dummy_content_generator_403-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/saepe-aliquam-quaerat-corporis-quam/wp_dummy_content_generator_403-jpg/ + + + + 404 + + + + + + + + + 403 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_405.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_405-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/quaerat-minima-nulla-delectus-nemo-qui/wp_dummy_content_generator_405-jpg/ + + + + 406 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_407.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_407-jpg/ + Sat, 29 Mar 2025 18:00:22 +0000 + + http://basic-wp.test/resources/rerum-ea-veniam-quaerat/wp_dummy_content_generator_407-jpg/ + + + + 408 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_409.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_409-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/ut-eos-hic-consequuntur/wp_dummy_content_generator_409-jpg/ + + + + 410 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_411.jpg]]> + http://basic-wp.test/resources/modi-et-in-eum-et-esse-quam/wp_dummy_content_generator_411-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/modi-et-in-eum-et-esse-quam/wp_dummy_content_generator_411-jpg/ + + + + 412 + + + + + + + + + 411 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_413.jpg]]> + http://basic-wp.test/resources/velit-deleniti-nam-autem-rem/wp_dummy_content_generator_413-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/velit-deleniti-nam-autem-rem/wp_dummy_content_generator_413-jpg/ + + + + 414 + + + + + + + + + 413 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_415.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_415-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/suscipit-rerum-qui-neque-vero/wp_dummy_content_generator_415-jpg/ + + + + 416 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_417.jpg]]> + http://basic-wp.test/resources/culpa-ea-blanditiis-ipsam/wp_dummy_content_generator_417-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/culpa-ea-blanditiis-ipsam/wp_dummy_content_generator_417-jpg/ + + + + 418 + + + + + + + + + 417 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_419.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_419-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/aut-qui-sit-vel/wp_dummy_content_generator_419-jpg/ + + + + 420 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_421.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_421-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/qui-nesciunt-et-dolorem-fugit-itaque/wp_dummy_content_generator_421-jpg/ + + + + 422 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_423.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_423-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/nostrum-dolorem-quasi-minima-et/wp_dummy_content_generator_423-jpg/ + + + + 424 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_425.jpg]]> + http://basic-wp.test/resources/sed-quia-nulla-autem-recusandae-unde/wp_dummy_content_generator_425-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/sed-quia-nulla-autem-recusandae-unde/wp_dummy_content_generator_425-jpg/ + + + + 426 + + + + + + + + + 425 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/31/ + Sun, 09 Mar 2025 19:15:39 +0000 + + http://basic-wp.test/?p=31 + + + + 31 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/35/ + Sun, 09 Mar 2025 19:18:00 +0000 + + http://basic-wp.test/?p=35 + + + + 35 + + + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/44/ + Sat, 15 Mar 2025 15:27:06 +0000 + + http://basic-wp.test/?p=44 + + + + 44 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/45/ + Sat, 15 Mar 2025 15:27:06 +0000 + + http://basic-wp.test/?p=45 + + + + 45 + + + + + + + + + 0 + 11 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/131/ + Sat, 15 Mar 2025 17:37:41 +0000 + + http://basic-wp.test/?p=131 + + + + 131 + + + + + + + + + 33 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/141/ + Sat, 15 Mar 2025 18:28:26 +0000 + + http://basic-wp.test/?p=141 + + + + 141 + + + + + + + + + 33 + 7 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/203/ + Sat, 22 Mar 2025 18:16:52 +0000 + + http://basic-wp.test/?p=203 + + + + 203 + + + + + + + + + 33 + 9 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/261/ + Sat, 22 Mar 2025 19:16:19 +0000 + + http://basic-wp.test/?p=261 + + + + 261 + + + + + + + + + 33 + 8 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/275/ + Sat, 22 Mar 2025 21:42:53 +0000 + + http://basic-wp.test/?p=275 + + + + 275 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/276/ + Sat, 22 Mar 2025 21:42:53 +0000 + + http://basic-wp.test/?p=276 + + + + 276 + + + + + + + + + 0 + 6 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/277/ + Sat, 22 Mar 2025 21:42:53 +0000 + + http://basic-wp.test/?p=277 + + + + 277 + + + + + + + + + 0 + 2 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/278/ + Sat, 22 Mar 2025 21:42:53 +0000 + + http://basic-wp.test/?p=278 + + + + 278 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/318/ + Sat, 22 Mar 2025 23:15:45 +0000 + + http://basic-wp.test/?p=318 + + + + 318 + + + + + + + + + 33 + 10 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_427.jpg]]> + http://basic-wp.test/resources/inventore-ad-pariatur-quia/wp_dummy_content_generator_427-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/inventore-ad-pariatur-quia/wp_dummy_content_generator_427-jpg/ + + + + 428 + + + + + + + + + 427 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_429.jpg]]> + http://basic-wp.test/resources/excepturi-quidem-a-magnam-quas/wp_dummy_content_generator_429-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/excepturi-quidem-a-magnam-quas/wp_dummy_content_generator_429-jpg/ + + + + 430 + + + + + + + + + 429 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_431.jpg]]> + http://basic-wp.test/wp_dummy_content_generator_431-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/sapiente-iure-omnis-voluptatem-ex/wp_dummy_content_generator_431-jpg/ + + + + 432 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[wp_dummy_content_generator_433.jpg]]> + http://basic-wp.test/resources/omnis-architecto-ut-aut-dicta/wp_dummy_content_generator_433-jpg/ + Sat, 29 Mar 2025 18:00:23 +0000 + + http://basic-wp.test/resources/omnis-architecto-ut-aut-dicta/wp_dummy_content_generator_433-jpg/ + + + + 434 + + + + + + + + + 433 + 0 + + + 0 + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/437/ + Sat, 29 Mar 2025 18:16:06 +0000 + + http://basic-wp.test/?p=437 + + + + 437 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/526/ + Sun, 04 May 2025 21:25:28 +0000 + + http://basic-wp.test/?p=526 + + + + 526 + + + + + + + + + 0 + 3 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/539/ + Sun, 18 May 2025 22:09:54 +0000 + + http://basic-wp.test/?p=539 + + + + 539 + + + + + + + + + 0 + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Hello world!]]> + http://basic-wp.test/hello-world/ + Sun, 09 Mar 2025 18:50:27 +0000 + + http://basic-wp.test/?p=1 + + +

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

+]]>
+ + 1 + + + + + + + + + 0 + 0 + + + 0 + + + 1 + + + https://wordpress.org/ + + + + Gravatar
.]]> + + + 0 + 0 + + + + <![CDATA[Sample Page]]> + http://basic-wp.test/sample-page/ + Sun, 09 Mar 2025 18:50:27 +0000 + + http://basic-wp.test/?page_id=2 + + +

This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

+ + + +
+

Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)

+
+ + + +

...or something like this:

+ + + +
+

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

+
+ + + +

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

+ + + +

Mus aliquam ut quis a tincidunt fermentum ac vestibulum pulvinar mauris cum a habitasse rutrum. Ullamcorper odio hac non pulvinar adipiscing leo dis bibendum litora et leo quis scelerisque praesent aptent ultrices pretium a varius vestibulum quam ullamcorper iaculis. A rutrum facilisi cum malesuada risus conubia semper suspendisse et eget accumsan parturient condimentum vitae nam lobortis. Pulvinar at magnis a class suspendisse erat ante lacus porta eget malesuada neque scelerisque netus fringilla erat. Fermentum auctor imperdiet justo condimentum a cum fermentum leo sapien sem lectus et fringilla suscipit lacus scelerisque parturient convallis vestibulum vel parturient parturient mauris senectus.

+ + + +

Curae platea tempus et dis adipiscing dignissim pharetra eu vestibulum neque non lacus sociosqu vestibulum luctus nisl blandit. Porttitor in aliquam duis etiam parturient ac id scelerisque tempus scelerisque a a praesent eu parturient vestibulum a senectus et natoque dolor auctor adipiscing est. Ad quisque quis curae bibendum ac consectetur nibh etiam ad a class vestibulum natoque mi viverra nisi nec praesent sed nibh. Imperdiet mus parturient fames magnis vivamus a orci parturient id diam parturient diam phasellus sed imperdiet a scelerisque.

+ + + +

Enim vel a tempor a parturient cum dignissim facilisi laoreet phasellus enim id ullamcorper dis suspendisse penatibus vestibulum mattis lacinia ridiculus nam quisque. Phasellus ultrices consequat ipsum facilisis nascetur condimentum suscipit vivamus proin varius erat natoque sodales arcu leo mi platea ut lobortis consectetur rutrum adipiscing hac a vel mus consectetur. Egestas ullamcorper mus a dis adipiscing sagittis fringilla nam netus ullamcorper scelerisque per netus imperdiet.

+]]>
+ + 2 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Blocks]]> + http://basic-wp.test/blocks/ + Sun, 09 Mar 2025 19:17:47 +0000 + + http://basic-wp.test/?page_id=33 + + ]]> + + 33 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Home]]> + http://basic-wp.test/ + Sat, 15 Mar 2025 15:25:41 +0000 + + http://basic-wp.test/?page_id=40 + + ]]> + + 40 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[News]]> + http://basic-wp.test/news/ + Sat, 15 Mar 2025 15:25:49 +0000 + + http://basic-wp.test/?page_id=42 + + + + 42 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Est facilis rem at ex velit temporibus.]]> + http://basic-wp.test/est-facilis-rem-at-ex-velit-temporibus/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/est-facilis-rem-at-ex-velit-temporibus/ + + + + 46 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Et dolores magnam repudiandae officia.]]> + http://basic-wp.test/et-dolores-magnam-repudiandae-officia/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/et-dolores-magnam-repudiandae-officia/ + + + + 48 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Quo sint eveniet debitis aut.]]> + http://basic-wp.test/quo-sint-eveniet-debitis-aut/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/quo-sint-eveniet-debitis-aut/ + + + + 50 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Accordion Block]]> + http://basic-wp.test/blocks/accordion-block/ + Sat, 15 Mar 2025 17:35:56 +0000 + + http://basic-wp.test/?page_id=126 + + +

Show a group of content items in collapsable sections. Used for things like FAQ questions, etc. Configurable for first item open and grouped (single expansion mode) items.

+ + + +

Standard, Grouped Items

+ + + + + +
+ + + +

First Item Open

+ + +]]>
+ + 126 + + + + + + + + + 33 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Buttons Block]]> + http://basic-wp.test/blocks/buttons-block/ + Sat, 15 Mar 2025 18:27:27 +0000 + + http://basic-wp.test/?page_id=137 + + +

Use as a normal link (i.e., an <a> element) or as a regualr (i.e., form control <button> element) button. Default is <a> element, "medium" size, and "auto" width.

+ + + +

Small Buttons

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

Medium Buttons (All Default Settings)

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

Large Buttons

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

Small Width Buttons

+ + + + + + + + + +

Wide Width Buttons

+ + + + + + + + + +

Full-width Button

+ + + + +]]>
+ + 137 + + + + + + + + + 33 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Media Text Block]]> + http://basic-wp.test/blocks/media-text-block/ + Sat, 22 Mar 2025 18:16:25 +0000 + + http://basic-wp.test/?page_id=201 + + + + + + + + + +

Media Text Block - InnerBlocks Variant

+ + + +

This is a paragraph block inside the InnerBlocks variant of the Media Text Block. The title is a core Heading block.

+ +]]>
+ + 201 + + + + + + + + + 33 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Grid Block]]> + http://basic-wp.test/blocks/grid-block/ + Sat, 22 Mar 2025 19:16:05 +0000 + + http://basic-wp.test/?page_id=259 + + + + +

Column 1 - Spans 2 columns at "xl" breakpoint

+ + + + + +

Column 2 - Spans 3 columns at "xl" breakpoint

+ + + + + +

Column 3 - Spans 3 columns at "xl" breakpoint

+ + + + + +

Column 4 - 1 column

+ + + + + +

Column 5 - 1 column

+ + + + + +

Column 6 - 1 column

+ + + + + +

Column 7 - Spans 4 columns at "xl" breakpoint

+ + +]]>
+ + 259 + + + + + + + + + 33 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Section Block]]> + http://basic-wp.test/blocks/section-block/ + Sat, 22 Mar 2025 23:11:20 +0000 + + http://basic-wp.test/?page_id=286 + + + +

Normal Width - ml-break-out

+ + + +

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

+ + + + + +

Normal Width - mr-break-out

+ + + +

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

+ + + + + +

Full Width - WP controls

+ + + +

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

+ + + + + +

Full Width - mx-break-out

+ + + +

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

+ +]]>
+ + 286 + + + + + + + + + 33 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Content Filter]]> + http://basic-wp.test/?page_id=435 + Sat, 29 Mar 2025 18:15:50 +0000 + + http://basic-wp.test/?page_id=435 + + +

What is this?

+ + + +

This page incorporates our Content Filter plugin. offing easy filtering and display of any content chosen in the admin control panel.

+ + + +[resource_filter] +]]>
+ + 435 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Page With Sidebar]]> + http://basic-wp.test/page-with-sidebar/ + Sun, 04 May 2025 21:02:38 +0000 + + http://basic-wp.test/?page_id=520 + + +

Ac facilisi sit scelerisque proin luctus a ullamcorper etiam massa ac potenti volutpat iaculis integer facilisis vivamus. Vestibulum mi porta non at risus euismod nascetur a vestibulum sociosqu parturient ornare adipiscing habitasse dui nec eget aliquam. Odio cras sem mi a vestibulum tristique eget rhoncus penatibus porta sem suscipit egestas rhoncus imperdiet a parturient mollis ut facilisi. Eleifend risus dapibus in quis habitasse cum iaculis a habitant suspendisse cras ac vestibulum facilisi suspendisse. Ut a tristique vestibulum montes malesuada duis condimentum netus quam odio elit dictumst pharetra pulvinar per interdum ad. A sagittis posuere mi conubia a mattis a at parturient scelerisque venenatis a velit ultrices primis orci eu mi odio urna sem enim ullamcorper eget id fermentum a.

+ + + +

Vel parturient eu eget a a litora ullamcorper nostra facilisis neque ullamcorper ridiculus duis non et condimentum euismod ultricies curabitur. Et vestibulum a venenatis a elementum ligula penatibus dignissim eget eu donec a adipiscing pharetra ac dui scelerisque. Penatibus malesuada lectus nunc vel a ad volutpat cursus ultricies habitasse posuere blandit morbi lectus quisque sit scelerisque purus erat a vestibulum adipiscing bibendum scelerisque. Suspendisse placerat nec non vehicula conubia quis risus a leo erat etiam scelerisque mi arcu viverra senectus tincidunt platea mollis eu erat ut.

+ + + +

In suscipit a velit fermentum purus elementum posuere per platea in amet ut urna dignissim non eleifend sed mus donec aliquam leo non integer convallis parturient consectetur. Dis dui in mattis nullam ornare adipiscing placerat mi a dictum vestibulum orci cubilia parturient rhoncus urna tellus consectetur nullam. Dictumst nunc erat himenaeos urna vivamus odio et fusce etiam lobortis hendrerit dictumst cubilia iaculis non a inceptos ac platea. Augue aptent a ullamcorper nibh porta condimentum mus vestibulum at non mus a ridiculus himenaeos ullamcorper conubia vivamus suspendisse fermentum euismod justo ullamcorper. A a iaculis euismod integer nec vestibulum tristique id a ullamcorper at id ad vestibulum dis ullamcorper.

+ + + +

Vestibulum mauris non hac id a parturient porta cras adipiscing condimentum a sociosqu scelerisque sociis quam dolor a a fermentum eleifend eros lectus erat convallis id inceptos. Himenaeos penatibus senectus vestibulum morbi a ante imperdiet parturient habitant suspendisse adipiscing ad a consequat nibh aliquam torquent at ad consectetur montes. Sociosqu habitant suspendisse a libero orci eros facilisis adipiscing leo lorem risus ante ad nam a litora mi primis.

+ + + +

Condimentum molestie vestibulum habitasse tristique sed et hendrerit consectetur scelerisque nibh ac facilisi condimentum feugiat etiam aptent lacus a etiam in a erat ac nec. Potenti amet ut parturient pharetra litora in tempus mattis eu purus cum aptent volutpat turpis ipsum taciti id purus viverra. Ut convallis conubia condimentum a a a a a ullamcorper erat scelerisque a dolor ac nullam ullamcorper. A dui justo adipiscing facilisis scelerisque duis duis nisl est accumsan suscipit a justo primis at blandit posuere at consectetur tortor eget imperdiet est ornare sapien odio suscipit. Dictumst fermentum a a nisi nunc volutpat congue adipiscing quam vestibulum suspendisse laoreet scelerisque torquent mus a condimentum eget convallis.

+]]>
+ + 520 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Sidebar Test]]> + http://basic-wp.test/?page_id=528 + Sat, 10 May 2025 14:40:53 +0000 + + http://basic-wp.test/?page_id=528 + + +

Ac facilisi sit scelerisque proin luctus a ullamcorper etiam massa ac potenti volutpat iaculis integer facilisis vivamus. Vestibulum mi porta non at risus euismod nascetur a vestibulum sociosqu parturient ornare adipiscing habitasse dui nec eget aliquam. Odio cras sem mi a vestibulum tristique eget rhoncus penatibus porta sem suscipit egestas rhoncus imperdiet a parturient mollis ut facilisi. Eleifend risus dapibus in quis habitasse cum iaculis a habitant suspendisse cras ac vestibulum facilisi suspendisse. Ut a tristique vestibulum montes malesuada duis condimentum netus quam odio elit dictumst pharetra pulvinar per interdum ad. A sagittis posuere mi conubia a mattis a at parturient scelerisque venenatis a velit ultrices primis orci eu mi odio urna sem enim ullamcorper eget id fermentum a.

+ + + +

Vel parturient eu eget a a litora ullamcorper nostra facilisis neque ullamcorper ridiculus duis non et condimentum euismod ultricies curabitur. Et vestibulum a venenatis a elementum ligula penatibus dignissim eget eu donec a adipiscing pharetra ac dui scelerisque. Penatibus malesuada lectus nunc vel a ad volutpat cursus ultricies habitasse posuere blandit morbi lectus quisque sit scelerisque purus erat a vestibulum adipiscing bibendum scelerisque. Suspendisse placerat nec non vehicula conubia quis risus a leo erat etiam scelerisque mi arcu viverra senectus tincidunt platea mollis eu erat ut.

+ + + +

In suscipit a velit fermentum purus elementum posuere per platea in amet ut urna dignissim non eleifend sed mus donec aliquam leo non integer convallis parturient consectetur. Dis dui in mattis nullam ornare adipiscing placerat mi a dictum vestibulum orci cubilia parturient rhoncus urna tellus consectetur nullam. Dictumst nunc erat himenaeos urna vivamus odio et fusce etiam lobortis hendrerit dictumst cubilia iaculis non a inceptos ac platea. Augue aptent a ullamcorper nibh porta condimentum mus vestibulum at non mus a ridiculus himenaeos ullamcorper conubia vivamus suspendisse fermentum euismod justo ullamcorper. A a iaculis euismod integer nec vestibulum tristique id a ullamcorper at id ad vestibulum dis ullamcorper.

+ + + +

Vestibulum mauris non hac id a parturient porta cras adipiscing condimentum a sociosqu scelerisque sociis quam dolor a a fermentum eleifend eros lectus erat convallis id inceptos. Himenaeos penatibus senectus vestibulum morbi a ante imperdiet parturient habitant suspendisse adipiscing ad a consequat nibh aliquam torquent at ad consectetur montes. Sociosqu habitant suspendisse a libero orci eros facilisis adipiscing leo lorem risus ante ad nam a litora mi primis.

+ + + +

Condimentum molestie vestibulum habitasse tristique sed et hendrerit consectetur scelerisque nibh ac facilisi condimentum feugiat etiam aptent lacus a etiam in a erat ac nec. Potenti amet ut parturient pharetra litora in tempus mattis eu purus cum aptent volutpat turpis ipsum taciti id purus viverra. Ut convallis conubia condimentum a a a a a ullamcorper erat scelerisque a dolor ac nullam ullamcorper. A dui justo adipiscing facilisis scelerisque duis duis nisl est accumsan suscipit a justo primis at blandit posuere at consectetur tortor eget imperdiet est ornare sapien odio suscipit. Dictumst fermentum a a nisi nunc volutpat congue adipiscing quam vestibulum suspendisse laoreet scelerisque torquent mus a condimentum eget convallis.

+]]>
+ + 528 + + + + + + + + + 520 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[]]> + http://basic-wp.test/531/ + Sun, 11 May 2025 19:20:59 +0000 + + http://basic-wp.test/?p=531 + + + + 531 + + + + + + + + + 0 + 5 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/532/ + Sun, 11 May 2025 19:20:59 +0000 + + http://basic-wp.test/?p=532 + + + + 532 + + + + + + + + + 0 + 4 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Contact]]> + http://basic-wp.test/contact/ + Sun, 18 May 2025 22:08:58 +0000 + + http://basic-wp.test/?page_id=537 + + ]]> + + 537 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[]]> + http://basic-wp.test/543/ + Mon, 19 May 2025 01:30:13 +0000 + + http://basic-wp.test/?p=543 + + + + 543 + + + + + + + + + 0 + 7 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <![CDATA[Ut eaque est quibusdam quaerat non.]]> + http://basic-wp.test/ut-eaque-est-quibusdam-quaerat-non/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/ut-eaque-est-quibusdam-quaerat-non/ + + + + 52 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Quia quo sit voluptates excepturi.]]> + http://basic-wp.test/quia-quo-sit-voluptates-excepturi/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/quia-quo-sit-voluptates-excepturi/ + + + + 54 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Dolorem vitae voluptas architecto.]]> + http://basic-wp.test/dolorem-vitae-voluptas-architecto/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/dolorem-vitae-voluptas-architecto/ + + + + 56 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Nulla provident aut dolores velit fuga.]]> + http://basic-wp.test/nulla-provident-aut-dolores-velit-fuga/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/nulla-provident-aut-dolores-velit-fuga/ + + + + 58 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Dignissimos est sint et esse ut.]]> + http://basic-wp.test/dignissimos-est-sint-et-esse-ut/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/dignissimos-est-sint-et-esse-ut/ + + + + 60 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Praesentium quia qui sequi dicta.]]> + http://basic-wp.test/praesentium-quia-qui-sequi-dicta/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/praesentium-quia-qui-sequi-dicta/ + + + + 62 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Et dolor dolor voluptas temporibus.]]> + http://basic-wp.test/et-dolor-dolor-voluptas-temporibus/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/et-dolor-dolor-voluptas-temporibus/ + + + + 64 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Laboriosam quae enim suscipit a.]]> + http://basic-wp.test/laboriosam-quae-enim-suscipit-a/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/laboriosam-quae-enim-suscipit-a/ + + + + 66 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Ab corrupti libero molestiae et.]]> + http://basic-wp.test/ab-corrupti-libero-molestiae-et/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/ab-corrupti-libero-molestiae-et/ + + + + 68 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Magnam atque et sed itaque aut.]]> + http://basic-wp.test/magnam-atque-et-sed-itaque-aut/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/magnam-atque-et-sed-itaque-aut/ + + + + 70 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Veniam aut qui atque eum.]]> + http://basic-wp.test/veniam-aut-qui-atque-eum/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/veniam-aut-qui-atque-eum/ + + + + 72 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Nam quo rem enim incidunt.]]> + http://basic-wp.test/nam-quo-rem-enim-incidunt/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/nam-quo-rem-enim-incidunt/ + + + + 74 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Ut ratione asperiores autem.]]> + http://basic-wp.test/ut-ratione-asperiores-autem/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/ut-ratione-asperiores-autem/ + + + + 76 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Non porro qui sed quam soluta hic.]]> + http://basic-wp.test/non-porro-qui-sed-quam-soluta-hic/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/non-porro-qui-sed-quam-soluta-hic/ + + + + 78 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Quidem quis nihil numquam ea facere.]]> + http://basic-wp.test/quidem-quis-nihil-numquam-ea-facere/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/quidem-quis-nihil-numquam-ea-facere/ + + + + 80 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Rerum eligendi sint vero quia.]]> + http://basic-wp.test/rerum-eligendi-sint-vero-quia/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/rerum-eligendi-sint-vero-quia/ + + + + 82 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Vel consectetur vero laudantium.]]> + http://basic-wp.test/vel-consectetur-vero-laudantium/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/vel-consectetur-vero-laudantium/ + + +

Minima inventore sint fuga recusandae nulla qui. Voluptatum eveniet quo odit sunt et ducimus enim. Aut itaque laboriosam sit.

+ + + +

Et minima iure hic porro ut sit. Ratione occaecati voluptatum odio voluptatum voluptatem molestias. Accusantium alias et dignissimos fugit iusto ducimus. Aut perferendis minima dolores et.

+ + + +

Rem saepe omnis minima molestias porro magnam. Quia ducimus quidem culpa exercitationem voluptas rerum occaecati. Qui qui odio nulla ea. Illum impedit vero inventore quis omnis nobis commodi.Vel ut officia odit sit in atque omnis. Quia ullam voluptate temporibus et culpa dolor rerum. Asperiores aliquid illo quod. Aliquam ratione quos voluptas inventore. Voluptatem et doloribus ducimus voluptatem. Et voluptas quia quos pariatur occaecati. Aut pariatur enim et dolor non aut error accusantium. Officia velit iure atque minus recusandae blanditiis fugiat. Culpa reiciendis aut eos quidem quaerat consequuntur magnam. Beatae et beatae culpa explicabo modi. Et ut voluptatem porro aliquam nulla quam fugiat. Sit accusantium necessitatibus et corporis aut. Magni qui sapiente ea nulla qui sit. Quisquam est nulla repellendus est illum. Sit quo alias quia suscipit ut odit et laboriosam.

+]]>
+ + 84 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + <![CDATA[Adipisci natus fugit illum nemo.]]> + http://basic-wp.test/adipisci-natus-fugit-illum-nemo/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/adipisci-natus-fugit-illum-nemo/ + + + + 86 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Ipsum quos non nihil ipsa fugit.]]> + http://basic-wp.test/ipsum-quos-non-nihil-ipsa-fugit/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/ipsum-quos-non-nihil-ipsa-fugit/ + + + + 88 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Totam nam molestiae quo et hic.]]> + http://basic-wp.test/totam-nam-molestiae-quo-et-hic/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/totam-nam-molestiae-quo-et-hic/ + + + + 90 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Aut quia quia qui excepturi itaque.]]> + http://basic-wp.test/aut-quia-quia-qui-excepturi-itaque/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/aut-quia-quia-qui-excepturi-itaque/ + + + + 92 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Voluptatum consequatur quae dolor cum.]]> + http://basic-wp.test/voluptatum-consequatur-quae-dolor-cum/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/voluptatum-consequatur-quae-dolor-cum/ + + + + 94 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Eveniet eaque veritatis aut voluptas.]]> + http://basic-wp.test/eveniet-eaque-veritatis-aut-voluptas/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/eveniet-eaque-veritatis-aut-voluptas/ + + + + 96 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Voluptate at aut minima alias.]]> + http://basic-wp.test/voluptate-at-aut-minima-alias/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/voluptate-at-aut-minima-alias/ + + + + 98 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Quasi consequatur ut ut aut.]]> + http://basic-wp.test/quasi-consequatur-ut-ut-aut/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/quasi-consequatur-ut-ut-aut/ + + + + 100 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Ratione facilis expedita nostrum.]]> + http://basic-wp.test/ratione-facilis-expedita-nostrum/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/ratione-facilis-expedita-nostrum/ + + + + 102 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Dolore quod minus veniam dolore.]]> + http://basic-wp.test/dolore-quod-minus-veniam-dolore/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/dolore-quod-minus-veniam-dolore/ + + + + 104 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Eos nihil facilis aut esse.]]> + http://basic-wp.test/eos-nihil-facilis-aut-esse/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/eos-nihil-facilis-aut-esse/ + + + + 106 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Minus qui aspernatur ut saepe sapiente.]]> + http://basic-wp.test/minus-qui-aspernatur-ut-saepe-sapiente/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/minus-qui-aspernatur-ut-saepe-sapiente/ + + + + 108 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Dolorem nam nesciunt quos.]]> + http://basic-wp.test/dolorem-nam-nesciunt-quos/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/dolorem-nam-nesciunt-quos/ + + + + 110 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Hic sed ex vel doloribus sapiente.]]> + http://basic-wp.test/hic-sed-ex-vel-doloribus-sapiente/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/hic-sed-ex-vel-doloribus-sapiente/ + + + + 112 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Doloremque omnis nobis vel rem ut vero.]]> + http://basic-wp.test/doloremque-omnis-nobis-vel-rem-ut-vero/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/doloremque-omnis-nobis-vel-rem-ut-vero/ + + + + 114 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Mollitia quo aut dolor.]]> + http://basic-wp.test/mollitia-quo-aut-dolor/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/mollitia-quo-aut-dolor/ + + + + 116 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Modi est nobis modi quasi doloremque.]]> + http://basic-wp.test/modi-est-nobis-modi-quasi-doloremque/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/modi-est-nobis-modi-quasi-doloremque/ + + + + 118 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Excepturi dolore modi eius doloribus.]]> + http://basic-wp.test/excepturi-dolore-modi-eius-doloribus/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/excepturi-dolore-modi-eius-doloribus/ + + + + 120 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Fugit eum labore cupiditate.]]> + http://basic-wp.test/fugit-eum-labore-cupiditate/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/fugit-eum-labore-cupiditate/ + + + + 122 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Aut eos cumque sit beatae.]]> + http://basic-wp.test/aut-eos-cumque-sit-beatae/ + Sat, 15 Mar 2025 00:00:00 +0000 + + http://basic-wp.test/2025/03/15/aut-eos-cumque-sit-beatae/ + + + + 124 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + + + <![CDATA[Aut soluta totam fuga dolores.]]> + http://basic-wp.test/resources/aut-soluta-totam-fuga-dolores/ + Mon, 06 Feb 2023 08:13:41 +0000 + + http://basic-wp.test/resources/aut-soluta-totam-fuga-dolores/ + + + + 357 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Est ipsa tempore veniam officia et est.]]> + http://basic-wp.test/resources/est-ipsa-tempore-veniam-officia-et-est/ + Fri, 03 Feb 2023 22:44:27 +0000 + + http://basic-wp.test/resources/est-ipsa-tempore-veniam-officia-et-est/ + + + + 365 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Culpa ea blanditiis ipsam.]]> + http://basic-wp.test/resources/culpa-ea-blanditiis-ipsam/ + Fri, 20 Jan 2023 06:54:31 +0000 + + http://basic-wp.test/resources/culpa-ea-blanditiis-ipsam/ + + + + 417 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Earum quis quasi qui in.]]> + http://basic-wp.test/resources/earum-quis-quasi-qui-in/ + Mon, 31 Jul 2023 07:18:34 +0000 + + http://basic-wp.test/resources/earum-quis-quasi-qui-in/ + + + + 337 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Consequatur omnis quo tempora amet.]]> + http://basic-wp.test/resources/consequatur-omnis-quo-tempora-amet/ + Thu, 21 Dec 2023 04:37:54 +0000 + + http://basic-wp.test/resources/consequatur-omnis-quo-tempora-amet/ + + + + 343 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[At optio eos quibusdam.]]> + http://basic-wp.test/resources/at-optio-eos-quibusdam/ + Sat, 01 Apr 2023 16:06:54 +0000 + + http://basic-wp.test/resources/at-optio-eos-quibusdam/ + + + + 345 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Et nihil ipsam et magnam.]]> + http://basic-wp.test/resources/et-nihil-ipsam-et-magnam/ + Fri, 03 Nov 2023 22:25:51 +0000 + + http://basic-wp.test/resources/et-nihil-ipsam-et-magnam/ + + + + 347 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Dicta cum repellendus qui qui ut.]]> + http://basic-wp.test/resources/dicta-cum-repellendus-qui-qui-ut/ + Mon, 03 Jul 2023 13:29:58 +0000 + + http://basic-wp.test/resources/dicta-cum-repellendus-qui-qui-ut/ + + + + 351 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Architecto quam molestias et.]]> + http://basic-wp.test/resources/architecto-quam-molestias-et/ + Sun, 18 Jun 2023 16:57:58 +0000 + + http://basic-wp.test/resources/architecto-quam-molestias-et/ + + + + 353 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Voluptatibus quo ipsum dolor omnis.]]> + http://basic-wp.test/resources/voluptatibus-quo-ipsum-dolor-omnis/ + Thu, 14 Dec 2023 02:14:07 +0000 + + http://basic-wp.test/resources/voluptatibus-quo-ipsum-dolor-omnis/ + + + + 361 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Eius deserunt nemo a.]]> + http://basic-wp.test/resources/eius-deserunt-nemo-a/ + Tue, 04 Apr 2023 18:24:03 +0000 + + http://basic-wp.test/resources/eius-deserunt-nemo-a/ + + + + 367 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Officia necessitatibus neque enim.]]> + http://basic-wp.test/resources/officia-necessitatibus-neque-enim/ + Mon, 24 Apr 2023 07:43:27 +0000 + + http://basic-wp.test/resources/officia-necessitatibus-neque-enim/ + + + + 373 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Voluptas id non voluptate quod aut.]]> + http://basic-wp.test/resources/voluptas-id-non-voluptate-quod-aut/ + Thu, 07 Dec 2023 13:25:44 +0000 + + http://basic-wp.test/resources/voluptas-id-non-voluptate-quod-aut/ + + + + 375 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Aut nemo sint consequatur molestiae.]]> + http://basic-wp.test/resources/aut-nemo-sint-consequatur-molestiae/ + Mon, 07 Aug 2023 06:23:16 +0000 + + http://basic-wp.test/resources/aut-nemo-sint-consequatur-molestiae/ + + + + 377 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Voluptate fugiat nemo nisi.]]> + http://basic-wp.test/resources/voluptate-fugiat-nemo-nisi/ + Mon, 13 Nov 2023 00:50:51 +0000 + + http://basic-wp.test/resources/voluptate-fugiat-nemo-nisi/ + + + + 379 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Eum sint expedita doloremque.]]> + http://basic-wp.test/resources/eum-sint-expedita-doloremque/ + Tue, 27 Jun 2023 15:23:22 +0000 + + http://basic-wp.test/resources/eum-sint-expedita-doloremque/ + + + + 389 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Eum dolorem in qui.]]> + http://basic-wp.test/resources/eum-dolorem-in-qui/ + Mon, 27 Nov 2023 17:14:27 +0000 + + http://basic-wp.test/resources/eum-dolorem-in-qui/ + + + + 391 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Id enim iusto quis est dolorem.]]> + http://basic-wp.test/resources/id-enim-iusto-quis-est-dolorem/ + Wed, 10 May 2023 08:47:30 +0000 + + http://basic-wp.test/resources/id-enim-iusto-quis-est-dolorem/ + + + + 397 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Blanditiis est voluptatem quisquam rem.]]> + http://basic-wp.test/resources/blanditiis-est-voluptatem-quisquam-rem/ + Thu, 21 Dec 2023 03:24:52 +0000 + + http://basic-wp.test/resources/blanditiis-est-voluptatem-quisquam-rem/ + + + + 401 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Velit deleniti nam autem rem.]]> + http://basic-wp.test/resources/velit-deleniti-nam-autem-rem/ + Sun, 23 Apr 2023 06:31:06 +0000 + + http://basic-wp.test/resources/velit-deleniti-nam-autem-rem/ + + + + 413 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Inventore ad pariatur quia.]]> + http://basic-wp.test/resources/inventore-ad-pariatur-quia/ + Fri, 22 Sep 2023 22:38:42 +0000 + + http://basic-wp.test/resources/inventore-ad-pariatur-quia/ + + + + 427 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Excepturi quidem a magnam quas.]]> + http://basic-wp.test/resources/excepturi-quidem-a-magnam-quas/ + Tue, 09 Jan 2024 05:40:55 +0000 + + http://basic-wp.test/resources/excepturi-quidem-a-magnam-quas/ + + + + 429 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Omnis architecto ut aut dicta.]]> + http://basic-wp.test/resources/omnis-architecto-ut-aut-dicta/ + Tue, 30 May 2023 06:34:08 +0000 + + http://basic-wp.test/resources/omnis-architecto-ut-aut-dicta/ + + + + 433 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Primary]]> + http://basic-wp.test/primary/ + Sat, 15 Mar 2025 19:24:58 +0000 + + http://basic-wp.test/2025/03/15/primary/ + + ]]> + + 152 + + + + + + + + + 0 + 0 + + + 0 + + + <![CDATA[Beatae et qui quia laudantium.]]> + http://basic-wp.test/resources/beatae-et-qui-quia-laudantium/ + Mon, 12 Feb 2024 21:38:43 +0000 + + http://basic-wp.test/resources/beatae-et-qui-quia-laudantium/ + + + + 349 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Autem esse repellat quasi et.]]> + http://basic-wp.test/resources/autem-esse-repellat-quasi-et/ + Thu, 18 Jan 2024 09:07:44 +0000 + + http://basic-wp.test/resources/autem-esse-repellat-quasi-et/ + + + + 355 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Nemo dolores illum quia dolor.]]> + http://basic-wp.test/resources/nemo-dolores-illum-quia-dolor/ + Sun, 14 Jan 2024 13:57:02 +0000 + + http://basic-wp.test/resources/nemo-dolores-illum-quia-dolor/ + + + + 371 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Et repudiandae maxime qui quas.]]> + http://basic-wp.test/resources/et-repudiandae-maxime-qui-quas/ + Sat, 23 Mar 2024 05:58:50 +0000 + + http://basic-wp.test/resources/et-repudiandae-maxime-qui-quas/ + + + + 385 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Saepe aliquam quaerat corporis quam.]]> + http://basic-wp.test/resources/saepe-aliquam-quaerat-corporis-quam/ + Mon, 01 Apr 2024 22:12:58 +0000 + + http://basic-wp.test/resources/saepe-aliquam-quaerat-corporis-quam/ + + + + 403 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Modi et in eum et esse quam.]]> + http://basic-wp.test/resources/modi-et-in-eum-et-esse-quam/ + Thu, 22 Feb 2024 16:04:53 +0000 + + http://basic-wp.test/resources/modi-et-in-eum-et-esse-quam/ + + + + 411 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Sed quia nulla autem recusandae unde.]]> + http://basic-wp.test/resources/sed-quia-nulla-autem-recusandae-unde/ + Fri, 01 Mar 2024 04:17:33 +0000 + + http://basic-wp.test/resources/sed-quia-nulla-autem-recusandae-unde/ + + + + 425 + + + + + + + + + 0 + 0 + + + 0 + + + + + + + + + + + <![CDATA[Custom Styles]]> + http://basic-wp.test/wp-global-styles-basic-wp/ + Sat, 12 Apr 2025 21:11:23 +0000 + + http://basic-wp.test/2025/04/12/wp-global-styles-basic-wp/ + + + + 449 + + + + + + + + + 0 + 0 + + + 0 + + + + + \ No newline at end of file diff --git a/db/menus.json b/db/menus.json new file mode 100644 index 0000000..b82492d --- /dev/null +++ b/db/menus.json @@ -0,0 +1,728 @@ +[ + { + "name": "Aux Navigation", + "slug": "aux-navigation", + "locations": [ + "aux_navigation" + ], + "items": [ + { + "ID": 539, + "post_author": "1", + "post_date": "2025-05-18 22:09:54", + "post_date_gmt": "2025-05-18 22:09:54", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "539", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-18 22:09:54", + "post_modified_gmt": "2025-05-18 22:09:54", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=539", + "menu_order": 1, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 539, + "menu_item_parent": "0", + "object_id": "537", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/contact/", + "title": "Contact", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + } + ] + }, + { + "name": "Footer", + "slug": "footer", + "locations": [ + "footer_navigation" + ], + "items": [ + { + "ID": 275, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-03-22 21:42:53", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "275", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=275", + "menu_order": 1, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 275, + "menu_item_parent": "0", + "object_id": "40", + "object": "page", + "type": "post_type", + "type_label": "Front Page", + "url": "http://basic-wp.test/", + "title": "Home", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 277, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-03-22 21:42:53", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "277", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=277", + "menu_order": 2, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 277, + "menu_item_parent": "0", + "object_id": "33", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/", + "title": "Blocks", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 278, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-03-22 21:42:53", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "278", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=278", + "menu_order": 3, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 278, + "menu_item_parent": "0", + "object_id": "2", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/sample-page/", + "title": "Sample Page", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 532, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-05-11 19:20:59", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "532", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=532", + "menu_order": 4, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 532, + "menu_item_parent": "0", + "object_id": "520", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/page-with-sidebar/", + "title": "Page With Sidebar", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 276, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-03-22 21:42:53", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "276", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=276", + "menu_order": 5, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 276, + "menu_item_parent": "0", + "object_id": "42", + "object": "page", + "type": "post_type", + "type_label": "Posts Page", + "url": "http://basic-wp.test/news/", + "title": "News", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 543, + "post_author": "1", + "post_date": "2025-05-22 12:11:57", + "post_date_gmt": "2025-05-19 01:30:13", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "543", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:11:57", + "post_modified_gmt": "2025-05-22 12:11:57", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=543", + "menu_order": 6, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 543, + "menu_item_parent": "0", + "object_id": "537", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/contact/", + "title": "Contact", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + } + ] + }, + { + "name": "Primary", + "slug": "primary", + "locations": [ + "header", + "footer", + "main_navigation" + ], + "items": [ + { + "ID": 44, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-15 15:27:06", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "44", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=44", + "menu_order": 1, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 44, + "menu_item_parent": "0", + "object_id": "40", + "object": "page", + "type": "post_type", + "type_label": "Front Page", + "url": "http://basic-wp.test/", + "title": "Home", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 31, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-09 19:15:39", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "31", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=31", + "menu_order": 2, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 31, + "menu_item_parent": "0", + "object_id": "2", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/sample-page/", + "title": "Sample Page", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 526, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-05-04 21:25:28", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "526", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=526", + "menu_order": 3, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 526, + "menu_item_parent": "0", + "object_id": "520", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/page-with-sidebar/", + "title": "Page With Sidebar", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 35, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-09 19:18:00", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "35", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=35", + "menu_order": 4, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 35, + "menu_item_parent": "0", + "object_id": "33", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/", + "title": "Blocks", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 131, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-15 17:37:41", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "131", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 33, + "guid": "http://basic-wp.test/?p=131", + "menu_order": 5, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 131, + "menu_item_parent": "35", + "object_id": "126", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/accordion-block/", + "title": "Accordion Block", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 141, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-15 18:28:26", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "141", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 33, + "guid": "http://basic-wp.test/?p=141", + "menu_order": 6, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 141, + "menu_item_parent": "35", + "object_id": "137", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/buttons-block/", + "title": "Buttons Block", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 261, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-22 19:16:19", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "261", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 33, + "guid": "http://basic-wp.test/?p=261", + "menu_order": 7, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 261, + "menu_item_parent": "35", + "object_id": "259", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/grid-block/", + "title": "Grid Block", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 203, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-22 18:16:52", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "203", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 33, + "guid": "http://basic-wp.test/?p=203", + "menu_order": 8, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 203, + "menu_item_parent": "35", + "object_id": "201", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/media-text-block/", + "title": "Media Text Block", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 318, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-22 23:15:45", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "318", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 33, + "guid": "http://basic-wp.test/?p=318", + "menu_order": 9, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 318, + "menu_item_parent": "35", + "object_id": "286", + "object": "page", + "type": "post_type", + "type_label": "Page", + "url": "http://basic-wp.test/blocks/section-block/", + "title": "Section Block", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + }, + { + "ID": 45, + "post_author": "1", + "post_date": "2025-05-22 12:12:07", + "post_date_gmt": "2025-03-15 15:27:06", + "post_content": " ", + "post_title": "", + "post_excerpt": "", + "post_status": "publish", + "comment_status": "closed", + "ping_status": "closed", + "post_password": "", + "post_name": "45", + "to_ping": "", + "pinged": "", + "post_modified": "2025-05-22 12:12:07", + "post_modified_gmt": "2025-05-22 12:12:07", + "post_content_filtered": "", + "post_parent": 0, + "guid": "http://basic-wp.test/?p=45", + "menu_order": 10, + "post_type": "nav_menu_item", + "post_mime_type": "", + "comment_count": "0", + "filter": "raw", + "db_id": 45, + "menu_item_parent": "0", + "object_id": "42", + "object": "page", + "type": "post_type", + "type_label": "Posts Page", + "url": "http://basic-wp.test/news/", + "title": "News", + "target": "", + "attr_title": "", + "description": "", + "classes": [ + "" + ], + "xfn": "" + } + ] + } +] \ No newline at end of file diff --git a/db/options.json b/db/options.json new file mode 100644 index 0000000..bb3b03b --- /dev/null +++ b/db/options.json @@ -0,0 +1,519 @@ +{ + "use_balanceTags": "0", + "use_smilies": "1", + "require_name_email": "1", + "comments_notify": "1", + "posts_per_rss": "10", + "rss_use_excerpt": "0", + "mailserver_url": "mail.example.com", + "mailserver_login": "login@example.com", + "mailserver_pass": "", + "mailserver_port": "110", + "default_category": "1", + "default_comment_status": "open", + "default_ping_status": "open", + "default_pingback_flag": "0", + "posts_per_page": "9", + "date_format": "F j, Y", + "time_format": "g:i a", + "links_updated_date_format": "F j, Y g:i a", + "comment_moderation": "0", + "moderation_notify": "1", + "permalink_structure": "/%postname%/", + "hack_file": "0", + "blog_charset": "UTF-8", + "active_plugins": [ + "gravityforms/gravityforms.php", + "db-version-control/db-version-control.php", + "secure-custom-fields/secure-custom-fields.php", + "site-vitals-for-wordpress/site-vitals-for-wordpress.php", + "vdi-footnotes/vdi-footnotes.php", + "wp-dummy-content-generator/wp_dummy_content_generator.php" + ], + "category_base": "", + "ping_sites": "http://rpc.pingomatic.com/", + "comment_max_links": "2", + "gmt_offset": "0", + "default_email_category": "1", + "template": "Basic-WP", + "stylesheet": "Basic-WP", + "comment_registration": "0", + "html_type": "text/html", + "use_trackback": "0", + "default_role": "subscriber", + "uploads_use_yearmonth_folders": "1", + "blog_public": "0", + "default_link_category": "2", + "show_on_front": "page", + "tag_base": "", + "show_avatars": "1", + "avatar_rating": "G", + "thumbnail_size_w": "150", + "thumbnail_size_h": "150", + "thumbnail_crop": "1", + "medium_size_w": "300", + "medium_size_h": "300", + "avatar_default": "mystery", + "large_size_w": "1024", + "large_size_h": "1024", + "image_default_link_type": "none", + "image_default_size": "", + "image_default_align": "", + "close_comments_for_old_posts": "0", + "close_comments_days_old": "14", + "thread_comments": "1", + "thread_comments_depth": "5", + "page_comments": "0", + "comments_per_page": "50", + "default_comments_page": "newest", + "comment_order": "asc", + "sticky_posts": [], + "widget_categories": { + "1": [], + "_multiwidget": 1 + }, + "widget_text": { + "1": [], + "_multiwidget": 1 + }, + "widget_rss": { + "1": [], + "_multiwidget": 1 + }, + "timezone_string": "", + "page_for_posts": "42", + "page_on_front": "40", + "default_post_format": "0", + "link_manager_enabled": "0", + "finished_splitting_shared_terms": "1", + "site_icon": "0", + "medium_large_size_w": "768", + "medium_large_size_h": "0", + "wp_page_for_privacy_policy": "3", + "show_comments_cookies_opt_in": "1", + "admin_email_lifespan": "1757098227", + "comment_previously_approved": "1", + "auto_update_core_dev": "enabled", + "auto_update_core_minor": "enabled", + "auto_update_core_major": "enabled", + "wp_force_deactivated_plugins": [], + "wp_attachment_pages_enabled": "0", + "wp_user_roles": { + "administrator": { + "name": "Administrator", + "capabilities": { + "switch_themes": true, + "edit_themes": true, + "activate_plugins": true, + "edit_plugins": true, + "edit_users": true, + "edit_files": true, + "manage_options": true, + "moderate_comments": true, + "manage_categories": true, + "manage_links": true, + "upload_files": true, + "import": true, + "unfiltered_html": true, + "edit_posts": true, + "edit_others_posts": true, + "edit_published_posts": true, + "publish_posts": true, + "edit_pages": true, + "read": true, + "level_10": true, + "level_9": true, + "level_8": true, + "level_7": true, + "level_6": true, + "level_5": true, + "level_4": true, + "level_3": true, + "level_2": true, + "level_1": true, + "level_0": true, + "edit_others_pages": true, + "edit_published_pages": true, + "publish_pages": true, + "delete_pages": true, + "delete_others_pages": true, + "delete_published_pages": true, + "delete_posts": true, + "delete_others_posts": true, + "delete_published_posts": true, + "delete_private_posts": true, + "edit_private_posts": true, + "read_private_posts": true, + "delete_private_pages": true, + "edit_private_pages": true, + "read_private_pages": true, + "delete_users": true, + "create_users": true, + "unfiltered_upload": true, + "edit_dashboard": true, + "update_plugins": true, + "delete_plugins": true, + "install_plugins": true, + "update_themes": true, + "install_themes": true, + "update_core": true, + "list_users": true, + "remove_users": true, + "promote_users": true, + "edit_theme_options": true, + "delete_themes": true, + "export": true + } + }, + "editor": { + "name": "Editor", + "capabilities": { + "moderate_comments": true, + "manage_categories": true, + "manage_links": true, + "upload_files": true, + "unfiltered_html": true, + "edit_posts": true, + "edit_others_posts": true, + "edit_published_posts": true, + "publish_posts": true, + "edit_pages": true, + "read": true, + "level_7": true, + "level_6": true, + "level_5": true, + "level_4": true, + "level_3": true, + "level_2": true, + "level_1": true, + "level_0": true, + "edit_others_pages": true, + "edit_published_pages": true, + "publish_pages": true, + "delete_pages": true, + "delete_others_pages": true, + "delete_published_pages": true, + "delete_posts": true, + "delete_others_posts": true, + "delete_published_posts": true, + "delete_private_posts": true, + "edit_private_posts": true, + "read_private_posts": true, + "delete_private_pages": true, + "edit_private_pages": true, + "read_private_pages": true + } + }, + "author": { + "name": "Author", + "capabilities": { + "upload_files": true, + "edit_posts": true, + "edit_published_posts": true, + "publish_posts": true, + "read": true, + "level_2": true, + "level_1": true, + "level_0": true, + "delete_posts": true, + "delete_published_posts": true + } + }, + "contributor": { + "name": "Contributor", + "capabilities": { + "edit_posts": true, + "read": true, + "level_1": true, + "level_0": true, + "delete_posts": true + } + }, + "subscriber": { + "name": "Subscriber", + "capabilities": { + "read": true, + "level_0": true + } + }, + "owner": { + "name": "Owner", + "capabilities": { + "edit_users": true, + "edit_files": true, + "moderate_comments": true, + "manage_categories": true, + "manage_links": true, + "upload_files": true, + "import": true, + "unfiltered_html": true, + "edit_posts": true, + "edit_others_posts": true, + "edit_published_posts": true, + "publish_posts": true, + "edit_pages": true, + "read": true, + "level_10": true, + "level_9": true, + "level_8": true, + "level_7": true, + "level_6": true, + "level_5": true, + "level_4": true, + "level_3": true, + "level_2": true, + "level_1": true, + "level_0": true, + "edit_others_pages": true, + "edit_published_pages": true, + "publish_pages": true, + "delete_pages": true, + "delete_others_pages": true, + "delete_published_pages": true, + "delete_posts": true, + "delete_others_posts": true, + "delete_published_posts": true, + "delete_private_posts": true, + "edit_private_posts": true, + "read_private_posts": true, + "delete_private_pages": true, + "edit_private_pages": true, + "read_private_pages": true, + "delete_users": true, + "create_users": true, + "unfiltered_upload": true, + "edit_dashboard": true, + "list_users": true, + "remove_users": true, + "promote_users": true, + "edit_theme_options": true, + "export": true + } + } + }, + "widget_block": { + "2": { + "content": "" + }, + "3": { + "content": "

Recent Posts

" + }, + "4": { + "content": "

Recent Comments

" + }, + "5": { + "content": "

Archives

" + }, + "6": { + "content": "

Categories

" + }, + "9": { + "content": "\n

Recent posts

\n" + }, + "13": { + "content": "\n

Search

\n" + }, + "14": { + "content": "\n

Recent posts

\n" + }, + "15": { + "content": "\n

Archive

\n" + }, + "18": { + "content": "\n

This is a block in the page sidebar. It uses the 'sidebar-page.php' template file.

\n" + }, + "_multiwidget": 1 + }, + "sidebars_widgets": { + "wp_inactive_widgets": [ + "block-2", + "block-3", + "block-4", + "block-5", + "block-6", + "block-9" + ], + "sidebar-primary": [ + "block-13", + "block-14", + "block-15" + ], + "sidebar-page": [ + "block-18" + ], + "footer-1": [], + "footer-2": [], + "footer-3": [], + "array_version": 3 + }, + "widget_pages": { + "_multiwidget": 1 + }, + "widget_calendar": { + "_multiwidget": 1 + }, + "widget_archives": { + "_multiwidget": 1 + }, + "widget_media_audio": { + "_multiwidget": 1 + }, + "widget_media_image": { + "_multiwidget": 1 + }, + "widget_media_gallery": { + "_multiwidget": 1 + }, + "widget_media_video": { + "_multiwidget": 1 + }, + "widget_meta": { + "_multiwidget": 1 + }, + "widget_search": { + "_multiwidget": 1 + }, + "widget_recent-posts": { + "_multiwidget": 1 + }, + "widget_recent-comments": { + "_multiwidget": 1 + }, + "widget_tag_cloud": { + "_multiwidget": 1 + }, + "widget_nav_menu": { + "_multiwidget": 1 + }, + "widget_custom_html": { + "_multiwidget": 1 + }, + "can_compress_scripts": "0", + "current_theme": "VDI Basic WP", + "theme_mods_Basic-WP": { + "0": false, + "nav_menu_locations": { + "header": 2, + "footer": 2, + "main_navigation": 2, + "footer_navigation": 13, + "aux_navigation": 21 + }, + "custom_css_post_id": -1 + }, + "theme_switched": "", + "recovery_mode_email_last_sent": "1748949580", + "finished_updating_comment_type": "1", + "acf_first_activated_version": "6.4.1", + "acf_version": "6.4.2", + "_transient_wp_styles_for_blocks": { + "hash": "8c7d46a72d7d4591fc1dd9485bedb304", + "blocks": { + "core/button": "", + "core/site-logo": "", + "core/post-template": ":where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}", + "core/columns": ":where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}", + "core/pullquote": ":root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}" + } + }, + "https_detection_errors": { + "https_request_failed": [ + "HTTPS request failed." + ] + }, + "_transient_health-check-site-status-result": "{\"good\":16,\"recommended\":3,\"critical\":1}", + "wp_calendar_block_has_published_posts": "1", + "category_children": [], + "content_filter_homepage_taxonomy": "resource_type", + "content_filter_post_types": [ + "resources" + ], + "content_filter_taxonomies": [ + "resource_type" + ], + "content_filter_posts_per_page": "8", + "vdi_enable_inline_mobile": "", + "vdi_enable_smooth_scroll": "1", + "vdi_footnotes_heading": "Footnotes", + "vdi_footnotes_font_size": "24px", + "vdi_footnotes_color": "#333", + "vdi_footnotes_show_numbers": "1", + "vdi_footnotes_options": { + "footnotes_title": "Footnotes", + "show_numbers": 1, + "font_size": 12, + "text_color": "#5395c6" + }, + "project-type_children": [], + "projects_wp_github_api_token": "", + "projects_wp_share_telemetry": "0", + "projects_wp_templates_version": "1", + "projects_wp_templates_last_updated": "1", + "projects_wp_templates_license": "1", + "projects_wp_templates_language": "0", + "projects_wp_templates_downloads": "1", + "projects_wp_templates_forks": "0", + "projects_wp_templates_stargazers_count": "0", + "projects_wp_templates_open_issues_count": "0", + "projects_wp_templates_github_owner": "1", + "projects_wp_archives_archive_title": "1", + "projects_wp_archives_project_title": "1", + "projects_wp_archives_project_excerpt": "1", + "projects_wp_archives_project_buttons": "1", + "gform_enable_background_updates": "1", + "gravityformsaddon_gravityformswebapi_version": "1.0", + "widget_gform_widget": { + "_multiwidget": 1 + }, + "rg_gforms_currency": "USD", + "rg_gforms_email": "", + "rg_gforms_formTypesOther": "", + "rg_gforms_organization": "", + "rg_gforms_organizationOther": "", + "rg_gforms_servicesOther": "", + "gform_enable_toolbar_menu": "1", + "rg_gforms_enable_akismet": "1", + "rg_gforms_enable_html5": "1", + "rg_gforms_key": "d94968e784b3314f085adb3b1db434f2", + "rg_gforms_disable_css": "1", + "rg_gforms_dataCollection": "0", + "rg_gforms_message": "", + "gf_previous_db_version": "2.9.8", + "gf_upgrade_lock": "", + "gform_sticky_admin_messages": [], + "_transient_gf_updated": "2.9", + "gf_rest_api_db_version": "2.9.9", + "gform_email_count": "2", + "resource_type_children": [], + "gf_last_telemetry_run": "1748919151", + "spectrom_sync_settings": { + "installed": "2025-05-22 12:13:36", + "version": "1.5.3", + "host": "", + "username": "", + "password": "", + "site_key": "42572745514162dd542a402afd4b5753", + "target_site_key": "", + "auth": 0, + "strict": "1", + "salt": "", + "remove": "0", + "match_mode": "title", + "min_role": "author", + "roles": "|author|editor|administrator|", + "report": "0" + }, + "spectrom_sync_activated": "1", + "dbvc_post_types": [ + "post", + "page", + "attachment", + "resources" + ], + "_transient_GFCache_deb11ff092749c1ce67ec6937ee625af": { + "wp_gf_telemetry_processor_cron": [ + 1748919495 + ] + }, + "dbvc_sync_path": "wp-content/themes/Basic-WP/db/" +} \ No newline at end of file diff --git a/db/page/page-126.json b/db/page/page-126.json new file mode 100644 index 0000000..bc759ba --- /dev/null +++ b/db/page/page-126.json @@ -0,0 +1,56 @@ +{ + "ID": 126, + "post_title": "Accordion Block", + "post_content": "\n

Show a group of content items in collapsable sections. Used for things like FAQ questions, etc. Configurable for first item open and grouped (single expansion mode) items.

\n\n\n\n

Standard, Grouped Items

\n\n\n\n\n\n
\n\n\n\n

First Item Open

\n\n\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "accordion-block", + "meta": { + "_edit_lock": [ + "1746895815:1" + ], + "footnotes": [ + "" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/page/page-137.json b/db/page/page-137.json new file mode 100644 index 0000000..edc4748 --- /dev/null +++ b/db/page/page-137.json @@ -0,0 +1,62 @@ +{ + "ID": 137, + "post_title": "Buttons Block", + "post_content": "\n

Use as a normal link (i.e., an <a> element) or as a regualr (i.e., form control <button> element) button. Default is <a> element, \"medium\" size, and \"auto\" width.

\n\n\n\n

Small Buttons

\n\n\n\n\n\n\n\n\n\n\n\n

Medium Buttons (All Default Settings)

\n\n\n\n\n\n\n\n\n\n\n\n

Large Buttons

\n\n\n\n\n\n\n\n\n\n\n\n

Small Width Buttons

\n\n\n\n\n\n\n\n\n\n

Wide Width Buttons

\n\n\n\n\n\n\n\n\n\n

Full-width Button

\n\n\n\n\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "buttons-block", + "meta": { + "_edit_lock": [ + "1747608631:1" + ], + "footnotes": [ + "" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "has_sidebar": [ + "0" + ], + "_has_sidebar": [ + "field_6817d7954a168" + ] + } +} \ No newline at end of file diff --git a/db/page/page-2.json b/db/page/page-2.json new file mode 100644 index 0000000..6ee6fe1 --- /dev/null +++ b/db/page/page-2.json @@ -0,0 +1,62 @@ +{ + "ID": 2, + "post_title": "Sample Page", + "post_content": "\n

This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:

\n\n\n\n
\n

Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like pi\u00f1a coladas. (And gettin' caught in the rain.)

\n
\n\n\n\n

...or something like this:

\n\n\n\n
\n

The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.

\n
\n\n\n\n

As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!

\n\n\n\n

Mus aliquam ut quis a tincidunt fermentum ac vestibulum pulvinar mauris cum a habitasse rutrum. Ullamcorper odio hac non pulvinar adipiscing leo dis bibendum litora et leo quis scelerisque praesent aptent ultrices pretium a varius vestibulum quam ullamcorper iaculis. A rutrum facilisi cum malesuada risus conubia semper suspendisse et eget accumsan parturient condimentum vitae nam lobortis. Pulvinar at magnis a class suspendisse erat ante lacus porta eget malesuada neque scelerisque netus fringilla erat. Fermentum auctor imperdiet justo condimentum a cum fermentum leo sapien sem lectus et fringilla suscipit lacus scelerisque parturient convallis vestibulum vel parturient parturient mauris senectus.

\n\n\n\n

Curae platea tempus et dis adipiscing dignissim pharetra eu vestibulum neque non lacus sociosqu vestibulum luctus nisl blandit. Porttitor in aliquam duis etiam parturient ac id scelerisque tempus scelerisque a a praesent eu parturient vestibulum a senectus et natoque dolor auctor adipiscing est. Ad quisque quis curae bibendum ac consectetur nibh etiam ad a class vestibulum natoque mi viverra nisi nec praesent sed nibh. Imperdiet mus parturient fames magnis vivamus a orci parturient id diam parturient diam phasellus sed imperdiet a scelerisque.

\n\n\n\n

Enim vel a tempor a parturient cum dignissim facilisi laoreet phasellus enim id ullamcorper dis suspendisse penatibus vestibulum mattis lacinia ridiculus nam quisque. Phasellus ultrices consequat ipsum facilisis nascetur condimentum suscipit vivamus proin varius erat natoque sodales arcu leo mi platea ut lobortis consectetur rutrum adipiscing hac a vel mus consectetur. Egestas ullamcorper mus a dis adipiscing sagittis fringilla nam netus ullamcorper scelerisque per netus imperdiet.

\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "sample-page", + "meta": { + "_wp_page_template": [ + "default" + ], + "_edit_lock": [ + "1747675365:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "has_sidebar": [ + "0" + ], + "_has_sidebar": [ + "field_6817d7954a168" + ] + } +} \ No newline at end of file diff --git a/db/page/page-201.json b/db/page/page-201.json new file mode 100644 index 0000000..42b6590 --- /dev/null +++ b/db/page/page-201.json @@ -0,0 +1,56 @@ +{ + "ID": 201, + "post_title": "Media Text Block", + "post_content": "\n\n\n\n\n\n\n\n

Media Text Block - InnerBlocks Variant

\n\n\n\n

This is a paragraph block inside the InnerBlocks variant of the Media Text Block. The title is a core Heading block.

\n\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "media-text-block", + "meta": { + "_edit_lock": [ + "1746392239:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "footnotes": [ + "" + ] + } +} \ No newline at end of file diff --git a/db/page/page-259.json b/db/page/page-259.json new file mode 100644 index 0000000..8ffac7b --- /dev/null +++ b/db/page/page-259.json @@ -0,0 +1,62 @@ +{ + "ID": 259, + "post_title": "Grid Block", + "post_content": "\n\n\n

Column 1 - Spans 2 columns at \"xl\" breakpoint

\n\n\n\n\n\n

Column 2 - Spans 3 columns at \"xl\" breakpoint

\n\n\n\n\n\n

Column 3 - Spans 3 columns at \"xl\" breakpoint

\n\n\n\n\n\n

Column 4 - 1 column

\n\n\n\n\n\n

Column 5 - 1 column

\n\n\n\n\n\n

Column 6 - 1 column

\n\n\n\n\n\n

Column 7 - Spans 4 columns at \"xl\" breakpoint

\n\n\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "grid-block", + "meta": { + "_edit_lock": [ + "1747673390:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "footnotes": [ + "" + ], + "has_sidebar": [ + "0" + ], + "_has_sidebar": [ + "field_6817d7954a168" + ] + } +} \ No newline at end of file diff --git a/db/page/page-286.json b/db/page/page-286.json new file mode 100644 index 0000000..1300ebb --- /dev/null +++ b/db/page/page-286.json @@ -0,0 +1,56 @@ +{ + "ID": 286, + "post_title": "Section Block", + "post_content": "\n\n

Normal Width - ml-break-out

\n\n\n\n

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

\n\n\n\n\n\n

Normal Width - mr-break-out

\n\n\n\n

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

\n\n\n\n\n\n

Full Width - WP controls

\n\n\n\n

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

\n\n\n\n\n\n

Full Width - mx-break-out

\n\n\n\n

Senectus a parturient mi molestie mus duis sodales ut a a a ullamcorper vestibulum a tristique cubilia erat. Et placerat consectetur cubilia venenatis dolor risus dictumst eget adipiscing est venenatis ligula parturient elit dignissim vulputate nec nunc congue consectetur ullamcorper pharetra parturient. Suspendisse mollis odio cubilia parturient senectus suspendisse nam adipiscing tristique ultrices interdum non cras posuere vestibulum blandit felis dignissim. Lacinia commodo a congue dis adipiscing massa sodales fermentum himenaeos a auctor est arcu a suspendisse morbi a. Et inceptos vestibulum vestibulum ullamcorper egestas at ad adipiscing torquent lectus ullamcorper congue ac ipsum nulla morbi risus purus id lacus suspendisse nascetur nisl parturient penatibus a imperdiet volutpat. Vestibulum diam proin viverra bibendum scelerisque eget mollis sem laoreet convallis consequat hac tortor iaculis.

\n\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "section-block", + "meta": { + "_edit_lock": [ + "1744572889:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "footnotes": [ + "" + ] + } +} \ No newline at end of file diff --git a/db/page/page-33.json b/db/page/page-33.json new file mode 100644 index 0000000..0cace90 --- /dev/null +++ b/db/page/page-33.json @@ -0,0 +1,56 @@ +{ + "ID": 33, + "post_title": "Blocks", + "post_content": "", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "blocks", + "meta": { + "_edit_lock": [ + "1744574522:1" + ], + "footnotes": [ + "" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/page/page-40.json b/db/page/page-40.json new file mode 100644 index 0000000..ba91199 --- /dev/null +++ b/db/page/page-40.json @@ -0,0 +1,44 @@ +{ + "ID": 40, + "post_title": "Home", + "post_content": "", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "home", + "meta": { + "_edit_lock": [ + "1746384443:1" + ], + "footnotes": [ + "" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "none" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/page/page-42.json b/db/page/page-42.json new file mode 100644 index 0000000..07c9490 --- /dev/null +++ b/db/page/page-42.json @@ -0,0 +1,53 @@ +{ + "ID": 42, + "post_title": "News", + "post_content": "", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "news", + "meta": { + "_edit_lock": [ + "1742426884:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/page/page-520.json b/db/page/page-520.json new file mode 100644 index 0000000..45c38ff --- /dev/null +++ b/db/page/page-520.json @@ -0,0 +1,62 @@ +{ + "ID": 520, + "post_title": "Page With Sidebar", + "post_content": "\n

Ac facilisi sit scelerisque proin luctus a ullamcorper etiam massa ac potenti volutpat iaculis integer facilisis vivamus. Vestibulum mi porta non at risus euismod nascetur a vestibulum sociosqu parturient ornare adipiscing habitasse dui nec eget aliquam. Odio cras sem mi a vestibulum tristique eget rhoncus penatibus porta sem suscipit egestas rhoncus imperdiet a parturient mollis ut facilisi. Eleifend risus dapibus in quis habitasse cum iaculis a habitant suspendisse cras ac vestibulum facilisi suspendisse. Ut a tristique vestibulum montes malesuada duis condimentum netus quam odio elit dictumst pharetra pulvinar per interdum ad. A sagittis posuere mi conubia a mattis a at parturient scelerisque venenatis a velit ultrices primis orci eu mi odio urna sem enim ullamcorper eget id fermentum a.

\n\n\n\n

Vel parturient eu eget a a litora ullamcorper nostra facilisis neque ullamcorper ridiculus duis non et condimentum euismod ultricies curabitur. Et vestibulum a venenatis a elementum ligula penatibus dignissim eget eu donec a adipiscing pharetra ac dui scelerisque. Penatibus malesuada lectus nunc vel a ad volutpat cursus ultricies habitasse posuere blandit morbi lectus quisque sit scelerisque purus erat a vestibulum adipiscing bibendum scelerisque. Suspendisse placerat nec non vehicula conubia quis risus a leo erat etiam scelerisque mi arcu viverra senectus tincidunt platea mollis eu erat ut.

\n\n\n\n

In suscipit a velit fermentum purus elementum posuere per platea in amet ut urna dignissim non eleifend sed mus donec aliquam leo non integer convallis parturient consectetur. Dis dui in mattis nullam ornare adipiscing placerat mi a dictum vestibulum orci cubilia parturient rhoncus urna tellus consectetur nullam. Dictumst nunc erat himenaeos urna vivamus odio et fusce etiam lobortis hendrerit dictumst cubilia iaculis non a inceptos ac platea. Augue aptent a ullamcorper nibh porta condimentum mus vestibulum at non mus a ridiculus himenaeos ullamcorper conubia vivamus suspendisse fermentum euismod justo ullamcorper. A a iaculis euismod integer nec vestibulum tristique id a ullamcorper at id ad vestibulum dis ullamcorper.

\n\n\n\n

Vestibulum mauris non hac id a parturient porta cras adipiscing condimentum a sociosqu scelerisque sociis quam dolor a a fermentum eleifend eros lectus erat convallis id inceptos. Himenaeos penatibus senectus vestibulum morbi a ante imperdiet parturient habitant suspendisse adipiscing ad a consequat nibh aliquam torquent at ad consectetur montes. Sociosqu habitant suspendisse a libero orci eros facilisis adipiscing leo lorem risus ante ad nam a litora mi primis.

\n\n\n\n

Condimentum molestie vestibulum habitasse tristique sed et hendrerit consectetur scelerisque nibh ac facilisi condimentum feugiat etiam aptent lacus a etiam in a erat ac nec. Potenti amet ut parturient pharetra litora in tempus mattis eu purus cum aptent volutpat turpis ipsum taciti id purus viverra. Ut convallis conubia condimentum a a a a a ullamcorper erat scelerisque a dolor ac nullam ullamcorper. A dui justo adipiscing facilisis scelerisque duis duis nisl est accumsan suscipit a justo primis at blandit posuere at consectetur tortor eget imperdiet est ornare sapien odio suscipit. Dictumst fermentum a a nisi nunc volutpat congue adipiscing quam vestibulum suspendisse laoreet scelerisque torquent mus a condimentum eget convallis.

\n", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "page-with-sidebar", + "meta": { + "_edit_lock": [ + "1746896293:1" + ], + "_edit_last": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ], + "footnotes": [ + "" + ], + "has_sidebar": [ + "1" + ], + "_has_sidebar": [ + "field_6817d7954a168" + ] + } +} \ No newline at end of file diff --git a/db/page/page-537.json b/db/page/page-537.json new file mode 100644 index 0000000..6a0288e --- /dev/null +++ b/db/page/page-537.json @@ -0,0 +1,59 @@ +{ + "ID": 537, + "post_title": "Contact", + "post_content": "", + "post_excerpt": "", + "post_type": "page", + "post_status": "publish", + "post_name": "contact", + "meta": { + "_edit_lock": [ + "1747607528:1" + ], + "_edit_last": [ + "1" + ], + "has_sidebar": [ + "0" + ], + "_has_sidebar": [ + "field_6817d7954a168" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/post/post-1.json b/db/post/post-1.json new file mode 100644 index 0000000..625367e --- /dev/null +++ b/db/post/post-1.json @@ -0,0 +1,10 @@ +{ + "ID": 1, + "post_title": "Hello world!", + "post_content": "\n

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

\n", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "hello-world", + "meta": [] +} \ No newline at end of file diff --git a/db/post/post-100.json b/db/post/post-100.json new file mode 100644 index 0000000..d9e6630 --- /dev/null +++ b/db/post/post-100.json @@ -0,0 +1,17 @@ +{ + "ID": 100, + "post_title": "Quasi consequatur ut ut aut.", + "post_content": "Dolores tenetur vitae officia cupiditate. Laudantium velit non ut ullam modi debitis nulla. Et animi impedit beatae aspernatur. Aliquam molestiae ex rem impedit.\n\nVoluptatibus deserunt dignissimos ad voluptas. Neque aut repellat officia debitis quo. Voluptate necessitatibus eveniet voluptas inventore consequatur odio aliquam.\n\nHic aliquid voluptate deleniti quae est numquam doloremque. Sunt quaerat quis est. Ducimus occaecati et repellat repudiandae.Natus possimus dolor suscipit ex ut consectetur non accusantium. Corrupti inventore molestiae possimus. Voluptates incidunt consequatur est beatae. Vel aut qui possimus qui. Nesciunt sit dolore ab tempore voluptatem dicta sint. Reiciendis temporibus sit dolor velit dolorem maiores. Quidem corporis qui reprehenderit molestias. Consequuntur et maxime ut aliquid rem reprehenderit possimus adipisci. Temporibus aut fugit animi porro aut non repellat. Dolorum qui tempore dolorum consequatur. Nesciunt porro ex quo sapiente velit voluptas asperiores qui. Illum earum porro modi similique quod quae dolorem autem. Magni maiores tenetur consectetur et. Nulla corporis sequi iste explicabo accusamus.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "quasi-consequatur-ut-ut-aut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "101" + ] + } +} \ No newline at end of file diff --git a/db/post/post-102.json b/db/post/post-102.json new file mode 100644 index 0000000..b4fbee4 --- /dev/null +++ b/db/post/post-102.json @@ -0,0 +1,17 @@ +{ + "ID": 102, + "post_title": "Ratione facilis expedita nostrum.", + "post_content": "Rerum minima maxime a non. Est dolor illo deleniti sint. Accusantium non optio dignissimos incidunt ducimus. Nulla quod quis ratione. Accusantium harum aspernatur velit ut.\n\nAccusamus sunt quam ad omnis et. Non unde harum aut mollitia tempore molestias error aut. Aut soluta hic rem omnis et.\n\nNon enim porro sed possimus facilis laboriosam sint. Nostrum sed hic laboriosam dignissimos et.Et quibusdam vero quo et. Earum fuga voluptatem voluptates et. Assumenda rerum sit perspiciatis qui. In sit ducimus sed aut magni consequatur. Id animi sequi voluptas consectetur nihil. Non itaque omnis dolor sed est est. Placeat rerum et nulla et quia quibusdam odit. Autem ex molestiae inventore quisquam. Id sit aut numquam modi aut. Et enim voluptas blanditiis porro. A architecto quisquam delectus aspernatur incidunt dolorem harum voluptatem. Modi fuga et et magni dignissimos sed minus ipsa. Distinctio enim rerum ab sapiente veniam. Omnis eius et rerum eum eaque. Ipsa enim culpa enim. Mollitia dicta vitae qui unde quae et doloremque. Ut ipsam voluptatem quo enim cupiditate ducimus qui.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "ratione-facilis-expedita-nostrum", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "103" + ] + } +} \ No newline at end of file diff --git a/db/post/post-104.json b/db/post/post-104.json new file mode 100644 index 0000000..228be65 --- /dev/null +++ b/db/post/post-104.json @@ -0,0 +1,17 @@ +{ + "ID": 104, + "post_title": "Dolore quod minus veniam dolore.", + "post_content": "Nobis molestiae error nemo similique nihil eligendi. Odit repudiandae repudiandae et inventore architecto eum ullam. Eaque dicta quo excepturi. Eos quo nostrum earum. Eligendi velit autem dicta doloribus ab aut.\n\nEnim et harum blanditiis aut aut. Neque neque molestiae et optio molestias. Molestiae distinctio eveniet nesciunt laboriosam fugit beatae. Esse provident non architecto distinctio. Accusamus et unde vel eum.\n\nEt sint velit consequatur et repellat quas. Voluptas cumque nihil modi aut maiores accusamus excepturi autem. Veritatis eum voluptates amet. Quisquam architecto excepturi repellendus ut excepturi qui eaque.Numquam vitae aut quisquam non et. Similique reprehenderit cum placeat rem voluptatum reiciendis. Odit quis quis voluptatem reiciendis exercitationem iure. Non laborum et nihil explicabo a. Praesentium et recusandae consectetur consequatur doloremque nostrum quo numquam. Reiciendis autem quaerat nam tempora ut aut ad. Laborum animi aut id quis tenetur aliquam. Praesentium deleniti rerum exercitationem aperiam ut. Dolores non ut incidunt voluptatem error. Sed repellat dolorum optio iure. Quia voluptatem et omnis animi quos nesciunt. Quis debitis aperiam vel molestias. Perferendis unde facilis temporibus iure ex aliquam possimus.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "dolore-quod-minus-veniam-dolore", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "105" + ] + } +} \ No newline at end of file diff --git a/db/post/post-106.json b/db/post/post-106.json new file mode 100644 index 0000000..9810aaf --- /dev/null +++ b/db/post/post-106.json @@ -0,0 +1,17 @@ +{ + "ID": 106, + "post_title": "Eos nihil facilis aut esse.", + "post_content": "Minus magnam ipsa est qui harum. Omnis dolor et nemo consequuntur illum consequatur. Voluptatem beatae voluptatem facere. Non dolorem natus impedit tempora maiores illo omnis.\n\nAut commodi quibusdam accusamus eligendi praesentium et delectus. Quis et provident sit qui ad. Quisquam sunt velit officiis ipsa expedita fugiat possimus. Et qui ducimus animi qui officia est consequuntur quam.\n\nCommodi est ut voluptatem maiores praesentium. Mollitia autem maxime aut placeat. Quia esse debitis tempora qui iure velit odio corporis. Beatae consequatur dicta libero in delectus perferendis incidunt sint.Est qui non quo quaerat. Placeat nemo quos earum accusamus dignissimos deserunt. Corrupti reprehenderit et in iste. Maiores ea sit nam et quasi. Quasi quia culpa nihil sed perspiciatis voluptas dolor id. Optio molestiae fuga maxime quaerat consequatur nobis occaecati. Magni commodi voluptatem odio mollitia nesciunt. Modi atque rerum optio ipsam. Sed error facilis dolores tenetur natus ex quasi eum. Similique perspiciatis sunt quia numquam quod est est. Itaque molestiae error aut. Culpa eos consequatur optio sunt. Quas ipsa ea consequuntur aut. Eos ducimus facere qui officia. Blanditiis neque et corporis. Minima eligendi iure dolores repellendus quis nihil.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "eos-nihil-facilis-aut-esse", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "107" + ] + } +} \ No newline at end of file diff --git a/db/post/post-108.json b/db/post/post-108.json new file mode 100644 index 0000000..f4f1f9c --- /dev/null +++ b/db/post/post-108.json @@ -0,0 +1,17 @@ +{ + "ID": 108, + "post_title": "Minus qui aspernatur ut saepe sapiente.", + "post_content": "Quod doloribus in repellat vitae aut et. Dolor aliquam modi sunt tenetur et molestias. Doloribus aut mollitia quis est. Facilis quia dolor rerum quas minus quod.\n\nRepellat omnis qui reprehenderit quae corrupti. Fugiat et eveniet et doloribus distinctio culpa. Rerum veritatis molestiae voluptate optio in qui. Et rerum eligendi beatae est sequi.\n\nQuam mollitia deserunt maxime eos. Aperiam voluptate officia aut vel quam. Reprehenderit eaque ipsam saepe. Ipsum blanditiis expedita repellendus.Sed ut maxime suscipit suscipit ipsam. Quam ducimus sit provident et rerum. Cupiditate quo fugiat rerum quis qui voluptatem. Minima dolore quod aspernatur optio corporis odit asperiores dolores. Voluptatem repellendus voluptate odio omnis. Possimus est nemo sunt deserunt. Optio est eveniet itaque ea libero aut excepturi. Excepturi nihil hic voluptate nobis voluptate. Delectus molestiae repellat ut rem modi nemo sunt expedita. Magnam dolores blanditiis modi. Delectus non ea iusto et at est. Quia voluptatem provident qui saepe quas consequuntur sapiente.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "minus-qui-aspernatur-ut-saepe-sapiente", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "109" + ] + } +} \ No newline at end of file diff --git a/db/post/post-110.json b/db/post/post-110.json new file mode 100644 index 0000000..baa2ab8 --- /dev/null +++ b/db/post/post-110.json @@ -0,0 +1,17 @@ +{ + "ID": 110, + "post_title": "Dolorem nam nesciunt quos.", + "post_content": "Repudiandae minus facere cumque quas illo ea ut aut. Neque nemo corporis voluptates officia rerum in et doloremque. Nihil id doloribus quod quia voluptatem totam nulla.\n\nSed ipsa totam rem commodi soluta ut qui. Et aperiam voluptas omnis exercitationem.\n\nSit pariatur voluptates dolor minima. Quae cum consequatur quaerat assumenda. Sit mollitia exercitationem perferendis consequatur esse voluptatem dignissimos. Velit sed sed quia quam.Autem facilis qui ratione eos et esse quis. Quisquam commodi ratione corrupti sed qui quia. Nemo et praesentium debitis accusamus soluta qui. Delectus similique aut accusantium non deserunt animi. Animi qui debitis iure et at provident sit sint. Ducimus alias laboriosam nihil. Nam omnis aut ullam aut laborum. Nobis voluptatem nulla est quae. Ullam qui explicabo autem maxime saepe. Sit consequatur dolor dolores qui ex optio laudantium. Nemo consequuntur fugiat autem nihil beatae laboriosam iusto. Natus eum voluptatum qui incidunt sunt et sapiente. Eligendi cumque ut vitae maxime nemo quae.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "dolorem-nam-nesciunt-quos", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "111" + ] + } +} \ No newline at end of file diff --git a/db/post/post-112.json b/db/post/post-112.json new file mode 100644 index 0000000..e5cf9dc --- /dev/null +++ b/db/post/post-112.json @@ -0,0 +1,17 @@ +{ + "ID": 112, + "post_title": "Hic sed ex vel doloribus sapiente.", + "post_content": "Est repellendus itaque accusamus pariatur tempora fugiat. Sapiente suscipit numquam in perferendis velit aperiam. Magni harum ex inventore. Accusamus mollitia impedit velit est atque.\n\nConsequatur quasi similique est aspernatur adipisci autem eum. Consequatur aliquam natus est rerum itaque illo.\n\nNemo ipsa veritatis dolor delectus reprehenderit nesciunt ipsum. Unde blanditiis enim dolorem molestiae autem eveniet ea. Aut incidunt omnis nemo magnam ducimus commodi vitae.Et natus aut incidunt sapiente repellendus laudantium fuga. Cumque id voluptas fugit impedit numquam vitae. Sit necessitatibus molestias hic quia. Enim sed omnis dolorem quibusdam ipsa voluptates. Veniam praesentium iure incidunt alias laborum. Quod quam sit nobis nemo cupiditate quasi itaque. Ut nostrum modi veniam ab recusandae sapiente. Blanditiis iste reprehenderit quasi. Officiis neque corporis alias reiciendis ut voluptatem inventore. Est nesciunt distinctio facilis consequatur ut et ut. Et quae rerum aut quaerat necessitatibus minus qui. Animi et cumque et fugiat voluptatem aut. Suscipit qui id et eaque et. Nobis enim est et exercitationem.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "hic-sed-ex-vel-doloribus-sapiente", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "113" + ] + } +} \ No newline at end of file diff --git a/db/post/post-114.json b/db/post/post-114.json new file mode 100644 index 0000000..d5a6939 --- /dev/null +++ b/db/post/post-114.json @@ -0,0 +1,17 @@ +{ + "ID": 114, + "post_title": "Doloremque omnis nobis vel rem ut vero.", + "post_content": "Et aut veritatis dolor voluptates eos sint tempore. Laboriosam dignissimos commodi itaque mollitia eligendi cumque vel. Alias sed a corporis atque ullam.\n\nVoluptas eos laborum quisquam dolorem. Tempore voluptatem et sint consequuntur ut.\n\nVoluptas accusantium voluptas molestias pariatur sed reiciendis. Explicabo est voluptatibus velit quia praesentium aspernatur non. Veritatis error vero et est qui atque corporis.Beatae deserunt libero sint laborum atque aut. Harum culpa culpa laboriosam aut quas nihil est. Molestiae minus aspernatur dolorum. Neque sit cupiditate amet dolor laborum deleniti neque. Occaecati minima odio odit. Sunt laudantium sunt rem itaque necessitatibus pariatur. Qui voluptas eius consequatur. Sed ut sit ab a facere omnis et. Possimus cupiditate alias cumque. Pariatur nesciunt quia nam et ut autem voluptas. Debitis amet harum omnis necessitatibus quasi quis laboriosam non. Ducimus qui qui voluptates necessitatibus tempora recusandae. Qui eos voluptas porro soluta ea.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "doloremque-omnis-nobis-vel-rem-ut-vero", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "115" + ] + } +} \ No newline at end of file diff --git a/db/post/post-116.json b/db/post/post-116.json new file mode 100644 index 0000000..52cf247 --- /dev/null +++ b/db/post/post-116.json @@ -0,0 +1,17 @@ +{ + "ID": 116, + "post_title": "Mollitia quo aut dolor.", + "post_content": "Occaecati et consectetur earum minima blanditiis eos. Eos non sit maiores aut. Delectus consectetur aspernatur quia velit facere. Natus et rerum porro incidunt. Error sed qui ipsam numquam officiis.\n\nDolores aliquam distinctio et quia et non. Eum eos consequuntur error assumenda. Omnis non voluptatum eum aliquid pariatur consectetur.\n\nDolorum nam perferendis iusto nobis officia laudantium. Error cumque fugiat culpa voluptatum magni amet rerum. Vero quaerat id aut dolorem ipsa.Ut sunt nulla ullam nam sunt est. Voluptate quam a error quo molestias. Sapiente omnis nihil ipsam corporis assumenda. Soluta praesentium ratione natus sint. Nihil atque voluptatem sed fugiat quam dolore et expedita. Sit modi ullam ut quis et eligendi. Est deleniti eligendi voluptas est. Minus unde aut voluptas. Eveniet dolores consequuntur est sit voluptates. Aliquam sequi itaque suscipit tempore. Fugiat qui occaecati qui maxime ipsam. Voluptas et pariatur expedita perspiciatis aut. Ipsam qui quia eum. Qui vitae pariatur corporis ut laboriosam ea nesciunt. Quia quasi laboriosam veritatis. Ex quidem corporis dolorem fugiat.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "mollitia-quo-aut-dolor", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "117" + ] + } +} \ No newline at end of file diff --git a/db/post/post-118.json b/db/post/post-118.json new file mode 100644 index 0000000..972f97b --- /dev/null +++ b/db/post/post-118.json @@ -0,0 +1,17 @@ +{ + "ID": 118, + "post_title": "Modi est nobis modi quasi doloremque.", + "post_content": "Ipsam eaque accusamus voluptatem voluptatum incidunt. Fugit eligendi et neque dolor qui dolorum.\n\nSapiente suscipit soluta distinctio animi. Est nesciunt neque molestias perferendis maiores maxime. Modi enim et eius voluptatibus culpa.\n\nQui eos aut optio dolores reprehenderit tenetur dolores illum. Dolores omnis illo atque veritatis eligendi voluptatem. Animi harum esse voluptatem provident laudantium.Aliquid quo dicta est impedit quasi quo. Magnam corrupti quae praesentium neque ullam quia. Harum ut fugit aut fuga eligendi. Ut quia culpa itaque dicta natus temporibus perferendis aut. Autem sed maiores at non. Sed eum non id quo ut. Illo non ea ducimus dolore corrupti. Nobis ut et qui voluptatum odio. Quas quod et et doloribus. Quaerat voluptates quos et distinctio provident. Delectus quibusdam et sit saepe omnis. Hic quibusdam velit asperiores aut. Autem alias similique omnis sed ut optio. Impedit iste et qui voluptas deleniti. Mollitia ut officia animi ipsum et aliquam vero explicabo. Aut quis non magnam mollitia incidunt. Inventore soluta cupiditate possimus. Aut autem impedit et.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "modi-est-nobis-modi-quasi-doloremque", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "119" + ] + } +} \ No newline at end of file diff --git a/db/post/post-120.json b/db/post/post-120.json new file mode 100644 index 0000000..476f4a8 --- /dev/null +++ b/db/post/post-120.json @@ -0,0 +1,17 @@ +{ + "ID": 120, + "post_title": "Excepturi dolore modi eius doloribus.", + "post_content": "Suscipit explicabo dolores dicta libero molestiae. Rem laudantium sed illum repudiandae accusamus. Iste id optio mollitia est accusantium. Natus amet velit id animi.\n\nEt et vitae voluptas sunt quos et. Non et sapiente nam voluptas. Magnam qui voluptatem quia tempora vel ipsam. Cupiditate qui consequatur qui unde.\n\nFacilis numquam suscipit sunt reiciendis repudiandae dignissimos asperiores. Autem omnis voluptatem iure possimus molestiae quae nihil.Aut quod ut earum asperiores officiis omnis. At neque porro tenetur quia nemo ut excepturi voluptas. Quod ex explicabo non iste autem deserunt tenetur consequatur. Possimus eos ipsa voluptatum nemo blanditiis deserunt. Tenetur eos sed dolores eaque voluptatem. Distinctio qui autem illo consequatur. In et sit quo id sint adipisci. Dolore quos cupiditate nostrum facere consequatur ratione assumenda. Sit voluptatem quae fugit accusamus. Deserunt iure in et molestiae voluptatem tempore et. Molestiae temporibus inventore quia. Ipsum at velit vel ut nostrum pariatur rerum suscipit. Est alias similique libero. Similique ipsa ipsam similique id. Vitae eius qui quia explicabo maxime ducimus eos.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "excepturi-dolore-modi-eius-doloribus", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "121" + ] + } +} \ No newline at end of file diff --git a/db/post/post-122.json b/db/post/post-122.json new file mode 100644 index 0000000..9a8311f --- /dev/null +++ b/db/post/post-122.json @@ -0,0 +1,17 @@ +{ + "ID": 122, + "post_title": "Fugit eum labore cupiditate.", + "post_content": "Pariatur beatae magnam sit nihil qui quod amet. Adipisci odio iure sed omnis quia ut. Voluptatem cumque ipsum non soluta enim.\n\nAut a dignissimos blanditiis iure fugit possimus similique. Suscipit nisi laboriosam culpa iste. Qui deleniti quod tempore quia.\n\nCumque sed et qui nobis incidunt quia. Delectus in error dicta ut. Voluptatum est recusandae perspiciatis debitis. Laudantium occaecati voluptas et et rerum. Illo aut laboriosam voluptate sint.Suscipit officia id ullam molestiae. Suscipit nostrum iure veniam iure enim. Cumque aperiam sunt dolor quae. Illum repudiandae id saepe labore nam corrupti quam sed. Qui odit fugiat est culpa iste sed. Voluptas in blanditiis omnis nostrum consectetur id recusandae nam. Veniam rerum ut rem voluptate enim id. Repudiandae voluptatem illo magnam et vero totam. Et esse nesciunt ex consequatur repudiandae reprehenderit. Ab cum repellendus qui qui iusto occaecati voluptate. Culpa a vel assumenda. Dicta alias quidem ea ut sunt. Dicta aut odio molestiae omnis. Tempora sunt ut omnis voluptatem nam nihil sunt.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "fugit-eum-labore-cupiditate", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "123" + ] + } +} \ No newline at end of file diff --git a/db/post/post-124.json b/db/post/post-124.json new file mode 100644 index 0000000..74409fe --- /dev/null +++ b/db/post/post-124.json @@ -0,0 +1,17 @@ +{ + "ID": 124, + "post_title": "Aut eos cumque sit beatae.", + "post_content": "Possimus qui inventore aliquid molestiae voluptas. Hic sunt et reiciendis voluptatibus inventore velit. Unde suscipit pariatur et consequatur amet recusandae aut. Necessitatibus cum voluptas voluptas ut error dolorem alias. Facilis reprehenderit odit corporis facilis rem quidem.\n\nEst et eius non eum expedita cumque. Ullam quia qui itaque saepe autem maxime excepturi. Vero voluptas rerum veritatis ullam aut eligendi ut.\n\nEst voluptatem perspiciatis accusamus voluptatem eum accusantium similique dolore. Quis dolorem ipsum quam commodi. Ipsum provident perspiciatis ea est. Beatae modi architecto molestias hic fugiat veritatis sit.Voluptas quibusdam consequatur rerum exercitationem ex aut enim. Et explicabo reiciendis accusantium quo. Voluptatem perferendis dolore ut eum. Reiciendis quia praesentium explicabo rem tempora adipisci. Similique omnis asperiores in reiciendis. Cupiditate ut ratione dolor rerum quia. Saepe alias minima suscipit tempore natus modi. Sit neque qui et sint repudiandae autem placeat. Consequuntur facilis magni ut. Omnis perferendis voluptates dolorem culpa omnis non. Eum architecto aut nihil vitae facere qui voluptates. Sunt voluptatem eius excepturi delectus sed dolore. Error voluptatem iure earum aliquid sed. Accusantium dignissimos veniam ad.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "aut-eos-cumque-sit-beatae", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "125" + ] + } +} \ No newline at end of file diff --git a/db/post/post-46.json b/db/post/post-46.json new file mode 100644 index 0000000..3ed9730 --- /dev/null +++ b/db/post/post-46.json @@ -0,0 +1,17 @@ +{ + "ID": 46, + "post_title": "Est facilis rem at ex velit temporibus.", + "post_content": "Consequuntur labore in est nemo nobis. Eligendi minima vitae culpa placeat. Sint saepe impedit eligendi repudiandae.\n\nLaudantium fugiat sunt est doloribus quia sed. Sapiente ipsum corporis laboriosam sed voluptas. Culpa placeat non consequatur dolorem esse veritatis. Dicta unde illo cupiditate est.\n\nMaiores officia facere officiis cum voluptatem. Ad aut dolor quaerat enim ut. Recusandae eos eaque rerum vitae accusamus cum. Sunt velit voluptate unde praesentium et sint numquam.Hic voluptas ut qui quo. Tempore in laborum ad praesentium. Sed porro natus officia ut ipsa veritatis. Et a architecto voluptas a rerum quidem tempora. Quod natus et voluptatibus omnis deserunt quia eos. Officia beatae alias dolores architecto sed ipsam ratione. Tenetur commodi nulla omnis aliquid culpa dolores. Vel non vitae sunt doloribus. Accusantium hic magni aut consequatur. Rerum corrupti occaecati quibusdam ut est mollitia. Sit repudiandae earum vel et aut quo quis. Rerum officia qui a ducimus ullam et. Maxime quia omnis modi iste aut at natus. Explicabo voluptatem sit dolores voluptatem dolores officia minima.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "est-facilis-rem-at-ex-velit-temporibus", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "47" + ] + } +} \ No newline at end of file diff --git a/db/post/post-48.json b/db/post/post-48.json new file mode 100644 index 0000000..b15f227 --- /dev/null +++ b/db/post/post-48.json @@ -0,0 +1,17 @@ +{ + "ID": 48, + "post_title": "Et dolores magnam repudiandae officia.", + "post_content": "Omnis est deserunt autem modi. Minus sint nihil esse veniam quasi sit.\n\nSaepe occaecati tempore dignissimos doloribus. Vero deleniti ipsum natus illo neque quasi. Eius vitae voluptas quam sunt mollitia.\n\nEius voluptatum magnam quas consequatur repellat tempore suscipit est. Eos quo omnis distinctio necessitatibus fugit. Magnam enim aspernatur corporis sunt nisi sit et. Adipisci quae est et velit facilis et ea.Sit ut porro hic repudiandae. Illum sit non voluptas molestias qui qui ad esse. Distinctio maiores excepturi culpa. Quam quidem voluptas eum ad ut dolores. Iste amet id consequatur numquam quam officiis. Numquam qui repellat molestiae eos vitae eum aliquam eaque. Porro libero numquam iure tempore. Sint mollitia dolore inventore exercitationem consequatur. Officiis ex a nihil velit itaque quisquam laborum. Dolor eum ipsa officia illo ut facere. Beatae perferendis quo et. Autem consequatur quas dolores provident sed. Quidem quos nihil ad amet consequatur.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "et-dolores-magnam-repudiandae-officia", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "49" + ] + } +} \ No newline at end of file diff --git a/db/post/post-50.json b/db/post/post-50.json new file mode 100644 index 0000000..f58dce7 --- /dev/null +++ b/db/post/post-50.json @@ -0,0 +1,17 @@ +{ + "ID": 50, + "post_title": "Quo sint eveniet debitis aut.", + "post_content": "Provident optio et sapiente quia autem. Sint delectus consectetur maxime harum non rerum. Eius sunt provident non qui et. Porro eos nemo explicabo est neque sit neque eligendi.\n\nRepellendus reprehenderit ex sed eum id repellendus voluptas quidem. Nihil consequatur quibusdam cum numquam quia rerum. Ea asperiores porro alias et voluptatibus vitae.\n\nAmet labore eius animi. In quam quas nulla dolores non dolores. Magni perferendis distinctio aut accusamus repudiandae dolorem consequatur qui. Quas consequatur eaque pariatur sit quia eum quis.Id aut ut itaque. Voluptatem non sed pariatur placeat doloremque sint. Ad qui repudiandae soluta id reiciendis. Non accusantium dolor quasi rerum. Fuga ea non distinctio explicabo velit. Ut eum voluptas velit dolor quasi. Necessitatibus ratione est consectetur aliquid odio voluptates. Provident nihil consectetur magnam similique aut. Eum repudiandae voluptates nesciunt. Delectus voluptatem ipsam illo et consectetur. Hic amet a ipsa qui accusantium eos quia rerum. Ut velit optio voluptas perspiciatis voluptas dolores quia. Nesciunt ut aut eius ea sint a temporibus. Magnam labore impedit ullam ut nihil voluptatem non. Laborum numquam dolor vel ipsa.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "quo-sint-eveniet-debitis-aut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "51" + ] + } +} \ No newline at end of file diff --git a/db/post/post-52.json b/db/post/post-52.json new file mode 100644 index 0000000..bfa6026 --- /dev/null +++ b/db/post/post-52.json @@ -0,0 +1,17 @@ +{ + "ID": 52, + "post_title": "Ut eaque est quibusdam quaerat non.", + "post_content": "Enim deserunt dicta illum et nam. Sint ipsa ex reprehenderit ut quam dolorem est in. Dignissimos modi omnis aliquam sunt voluptatem nesciunt exercitationem reiciendis. Voluptas dolores reiciendis dolores est autem.\n\nDolor nostrum sed enim. Tenetur aut corporis et fuga maxime cumque et. Velit eos ad iusto inventore rerum harum.\n\nLaboriosam nisi voluptatibus itaque autem et et. Ipsa iste non est.Consequatur et distinctio ea rerum aspernatur deserunt sit. Repudiandae hic beatae nostrum vero nam rerum. Qui commodi veniam culpa doloremque quos. Illum et et soluta. Minus laborum et recusandae necessitatibus. Labore fugiat alias vero molestiae aperiam. A perspiciatis modi vel. Qui sed quibusdam qui saepe harum placeat et. Velit soluta nulla iure et cum. Cum rerum et consectetur asperiores sed repellendus. Unde veniam temporibus atque numquam delectus et occaecati. Officia provident voluptas id aut et quia expedita. Saepe quas doloribus possimus sed repudiandae. Dignissimos sit in labore dicta.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "ut-eaque-est-quibusdam-quaerat-non", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "53" + ] + } +} \ No newline at end of file diff --git a/db/post/post-54.json b/db/post/post-54.json new file mode 100644 index 0000000..cc922cb --- /dev/null +++ b/db/post/post-54.json @@ -0,0 +1,17 @@ +{ + "ID": 54, + "post_title": "Quia quo sit voluptates excepturi.", + "post_content": "Asperiores atque autem libero qui quisquam quasi. Dolores aut sit est quis voluptatum quo. Occaecati dolor illum id voluptates enim voluptates voluptas similique.\n\nVoluptatibus officia earum minima qui eveniet quas doloribus. Voluptates placeat et repellendus quaerat nemo illum impedit. Ea omnis veniam in eligendi error.\n\nAut nostrum praesentium in unde incidunt consequatur animi quo. Qui repellendus porro fugiat velit ex rerum. Minus ex ut rerum cum eos aperiam non vitae.Aut quis explicabo possimus ipsa. Quas voluptas facere omnis at voluptatum voluptatem. Officia doloremque possimus veniam delectus incidunt. Praesentium doloribus praesentium iusto eligendi. Dolor quas sequi est esse qui. Qui non magni cum eligendi eligendi porro. Quos incidunt ut vero. Harum nostrum libero rem ut. Eveniet enim qui rerum architecto. Reprehenderit doloribus rerum dignissimos et. Eos enim temporibus dicta neque voluptatum nihil est. Rerum aspernatur sint cum delectus qui. Inventore maxime voluptatem id. Natus nihil rem odit commodi mollitia in earum.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "quia-quo-sit-voluptates-excepturi", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "55" + ] + } +} \ No newline at end of file diff --git a/db/post/post-56.json b/db/post/post-56.json new file mode 100644 index 0000000..8b4f241 --- /dev/null +++ b/db/post/post-56.json @@ -0,0 +1,17 @@ +{ + "ID": 56, + "post_title": "Dolorem vitae voluptas architecto.", + "post_content": "Autem necessitatibus libero cumque quaerat doloribus. Quo sequi itaque odit eligendi itaque eum. Hic aliquam accusamus excepturi harum inventore ducimus.\n\nRepellendus repellat quibusdam est inventore quis ut quasi optio. Molestiae voluptatem nisi voluptatibus commodi ab. Atque labore repudiandae ex mollitia expedita voluptate et.\n\nQui repellendus sit voluptatum quia molestias eligendi corporis. Repellendus dolorum quod voluptas eveniet. Dolores quis iure explicabo voluptatem.Aliquid voluptate rerum nobis et magnam. Sunt ullam quisquam perferendis nemo numquam. Eos occaecati culpa pariatur doloremque nihil sit. Consectetur qui exercitationem maxime ut. Porro dolorem eligendi sed possimus. Eius corporis et suscipit eum quas voluptatem dolore impedit. Modi quia amet beatae voluptatem maiores quam. Et corporis quisquam non ad ipsa reprehenderit quam dolorem. Ipsa aliquam saepe doloribus repellat earum consequatur. Sunt saepe maxime voluptate laborum maiores quia doloremque. Praesentium neque voluptatum vitae vero sit. Aut qui ducimus est ea illo optio. Omnis animi quidem eum dolor nam sunt odio. Possimus perferendis odio consequatur reiciendis veniam.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "dolorem-vitae-voluptas-architecto", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "57" + ] + } +} \ No newline at end of file diff --git a/db/post/post-58.json b/db/post/post-58.json new file mode 100644 index 0000000..0652dd1 --- /dev/null +++ b/db/post/post-58.json @@ -0,0 +1,17 @@ +{ + "ID": 58, + "post_title": "Nulla provident aut dolores velit fuga.", + "post_content": "Sed aperiam saepe rerum id laborum libero. Autem repellat dolorem autem. Amet veniam possimus fuga omnis rerum sit consequatur.\n\nSequi voluptatem vero tempora ab consequatur. Qui consequatur nihil blanditiis expedita maxime deserunt eum animi. Necessitatibus quaerat aperiam sit quisquam magni unde.\n\nDebitis earum possimus fugit cupiditate enim non et optio. Omnis sed vitae vel veniam repellendus qui. Est autem quia atque.Est iusto ut dolore quisquam eos voluptatem. Voluptas ex molestiae quibusdam aspernatur quas. Error laborum impedit similique dolorum voluptatum maxime. Voluptatum sed et vero eum sunt. Minima quidem dolorem id est quia. Sit nemo est et quaerat nobis consectetur omnis. Molestiae nostrum eius quia sit omnis ipsa omnis iste. Vel illo aspernatur aut. Eius modi corrupti rerum ipsa. Hic sit repellendus non aliquid nam. Qui nihil voluptatibus dicta enim veritatis. Voluptatem veniam aut praesentium quia deleniti ea assumenda. Omnis omnis placeat unde rerum qui et. Sed quia quos ipsum eveniet omnis animi.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "nulla-provident-aut-dolores-velit-fuga", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "59" + ] + } +} \ No newline at end of file diff --git a/db/post/post-60.json b/db/post/post-60.json new file mode 100644 index 0000000..2110f30 --- /dev/null +++ b/db/post/post-60.json @@ -0,0 +1,17 @@ +{ + "ID": 60, + "post_title": "Dignissimos est sint et esse ut.", + "post_content": "Et sunt consequatur assumenda voluptate laborum quos. Non libero officiis blanditiis consequatur omnis. Commodi odio tempora officiis.\n\nIllo itaque in provident qui. Quas quidem sunt esse non qui dicta. Dolorem quae aut fuga rerum. Enim natus fugit quisquam quasi harum enim.\n\nAt et quia voluptatibus. Voluptas et commodi eius enim fuga saepe dignissimos. Deleniti esse deleniti eum. Harum repellendus velit illum velit vero.Mollitia aut temporibus ut tenetur voluptates possimus aut. Voluptatem ipsa deserunt quia harum aut recusandae quia. Suscipit perspiciatis dolore quia natus sunt. Blanditiis distinctio tempora doloribus doloremque debitis impedit quis. Consequatur porro dolores suscipit pariatur aut illum. Cupiditate id unde id assumenda illo velit. Voluptates nemo voluptatum consequatur quisquam doloremque. Rerum non autem ut culpa atque neque reprehenderit non. Veniam tempore officia esse tenetur. Magnam autem velit tempora commodi voluptas in. Est eos eveniet unde quia accusamus.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "dignissimos-est-sint-et-esse-ut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "61" + ] + } +} \ No newline at end of file diff --git a/db/post/post-62.json b/db/post/post-62.json new file mode 100644 index 0000000..a61eb89 --- /dev/null +++ b/db/post/post-62.json @@ -0,0 +1,17 @@ +{ + "ID": 62, + "post_title": "Praesentium quia qui sequi dicta.", + "post_content": "In omnis inventore cupiditate recusandae delectus velit. Ea eos mollitia exercitationem doloremque porro. Sed aut ut inventore recusandae.\n\nExplicabo eius non fuga ipsa in. Ab maxime exercitationem et nobis reprehenderit. Laudantium distinctio sit veritatis nesciunt.\n\nSed accusantium voluptatem quis incidunt accusantium. Iure impedit laboriosam accusantium dolorem et dolor qui. Vel facilis quasi accusamus ratione quo. Et et soluta necessitatibus labore doloribus neque.Repudiandae ratione qui tempora illo nihil. Et officia molestiae repellendus cupiditate omnis. Accusantium porro qui tempore saepe. Eius corporis et labore rerum et omnis numquam voluptatibus. Ipsa quo nulla non aperiam similique aut nam. Sed explicabo est velit dolor. Ut culpa sint sunt. Odit magni repellendus commodi earum. Rerum modi et inventore voluptas nihil enim nam. Tenetur ut assumenda expedita asperiores natus nostrum dolorem. Et natus iusto alias rem qui iure numquam. Sit eveniet autem numquam modi ab expedita aut. Nihil sunt a fugiat nulla et molestias et aut. Aut aut iure recusandae voluptatum perferendis quia. Explicabo excepturi ab sit itaque minima laborum.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "praesentium-quia-qui-sequi-dicta", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "63" + ] + } +} \ No newline at end of file diff --git a/db/post/post-64.json b/db/post/post-64.json new file mode 100644 index 0000000..7fdfaba --- /dev/null +++ b/db/post/post-64.json @@ -0,0 +1,17 @@ +{ + "ID": 64, + "post_title": "Et dolor dolor voluptas temporibus.", + "post_content": "Mollitia optio qui omnis ut aut. Aut aut voluptate dolorem et. Velit voluptates alias voluptas officia.\n\nEx et sed eos doloribus illum magnam. Nemo voluptatem ratione est voluptatem iure porro. Eligendi quidem quas qui deleniti eos est fuga. Ipsam molestiae at numquam quis quaerat est omnis. Dignissimos nostrum itaque inventore qui sed dolorem placeat.\n\nDolores et nisi omnis occaecati porro laudantium. Quas sequi molestiae ut non quia eos rerum. Cupiditate expedita est alias ad alias.Aut et sed et ad enim quia. Dolorem rerum eum quasi. Explicabo facere animi et qui. Tempore rem illo rerum pariatur quis et. Qui qui est aut aperiam. Officiis a eius quidem commodi harum. Quam accusantium est totam dicta magni reprehenderit. Voluptatem vel dolorem sed fugiat iure aspernatur quas non. Natus dolorem nostrum ipsa ut numquam. A ad architecto aut. Laudantium porro in et sint. Quo officia sapiente fuga sunt voluptate quas. Dicta ducimus enim quo non quas voluptas. Velit et delectus qui non omnis. Quia sed eum totam eveniet. Nostrum cupiditate sed delectus labore ut.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "et-dolor-dolor-voluptas-temporibus", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "65" + ] + } +} \ No newline at end of file diff --git a/db/post/post-66.json b/db/post/post-66.json new file mode 100644 index 0000000..0b90384 --- /dev/null +++ b/db/post/post-66.json @@ -0,0 +1,17 @@ +{ + "ID": 66, + "post_title": "Laboriosam quae enim suscipit a.", + "post_content": "Et suscipit aut quisquam ullam dolorem optio. Aut sint eius tempora beatae animi error.\n\nEsse molestiae quos quia sed autem. Quia debitis quia voluptatem nisi in. In neque quia enim veritatis sit aliquid. Enim quod asperiores repudiandae sapiente esse facere.\n\nNon ea maxime totam velit qui. Ducimus rerum qui voluptates aspernatur repellat numquam officia. Porro aperiam ut nulla qui enim.Occaecati unde minima saepe error maxime. Nostrum sint sequi odit eaque impedit id. Voluptas ducimus atque blanditiis repudiandae. Nihil ea dicta et. Consequuntur quaerat non autem eveniet et ea corporis. Minima quis dolor error impedit corrupti eaque. Consectetur quibusdam doloribus soluta provident iure fuga numquam non. Molestiae consequatur illo nobis ut minima. Distinctio occaecati ipsam aliquam quaerat doloribus voluptatem architecto. Perspiciatis exercitationem eum fugit quas earum minima consectetur. Itaque consequatur dicta impedit repellat natus. Dolorum hic tempore ut dolores minus. Rerum enim et totam tempora nulla blanditiis.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "laboriosam-quae-enim-suscipit-a", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "67" + ] + } +} \ No newline at end of file diff --git a/db/post/post-68.json b/db/post/post-68.json new file mode 100644 index 0000000..0c4ebf5 --- /dev/null +++ b/db/post/post-68.json @@ -0,0 +1,17 @@ +{ + "ID": 68, + "post_title": "Ab corrupti libero molestiae et.", + "post_content": "Qui non sunt ut quaerat quasi. Illum aut consequatur eum omnis molestiae. Praesentium ratione fugit libero aut. Est ea tempora qui totam.\n\nAdipisci voluptatem illum laudantium sit beatae ut. Quis magnam mollitia eligendi voluptates et voluptas. Molestiae aut explicabo culpa autem distinctio.\n\nExpedita accusamus deserunt quia est ut. Exercitationem asperiores quia vel id. Corrupti possimus maiores dignissimos reiciendis consectetur fugit. Modi aut enim possimus quas aut.Officia harum quis quia harum. Repellendus consectetur corrupti voluptatibus suscipit commodi fugit. Non sed quae ab atque. Unde occaecati cumque quisquam rem accusamus ab eum. Et occaecati neque dolor quo aut. Dolor quod temporibus iure repellendus. Qui doloribus commodi modi officia quibusdam. Debitis placeat dolore quia est. Quos cumque eaque adipisci qui perspiciatis molestias. Accusamus eum corrupti esse temporibus consequuntur quod. Reiciendis nobis qui dolores in. Amet voluptas ipsum dolore debitis. Eum voluptas ex minus amet eaque natus ea. Esse deserunt adipisci tenetur nostrum aspernatur optio.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "ab-corrupti-libero-molestiae-et", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "69" + ] + } +} \ No newline at end of file diff --git a/db/post/post-70.json b/db/post/post-70.json new file mode 100644 index 0000000..1f9be63 --- /dev/null +++ b/db/post/post-70.json @@ -0,0 +1,17 @@ +{ + "ID": 70, + "post_title": "Magnam atque et sed itaque aut.", + "post_content": "Ut facere qui commodi quo distinctio quibusdam. Atque sit omnis velit quidem id aut distinctio. Fugit numquam corporis sit voluptatem. Magnam omnis omnis at suscipit aspernatur et ut.\n\nAsperiores doloribus quae cumque dolor. Dolorem dolore tenetur ea quaerat rerum vero. Ut in veritatis rerum dicta. Natus quis sunt sit exercitationem sit sint blanditiis.\n\nLibero et delectus quia qui. Aut est modi occaecati aliquid corrupti et tempore. Illum et nisi sit totam cum.Minus dolorem quasi quis vel. Soluta dolores eveniet repellat aliquid. Dolorem saepe debitis odit aut. Incidunt nisi at est sapiente at occaecati ratione explicabo. Molestiae unde minima officia dolores. Quia doloremque explicabo asperiores odit et. Ad ex voluptas qui vitae qui est. Ratione omnis totam quae ut laborum fuga. Ut tempore aperiam rerum fugiat qui ullam eligendi. Suscipit blanditiis rem et facere sunt. Repellat consequuntur enim autem expedita amet est ut. Occaecati neque veniam distinctio ipsam officiis beatae. Pariatur et nisi temporibus saepe beatae optio. Architecto velit et modi facilis. Quia soluta quia sunt molestiae dolor quaerat. Quae in saepe aliquid minima est.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "magnam-atque-et-sed-itaque-aut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "71" + ] + } +} \ No newline at end of file diff --git a/db/post/post-72.json b/db/post/post-72.json new file mode 100644 index 0000000..377a7a4 --- /dev/null +++ b/db/post/post-72.json @@ -0,0 +1,17 @@ +{ + "ID": 72, + "post_title": "Veniam aut qui atque eum.", + "post_content": "Provident repellendus sit aut. Et est nam eligendi quidem sed. Dolor quo omnis recusandae unde atque excepturi repudiandae.\n\nNemo quasi quaerat quos doloremque accusamus sit. Doloribus quod eos et consequatur ipsam minima. Recusandae ea exercitationem asperiores nihil nam. Ut dicta sint cum facere modi beatae omnis similique.\n\nBlanditiis sed aspernatur et corporis voluptatem sed. Exercitationem rerum natus perferendis nihil sed. Quos maxime sint iste quo corrupti minus rerum nemo.Occaecati consequuntur ut temporibus omnis. Eligendi excepturi omnis est iure omnis. Labore dolorem deleniti aut omnis corporis vitae. Illo in rem sed nihil maxime nostrum velit autem. Aspernatur eum nulla expedita laudantium ut est neque. Dolore excepturi aut repellendus nostrum sunt dolores. Deleniti quia non sit voluptatum molestiae in. Omnis fugiat magnam velit repellendus. Molestias animi eius cum autem eius impedit. Facere vitae magni illum. Veniam qui fuga ex et suscipit dolor eius. Aut rem deleniti quasi et tempora dolores. Mollitia laboriosam et ut praesentium. Vel optio incidunt suscipit. Nesciunt qui quisquam atque ipsam officiis aut sequi.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "veniam-aut-qui-atque-eum", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "73" + ] + } +} \ No newline at end of file diff --git a/db/post/post-74.json b/db/post/post-74.json new file mode 100644 index 0000000..3cc3221 --- /dev/null +++ b/db/post/post-74.json @@ -0,0 +1,17 @@ +{ + "ID": 74, + "post_title": "Nam quo rem enim incidunt.", + "post_content": "Voluptatem quibusdam et aperiam at quae. Nihil et quia fugiat assumenda saepe a. Non eum assumenda qui repellat sint necessitatibus. Facere veniam voluptatum vel velit accusantium voluptas dolorem ratione.\n\nSint esse iste quis ut voluptas fuga dolores non. Quas aut quo molestiae autem. Aperiam quia ut consequuntur nostrum. Qui doloremque sint ut laboriosam cupiditate autem.\n\nQuae quod modi odit dolorem. Esse repellendus eaque fugiat ut repellendus ut qui iure. Quia asperiores a facilis voluptate. Delectus sit sed harum aperiam aspernatur sunt assumenda impedit.Ipsam pariatur nihil ducimus ullam quod est illo. Et amet omnis et molestiae ratione. Architecto quibusdam repellendus officia vel voluptatum dolorem possimus ullam. Et aliquid suscipit asperiores ut quo. Sed ullam eligendi odio et consequuntur. Voluptas debitis at quia. Officia officia ut in ipsum quos deleniti. Qui ab doloremque voluptatem est quia ut perspiciatis. Odit ad occaecati et id ut. Et rerum cupiditate sed eius. Sit nam sed delectus harum. Culpa dolorem sequi corporis sed consequatur quos. Esse eos numquam nihil nihil asperiores. Omnis sit aperiam amet. Quia dolorem harum dignissimos. Aut rem amet natus id.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "nam-quo-rem-enim-incidunt", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "75" + ] + } +} \ No newline at end of file diff --git a/db/post/post-76.json b/db/post/post-76.json new file mode 100644 index 0000000..fe5b4e2 --- /dev/null +++ b/db/post/post-76.json @@ -0,0 +1,17 @@ +{ + "ID": 76, + "post_title": "Ut ratione asperiores autem.", + "post_content": "Id et sequi voluptatum adipisci aut dolores. Et est dignissimos repellendus autem eum perspiciatis. Eum voluptate eum non veniam alias provident. Est eos harum temporibus a quis inventore.\n\nAccusamus cumque ratione dolores sint reiciendis at. Dolorem veritatis sint recusandae qui fuga consequatur corporis. Iusto beatae quia quisquam voluptate nihil. Quisquam qui in et non ut.\n\nEveniet dolorem molestias perspiciatis omnis earum ut adipisci. Voluptas non voluptatem nemo impedit aut rerum nihil.Ad et nulla a minima sed. Quia ea et neque culpa perferendis quae. Voluptatibus nostrum temporibus modi exercitationem minus sed minus. Animi recusandae quia in praesentium quia. Nulla tempora sed natus exercitationem enim sunt facilis. Cupiditate amet qui sequi sunt. Inventore voluptate recusandae perferendis. Dolorem rem non rerum architecto autem distinctio laudantium. Quidem facere ea est odio cum. Iste ea fugiat qui repudiandae. Tempora est aut eos laborum alias. Totam aut et dolores architecto nemo. Earum ullam nulla ducimus quis iusto et architecto. Et qui et doloribus et harum deserunt perferendis accusantium. Mollitia sit est in.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "ut-ratione-asperiores-autem", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "77" + ] + } +} \ No newline at end of file diff --git a/db/post/post-78.json b/db/post/post-78.json new file mode 100644 index 0000000..6f80d19 --- /dev/null +++ b/db/post/post-78.json @@ -0,0 +1,17 @@ +{ + "ID": 78, + "post_title": "Non porro qui sed quam soluta hic.", + "post_content": "Sequi rerum maiores voluptatem. Nihil et placeat est autem eveniet assumenda. Sint alias quia quo voluptatem et suscipit cum. Aut impedit enim autem corrupti ducimus.\n\nEt illum et iusto. Ullam aliquid minima debitis eveniet rem. Aut voluptas fugit sint ex illo voluptatibus. Expedita voluptates sunt iure ullam delectus qui et ducimus.\n\nOmnis consequatur asperiores id ut et. Sequi minus corporis sed nesciunt. Nam voluptates itaque et quae nam ut.Ut quidem illum repellat et a. Odit quia debitis architecto et consequatur aliquid suscipit. Rem provident sunt sit asperiores. Natus provident maiores ipsum rerum aut doloribus ut. Suscipit praesentium ea quo assumenda dolorem. Ab sit est aliquid consequatur numquam. Cumque nihil illo facilis illum ratione omnis voluptas impedit. Sit dolor et corrupti rem et. Soluta est natus doloremque sunt rerum neque saepe non. Voluptatem et et dolore autem velit. Repellendus voluptatem nemo ut excepturi est et fugiat. Voluptatem nostrum dolorem facilis earum. Eaque itaque molestiae aut earum praesentium eaque unde. Amet ullam ut aliquam.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "non-porro-qui-sed-quam-soluta-hic", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "79" + ] + } +} \ No newline at end of file diff --git a/db/post/post-80.json b/db/post/post-80.json new file mode 100644 index 0000000..45dc6ec --- /dev/null +++ b/db/post/post-80.json @@ -0,0 +1,17 @@ +{ + "ID": 80, + "post_title": "Quidem quis nihil numquam ea facere.", + "post_content": "Ut ea aliquam pariatur harum. Eos molestiae aperiam vero dolorem aliquid illum. Sequi veniam praesentium est est aut tenetur. Enim ut velit aspernatur aperiam quia sit cumque nam.\n\nLaudantium quasi facilis rem adipisci modi est. Vel ut est minima consectetur. Praesentium ipsum modi fugiat quaerat. Quia suscipit distinctio voluptatum magni quibusdam quia.\n\nSoluta saepe porro qui natus doloremque nesciunt. Modi tempora unde iusto id enim. Est tenetur et reiciendis commodi. Cupiditate aliquid unde impedit.Officiis velit cumque autem exercitationem. Perferendis porro laudantium laboriosam aut facere veritatis odit. Voluptas error harum ut at architecto. Qui facilis voluptatem dolores et. Magni ea nulla animi explicabo rem sint ea tenetur. Dolor sunt odit vel temporibus ipsam aliquid sequi ex. Beatae dolorum voluptas quia hic provident laudantium et maxime. Facilis mollitia laudantium veniam consequatur rem cumque saepe. Minus inventore sint ratione. Quis expedita sequi officiis nihil explicabo rerum quia et. Totam dignissimos fugiat facilis sequi quidem illum. Incidunt corrupti aut illum ipsum.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "quidem-quis-nihil-numquam-ea-facere", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "81" + ] + } +} \ No newline at end of file diff --git a/db/post/post-82.json b/db/post/post-82.json new file mode 100644 index 0000000..210b5c9 --- /dev/null +++ b/db/post/post-82.json @@ -0,0 +1,17 @@ +{ + "ID": 82, + "post_title": "Rerum eligendi sint vero quia.", + "post_content": "Error repudiandae dolorem ipsa voluptatem. Provident exercitationem aliquid amet veritatis. Dignissimos dolores maiores occaecati quia debitis ut.\n\nVoluptas fugiat eos et quia sit est aut. Fuga voluptatem pariatur exercitationem et. Quaerat eius rem voluptates quos impedit voluptatum blanditiis excepturi. Ut ipsam ex corrupti quod pariatur.\n\nDoloremque rem sint aliquam culpa totam. Iste perspiciatis aut libero neque perspiciatis nulla nobis voluptas. Dolorem possimus omnis dolor molestiae non id.Ut labore sit id aperiam veniam ducimus tempora. Dolores eum voluptatem saepe necessitatibus. Est ut odit iusto sed a eum. Amet ut vel fuga qui. Est voluptate et quos dolor. Labore similique ea quia perspiciatis et animi minus. Illum laboriosam qui officiis est vero quia ut. Id assumenda dignissimos sit autem provident aut. Quidem mollitia repellendus deleniti libero exercitationem deserunt. Aut sapiente provident amet minus voluptatum at ipsam. Corporis consequatur dolores nulla nobis. Iusto eum ea voluptas repellat iusto. Quae quas omnis temporibus. Et minus natus possimus non harum.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "rerum-eligendi-sint-vero-quia", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "83" + ] + } +} \ No newline at end of file diff --git a/db/post/post-84.json b/db/post/post-84.json new file mode 100644 index 0000000..f175dd0 --- /dev/null +++ b/db/post/post-84.json @@ -0,0 +1,62 @@ +{ + "ID": 84, + "post_title": "Vel consectetur vero laudantium.", + "post_content": "\n

Minima inventore sint fuga recusandae nulla qui. Voluptatum eveniet quo odit sunt et ducimus enim. Aut itaque laboriosam sit.

\n\n\n\n

Et minima iure hic porro ut sit. Ratione occaecati voluptatum odio voluptatum voluptatem molestias. Accusantium alias et dignissimos fugit iusto ducimus. Aut perferendis minima dolores et.

\n\n\n\n

Rem saepe omnis minima molestias porro magnam. Quia ducimus quidem culpa exercitationem voluptas rerum occaecati. Qui qui odio nulla ea. Illum impedit vero inventore quis omnis nobis commodi.Vel ut officia odit sit in atque omnis. Quia ullam voluptate temporibus et culpa dolor rerum. Asperiores aliquid illo quod. Aliquam ratione quos voluptas inventore. Voluptatem et doloribus ducimus voluptatem. Et voluptas quia quos pariatur occaecati. Aut pariatur enim et dolor non aut error accusantium. Officia velit iure atque minus recusandae blanditiis fugiat. Culpa reiciendis aut eos quidem quaerat consequuntur magnam. Beatae et beatae culpa explicabo modi. Et ut voluptatem porro aliquam nulla quam fugiat. Sit accusantium necessitatibus et corporis aut. Magni qui sapiente ea nulla qui sit. Quisquam est nulla repellendus est illum. Sit quo alias quia suscipit ut odit et laboriosam.

\n", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "vel-consectetur-vero-laudantium", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "85" + ], + "_edit_last": [ + "1" + ], + "_edit_lock": [ + "1746892250:1" + ], + "_encloseme": [ + "1" + ], + "hero_style": [ + "default" + ], + "_hero_style": [ + "field_60bfda53dc0f2" + ], + "background_color": [ + "" + ], + "_background_color": [ + "field_6478f669004aa" + ], + "is_dark": [ + "1" + ], + "_is_dark": [ + "field_6478f68c004ab" + ], + "heading": [ + "" + ], + "_heading": [ + "field_60bfb8534a41f" + ], + "intro": [ + "" + ], + "_intro": [ + "field_60bfb85a4a420" + ], + "call_to_actions": [ + "" + ], + "_call_to_actions": [ + "field_60bfb8614a421" + ] + } +} \ No newline at end of file diff --git a/db/post/post-86.json b/db/post/post-86.json new file mode 100644 index 0000000..5ddfd59 --- /dev/null +++ b/db/post/post-86.json @@ -0,0 +1,17 @@ +{ + "ID": 86, + "post_title": "Adipisci natus fugit illum nemo.", + "post_content": "Non eos earum quia necessitatibus. Aliquid voluptas doloremque facilis accusantium. Ullam nemo quia voluptate explicabo est. Unde eum voluptas ratione sed qui molestiae.\n\nPraesentium officia non odit nesciunt et. Non facilis sit vel natus quasi autem at. Pariatur molestiae et quidem omnis sunt voluptas.\n\nQuasi eos quidem soluta amet. Ex hic dolorum et sed veniam dolorem. Rerum excepturi illo placeat.Aperiam quam quasi repellat. Sed sit quod dicta assumenda excepturi velit eveniet. Vel perferendis corporis eaque molestiae consectetur debitis asperiores. Earum corporis illum officiis qui voluptas. Tenetur molestiae exercitationem delectus. Adipisci inventore aut iste expedita. Porro sunt et quidem est a aliquam totam ullam. Laboriosam quos dolore qui itaque. Fugiat velit architecto nostrum aut. Repellat incidunt odio ut doloribus. Accusantium quia placeat cupiditate magnam. Fugit voluptatem eos architecto voluptas fugit repellat in quidem. Est et occaecati quibusdam consequatur temporibus perspiciatis libero. Itaque dolor magnam nemo sed.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "adipisci-natus-fugit-illum-nemo", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "87" + ] + } +} \ No newline at end of file diff --git a/db/post/post-88.json b/db/post/post-88.json new file mode 100644 index 0000000..6ef0824 --- /dev/null +++ b/db/post/post-88.json @@ -0,0 +1,17 @@ +{ + "ID": 88, + "post_title": "Ipsum quos non nihil ipsa fugit.", + "post_content": "Possimus neque neque veniam cum ab sit hic quia. Voluptas perspiciatis in velit et. Nostrum minima qui enim occaecati nam. Ea dolor accusamus magni architecto rerum dolor. In ut odio est nam.\n\nEt autem consequuntur nihil sit neque. Aperiam iusto voluptate et voluptas. A molestiae sed nihil sapiente est. Qui illum est tenetur rerum sunt nesciunt veniam.\n\nEarum hic enim reiciendis exercitationem et. Sed dolores doloremque vero quaerat ut. Voluptas dolore voluptates est quaerat molestias laboriosam temporibus. Enim distinctio voluptas id repellat qui culpa voluptas. Repellat non qui rerum nisi et quo molestiae.Saepe eos quibusdam perferendis deleniti beatae magni. Molestiae eum sunt harum quos ipsa voluptatem. Dolores et enim fugit. Ab sed harum eum nesciunt est. Exercitationem culpa ad eveniet. Aut excepturi facere est velit. Eum nihil eos dolorum officiis tempore mollitia incidunt. Assumenda placeat saepe sequi accusamus voluptas autem repudiandae. Temporibus atque explicabo maxime delectus. Et voluptatem rerum minus. Cum deleniti quo iste natus rerum autem. Est omnis commodi porro magnam sed doloribus est. Ipsam impedit sequi dolorem impedit in voluptate quae.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "ipsum-quos-non-nihil-ipsa-fugit", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "89" + ] + } +} \ No newline at end of file diff --git a/db/post/post-90.json b/db/post/post-90.json new file mode 100644 index 0000000..acdb40d --- /dev/null +++ b/db/post/post-90.json @@ -0,0 +1,17 @@ +{ + "ID": 90, + "post_title": "Totam nam molestiae quo et hic.", + "post_content": "Rerum nostrum non eos et. Autem sint qui quo. Officiis aut odio ut maiores nesciunt et.\n\nNihil assumenda molestias commodi quia sunt ea dolor iure. Ad et aut eos soluta dolores aut recusandae iure. Ullam maxime voluptates vero rerum nesciunt quia tempore.\n\nCorporis ab ipsa rerum odio et. Repellendus voluptates in quidem harum. Sint et officia asperiores sit necessitatibus quisquam vel. Et aperiam unde illum dolorem consequatur debitis sit.Atque sequi saepe dolore. Et dolore voluptas labore voluptatum consequuntur. Hic voluptatem saepe distinctio quos commodi tenetur. Velit omnis excepturi commodi. Quidem tenetur nihil rem quia. Non totam qui et ducimus similique cum recusandae. Ratione sit similique ea a. Ut amet distinctio vel quidem dicta voluptatem commodi. Eum accusantium aut tenetur earum. Est perferendis suscipit eos vero cum. Id voluptate consequatur non iste ratione eaque. Occaecati quis vero et quis culpa eaque. Non sapiente aut quo veniam. Labore sit est et iste eaque architecto. Tenetur possimus animi dolorem nemo vitae voluptatum nemo. Iusto explicabo iste ipsum aut.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "totam-nam-molestiae-quo-et-hic", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "91" + ] + } +} \ No newline at end of file diff --git a/db/post/post-92.json b/db/post/post-92.json new file mode 100644 index 0000000..eb39326 --- /dev/null +++ b/db/post/post-92.json @@ -0,0 +1,17 @@ +{ + "ID": 92, + "post_title": "Aut quia quia qui excepturi itaque.", + "post_content": "Enim voluptatibus excepturi dignissimos velit ea beatae at. Nam minus et recusandae quam est qui ipsam. A et aut velit. Eaque beatae adipisci culpa enim qui qui.\n\nQuaerat possimus sit asperiores assumenda eligendi est ullam sit. Voluptas non eligendi corporis. Similique et aut qui esse. Rem deserunt neque et dicta error esse iste.\n\nTenetur maiores temporibus quidem nulla at. Voluptas quia quia dolorum rerum provident non incidunt.Quae ipsum quis sapiente autem voluptas. Sit voluptatem earum est perspiciatis exercitationem. Animi quod voluptate et consequuntur. Exercitationem non aut et eum sint. Repellendus sed alias rerum rem doloremque. In quia voluptatibus cumque qui ipsa. Voluptatibus mollitia eius explicabo incidunt sit vero quia quis. Molestiae autem officiis voluptate voluptas expedita et. Porro in consectetur pariatur est. Commodi quis non ullam sunt eum iusto. Voluptas voluptatem aut doloremque sit reiciendis cupiditate cumque qui. Ullam vero vitae fugiat rem veniam aut. Aut consequatur architecto dolores repellat nemo ullam.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "aut-quia-quia-qui-excepturi-itaque", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "93" + ] + } +} \ No newline at end of file diff --git a/db/post/post-94.json b/db/post/post-94.json new file mode 100644 index 0000000..99423da --- /dev/null +++ b/db/post/post-94.json @@ -0,0 +1,17 @@ +{ + "ID": 94, + "post_title": "Voluptatum consequatur quae dolor cum.", + "post_content": "Molestias sit facere alias quod. Libero est alias ullam saepe numquam id et. Praesentium et dolore architecto quod aut quos temporibus. Incidunt dolorem exercitationem harum velit.\n\nSunt delectus dolorem dicta facere. Et est consectetur voluptatem ratione. Omnis tempora modi vel ipsum dolor ut. Quas eos omnis accusantium dolores cupiditate nihil.\n\nEt ut nisi iusto numquam. Adipisci similique laborum voluptate ab earum. Modi similique eveniet exercitationem reprehenderit eos est in molestias. Quia quo et est quo.Ratione sed cum consequatur consequatur consectetur. Sunt temporibus quia aut at voluptates fugiat sunt quos. Alias dolores molestiae perspiciatis expedita magni. Nulla placeat quia incidunt dolorem sit consectetur praesentium. Et voluptatem quis commodi sint omnis fugit quos. Consequatur non expedita et. Quod aut repellendus sed possimus dolore quae. Eligendi unde ad magnam. Sequi laudantium laboriosam incidunt. Voluptatum tempore eos facilis magni alias et. Aperiam qui sint vitae rerum aperiam tempora nihil dolore. Deleniti ut quos et dolorem quia eos beatae in. Earum atque velit debitis optio quae et magnam.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "voluptatum-consequatur-quae-dolor-cum", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "95" + ] + } +} \ No newline at end of file diff --git a/db/post/post-96.json b/db/post/post-96.json new file mode 100644 index 0000000..7782c5b --- /dev/null +++ b/db/post/post-96.json @@ -0,0 +1,17 @@ +{ + "ID": 96, + "post_title": "Eveniet eaque veritatis aut voluptas.", + "post_content": "Minus consectetur et et non. Qui voluptates dolores sit ducimus quam qui quaerat. Veritatis sit voluptatem debitis quisquam alias consectetur.\n\nUt porro ut temporibus consequuntur. Expedita perspiciatis rerum molestiae facere beatae. Et expedita commodi nobis exercitationem. Tempora quisquam quia nihil inventore molestiae dolorem ad iusto.\n\nEnim deserunt molestias est non non soluta. Aut et ad sit expedita omnis est alias. Quae alias adipisci non dolor molestiae facere aut soluta.Repellendus delectus tenetur alias exercitationem. Voluptatum aperiam adipisci adipisci qui esse quod qui. Voluptas quod nihil atque ea facere rem occaecati. Eos enim cupiditate fugiat consequuntur rerum iste. Harum corporis voluptas ab molestiae qui modi quia dolorum. Est vel earum voluptas dolores et et. Praesentium id pariatur nobis fuga accusantium debitis. Nam et voluptatum dolores. Temporibus sint asperiores eum ullam. Reiciendis voluptatem veritatis dolor consequuntur rem. Sunt quis aliquam illum et ut molestias nulla. Alias quia sed neque et est consequuntur. Itaque natus voluptatem quam.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "eveniet-eaque-veritatis-aut-voluptas", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "97" + ] + } +} \ No newline at end of file diff --git a/db/post/post-98.json b/db/post/post-98.json new file mode 100644 index 0000000..266d63e --- /dev/null +++ b/db/post/post-98.json @@ -0,0 +1,17 @@ +{ + "ID": 98, + "post_title": "Voluptate at aut minima alias.", + "post_content": "Voluptates error et repellat dolores. Et nulla suscipit officia distinctio cum. Culpa corporis ut id fugiat voluptates dolorem magni.\n\nDistinctio repudiandae inventore necessitatibus ad asperiores. Beatae aut et doloremque ut officiis. Accusamus repellendus quasi sed laudantium ut ab.\n\nNostrum est est nulla est voluptatum. Eius aliquid dolorem neque aperiam. Non enim et eum blanditiis.Ut ea accusamus itaque illum. Fugit facere dolore veritatis voluptas nihil deleniti enim. Optio nulla eligendi nam ab quidem. Aut laudantium nihil distinctio quisquam. Molestias aut harum et dolor reprehenderit impedit veritatis. Minus sit alias corporis sed ad quis quos. Quos eum consequatur ea quia et placeat asperiores quas. Sint et error consequatur maxime accusantium. Similique soluta est nostrum optio odio eos optio. Iste rerum labore quis eum harum saepe harum. In reprehenderit cumque non iusto et eos. Mollitia et amet enim quaerat magnam quibusdam. Ea error velit suscipit praesentium voluptatem.", + "post_excerpt": "", + "post_type": "post", + "post_status": "publish", + "post_name": "voluptate-at-aut-minima-alias", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "99" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-337.json b/db/resources/resources-337.json new file mode 100644 index 0000000..554e218 --- /dev/null +++ b/db/resources/resources-337.json @@ -0,0 +1,17 @@ +{ + "ID": 337, + "post_title": "Earum quis quasi qui in.", + "post_content": "Odit expedita dolorem in ex recusandae autem. Alias est consequatur cum eveniet. Distinctio ullam non pariatur ratione laudantium dolores. Aliquid repellendus dolores et dolorum hic qui id.\n\nPlaceat dolore ab vero tenetur. Saepe voluptate ab est dolores maiores sed. Rerum corporis delectus sit nostrum. Consequatur autem est aspernatur et commodi perferendis et. Aliquid similique totam voluptas sit vero non est consequatur.\n\nDistinctio quisquam placeat accusamus aliquid. In saepe vel ut architecto. Assumenda quibusdam voluptatem quod qui nihil rem aliquam. Accusamus molestiae accusantium cupiditate nobis libero fugiat.Ad est non voluptatem natus natus maiores reprehenderit eum. Omnis labore neque quidem accusamus ut. Placeat iure nihil occaecati explicabo. Voluptatibus unde aliquam temporibus. Maiores in aut laboriosam debitis. Est sed necessitatibus ducimus impedit. Cum explicabo possimus sint et eum ea molestiae. Est nihil fuga ratione mollitia. Blanditiis rerum placeat nobis magnam architecto illum. Enim illo beatae culpa reiciendis et aut est. Maiores dolor voluptatum at quisquam est sed. Ut non voluptatum iusto deleniti. Vitae debitis aliquid aut earum cumque et molestiae qui.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "earum-quis-quasi-qui-in", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "338" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-343.json b/db/resources/resources-343.json new file mode 100644 index 0000000..c183e2a --- /dev/null +++ b/db/resources/resources-343.json @@ -0,0 +1,17 @@ +{ + "ID": 343, + "post_title": "Consequatur omnis quo tempora amet.", + "post_content": "Consectetur veritatis ut neque consequatur similique. Id perferendis asperiores distinctio ipsam.\n\nVero qui temporibus inventore laborum. Corrupti iste eius eum voluptates. Et eos veritatis eaque aliquam explicabo eius.\n\nNon accusantium voluptatem velit suscipit velit iure vitae. Harum quia id dolore eligendi. Qui animi velit aut eaque. Nisi ullam aut sapiente quas.Praesentium optio maiores commodi accusamus. Tempora eum repellendus libero voluptatibus sed consectetur illum. Dolorem doloribus ab architecto id assumenda dolorum iure. Ab suscipit aut in ab molestias. Consequatur ducimus et in nam non. Similique corporis voluptatem mollitia eos libero. Commodi doloremque excepturi facilis voluptas ut delectus non. Et maxime porro iusto. Earum est laboriosam blanditiis similique enim. Debitis occaecati et animi id deserunt mollitia neque. Dicta autem quam sunt dolorem. Est corporis sed quod ut. Non maxime quibusdam et nisi. Officiis fuga consequatur quae nesciunt facere iure.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "consequatur-omnis-quo-tempora-amet", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "344" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-345.json b/db/resources/resources-345.json new file mode 100644 index 0000000..b59cb8c --- /dev/null +++ b/db/resources/resources-345.json @@ -0,0 +1,17 @@ +{ + "ID": 345, + "post_title": "At optio eos quibusdam.", + "post_content": "Voluptatem qui error repellendus autem qui eum eveniet. Odio voluptas ullam qui et expedita eligendi voluptatem.\n\nConsequatur molestias minima eveniet iure vel natus. Sed illum odit ut aut quo perspiciatis quae optio. Voluptatem soluta molestiae recusandae laboriosam provident suscipit.\n\nDolorem repellendus architecto rerum illum qui. Voluptatem dolores facilis nihil voluptatem id enim.Quasi quia laudantium eaque quos. Consequatur enim aliquid et ducimus. Ab qui qui consequatur amet. Corporis velit quia quos odit voluptatem omnis assumenda veniam. Sunt ratione officiis deserunt corporis vitae repudiandae. Et exercitationem repudiandae explicabo est non. Tenetur aut assumenda impedit quia id dicta tempore. Eaque error earum enim nobis vel quos dolorem. Eum non accusantium earum at rerum enim atque eveniet. Voluptatem numquam facere ipsa suscipit assumenda. Harum aut in exercitationem culpa esse numquam. Et sed quia nemo fuga aliquam esse quibusdam tempora. Accusantium asperiores maiores et dicta ut.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "at-optio-eos-quibusdam", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "346" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-347.json b/db/resources/resources-347.json new file mode 100644 index 0000000..f9111ab --- /dev/null +++ b/db/resources/resources-347.json @@ -0,0 +1,17 @@ +{ + "ID": 347, + "post_title": "Et nihil ipsam et magnam.", + "post_content": "Labore eaque et voluptas dolores eveniet possimus qui. Temporibus minima quia nesciunt exercitationem atque veniam et. Similique officiis sequi amet enim neque voluptatibus.\n\nPerferendis aut tempore et fuga ut nisi culpa. Occaecati in deleniti ratione et iusto nam. Dignissimos dolores nihil magni voluptates molestiae voluptatem iste numquam. Qui accusamus id quibusdam ut.\n\nDolorem dignissimos molestias pariatur aut eos labore molestiae. Aut voluptatem porro rem quas tempore labore. Enim dignissimos maxime et provident quis quia.Magnam consequuntur occaecati accusamus non debitis. Explicabo sunt minima odit ea dolores eum repudiandae. Eligendi et perspiciatis voluptate temporibus. Nisi unde pariatur et. Id nisi quis et aspernatur. Blanditiis quia enim est vel. Vitae voluptatem et voluptatem similique eum soluta. Nesciunt eos qui ut. Vero dolores consequatur voluptatem. Ullam modi explicabo soluta sed quo quia. Ratione occaecati est accusamus voluptas ad. Qui architecto praesentium est ut ut ad. Illum corporis similique magnam exercitationem ad. Dignissimos ab quia ut nihil qui veritatis voluptatem soluta. Totam enim exercitationem corporis aliquam dolor autem nobis.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "et-nihil-ipsam-et-magnam", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "348" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-349.json b/db/resources/resources-349.json new file mode 100644 index 0000000..f4ee011 --- /dev/null +++ b/db/resources/resources-349.json @@ -0,0 +1,17 @@ +{ + "ID": 349, + "post_title": "Beatae et qui quia laudantium.", + "post_content": "Iure sunt magni aliquid alias suscipit. Nostrum quis laboriosam voluptatibus explicabo sit dolore. Pariatur aut assumenda autem sit voluptates. Dolores et nostrum cupiditate error quo necessitatibus.\n\nInventore consectetur velit et ipsam. Eligendi ipsa possimus id et. Et sunt harum enim iste corporis ad mollitia.\n\nOfficia officiis illo cum. Dignissimos est dolore tenetur id impedit. Non fuga sed omnis dolore explicabo recusandae.Illo eos omnis ratione magnam ipsum eligendi. Autem qui fugiat est repudiandae. Et odio quisquam ea laboriosam provident ea. Sequi nulla incidunt sunt iusto. Commodi laborum odio porro autem ad hic qui cupiditate. Modi ut sed nisi illo minima consequatur. Autem optio sint animi accusamus consectetur alias. Blanditiis est ut officia debitis dicta. Veritatis et dicta corrupti sed qui magnam. Et molestias dolorem porro cumque officia assumenda. Et dolorem qui placeat est. Aspernatur fugit hic ipsum est. Error et distinctio qui iusto voluptatem autem corrupti amet. Porro reprehenderit sint labore reprehenderit aut accusamus qui.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "beatae-et-qui-quia-laudantium", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "350" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-351.json b/db/resources/resources-351.json new file mode 100644 index 0000000..17bd464 --- /dev/null +++ b/db/resources/resources-351.json @@ -0,0 +1,17 @@ +{ + "ID": 351, + "post_title": "Dicta cum repellendus qui qui ut.", + "post_content": "Exercitationem molestiae aut beatae et soluta. Dolorum quos amet minima dicta magnam quidem. Ut aliquid beatae voluptas laudantium quasi. Unde similique facilis et.\n\nOfficiis ducimus sunt dolores accusamus at quasi. Est sunt atque ut aut eligendi odit. Velit et excepturi nisi animi sunt molestiae qui. Itaque totam dicta et placeat quo ab odio.\n\nAsperiores eos eum nulla. Accusantium iusto maiores sit optio reprehenderit. Harum in nulla consequatur ab quis id.Distinctio ullam qui voluptates. Illum dicta rerum harum et. Deleniti in delectus corporis aut. Alias nihil minima amet quis omnis. Delectus ab molestiae pariatur minus. Voluptas nostrum excepturi inventore in sit dolores quidem. Quasi sed quaerat perferendis nam commodi saepe. Illo mollitia omnis velit et. Fuga repellat qui iure esse. Dolores perferendis sit sequi delectus. Eos magnam aut velit quia maxime harum et tempora. Et quo dolores inventore ea omnis modi et. Impedit dolore et repellendus ratione dolorem exercitationem. Labore distinctio voluptatem quidem suscipit perferendis ab quo.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "dicta-cum-repellendus-qui-qui-ut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "352" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-353.json b/db/resources/resources-353.json new file mode 100644 index 0000000..4fb31de --- /dev/null +++ b/db/resources/resources-353.json @@ -0,0 +1,17 @@ +{ + "ID": 353, + "post_title": "Architecto quam molestias et.", + "post_content": "Totam et ipsam fugiat voluptate. Sit porro voluptas voluptas quibusdam eos quasi. Ea voluptas laudantium consectetur odio ut id quas delectus. Delectus ipsum totam veritatis animi qui laborum eaque.\n\nConsequatur consectetur perferendis ullam ducimus dolorum aliquam qui officiis. Neque voluptate aliquid dolorem voluptatem quia. Facere ad aliquam nemo cupiditate minus. Quaerat ab quod unde.\n\nEst qui vel explicabo qui. Delectus autem tempore rerum aut dolorum consequatur quo. Harum animi enim dolorem a adipisci quis. Harum et ut et amet sint.Rem dolorem et ad est ut saepe nam est. Excepturi quo omnis consequatur omnis. Dolor perferendis et corrupti. Nesciunt dolorem maiores dolor omnis quaerat similique mollitia rerum. Saepe alias in qui deleniti consequuntur. Et error quasi earum et adipisci occaecati. Officia sapiente odio ut blanditiis amet occaecati vitae. Optio vel qui reiciendis iste est id animi ut. Architecto suscipit perspiciatis nesciunt maiores veritatis quis vel. Libero qui voluptatem accusantium numquam voluptatem est perspiciatis. Voluptatem quia velit non nobis unde veritatis ipsa repellendus. Libero enim fuga accusantium consequatur.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "architecto-quam-molestias-et", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "354" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-355.json b/db/resources/resources-355.json new file mode 100644 index 0000000..931c814 --- /dev/null +++ b/db/resources/resources-355.json @@ -0,0 +1,17 @@ +{ + "ID": 355, + "post_title": "Autem esse repellat quasi et.", + "post_content": "Ea aut rerum debitis natus mollitia eligendi. Quae laborum autem necessitatibus voluptatem culpa accusantium. Odit voluptas provident et odit rem omnis sed temporibus. Minus qui ad placeat magni esse fuga unde voluptate. Ut architecto deserunt saepe quae earum laborum qui.\n\nUt voluptas magni amet porro. Eos placeat labore corrupti adipisci ad.\n\nReiciendis deserunt nesciunt et laudantium rerum necessitatibus perferendis. Optio cumque fugiat impedit modi deserunt quod expedita et. Quis natus est ex neque. Corporis pariatur facere fuga non nam. Neque porro ducimus ab vero.A voluptatem asperiores ex ut expedita. Repellendus sint facilis consequuntur reprehenderit minus consequatur. Distinctio ut architecto aperiam. Vel id et mollitia nobis et minus provident distinctio. Autem repudiandae iste enim ipsa incidunt nulla. Rerum eveniet pariatur beatae sit sunt libero. Ut repudiandae quia esse sit. Voluptatibus veritatis nulla quas. Sequi iure vitae ratione sint cupiditate dicta. Quia nam at itaque quam ex ab placeat nam. Iure aperiam molestiae eius. Porro ipsum necessitatibus ullam cum maiores tempore laboriosam. Ipsam temporibus ut aut itaque quae quisquam. Nemo velit voluptatem et ab rerum.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "autem-esse-repellat-quasi-et", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "356" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-357.json b/db/resources/resources-357.json new file mode 100644 index 0000000..a1ded62 --- /dev/null +++ b/db/resources/resources-357.json @@ -0,0 +1,17 @@ +{ + "ID": 357, + "post_title": "Aut soluta totam fuga dolores.", + "post_content": "Fugiat optio ducimus veniam ab quod voluptatem qui. Illo vero error non soluta. Quae sunt laboriosam delectus sed rem.\n\nPerferendis et illum consectetur quasi quos quo enim est. Nesciunt vitae laudantium reprehenderit eum occaecati eum aperiam. Consectetur amet modi hic sit maxime numquam. Molestias dolore officia voluptates esse.\n\nNecessitatibus ut quae nemo. Ab voluptas voluptates omnis vel distinctio eos. Fugit eum quas explicabo tempore architecto ab molestiae.Ea ratione architecto quia. Culpa expedita iure ut veniam minus unde. Quod ex sequi aut temporibus eum. Inventore beatae veniam assumenda voluptas. Quis eum at blanditiis laudantium autem. Provident ut eos est quod. Voluptatem aliquid delectus amet eos quo modi. Magnam voluptas voluptas ipsa odio. Quia dicta est dolorem molestias unde. Et qui minima dolor aperiam. Et dolores quasi ipsam rerum ea dolore. Illo aut occaecati officia consequatur sint. Reprehenderit accusantium esse ut laborum quasi ad. Optio cupiditate qui et eligendi quam magnam.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "aut-soluta-totam-fuga-dolores", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "358" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-361.json b/db/resources/resources-361.json new file mode 100644 index 0000000..266edc8 --- /dev/null +++ b/db/resources/resources-361.json @@ -0,0 +1,17 @@ +{ + "ID": 361, + "post_title": "Voluptatibus quo ipsum dolor omnis.", + "post_content": "Ut nesciunt totam et eaque voluptas deserunt perferendis. Aut illo modi eveniet expedita placeat quisquam. Beatae rerum ut dolor quasi.\n\nMagnam libero aut beatae alias. Voluptate iste exercitationem dolor non odio. Vitae eum tenetur harum explicabo nisi facere provident. Ratione velit optio ad voluptas odit.\n\nEt alias optio voluptate et. Mollitia a alias molestias qui aperiam cum corporis fuga. Sit deleniti magni odio. Amet dolore sint explicabo rem necessitatibus non.Qui corporis est nostrum architecto. Neque tenetur et accusamus impedit ex quibusdam. Cum aut cum quis odit et odio hic. Illo dolorum laboriosam et nulla. Dolorem nihil eos repellendus et ab accusantium. Non temporibus ratione natus nisi ullam. Est voluptatem consequatur sit voluptatem repudiandae doloremque. Deserunt vero asperiores qui. Porro vero omnis temporibus et dolores at veritatis. Ut eos architecto consectetur in ea iusto. Magni natus corporis ex et voluptatem minima nulla sed. Doloribus explicabo deserunt et culpa dicta animi autem. Quia ab nobis odio quaerat corrupti eveniet.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "voluptatibus-quo-ipsum-dolor-omnis", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "362" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-365.json b/db/resources/resources-365.json new file mode 100644 index 0000000..0cf45b6 --- /dev/null +++ b/db/resources/resources-365.json @@ -0,0 +1,17 @@ +{ + "ID": 365, + "post_title": "Est ipsa tempore veniam officia et est.", + "post_content": "Ratione itaque ut quia sequi. Officiis voluptatem ut unde praesentium officia.\n\nTotam doloribus praesentium rerum eligendi et laborum id. Nihil modi incidunt rerum mollitia natus. Ut voluptatem rem ducimus debitis qui.\n\nVitae repudiandae quas provident. Quo mollitia sit cumque qui aliquid aperiam. In eos cum qui eligendi cumque. Non et non qui ut aut tenetur.Sit aut accusantium in fugiat. Harum perferendis expedita harum et omnis. Quis accusantium exercitationem iure voluptatem a corporis similique. Perspiciatis vitae et qui eos. Quibusdam in sunt qui sint rem at. Dolore illum animi quidem esse est quaerat incidunt qui. Et et alias voluptatem magnam dolorum at. Ut accusamus sunt quam adipisci. Aut itaque nulla odio est quis voluptatem dolores nam. Quam non illo dolorem qui voluptatem. Molestias occaecati numquam dignissimos. Sit consectetur nisi tempora eum itaque. Voluptas repellat saepe eaque quia. Sint et quidem id repellat enim ad exercitationem.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "est-ipsa-tempore-veniam-officia-et-est", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "366" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-367.json b/db/resources/resources-367.json new file mode 100644 index 0000000..4efda6a --- /dev/null +++ b/db/resources/resources-367.json @@ -0,0 +1,17 @@ +{ + "ID": 367, + "post_title": "Eius deserunt nemo a.", + "post_content": "Iste corrupti nihil aut et deserunt nemo. Et ea sit facilis quo error. Quam aperiam ut ea distinctio quis commodi dolorem.\n\nVoluptatem dicta voluptate sint dicta. Et dolorum ut suscipit et. Vero vitae ut aut odio autem quidem dolorem et. Eum non dolore et neque.\n\nEum id aut assumenda incidunt ipsa repellat illo. Dolore ut officia necessitatibus inventore sed doloribus qui dolorem. Odio cum sit quia voluptatem omnis minus.Eum fuga id maiores dolorem accusamus. Explicabo enim velit expedita tenetur officia magnam. Illum voluptatem omnis quo ea ea. Fuga vero tenetur neque minus molestiae dolores. Est vel animi dolores asperiores. Odio quo error distinctio similique iste. Error sunt dolor qui ut mollitia suscipit enim. Et vitae optio tenetur eaque dolorem. Optio sunt consequatur dolor nihil ut quia. Amet nulla enim est amet. Id similique tempore velit qui cum. Aut nihil aliquam tempore sunt. Enim beatae ipsa consequatur vel totam fugit. Magnam repellendus illum temporibus laudantium eaque. Nisi quia sunt delectus quia.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "eius-deserunt-nemo-a", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "368" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-371.json b/db/resources/resources-371.json new file mode 100644 index 0000000..331cbe2 --- /dev/null +++ b/db/resources/resources-371.json @@ -0,0 +1,17 @@ +{ + "ID": 371, + "post_title": "Nemo dolores illum quia dolor.", + "post_content": "Voluptatem et blanditiis temporibus necessitatibus porro id. Modi quo nihil maxime fuga sequi quo tempore beatae. Natus beatae nihil soluta omnis exercitationem. Sapiente qui ut voluptatem eveniet laboriosam consequatur sunt.\n\nAut deserunt optio aut. Vel suscipit at a. Molestias distinctio aspernatur ut blanditiis aut. Corrupti id ducimus deleniti in id eum delectus.\n\nPraesentium aut nulla nam aut illo sed. Dolor vero nam qui. Quaerat sit non molestiae molestiae.Aut aperiam animi quas. Esse exercitationem atque cumque expedita veniam minus tenetur. Voluptate consectetur quis amet eveniet culpa libero. Possimus numquam doloremque itaque voluptas ab quia. Voluptas fugiat ea autem vero. Quo cupiditate ratione fugit dolorem. Facere quaerat cumque rerum assumenda. Autem magnam expedita qui est vel. Maxime id eos adipisci quibusdam aut odit. Et velit deserunt maxime a vitae tenetur. Quia rerum perferendis maiores et. Sunt pariatur exercitationem quae eum impedit voluptas voluptatem aliquam. Dolor rerum harum vel laborum alias modi et. Rem pariatur perspiciatis doloremque esse ut molestiae eos rerum. Et aliquam est et eum perspiciatis nemo sed fugiat.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "nemo-dolores-illum-quia-dolor", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "372" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-373.json b/db/resources/resources-373.json new file mode 100644 index 0000000..3b49bb2 --- /dev/null +++ b/db/resources/resources-373.json @@ -0,0 +1,17 @@ +{ + "ID": 373, + "post_title": "Officia necessitatibus neque enim.", + "post_content": "Sed est blanditiis magni est veritatis sequi. Inventore ipsam ex debitis. Quia recusandae sit magnam quo.\n\nUt vitae voluptate explicabo rem aut consequatur. Consectetur est maxime laudantium veritatis autem. Vel harum sit natus aut.\n\nEum nesciunt impedit expedita. Fugit ex sunt asperiores omnis.Enim ipsa quos officia provident magnam dolor. Vel sit eligendi vel vitae quam. Est ea quas perspiciatis quisquam. Magnam magni iste laborum voluptas dolores repellendus. Aut aut quasi sapiente eos ab consequuntur rerum. Tempore maxime similique beatae et. Non earum quaerat laborum voluptas qui rem. Odit dolorem esse sit sit. Tempore quisquam quaerat enim animi quod nemo. Voluptatem facere aperiam animi aspernatur saepe dicta laudantium. Qui iusto est sequi minima est. Expedita culpa nobis sed delectus. Quod ducimus odit harum aut cupiditate et provident et. Veniam fugiat quibusdam error similique fuga fugiat quidem quo.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "officia-necessitatibus-neque-enim", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "374" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-375.json b/db/resources/resources-375.json new file mode 100644 index 0000000..9206bd9 --- /dev/null +++ b/db/resources/resources-375.json @@ -0,0 +1,17 @@ +{ + "ID": 375, + "post_title": "Voluptas id non voluptate quod aut.", + "post_content": "Ratione et nihil accusamus omnis. Cum ut modi ratione autem dolores aperiam fuga. Expedita id eligendi non. Corrupti debitis aut ut soluta.\n\nVitae sed cum ipsum ipsa nemo pariatur est. Natus ipsa omnis quidem id libero assumenda voluptas. Rerum et odio consequatur exercitationem voluptas et ipsam voluptas.\n\nAut ut harum deserunt sunt delectus dicta. Ut nihil aut et ut quos.Quod sint rerum nihil molestiae rem dolore ut eaque. Est labore non vitae in qui necessitatibus. Reiciendis qui est voluptas itaque et ut incidunt. Quia voluptas molestiae nam. Earum dolorum ad saepe. Laborum dignissimos voluptatem molestiae cupiditate iste voluptas quo repellat. Pariatur reiciendis veniam nihil cum explicabo et. Veritatis sit aut tempore et est adipisci et. Ratione officia tempora quo sint dicta fugiat. Natus non voluptatibus ratione. Et aut veritatis iure nesciunt laboriosam sint deserunt. Ea deserunt rerum quia incidunt facere. Voluptatem velit distinctio deleniti aspernatur aut. Quaerat dolorem sit asperiores impedit rerum.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "voluptas-id-non-voluptate-quod-aut", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "376" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-377.json b/db/resources/resources-377.json new file mode 100644 index 0000000..6c9e222 --- /dev/null +++ b/db/resources/resources-377.json @@ -0,0 +1,17 @@ +{ + "ID": 377, + "post_title": "Aut nemo sint consequatur molestiae.", + "post_content": "Consequuntur sed rerum consequatur est quibusdam. Quia qui et provident sunt. Voluptatem mollitia a recusandae sed accusamus quibusdam.\n\nIncidunt sed culpa dolores porro et animi rem. Cupiditate aspernatur eveniet est vel similique quia eius. Temporibus quis sit facilis animi repellendus. Praesentium deserunt cum aspernatur laudantium odit dignissimos.\n\nMolestias occaecati aspernatur consequatur harum saepe eligendi. Rerum et nihil minima id delectus. Laudantium alias modi consequatur expedita architecto consequatur minus. Ab ipsam laborum dolores.Similique error qui vero ea. Praesentium a itaque nulla doloribus aut architecto quod voluptate. Nostrum ut sed sequi eos est. In eaque quaerat provident eligendi deserunt reiciendis. Praesentium ducimus rerum quo dicta. Et sapiente accusamus labore sed vel maxime. Temporibus totam libero quibusdam. Iure autem explicabo ipsa dolorem qui et. Officiis quis amet sit non. Enim numquam laborum rem qui. Quos iure aut inventore cupiditate debitis. Enim minima adipisci vel incidunt numquam veniam ut. Dolorem exercitationem officia sit nisi laboriosam pariatur.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "aut-nemo-sint-consequatur-molestiae", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "378" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-379.json b/db/resources/resources-379.json new file mode 100644 index 0000000..046d668 --- /dev/null +++ b/db/resources/resources-379.json @@ -0,0 +1,17 @@ +{ + "ID": 379, + "post_title": "Voluptate fugiat nemo nisi.", + "post_content": "Reiciendis asperiores sed unde quis animi facere ea. Aut dolorem rerum maxime ut provident est sit. Ut velit officia maxime saepe molestias sunt. Ea ea quis aut.\n\nAd alias autem eum quos sit. Odit labore et dolores ut laudantium. Atque voluptate esse provident nulla velit fuga. Quaerat quo quasi possimus sit. Qui earum molestias eligendi quis voluptatum laborum eligendi.\n\nEos aut eaque et ipsum aut voluptas quidem temporibus. Quibusdam voluptatum necessitatibus provident est quae porro a. Temporibus impedit nihil et ut recusandae minima dolores. Porro reprehenderit qui cumque quo maiores perferendis.Praesentium iusto est placeat voluptatum maxime qui eveniet. Blanditiis consequatur velit fugit aliquid voluptatem molestiae. In quia harum perspiciatis tenetur temporibus consequatur architecto. Ut blanditiis sed est tenetur et error. Vel fuga debitis pariatur. Id quia sint sed natus et doloremque. Ullam impedit odit vel repellat aut. Nulla voluptate omnis totam animi sed. Quia adipisci nobis ea qui. Molestias nisi non omnis nihil laborum numquam. Nihil architecto ullam amet qui mollitia. Eaque quaerat dolorem expedita est necessitatibus quos. Quas rerum numquam aspernatur consequatur ipsum placeat. Non id at repellendus alias voluptates beatae in. Ut maiores est quam ipsum eum ea in.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "voluptate-fugiat-nemo-nisi", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "380" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-385.json b/db/resources/resources-385.json new file mode 100644 index 0000000..cdfc730 --- /dev/null +++ b/db/resources/resources-385.json @@ -0,0 +1,17 @@ +{ + "ID": 385, + "post_title": "Et repudiandae maxime qui quas.", + "post_content": "Facere reprehenderit molestiae laudantium autem. Fugiat eius qui tempore eum voluptas voluptatum. Voluptatem error tempora ea architecto corporis dolorum et.\n\nRecusandae dolores sed temporibus nam. Voluptate et quod sed aut sit mollitia ipsam. Doloribus consequatur ad exercitationem cum omnis ducimus consequatur.\n\nIncidunt ut dolorem nisi quia perferendis suscipit. Cumque maiores provident quasi. Et et odio fugiat quibusdam ab eaque explicabo. Non iusto hic ea aut ab nesciunt. Est odit iure dolores et asperiores quod sunt.Nihil voluptatibus repellat vel ut officiis quisquam eos rerum. Quidem deserunt error enim nam est harum eum sed. Necessitatibus eos nulla odio quo nisi soluta voluptatem. Voluptatem labore nam repudiandae officia optio eos veniam deleniti. Vitae est qui repellendus non alias. Totam suscipit rerum et a magni atque. Reiciendis reiciendis illo voluptates accusantium architecto consectetur quidem et. Soluta fugiat ut placeat quis. Accusamus ut dolores voluptatem soluta harum saepe. Fugiat voluptatem officiis delectus rerum praesentium veritatis. Fugit deleniti enim quo qui reprehenderit. Blanditiis ut eum dolorum. Et recusandae repellendus sint ut corporis qui et.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "et-repudiandae-maxime-qui-quas", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "386" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-389.json b/db/resources/resources-389.json new file mode 100644 index 0000000..ba59ee0 --- /dev/null +++ b/db/resources/resources-389.json @@ -0,0 +1,17 @@ +{ + "ID": 389, + "post_title": "Eum sint expedita doloremque.", + "post_content": "Sed rem et minus quis suscipit aut. Reiciendis ad modi blanditiis sunt saepe quia. Id deserunt corporis enim sunt non dolorem soluta.\n\nEt neque eum labore eveniet nulla quidem. Qui numquam ab suscipit autem veritatis iste ut. Et ipsam rerum voluptate ex libero.\n\nNostrum praesentium minima quis sunt sit. Delectus nihil aspernatur excepturi vel qui ab. Velit sint aperiam et provident est. Repellat culpa eum hic numquam sequi facere quam.Facere commodi excepturi aliquid quas. Autem sed est et asperiores veniam quibusdam. Doloribus error quia magni et maxime ullam quae neque. Omnis quaerat id autem assumenda in dolorem voluptas. Magni alias pariatur repellat atque quia voluptatibus. Dolores et et iure quia quo doloribus iure. Quasi dolore ut fugiat. Quod adipisci in id. Reiciendis similique rem velit amet. Molestias porro ipsa a ut sint ratione odit rerum. Dolor minus voluptates possimus dolor nihil ullam. Explicabo praesentium itaque nemo. Quisquam dignissimos corporis aut doloremque dolores nesciunt.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "eum-sint-expedita-doloremque", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "390" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-391.json b/db/resources/resources-391.json new file mode 100644 index 0000000..8015244 --- /dev/null +++ b/db/resources/resources-391.json @@ -0,0 +1,17 @@ +{ + "ID": 391, + "post_title": "Eum dolorem in qui.", + "post_content": "Repudiandae rerum quia iure non praesentium non. Vero et non quos consequatur modi omnis. Fugiat illum labore qui quod dolores est. Blanditiis voluptate quam minima unde quo tempore.\n\nEveniet est autem odio vel velit. Non facilis atque molestiae cum sunt maiores saepe minima. Ducimus asperiores porro quod adipisci explicabo.\n\nDignissimos sit ut molestias soluta quaerat. Et impedit qui assumenda atque quod libero. Qui maxime ea et non sequi architecto eius.Itaque sit vero alias ipsum. Nostrum voluptas unde unde eum iste eveniet. Fuga et id eius. Dignissimos eveniet perspiciatis id et. Natus quia perferendis molestiae non. Nam animi similique excepturi qui consequuntur rerum enim debitis. Corporis non nulla voluptate commodi. Velit nesciunt aut officia aperiam non magni eos. Qui sint quisquam maiores nulla quia deserunt enim. Veniam enim est nostrum cupiditate vero sed quia. Quod ad qui eius dolores dolorum ad quidem. Blanditiis itaque ut libero facilis. Molestiae qui eum sit quisquam. Maiores expedita sit qui cupiditate recusandae. Ipsum consequatur ipsum nobis natus eius iste maxime.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "eum-dolorem-in-qui", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "392" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-397.json b/db/resources/resources-397.json new file mode 100644 index 0000000..89fbb58 --- /dev/null +++ b/db/resources/resources-397.json @@ -0,0 +1,17 @@ +{ + "ID": 397, + "post_title": "Id enim iusto quis est dolorem.", + "post_content": "Odit quia rerum molestias iusto ipsam. Quidem illo reiciendis dolores eligendi dicta. Consectetur ea hic at dolorem molestias nihil. Nisi corrupti qui hic quis dolorum soluta architecto ut. Velit eos animi ad dignissimos nesciunt quia.\n\nQuo ratione rerum illum laudantium qui. Consequatur voluptas non hic ullam eum. Quia ut rerum adipisci praesentium repellat aut et. Saepe repellendus consequatur aliquam qui.\n\nEt amet nemo facilis eum rem velit. Molestiae nam aperiam harum repellendus autem autem temporibus. Esse non ut at ea labore non. Eveniet minus aperiam eos eum ducimus. Consequatur sit nostrum sed aut facilis.Ut voluptatem veritatis dolores voluptatibus in veniam ad. Culpa excepturi iste deserunt natus nesciunt voluptatem eos. Voluptas dolore inventore in sequi voluptas et omnis. Sit architecto omnis suscipit sed. Ut ducimus libero fugiat iusto sint. Odit ut qui rerum deleniti eos. Aut culpa cum tempora enim quia similique est. Adipisci quo itaque et inventore repellat. Impedit nulla earum eveniet ut quia. Amet quaerat maiores eligendi est. Aut ullam nemo sit nihil esse qui. Corporis voluptas sapiente fuga id. Explicabo quam esse qui omnis quas. Dolorem minima qui commodi vel sit deleniti inventore exercitationem. Consequatur hic accusamus repudiandae sit accusamus dolorum corporis aut.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "id-enim-iusto-quis-est-dolorem", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "398" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-401.json b/db/resources/resources-401.json new file mode 100644 index 0000000..fbe8983 --- /dev/null +++ b/db/resources/resources-401.json @@ -0,0 +1,17 @@ +{ + "ID": 401, + "post_title": "Blanditiis est voluptatem quisquam rem.", + "post_content": "Odit esse nobis ipsa provident suscipit occaecati nulla. Repellendus quo autem quia voluptas vel. Perferendis consequuntur possimus neque aspernatur blanditiis in. Rerum dicta fuga est voluptates iste nostrum. Architecto odit est sequi voluptatem sed praesentium.\n\nExercitationem rerum autem sunt est deserunt aliquam repellat. Voluptas dolor harum ut eos maxime delectus ut a. Aspernatur non expedita corrupti. Facilis quia reprehenderit rem reprehenderit neque.\n\nUt enim perferendis fugiat quia mollitia voluptate quod fugiat. Quis est est odit illum impedit quia quasi id. Voluptatem in quia fugit vitae. Dolorem deserunt reprehenderit inventore velit ipsum qui.Voluptas aperiam omnis est eaque magni enim. Reprehenderit cupiditate cumque accusantium natus assumenda dolorem. Ipsa rem voluptatibus quos et perspiciatis vel. Ad aspernatur modi magni accusamus consequatur ex. Quo minima quasi labore ut autem illum nihil in. Iure est sed repellat. Rem nemo error vel. In aperiam earum possimus. Nesciunt qui soluta incidunt. Quo nihil molestias ea et quia facilis veniam. Nulla est tempore harum vitae. Voluptas vitae qui non aut et. Et facilis rerum modi quibusdam blanditiis est. Et ab quia blanditiis. Quaerat impedit est facilis possimus. Placeat est quisquam praesentium non omnis.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "blanditiis-est-voluptatem-quisquam-rem", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "402" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-403.json b/db/resources/resources-403.json new file mode 100644 index 0000000..e2090aa --- /dev/null +++ b/db/resources/resources-403.json @@ -0,0 +1,17 @@ +{ + "ID": 403, + "post_title": "Saepe aliquam quaerat corporis quam.", + "post_content": "Error omnis laborum labore omnis expedita est quibusdam. Itaque omnis sit sit nihil non rerum perspiciatis. Cumque sapiente et architecto excepturi cum voluptatibus vel. Qui aut ut labore labore omnis ut.\n\nUt autem voluptatem numquam nostrum ut qui ipsam. Id aut harum ratione recusandae in iure autem. Praesentium ad cupiditate nemo voluptatem porro. Aut nihil ut provident suscipit sit in.\n\nEa qui blanditiis illo asperiores odit. Placeat velit quia magni inventore id quibusdam. Hic quisquam aliquid autem dolores occaecati facilis. Reiciendis laborum saepe repellendus.Nemo vel recusandae iusto iste eos ut voluptatibus. Ut explicabo iste et error illo quidem ut nesciunt. Qui vel sint est culpa. Amet id atque omnis nisi quia. Hic eos magni repellat eius vel quos omnis. Iste sed quod aut voluptatibus sit animi et. Et dolorem qui voluptatem mollitia ratione sunt est. Atque laudantium explicabo sequi ratione voluptatem ut. Quibusdam id nihil ut distinctio illum nisi. Est impedit dolor eveniet et. Ullam qui eius qui quos et voluptatibus. Aperiam ipsa nihil doloremque tempora dolorem eum qui. Commodi rem voluptas voluptates qui. Quo et ea aliquid ullam. Explicabo aut eveniet voluptate est quam provident unde porro.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "saepe-aliquam-quaerat-corporis-quam", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "404" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-411.json b/db/resources/resources-411.json new file mode 100644 index 0000000..ed0f013 --- /dev/null +++ b/db/resources/resources-411.json @@ -0,0 +1,17 @@ +{ + "ID": 411, + "post_title": "Modi et in eum et esse quam.", + "post_content": "Sint ut non assumenda doloribus perspiciatis perspiciatis. Optio iusto repellendus eius quia. Sed quis qui nulla et odio voluptatem ut.\n\nMollitia voluptatem qui quidem qui cum. Et dolore natus corporis quis consequatur eaque eum. Consequatur quia et amet non natus non odio. Maxime est beatae officia repellendus natus.\n\nEaque excepturi mollitia dolorem. Ut consequuntur amet nobis sequi.Ducimus facilis qui quia. Quaerat excepturi quas nulla dolor voluptatem asperiores fuga. Vel rerum dolorem dolor vero. Alias vero suscipit perspiciatis hic. Nisi doloremque at molestiae. Aut assumenda est quod occaecati harum quisquam. Cum enim ut et corporis. Id fugiat et vel aut qui. Qui et delectus ab porro exercitationem quis. Natus dignissimos provident eligendi suscipit. Culpa aspernatur eos minus suscipit deleniti est. Asperiores eos nihil dolores consectetur incidunt rerum. Qui quo et porro aut alias.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "modi-et-in-eum-et-esse-quam", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "412" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-413.json b/db/resources/resources-413.json new file mode 100644 index 0000000..b52a364 --- /dev/null +++ b/db/resources/resources-413.json @@ -0,0 +1,17 @@ +{ + "ID": 413, + "post_title": "Velit deleniti nam autem rem.", + "post_content": "Sed libero blanditiis odit possimus hic quaerat quasi eius. Aut nam quae fuga cum tenetur. Debitis fugiat qui et aperiam voluptate qui. Eos sed iste est sit aperiam qui.\n\nVel vel reprehenderit nesciunt officiis provident consequuntur blanditiis voluptatum. Dolores ipsum placeat non provident distinctio modi. Molestias qui quaerat veritatis sit tempore. Tenetur velit voluptas tenetur itaque.\n\nOmnis odit ex quis consequuntur mollitia. Tenetur optio quam eos eos nobis modi corporis. Voluptas pariatur velit odio et.Et rerum ut autem. Eligendi illo error maxime quia repellendus sed. Non quibusdam ut asperiores ad impedit quo. Quae pariatur ullam ut omnis. Fugit voluptatibus veniam sit dolor placeat. Numquam inventore tenetur perferendis distinctio quo molestias cupiditate. Minima sed praesentium recusandae earum eligendi. Quod eligendi rerum vel. Debitis repellendus perferendis distinctio nesciunt cum. Temporibus quibusdam incidunt velit ea rem vitae. Nihil qui est et vitae sed. Et ut aut exercitationem hic voluptatem consequuntur.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "velit-deleniti-nam-autem-rem", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "414" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-417.json b/db/resources/resources-417.json new file mode 100644 index 0000000..12b4293 --- /dev/null +++ b/db/resources/resources-417.json @@ -0,0 +1,17 @@ +{ + "ID": 417, + "post_title": "Culpa ea blanditiis ipsam.", + "post_content": "Eligendi rerum deserunt facere. Asperiores placeat pariatur enim eaque nulla est qui. In facere culpa aut numquam provident voluptatem quia.\n\nId enim illum labore quam. Ducimus fugiat saepe nihil omnis aut qui quam. Est aut minima aut tempora nulla. Quo eligendi facere laboriosam excepturi nulla.\n\nMinima aut iste unde nulla corrupti aut quo. Eum iste quibusdam qui modi pariatur quisquam. Ut occaecati consequatur optio et.Deleniti earum molestiae modi aperiam. Consectetur eum sit consectetur quis. Aperiam asperiores temporibus voluptatem eos. Expedita veniam aut neque at ea. Neque amet qui esse earum tenetur provident. Aperiam natus ullam tempore ullam. Qui officiis quos impedit totam. Quo sit quam aut consequatur dolorum est ea. Suscipit tempore placeat enim deserunt. Commodi voluptatum rerum nisi aperiam impedit impedit quam quia. Nisi repellendus voluptas itaque debitis. Et velit deleniti voluptas. Facilis aut ullam ut aut harum modi quasi.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "culpa-ea-blanditiis-ipsam", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "418" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-425.json b/db/resources/resources-425.json new file mode 100644 index 0000000..4057614 --- /dev/null +++ b/db/resources/resources-425.json @@ -0,0 +1,17 @@ +{ + "ID": 425, + "post_title": "Sed quia nulla autem recusandae unde.", + "post_content": "Animi fugit molestiae a officiis nisi quia. Ipsa et ea cumque exercitationem. Et earum reiciendis nemo. In totam adipisci ea expedita.\n\nReprehenderit quia dolores minus labore facere at qui esse. Rerum repellat numquam doloribus esse qui at consequatur. Dolore corrupti ea eaque porro. Magnam sit non cumque voluptatibus.\n\nA vitae consectetur nostrum occaecati beatae non. Error veniam magni qui qui aut. Saepe provident quidem eos a. Voluptatem officia rerum et voluptate temporibus.Rerum sit sequi voluptatum earum temporibus. Magni perspiciatis recusandae perspiciatis sunt maiores. Sed provident placeat in exercitationem. Eius ut maxime voluptatibus qui nesciunt et doloremque. Officiis repellendus eius minima quasi voluptas non. Sint ullam fugit ea qui saepe dolores. Commodi cum qui vitae voluptates quam. Ad possimus et non dolor velit necessitatibus nihil et. Veniam quod reiciendis placeat magnam quisquam. Quisquam harum voluptas incidunt eius. Sequi suscipit voluptatem et consectetur est nobis ullam. Velit nihil et ipsa est non.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "sed-quia-nulla-autem-recusandae-unde", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "426" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-427.json b/db/resources/resources-427.json new file mode 100644 index 0000000..c6fe711 --- /dev/null +++ b/db/resources/resources-427.json @@ -0,0 +1,17 @@ +{ + "ID": 427, + "post_title": "Inventore ad pariatur quia.", + "post_content": "Nobis ut deleniti tenetur. Velit sint vel quos quasi consequatur. Beatae corrupti velit dolorem eos. Consectetur expedita molestiae quaerat quam repudiandae.\n\nMagnam eum minus ut consequatur. Omnis modi quisquam error quas aliquam et quod. Voluptas quis dolores ut neque nobis modi exercitationem. Qui quae maiores enim dolor quos. Ut odit rem enim dignissimos dolores sunt.\n\nRem et omnis voluptate officiis provident voluptas itaque dolore. Occaecati cum corrupti nam consequatur ipsa tenetur rerum. Magni quas ab aspernatur minus quis. Nihil illo perferendis ut voluptas.Labore illum id accusamus. Provident excepturi consectetur blanditiis qui unde enim. Minus enim voluptatum aut est accusantium omnis nisi. Officiis saepe ut aut nihil aut eius non. Perferendis quaerat molestiae quisquam iusto dolorem laborum qui consequatur. Ut ut illum et ea id. Id consectetur voluptas ratione consequuntur id consequatur. Et sapiente ea eum omnis ratione architecto. Dicta quisquam repellat quod quod alias. Neque ut aspernatur qui quos aut in. Qui nihil non accusantium nam. Ullam dolor ea atque repudiandae harum. Saepe ut enim eum perferendis. Rerum expedita aut nostrum inventore voluptatum quos tempora aut.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "inventore-ad-pariatur-quia", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "428" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-429.json b/db/resources/resources-429.json new file mode 100644 index 0000000..8c4a7d9 --- /dev/null +++ b/db/resources/resources-429.json @@ -0,0 +1,17 @@ +{ + "ID": 429, + "post_title": "Excepturi quidem a magnam quas.", + "post_content": "Minus libero suscipit tempore. Corrupti quia iusto velit voluptas. Asperiores voluptates cumque possimus ut sed voluptatum. Sapiente unde quaerat quasi at.\n\nDelectus aut asperiores delectus assumenda voluptas. Dolores voluptate totam aperiam non sed rerum sit. Delectus recusandae minima quae.\n\nAssumenda fuga quaerat ipsum quo iusto neque. Voluptatibus enim et id deserunt omnis. Accusamus minima velit qui. Asperiores explicabo cupiditate culpa atque ipsa et tempore.Debitis dolores quia voluptas nostrum. Iure deleniti voluptatem qui ipsa deleniti. Voluptatem voluptas ratione dolorem. Et aspernatur ut dolores nam quaerat. Qui ipsa et alias ex. Voluptas consectetur rem ipsam expedita. Sed repellendus consequatur sunt excepturi sed exercitationem necessitatibus. Perspiciatis architecto repudiandae incidunt deserunt soluta rerum. Repellat repudiandae aut est exercitationem minima dignissimos quos. Numquam neque dolores recusandae provident. Porro quisquam ea inventore sunt recusandae necessitatibus qui. Autem quibusdam alias eos adipisci illum quis voluptatem.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "excepturi-quidem-a-magnam-quas", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "430" + ] + } +} \ No newline at end of file diff --git a/db/resources/resources-433.json b/db/resources/resources-433.json new file mode 100644 index 0000000..483775c --- /dev/null +++ b/db/resources/resources-433.json @@ -0,0 +1,17 @@ +{ + "ID": 433, + "post_title": "Omnis architecto ut aut dicta.", + "post_content": "Quaerat et sed voluptatem voluptas omnis libero alias est. Magni vel sint voluptates fugiat commodi provident exercitationem. Facere incidunt id minima doloremque eveniet quia quis.\n\nVoluptate est numquam repudiandae velit non ex expedita. Aliquid ex neque minima veniam. Necessitatibus vero ipsa iusto sit molestias amet omnis.\n\nLaudantium molestias enim quo. Nulla aut tempore architecto similique ut. Sunt qui dolores ipsa ratione id.Et iusto fugit id animi vitae accusantium. Tempora eius rerum corporis ut reiciendis rerum. Sint atque qui at non maiores iusto. Impedit voluptate ducimus voluptates omnis quidem incidunt est. Alias aliquid quis nisi consectetur voluptatem eum. Vel enim sed rerum. Libero et ea tempore facilis magnam praesentium dolore. Aut et excepturi ut qui. Sunt at dicta rerum et quisquam voluptas. Adipisci aut quis voluptas amet. Cumque quia qui non dolorem. Omnis vel quam unde accusantium.", + "post_excerpt": "", + "post_type": "resources", + "post_status": "publish", + "post_name": "omnis-architecto-ut-aut-dicta", + "meta": { + "wp_dummy_content_generator_post": [ + "true" + ], + "_thumbnail_id": [ + "434" + ] + } +} \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..da9c273 --- /dev/null +++ b/footer.php @@ -0,0 +1,108 @@ + + + + +
+
+
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+
+
+ + +
+ + + + diff --git a/front-page.php b/front-page.php new file mode 100644 index 0000000..10b0719 --- /dev/null +++ b/front-page.php @@ -0,0 +1,27 @@ + + +
+
+ +
+
+ + diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..59e3d91 --- /dev/null +++ b/functions.php @@ -0,0 +1,38 @@ + + + +> + + + <?php wp_title( '' ); ?> + + + + + + +> + + + + +
+ + + diff --git a/index.php b/index.php new file mode 100644 index 0000000..cca87f6 --- /dev/null +++ b/index.php @@ -0,0 +1,96 @@ + + +
+ +
+
+
+ +
+
+ + + + <?php echo esc_attr( $imgAlt ); ?> + +
+ +
+
+ Posted in: + $category ) : + $separator = $index < count( $categories ) - 1 ? ', ' : ''; + ?> + name ); ?> + +
+ + +

+
+ + +
+
+ +
+ +
+ 2, + 'prev_text' => '« Previous', + 'next_text' => 'Next »', + ) + ); + ?> +
+
+
+ +
+
+

Nothing here yet…

+

No published posts found.

+
+
+ + + + + +
+ + diff --git a/lib/activation.php b/lib/activation.php new file mode 100644 index 0000000..94d4e5d --- /dev/null +++ b/lib/activation.php @@ -0,0 +1,251 @@ + array(), + 'News' => array(), + 'Page Not Found (Error 404)' => array(), + 'Contact Us' => array(), + /** + * Sample nested structure + * + * 'Parent Page' => array( + * 'Subpage 1' => array( + * 'Sub-subpage 1', + * 'Sub-subpage 2' + * ), + * 'Subpage 2.2' => array() + * ), + */ + ); + + foreach ( $arrPages as $pageTitle => $childPages ) { + // phpcs:ignore + $pageExists = get_page_by_title($pageTitle); + + if ( ! $pageExists ) { + // Create the parent page + $pageId = wp_insert_post( + array( + 'post_title' => $pageTitle, + 'post_content' => '', + 'post_type' => 'page', + 'post_status' => 'publish', + ) + ); + + // If there are child pages, create them under the parent page + foreach ( $childPages as $childPageTitle => $subChildPages ) { + if ( is_array( $subChildPages ) ) { + $subpageId = wp_insert_post( + array( + 'post_title' => $childPageTitle, + 'post_content' => '', + 'post_type' => 'page', + 'post_status' => 'publish', + 'post_parent' => $pageId, + ) + ); + + foreach ( $subChildPages as $subChildPageTitle ) { + wp_insert_post( + array( + 'post_title' => $subChildPageTitle, + 'post_content' => '', + 'post_type' => 'page', + 'post_status' => 'publish', + 'post_parent' => $subpageId, + ) + ); + } + } else { + wp_insert_post( + array( + 'post_title' => $childPageTitle, + 'post_content' => '', + 'post_type' => 'page', + 'post_status' => 'publish', + 'post_parent' => $pageId, + ) + ); + } + } + } + } + + // Use a static front page + // phpcs:ignore + $home = get_page_by_title('Home'); + update_option( 'page_on_front', $home->ID ); + update_option( 'show_on_front', 'page' ); + + // Set the blog/news page + // phpcs:ignore + $news = get_page_by_title('News'); + update_option( 'page_for_posts', $news->ID ); + + // Trash the samples + wp_delete_post( 1, true ); + wp_delete_post( 2, true ); + + // Flush rewrite rules to ensure new pages are recognized + flush_rewrite_rules(); + + /** + * Install and activate must-use plugins + */ + + $muPlugins = array( + array( + 'url' => 'https://docs.vincentdevelopment.ca/files/advanced-custom-fields-pro.zip', + 'active' => true, + ), + array( + 'url' => 'https://docs.vincentdevelopment.ca/files/gravity-forms.zip', + 'active' => true, + ), + array( + 'url' => 'https://updraftplus.com/wp-content/uploads/updraftplus.zip', + 'active' => false, + ), + array( + 'url' => 'https://downloads.wordpress.org/plugin/simple-history.5.11.0.zip', + 'active' => true, + ), + array( + 'url' => 'https://downloads.wordpress.org/plugin/autodescription.5.1.2.zip', + 'active' => true, + ), + array( + 'url' => 'https://downloads.wordpress.org/plugin/better-search-replace.1.4.10.zip', + 'active' => true, + ), + array( + 'url' => 'https://downloads.wordpress.org/plugin/google-site-kit.1.153.0.zip', + 'active' => false, + ), + ); + + // Custom log file + $logFile = WP_CONTENT_DIR . '/mu-plugin-install.log'; + + /** + * Simple logging function. + * + * @param string $message The message to log. + */ + function log_message( $message ) { + global $logFile; + $timestamp = gmdate( 'Y-m-d H:i:s' ); + // phpcs:ignore + file_put_contents( $logFile, "[$timestamp] $message\n", FILE_APPEND ); + } + + // Include necessary WordPress files + require_once ABSPATH . 'wp-admin/includes/file.php'; + require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + + // Force direct filesystem access + add_filter( 'filesystem_method', fn() => 'direct' ); + + global $wp_filesystem; + if ( ! WP_Filesystem() ) { + log_message( 'Filesystem initialization failed.' ); + return; + } + + // Define a silent skin to avoid show_message() errors + // phpcs:disable + class Silent_Upgrader_Skin extends WP_Upgrader_Skin { + public function feedback( $string, ...$args ) {} + public function header() {} + public function footer() {} + public function error( $errors ) { + log_message( 'Upgrader error: ' . print_r( $errors, true ) ); + } + public function before() {} + public function after() {} + } + // phpcs:enable + + $skin = new Silent_Upgrader_Skin(); + $upgrader = new Plugin_Upgrader( $skin ); + + // Process each plugin + foreach ( $muPlugins as $plug ) { + $plugUrl = $plug['url']; + $shouldActivate = ! empty( $plug['active'] ); + + // Download plugin + $response = wp_remote_get( $plugUrl ); + if ( is_wp_error( $response ) ) { + log_message( "Failed to download plugin from {$plugUrl}: " . $response->get_error_message() ); + continue; + } + + // Extract filename from URL + $plugFileName = basename( wp_parse_url( $plugUrl, PHP_URL_PATH ) ); + + // Save the plugin zip + $plugZip = wp_upload_bits( $plugFileName, null, wp_remote_retrieve_body( $response ) ); + if ( $plugZip['error'] ) { + log_message( "Failed to save plugin zip {$plugFileName}: " . $plugZip['error'] ); + continue; + } + + // Install the plugin + $installResult = $upgrader->install( $plugZip['file'] ); + if ( is_wp_error( $installResult ) ) { + log_message( "Failed to install plugin {$plugFileName}: " . $installResult->get_error_message() ); + // Cleanup temp zip + if ( file_exists( $plugZip['file'] ) ) { + wp_delete_file( $plugZip['file'] ); + } + continue; + } + + // Get plugin info ( folder/main file ) + $plugInfo = $upgrader->plugin_info(); + log_message( "plugin_info for {$plugFileName}: {$plugInfo}" ); + + if ( ! $plugInfo || ! file_exists( WP_PLUGIN_DIR . '/' . $plugInfo ) ) { + log_message( "Could not determine installed plugin file for {$plugFileName}." ); + // Cleanup temp zip + if ( file_exists( $plugZip['file'] ) ) { + wp_delete_file( $plugZip['file'] ); + } + continue; + } + + log_message( "Successfully installed plugin {$plugInfo}." ); + + // Attempt activation if marked active + if ( $shouldActivate ) { + $activateResult = activate_plugin( $plugInfo ); + if ( is_wp_error( $activateResult ) ) { + log_message( "Failed to activate plugin {$plugInfo}: " . $activateResult->get_error_message() ); + } else { + log_message( "Successfully activated plugin {$plugInfo}." ); + } + } else { + log_message( "Plugin {$plugInfo} installed but not activated ( per configuration )." ); + } + + // Cleanup temp zip + if ( file_exists( $plugZip['file'] ) ) { + wp_delete_file( $plugZip['file'] ); + log_message( "Deleted temporary zip file {$plugZip['file']}." ); + } + } + + log_message( '=== Plugin installation and activation process completed ===' ); +} diff --git a/lib/class-acf.php b/lib/class-acf.php new file mode 100644 index 0000000..65116db --- /dev/null +++ b/lib/class-acf.php @@ -0,0 +1,59 @@ +path = get_stylesheet_directory() . '/acf'; + add_filter( 'acf/settings/load_json', array( $this, 'loadJson' ) ); + add_filter( 'acf/settings/save_json', array( $this, 'saveJson' ) ); + } + + /** Save JSON. + * + * @param mixed $path The path to save the JSON file. + */ + // phpcs:ignore + public function saveJson( $path ) { + return $this->path; + } + + /** Load JSON. + * + * @param mixed $paths The paths to load the JSON file. + */ + // phpcs:ignore + public function loadJson( $paths ) { + return array( $this->path ); + } +} + +if ( function_exists( 'get_fields' ) ) { + $acfInstance = new ACF(); +} diff --git a/lib/class-breadcrumbs.php b/lib/class-breadcrumbs.php new file mode 100644 index 0000000..f77ba89 --- /dev/null +++ b/lib/class-breadcrumbs.php @@ -0,0 +1,396 @@ + home_url(), + 'label' => 'Home', + ); + } + + /** Generates the breadcrumb for the blog posts index page. + * + * This method is responsible for creating a breadcrumb entry + * that represents the blog posts index page in the breadcrumb trail. + * + * @return array An associative array representing the breadcrumb for the blog posts index page. + */ + private static function getBlogPostsIndexBreadcrumb() { + return array( 'label' => get_the_title( get_option( 'page_for_posts' ) ) ); + } + + /** Generates the breadcrumb trail for a single post. + * + * This method is responsible for creating the breadcrumb navigation + * specific to single post views. It typically includes links to the + * homepage, category (or categories) the post belongs to, and the + * post title itself. + * + * @return array An array representing the breadcrumb trail, where each + * element is a breadcrumb item (e.g., URL and label). + */ + private static function getSinglePostBreadcrumbs() { + $breadcrumbs = array(); + $categories = get_the_category(); + + $breadcrumbs[] = array( + 'url' => get_permalink( get_option( 'page_for_posts' ) ), + 'label' => get_the_title( get_option( 'page_for_posts' ) ), + ); + + if ( ! empty( $categories ) ) { + $cat = $categories[0]; + $breadcrumbs[] = array( + 'url' => get_category_link( $cat ), + 'label' => $cat->name, + ); + } + + $breadcrumbs[] = array( 'label' => get_the_title() ); + return $breadcrumbs; + } + + /** Generates breadcrumbs for custom post types. + * + * This method is responsible for creating breadcrumb navigation + * specific to custom post types. It retrieves and formats the + * breadcrumb trail based on the custom post type's hierarchy + * and structure. + * + * @return array An array representing the breadcrumb trail for the custom post type. + */ + private static function getCustomPostTypeBreadcrumbs() { + $breadcrumbs = array(); + $postType = get_post_type_object( get_post_type() ); + if ( $postType && ! in_array( get_post_type(), array( 'post', 'page' ), true ) ) { + $breadcrumbs[] = array( + 'url' => get_post_type_archive_link( $postType->name ), + 'label' => $postType->labels->name, + ); + } + $breadcrumbs[] = array( 'label' => get_the_title() ); + return $breadcrumbs; + } + + /** Generates breadcrumbs for a static page. + * + * This method is responsible for creating breadcrumb navigation + * for static pages in a WordPress theme. It utilizes the provided + * post object to determine the breadcrumb structure. + * + * @param WP_Post $post The WordPress post object representing the static page. + * @return array An array of breadcrumb items, where each item is typically + * an associative array containing 'title' and 'url' keys. + */ + private static function getStaticPageBreadcrumbs( $post ) { + $breadcrumbs = array(); + if ( $post->post_parent ) { + $ancestors = array_reverse( get_post_ancestors( $post->ID ) ); + foreach ( $ancestors as $ancestor ) { + $breadcrumbs[] = array( + 'url' => get_permalink( $ancestor ), + 'label' => get_the_title( $ancestor ), + ); + } + } + $breadcrumbs[] = array( 'label' => get_the_title() ); + return $breadcrumbs; + } + + /** Generates a breadcrumb for taxonomy archive pages. + * + * This method is responsible for creating breadcrumb navigation + * specific to taxonomy archive pages, providing users with a clear + * path to navigate back to the taxonomy or related sections. + * + * @return array An array representing the breadcrumb trail for the taxonomy archive. + */ + private static function getTaxonomyArchiveBreadcrumb() { + $term = get_queried_object(); + return $term && isset( $term->name ) ? array( 'label' => $term->name ) : array(); + } + + /** Generates a breadcrumb for the archive page of a custom post type. + * + * This method is responsible for creating a breadcrumb link that points + * to the archive page of a specific custom post type. It is typically used + * in breadcrumb navigation to provide users with a way to navigate back + * to the archive page of the post type they are currently viewing. + * + * @return array An array containing the breadcrumb data for the custom post type archive. + */ + private static function getPostTypeArchiveBreadcrumb() { + $postType = get_post_type_object( get_post_type() ); + return $postType ? array( 'label' => $postType->labels->name ) : array(); + } + + /** Generates breadcrumbs for date-based archives. + * + * This method is responsible for creating breadcrumb navigation + * for WordPress date archive pages, such as year, month, or day archives. + * + * @return array An array representing the breadcrumb trail for the date archive. + */ + private static function getDateArchiveBreadcrumbs() { + return array( + array( + 'url' => get_month_link( get_query_var( 'year' ), get_query_var( 'monthnum' ) ), + 'label' => get_the_date( 'F Y' ), + ), + array( 'label' => get_the_date() ), + ); + } + + /** Generates a breadcrumb for a monthly archive page. + * + * This method is responsible for creating a breadcrumb + * specific to WordPress monthly archive pages. It typically + * includes the year and month as part of the breadcrumb trail. + * + * @return string The HTML markup for the monthly archive breadcrumb. + */ + private static function getMonthArchiveBreadcrumb() { + return array( 'label' => get_the_date( 'F Y' ) ); + } + + /** Generates a breadcrumb for the year-based archive page. + * + * This method is responsible for creating a breadcrumb link + * specific to the year archive in a WordPress site. It is typically + * used to provide navigation for users when they are viewing posts + * filtered by a specific year. + * + * @return string The HTML markup for the year archive breadcrumb. + */ + private static function getYearArchiveBreadcrumb() { + return array( 'label' => get_the_date( 'Y' ) ); + } + + /** Generates the breadcrumb for the author archive page. + * + * This method is responsible for creating a breadcrumb trail + * specific to the author archive, providing navigation context + * for pages that display posts by a particular author. + * + * @return string The HTML markup for the author archive breadcrumb. + */ + private static function getAuthorArchiveBreadcrumb() { + $author = get_queried_object(); + return array( 'label' => 'Author: ' . $author->display_name ); + } + + /** Generates the breadcrumb for search results. + * + * This method is responsible for creating a breadcrumb trail + * specific to search result pages. It helps users navigate back + * to the search context or other parts of the site. + * + * @return string The HTML markup for the search breadcrumb. + */ + private static function getSearchBreadcrumb() { + return array( 'label' => 'Search: ' . get_search_query() ); + } + + /** Generates the breadcrumb trail for a 404 error page. + * + * This method is responsible for creating a breadcrumb structure + * specifically for 404 error pages, providing users with a navigational + * context when a requested page is not found. + * + * @return array An array representing the breadcrumb trail for the 404 page. + */ + private static function get404Breadcrumb() { + return array( 'label' => '404 Not Found' ); + } + + /** Renders the breadcrumb navigation. + * + * This method generates and outputs the breadcrumb trail for the current page. + * + * @return void + */ + public static function render() { + $items = self::generate(); + + $metadata = array( + '@context' => 'https://schema.org', + '@type' => 'BreadcrumbList', + 'itemListElement' => array(), + ); + + ob_start(); + ?> + + + + + + array( + 'class' => array(), + 'href' => array(), + 'title' => array(), + 'rel' => array(), + 'target' => array(), + 'aria-label' => array(), + 'aria-current' => array(), + ), + 'nav' => array( + 'aria-label' => array(), + 'class' => array(), + 'vocab' => array(), + 'typeof' => array(), + ), + 'span' => array( + 'class' => array(), + 'aria-current' => array(), + ), + 'svg' => array( + 'class' => array(), + 'xmlns' => array(), + 'viewBox' => array(), + 'fill' => array(), + 'aria-hidden' => array(), + 'aria-label' => array(), + ), + 'path' => array( + 'd' => array(), + 'fill-rule' => array(), + 'clip-rule' => array(), + 'fill' => array(), + 'xmlns:xlink' => array(), + ), + 'script' => array( + 'type' => array(), + 'src' => array(), + ), + ) + ); + } +} diff --git a/lib/class-enqueue.php b/lib/class-enqueue.php new file mode 100644 index 0000000..8bb55c3 --- /dev/null +++ b/lib/class-enqueue.php @@ -0,0 +1,100 @@ +displayLocation = $menuName; + + $this->topLevelNavItems = $this->getTopLevelNavItems(); + $this->hasChildren = function ( $item ) { + return $this->hasChildren( $item ); + }; + $this->nestedNavItems = function ( $parentItem ) { + return $this->getNestedNavItems( $parentItem ); + }; + $this->currentPage = function ( $item ) { + return $this->currentPage( $item ); + }; + } + + /** + * Retrieves the list of menus. + * + * @return array An array containing menu items. + */ + public function getMenus() { + $menus = get_nav_menu_locations(); + return empty( $menus ) ? array() : $menus; + } + + /** + * Retrieves the navigation items. + * + * @return array An array of navigation items. + */ + public function getNavItems() { + $locations = $this->getMenus(); + + // If the menu location doesn't exist, return empty array + if ( ! isset( $locations[ $this->displayLocation ] ) ) { + return array(); + } + + // Get the menu ID for this location + $menuId = $locations[ $this->displayLocation ]; + + // Direct call to wp_get_nav_menu_items with the menu ID + $items = wp_get_nav_menu_items( $menuId ); + + // Return empty array if no items + return is_array( $items ) ? $items : array(); + } + + /** + * Checks if the given parent item has child items. + * + * @param mixed $parentItem The parent item to check for children. + * @return bool Returns true if the parent item has children, false otherwise. + */ + public function hasChildren( $parentItem ) { + foreach ( $this->getNavItems() as $item ) { + if ( $item->menu_item_parent === strval( $parentItem->ID ) ) { + return true; + } + } + return false; + } + + /** + * Retrieves the top-level navigation items. + * + * @return array An array of top-level navigation items. + */ + public function getTopLevelNavItems() { + $items = array(); + foreach ( $this->getNavItems() as $item ) { + if ( $item->menu_item_parent === '0' ) { + array_push( $items, $item ); + } + } + return $items; + } + + /** + * Retrieves the nested navigation items for a given parent item. + * + * @param mixed $parentItem The parent navigation item for which nested items are to be retrieved. + * @return array The list of nested navigation items. + */ + public function getNestedNavItems( $parentItem ) { + $childrenItems = array(); + foreach ( $this->getNavItems() as $item ) { + if ( $item->menu_item_parent === strval( $parentItem->ID ) ) { + array_push( $childrenItems, $item ); + } + } + return $childrenItems; + } + + /** + * Determines the current page based on the provided item. + * + * @param mixed $item The item used to determine the current page. + * @return mixed The current page information. + */ + public function currentPage( $item ) { + global $wp; + return ( $item->url === home_url( $wp->request ) . '/' ) ? 'true' : 'false'; + } + + /** + * Renders the output for the current context. + * + * This method is responsible for generating and returning the + * appropriate output for the current context or request. + * + * @return void + */ + public function render() { + global $views; + + // Extract class properties to local variables + $location = $this->displayLocation; + $topLevelNavItems = $this->topLevelNavItems; + $hasChildren = $this->hasChildren; + $nestedNavItems = $this->nestedNavItems; + $currentPage = $this->currentPage; + + include $views . '/components/menu-items/index.php'; + } +} diff --git a/lib/class-resources.php b/lib/class-resources.php new file mode 100644 index 0000000..12e58ac --- /dev/null +++ b/lib/class-resources.php @@ -0,0 +1,129 @@ + array( + 'name' => 'Resources', + 'singular_name' => 'Resource', + 'menu_name' => 'Resources', + 'name_admin_bar' => 'Resource', + 'add_new' => 'Add New Resource', + 'add_new_item' => 'Add New Resource', + 'edit_item' => 'Edit Resource', + 'new_item' => 'New Resource', + 'view_item' => 'View Resource', + 'search_items' => 'Search Resources', + 'not_found' => 'No resources found', + 'not_found_in_trash' => 'No resources found in Trash', + ), + 'public' => true, + 'has_archive' => true, + 'rewrite' => array( 'slug' => 'resources' ), + 'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions', 'custom-fields' ), + 'menu_position' => 20, + 'menu_icon' => 'dashicons-hammer', + 'show_in_rest' => true, + ) + ); + } + + /** + * Registers a custom taxonomy. + * + * This method is responsible for defining and registering a custom taxonomy + * within the WordPress environment. It should include the necessary arguments + * and settings for the taxonomy to function as intended. + * + * @return void + */ + public function registerTaxonomy() { + register_taxonomy( + 'resource_type', + array( 'resources' ), + array( + 'labels' => array( + 'name' => 'Resource Types', + 'singular_name' => 'Resource Type', + 'search_items' => 'Search Resource Types', + 'all_items' => 'All Resource Types', + 'parent_item' => 'Parent Resource Type', + 'parent_item_colon' => 'Parent Resource Type:', + 'edit_item' => 'Edit Resource Type', + 'update_item' => 'Update Resource Type', + 'add_new_item' => 'Add New Resource Type', + 'new_item_name' => 'New Resource Type Name', + 'menu_name' => 'Resource Types', + ), + 'public' => true, + 'hierarchical' => true, + 'show_admin_column' => true, + 'rewrite' => array( + 'slug' => 'resources', + 'with_front' => false, + 'hierarchical' => true, + ), + 'show_in_rest' => true, + ) + ); + } + + /** + * Filters the permalink for a post of a specific post type. + * + * @param string $post_link The post's permalink. + * @param WP_Post $post The post object. + * @return string The filtered post permalink. + */ + public function postTypeLink( $post_link, $post ) { + if ( 'resources' === $post->post_type ) { + $terms = get_the_terms( $post->ID, 'resource_type' ); + if ( $terms && ! is_wp_error( $terms ) ) { + $term_slug = $terms[0]->slug; + + return home_url( "resources/{$term_slug}/{$post->post_name}" ); + } + } + + return $post_link; + } +} + +new Resources(); diff --git a/lib/extras.php b/lib/extras.php new file mode 100644 index 0000000..3142418 --- /dev/null +++ b/lib/extras.php @@ -0,0 +1,260 @@ + get_the_ID(), + 'sort_order' => 'ASC', + 'sort_column' => 'menu_order', + ) + ); + + foreach ( $children as &$child ) { + $child->url = get_page_link( $child->ID ); + } + + return $children; +} + +// Modify which pages should render the sidebar. +add_filter( + 'hasSidebar', + function ( $has_sidebar ) { + // Add post types that should never have a sidebar. + + if ( is_page() && ! get_field( 'has_sidebar' ) ) { + return false; + } + + return $has_sidebar; + } +); + +/** Helper to check whether or not the sidebar should be rendered + * (to add/remove a sidebar from a page, edit the filter instead + * of modifying this function). + */ +function hasSidebar() { + return apply_filters( 'hasSidebar', true ); +} + +// Add extra body classes here. +add_filter( + 'body_class', + function ( $classes ) { + if ( hasSidebar() ) { + $classes = array_merge( $classes, array( 'has-sidebar' ) ); + } + + return $classes; + } +); + +/** + * Checks if the page should render a page header. + * + * @return bool true if page header should be rendered, false otherwise + */ +function hasPageHeader() { + global $post; + + if ( get_field( 'hero_style' ) !== 'none' ) { + return false; + } + + return true; +} + +/** Create the Owner role. + * + * This function creates a new role named "Owner" with all the capabilities of the + * Administrator role, except for the following: + * + * - activate_plugins + * - delete_plugins + * - edit_plugins + * - install_plugins + * - update_plugins + * - switch_themes + * - edit_themes + * - delete_themes + * - install_themes + * - update_themes + * - update_core + * - manage_options + * + * This role is meant to be used by a person who should have almost all the same + * capabilities as an Administrator, but should not have the ability to update + * the WordPress core software, manage plugins or themes, or edit other site + * options. + * + * @return void + */ +function createOwnerRole() { + // First, remove the role if it exists. + remove_role( 'owner' ); + + // Get the administrator role. + $admin_role = get_role( 'administrator' ); + $admin_capabilities = $admin_role->capabilities; + + // Remove specific capabilities. + $capabilities_to_remove = array( + 'activate_plugins', + 'delete_plugins', + 'edit_plugins', + 'install_plugins', + 'update_plugins', + 'switch_themes', + 'edit_themes', + 'delete_themes', + 'install_themes', + 'update_themes', + 'update_core', + 'manage_options', + ); + + foreach ( $capabilities_to_remove as $capability ) { + unset( $admin_capabilities[ $capability ] ); + } + + // Add the Owner role with the modified capabilities. + add_role( 'owner', 'Owner', $admin_capabilities ); +} +add_action( 'init', __NAMESPACE__ . '\\createOwnerRole' ); + +/** Retrieves the appropriate title for the current page context. + * + * The function determines the type of page being viewed and returns + * the corresponding title. It handles different page types, including + * the home page, single posts, archives, search results, and 404 pages. + * If none of these conditions apply, it defaults to fetching the page's title. + * + * @return string The title relevant to the current page context. + */ +function getTheTitle() { + $title = ''; + + if ( is_home() || is_single() ) { + $title = get_the_title( get_option( 'page_for_posts', true ) ); + } elseif ( is_archive() ) { + $title = get_the_archive_title(); + } elseif ( is_search() ) { + $title = sprintf( + /* translators: %s is replaced with the search query */ + __( 'Search Results for "%s"', 'basicwp' ), + get_search_query() + ); + } elseif ( is_404() ) { + $title = 'Page Not Found (error 404)'; + } else { + $title = get_the_title(); + } + + return $title; +} + +/** Wraps iframes and embed elements in a div with a specific class. + * + * This function searches for iframe and embed elements within the provided + * content and wraps each found element in a div with the class "embed". + * It is useful for applying consistent styling or responsive behavior + * to embedded media elements. + * + * @param string $content The HTML content containing iframes or embeds. + * @return string The modified content with wrapped iframes and embeds. + */ +function divWrapper( $content ) { + // match any iframes. + $pattern = '~|~'; + preg_match_all( $pattern, $content, $matches ); + + foreach ( $matches[0] as $match ) { + // wrap matched iframe with div. + $wrappedframe = '
' . $match . '
'; + + // replace original iframe with new in content. + $content = str_replace( $match, $wrappedframe, $content ); + } + + return $content; +} + +add_filter( 'the_content', __NAMESPACE__ . '\\divWrapper' ); + +/** Selectively add sidebar to page. + * + * This function adds a custom field group to the WordPress editor for + * pages, allowing users to specify whether a page should have a sidebar. + * Default is no sidebar. + * + * @return void + */ +add_action( + 'acf/include_fields', + function () { + if ( ! function_exists( 'acf_add_local_field_group' ) ) { + return; + } + + acf_add_local_field_group( + array( + 'key' => 'group_6817d79573087', + 'title' => 'Page Sidebar', + 'fields' => array( + array( + 'key' => 'field_6817d7954a168', + 'label' => '', + 'name' => 'has_sidebar', + 'aria-label' => '', + 'type' => 'true_false', + 'instructions' => '', + 'required' => 0, + 'conditional_logic' => 0, + 'wrapper' => array( + 'width' => '', + 'class' => '', + 'id' => '', + ), + 'message' => 'Should this page have a sidebar?', + 'default_value' => 0, + 'allow_in_bindings' => 0, + 'ui' => 0, + 'ui_on_text' => '', + 'ui_off_text' => '', + ), + ), + 'location' => array( + array( + array( + 'param' => 'post_type', + 'operator' => '==', + 'value' => 'page', + ), + ), + ), + 'menu_order' => 0, + 'position' => 'side', + 'style' => 'default', + 'label_placement' => 'top', + 'instruction_placement' => 'label', + 'hide_on_screen' => '', + 'active' => true, + 'description' => '', + 'show_in_rest' => 0, + ) + ); + } +); diff --git a/lib/helpers.php b/lib/helpers.php new file mode 100644 index 0000000..f34a2d6 --- /dev/null +++ b/lib/helpers.php @@ -0,0 +1,155 @@ + 'Global Fields', + 'menu_title' => 'Global Fields', + 'menu_slug' => 'global-fields', + 'icon_url' => 'dashicons-admin-site', + ) + ); + } + ); +} + +/** Customizes the order of the admin menu items in WordPress. + * + * This function modifies the default menu order in the WordPress admin dashboard + * by specifying a custom sequence for menu items, separators, and additional + * options. If the menu order is not specified, it returns true to allow the + * default order to be used. + * + * @param bool $menu_ord Indicates whether the menu order has been specified. + * + * @return array|bool An array specifying the custom menu order, or true if the + * menu order is not specified. + */ +function customMenuOrder( $menu_ord ) { + if ( ! $menu_ord ) { + return true; + } + + return array( + 'index.php', // Dashboard. + 'acf-options-global-fields', // Global Theme Fields. + 'edit.php?post_type=acf-field-group', // ACF Field Groups. + 'separator1', // First separator. + 'edit.php', // Posts. + 'edit.php?post_type=page', // Pages. + 'edit.php?post_type=resources', // Resources. + 'upload.php', // Media. + 'separator2', // Second separator. + 'edit.php?post_type=page-template', // Page Templates. + 'edit.php?post_type=wp_block', // Reusable Blocks. + 'edit.php?post_type=block-pattern', // Block Patterns. + 'edit.php?post_type=element', // Elements. + 'separator3', // Third separator. + 'link-manager.php', // Links. + 'edit-comments.php', // Comments. + 'gf_edit_forms', // Gravity Forms. + 'themes.php', // Appearance. + 'plugins.php', // Plugins. + 'separator-last', // Last separator. + 'users.php', // Users. + 'tools.php', // Tools. + 'options-general.php', // Settings. + ); +} + +add_filter( 'custom_menu_order', __NAMESPACE__ . '\\customMenuOrder', 10, 1 ); +add_filter( 'menu_order', __NAMESPACE__ . '\\customMenuOrder', 10, 1 ); + +/** Add custom block category for our blocks + * + * @param array $categories The existing block categories. + * @return array + */ +function blockCategories( $categories ) { + $vdi_cat = array( + 'slug' => 'vdi-blocks', + 'title' => 'VDI Custom Blocks', + 'icon' => 'dashicons-admin-customizer', + ); + + array_unshift( $categories, $vdi_cat ); + return $categories; +} + +add_filter( 'block_categories_all', __NAMESPACE__ . '\\blockCategories', 10, 2 ); + +/** + * Creates a escaping function to allowed certain HTML for embed content. + * Needed for when echoing the innerblock HTML. + * + * @return array An array of HTML elements allowed. + */ +function escEmbeds() { + /** + * Return the allowed html + * These are the elements in the rendered embed block for youtube and vimeo videos. + * Therefore we need to allow these to keep the same structure. + */ + return array( + 'iframe' => array( + 'role' => true, // Add role="presentation" to iframes. + 'presentation' => true, // Add role="presentation" to iframes. + 'src' => true, + 'height' => true, + 'width' => true, + 'frameborder' => true, + 'allowfullscreen' => true, + ), + 'figure' => array( + 'class' => true, + ), + 'div' => array( + 'class' => true, + ), + ); +} + +/** Print a variable to the console for debugging purposes. + * + * @param mixed $data The data to print to the console. + */ +function consoleLog( $data ) { + echo ''; +} diff --git a/lib/hooks.php b/lib/hooks.php new file mode 100644 index 0000000..521b0bd --- /dev/null +++ b/lib/hooks.php @@ -0,0 +1,251 @@ + + + + 'Main Navigation', + 'aux_navigation' => 'Auxiliary Navigation', + 'footer_navigation' => 'Footer Navigation', + ) +); + +/** + * Widget Areas + * + * Set up sidebar/widget areas for the theme. + * + * @return void + */ +add_action( + 'widgets_init', + function () { + $config = array( + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ); + + $cfg_foot = array( + 'before_widget' => '
', + 'after_widget' => '
', + 'before_title' => '

', + 'after_title' => '

', + ); + + register_sidebar( + array( + 'name' => 'Primary Sidebar', + 'id' => 'sidebar-primary', + ) + $config + ); + + register_sidebar( + array( + 'name' => 'Page Sidebar', + 'id' => 'sidebar-page', + ) + $config + ); + + register_sidebar( + array( + 'name' => 'Footer Area 1', + 'id' => 'footer-1', + ) + $cfg_foot + ); + + register_sidebar( + array( + 'name' => 'Footer Area 2', + 'id' => 'footer-2', + ) + $cfg_foot + ); + + register_sidebar( + array( + 'name' => 'Footer Area 3', + 'id' => 'footer-3', + ) + $cfg_foot + ); + } +); + +/** + * Basic SEO + * + * {Site URL}: {Title} + */ +add_filter( + 'wp_title', + function ( $title ) { + $site_name = get_bloginfo( 'name' ); + + return "{$site_name}: {$title}"; + } +); + +/** + * Excerpt + */ +add_filter( + 'excerpt_more', + function () { + return '…'; + } +); + +/** + * Whether the page hero should hold the main h1 of the page. + */ +add_filter( + 'include_page_title_in_hero', + function ( $include_title ) { + // Add post types that should not use the title in the hero. + if ( is_singular( ( 'post' ) ) ) { + return false; + } + + return $include_title; + } +); + +/** + * WP Cleanup + */ +function init() { + remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); + remove_action( 'wp_print_styles', 'print_emoji_styles' ); + remove_action( 'admin_print_styles', 'print_emoji_styles' ); + remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); + remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); + remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); + remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); + wp_dequeue_style( 'wp-block-library' ); // Core block styles. + wp_dequeue_style( 'wp-block-library-theme' ); // Block theme styles. + wp_dequeue_style( 'global-styles' ); // Global styles. + wp_dequeue_style( 'core-block-supports' ); // Core block supports. + wp_dequeue_style( 'core-block-styles' ); // Core block styles. + remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles', 1 ); + remove_action( 'wp_enqueue_scripts', 'wp_enqueue_classic_theme_styles', 1 ); + remove_action( 'wp_head', 'wp_print_styles', 8 ); + remove_action( 'wp_head', 'wp_print_head_scripts', 9 ); + remove_action( 'wp_head', 'wp_generator' ); // WordPress version. + remove_action( 'wp_head', 'rsd_link' ); // RSD link. + remove_action( 'wp_head', 'wlwmanifest_link' ); // Windows Live Writer. + remove_action( 'wp_head', 'wp_shortlink_wp_head' ); // Shortlink. + remove_action( 'wp_head', 'rest_output_link_wp_head' ); // REST API link. + remove_action( 'wp_head', 'wp_oembed_add_discovery_links' ); // oEmbed discovery links. + remove_action( 'wp_head', 'rel_canonical' ); // Canonical URL. + remove_action( 'wp_head', 'wp_resource_hints', 2 ); // DNS Prefetch. + add_filter( 'wp_img_tag_add_width_and_height_attr', '__return_false' ); // Disable intrinsic image size. + add_filter( 'wp_img_tag_add_auto_sizes', '__return_false' ); // Disable auto sizes. + add_filter( 'xmlrpc_enabled', '__return_false' ); +} + +add_action( 'init', __NAMESPACE__ . '\\init', 1 ); + +/** + * Allow SVG uploads + */ +add_filter( + 'wp_check_filetype_and_ext', + function ( $data, $file, $filename, $mimes ) { + global $wp_version; + + if ( '4.7.1' !== $wp_version ) { + return $data; + } + + $filetype = wp_check_filetype( $filename, $mimes ); + + return array( + 'ext' => $filetype['ext'], + 'type' => $filetype['type'], + 'proper_filename' => $data['proper_filename'], + ); + }, + 10, + 4 +); + +add_filter( + 'upload_mimes', + function ( $mimes ) { + $mimes['svg'] = 'image/svg+xml'; + return $mimes; + } +); + +/** + * Fix display issues with SVGs in admin + */ +add_action( + 'admin_head', + function () { + echo ''; + } +); + +/** + * Filters the email address used as the sender in outgoing emails. + * + * This function allows you to modify the default "from" email address + * used by WordPress when sending emails. + * + * @param string $old The original email address. + * @return string The new email address to use as the sender. + */ +// phpcs:ignore +function new_mail_from( $old ) { + return get_option( 'admin_email' ); +} + +/** + * Filters the name used as the sender in outgoing emails. + * + * This function allows you to modify the default "from" name + * used by WordPress when sending emails. + * + * @param string $old The original name. + * @return string The new name to use as the sender. + */ +// phpcs:ignore +function new_mail_from_name( $old ) { + return get_option( 'blogname' ); +} + +add_filter( 'wp_mail_from', __NAMESPACE__ . '\\new_mail_from' ); +add_filter( 'wp_mail_from_name', __NAMESPACE__ . '\\new_mail_from_name' ); diff --git a/lib/search-features.php b/lib/search-features.php new file mode 100644 index 0000000..a8257af --- /dev/null +++ b/lib/search-features.php @@ -0,0 +1,122 @@ +is_main_query() && $query->is_search ) { + $query->set( 'paged', ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1 ); + $query->set( 'posts_per_page', -1 ); + } +} + +add_action( 'pre_get_posts', __NAMESPACE__ . '\\pageSearch' ); + +/** + * Sort WP_Post objects in reverse order (most recent first). + * + * @param string $key WP_Post object property used for sorting. 'post_date' is assumed. + * + * @return int + */ +function postSort( $key ) { + return function ( $a, $b ) use ( $key ) { + if ( $a->$key < $b->$key ) { + return 1; + } elseif ( $a->$key > $b->$key ) { + return -1; + } else { + // If first comparison is equal, use title as secondary sort key. + return strnatcasecmp( $a->post_title, $b->post_title ); + } + }; +} + +/** + * Remove duplicate posts in combined list from default and secondary queries. + * + * @param array $posts Array of WP_Post objects. + * @param string $key Search key used to identify duplicate objects. Post ID is used. + * + * @return array + */ +function dedupe( $posts, $key ) { + $unique_posts = array(); + $ids = array(); + + foreach ( $posts as $post ) { + if ( ! in_array( $post->$key, $ids, true ) ) { + $ids[] = $post->$key; + $unique_posts[] = $post; + } + } + + return $unique_posts; +} + +/** + * Posts_results filter hook callback. + * + * @param array $posts Array of WP_Post objects. + * @param object $query WP_Query object from default search. + * + * @return array + */ +function searchResultFilter( $posts, $query ) { + if ( \is_search() && $query->is_search() && ! \is_admin() ) { + $args = array( + 'post_type' => array( 'post', 'page' ), + 'posts_per_page' => -1, + 'tax_query' => array( + 'relation' => 'OR', // Include both tags and categories. + array( + 'taxonomy' => 'post_tag', + 'field' => 'name', + 'terms' => $query->get( 's' ), + ), + array( + 'taxonomy' => 'category', + 'field' => 'name', + 'terms' => $query->get( 's' ), + ), + ), + ); + + // Remove callback to avoid infinite loop. + remove_filter( 'posts_results', __NAMESPACE__ . '\\searchResultFilter', 10 ); + + $secondary_query = new \WP_Query( $args ); + + $tagged_posts = $secondary_query->get_posts(); + + // Combine default search results with secondary query. + $all_posts = array_merge( $posts, $tagged_posts ); + + // Remove duplicate posts. + $unique_posts = dedupe( $all_posts, 'ID' ); + + // Sort by reverse post_date order (most recent first). + usort( $unique_posts, postSort( 'post_date' ) ); + + // Restore posts_results callback. + add_filter( 'posts_results', __NAMESPACE__ . '\\searchResultFilter', 10, 2 ); + + return $unique_posts; + } else { + return $posts; + } +} + +add_filter( 'posts_results', __NAMESPACE__ . '\\searchResultFilter', 10, 2 ); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7965dae --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3021 @@ +{ + "name": "basic-wp", + "version": "1.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "basic-wp", + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@tailwindcss/cli": "^4.0.13", + "@tailwindcss/typography": "^0.5.16", + "glob": "^10.3.10", + "lodash": "^4.17.21", + "lodash.debounce": "^4.0.8", + "tailwindcss": "^4.0.13" + }, + "devDependencies": { + "@axe-core/playwright": "^4.10.1", + "@playwright/test": "^1.52.0", + "@types/node": "^22.15.2", + "browser-sync": "^3.0.3", + "dotenv": "^16.4.7" + } + }, + "node_modules/@axe-core/playwright": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.1.tgz", + "integrity": "sha512-EV5t39VV68kuAfMKqb/RL+YjYKhfuGim9rgIaQ6Vntb2HgaCaau0h98Y3WEUqW1+PbdzxDtDNjFAipbtZuBmEA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "axe-core": "~4.10.2" + }, + "peerDependencies": { + "playwright-core": ">= 1.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "hasInstallScript": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", + "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.52.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true + }, + "node_modules/@tailwindcss/cli": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.0.13.tgz", + "integrity": "sha512-HakblDajmZu3aUsWbBDbJnB5D0PiwICH4fudsLsG55YbmZlVkSbfZ/yKa8r79N9dDhae4vNAj+21gm2WLpPLGA==", + "dependencies": { + "@parcel/watcher": "^2.5.1", + "@tailwindcss/node": "4.0.13", + "@tailwindcss/oxide": "4.0.13", + "enhanced-resolve": "^5.18.1", + "lightningcss": "1.29.2", + "mri": "^1.2.0", + "picocolors": "^1.1.1", + "tailwindcss": "4.0.13" + }, + "bin": { + "tailwindcss": "dist/index.mjs" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.13.tgz", + "integrity": "sha512-P9TmtE9Vew0vv5FwyD4bsg/dHHsIsAuUXkenuGUc5gm8fYgaxpdoxIKngCyEMEQxyCKR8PQY5V5VrrKNOx7exg==", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "tailwindcss": "4.0.13" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.13.tgz", + "integrity": "sha512-pTH3Ex5zAWC9LbS+WsYAFmkXQW3NRjmvxkKJY3NP1x0KHBWjz0Q2uGtdGMJzsa0EwoZ7wq9RTbMH1UNPceCpWw==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.0.13", + "@tailwindcss/oxide-darwin-arm64": "4.0.13", + "@tailwindcss/oxide-darwin-x64": "4.0.13", + "@tailwindcss/oxide-freebsd-x64": "4.0.13", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.13", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.13", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.13", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.13", + "@tailwindcss/oxide-linux-x64-musl": "4.0.13", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.13", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.13" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.13.tgz", + "integrity": "sha512-+9zmwaPQ8A9ycDcdb+hRkMn6NzsmZ4YJBsW5Xqq5EdOu9xlIgmuMuJauVzDPB5BSbIWfhPdZ+le8NeRZpl1coA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.13.tgz", + "integrity": "sha512-Bj1QGlEJSjs/205CIRfb5/jeveOqzJ4pFMdRxu0gyiYWxBRyxsExXqaD+7162wnLP/EDKh6S1MC9E/1GwEhLtA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.13.tgz", + "integrity": "sha512-lRTkxjTpMGXhLLM5GjZ0MtjPczMuhAo9j7PeSsaU6Imkm7W7RbrXfT8aP934kS7cBBV+HKN5U19Z0WWaORfb8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.13.tgz", + "integrity": "sha512-p/YLyKhs+xFibVeAPlpMGDVMKgjChgzs12VnDFaaqRSJoOz+uJgRSKiir2tn50e7Nm4YYw35q/DRBwpDBNo1MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.13.tgz", + "integrity": "sha512-Ua/5ydE/QOTX8jHuc7M9ICWnaLi6K2MV/r+Ws2OppsOjy8tdlPbqYainJJ6Kl7ofm524K+4Fk9CQITPzeIESPw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.13.tgz", + "integrity": "sha512-/W1+Q6tBAVgZWh/bhfOHo4n7Ryh6E7zYj4bJd9SRbkPyLtRioyK3bi6RLuDj57sa7Amk/DeomSV9iycS0xqIPA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.13.tgz", + "integrity": "sha512-GQj6TWevNxwsYw20FdT2r2d1f7uiRsF07iFvNYxPIvIyPEV74eZ0zgFEsAH1daK1OxPy+LXdZ4grV17P5tVzhQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.13.tgz", + "integrity": "sha512-sQRH09faifF9w9WS6TKDWr1oLi4hoPx0EIWXZHQK/jcjarDpXGQ2DbF0KnALJCwWBxOIP/1nrmU01fZwwMzY3g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.13.tgz", + "integrity": "sha512-Or1N8DIF3tP+LsloJp+UXLTIMMHMUcWXFhJLCsM4T7MzFzxkeReewRWXfk5mk137cdqVeUEH/R50xAhY1mOkTQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.13.tgz", + "integrity": "sha512-u2mQyqCFrr9vVTP6sfDRfGE6bhOX3/7rInehzxNhHX1HYRIx09H3sDdXzTxnZWKOjIg3qjFTCrYFUZckva5PIg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.13.tgz", + "integrity": "sha512-sOEc4iCanp1Yqyeu9suQcEzfaUcHnqjBUgDg0ZXpjUMUwdSi37S1lu1RGoV1BYInvvGu3y3HHTmvsSfDhx2L8w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", + "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", + "dev": true, + "dependencies": { + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.0.1", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "micromatch": "^4.0.8", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", + "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", + "dev": true, + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", + "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", + "dev": true, + "dependencies": { + "async-each-series": "0.1.1", + "chalk": "4.1.2", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/browser-sync-ui/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/browser-sync/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.1.0.tgz", + "integrity": "sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==", + "dev": true, + "dependencies": { + "chalk": "4.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eazy-logger/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.52.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/send": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.13.tgz", + "integrity": "sha512-gbvFrB0fOsTv/OugXWi2PtflJ4S6/ctu6Mmn3bCftmLY/6xRsQVEJPgIIpABwpZ52DpONkCA3bEj5b54MHxF2Q==" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "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 + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f1b0d22 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "basic-wp", + "version": "1.0.1", + "description": "Basic-WP is a minimal WordPress theme designed as a starting point for custom theme development. It focuses on modern development approaches with a lean architecture that avoids the overhead of theme frameworks.", + "scripts": { + "start": "npm run watch", + "watch": "node bin/.watch.js", + "build": "npx @tailwindcss/cli -i ./styles/theme.css -o ./static/dist/theme.css --optimize" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ksolomon75/Basic-WP.git" + }, + "keywords": [ + "wordpress", + "minimal", + "basic", + "custom", + "theme" + ], + "author": "Keith Solomon ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ksolomon75/Basic-WP/issues" + }, + "homepage": "https://github.com/ksolomon75/Basic-WP#readme", + "devDependencies": { + "@axe-core/playwright": "^4.10.1", + "@playwright/test": "^1.52.0", + "@types/node": "^22.15.2", + "browser-sync": "^3.0.3", + "dotenv": "^16.4.7" + }, + "dependencies": { + "@tailwindcss/cli": "^4.0.13", + "@tailwindcss/typography": "^0.5.16", + "glob": "^10.3.10", + "lodash": "^4.17.21", + "lodash.debounce": "^4.0.8", + "tailwindcss": "^4.0.13" + } +} diff --git a/page.php b/page.php new file mode 100644 index 0000000..42682c0 --- /dev/null +++ b/page.php @@ -0,0 +1,39 @@ + + +
+
+ +
+ + + + +
+ + diff --git a/playwright.config.js b/playwright.config.js new file mode 100644 index 0000000..18e8c18 --- /dev/null +++ b/playwright.config.js @@ -0,0 +1,82 @@ +// @ts-check +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * @see https://playwright.dev/docs/test-configuration + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + ignoreHTTPSErrors: true, + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + // { + // name: 'firefox', + // use: { ...devices['Desktop Firefox'] }, + // }, + + // { + // name: 'webkit', + // use: { ...devices['Desktop Safari'] }, + // }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://127.0.0.1:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); + diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e6a128c416f0c7e86ecc829516d9bceb753844 GIT binary patch literal 68156 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 DVXsgl literal 0 HcmV?d00001 diff --git a/search.php b/search.php new file mode 100644 index 0000000..8499e37 --- /dev/null +++ b/search.php @@ -0,0 +1,103 @@ + + + + + diff --git a/sidebar-page.php b/sidebar-page.php new file mode 100644 index 0000000..ac23f09 --- /dev/null +++ b/sidebar-page.php @@ -0,0 +1,15 @@ + + + diff --git a/sidebar.php b/sidebar.php new file mode 100644 index 0000000..b777db8 --- /dev/null +++ b/sidebar.php @@ -0,0 +1,14 @@ + + + diff --git a/single.php b/single.php new file mode 100644 index 0000000..673c44b --- /dev/null +++ b/single.php @@ -0,0 +1,86 @@ + + +
+
+ + +
+

+
+ + + + +
+ + + + +
+ + diff --git a/static/img/logo.svg b/static/img/logo.svg new file mode 100644 index 0000000..e80437b --- /dev/null +++ b/static/img/logo.svg @@ -0,0 +1,7 @@ + + + kevinleary.net + + + + \ No newline at end of file diff --git a/static/img/select_arrow.png b/static/img/select_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0ddda64ee28e8f4f21ce89a1de53e3c4cfe1351d GIT binary patch literal 976 zcmaJ=J#W)M7`A{Ss2a-91tg@CDM>`~bv&*ccEJLSkfPWMO1sVC0;}fq`JzzPnfN^SsZ!A5ZGFTdC!X%M8P$ zjBTw!*R%9nI&+%-pEo}Z>2iVSZPG+NGO{paDh}#GV0cy^HlXE<_ddfi!<Wlx5- zaF!;TFg~&ZUgU)M zN{ORs{@>N}=H4M`z(0EbNgTGu0puGnMElsLh3l=yp#oXO&>{%85ZX<$SRWvQ!T}0^ zs>WF>a0PJ1v~1Up%~z*5)07QAB$jVOLsMAF#JR2`3&rB5P%2h+O%g;=mntP)t7w8+ zsOE%fRnH|@4cYr1^htts=GaYPAvSIaFQAb%h}{F|R59|v^y;#^Sc|rhZ-#XiYANaq zu{;&S#|8eY;E9QLQM{eEFFni$0Q$7+F>UYEm%C5n(J-`1EBe~)bvoxyeOteAfA#3u zhcvizxFS { + registerButtonComponent(); +} + +document.addEventListener('DOMContentLoaded', app); + +console.log(`admin.js loaded.`); diff --git a/static/js/components/backToTop.js b/static/js/components/backToTop.js new file mode 100644 index 0000000..6d95feb --- /dev/null +++ b/static/js/components/backToTop.js @@ -0,0 +1,23 @@ +// Back to Top Button Component +class BackToTopButton extends HTMLElement { + connectedCallback() { + this.innerHTML = ` + + `; + const btn = this.querySelector('#backToTopBtn'); + window.addEventListener('scroll', () => { + btn.style.display = window.scrollY > 300 ? 'block' : 'none'; + }); + btn.addEventListener('click', () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }); + } +} + +export function registerBackToTopButton() { + if (!customElements.get('back-to-top')) { + customElements.define('back-to-top', BackToTopButton); + } +} diff --git a/static/js/components/button.js b/static/js/components/button.js new file mode 100644 index 0000000..0c6bcea --- /dev/null +++ b/static/js/components/button.js @@ -0,0 +1,76 @@ +class ButtonComponent extends HTMLElement { + /** + * Parameters + * - btnClasses: Additional classes to add to the block. + * - element: The element to use for the button. Defaults to 'a'. + * - url: The URL to link to. + * - target: The target for the link. + * - title: The text to display on the button. + * - color: The color of the button. + * - variant: The variant of the button. + * - size: The size of the button. + * - width: The width of the button. + * + */ + + connectedCallback() { + if (!this.querySelector(this.getAttribute('element'))) { + this.append(document.createElement(this.getAttribute('element'))); + } + + this.update(); + } + + static get observedAttributes() { + return [ + 'btnClasses', + 'el', + 'element', + 'type', + 'url', + 'target', + 'title', + 'color', + 'variant', + 'size', + 'width', + ] + } + + attributeChangedCallback() { + this.update(); + } + + update() { + const btn = this.querySelector(this.getAttribute('element')); + + if (btn) { + btn.classList = this.getAttribute('btnClasses') || ''; + + if (this.getAttribute('element') == 'a') { + btn.href = this.getAttribute('url') || '#'; + + if (btn.target) { + btn.target = 'target="${this.getAttribute(target)}"'; + } + } + + const type = this.getAttribute('type'); + if (type && this.getAttribute('element') !== 'a') { + btn.type = type; + } + + btn.title = this.getAttribute('title') || ''; + btn.textContent = this.getAttribute('title') || ''; + + btn.setAttribute('data-button-color', this.getAttribute('color')); + btn.setAttribute('data-button-variant', this.getAttribute('variant')); + btn.setAttribute('data-button-size', this.getAttribute('size')); + btn.setAttribute('data-button-width', this.getAttribute('width')); + } + } +} + +export const registerButtonComponent = () => { + customElements.define('x-button', ButtonComponent); +} diff --git a/static/js/modules/FocusStyling.js b/static/js/modules/FocusStyling.js new file mode 100644 index 0000000..acc1cb7 --- /dev/null +++ b/static/js/modules/FocusStyling.js @@ -0,0 +1,17 @@ +/** + * Add Focus Styling Back + * - + * On the first "Tab" key press, remove the "zero/hidden" styling of the outline for :focus states. + */ + +function AddFocusStylingBack() { + function addFocusStylingBack(event) { + if (event.key == "Tab") { document.body.classList.add('keyboard-navigation'); } + + document.removeEventListener("keydown", addFocusStylingBack); + } + + document.addEventListener("keydown", addFocusStylingBack); +} + +export default AddFocusStylingBack; diff --git a/static/js/modules/GetHeaderHeight.js b/static/js/modules/GetHeaderHeight.js new file mode 100644 index 0000000..2850ccc --- /dev/null +++ b/static/js/modules/GetHeaderHeight.js @@ -0,0 +1,12 @@ +/** + * Get Header Height + * - + * Get header height and set CSS variable "--hgtHeader" to the header height. + */ + +function getHeaderHeight() { + const headerHeight = document.querySelector('.header__nav-main').getBoundingClientRect().height; + document.documentElement.style.setProperty('--hgtHeader', `${headerHeight}px`); +} + +export default getHeaderHeight; diff --git a/static/js/modules/Navigation.js b/static/js/modules/Navigation.js new file mode 100644 index 0000000..004bf52 --- /dev/null +++ b/static/js/modules/Navigation.js @@ -0,0 +1,225 @@ +/** + * VDI Main Nav - All Main Navigation Functionality + * + * Please review documentation upon first use, and, as-needed: + * https://docs.vincentdevelopment.ca/docs/starter-v3-enhancements/navigation/ + */ + +/** + * Navigation + * Handles navigation logic + * + * @param {string} mobileMenuButtonId + * @param {string} dropDownClass + * @param {string} subMenuLinkClass + */ +class Navigation { + /** + * The main toggle element + * + * @type {HTMLElement} + * @link {https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties} + */ + #mobileMenuButton; + + /** + * List of sub dropdown buttons + * + * @type {NodeList} + * @link {https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties} + */ + #dropdownButtons; + + /** + * Class name to identify sub menu items (ul>li>a) + * @type {string} + */ + #subMenuElementIdentifier; + + + + constructor(mobileMenuButtonId, dropDownClass, subMenuLinkClass = "sub-menu-item") { + this.#mobileMenuButton = document.getElementById(mobileMenuButtonId); + this.#dropdownButtons = document.querySelectorAll(dropDownClass); // Do not change this to getElementsByClassName, logic is iterating over non-live node list + this.#subMenuElementIdentifier = subMenuLinkClass; + + this.handleEscapeKey(); + } + + /** + * Handles main mobile toggling + * Adds an event listener to mobile menu dropdown + * toggle button + */ + mobileMenuToggle() { + this.#mobileMenuButton.addEventListener("click", (event) => { + this.toggleMobileMenu(event, this.#mobileMenuButton); // toggle submenu on mobile + }); + + this.closeOnBlur(this.#mobileMenuButton, { "navType": "desktop" }); // close submenu when user clicks outside + this.closeOnBlur(this.#mobileMenuButton, { "navType": "mobile" }); + } + + /** + * Handles dropdowns on desktop navigation + * Loops over list of navigation dropdown buttons + * and adds eventlisteners to toggle view + */ + desktopMenuDropdowns() { + this.#dropdownButtons.forEach((button) => { + button.addEventListener("click", (event) => { + this.toggleDropdown(event, button); + }); + + this.closeOnBlur(button); // close menu when user clicks outside + this.handleFocus(button); // close dropdown when user finishes tabbing submenu elements + }); + } + + /** + * Toggles desktop dropdowns + * + * @param {EventTarget} event + * @param {HTMLButtonElement} button + */ + toggleDropdown(event, button) { + this.toggleAriaExpanded(event, button); + } + + /** + * Toggles mobile menu + * + * @param {EventTarget} event + * @param {HTMLButtonElement} button + */ + toggleMobileMenu(event, button) { + this.toggleAriaExpanded(event, button) + } + + /** + * Toggles aria-expanded attribute + * + * @param {EventTarget} event + * @param {HTMLButtonElement} button + */ + toggleAriaExpanded(event, button) { + let isExpanded = event.currentTarget.getAttribute("aria-expanded") === "true"; // true is returned as string + + // ... but open the targeted secondary nav + if (!isExpanded) { + // close all dropdowns... + this.closeAllDropDowns(); + // then toggle targeted dropdown... + button.setAttribute("aria-expanded", true); + } else { + button.setAttribute("aria-expanded", false); + } + } + + /** + * Close dropdown when user clicks anywhere else on the screen + * + * @param {HTMLButtonElement} button + * @link {https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event} + * @link {https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget} + */ + closeOnBlur(button, args) { + if (args === undefined || args?.navType === "desktop") { + button.addEventListener("blur", (event) => { + if (event.relatedTarget == null) { + event.currentTarget.setAttribute("aria-expanded", false); + } + }, { passive: true }); + } + + //FIXME: Remove hardcoded literal + if (args?.navType === "mobile") { + document.getElementById("menu-container").addEventListener("blur", (event) => { + // Note: cannot group negation -1*-1*-1 != -(1*1*1) + const isNull = event.relatedTarget == null; + const isNotMenuItem = !isNull && !event.relatedTarget.classList.contains("menu-vdi__toggle") + && !event.relatedTarget.classList.contains("sub-menu-item") && !event.relatedTarget.classList.contains("menu-vdi__link"); + + if (isNull || isNotMenuItem) + button.setAttribute("aria-expanded", false); + }, true) + } + } + + /** + * Handles escape behaviour + * Closes all dropdown when user hits + * escape key + * + * @link {https://developer.mozilla.org/en-US/docs/Web/API/Element/keyup_event} + */ + handleEscapeKey() { + window.addEventListener("keyup", (event) => { + if (event.key === "Escape") { + this.#mobileMenuButton.setAttribute("aria-expanded", false); + this.closeAllDropDowns(); + } + }, { passive: true }); + } + + /** + * Close all dropdown menus + * Sets aria expanded property by looping + * over the list of dropdown button elements + * + * @link {https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded} + */ + closeAllDropDowns() { + this.#dropdownButtons.forEach((button) => { + button.setAttribute("aria-expanded", false); + }); + } + + /** + * Handle focus + * Watches blur event on submenu list container, if the next + * focus element is not a submenu list item, closes the + * dropdown. + * + * Implemented for WCAG 2.2 compliance + * + * @param {htmlButtonElement} button + */ + handleFocus(button) { + const subMenuListElement = button.closest("ul"); + + /** + * Ducking JavaScript, I am not sure why the blur event on submenu(ul) + * would bubble up to the button since the button and sub menu list element + * are siblings and not nested. This is a mystery to me. + * + * Here we are stopping any bubbling event that may be propagated to the + * top level buttons. This includes the bubbling event from sub menu list element. + * + * If anyone finds a better solution to this or can explain bubbling of focus event + * to next sibling, you time and effort would be much appreciated. + */ + button.addEventListener("focusout", (event) => { + event.stopImmediatePropagation(); + }) + + subMenuListElement.addEventListener("focusout", (event) => { + // blur event triggers when user clicks outside + const nextFocusElement = event.relatedTarget; + + let isSubMenuElement; + + if (nextFocusElement !== null) { + isSubMenuElement = nextFocusElement.classList.contains(this.#subMenuElementIdentifier); + } else { + isSubMenuElement = false; // close when user clicks outside + } + + if (!isSubMenuElement) { + this.closeAllDropDowns(); + } + }); + } +} + +export default Navigation; diff --git a/static/js/theme.js b/static/js/theme.js new file mode 100644 index 0000000..20f8277 --- /dev/null +++ b/static/js/theme.js @@ -0,0 +1,74 @@ +/** + * Theme JS + */ + +import { registerButtonComponent } from './components/button.js'; +import { registerBackToTopButton } from './components/backToTop.js'; +import AddFocusStylingBack from './modules/FocusStyling.js'; +import GetHeaderHeight from './modules/GetHeaderHeight.js'; +import Navigation from './modules/Navigation.js'; + +// Add passive event listeners +! function (e) { + "function" == typeof define && define.amd ? define(e) : e() +}(function () { + let e; + const t = ["scroll", "wheel", "touchstart", "touchmove", "touchenter", "touchend", "touchleave", "mouseout", "mouseleave", "mouseup", "mousedown", "mousemove", "mouseenter", "mousewheel", "mouseover"]; + if (function () { + let e = !1; + try { + const t = Object.defineProperty({}, "passive", { + get: function () { + e = !0 + } + }); + window.addEventListener("test", null, t); + window.removeEventListener("test", null, t); + } catch (e) { } + return e + }()) { + const n = EventTarget.prototype.addEventListener; + e = n; + EventTarget.prototype.addEventListener = function (n, o, r) { + let i; + const s = "object" == typeof r && null !== r, + u = s ? r.capture : r; + if (s) { + const t = Object.getOwnPropertyDescriptor(r, "passive"); + r = t && !0 !== t.writable && void 0 === t.set ? { ...r } : r; + } else { + r = {}; + } + r.passive = void 0 !== (i = r.passive) ? i : -1 !== t.indexOf(n) && !0; + r.capture = void 0 !== u && u; + e.call(this, n, o, r); + }; + EventTarget.prototype.addEventListener._original = e + } +}); + +/** + * Application entrypoint + */ +document.addEventListener('DOMContentLoaded', () => { + // Register button component + registerButtonComponent(); + registerBackToTopButton(); + + // Initialize Navigation + const navigation = new Navigation('navMainToggle', '.menu-vdi__toggle'); + + // Initialize Navigation + navigation.desktopMenuDropdowns(); + navigation.mobileMenuToggle(); + + // Initialize Focus Styling and Header Height + AddFocusStylingBack(); + GetHeaderHeight(); + + // Add Back to Top button to body + const backToTop = document.createElement('back-to-top'); + document.body.appendChild(backToTop); +}); + +console.log(`theme.js loaded.`); diff --git a/style.css b/style.css new file mode 100644 index 0000000..177f2d8 --- /dev/null +++ b/style.css @@ -0,0 +1,6 @@ +/* + * Theme Name: VDI Basic WP + * Description: Basic custom theme for WordPress (based on work by Kevinleary.net) + * Version: 1.0 + * Author: Vincent Design Inc. + */ diff --git a/styles/backend/admin.css b/styles/backend/admin.css new file mode 100644 index 0000000..d962cb1 --- /dev/null +++ b/styles/backend/admin.css @@ -0,0 +1,15 @@ +/* Theme admin styles */ + +@import "../../static/dist/theme.css"; + +body { + font-family: 'Raleway', sans-serif; + + &.wp-admin { + height: fit-content !important; + min-height: 100vh !important; + } +} + +#wpbody ul, ol, ul li, ol li { list-style-type: none; } +#adminmenu li ul, li ol { margin: 0; } diff --git a/styles/backend/editor.css b/styles/backend/editor.css new file mode 100644 index 0000000..0b07790 --- /dev/null +++ b/styles/backend/editor.css @@ -0,0 +1,10 @@ +/* Theme editor styles */ + +@import "../../static/dist/theme.css"; + +body { font-family: 'Raleway', sans-serif; } + +.wp-block-buttons .block-editor-block-list__layout { + display: flex; + gap: 1rem; +} diff --git a/styles/base/break-out.css b/styles/base/break-out.css new file mode 100644 index 0000000..2bcb074 --- /dev/null +++ b/styles/base/break-out.css @@ -0,0 +1,24 @@ +@theme { + /** Break-out variables + * These are used for the break-out plugin and the responsive utilities. + * The break-out variables are set to match the default plugin settings. + * You can override them if you need to adjust for a particular use case. + */ + --twcb-scrollbar-width: 0px; +} + +@utility mx-break-out { + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + width: calc(100vw - var(--twcb-scrollbar-width)); +} + +@utility ml-break-out { + margin-left: calc(50% - 50vw); + width: 100%; +} + +@utility mr-break-out { + margin-left: calc(-50% + 50vw); + width: 100%; +} diff --git a/styles/base/colors.css b/styles/base/colors.css new file mode 100644 index 0000000..73cd2e3 --- /dev/null +++ b/styles/base/colors.css @@ -0,0 +1,41 @@ +/* Theme color definitions */ + +@theme { + --color-black: oklch(0% 0 0); + --color-white: oklch(100% 0 0); + + --color-background: oklch(89.75% 0 0); + --color-text: var(--color-black); + + --color-primary: oklch(0.57 0.203362 257.1706); + --color-primary-100: color-mix(in oklch, var(--color-primary) 10%, white); + --color-primary-200: color-mix(in oklch, var(--color-primary) 20%, white); + --color-primary-300: color-mix(in oklch, var(--color-primary) 30%, white); + --color-primary-400: color-mix(in oklch, var(--color-primary) 40%, white); + --color-primary-500: color-mix(in oklch, var(--color-primary) 50%, white); + --color-primary-600: color-mix(in oklch, var(--color-primary) 60%, white); + --color-primary-700: color-mix(in oklch, var(--color-primary) 70%, white); + --color-primary-800: color-mix(in oklch, var(--color-primary) 80%, white); + --color-primary-900: color-mix(in oklch, var(--color-primary) 90%, white); + + --color-secondary: oklch(0.56 0.0176 257.23); + --color-secondary-100: color-mix(in oklch, var(--color-secondary) 10%, white); + --color-secondary-200: color-mix(in oklch, var(--color-secondary) 20%, white); + --color-secondary-300: color-mix(in oklch, var(--color-secondary) 30%, white); + --color-secondary-400: color-mix(in oklch, var(--color-secondary) 40%, white); + --color-secondary-500: color-mix(in oklch, var(--color-secondary) 50%, white); + --color-secondary-600: color-mix(in oklch, var(--color-secondary) 60%, white); + --color-secondary-700: color-mix(in oklch, var(--color-secondary) 70%, white); + --color-secondary-800: color-mix(in oklch, var(--color-secondary) 80%, white); + --color-secondary-900: color-mix(in oklch, var(--color-secondary) 90%, white); + + --color-bodylinks: oklch(0.48 0.0789 211.58); + --color-footlinks: oklch(0.65 0.1104 212.2); + + --color-success: oklch(64.01% 0.1751 146.7); + --color-info: oklch(0.55 0.0922 211.57); + --color-warning: oklch(84.42% 0.1722 84.93); + --color-danger: oklch(0.5126 0.1865 22.61); + --color-light: oklch(98.16% 0.0017 247.8); + --color-dark: oklch(34.51% 0.0133 248.2); +} diff --git a/styles/base/forms.css b/styles/base/forms.css new file mode 100644 index 0000000..8ccb527 --- /dev/null +++ b/styles/base/forms.css @@ -0,0 +1,97 @@ +/* Forms */ + + +/* Base styles */ + +.gform_wrapper { + @apply max-w-full mx-auto; + + .gform_fields { + @apply text-black; + } + + fieldset.gfield { + @apply mb-6; + } + + legend, label { + @apply text-lg font-bold mb-2; + } + + label.gform-field-label--type-sub{ + @apply font-normal text-base; + } + + .gfield_required { + @apply text-danger text-xs font-bold ml-1; + } + + .dark { + input[type="text"], + input[type="email"], + input[type="tel"], + input[type="url"], + input[type="number"], + input[type="password"], + input[type="date"], + select, + textarea { + @apply text-black bg-white; + @apply focus-visible:border-transparent focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-primary; + } + } + + .ginput_complex { + @apply sm:flex; + + span { + @apply block grow; + + &:not(:first-child) { + @apply mt-6 sm:mt-0 sm:ml-4; + } + } + } + + .gform_footer { + @apply mt-8; + } + + h2.gform_submission_error { + @apply text-xl text-danger font-bold my-4; + } + + .validation_message { + @apply italic text-danger; + } + + .hidden_label > label { + @apply hidden; + } +} + +input[type="text"], +input[type="email"], +input[type="tel"], +input[type="url"], +input[type="number"], +input[type="password"], +input[type="date"], +select, +textarea { + @apply px-4 py-2 w-full rounded border-2 border-secondary focus-visible:bg-secondary-300 focus-visible:border-primary; + + font-size: inherit; + line-height: inherit; +} + +.wp-block-search__input { + @apply px-4 py-2 w-full rounded border-2 border-transparent focus-visible:bg-secondary-300 focus-visible:border-primary; + + appearance: none; + flex-grow: 1; + margin-left: 0; + margin-right: 0; + min-width: 3rem; + text-decoration: unset !important; +} diff --git a/styles/base/global.css b/styles/base/global.css new file mode 100644 index 0000000..a5bd703 --- /dev/null +++ b/styles/base/global.css @@ -0,0 +1,84 @@ +/* Miscellaneous custom styles */ +@theme { + --spacing-menu-top: calc(100% + .9375rem); + --spacing-section: 2rem; + + --shadow-menu-shadow: 0 .25rem .375rem rgba(0,0,0,0.1); + + /** Breakpoints + * The breakpoints are set to match the default Tailwind breakpoints. + * You can override them here if you want to use different breakpoints. + * + * @see https://tailwindcss.com/docs/breakpoints + */ + --breakpoint-*: initial; + --breakpoint-xxs: 22.5rem; /* 360px */ + --breakpoint-xs: 29.6875rem; /* 475px */ + --breakpoint-sm: 40rem; /* 640px */ + --breakpoint-md: 48rem; /* 768px */ + --breakpoint-lg: 64rem; /* 1024px */ + --breakpoint-xl: 70rem; /* 1280px */ + --breakpoint-2xl: 96rem; /* 1536px */ +} + +/* Basic layout styles */ +main#maincontent { + background-color: var(--color-background); + color: var(--color-text); + margin: 0; + padding: 0 0 4rem; +} + +.container { + margin: 0 auto; + width: 100%; +} + +.section { + @apply relative my-section px-section; + + &:first-child { + @apply mt-0; + } + + &:last-child, p:last-child { + @apply mb-0; + } + + &.has-background { + @apply py-section bg-cover bg-no-repeat; + } +} + +/** Allows containers inside containers + * + * .container .wp-block-section { + * @apply mx-break-out; + * } + */ + +.content-wrapper { + .alignfull { + @apply max-w-full; + } + + .alignwide { + @apply max-w-full; + } + + .alignleft { + @apply ml-0 mr-auto float-none; + } + + .alignright { + @apply ml-auto mr-0 float-none; + } + + .aligncenter { + @apply mx-auto; + } +} + +/* Responsive embeds */ +.embed { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; } +.embed iframe, .embed object, .embed embed, .embed video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } diff --git a/styles/base/index.css b/styles/base/index.css new file mode 100644 index 0000000..85da63a --- /dev/null +++ b/styles/base/index.css @@ -0,0 +1,9 @@ +/* Theme base styles */ + +@import "./global.css"; +@import "./colors.css"; +@import "./typography.css"; +@import "./prose.css"; +@import "./skip-link.css"; +@import './misc.css'; +@import "./forms.css"; diff --git a/styles/base/misc.css b/styles/base/misc.css new file mode 100644 index 0000000..5da6b1d --- /dev/null +++ b/styles/base/misc.css @@ -0,0 +1 @@ +/* Miscellaneous extra styles */ diff --git a/styles/base/prose.css b/styles/base/prose.css new file mode 100644 index 0000000..c8640a5 --- /dev/null +++ b/styles/base/prose.css @@ -0,0 +1,36 @@ +/* Theme prose styles */ + +@theme { + --tw-prose-body: var(--color-primary); + --tw-prose-headings: var(--color-primary); + --tw-prose-lead: var(--color-primary); + --tw-prose-links: var(--color-info); + --tw-prose-bold: var(--color-primary); + --tw-prose-counters: var(--color-primary); + --tw-prose-bullets: var(--color-secondary); + --tw-prose-hr: var(--color-secondary); + --tw-prose-quotes: var(--color-primary); + --tw-prose-quote-borders: var(--color-primary); + --tw-prose-captions: var(--color-secondary); + --tw-prose-code: var(--color-primary); + --tw-prose-pre-code: var(--color-primary); + --tw-prose-pre-bg: var(--color-secondary); + --tw-prose-th-borders: var(--color-secondary); + --tw-prose-td-borders: var(--color-secondary); + --tw-prose-invert-body: var(--color-primary); + --tw-prose-invert-headings: var(--color-primary); + --tw-prose-invert-lead: var(--color-primary); + --tw-prose-invert-links: var(--color-secondary); + --tw-prose-invert-bold: var(--color-primary); + --tw-prose-invert-counters: var(--color-primary); + --tw-prose-invert-bullets: var(--color-primary); + --tw-prose-invert-hr: var(--color-secondary); + --tw-prose-invert-quotes: var(--color-primary); + --tw-prose-invert-quote-borders: var(--color-primary); + --tw-prose-invert-captions: var(--color-primary); + --tw-prose-invert-code: var(--color-secondary); + --tw-prose-invert-pre-code: var(--color-primary); + --tw-prose-invert-pre-bg: oklch(0% 0 0 / 50%); + --tw-prose-invert-th-borders: var(--color-primary); + --tw-prose-invert-td-borders: var(--color-primary); +} diff --git a/styles/base/skip-link.css b/styles/base/skip-link.css new file mode 100644 index 0000000..d81d799 --- /dev/null +++ b/styles/base/skip-link.css @@ -0,0 +1,25 @@ +.skip-link { + background-color: #f6ff00 !important; + border-color: #f6ff00 !important; + color: #000 !important; + font-size: larger; + font-weight: 600; + left: 0; + margin: 0 auto; + max-width: 90vw; + opacity: 1; + outline-color: #f6ff00 !important; + padding: 1rem; + position: absolute; + right: 0; + text-align: center; + top: 0.5rem; + transition: transform 0.1875s ease-out; + width: 15rem; + z-index: 999; + + &:not(:focus):not(:hover) { + opacity: 0; + transform: translateY(-4em); + } +} diff --git a/styles/base/typography.css b/styles/base/typography.css new file mode 100644 index 0000000..7e61618 --- /dev/null +++ b/styles/base/typography.css @@ -0,0 +1,154 @@ +/* Basic typographical styles */ + +/** + * All font sizes are based on 16px base font size and 1920px wide screen + * Default size is expressed as percentage of screen width. + * text-14px: 12px-27px, default: 14px + * text-16px: 14px-28px, default: 16px + * text-18px: 14px-30px, default: 18px + * text-20px: 16px-32px, default: 20px + * text-22px: 17px-33px, default: 22px + * text-25px: 18px-35px, default: 25px + * text-30px: 19px-37px, default: 30px + * text-35px: 20px-40px, default: 35px + * text-38px: 22px-48px, default: 38px + * text-40px: 24px-56px, default: 40px + * text-45px: 25px-64px, default: 45px + * text-50px: 27px-72px, default: 50px + * text-55px: 28px-76px, default: 55px + * text-60px: 30px-80px, default: 60px + * text-70px: 30px-76px, default: 70px + * text-75px: 32px-80px, default: 75px +*/ + +@theme { + --font-sans: "Raleway", sans-serif; + --line-height: 1.6; + + --text-base: 1rem; + --text-14px: clamp(0.75rem, 0.7292vw, 1.7rem); + --text-16px: clamp(0.875rem, 0.8333vw, 1.8rem); + --text-18px: clamp(0.875rem, 0.9375vw, 1.9rem); + --text-20px: clamp(1rem, 1.0417vw, 2rem); + --text-22px: clamp(1.1rem, 1.15vw, 2.1rem); + --text-25px: clamp(1.125rem, 1.3021vw, 2.2rem); + --text-30px: clamp(1.185rem, 1.5625vw, 2.35rem); + --text-35px: clamp(1.25rem, 1.8229vw, 2.5rem); + --text-38px: clamp(1.4rem, 1.9791vw, 3rem); + --text-40px: clamp(1.5rem, 2.0834vw, 3.5rem); + --text-45px: clamp(1.6rem, 2.3438vw, 4rem); + --text-50px: clamp(1.7rem, 2.6042vw, 4.5rem); + --text-70px: clamp(1.9rem, 3.6458vw, 4.8rem); + --text-75px: clamp(2rem, 3.9063vw, 5rem); + + --h1: calc(var(--text-base) * 2.25); + --h2: calc(var(--text-base) * 1.75); + --h3: calc(var(--text-base) * 1.5); + --h4: calc(var(--text-base) * 1.25); + --h5: calc(var(--text-base) * 1.125); + --h6: calc(var(--text-base) * 1.05); +} + +body { + background-color: white; + color: black; + font-family: var(--font-sans); + font-size: var(--text-base); + line-height: var(--line-height); +} + +::selection { background: var(--color-warning); } + +@layer components { + h1, h2, h3, + h4, h5, h6 { + font-weight: 700; + margin: 0 0 1rem; + } + + h1, .h1 { + font-size: var(--h1); + line-height: 1.2; + } + + h2, .h2 { + font-size: var(--h2); + line-height: 1.3; + } + + h3, .h3 { + font-size: var(--h3); + line-height: 1.4; + } + + h4, .h4 { + font-size: var(--h4); + line-height: 1.5; + } + + h5, .h5 { font-size: var(--h5); } + + h6, .h6 { font-size: var(--h6); } +} + +a, .link { + color: var(--color-bodylinks); + text-decoration: none; + transition: color 200ms; + cursor: pointer; + + &:hover { color: var(--color-primary); } +} + +h1 a, .h1 a, +h2 a, .h2 a, +h3 a, .h3 a { + color: inherit; + text-decoration: underline; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +li ul, li ol { margin: 0 1rem; } + +ul { list-style-type: disc; } + +ol { list-style-type: decimal; } + +ol ol { list-style: lower-alpha; } + +ol ol ol { list-style: lower-roman; } + +ol ol ol ol { list-style: lower-alpha; } + +pre, code, +samp, style { font-family: monospace; } + +pre { + font-size: 0.875rem; + overflow: auto; + padding: 1.5rem; +} + +pre code { + background-color: inherit; + border-radius: 0; + color: inherit; + padding: 0; +} + +code { + @apply bg-black/30 px-[3px] py-[2px] font-mono text-black text-xs rounded-sm; +} + +hr { + background-color: black; + border: none; + display: block; + height: 1px; + margin: 1rem 0; + width: 100%; +} diff --git a/styles/blocks/buttons.css b/styles/blocks/buttons.css new file mode 100644 index 0000000..a39b7c1 --- /dev/null +++ b/styles/blocks/buttons.css @@ -0,0 +1,158 @@ +/* Button styles */ + +@theme { + /* Configuration */ + + /** + * Button component settings + * + * The variables below are used to define the button styles. + * Most of these variables come from the main theme configuration. + * The following variables are not defined, but have fallback values + * in their respective locations and can be added if needed: + * + * --button-font-weight (fallback is 600/semibold) + * --button-font-size (fallback is 1rem) + * --button-outline-width (fallback is --button-border-width) + * --button-outline-style (fallback is --button-border-style) + * --button-outline-color (fallback is --button-border-color) + */ + + --button-bg: var(--color-primary); + --button-color: var(--color-white); + --button-hover-bg: var(--color-info); + --button-hover-border-color: var(--color-info); + --button-hover-color: var(--color-white); + --button-border-width: 3px; + --button-border-style: solid; + --button-border-color: var(--button-bg); + --button-radius: 0.5rem; +} + +.btn, .button, .acf-block-preview .button { + @apply px-8 py-2 min-w-0; + + background: var(--button-bg); + color: var(--button-color); + cursor: pointer; + display: inline-block; + transition: background 200ms, border-color 200ms, color 200ms; + + border-width: var(--button-border-width); + border-style: var(--button-border-style); + border-color: var(--button-border-color); + border-radius: var(--button-radius); + + text-decoration: none; + font-weight: var(--button-font-weight, 600); + font-size: var(--button-font-size, 1rem); + line-height: 1.1; + + &[data-button-variant="outline"] { + background: transparent; + &:hover { background: transparent; } + + --button-color: var(--button-outline-color, var(--button-bg)); + --button-hover-border-color: var(--button-hover-bg); + --button-hover-color: var(--button-hover-bg); + } +} + +/* Hover/focus/active */ +.btn:hover, .button:hover, .acf-block-preview .button:hover { + background: var(--button-hover-bg); + border-color: var(--button-hover-border-color); + color: var(--button-hover-color); +} + +.btn:focus, .button:focus { + outline-width: var(--button-outline-width, var(--button-border-width)); + outline-style: var(--button-outline-style, var(--button-border-style)); + outline-color: var(--button-outline-color, var(--button-border-color)); + outline-offset: calc(var(--button-border-width) * 2); +} + +.btn:active, .button:active { transform: scale(99%); } + +/** + * Variants + * + * The following styles are used to define button variants. + * These styles are applied to the button element using the + * `data-button-*` attributes. + */ + +/* Sizes */ +.btn[data-button-size="small"], .button[data-button-size="small"] { @apply px-4 py-0.5; } +.btn[data-button-size="medium"], .button[data-button-size="medium"] { @apply px-8 py-2; } +.btn[data-button-size="large"], .button[data-button-size="large"] { @apply px-12 py-3; } + +/* Width */ +.btn[data-button-width="auto"], .button[data-button-width="auto"] { @apply min-w-0; } +.btn[data-button-width="small"], .button[data-button-width="small"] { @apply px-2; } +.btn[data-button-width="wide"], .button[data-button-width="wide"] { @apply sm:min-w-[20rem]; } +.button[data-button-width="full"], +x-button:has(.button[data-button-width="full"]) { @apply w-full; } + +/** + * Colors + * + * We don't need to speicifcally target "primary" buttons + * as the button styling defaults to "primary". + * However, you can, if necessary, by adding a style block + * like the ones below and changing the color values. + */ +.btn[data-button-color="secondary"], .button[data-button-color="secondary"] { + --button-bg: var(--color-secondary); + --button-color: var(--color-white); + --button-border-color: var(--color-secondary); + --button-outline-color: oklch(0.48 0.0136 252.2); + --button-hover-bg: var(--color-dark); + --button-hover-border-color: var(--color-dark); + --button-hover-color: var(--color-white); +} + +.btn[data-button-color="light"], .button[data-button-color="light"] { + --button-bg: var(--color-white); + --button-color: var(--color-dark); + --button-border-color: var(--color-white); + --button-hover-bg: var(--color-dark); + --button-hover-border-color: var(--color-dark); + --button-hover-color: var(--color-white); +} + +.btn[data-button-color="white"], .button[data-button-color="white"] { + --button-bg: var(--color-white); + --button-color: var(--color-black); + --button-border-color: var(--color-white); + --button-hover-bg: var(--color-secondary-200); + --button-hover-border-color: var(--color-secondary-200); + --button-hover-color: var(--color-black); +} + +.btn[data-button-color="black"], .button[data-button-color="black"] { + --button-bg: var(--color-black); + --button-color: var(--color-white); + --button-border-color: var(--color-black); + --button-hover-bg: var(--color-secondary); + --button-hover-border-color: var(--color-secondary); + --button-hover-color: var(--color-dark); +} + +.back-to-top { + background: var(--color-primary, #3857BC); + color: #fff; + border: none; + border-radius: 2em; + padding: 0.75em 1.5em; + font-size: 1.1rem; + box-shadow: 0 2px 8px rgba(0,0,0,0.15); + cursor: pointer; + transition: opacity 0.2s, background 0.2s; + opacity: 0.85; +} +.back-to-top:hover, .back-to-top:focus { + background: var(--color-info, #233a7a); + opacity: 1; + outline: 2px solid var(--color-info, #233a7a); +} diff --git a/styles/blocks/core.css b/styles/blocks/core.css new file mode 100644 index 0000000..af75e9d --- /dev/null +++ b/styles/blocks/core.css @@ -0,0 +1,5 @@ +.alignfull { + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + width: 100vw; +} diff --git a/styles/blocks/index.css b/styles/blocks/index.css new file mode 100644 index 0000000..e7efb94 --- /dev/null +++ b/styles/blocks/index.css @@ -0,0 +1,4 @@ +/* Theme block styles */ + +@import './buttons.css'; +@import './core.css'; diff --git a/styles/components/breadcrumbs.css b/styles/components/breadcrumbs.css new file mode 100644 index 0000000..91c3d8a --- /dev/null +++ b/styles/components/breadcrumbs.css @@ -0,0 +1,13 @@ +/* Breadcrumb styles */ + +#breadcrumbs { + @apply text-white; + + a { + color: oklch(0.72 0.122 212.25); + + &:hover { + color:color-mix(in oklch, oklch(0.72 0.122 212.25) 60%, white); + } + } +} diff --git a/styles/components/index.css b/styles/components/index.css new file mode 100644 index 0000000..fb03dae --- /dev/null +++ b/styles/components/index.css @@ -0,0 +1,8 @@ +/* Theme component styles */ + +@import "./site-header.css"; +@import "./breadcrumbs.css"; +@import "./post-list.css"; +@import "./sidebar.css"; +@import "./pagination.css"; +@import "./site-footer.css"; diff --git a/styles/components/pagination.css b/styles/components/pagination.css new file mode 100644 index 0000000..e5cd5e0 --- /dev/null +++ b/styles/components/pagination.css @@ -0,0 +1,35 @@ +/* Post index pagination styles */ + +.pagination { + .nav-links { + @apply hidden md:flex items-center justify-center mt-12; + + .page-numbers { + @apply hidden md:flex items-center justify-center h-10 p-4 text-base font-medium transition duration-300 rounded stroke-primary text-primary hover:bg-info hover:text-light hover:stroke-info focus-visible:bg-info focus-visible:text-light focus-visible:stroke-info focus-visible:outline-none; + } + + .page-numbers.current { + @apply text-light whitespace-nowrap bg-info ring-offset-2 hover:bg-primary hover:stroke-primary focus-visible:bg-info; + } + + .prev, .next { + @apply flex gap-4; + } + } + + & a, & span { + border: 1px solid #ddd; + border-radius: 4px; + color: #3857BC !important; + margin: 0 5px; + padding: .25rem .5rem; + text-decoration: none; + } + + & .current, & a:hover { + background: #3857BC !important; + border-color: #3857BC !important; + color: #fff !important; + padding: .25rem .5rem; + } +} diff --git a/styles/components/post-list.css b/styles/components/post-list.css new file mode 100644 index 0000000..e32e448 --- /dev/null +++ b/styles/components/post-list.css @@ -0,0 +1,37 @@ +/* Blog/post index listing styles */ + +.post-list { + /* Original styles, if needed + * .post-list__posts { + * } + * .post-list__h1 { + * } + * .post-list__post { + * &:hover { + * img { + * } + * } + * .post-list__title { + * } + * .post-list__details { + * } + * .post-list__byline { + * } + * .post-list__author { + * } + * .post-list__sep { + * } + * .post-list__date { + * } + * } + */ +} + +/* Original styles, if needed +* .no-posts { +* .no-posts__title { +* } +* .no-posts__desc { +* } +* } +*/ diff --git a/styles/components/sidebar.css b/styles/components/sidebar.css new file mode 100644 index 0000000..4c9dd72 --- /dev/null +++ b/styles/components/sidebar.css @@ -0,0 +1,28 @@ +/* Sidebar styles */ + +.sidebar{ + .widget { + /* Widget styles */ + @apply mb-8; + + h3 { + /* Widget title styles */ + @apply m-0 mb-2 font-semibold; + } + + ul { + /* List styles */ + @apply list-none m-0 p-0 pl-3 border-l-3 border-secondary-400; + + li { + /* List item styles */ + @apply text-balance; + + &:first-of-type { + /* First list item styles */ + @apply leading-none mb-1; + } + } + } + } +} diff --git a/styles/components/site-footer.css b/styles/components/site-footer.css new file mode 100644 index 0000000..4c5437b --- /dev/null +++ b/styles/components/site-footer.css @@ -0,0 +1,41 @@ +/* Footer styles */ + +.site-footer { + #footRight { + div { + @apply col-span-1 md:col-span-4 lg:col-span-1; + + h3 { + @apply font-bold text-secondary-300 text-20px mb-4 pb-2 border-b border-b-secondary-300 + } + + a { + @apply text-footlinks hover:opacity-60; + } + } + + .widget { + li { + @apply text-16px my-1 mb-2 leading-4; + } + + h4 { + @apply font-bold text-18px text-secondary mb-2; + } + + a { + @apply transition-colors duration-300 hover:text-success focus-visible:text-success; + } + } + + .menu-footer-menu-container { + @apply grow; + } + } + + .copyright { + p { @apply leading-none m-0 p-0; } + + a { @apply text-white hover:text-primary-500 underline underline-offset-2; } + } +} diff --git a/styles/components/site-header.css b/styles/components/site-header.css new file mode 100644 index 0000000..6718720 --- /dev/null +++ b/styles/components/site-header.css @@ -0,0 +1,22 @@ +/* Header styles */ + +.site-header { + /* Site header styles */ + .nav-aux__container { + a { + /* Link styles */ + color: var(--color-primary-600); + text-decoration: none; + font-weight: 500; + transition: color 0.3s ease; + + &:hover { + color: var(--color-primary-800); + } + } + + #globalSearch { + @apply text-14px text-light; + } + } +} diff --git a/styles/fonts/Lineicons.svg b/styles/fonts/Lineicons.svg new file mode 100644 index 0000000..d283ae8 --- /dev/null +++ b/styles/fonts/Lineicons.svg @@ -0,0 +1,1835 @@ + + + +{ + "author": "Lineicons", + "version": "5.0", + "url": "lineicons.com" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/styles/fonts/Lineicons.woff2 b/styles/fonts/Lineicons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..640d571345819744cfa96ae3ce81ab2fac49ed27 GIT binary patch literal 66824 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 Ho9_Ssa>3+J literal 0 HcmV?d00001 diff --git a/styles/fonts/lineicons.css b/styles/fonts/lineicons.css new file mode 100644 index 0000000..96120c2 --- /dev/null +++ b/styles/fonts/lineicons.css @@ -0,0 +1,2530 @@ +/*-------------------------------- + +Lineicons regular icon font + +-------------------------------- */ + +@font-face { + font-family: 'Lineicons'; + src: url('../../styles/fonts/Lineicons.woff2') format('woff2'), + url('../../styles/fonts/Lineicons.svg') format('svg'); +} + +/* base class */ +[class^="lni-"]:before, [class*=" lni-"]:before, +[class^="icon-"]:before, [class*=" icon-"]:before { + font-family: "Lineicons", sans-serif; + font-style: normal; + speak: never; + + display: inline-block; + text-decoration: inherit; + vertical-align: middle; + text-align: center; + /* If needed - opacity: .8; */ + + /* Animation center compensation - margins should be symmetric */ + /* if needed - margin-left: .2rem; */ + /* if needed - margin-right: .2rem; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + font-size: 120%; + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /** + * Uncomment for 3D effect + * + * text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); + */ +} + +/* Circular Icons */ +.circular-icon { + @apply box-content bg-secondary rounded-full text-gray-800 inline-block; + + --size: 3rem; + + height: var(--size); + text-align: center; + width: var(--size); + + i { + display: inline-block; + height: var(--size); + line-height: var(--size); + text-align: center; + vertical-align: middle; + width: var(--size); + } + + &i::before, + span { + line-height: var(--size) !important; + } +} + +/* rotate the icon infinitely */ +.lni-is-spinning { + animation: lni-spin 1s infinite linear; +} + +@keyframes lni-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/* transform */ +.lni-rotate-90 { + transform: rotate(90deg); +} + +.lni-rotate-180 { + transform: rotate(180deg); +} + +.lni-rotate-270 { + transform: rotate(270deg); +} + +.lni-flip-y { + transform: scaleY(-1); +} + +.lni-flip-x { + transform: scaleX(-1); +} + +/* icons */ +.lni-500px:before, .icon-500px:before { + content: "\ea01"; +} + +.lni-adobe:before, .icon-adobe:before { + content: "\ea02"; +} + +.lni-adonis:before, .icon-adonis:before { + content: "\ea03"; +} + +.lni-aeroplane-1:before, .icon-aeroplane-1:before { + content: "\ea04"; +} + +.lni-agenda:before, .icon-agenda:before { + content: "\ea05"; +} + +.lni-airbnb:before, .icon-airbnb:before { + content: "\ea06"; +} + +.lni-airtable:before, .icon-airtable:before { + content: "\ea07"; +} + +.lni-alarm-1:before, .icon-alarm-1:before { + content: "\ea08"; +} + +.lni-align-text-center:before, .icon-align-text-center:before { + content: "\ea09"; +} + +.lni-align-text-left:before, .icon-align-text-left:before { + content: "\ea0a"; +} + +.lni-align-text-right:before, .icon-align-text-right:before { + content: "\ea0b"; +} + +.lni-alpinejs:before, .icon-alpinejs:before { + content: "\ea0c"; +} + +.lni-amazon:before, .icon-amazon:before { + content: "\ea0d"; +} + +.lni-amazon-original:before, .icon-amazon-original:before { + content: "\ea0e"; +} + +.lni-amazon-pay:before, .icon-amazon-pay:before { + content: "\ea0f"; +} + +.lni-ambulance-1:before, .icon-ambulance-1:before { + content: "\ea10"; +} + +.lni-amd:before, .icon-amd:before { + content: "\ea11"; +} + +.lni-amex:before, .icon-amex:before { + content: "\ea12"; +} + +.lni-anchor:before, .icon-anchor:before { + content: "\ea13"; +} + +.lni-android:before, .icon-android:before { + content: "\ea14"; +} + +.lni-android-old:before, .icon-android-old:before { + content: "\ea15"; +} + +.lni-angellist:before, .icon-angellist:before { + content: "\ea16"; +} + +.lni-angle-double-down:before, .icon-angle-double-down:before { + content: "\ea17"; +} + +.lni-angle-double-left:before, .icon-angle-double-left:before { + content: "\ea18"; +} + +.lni-angle-double-right:before, .icon-angle-double-right:before { + content: "\ea19"; +} + +.lni-angle-double-up:before, .icon-angle-double-up:before { + content: "\ea1a"; +} + +.lni-angular:before, .icon-angular:before { + content: "\ea1b"; +} + +.lni-app-store:before, .icon-app-store:before { + content: "\ea1c"; +} + +.lni-apple-brand:before, .icon-apple-brand:before { + content: "\ea1d"; +} + +.lni-apple-music:before, .icon-apple-music:before { + content: "\ea1e"; +} + +.lni-apple-music-alt:before, .icon-apple-music-alt:before { + content: "\ea1f"; +} + +.lni-apple-pay:before, .icon-apple-pay:before { + content: "\ea20"; +} + +.lni-arc-browser:before, .icon-arc-browser:before { + content: "\ea21"; +} + +.lni-arrow-all-direction:before, .icon-arrow-all-direction:before { + content: "\ea22"; +} + +.lni-arrow-angular-top-left:before, .icon-arrow-angular-top-left:before { + content: "\ea23"; +} + +.lni-arrow-angular-top-right:before, .icon-arrow-angular-top-right:before { + content: "\ea24"; +} + +.lni-arrow-both-direction-horizontal-1:before, .icon-arrow-both-direction-horizontal-1:before { + content: "\ea25"; +} + +.lni-arrow-both-direction-vertical-1:before, .icon-arrow-both-direction-vertical-1:before { + content: "\ea26"; +} + +.lni-arrow-downward:before, .icon-arrow-downward:before { + content: "\ea27"; +} + +.lni-arrow-left:before, .icon-arrow-left:before { + content: "\ea28"; +} + +.lni-arrow-left-circle:before, .icon-arrow-left-circle:before { + content: "\ea29"; +} + +.lni-arrow-right:before, .icon-arrow-right:before { + content: "\ea2a"; +} + +.lni-arrow-right-circle:before, .icon-arrow-right-circle:before { + content: "\ea2b"; +} + +.lni-arrow-upward:before, .icon-arrow-upward:before { + content: "\ea2c"; +} + +.lni-asana:before, .icon-asana:before { + content: "\ea2d"; +} + +.lni-astro:before, .icon-astro:before { + content: "\ea2e"; +} + +.lni-atlassian:before, .icon-atlassian:before { + content: "\ea2f"; +} + +.lni-audi:before, .icon-audi:before { + content: "\ea30"; +} + +.lni-audi-alt:before, .icon-audi-alt:before { + content: "\ea31"; +} + +.lni-aws:before, .icon-aws:before { + content: "\ea32"; +} + +.lni-azure:before, .icon-azure:before { + content: "\ea33"; +} + +.lni-badge-decagram-percent:before, .icon-badge-decagram-percent:before { + content: "\ea34"; +} + +.lni-balloons:before, .icon-balloons:before { + content: "\ea35"; +} + +.lni-ban-2:before, .icon-ban-2:before { + content: "\ea36"; +} + +.lni-bar-chart-4:before, .icon-bar-chart-4:before { + content: "\ea37"; +} + +.lni-bar-chart-dollar:before, .icon-bar-chart-dollar:before { + content: "\ea38"; +} + +.lni-basket-shopping-3:before, .icon-basket-shopping-3:before { + content: "\ea39"; +} + +.lni-beat:before, .icon-beat:before { + content: "\ea3a"; +} + +.lni-behance:before, .icon-behance:before { + content: "\ea3b"; +} + +.lni-bell-1:before, .icon-bell-1:before { + content: "\ea3c"; +} + +.lni-bike:before, .icon-bike:before { + content: "\ea3d"; +} + +.lni-bing:before, .icon-bing:before { + content: "\ea3e"; +} + +.lni-bitbucket:before, .icon-bitbucket:before { + content: "\ea3f"; +} + +.lni-bitcoin:before, .icon-bitcoin:before { + content: "\ea40"; +} + +.lni-bittorrent:before, .icon-bittorrent:before { + content: "\ea41"; +} + +.lni-blogger:before, .icon-blogger:before { + content: "\ea42"; +} + +.lni-blogger-alt:before, .icon-blogger-alt:before { + content: "\ea43"; +} + +.lni-bluetooth:before, .icon-bluetooth:before { + content: "\ea44"; +} + +.lni-bluetooth-logo:before, .icon-bluetooth-logo:before { + content: "\ea45"; +} + +.lni-bmw:before, .icon-bmw:before { + content: "\ea46"; +} + +.lni-board-writing-3:before, .icon-board-writing-3:before { + content: "\ea47"; +} + +.lni-bold:before, .icon-bold:before { + content: "\ea48"; +} + +.lni-bolt-2:before, .icon-bolt-2:before { + content: "\ea49"; +} + +.lni-bolt-3:before, .icon-bolt-3:before { + content: "\ea4a"; +} + +.lni-book-1:before, .icon-book-1:before { + content: "\ea4b"; +} + +.lni-bookmark-1:before, .icon-bookmark-1:before { + content: "\ea4c"; +} + +.lni-bookmark-circle:before, .icon-bookmark-circle:before { + content: "\ea4d"; +} + +.lni-books-2:before, .icon-books-2:before { + content: "\ea4e"; +} + +.lni-bootstrap-5:before, .icon-bootstrap-5:before { + content: "\ea4f"; +} + +.lni-bootstrap-5-square:before, .icon-bootstrap-5-square:before { + content: "\ea50"; +} + +.lni-box-archive-1:before, .icon-box-archive-1:before { + content: "\ea51"; +} + +.lni-box-closed:before, .icon-box-closed:before { + content: "\ea52"; +} + +.lni-box-gift-1:before, .icon-box-gift-1:before { + content: "\ea53"; +} + +.lni-brave:before, .icon-brave:before { + content: "\ea54"; +} + +.lni-bricks:before, .icon-bricks:before { + content: "\ea55"; +} + +.lni-bridge-3:before, .icon-bridge-3:before { + content: "\ea56"; +} + +.lni-briefcase-1:before, .icon-briefcase-1:before { + content: "\ea57"; +} + +.lni-briefcase-2:before, .icon-briefcase-2:before { + content: "\ea58"; +} + +.lni-briefcase-plus-1:before, .icon-briefcase-plus-1:before { + content: "\ea59"; +} + +.lni-brush-1-rotated:before, .icon-brush-1-rotated:before { + content: "\ea5a"; +} + +.lni-brush-2:before, .icon-brush-2:before { + content: "\ea5b"; +} + +.lni-btc:before, .icon-btc:before { + content: "\ea5c"; +} + +.lni-bug-1:before, .icon-bug-1:before { + content: "\ea5d"; +} + +.lni-buildings-1:before, .icon-buildings-1:before { + content: "\ea5e"; +} + +.lni-bulb-2:before, .icon-bulb-2:before { + content: "\ea5f"; +} + +.lni-bulb-4:before, .icon-bulb-4:before { + content: "\ea60"; +} + +.lni-burger-1:before, .icon-burger-1:before { + content: "\ea61"; +} + +.lni-burger-drink:before, .icon-burger-drink:before { + content: "\ea62"; +} + +.lni-bus-1:before, .icon-bus-1:before { + content: "\ea63"; +} + +.lni-busket-ball:before, .icon-busket-ball:before { + content: "\ea64"; +} + +.lni-cake-1:before, .icon-cake-1:before { + content: "\ea65"; +} + +.lni-calculator-1:before, .icon-calculator-1:before { + content: "\ea66"; +} + +.lni-calculator-2:before, .icon-calculator-2:before { + content: "\ea67"; +} + +.lni-calendar-days:before, .icon-calendar-days:before { + content: "\ea68"; +} + +.lni-camera-1:before, .icon-camera-1:before { + content: "\ea69"; +} + +.lni-camera-movie-1:before, .icon-camera-movie-1:before { + content: "\ea6a"; +} + +.lni-candy-cane-2:before, .icon-candy-cane-2:before { + content: "\ea6b"; +} + +.lni-candy-round-1:before, .icon-candy-round-1:before { + content: "\ea6c"; +} + +.lni-canva:before, .icon-canva:before { + content: "\ea6d"; +} + +.lni-capsule-1:before, .icon-capsule-1:before { + content: "\ea6e"; +} + +.lni-car-2:before, .icon-car-2:before { + content: "\ea6f"; +} + +.lni-car-4:before, .icon-car-4:before { + content: "\ea70"; +} + +.lni-car-6:before, .icon-car-6:before { + content: "\ea71"; +} + +.lni-caravan-1:before, .icon-caravan-1:before { + content: "\ea72"; +} + +.lni-cart-1:before, .icon-cart-1:before { + content: "\ea73"; +} + +.lni-cart-2:before, .icon-cart-2:before { + content: "\ea74"; +} + +.lni-cash-app:before, .icon-cash-app:before { + content: "\ea75"; +} + +.lni-certificate-badge-1:before, .icon-certificate-badge-1:before { + content: "\ea76"; +} + +.lni-chat-bubble-2:before, .icon-chat-bubble-2:before { + content: "\ea77"; +} + +.lni-check:before, .icon-check:before { + content: "\ea78"; +} + +.lni-check-circle-1:before, .icon-check-circle-1:before { + content: "\ea79"; +} + +.lni-check-square-2:before, .icon-check-square-2:before { + content: "\ea7a"; +} + +.lni-chevron-down:before, .icon-chevron-down:before { + content: "\ea7b"; +} + +.lni-chevron-down-circle:before, .icon-chevron-down-circle:before { + content: "\ea7c"; +} + +.lni-chevron-left:before, .icon-chevron-left:before { + content: "\ea7d"; +} + +.lni-chevron-left-circle:before, .icon-chevron-left-circle:before { + content: "\ea7e"; +} + +.lni-chevron-right-circle:before, .icon-chevron-right-circle:before { + content: "\ea7f"; +} + +.lni-chevron-up:before, .icon-chevron-up:before { + content: "\ea80"; +} + +.lni-chevron-up-circle:before, .icon-chevron-up-circle:before { + content: "\ea81"; +} + +.lni-chrome:before, .icon-chrome:before { + content: "\ea82"; +} + +.lni-chromecast:before, .icon-chromecast:before { + content: "\ea83"; +} + +.lni-cisco:before, .icon-cisco:before { + content: "\ea84"; +} + +.lni-claude:before, .icon-claude:before { + content: "\ea85"; +} + +.lni-clickup:before, .icon-clickup:before { + content: "\ea86"; +} + +.lni-clipboard:before, .icon-clipboard:before { + content: "\ea87"; +} + +.lni-cloud-2:before, .icon-cloud-2:before { + content: "\ea88"; +} + +.lni-cloud-bolt-1:before, .icon-cloud-bolt-1:before { + content: "\ea89"; +} + +.lni-cloud-bolt-2:before, .icon-cloud-bolt-2:before { + content: "\ea8a"; +} + +.lni-cloud-check-circle:before, .icon-cloud-check-circle:before { + content: "\ea8b"; +} + +.lni-cloud-download:before, .icon-cloud-download:before { + content: "\ea8c"; +} + +.lni-cloud-iot-2:before, .icon-cloud-iot-2:before { + content: "\ea8d"; +} + +.lni-cloud-rain:before, .icon-cloud-rain:before { + content: "\ea8e"; +} + +.lni-cloud-refresh-clockwise:before, .icon-cloud-refresh-clockwise:before { + content: "\ea8f"; +} + +.lni-cloud-sun:before, .icon-cloud-sun:before { + content: "\ea90"; +} + +.lni-cloud-upload:before, .icon-cloud-upload:before { + content: "\ea91"; +} + +.lni-cloudflare:before, .icon-cloudflare:before { + content: "\ea92"; +} + +.lni-code-1:before, .icon-code-1:before { + content: "\ea93"; +} + +.lni-code-s:before, .icon-code-s:before { + content: "\ea94"; +} + +.lni-codepen:before, .icon-codepen:before { + content: "\ea95"; +} + +.lni-coffee-cup-2:before, .icon-coffee-cup-2:before { + content: "\ea96"; +} + +.lni-coinbase:before, .icon-coinbase:before { + content: "\ea97"; +} + +.lni-colour-palette-3:before, .icon-colour-palette-3:before { + content: "\ea98"; +} + +.lni-comment-1:before, .icon-comment-1:before { + content: "\ea99"; +} + +.lni-comment-1-share:before, .icon-comment-1-share:before { + content: "\ea9a"; +} + +.lni-comment-1-text:before, .icon-comment-1-text:before { + content: "\ea9b"; +} + +.lni-compass-drafting-2:before, .icon-compass-drafting-2:before { + content: "\ea9c"; +} + +.lni-connectdevelop:before, .icon-connectdevelop:before { + content: "\ea9d"; +} + +.lni-copilot:before, .icon-copilot:before { + content: "\ea9e"; +} + +.lni-coral:before, .icon-coral:before { + content: "\ea9f"; +} + +.lni-cpanel:before, .icon-cpanel:before { + content: "\eaa0"; +} + +.lni-crane-4:before, .icon-crane-4:before { + content: "\eaa1"; +} + +.lni-creative-commons:before, .icon-creative-commons:before { + content: "\eaa2"; +} + +.lni-credit-card-multiple:before, .icon-credit-card-multiple:before { + content: "\eaa3"; +} + +.lni-crop-2:before, .icon-crop-2:before { + content: "\eaa4"; +} + +.lni-crown-3:before, .icon-crown-3:before { + content: "\eaa5"; +} + +.lni-css3:before, .icon-css3:before { + content: "\eaa6"; +} + +.lni-dashboard-square-1:before, .icon-dashboard-square-1:before { + content: "\eaa7"; +} + +.lni-database-2:before, .icon-database-2:before { + content: "\eaa8"; +} + +.lni-deno:before, .icon-deno:before { + content: "\eaa9"; +} + +.lni-dev:before, .icon-dev:before { + content: "\eaaa"; +} + +.lni-dialogflow:before, .icon-dialogflow:before { + content: "\eaab"; +} + +.lni-diamonds-1:before, .icon-diamonds-1:before { + content: "\eaac"; +} + +.lni-diamonds-2:before, .icon-diamonds-2:before { + content: "\eaad"; +} + +.lni-digitalocean:before, .icon-digitalocean:before { + content: "\eaae"; +} + +.lni-diners-club:before, .icon-diners-club:before { + content: "\eaaf"; +} + +.lni-direction-ltr:before, .icon-direction-ltr:before { + content: "\eab0"; +} + +.lni-direction-rtl:before, .icon-direction-rtl:before { + content: "\eab1"; +} + +.lni-discord:before, .icon-discord:before { + content: "\eab2"; +} + +.lni-discord-chat:before, .icon-discord-chat:before { + content: "\eab3"; +} + +.lni-discover:before, .icon-discover:before { + content: "\eab4"; +} + +.lni-docker:before, .icon-docker:before { + content: "\eab5"; +} + +.lni-dollar:before, .icon-dollar:before { + content: "\eab6"; +} + +.lni-dollar-circle:before, .icon-dollar-circle:before { + content: "\eab7"; +} + +.lni-double-quotes-end-1:before, .icon-double-quotes-end-1:before { + content: "\eab8"; +} + +.lni-download-1:before, .icon-download-1:before { + content: "\eab9"; +} + +.lni-download-circle-1:before, .icon-download-circle-1:before { + content: "\eaba"; +} + +.lni-dribbble:before, .icon-dribbble:before { + content: "\eabb"; +} + +.lni-dribbble-symbol:before, .icon-dribbble-symbol:before { + content: "\eabc"; +} + +.lni-drizzle:before, .icon-drizzle:before { + content: "\eabd"; +} + +.lni-dropbox:before, .icon-dropbox:before { + content: "\eabe"; +} + +.lni-drupal:before, .icon-drupal:before { + content: "\eabf"; +} + +.lni-dumbbell-1:before, .icon-dumbbell-1:before { + content: "\eac0"; +} + +.lni-edge:before, .icon-edge:before { + content: "\eac1"; +} + +.lni-emoji-expressionless:before, .icon-emoji-expressionless:before { + content: "\eac2"; +} + +.lni-emoji-expressionless-flat-eyes:before, .icon-emoji-expressionless-flat-eyes:before { + content: "\eac3"; +} + +.lni-emoji-grin:before, .icon-emoji-grin:before { + content: "\eac4"; +} + +.lni-emoji-sad:before, .icon-emoji-sad:before { + content: "\eac5"; +} + +.lni-emoji-smile:before, .icon-emoji-smile:before { + content: "\eac6"; +} + +.lni-emoji-smile-side:before, .icon-emoji-smile-side:before { + content: "\eac7"; +} + +.lni-emoji-smile-sunglass:before, .icon-emoji-smile-sunglass:before { + content: "\eac8"; +} + +.lni-emoji-smile-tongue:before, .icon-emoji-smile-tongue:before { + content: "\eac9"; +} + +.lni-enter:before, .icon-enter:before { + content: "\eaca"; +} + +.lni-enter-down:before, .icon-enter-down:before { + content: "\eacb"; +} + +.lni-envato:before, .icon-envato:before { + content: "\eacc"; +} + +.lni-envelope-1:before, .icon-envelope-1:before { + content: "\eacd"; +} + +.lni-eraser-1:before, .icon-eraser-1:before { + content: "\eace"; +} + +.lni-ethereum-logo:before, .icon-ethereum-logo:before { + content: "\eacf"; +} + +.lni-euro:before, .icon-euro:before { + content: "\ead0"; +} + +.lni-exit:before, .icon-exit:before { + content: "\ead1"; +} + +.lni-exit-up:before, .icon-exit-up:before { + content: "\ead2"; +} + +.lni-expand-arrow-1:before, .icon-expand-arrow-1:before { + content: "\ead3"; +} + +.lni-expand-square-4:before, .icon-expand-square-4:before { + content: "\ead4"; +} + +.lni-expressjs:before, .icon-expressjs:before { + content: "\ead5"; +} + +.lni-eye:before, .icon-eye:before { + content: "\ead6"; +} + +.lni-facebook:before, .icon-facebook:before { + content: "\ead7"; +} + +.lni-facebook-messenger:before, .icon-facebook-messenger:before { + content: "\ead8"; +} + +.lni-facebook-rounded:before, .icon-facebook-rounded:before { + content: "\ead9"; +} + +.lni-facebook-square:before, .icon-facebook-square:before { + content: "\eada"; +} + +.lni-facetime:before, .icon-facetime:before { + content: "\eadb"; +} + +.lni-figma:before, .icon-figma:before { + content: "\eadc"; +} + +.lni-file-format-zip:before, .icon-file-format-zip:before { + content: "\eadd"; +} + +.lni-file-multiple:before, .icon-file-multiple:before { + content: "\eade"; +} + +.lni-file-pencil:before, .icon-file-pencil:before { + content: "\eadf"; +} + +.lni-file-plus-circle:before, .icon-file-plus-circle:before { + content: "\eae0"; +} + +.lni-file-question:before, .icon-file-question:before { + content: "\eae1"; +} + +.lni-file-xmark:before, .icon-file-xmark:before { + content: "\eae2"; +} + +.lni-firebase:before, .icon-firebase:before { + content: "\eae3"; +} + +.lni-firefox:before, .icon-firefox:before { + content: "\eae4"; +} + +.lni-firework-rocket-4:before, .icon-firework-rocket-4:before { + content: "\eae5"; +} + +.lni-fitbit:before, .icon-fitbit:before { + content: "\eae6"; +} + +.lni-flag-1:before, .icon-flag-1:before { + content: "\eae7"; +} + +.lni-flag-2:before, .icon-flag-2:before { + content: "\eae8"; +} + +.lni-flickr:before, .icon-flickr:before { + content: "\eae9"; +} + +.lni-floppy-disk-1:before, .icon-floppy-disk-1:before { + content: "\eaea"; +} + +.lni-flower-2:before, .icon-flower-2:before { + content: "\eaeb"; +} + +.lni-flutter:before, .icon-flutter:before { + content: "\eaec"; +} + +.lni-folder-1:before, .icon-folder-1:before { + content: "\eaed"; +} + +.lni-ford:before, .icon-ford:before { + content: "\eaee"; +} + +.lni-framer:before, .icon-framer:before { + content: "\eaef"; +} + +.lni-funnel-1:before, .icon-funnel-1:before { + content: "\eaf0"; +} + +.lni-gallery:before, .icon-gallery:before { + content: "\eaf1"; +} + +.lni-game-pad-modern-1:before, .icon-game-pad-modern-1:before { + content: "\eaf2"; +} + +.lni-gatsby:before, .icon-gatsby:before { + content: "\eaf3"; +} + +.lni-gauge-1:before, .icon-gauge-1:before { + content: "\eaf4"; +} + +.lni-gear-1:before, .icon-gear-1:before { + content: "\eaf5"; +} + +.lni-gears-3:before, .icon-gears-3:before { + content: "\eaf6"; +} + +.lni-gemini:before, .icon-gemini:before { + content: "\eaf7"; +} + +.lni-git:before, .icon-git:before { + content: "\eaf8"; +} + +.lni-github:before, .icon-github:before { + content: "\eaf9"; +} + +.lni-glass-juice-1:before, .icon-glass-juice-1:before { + content: "\eafa"; +} + +.lni-globe-1:before, .icon-globe-1:before { + content: "\eafb"; +} + +.lni-globe-stand:before, .icon-globe-stand:before { + content: "\eafc"; +} + +.lni-go:before, .icon-go:before { + content: "\eafd"; +} + +.lni-goodreads:before, .icon-goodreads:before { + content: "\eafe"; +} + +.lni-google:before, .icon-google:before { + content: "\eaff"; +} + +.lni-google-cloud:before, .icon-google-cloud:before { + content: "\eb00"; +} + +.lni-google-drive:before, .icon-google-drive:before { + content: "\eb01"; +} + +.lni-google-meet:before, .icon-google-meet:before { + content: "\eb02"; +} + +.lni-google-pay:before, .icon-google-pay:before { + content: "\eb03"; +} + +.lni-google-wallet:before, .icon-google-wallet:before { + content: "\eb04"; +} + +.lni-graduation-cap-1:before, .icon-graduation-cap-1:before { + content: "\eb05"; +} + +.lni-grammarly:before, .icon-grammarly:before { + content: "\eb06"; +} + +.lni-hacker-news:before, .icon-hacker-news:before { + content: "\eb07"; +} + +.lni-hammer-1:before, .icon-hammer-1:before { + content: "\eb08"; +} + +.lni-hammer-2:before, .icon-hammer-2:before { + content: "\eb09"; +} + +.lni-hand-mic:before, .icon-hand-mic:before { + content: "\eb0a"; +} + +.lni-hand-shake:before, .icon-hand-shake:before { + content: "\eb0b"; +} + +.lni-hand-stop:before, .icon-hand-stop:before { + content: "\eb0c"; +} + +.lni-hand-taking-dollar:before, .icon-hand-taking-dollar:before { + content: "\eb0d"; +} + +.lni-hand-taking-leaf-1:before, .icon-hand-taking-leaf-1:before { + content: "\eb0e"; +} + +.lni-hand-taking-user:before, .icon-hand-taking-user:before { + content: "\eb0f"; +} + +.lni-hashnode:before, .icon-hashnode:before { + content: "\eb10"; +} + +.lni-hat-chef-3:before, .icon-hat-chef-3:before { + content: "\eb11"; +} + +.lni-headphone-1:before, .icon-headphone-1:before { + content: "\eb12"; +} + +.lni-heart:before, .icon-heart:before { + content: "\eb13"; +} + +.lni-helicopter-2:before, .icon-helicopter-2:before { + content: "\eb14"; +} + +.lni-helmet-safety-1:before, .icon-helmet-safety-1:before { + content: "\eb15"; +} + +.lni-hierarchy-1:before, .icon-hierarchy-1:before { + content: "\eb16"; +} + +.lni-highlighter-1:before, .icon-highlighter-1:before { + content: "\eb17"; +} + +.lni-highlighter-2:before, .icon-highlighter-2:before { + content: "\eb18"; +} + +.lni-home-2:before, .icon-home-2:before { + content: "\eb19"; +} + +.lni-hospital-2:before, .icon-hospital-2:before { + content: "\eb1a"; +} + +.lni-hourglass:before, .icon-hourglass:before { + content: "\eb1b"; +} + +.lni-html5:before, .icon-html5:before { + content: "\eb1c"; +} + +.lni-ibm:before, .icon-ibm:before { + content: "\eb1d"; +} + +.lni-id-card:before, .icon-id-card:before { + content: "\eb1e"; +} + +.lni-imdb:before, .icon-imdb:before { + content: "\eb1f"; +} + +.lni-indent:before, .icon-indent:before { + content: "\eb20"; +} + +.lni-info:before, .icon-info:before { + content: "\eb21"; +} + +.lni-injection-1:before, .icon-injection-1:before { + content: "\eb22"; +} + +.lni-instagram:before, .icon-instagram:before { + content: "\eb23"; +} + +.lni-instagram-logotype:before, .icon-instagram-logotype:before { + content: "\eb24"; +} + +.lni-intel:before, .icon-intel:before { + content: "\eb25"; +} + +.lni-ios:before, .icon-ios:before { + content: "\eb26"; +} + +.lni-island-2:before, .icon-island-2:before { + content: "\eb27"; +} + +.lni-jaguar:before, .icon-jaguar:before { + content: "\eb28"; +} + +.lni-jamstack:before, .icon-jamstack:before { + content: "\eb29"; +} + +.lni-java:before, .icon-java:before { + content: "\eb2a"; +} + +.lni-javascript:before, .icon-javascript:before { + content: "\eb2b"; +} + +.lni-jcb:before, .icon-jcb:before { + content: "\eb2c"; +} + +.lni-joomla:before, .icon-joomla:before { + content: "\eb2d"; +} + +.lni-jsfiddle:before, .icon-jsfiddle:before { + content: "\eb2e"; +} + +.lni-key-1:before, .icon-key-1:before { + content: "\eb2f"; +} + +.lni-keyboard:before, .icon-keyboard:before { + content: "\eb30"; +} + +.lni-knife-fork-1:before, .icon-knife-fork-1:before { + content: "\eb31"; +} + +.lni-kubernetes:before, .icon-kubernetes:before { + content: "\eb32"; +} + +.lni-label-dollar-2:before, .icon-label-dollar-2:before { + content: "\eb33"; +} + +.lni-laptop-2:before, .icon-laptop-2:before { + content: "\eb34"; +} + +.lni-laptop-phone:before, .icon-laptop-phone:before { + content: "\eb35"; +} + +.lni-laravel:before, .icon-laravel:before { + content: "\eb36"; +} + +.lni-layers-1:before, .icon-layers-1:before { + content: "\eb37"; +} + +.lni-layout-26:before, .icon-layout-26:before { + content: "\eb38"; +} + +.lni-layout-9:before, .icon-layout-9:before { + content: "\eb39"; +} + +.lni-leaf-1:before, .icon-leaf-1:before { + content: "\eb3a"; +} + +.lni-leaf-6:before, .icon-leaf-6:before { + content: "\eb3b"; +} + +.lni-lemon-squeezy:before, .icon-lemon-squeezy:before { + content: "\eb3c"; +} + +.lni-life-guard-tube-1:before, .icon-life-guard-tube-1:before { + content: "\eb3d"; +} + +.lni-line:before, .icon-line:before { + content: "\eb3e"; +} + +.lni-line-dashed:before, .icon-line-dashed:before { + content: "\eb3f"; +} + +.lni-line-dotted:before, .icon-line-dotted:before { + content: "\eb40"; +} + +.lni-line-height:before, .icon-line-height:before { + content: "\eb41"; +} + +.lni-lineicons:before, .icon-lineicons:before { + content: "\eb42"; +} + +.lni-link-2-angular-right:before, .icon-link-2-angular-right:before { + content: "\eb43"; +} + +.lni-linkedin:before, .icon-linkedin:before { + content: "\eb44"; +} + +.lni-location-arrow-right:before, .icon-location-arrow-right:before { + content: "\eb45"; +} + +.lni-locked-1:before, .icon-locked-1:before { + content: "\eb46"; +} + +.lni-locked-2:before, .icon-locked-2:before { + content: "\eb47"; +} + +.lni-loom:before, .icon-loom:before { + content: "\eb48"; +} + +.lni-magento:before, .icon-magento:before { + content: "\eb49"; +} + +.lni-magnet:before, .icon-magnet:before { + content: "\eb4a"; +} + +.lni-mailchimp:before, .icon-mailchimp:before { + content: "\eb4b"; +} + +.lni-map-marker-1:before, .icon-map-marker-1:before { + content: "\eb4c"; +} + +.lni-map-marker-5:before, .icon-map-marker-5:before { + content: "\eb4d"; +} + +.lni-map-pin-5:before, .icon-map-pin-5:before { + content: "\eb4e"; +} + +.lni-markdown:before, .icon-markdown:before { + content: "\eb4f"; +} + +.lni-mastercard:before, .icon-mastercard:before { + content: "\eb50"; +} + +.lni-medium:before, .icon-medium:before { + content: "\eb51"; +} + +.lni-medium-alt:before, .icon-medium-alt:before { + content: "\eb52"; +} + +.lni-megaphone-1:before, .icon-megaphone-1:before { + content: "\eb53"; +} + +.lni-menu-cheesburger:before, .icon-menu-cheesburger:before { + content: "\eb54"; +} + +.lni-menu-hamburger-1:before, .icon-menu-hamburger-1:before { + content: "\eb55"; +} + +.lni-menu-meatballs-1:before, .icon-menu-meatballs-1:before { + content: "\eb56"; +} + +.lni-menu-meatballs-2:before, .icon-menu-meatballs-2:before { + content: "\eb57"; +} + +.lni-mercedes:before, .icon-mercedes:before { + content: "\eb58"; +} + +.lni-message-2:before, .icon-message-2:before { + content: "\eb59"; +} + +.lni-message-2-question:before, .icon-message-2-question:before { + content: "\eb5a"; +} + +.lni-message-3-text:before, .icon-message-3-text:before { + content: "\eb5b"; +} + +.lni-meta:before, .icon-meta:before { + content: "\eb5c"; +} + +.lni-meta-alt:before, .icon-meta-alt:before { + content: "\eb5d"; +} + +.lni-microphone-1:before, .icon-microphone-1:before { + content: "\eb5e"; +} + +.lni-microscope:before, .icon-microscope:before { + content: "\eb5f"; +} + +.lni-microsoft:before, .icon-microsoft:before { + content: "\eb60"; +} + +.lni-microsoft-edge:before, .icon-microsoft-edge:before { + content: "\eb61"; +} + +.lni-microsoft-teams:before, .icon-microsoft-teams:before { + content: "\eb62"; +} + +.lni-minus:before, .icon-minus:before { + content: "\eb63"; +} + +.lni-minus-circle:before, .icon-minus-circle:before { + content: "\eb64"; +} + +.lni-mongodb:before, .icon-mongodb:before { + content: "\eb65"; +} + +.lni-monitor:before, .icon-monitor:before { + content: "\eb66"; +} + +.lni-monitor-code:before, .icon-monitor-code:before { + content: "\eb67"; +} + +.lni-monitor-mac:before, .icon-monitor-mac:before { + content: "\eb68"; +} + +.lni-moon-half-right-5:before, .icon-moon-half-right-5:before { + content: "\eb69"; +} + +.lni-mountains-2:before, .icon-mountains-2:before { + content: "\eb6a"; +} + +.lni-mouse-2:before, .icon-mouse-2:before { + content: "\eb6b"; +} + +.lni-mushroom-1:before, .icon-mushroom-1:before { + content: "\eb6c"; +} + +.lni-mushroom-5:before, .icon-mushroom-5:before { + content: "\eb6d"; +} + +.lni-music:before, .icon-music:before { + content: "\eb6e"; +} + +.lni-mysql:before, .icon-mysql:before { + content: "\eb6f"; +} + +.lni-nasa:before, .icon-nasa:before { + content: "\eb70"; +} + +.lni-netflix:before, .icon-netflix:before { + content: "\eb71"; +} + +.lni-netlify:before, .icon-netlify:before { + content: "\eb72"; +} + +.lni-next-step-2:before, .icon-next-step-2:before { + content: "\eb73"; +} + +.lni-nextjs:before, .icon-nextjs:before { + content: "\eb74"; +} + +.lni-nike:before, .icon-nike:before { + content: "\eb75"; +} + +.lni-nissan:before, .icon-nissan:before { + content: "\eb76"; +} + +.lni-nodejs:before, .icon-nodejs:before { + content: "\eb77"; +} + +.lni-nodejs-alt:before, .icon-nodejs-alt:before { + content: "\eb78"; +} + +.lni-notebook-1:before, .icon-notebook-1:before { + content: "\eb79"; +} + +.lni-notion:before, .icon-notion:before { + content: "\eb7a"; +} + +.lni-npm:before, .icon-npm:before { + content: "\eb7b"; +} + +.lni-nuxt:before, .icon-nuxt:before { + content: "\eb7c"; +} + +.lni-nvidia:before, .icon-nvidia:before { + content: "\eb7d"; +} + +.lni-oculus:before, .icon-oculus:before { + content: "\eb7e"; +} + +.lni-open-ai:before, .icon-open-ai:before { + content: "\eb7f"; +} + +.lni-opera-mini:before, .icon-opera-mini:before { + content: "\eb80"; +} + +.lni-oracle:before, .icon-oracle:before { + content: "\eb81"; +} + +.lni-outdent:before, .icon-outdent:before { + content: "\eb82"; +} + +.lni-paddle:before, .icon-paddle:before { + content: "\eb83"; +} + +.lni-page-break-1:before, .icon-page-break-1:before { + content: "\eb84"; +} + +.lni-pagination:before, .icon-pagination:before { + content: "\eb85"; +} + +.lni-paint-bucket:before, .icon-paint-bucket:before { + content: "\eb86"; +} + +.lni-paint-roller-1:before, .icon-paint-roller-1:before { + content: "\eb87"; +} + +.lni-paperclip-1:before, .icon-paperclip-1:before { + content: "\eb88"; +} + +.lni-party-flags:before, .icon-party-flags:before { + content: "\eb89"; +} + +.lni-party-spray:before, .icon-party-spray:before { + content: "\eb8a"; +} + +.lni-patreon:before, .icon-patreon:before { + content: "\eb8b"; +} + +.lni-pause:before, .icon-pause:before { + content: "\eb8c"; +} + +.lni-payoneer:before, .icon-payoneer:before { + content: "\eb8d"; +} + +.lni-paypal:before, .icon-paypal:before { + content: "\eb8e"; +} + +.lni-pen-to-square:before, .icon-pen-to-square:before { + content: "\eb8f"; +} + +.lni-pencil-1:before, .icon-pencil-1:before { + content: "\eb90"; +} + +.lni-pepsi:before, .icon-pepsi:before { + content: "\eb91"; +} + +.lni-phone:before, .icon-phone:before { + content: "\eb92"; +} + +.lni-photos:before, .icon-photos:before { + content: "\eb93"; +} + +.lni-php:before, .icon-php:before { + content: "\eb94"; +} + +.lni-pie-chart-2:before, .icon-pie-chart-2:before { + content: "\eb95"; +} + +.lni-pilcrow:before, .icon-pilcrow:before { + content: "\eb96"; +} + +.lni-pimjo-logo:before, .icon-pimjo-logo:before { + content: "\eb97"; +} + +.lni-pimjo-symbol:before, .icon-pimjo-symbol:before { + content: "\eb98"; +} + +.lni-pinterest:before, .icon-pinterest:before { + content: "\eb99"; +} + +.lni-pizza-2:before, .icon-pizza-2:before { + content: "\eb9a"; +} + +.lni-placeholder-dollar:before, .icon-placeholder-dollar:before { + content: "\eb9b"; +} + +.lni-plantscale:before, .icon-plantscale:before { + content: "\eb9c"; +} + +.lni-play:before, .icon-play:before { + content: "\eb9d"; +} + +.lni-play-store:before, .icon-play-store:before { + content: "\eb9e"; +} + +.lni-playstation:before, .icon-playstation:before { + content: "\eb9f"; +} + +.lni-plug-1:before, .icon-plug-1:before { + content: "\eba0"; +} + +.lni-plus:before, .icon-plus:before { + content: "\eba1"; +} + +.lni-plus-circle:before, .icon-plus-circle:before { + content: "\eba2"; +} + +.lni-pnpm:before, .icon-pnpm:before { + content: "\eba3"; +} + +.lni-postgresql:before, .icon-postgresql:before { + content: "\eba4"; +} + +.lni-postman:before, .icon-postman:before { + content: "\eba5"; +} + +.lni-pound:before, .icon-pound:before { + content: "\eba6"; +} + +.lni-power-button:before, .icon-power-button:before { + content: "\eba7"; +} + +.lni-previous-step-2:before, .icon-previous-step-2:before { + content: "\eba8"; +} + +.lni-printer:before, .icon-printer:before { + content: "\eba9"; +} + +.lni-prisma:before, .icon-prisma:before { + content: "\ebaa"; +} + +.lni-producthunt:before, .icon-producthunt:before { + content: "\ebab"; +} + +.lni-proton-mail-logo:before, .icon-proton-mail-logo:before { + content: "\ebac"; +} + +.lni-proton-mail-symbol:before, .icon-proton-mail-symbol:before { + content: "\ebad"; +} + +.lni-python:before, .icon-python:before { + content: "\ebae"; +} + +.lni-question-mark:before, .icon-question-mark:before { + content: "\ebaf"; +} + +.lni-question-mark-circle:before, .icon-question-mark-circle:before { + content: "\ebb0"; +} + +.lni-quora:before, .icon-quora:before { + content: "\ebb1"; +} + +.lni-radis:before, .icon-radis:before { + content: "\ebb2"; +} + +.lni-react:before, .icon-react:before { + content: "\ebb3"; +} + +.lni-reddit:before, .icon-reddit:before { + content: "\ebb4"; +} + +.lni-refresh-circle-1-clockwise:before, .icon-refresh-circle-1-clockwise:before { + content: "\ebb5"; +} + +.lni-refresh-dollar-1:before, .icon-refresh-dollar-1:before { + content: "\ebb6"; +} + +.lni-refresh-user-1:before, .icon-refresh-user-1:before { + content: "\ebb7"; +} + +.lni-remix-js:before, .icon-remix-js:before { + content: "\ebb8"; +} + +.lni-road-1:before, .icon-road-1:before { + content: "\ebb9"; +} + +.lni-rocket-5:before, .icon-rocket-5:before { + content: "\ebba"; +} + +.lni-route-1:before, .icon-route-1:before { + content: "\ebbb"; +} + +.lni-rss-right:before, .icon-rss-right:before { + content: "\ebbc"; +} + +.lni-ruler-1:before, .icon-ruler-1:before { + content: "\ebbd"; +} + +.lni-ruler-pen:before, .icon-ruler-pen:before { + content: "\ebbe"; +} + +.lni-rupee:before, .icon-rupee:before { + content: "\ebbf"; +} + +.lni-safari:before, .icon-safari:before { + content: "\ebc0"; +} + +.lni-sanity:before, .icon-sanity:before { + content: "\ebc1"; +} + +.lni-school-bench-1:before, .icon-school-bench-1:before { + content: "\ebc2"; +} + +.lni-school-bench-2:before, .icon-school-bench-2:before { + content: "\ebc3"; +} + +.lni-scissors-1-vertical:before, .icon-scissors-1-vertical:before { + content: "\ebc4"; +} + +.lni-scoter:before, .icon-scoter:before { + content: "\ebc5"; +} + +.lni-scroll-down-2:before, .icon-scroll-down-2:before { + content: "\ebc6"; +} + +.lni-search-1:before, .icon-search-1:before { + content: "\ebc7"; +} + +.lni-search-2:before, .icon-search-2:before { + content: "\ebc8"; +} + +.lni-search-minus:before, .icon-search-minus:before { + content: "\ebc9"; +} + +.lni-search-plus:before, .icon-search-plus:before { + content: "\ebca"; +} + +.lni-search-text:before, .icon-search-text:before { + content: "\ebcb"; +} + +.lni-select-cursor-1:before, .icon-select-cursor-1:before { + content: "\ebcc"; +} + +.lni-seo-monitor:before, .icon-seo-monitor:before { + content: "\ebcd"; +} + +.lni-service-bell-1:before, .icon-service-bell-1:before { + content: "\ebce"; +} + +.lni-share-1:before, .icon-share-1:before { + content: "\ebcf"; +} + +.lni-share-1-circle:before, .icon-share-1-circle:before { + content: "\ebd0"; +} + +.lni-share-2:before, .icon-share-2:before { + content: "\ebd1"; +} + +.lni-shield-2:before, .icon-shield-2:before { + content: "\ebd2"; +} + +.lni-shield-2-check:before, .icon-shield-2-check:before { + content: "\ebd3"; +} + +.lni-shield-dollar:before, .icon-shield-dollar:before { + content: "\ebd4"; +} + +.lni-shift-left:before, .icon-shift-left:before { + content: "\ebd5"; +} + +.lni-shift-right:before, .icon-shift-right:before { + content: "\ebd6"; +} + +.lni-ship-1:before, .icon-ship-1:before { + content: "\ebd7"; +} + +.lni-shirt-1:before, .icon-shirt-1:before { + content: "\ebd8"; +} + +.lni-shopify:before, .icon-shopify:before { + content: "\ebd9"; +} + +.lni-shovel:before, .icon-shovel:before { + content: "\ebda"; +} + +.lni-shuffle:before, .icon-shuffle:before { + content: "\ebdb"; +} + +.lni-sign-post-left:before, .icon-sign-post-left:before { + content: "\ebdc"; +} + +.lni-signal-app:before, .icon-signal-app:before { + content: "\ebdd"; +} + +.lni-signs-post-2:before, .icon-signs-post-2:before { + content: "\ebde"; +} + +.lni-sketch:before, .icon-sketch:before { + content: "\ebdf"; +} + +.lni-skype:before, .icon-skype:before { + content: "\ebe0"; +} + +.lni-slack:before, .icon-slack:before { + content: "\ebe1"; +} + +.lni-slice-2:before, .icon-slice-2:before { + content: "\ebe2"; +} + +.lni-sliders-horizontal-square-2:before, .icon-sliders-horizontal-square-2:before { + content: "\ebe3"; +} + +.lni-slideshare:before, .icon-slideshare:before { + content: "\ebe4"; +} + +.lni-snapchat:before, .icon-snapchat:before { + content: "\ebe5"; +} + +.lni-sort-alphabetical:before, .icon-sort-alphabetical:before { + content: "\ebe6"; +} + +.lni-sort-high-to-low:before, .icon-sort-high-to-low:before { + content: "\ebe7"; +} + +.lni-soundcloud:before, .icon-soundcloud:before { + content: "\ebe8"; +} + +.lni-spacex:before, .icon-spacex:before { + content: "\ebe9"; +} + +.lni-spellcheck:before, .icon-spellcheck:before { + content: "\ebea"; +} + +.lni-spinner-2-sacle:before, .icon-spinner-2-sacle:before { + content: "\ebeb"; +} + +.lni-spinner-3:before, .icon-spinner-3:before { + content: "\ebec"; +} + +.lni-sports:before, .icon-sports:before { + content: "\ebed"; +} + +.lni-spotify:before, .icon-spotify:before { + content: "\ebee"; +} + +.lni-spotify-alt:before, .icon-spotify-alt:before { + content: "\ebef"; +} + +.lni-squarespace:before, .icon-squarespace:before { + content: "\ebf0"; +} + +.lni-stackoverflow:before, .icon-stackoverflow:before { + content: "\ebf1"; +} + +.lni-stamp:before, .icon-stamp:before { + content: "\ebf2"; +} + +.lni-star-fat:before, .icon-star-fat:before { + content: "\ebf3"; +} + +.lni-star-fat-half-2:before, .icon-star-fat-half-2:before { + content: "\ebf4"; +} + +.lni-star-sharp-disabled:before, .icon-star-sharp-disabled:before { + content: "\ebf5"; +} + +.lni-statista:before, .icon-statista:before { + content: "\ebf6"; +} + +.lni-steam:before, .icon-steam:before { + content: "\ebf7"; +} + +.lni-stethoscope-1:before, .icon-stethoscope-1:before { + content: "\ebf8"; +} + +.lni-stopwatch:before, .icon-stopwatch:before { + content: "\ebf9"; +} + +.lni-storage-hdd-2:before, .icon-storage-hdd-2:before { + content: "\ebfa"; +} + +.lni-strikethrough-1:before, .icon-strikethrough-1:before { + content: "\ebfb"; +} + +.lni-stripe:before, .icon-stripe:before { + content: "\ebfc"; +} + +.lni-stumbleupon:before, .icon-stumbleupon:before { + content: "\ebfd"; +} + +.lni-sun-1:before, .icon-sun-1:before { + content: "\ebfe"; +} + +.lni-supabase:before, .icon-supabase:before { + content: "\ebff"; +} + +.lni-surfboard-2:before, .icon-surfboard-2:before { + content: "\ec00"; +} + +.lni-svelte:before, .icon-svelte:before { + content: "\ec01"; +} + +.lni-swift:before, .icon-swift:before { + content: "\ec02"; +} + +.lni-tab:before, .icon-tab:before { + content: "\ec03"; +} + +.lni-tailwindcss:before, .icon-tailwindcss:before { + content: "\ec04"; +} + +.lni-target-user:before, .icon-target-user:before { + content: "\ec05"; +} + +.lni-telegram:before, .icon-telegram:before { + content: "\ec06"; +} + +.lni-telephone-1:before, .icon-telephone-1:before { + content: "\ec07"; +} + +.lni-telephone-3:before, .icon-telephone-3:before { + content: "\ec08"; +} + +.lni-tesla:before, .icon-tesla:before { + content: "\ec09"; +} + +.lni-text-format:before, .icon-text-format:before { + content: "\ec0a"; +} + +.lni-text-format-remove:before, .icon-text-format-remove:before { + content: "\ec0b"; +} + +.lni-text-paragraph:before, .icon-text-paragraph:before { + content: "\ec0c"; +} + +.lni-thumbs-down-3:before, .icon-thumbs-down-3:before { + content: "\ec0d"; +} + +.lni-thumbs-up-3:before, .icon-thumbs-up-3:before { + content: "\ec0e"; +} + +.lni-ticket-1:before, .icon-ticket-1:before { + content: "\ec0f"; +} + +.lni-tickets-3:before, .icon-tickets-3:before { + content: "\ec10"; +} + +.lni-tiktok:before, .icon-tiktok:before { + content: "\ec11"; +} + +.lni-tiktok-alt:before, .icon-tiktok-alt:before { + content: "\ec12"; +} + +.lni-tower-broadcast-1:before, .icon-tower-broadcast-1:before { + content: "\ec13"; +} + +.lni-toyota:before, .icon-toyota:before { + content: "\ec14"; +} + +.lni-train-1:before, .icon-train-1:before { + content: "\ec15"; +} + +.lni-train-3:before, .icon-train-3:before { + content: "\ec16"; +} + +.lni-trash-3:before, .icon-trash-3:before { + content: "\ec17"; +} + +.lni-tree-2:before, .icon-tree-2:before { + content: "\ec18"; +} + +.lni-trees-3:before, .icon-trees-3:before { + content: "\ec19"; +} + +.lni-trello:before, .icon-trello:before { + content: "\ec1a"; +} + +.lni-trend-down-1:before, .icon-trend-down-1:before { + content: "\ec1b"; +} + +.lni-trend-up-1:before, .icon-trend-up-1:before { + content: "\ec1c"; +} + +.lni-trophy-1:before, .icon-trophy-1:before { + content: "\ec1d"; +} + +.lni-trowel-1:before, .icon-trowel-1:before { + content: "\ec1e"; +} + +.lni-truck-delivery-1:before, .icon-truck-delivery-1:before { + content: "\ec1f"; +} + +.lni-tumblr:before, .icon-tumblr:before { + content: "\ec20"; +} + +.lni-turborepo:before, .icon-turborepo:before { + content: "\ec21"; +} + +.lni-twitch:before, .icon-twitch:before { + content: "\ec22"; +} + +.lni-twitter-old:before, .icon-twitter-old:before { + content: "\ec23"; +} + +.lni-typescript:before, .icon-typescript:before { + content: "\ec24"; +} + +.lni-uber:before, .icon-uber:before { + content: "\ec25"; +} + +.lni-uber-symbol:before, .icon-uber-symbol:before { + content: "\ec26"; +} + +.lni-ubuntu:before, .icon-ubuntu:before { + content: "\ec27"; +} + +.lni-underline:before, .icon-underline:before { + content: "\ec28"; +} + +.lni-unlink-2-angular-eft:before, .icon-unlink-2-angular-eft:before { + content: "\ec29"; +} + +.lni-unlocked-2:before, .icon-unlocked-2:before { + content: "\ec2a"; +} + +.lni-unsplash:before, .icon-unsplash:before { + content: "\ec2b"; +} + +.lni-upload-1:before, .icon-upload-1:before { + content: "\ec2c"; +} + +.lni-upload-circle-1:before, .icon-upload-circle-1:before { + content: "\ec2d"; +} + +.lni-user-4:before, .icon-user-4:before { + content: "\ec2e"; +} + +.lni-user-multiple-4:before, .icon-user-multiple-4:before { + content: "\ec2f"; +} + +.lni-vector-nodes-6:before, .icon-vector-nodes-6:before { + content: "\ec30"; +} + +.lni-vector-nodes-7:before, .icon-vector-nodes-7:before { + content: "\ec31"; +} + +.lni-vercel:before, .icon-vercel:before { + content: "\ec32"; +} + +.lni-vimeo:before, .icon-vimeo:before { + content: "\ec33"; +} + +.lni-visa:before, .icon-visa:before { + content: "\ec34"; +} + +.lni-vite:before, .icon-vite:before { + content: "\ec35"; +} + +.lni-vk:before, .icon-vk:before { + content: "\ec36"; +} + +.lni-vmware:before, .icon-vmware:before { + content: "\ec37"; +} + +.lni-volkswagen:before, .icon-volkswagen:before { + content: "\ec38"; +} + +.lni-volume-1:before, .icon-volume-1:before { + content: "\ec39"; +} + +.lni-volume-high:before, .icon-volume-high:before { + content: "\ec3a"; +} + +.lni-volume-low:before, .icon-volume-low:before { + content: "\ec3b"; +} + +.lni-volume-mute:before, .icon-volume-mute:before { + content: "\ec3c"; +} + +.lni-volume-off:before, .icon-volume-off:before { + content: "\ec3d"; +} + +.lni-vs-code:before, .icon-vs-code:before { + content: "\ec3e"; +} + +.lni-vuejs:before, .icon-vuejs:before { + content: "\ec3f"; +} + +.lni-wallet-1:before, .icon-wallet-1:before { + content: "\ec40"; +} + +.lni-watch-beat-1:before, .icon-watch-beat-1:before { + content: "\ec41"; +} + +.lni-water-drop-1:before, .icon-water-drop-1:before { + content: "\ec42"; +} + +.lni-webflow:before, .icon-webflow:before { + content: "\ec43"; +} + +.lni-webhooks:before, .icon-webhooks:before { + content: "\ec44"; +} + +.lni-wechat:before, .icon-wechat:before { + content: "\ec45"; +} + +.lni-weight-machine-1:before, .icon-weight-machine-1:before { + content: "\ec46"; +} + +.lni-whatsapp:before, .icon-whatsapp:before { + content: "\ec47"; +} + +.lni-wheelbarrow-empty:before, .icon-wheelbarrow-empty:before { + content: "\ec48"; +} + +.lni-wheelchair-1:before, .icon-wheelchair-1:before { + content: "\ec49"; +} + +.lni-windows:before, .icon-windows:before { + content: "\ec4a"; +} + +.lni-wise:before, .icon-wise:before { + content: "\ec4b"; +} + +.lni-wordpress:before, .icon-wordpress:before { + content: "\ec4c"; +} + +.lni-www:before, .icon-www:before { + content: "\ec4d"; +} + +.lni-www-cursor:before, .icon-www-cursor:before { + content: "\ec4e"; +} + +.lni-x:before, .icon-x:before { + content: "\ec4f"; +} + +.lni-xampp:before, .icon-xampp:before { + content: "\ec50"; +} + +.lni-xbox:before, .icon-xbox:before { + content: "\ec51"; +} + +.lni-xmark:before, .icon-xmark:before { + content: "\ec52"; +} + +.lni-xmark-circle:before, .icon-xmark-circle:before { + content: "\ec53"; +} + +.lni-xrp:before, .icon-xrp:before { + content: "\ec54"; +} + +.lni-yahoo:before, .icon-yahoo:before { + content: "\ec55"; +} + +.lni-yarn:before, .icon-yarn:before { + content: "\ec56"; +} + +.lni-ycombinator:before, .icon-ycombinator:before { + content: "\ec57"; +} + +.lni-yen:before, .icon-yen:before { + content: "\ec58"; +} + +.lni-youtube:before, .icon-youtube:before { + content: "\ec59"; +} + +.lni-youtube-kids:before, .icon-youtube-kids:before { + content: "\ec5a"; +} + +.lni-youtube-music:before, .icon-youtube-music:before { + content: "\ec5b"; +} + +.lni-zapier:before, .icon-zapier:before { + content: "\ec5c"; +} + +.lni-zero-size:before, .icon-zero-size:before { + content: "\ec5d"; +} + +.lni-zoom:before, .icon-zoom:before { + content: "\ec5e"; +} diff --git a/styles/navigation/index.css b/styles/navigation/index.css new file mode 100644 index 0000000..bdc5f9e --- /dev/null +++ b/styles/navigation/index.css @@ -0,0 +1,19 @@ +/** +* Navigation component +* A composite component consisting of +* following components: +* - nav-main-mega.php +* - menu-items +* - index.php +* - nav-functional.php +* +* Choose one or the other for the main navigation, based on theme needs. +* +* @import 'nav-main-default'; +* @import 'nav-main-mega'; +*/ + +@import "./nav-functional.css"; +@import "./nav-aux.css"; +@import "./nav-main-default.css"; +@import "./nav-footer.css"; diff --git a/styles/navigation/nav-aux.css b/styles/navigation/nav-aux.css new file mode 100644 index 0000000..afeb7f3 --- /dev/null +++ b/styles/navigation/nav-aux.css @@ -0,0 +1,36 @@ +/** + * VDI Navs & Menu - Auxiliary Nav Styles + * + * Please review documentation upon first use, and, as-needed: + * https://docs.vincentdevelopment.ca/docs/starter-v3-enhancements/navigation/ + */ + +.nav-aux { + @apply relative flex flex-wrap gap-2 items-center justify-end p-0 m-0; + + .menu-vdi { + @apply relative flex flex-wrap gap-4 items-center gap-y-2 gap-x-4 p-0 m-0; + + .menu-vdi__toggle { + /* styles */ + @apply flex items-center gap-2; + /* interaction */ + @apply focus-visible:underline hover:underline; + } + } +} + +/* desktop overrides */ +@media screen and (min-width: 62.5rem) { + .nav-aux { + @apply gap-4; + + .menu-vdi { + @apply justify-end; + + .menu-vdi__toggle { + @apply flex items-center gap-2; + } + } + } +} diff --git a/styles/navigation/nav-footer.css b/styles/navigation/nav-footer.css new file mode 100644 index 0000000..0f48b9a --- /dev/null +++ b/styles/navigation/nav-footer.css @@ -0,0 +1,102 @@ +/** + * VDI Navs & Menu - Footer Navigation + * + * Please review documentation upon first use, and, as-needed: + * ___Link_Here___ + */ + +/* desktop */ +@media screen and (min-width: 62.5rem) { + .nav-footer .menu-vdi { + @apply flex flex-col items-start justify-start p-0 m-0; + + >li { + >a { + /* text */ + @apply font-normal leading-snug text-secondary text-18px; + /* spacing & display */ + @apply mx-0 p-0 no-underline; + } + } + } +} + +/* mobile */ +@media screen and (max-width: 62.5rem) { + .nav-footer { + .nav-footer__toggle { + /* display */ + @apply text-primary p-3; + } + + .menu-vdi { + @apply flex-col w-[95%] py-6; + + .menu-vdi__submenu { + @apply py-2 px-7 flex-col; + } + + .menu-vdi__item { + a, + button { + /* text */ + @apply font-normal leading-snug text-lg; + /* spacing & display */ + @apply block w-full p-4; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + } + + a { + @apply block w-full; + } + + button { + @apply flex w-full justify-between; + } + } + } + } +} + +@media screen and (min-width: 62.5rem) { + .nav-footer .menu-vdi { + .menu-vdi__toggle { + @apply font-semibold underline text-20px mt-3 pb-1; + + >svg { + @apply hidden; + } + } + + .menu-vdi__item--parent { + @apply static; + } + + .menu-vdi__submenu { + @apply static block m-0 mb-3 p-0 pl-2 shadow-none; + + >li { + @apply w-full m-0 p-0; + } + + .menu-vdi__item { + /* text */ + @apply font-normal leading-snug text-18px; + /* spacing & display */ + @apply block w-full; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + + a { + @apply block w-full; + } + } + + a.menu-vdi__item, + .menu-vdi__item a { + @apply p-0 text-secondary; + } + } + } +} diff --git a/styles/navigation/nav-functional.css b/styles/navigation/nav-functional.css new file mode 100644 index 0000000..9a4591b --- /dev/null +++ b/styles/navigation/nav-functional.css @@ -0,0 +1,100 @@ +/** + * VDI Navs & Menu - Functional Styles + * + * Please review documentation upon first use, and, as-needed: + * https://docs.vincentdevelopment.ca/docs/starter-v3-enhancements/navigation/ + */ + +/* all sizes */ +.menu-vdi { + @apply hidden; + + >li { + @apply list-none; + >a { + @apply focus-visible:underline hover:underline; + } + + a[aria-current="true"] { + @apply underline; + } + + .menu-vdi__toggle { + &[aria-expanded="true"] { + svg { + @apply rotate-180; + } + + +.menu-vdi__submenu { + @apply flex; + } + } + } + } + + .menu-vdi__submenu { + @apply hidden container z-10; + + /* should also put current page here */ + .menu-vdi__item--grandchild a { + @apply no-underline focus-visible:underline hover:underline; + } + } +} + +/* Mobile */ +@media screen and (max-width: 62.5rem) { + #app:has(.nav-main__toggle[aria-expanded="true"]) { height: calc(100vh - var(--hgtHeader)); } + + .nav-main__toggle { + .nav-toggle-hamburger { display: inline-block !important; } + + .nav-toggle-x { display: none !important; } + + &[aria-expanded="true"] { + .nav-toggle-hamburger { display: none !important; } + + .nav-toggle-x { display: inline-block !important; } + } + } + .nav-main { + .nav-main__toggle[aria-expanded="true"] { + +ul { + @apply absolute flex; + } + } + + .menu-vdi { + @apply absolute right-0 z-10; + + .menu-vdi__toggle { + @apply flex items-center gap-2; + } + } + } + + .nav-aux { + .menu-vdi__submenu { + @apply absolute list-none; + } + } +} + +/* Desktop */ +@media screen and (min-width: 62.5rem) { + .nav-main__toggle { + @apply hidden; + } + + .menu-vdi { + @apply flex list-none; + + .menu-vdi__toggle { + @apply flex items-center gap-2; + } + + .menu-vdi__submenu { + @apply absolute list-none; + } + } +} diff --git a/styles/navigation/nav-main-default.css b/styles/navigation/nav-main-default.css new file mode 100644 index 0000000..9aa2c77 --- /dev/null +++ b/styles/navigation/nav-main-default.css @@ -0,0 +1,102 @@ +/** + * VDI Navs & Menu - Main Navigation + Default Dropdown Menu Styles + * + * Please review documentation upon first use, and, as-needed: + * TODO: Add documenation link here + */ + +/* desktop */ +@media screen and (min-width: 62.5rem) { + .nav-main .menu-vdi { + @apply flex items-center justify-end p-0 m-0; + + >li { + >a, + >.menu-vdi__toggle { + /* text*/ + @apply font-bold text-20px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply mx-4 p-0 no-underline; + } + } + } +} + +/* mobile */ +@media screen and (max-width: 62.5rem) { + .nav-main { + .nav-main__toggle { + /* display */ + @apply text-white p-3; + } + + .menu-vdi { + @apply flex-col bg-white w-[95%] right-0 z-10 py-6; + top: var(--hgtHeader); + min-height: calc(100vh - var(--hgtHeader)); + + .menu-vdi__submenu { + @apply py-2 px-7 flex-col; + } + + .menu-vdi__item { + a, + button { + /* text */ + @apply font-bold text-20px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply block w-full p-4; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + } + + a { + @apply block w-full; + } + + button { + @apply flex w-full justify-between; + } + } + } + } +} + +@media screen and (min-width: 62.5rem) { + .menu-vdi { + .menu-vdi__toggle { + @apply flex items-center gap-2; + } + + .menu-vdi__item--parent { + @apply relative; + } + + .menu-vdi__submenu { + @apply bg-white shadow-lg left-4 w-64 flex-col; + top: calc(100% + 1rem); + + >li { + @apply w-full; + } + + .menu-vdi__item { + /* text */ + @apply font-bold text-18px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply block w-full; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + + a { + @apply block w-full; + } + } + + a.menu-vdi__item, + .menu-vdi__item a { + @apply p-4; + } + } + } +} diff --git a/styles/navigation/nav-main-mega.css b/styles/navigation/nav-main-mega.css new file mode 100644 index 0000000..f6342d2 --- /dev/null +++ b/styles/navigation/nav-main-mega.css @@ -0,0 +1,129 @@ +/** + * VDI Navs & Menu - Main Navigation + Mega Menu Styles + * + * Please review documentation upon first use, and, as-needed: + * https://docs.vincentdevelopment.ca/docs/starter-v3-enhancements/navigation/ + */ + +/* all sizes */ +.nav-main .menu-vdi { + .menu-vdi__toggle { + @apply flex items-center gap-2; + } +} + +/* mobile */ +@media screen and (max-width: 62.5rem) { + .nav-main { + .nav-main__toggle { + /* display */ + @apply text-white p-3; + } + + .menu-vdi { + @apply flex-col bg-white w-[95%] right-0 z-10 py-6; + top: var(--hgtHeader); + min-height: calc(100vh - var(--hgtHeader)); + + .menu-vdi__submenu { + @apply py-2 px-7 flex-col; + } + + .menu-vdi__item { + a, + button { + /* text */ + @apply font-bold text-20px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply block w-full p-4; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + } + + a { + @apply block w-full; + } + + button { + @apply flex w-full justify-between; + } + } + } + } +} + +/* desktop */ +@media screen and (min-width: 62.5rem) { + .nav-main .menu-vdi { + @apply flex items-center justify-end p-0 m-0; + + >li { + >a, + >.menu-vdi__toggle { + /* text */ + @apply font-bold text-20px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply w-max mx-4 p-0 no-underline; + } + } + + .menu-vdi__toggle { + @apply flex items-center gap-2; + } + + .menu-vdi__item--parent { + @apply relative; + + /* Mega Menu */ + &:has(.menu-vdi__item--grandchild) { + @apply static; + } + } + + .menu-vdi__submenu { + @apply bg-white shadow-lg left-4 w-64 flex-col; + + top: calc(100% + 1rem); + + >li { + @apply w-full; + } + + .menu-vdi__item { + /* text */ + @apply font-bold text-18px text-black hover:text-light no-underline leading-snug; + /* spacing & display */ + @apply block w-full; + /* interaction */ + @apply focus-visible:bg-secondary-200 hover:bg-secondary-200; + + a { + @apply block w-max; + } + } + + a.menu-vdi__item, + .menu-vdi__item a { + @apply p-4; + } + + /* Mega Menu */ + &:has(.menu-vdi__item--grandchild) { + @apply flex-row gap-x-8 right-0 ml-auto mr-0 p-4 w-max; + + span { + @apply font-bold text-xl underline w-max; + } + + a.menu-vdi__item, + .menu-vdi__item a { + @apply p-0; + } + + .menu-vdi__megaCol { + @apply px-0 w-max; + } + } + } + } +} diff --git a/styles/theme.css b/styles/theme.css new file mode 100644 index 0000000..903a707 --- /dev/null +++ b/styles/theme.css @@ -0,0 +1,22 @@ +/* Tailwind setup */ + +@import "tailwindcss"; + +/* Base styles */ +@import "./base/index.css"; +@import "./navigation/index.css"; + +/* Lineicons icon font */ +@import "./fonts/lineicons.css"; + +/* Import *-break-out utilities (replicating the non-functional "tailwind-container-break-out" plugin) */ +@import "./base/break-out.css"; + +/* Components */ +@import "./components/index.css"; + +/* Blocks */ +@import "./blocks/index.css"; + +/* Import Tailwind typography plugin */ +@plugin "@tailwindcss/typography"; diff --git a/tests/site-a11y.spec.js b/tests/site-a11y.spec.js new file mode 100644 index 0000000..cd13663 --- /dev/null +++ b/tests/site-a11y.spec.js @@ -0,0 +1,212 @@ +const { test, expect } = require('@playwright/test'); +const AxeBuilder = require('@axe-core/playwright').default; + +test.use({ + viewport: { width: 1920, height: 1080 }, +}); + +test.describe('site-test', () => { + test('Homepage Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/'); + + await page.screenshot({ path: 'test-results/homepage.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Sample Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/sample-page/'); + + await page.screenshot({ path: 'test-results/sample-page.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Page With Sidebar Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/page-with-sidebar/'); + + await page.screenshot({ path: 'test-results/page-with-sidebar.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Content Filter Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/content-filter/'); + + await page.screenshot({ path: 'test-results/content-filter.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Accordion Block Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/blocks/accordion-block/'); + + await page.screenshot({ path: 'test-results/accordion-block.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Button Block Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/blocks/buttons-block/'); + + await page.screenshot({ path: 'test-results/buttons-block.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Grid Block Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/blocks/grid-block/'); + + await page.screenshot({ path: 'test-results/grid-block.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Media Text Block Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/blocks/media-text-block/'); + + await page.screenshot({ path: 'test-results/media-text-block.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Section Block Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/blocks/section-block/'); + + await page.screenshot({ path: 'test-results/section-block.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Blog Index Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/news/'); + + await page.screenshot({ path: 'test-results/blog-index.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('Single Blog Post Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/vel-consectetur-vero-laudantium/'); + + await page.screenshot({ path: 'test-results/blog-post.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); + + test('404 Page Test', async ({ page }, testInfo) => { + await page.goto('http://basic-wp.test/yaya/'); + + await page.screenshot({ path: 'test-results/404.png', fullPage: true }); + + const accessibilityScanResults = await new AxeBuilder({ page }) + .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa']) + .analyze(); + + await testInfo.attach('accessibility-scan-results', { + body: JSON.stringify(accessibilityScanResults, null, 2), + contentType: 'application/json' + }); + + expect(accessibilityScanResults.violations).toEqual([]); + }); +}); diff --git a/views/blocks/accordion/accordion.css b/views/blocks/accordion/accordion.css new file mode 100644 index 0000000..e572334 --- /dev/null +++ b/views/blocks/accordion/accordion.css @@ -0,0 +1,68 @@ +/* Accordion block styles */ + +.accordion { + border-radius: 0.25rem; + border: 1px solid var(--color-dark); + width: 100%; + + details.accBody { + border-bottom: 1px solid var(--color-dark); + max-height: 3.7rem; + overflow: hidden; + padding: 1rem; + transition: 0.75s max-height ease-in-out; + transition-behavior: allow-discrete; + + &:last-of-type { border: none; } + + summary.accHeader { + cursor: pointer; + list-style-type: none; + padding-right: 2rem; + position: relative; + + &::-webkit-details-marker { display: none; } + + h2 { + color: var(--color-dark); + cursor: pointer; + font-size: 1.25rem; + font-weight: 500; + margin: 0; + } + + svg.marker { + color: var(--color-dark); + fill: var(--color-dark); + height: 1rem; + position: absolute; + right: 0; + top: 0.25rem; + width: 1.25rem; + } + } + + div.accContent { + margin-top: 1rem; + } + + &[open] { + background-color: var(--color-dark); + border-color: var(--color-light); + color: var(--color-light); + max-height: 20rem; + transition: 0.75s max-height ease-in-out; + transition-behavior: allow-discrete; + + summary.accHeader { + h2 { color: var(--color-light); } + + svg.marker { + color: var(--color-light); + fill: var(--color-light); + transform: rotate(45deg); + } + } + } + } +} diff --git a/views/blocks/accordion/accordion.php b/views/blocks/accordion/accordion.php new file mode 100644 index 0000000..3b168a6 --- /dev/null +++ b/views/blocks/accordion/accordion.php @@ -0,0 +1,51 @@ + $classes ) + ); + } else { + $wrapper = 'class="' . $classes . '"'; + } + ?> + +
> + $item ) : ?> + +
class="accBody"> + +

+ + + Open icon + icon that represents the state of the summary + + +
+ +
+ +
+
+ +
+ diff --git a/views/blocks/accordion/block.json b/views/blocks/accordion/block.json new file mode 100644 index 0000000..40f2eab --- /dev/null +++ b/views/blocks/accordion/block.json @@ -0,0 +1,27 @@ +{ + "name": "acf/accordion", + "title": "Accordion", + "description": "Accordion block built with details and summary elements.", + "style": [ + "file:./accordion.css" + ], + "category": "vdi-block", + "icon": "block-default", + "keywords": [ + "accordion", + "faq" + ], + "acf": { + "mode": "preview", + "renderTemplate": "accordion.php" + }, + "supports": { + "align": true, + "anchor": false, + "color": true, + "html": true, + "jsx": true, + "mode": true, + "multiple": true + } +} diff --git a/views/blocks/boilerplate/block.json b/views/blocks/boilerplate/block.json new file mode 100644 index 0000000..28bc244 --- /dev/null +++ b/views/blocks/boilerplate/block.json @@ -0,0 +1,26 @@ +{ + "name": "acf/boilerplate", + "title": "Block Boilerplate", + "description": "Boilerplate code to create ACF blocks.", + "style": [ + "file:./boiilerplate.css" + ], + "category": "vdi-block", + "icon": "block-default", + "keywords": [ + "boilerplate" + ], + "acf": { + "mode": "preview", + "renderTemplate": "boilerplate.php" + }, + "supports": { + "align": false, + "anchor": false, + "color": false, + "html": false, + "jsx": false, + "mode": false, + "multiple": false + } +} diff --git a/views/blocks/boilerplate/boilerplate.css b/views/blocks/boilerplate/boilerplate.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/boilerplate/boilerplate.php b/views/blocks/boilerplate/boilerplate.php new file mode 100644 index 0000000..675df7e --- /dev/null +++ b/views/blocks/boilerplate/boilerplate.php @@ -0,0 +1,27 @@ + $classes, + ) + ); +} else { + $wrapper = 'class="' . $classes . '"'; +} +?> + +
> + +
diff --git a/views/blocks/button/block.json b/views/blocks/button/block.json new file mode 100644 index 0000000..39c08ad --- /dev/null +++ b/views/blocks/button/block.json @@ -0,0 +1,24 @@ +{ + "name": "acf/button", + "title": "Button (VDI)", + "description": "A button.", + "category": "vdi-block", + "icon": "button", + "keywords": [ + "button" + ], + "acf": { + "mode": "preview", + "renderTemplate": "button.php" + }, + "supports": { + "align": false, + "anchor": false, + "color": false, + "html": false, + "jsx": false, + "mode": true, + "multiple": true + }, + "parent": [ "acf/buttons" ] +} diff --git a/views/blocks/button/button.php b/views/blocks/button/button.php new file mode 100644 index 0000000..0b36a1b --- /dev/null +++ b/views/blocks/button/button.php @@ -0,0 +1,51 @@ + $classes ) + ); + + $wrapper = str_replace( 'class="', '', $wrapper ); + $wrapper = str_replace( '"', '', $wrapper ); +} else { + $wrapper = $classes; +} +?> + + diff --git a/views/blocks/buttons/block.json b/views/blocks/buttons/block.json new file mode 100644 index 0000000..caaca00 --- /dev/null +++ b/views/blocks/buttons/block.json @@ -0,0 +1,24 @@ +{ + "name": "acf/buttons", + "title": "Buttons (VDI)", + "description": "A button or group of buttons.", + "allowedBlocks": [ "acf/button" ], + "category": "vdi-block", + "icon": "button", + "keywords": [ + "buttons" + ], + "acf": { + "mode": "preview", + "renderTemplate": "buttons.php" + }, + "supports": { + "align": false, + "anchor": true, + "color": false, + "html": true, + "jsx": true, + "mode": false, + "multiple": true + } +} diff --git a/views/blocks/buttons/buttons.php b/views/blocks/buttons/buttons.php new file mode 100644 index 0000000..7c6cd0c --- /dev/null +++ b/views/blocks/buttons/buttons.php @@ -0,0 +1,27 @@ + $classes ) + ); +} else { + $wrapper = 'class="' . $classes . '"'; +} +?> + +
> + +
diff --git a/views/blocks/grid-cell/block.json b/views/blocks/grid-cell/block.json new file mode 100644 index 0000000..5da0640 --- /dev/null +++ b/views/blocks/grid-cell/block.json @@ -0,0 +1,27 @@ +{ + "name": "acf/grid-cell", + "title": "Grid Cell (VDI)", + "description": "Custom grid cell block.", + "style": [ + "file:./grid-cell.css" + ], + "category": "vdi-block", + "icon": "grid-view", + "keywords": [ + "grid" + ], + "acf": { + "mode": "preview", + "renderTemplate": "grid-cell.php" + }, + "supports": { + "align": false, + "anchor": false, + "color": true, + "html": false, + "jsx": true, + "mode": true, + "multiple": true + }, + "parent": [ "acf/grid" ] +} diff --git a/views/blocks/grid-cell/grid-cell.css b/views/blocks/grid-cell/grid-cell.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/grid-cell/grid-cell.php b/views/blocks/grid-cell/grid-cell.php new file mode 100644 index 0000000..6050b47 --- /dev/null +++ b/views/blocks/grid-cell/grid-cell.php @@ -0,0 +1,48 @@ + trim( $className ) ) + ); +} else { + $wrapper = ''; +} +?> + +
> + +
diff --git a/views/blocks/grid/block.json b/views/blocks/grid/block.json new file mode 100644 index 0000000..48a30f6 --- /dev/null +++ b/views/blocks/grid/block.json @@ -0,0 +1,27 @@ +{ + "name": "acf/grid", + "title": "Grid Block (VDI)", + "description": "Custom grid block.", + "style": [ + "file:./grid.css" + ], + "allowedBlocks": [ "acf/grid-cell" ], + "category": "vdi-block", + "icon": "grid-view", + "keywords": [ + "grid" + ], + "acf": { + "mode": "preview", + "renderTemplate": "grid.php" + }, + "supports": { + "align": false, + "anchor": true, + "color": false, + "html": false, + "jsx": true, + "mode": true, + "multiple": true + } +} diff --git a/views/blocks/grid/grid.css b/views/blocks/grid/grid.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/grid/grid.php b/views/blocks/grid/grid.php new file mode 100644 index 0000000..4c0cef5 --- /dev/null +++ b/views/blocks/grid/grid.php @@ -0,0 +1,47 @@ + + +
+ +
diff --git a/views/blocks/homepage-hero/block.json b/views/blocks/homepage-hero/block.json new file mode 100644 index 0000000..68947ce --- /dev/null +++ b/views/blocks/homepage-hero/block.json @@ -0,0 +1,28 @@ +{ + "name": "acf/homepage-hero", + "title": "Homepage Hero", + "description": "Hero block for home page.", + "style": [ + "file:./homepage-hero.css" + ], + "category": "vdi-block", + "icon": "block-default", + "keywords": [ + "homepage-hero", + "hero", + "home" + ], + "acf": { + "mode": "preview", + "renderTemplate": "homepage-hero.php" + }, + "supports": { + "align": true, + "anchor": true, + "color": false, + "html": true, + "jsx": true, + "mode": true, + "multiple": false + } +} diff --git a/views/blocks/homepage-hero/homepage-hero.css b/views/blocks/homepage-hero/homepage-hero.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/homepage-hero/homepage-hero.php b/views/blocks/homepage-hero/homepage-hero.php new file mode 100644 index 0000000..e7e844b --- /dev/null +++ b/views/blocks/homepage-hero/homepage-hero.php @@ -0,0 +1,75 @@ + $classes, + ) + ); +} else { + $wrapper = 'class="' . $classes . '"'; +} +?> + +
> +
+
+ +

+ +

+ + + +
+ +
+ + + +
+ $cta ) : ?> + + + color="primary" + + color="primary" variant="outline" + + width="small" + > + +
+ +
+
+
diff --git a/views/blocks/media-text-innerblocks/block.json b/views/blocks/media-text-innerblocks/block.json new file mode 100644 index 0000000..9ad8661 --- /dev/null +++ b/views/blocks/media-text-innerblocks/block.json @@ -0,0 +1,31 @@ +{ + "name": "acf/media-text-innerblocks", + "title": "Media with Text Block - InnerBlocks Variant", + "description": "2 column content with image and optional calls-to-action", + "style": [ + "file:./media-text-innerblocks.css" + ], + "category": "vdi-block", + "icon": "screenoptions", + "keywords": [ + "media", + "media-text", + "image", + "video", + "text", + "columns" + ], + "acf": { + "mode": "preview", + "renderTemplate": "media-text-innerblocks.php" + }, + "supports": { + "align": true, + "anchor": true, + "color": true, + "html": true, + "jsx": true, + "mode": true, + "multiple": true + } +} diff --git a/views/blocks/media-text-innerblocks/media-text-innerblocks.css b/views/blocks/media-text-innerblocks/media-text-innerblocks.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/media-text-innerblocks/media-text-innerblocks.php b/views/blocks/media-text-innerblocks/media-text-innerblocks.php new file mode 100644 index 0000000..f6f516a --- /dev/null +++ b/views/blocks/media-text-innerblocks/media-text-innerblocks.php @@ -0,0 +1,57 @@ + '', + 'alt' => '', +); + +// Set classes and styles +$style = "background-color: $bgColor;"; +$clsMedia = $mediaLeft ? 'order-first' : 'order-last'; +$clsContent = $mediaLeft ? 'order-last pr-8' : 'order-first pl-8'; +$classes = 'media-cols grid grid-cols-1 lg:grid-cols-2 gap-8 items-center mb-8 p-0'; + +if ( $isDark ) { + $classes .= ' dark text-light'; +} + +// Set wrapper attributes +if ( ! $is_preview ) { + $wrapper = get_block_wrapper_attributes( array( 'class' => $classes ) ); +} else { + $wrapper = 'class="' . $classes . '"'; +} + +// if the video block contains an iframe, add the role="presentation" attribute +if ( $vidBlock && strpos( $vidBlock, ' + +
style=""> +
+ + + + <?php echo esc_attr( $imgBlock['alt'] ); ?> + +
+ +
+ +
+
diff --git a/views/blocks/media-text/block.json b/views/blocks/media-text/block.json new file mode 100644 index 0000000..6cf4eaa --- /dev/null +++ b/views/blocks/media-text/block.json @@ -0,0 +1,31 @@ +{ + "name": "acf/media-text", + "title": "Media With Text Block", + "description": "2 column content with image and optional calls-to-action", + "style": [ + "file:./media-text.css" + ], + "category": "vdi-block", + "icon": "screenoptions", + "keywords": [ + "media", + "media-text", + "image", + "video", + "text", + "columns" + ], + "acf": { + "mode": "preview", + "renderTemplate": "media-text.php" + }, + "supports": { + "align": true, + "anchor": true, + "color": true, + "html": true, + "jsx": true, + "mode": true, + "multiple": true + } +} diff --git a/views/blocks/media-text/media-text.css b/views/blocks/media-text/media-text.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/media-text/media-text.php b/views/blocks/media-text/media-text.php new file mode 100644 index 0000000..bc7ab50 --- /dev/null +++ b/views/blocks/media-text/media-text.php @@ -0,0 +1,104 @@ + '', + 'alt' => '', +); +$heading = get_field( 'heading' ) ? get_field( 'heading' ) : ''; +$subHead = get_field( 'subheading' ) ? get_field( 'subheading' ) : ''; +$content = get_field( 'content' ) ? get_field( 'content' ) : ''; +$ctas = get_field( 'calls_to_action' ) ? get_field( 'calls_to_action' ) : array(); + +// Set classes and styles +$style = "background-color: $bgColor;"; +$mediaClass = $mediaLeft ? 'order-first' : 'order-last'; +$contentClass = $mediaLeft ? 'order-last pr-8' : 'order-first pl-8'; +$classes = 'media-cols grid grid-cols-1 lg:grid-cols-2 gap-8 items-center mb-8 p-0'; + +if ( $isDark ) { + $classes .= ' dark text-white'; +} + +// Set wrapper attributes +if ( ! $is_preview ) { + $wrapper = get_block_wrapper_attributes( array( 'class' => $classes ) ); +} else { + $wrapper = 'class="' . $classes . '"'; +} + +// if the video block contains an iframe, add the role="presentation" attribute +if ( $vidBlock && strpos( $vidBlock, ' + +
style=""> +
+ + + + <?php echo esc_attr( $imgBlock['alt'] ); ?> + +
+ +
+ +

+ + + +

+ + + +
+ + + +
+ + + + +
+ +
+
diff --git a/views/blocks/page-children/block.json b/views/blocks/page-children/block.json new file mode 100644 index 0000000..c188d3f --- /dev/null +++ b/views/blocks/page-children/block.json @@ -0,0 +1,26 @@ +{ + "name": "acf/page-children", + "title": "Page Children", + "description": "Block to display children of curent page.", + "style": [ + "file:./page-children.css" + ], + "category": "vdi-block", + "icon": "block-default", + "keywords": [ + "page-children" + ], + "acf": { + "mode": "preview", + "renderTemplate": "page-children.php" + }, + "supports": { + "align": false, + "anchor": false, + "color": false, + "html": false, + "jsx": false, + "mode": false, + "multiple": false + } +} diff --git a/views/blocks/page-children/page-children.css b/views/blocks/page-children/page-children.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/page-children/page-children.php b/views/blocks/page-children/page-children.php new file mode 100644 index 0000000..b4fc7b9 --- /dev/null +++ b/views/blocks/page-children/page-children.php @@ -0,0 +1,37 @@ + $currentPageId ) ); + +// Set classes +$classes = 'page-children'; + +// Set wrapper attributes +if ( ! $is_preview ) { + $wrapper = get_block_wrapper_attributes( array( 'class' => $classes ) ); +} else { + $wrapper = 'class="' . $classes . '"'; +} +?> + + +
> + +
+ diff --git a/views/blocks/section/block.json b/views/blocks/section/block.json new file mode 100644 index 0000000..aaf730d --- /dev/null +++ b/views/blocks/section/block.json @@ -0,0 +1,27 @@ +{ + "name": "acf/section", + "title": "Section", + "description": "Content section", + "style": [ + "file:./section.css" + ], + "category": "vdi-block", + "icon": "align-wide", + "keywords": [ + "setion", + "content" + ], + "acf": { + "mode": "preview", + "renderTemplate": "section.php" + }, + "supports": { + "align": true, + "anchor": true, + "color": true, + "html": true, + "jsx": true, + "mode": true, + "multiple": true + } +} diff --git a/views/blocks/section/section.css b/views/blocks/section/section.css new file mode 100644 index 0000000..e69de29 diff --git a/views/blocks/section/section.php b/views/blocks/section/section.php new file mode 100644 index 0000000..254888c --- /dev/null +++ b/views/blocks/section/section.php @@ -0,0 +1,86 @@ + $classes ) ); +} else { + $wrapper = 'class="' . $classes . '"'; +} +?> + +
style=""> + + + + + + + +
+ +
+ +
diff --git a/views/components/menu-items/has-children.php b/views/components/menu-items/has-children.php new file mode 100644 index 0000000..182cc59 --- /dev/null +++ b/views/components/menu-items/has-children.php @@ -0,0 +1,68 @@ +title ) ), +); +if ( ! empty( $item->classes ) ) { + $itemClasses = array_merge( $itemClasses, $item->classes ); +} + +// Generate toggle classes +$toggleClasses = array( 'menu-vdi__toggle' ); +if ( ! empty( $item->classes ) ) { + $toggleClasses = array_merge( $toggleClasses, $item->classes ); +} +?> + + diff --git a/views/components/menu-items/index.php b/views/components/menu-items/index.php new file mode 100644 index 0000000..cf05dad --- /dev/null +++ b/views/components/menu-items/index.php @@ -0,0 +1,33 @@ + + + diff --git a/views/components/menu-items/single.php b/views/components/menu-items/single.php new file mode 100644 index 0000000..a08bf1c --- /dev/null +++ b/views/components/menu-items/single.php @@ -0,0 +1,32 @@ +title ) ), +); + +if ( ! empty( $item->classes ) ) { + $itemClasses = array_merge( $itemClasses, $item->classes ); +} +?> + + diff --git a/views/components/nav-aux.php b/views/components/nav-aux.php new file mode 100644 index 0000000..60f32de --- /dev/null +++ b/views/components/nav-aux.php @@ -0,0 +1,39 @@ +request ) . '/'; +?> + + diff --git a/views/components/nav-main.php b/views/components/nav-main.php new file mode 100644 index 0000000..e5626a7 --- /dev/null +++ b/views/components/nav-main.php @@ -0,0 +1,24 @@ + + + diff --git a/views/components/nav-main__toggle.php b/views/components/nav-main__toggle.php new file mode 100644 index 0000000..bf2c3f2 --- /dev/null +++ b/views/components/nav-main__toggle.php @@ -0,0 +1,46 @@ + + + diff --git a/views/forms/search.php b/views/forms/search.php new file mode 100644 index 0000000..e548be6 --- /dev/null +++ b/views/forms/search.php @@ -0,0 +1,29 @@ + + + +
+ + + + + +
+
diff --git a/views/icons/facebook.php b/views/icons/facebook.php new file mode 100644 index 0000000..82dbfe3 --- /dev/null +++ b/views/icons/facebook.php @@ -0,0 +1 @@ + diff --git a/views/icons/heart.php b/views/icons/heart.php new file mode 100644 index 0000000..0d509ff --- /dev/null +++ b/views/icons/heart.php @@ -0,0 +1,3 @@ + + + diff --git a/views/icons/instagram.php b/views/icons/instagram.php new file mode 100644 index 0000000..2f87815 --- /dev/null +++ b/views/icons/instagram.php @@ -0,0 +1 @@ + diff --git a/views/icons/linkedin.php b/views/icons/linkedin.php new file mode 100644 index 0000000..b6a19b1 --- /dev/null +++ b/views/icons/linkedin.php @@ -0,0 +1 @@ + diff --git a/views/icons/menu.php b/views/icons/menu.php new file mode 100644 index 0000000..e347ff3 --- /dev/null +++ b/views/icons/menu.php @@ -0,0 +1 @@ + diff --git a/views/icons/pinterest.php b/views/icons/pinterest.php new file mode 100644 index 0000000..85ea4d0 --- /dev/null +++ b/views/icons/pinterest.php @@ -0,0 +1 @@ + diff --git a/views/icons/search.php b/views/icons/search.php new file mode 100644 index 0000000..412f072 --- /dev/null +++ b/views/icons/search.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/views/icons/shop.php b/views/icons/shop.php new file mode 100644 index 0000000..1e5dce3 --- /dev/null +++ b/views/icons/shop.php @@ -0,0 +1 @@ + diff --git a/views/icons/shopping-basket.php b/views/icons/shopping-basket.php new file mode 100644 index 0000000..70fbba8 --- /dev/null +++ b/views/icons/shopping-basket.php @@ -0,0 +1,7 @@ + + + + + + + diff --git a/views/icons/twitter-.php b/views/icons/twitter-.php new file mode 100644 index 0000000..5a1c972 --- /dev/null +++ b/views/icons/twitter-.php @@ -0,0 +1 @@ + diff --git a/views/icons/twitter.php b/views/icons/twitter.php new file mode 100644 index 0000000..d315960 --- /dev/null +++ b/views/icons/twitter.php @@ -0,0 +1 @@ + diff --git a/views/icons/user.php b/views/icons/user.php new file mode 100644 index 0000000..5e66748 --- /dev/null +++ b/views/icons/user.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/views/icons/youtube.php b/views/icons/youtube.php new file mode 100644 index 0000000..34003d0 --- /dev/null +++ b/views/icons/youtube.php @@ -0,0 +1 @@ + diff --git a/views/partials/page-hero.php b/views/partials/page-hero.php new file mode 100644 index 0000000..a3b4795 --- /dev/null +++ b/views/partials/page-hero.php @@ -0,0 +1,56 @@ + + +
> + +
+ + +
+ '; + echo wp_kses_post( $heading ); + echo ''; + } else { + echo ''; + echo wp_kses_post( $heading ); + echo ''; + } + + // Intro + if ( $intro ) { + echo '

'; + echo wp_kses_post( $intro ); + echo '

'; + } + ?> +
+
+
diff --git a/views/partials/social-media.php b/views/partials/social-media.php new file mode 100644 index 0000000..1882923 --- /dev/null +++ b/views/partials/social-media.php @@ -0,0 +1,39 @@ + getFieldValue( 'social_media.facebook' ) ? getFieldValue( 'social_media.facebook' ) : '', + 'twitter' => getFieldValue( 'social_media.twitter' ) ? getFieldValue( 'social_media.twitter' ) : '', + 'pinterest' => getFieldValue( 'social_media.pinterest' ) ? getFieldValue( 'social_media.pinterest' ) : '', + 'instagram' => getFieldValue( 'social_media.instagram' ) ? getFieldValue( 'social_media.instagram' ) : '', + 'youtube' => getFieldValue( 'social_media.youtube' ) ? getFieldValue( 'social_media.youtube' ) : '', + 'linkedin' => getFieldValue( 'social_media.linkedin' ) ? getFieldValue( 'social_media.linkedin' ) : '', +); + +// Add circle class if the circle option is enabled +if ( $circle ) { + $classes .= ' circular-icon'; +} + +// Loop through the social media sites and output links +foreach ( $sites as $name => $url ) { + if ( $url ) { + ?> + + + Visit our page + + diff --git a/whitelist.php b/whitelist.php new file mode 100644 index 0000000..8715b3b --- /dev/null +++ b/whitelist.php @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ +
+
+ + + <?php echo esc_attr( $imgAlt ); ?> +
+ +
+ +
+ Posted in: + $category ) : + $separator = $index < count( $categories ) - 1 ? ', ' : ''; + ?> + name ); ?> + +
+ +
+ + Post Type: +
+ + + +

+
+ + +
+
+ +
+ +
+ 2, + 'prev_text' => '« Previous', + 'next_text' => 'Next »', + ) + ); + ?> +
+
+
+ +
+
+

Nothing here yet…

+

No published posts found.

+
+
+ + + + + +