diff --git a/build/admin-settings-rtl.css b/build/admin-settings-rtl.css index 5f87f0481..5e62a7e6f 100644 --- a/build/admin-settings-rtl.css +++ b/build/admin-settings-rtl.css @@ -1 +1 @@ -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.settings_page_parsely{--padding-default:15px}.settings_page_parsely fieldset.user-role-permissions label{margin-left:1rem!important}.settings_page_parsely .disabled-before-posting label:not(.prevent-disable),.settings_page_parsely .disabled-before-posting p,.settings_page_parsely .disabled-before-posting th,.settings_page_parsely fieldset:disabled label:not(.prevent-disable),.settings_page_parsely fieldset:disabled p,.settings_page_parsely fieldset:disabled th,.settings_page_parsely tr:has(fieldset:disabled) label:not(.prevent-disable),.settings_page_parsely tr:has(fieldset:disabled) p,.settings_page_parsely tr:has(fieldset:disabled) th{color:var(--gray-500);cursor:default}.settings_page_parsely #track-post-types{max-width:550px;width:100%}.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{display:table-cell;padding:var(--padding-default);text-align:center;vertical-align:middle}.settings_page_parsely #track-post-types td{padding:0}.settings_page_parsely #track-post-types td label{display:inline-block;margin:0!important;padding-bottom:var(--padding-default);padding-top:var(--padding-default);width:100%}.settings_page_parsely #track-post-types thead th:nth-child(3){word-break:break-word}.settings_page_parsely .managed-option-badge{border:.0625rem solid var(--green-500);border-radius:.25rem;color:var(--green-500)!important;display:inline-block;font-size:.625rem;padding:.125rem .25rem;text-decoration:none}.settings_page_parsely a.managed-option-badge{cursor:pointer!important}.settings_page_parsely a.managed-option-badge:hover{background-color:var(--green-500);color:#fff!important}@media only screen and (max-width:380px){.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{padding-right:10px;padding-left:10px}.settings_page_parsely #track-post-types th:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.settings_page_parsely{--padding-default:15px}.settings_page_parsely fieldset.user-role-permissions label{margin-left:1rem!important}.settings_page_parsely .disabled-before-posting label:not(.prevent-disable),.settings_page_parsely .disabled-before-posting p,.settings_page_parsely .disabled-before-posting th,.settings_page_parsely fieldset:disabled label:not(.prevent-disable),.settings_page_parsely fieldset:disabled p,.settings_page_parsely fieldset:disabled th,.settings_page_parsely tr:has(fieldset:disabled) label:not(.prevent-disable),.settings_page_parsely tr:has(fieldset:disabled) p,.settings_page_parsely tr:has(fieldset:disabled) th{color:var(--gray-500);cursor:default}.settings_page_parsely #track-post-types{max-width:550px;width:100%}.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{display:table-cell;padding:var(--padding-default);text-align:center;vertical-align:middle}.settings_page_parsely #track-post-types td{padding:0}.settings_page_parsely #track-post-types td label{display:inline-block;margin:0!important;padding-bottom:var(--padding-default);padding-top:var(--padding-default);width:100%}.settings_page_parsely #track-post-types thead th:nth-child(3){word-break:break-word}.settings_page_parsely .managed-option-badge{border:.0625rem solid var(--green-500);border-radius:.25rem;color:var(--green-500)!important;display:inline-block;font-size:.625rem;padding:.125rem .25rem;text-decoration:none}.settings_page_parsely a.managed-option-badge{cursor:pointer!important}.settings_page_parsely a.managed-option-badge:hover{background-color:var(--green-500);color:#fff!important}@media only screen and (max-width:380px){.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{padding-right:10px;padding-left:10px}.settings_page_parsely #track-post-types th:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}} diff --git a/build/admin-settings.asset.php b/build/admin-settings.asset.php index 5ae16e136..3b809bbd6 100644 --- a/build/admin-settings.asset.php +++ b/build/admin-settings.asset.php @@ -1 +1 @@ - array(), 'version' => 'acf67be36f79323a58b2'); + array(), 'version' => 'dffb70cbfcda1c519e7e'); diff --git a/build/admin-settings.css b/build/admin-settings.css index 2999471bc..e57ec2ca5 100644 --- a/build/admin-settings.css +++ b/build/admin-settings.css @@ -1 +1 @@ -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.settings_page_parsely{--padding-default:15px}.settings_page_parsely fieldset.user-role-permissions label{margin-right:1rem!important}.settings_page_parsely .disabled-before-posting label:not(.prevent-disable),.settings_page_parsely .disabled-before-posting p,.settings_page_parsely .disabled-before-posting th,.settings_page_parsely fieldset:disabled label:not(.prevent-disable),.settings_page_parsely fieldset:disabled p,.settings_page_parsely fieldset:disabled th,.settings_page_parsely tr:has(fieldset:disabled) label:not(.prevent-disable),.settings_page_parsely tr:has(fieldset:disabled) p,.settings_page_parsely tr:has(fieldset:disabled) th{color:var(--gray-500);cursor:default}.settings_page_parsely #track-post-types{max-width:550px;width:100%}.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{display:table-cell;padding:var(--padding-default);text-align:center;vertical-align:middle}.settings_page_parsely #track-post-types td{padding:0}.settings_page_parsely #track-post-types td label{display:inline-block;margin:0!important;padding-bottom:var(--padding-default);padding-top:var(--padding-default);width:100%}.settings_page_parsely #track-post-types thead th:nth-child(3){word-break:break-word}.settings_page_parsely .managed-option-badge{border:.0625rem solid var(--green-500);border-radius:.25rem;color:var(--green-500)!important;display:inline-block;font-size:.625rem;padding:.125rem .25rem;text-decoration:none}.settings_page_parsely a.managed-option-badge{cursor:pointer!important}.settings_page_parsely a.managed-option-badge:hover{background-color:var(--green-500);color:#fff!important}@media only screen and (max-width:380px){.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{padding-left:10px;padding-right:10px}.settings_page_parsely #track-post-types th:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.settings_page_parsely{--padding-default:15px}.settings_page_parsely fieldset.user-role-permissions label{margin-right:1rem!important}.settings_page_parsely .disabled-before-posting label:not(.prevent-disable),.settings_page_parsely .disabled-before-posting p,.settings_page_parsely .disabled-before-posting th,.settings_page_parsely fieldset:disabled label:not(.prevent-disable),.settings_page_parsely fieldset:disabled p,.settings_page_parsely fieldset:disabled th,.settings_page_parsely tr:has(fieldset:disabled) label:not(.prevent-disable),.settings_page_parsely tr:has(fieldset:disabled) p,.settings_page_parsely tr:has(fieldset:disabled) th{color:var(--gray-500);cursor:default}.settings_page_parsely #track-post-types{max-width:550px;width:100%}.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{display:table-cell;padding:var(--padding-default);text-align:center;vertical-align:middle}.settings_page_parsely #track-post-types td{padding:0}.settings_page_parsely #track-post-types td label{display:inline-block;margin:0!important;padding-bottom:var(--padding-default);padding-top:var(--padding-default);width:100%}.settings_page_parsely #track-post-types thead th:nth-child(3){word-break:break-word}.settings_page_parsely .managed-option-badge{border:.0625rem solid var(--green-500);border-radius:.25rem;color:var(--green-500)!important;display:inline-block;font-size:.625rem;padding:.125rem .25rem;text-decoration:none}.settings_page_parsely a.managed-option-badge{cursor:pointer!important}.settings_page_parsely a.managed-option-badge:hover{background-color:var(--green-500);color:#fff!important}@media only screen and (max-width:380px){.settings_page_parsely #track-post-types td,.settings_page_parsely #track-post-types th{padding-left:10px;padding-right:10px}.settings_page_parsely #track-post-types th:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}} diff --git a/build/content-helper/dashboard-page-rtl.css b/build/content-helper/dashboard-page-rtl.css index c3b0ba96b..6a451033c 100644 --- a/build/content-helper/dashboard-page-rtl.css +++ b/build/content-helper/dashboard-page-rtl.css @@ -1,2 +1,4 @@ -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{margin:0 auto;padding:var(--grid-unit-40) var(--grid-unit-40) var(--grid-unit-60) var(--grid-unit-40)}.dashboard-header-background{background:linear-gradient(-303deg,#000 30.51%,#487006 133.77%)}.dashboard-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--grid-unit-25);justify-content:space-between}.dashboard-header .dashboard-header-summary{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-30);width:18.75rem}.dashboard-header .dashboard-header-summary .summary-info{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.dashboard-header .dashboard-header-summary .summary-info .summary-title{align-self:stretch;font-size:var(--font-size--bigger);font-style:normal;font-weight:600;line-height:2.8125rem}.dashboard-header .dashboard-header-summary .summary-info .summary-text{align-self:stretch;font-size:var(--font-size--small);font-style:normal;font-weight:400;line-height:var(--font-size--large)}.dashboard-header .dashboard-header-summary .summary-button button{background:transparent;border:1px solid var(--sidebar-white);box-shadow:none;color:var(--sidebar-white);cursor:pointer;margin-top:var(--grid-unit-20);padding:var(--grid-unit-10) var(--grid-unit-20)}.dashboard-header .dashboard-header-summary .summary-button button:hover{background:var(--sidebar-white);box-shadow:none;color:var(--sidebar-black)}.dashboard-header .dashboard-header-stats{align-content:flex-start;align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:var(--grid-unit-30);justify-content:flex-end;width:31.25rem}.dashboard-header .dashboard-header-stats .header-stat-card{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-05);height:var(--grid-unit-60);justify-content:center;width:9.375rem}.dashboard-header .dashboard-header-stats .header-stat-card .card-title{align-items:center;display:flex;font-size:var(--font-size--small);font-style:normal;font-weight:400;gap:var(--grid-unit-05);line-height:var(--font-size--large)}.dashboard-header .dashboard-header-stats .header-stat-card .card-title svg{fill:var(--sidebar-white)}.dashboard-header .dashboard-header-stats .header-stat-card .card-value{align-items:center;display:flex;font-size:1.5rem;font-style:normal;font-weight:600;gap:var(--grid-unit-05);letter-spacing:-.48px;line-height:2rem}.dashboard-header .dashboard-header-stats .header-stat-card .card-value .card-change{font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--large)}.dashboard-header .dashboard-header-stats .stats-top{align-items:flex-start;border-bottom:1px solid var(--sidebar-white);display:flex;gap:var(--grid-unit-30);padding-bottom:var(--grid-unit-30)}.dashboard-header .dashboard-header-stats .stats-top .card-title{color:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .card-title svg{fill:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .card-value{color:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .stat-intro{justify-content:flex-start}.dashboard-header .dashboard-header-stats .stats-top .stat-intro .card-title{color:var(--sidebar-white);font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--extra-large)} -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-table-container table{border-collapse:collapse;border-spacing:0;width:100%}.parsely-table-container table tr{display:flex;gap:var(--grid-unit-20);padding:var(--grid-unit-15) 0;position:relative}.parsely-table-container table tr:after{background-color:var(--border);bottom:0;content:"";height:1px;right:50%;position:absolute;transform:translateX(50%);width:100vw}.parsely-table-container table tr td,.parsely-table-container table tr th{align-self:center;text-align:right}.parsely-table-container table tr td.post-info,.parsely-table-container table tr th.post-info-header{width:70%}.parsely-table-container table tr th.boost-perf-header{overflow:visible;position:relative;white-space:nowrap;z-index:1}.parsely-table-container table tr td.actions{align-items:center;display:flex;flex:1;gap:var(--grid-unit-10);justify-content:flex-end;min-height:2.5rem;padding-left:var(--grid-unit-20);width:11.25rem}.parsely-table-container table tr td.actions a{text-decoration:none}.parsely-table-container table tr th{color:var(--sidebar-black);font-size:var(--font-size--small);font-style:normal;font-weight:600;line-height:var(--font-size--large);text-transform:uppercase}.parsely-table-container .posts-table-post-info{align-items:flex-start;display:flex;flex:1 0 0;gap:var(--grid-unit-20);min-height:2.5rem}.parsely-table-container .posts-table-post-info .thumbnail{align-self:center}.parsely-table-container .posts-table-post-info .thumbnail img{border-radius:3px;height:2.8125rem;width:2.8125rem}.parsely-table-container .posts-table-post-info .thumbnail .icon-container{align-items:center;background:var(--gray-500);border-radius:3px;display:flex;height:2.8125rem;justify-content:center;width:2.8125rem}.parsely-table-container .posts-table-post-info .thumbnail .icon-container svg{fill:var(--sidebar-white)}.parsely-table-container .posts-table-post-info .post-details{align-items:flex-start;display:flex;flex:1 0 0;flex-direction:column;gap:var(--grid-unit-05,4px);justify-content:center;min-height:var(--grid-unit-40)}.parsely-table-container .posts-table-post-info .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--medium);font-style:normal;font-weight:600;gap:var(--grid-unit-5);line-height:1.25rem;overflow:hidden;text-overflow:ellipsis}.parsely-table-container .posts-table-post-info .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.parsely-table-container .posts-table-post-info .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.parsely-table-container .posts-table-post-info .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--smaller);font-style:normal;font-weight:600;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--font-size--large);padding:var(--grid-unit-15);text-transform:uppercase}.parsely-table-container .posts-table-pagination-controls .page-selector{align-items:center;display:flex;gap:var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls .page-navigation{align-items:center;display:flex;gap:var(--grid-unit-5);justify-content:flex-end}body{background:#fff}.parsely-dashboard-container{margin-right:-1.25rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{max-width:var(--dashboard-width)} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-menu-page-dashboard .parsely-dashboard-page-body,.parsely-menu-page-dashboard .parsely-dashboard-page-header{padding:var(--grid-unit-40) var(--grid-unit-40) var(--grid-unit-60) var(--grid-unit-40)}.parsely-menu-page-dashboard .dashboard-header-background{background:linear-gradient(-303deg,#000 30.51%,#487006 133.77%)}.parsely-menu-page-dashboard .dashboard-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--grid-unit-25);justify-content:space-between}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-30);width:18.75rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info .summary-title{align-self:stretch;font-size:var(--font-size--bigger);font-style:normal;font-weight:600;line-height:2.8125rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info .summary-text{align-self:stretch;font-size:var(--font-size--small);font-style:normal;font-weight:400;line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-button button{background:transparent;border:1px solid var(--sidebar-white);box-shadow:none;color:var(--sidebar-white);cursor:pointer;margin-top:var(--grid-unit-20);padding:var(--grid-unit-10) var(--grid-unit-20)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-button button:hover{background:var(--sidebar-white);box-shadow:none;color:var(--sidebar-black)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats{align-content:flex-start;align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:var(--grid-unit-30);justify-content:flex-end;width:31.25rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-05);height:var(--grid-unit-60);justify-content:center;width:9.375rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-title{align-items:center;display:flex;font-size:var(--font-size--small);font-style:normal;font-weight:400;gap:var(--grid-unit-05);line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-title svg{fill:var(--sidebar-white)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-value{align-items:center;display:flex;font-size:1.5rem;font-style:normal;font-weight:600;gap:var(--grid-unit-05);letter-spacing:-.48px;line-height:2rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-value .card-change{font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top{align-items:flex-start;border-bottom:1px solid var(--sidebar-white);display:flex;gap:var(--grid-unit-30);padding-bottom:var(--grid-unit-30)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-title{color:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-title svg{fill:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-value{color:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .stat-intro{justify-content:flex-start}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .stat-intro .card-title{color:var(--sidebar-white);font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--extra-large)} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-menu-page-traffic-boost .parsely-dashboard-page-header{padding:var(--grid-unit-30)}.parsely-menu-page-traffic-boost .traffic-boost-search-container{border-radius:2px;margin-bottom:0;padding:var(--grid-unit-15) 0}.parsely-menu-page-traffic-boost-single-post{align-items:flex-start;align-self:stretch;display:flex;flex:1 0 0;gap:var(--grid-unit-20);padding:var(--grid-unit-20) 0 var(--grid-unit-20) var(--grid-unit-20)}.parsely-menu-page-traffic-boost-single-post .traffic-boost-preview{align-self:stretch;flex:1 0 0} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.traffic-boost-sidebar{align-items:flex-start;background:var(--sidebar-white);border-bottom:1px solid var(--gray-200);border-radius:8px;box-shadow:0 1px 1px 0 rgba(0,0,0,.03),0 1px 2px 0 rgba(0,0,0,.02),0 3px 3px 0 rgba(0,0,0,.02),0 4px 4px 0 rgba(0,0,0,.01);display:flex;flex-direction:column;height:calc(100vh - 6.0625rem);padding:var(--grid-unit-20) var(--grid-unit-30);width:26.875rem}.traffic-boost-sidebar .traffic-boost-sidebar-header{align-items:center;align-self:stretch;display:flex;gap:var(--grid-unit-20);margin-bottom:var(--grid-unit-20);min-height:2.5rem}.traffic-boost-sidebar .traffic-boost-sidebar-header h2{color:var(--gray-900);font-size:var(--font-size--extra-large);font-weight:500;line-height:var(--grid-unit-30);margin:0;overflow:hidden;text-overflow:ellipsis}.traffic-boost-sidebar .traffic-boost-sidebar-content{display:flex;flex:1;flex-direction:column;gap:var(--grid-unit-15);margin:0;min-height:0;padding:0;width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons{align-items:center;align-self:stretch;display:flex;gap:12px}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats{align-content:center;align-items:center;display:flex;flex:1 0 0;flex-wrap:wrap;gap:var(--grid-unit-05,4px) var(--grid-unit-20)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats>div{align-items:center;display:flex;gap:var(--grid-unit-05)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats span{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));font-size:12px;font-style:normal;font-weight:400;line-height:16px}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats svg{fill:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions{align-items:center;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));display:flex;gap:var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions button{height:30px;margin:0!important;min-width:30px;padding:0}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions svg{fill:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details{align-items:flex-start;display:flex;gap:var(--grid-unit-20);min-height:2.5rem}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details{align-items:flex-start;display:flex;flex:1;flex-direction:column;gap:var(--grid-unit-05,4px);min-height:var(--grid-unit-40);overflow:hidden}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--grid-unit-25);font-style:normal;font-weight:600;gap:var(--grid-unit-5);letter-spacing:-.4px;line-height:var(--grid-unit-30)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-footer{flex-shrink:0;margin-top:var(--grid-unit-20);width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-footer .components-button.has-icon{align-items:center;display:flex;justify-content:center;padding-right:var(--grid-unit-15);padding-left:var(--grid-unit-15);width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-tabs{display:flex;flex:1;flex-direction:column;margin-right:calc(var(--grid-unit-30)*-1);margin-left:calc(var(--grid-unit-30)*-1);width:calc(100% + var(--grid-unit-30)*2)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tab-content{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs{border-bottom:1px solid var(--gray-400);border-top:1px solid var(--gray-400);display:flex;margin:0;padding:0;position:relative;width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item{flex:1;height:3rem;margin:0;padding:var(--grid-unit-15) var(--grid-unit-40)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.is-active{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) transparent,inset 0 -1.5px 0 0 var(--wp-admin-theme-color)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item .tab-count{align-items:center;background:var(--gray-400);border-radius:2px;display:inline-flex;gap:10px;justify-content:center;margin-right:var(--grid-unit-20);padding:var(--grid-unit-5) var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab{flex:0 0 40px;justify-content:center!important;min-width:56px!important;padding:var(--grid-unit-10)!important;width:56px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab .icon{color:var(--gray-600);height:24px!important;width:24px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab .icon svg{height:24px!important;width:24px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab:hover .icon{color:var(--gray-900)}.traffic-boost-sidebar .traffic-boost-suggestions{display:flex;flex:1;flex-direction:column;height:100%;min-height:0}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list{display:flex;flex:1 1 auto;flex-direction:column;height:0;min-height:0;overflow-y:auto}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion{align-items:center;border-bottom:1px solid var(--gray-350);display:flex;flex:0 0 auto;gap:var(--Scales-grid-unit-15,12px);padding:var(--Scales-grid-unit-20,16px) var(--Scales-grid-unit-30,24px)}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion.active{background:var(--Scales-Theme-theme-alpha-04,rgba(56,88,233,.04));border-bottom:1px solid var(--Scales-Theme-theme-alpha-08,rgba(56,88,233,.08))}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion .single-suggestion-title{color:var(--sidebar-black);font-size:var(--font-size--medium);font-style:normal;font-weight:400;line-height:var(--grid-unit-30);overflow:hidden;text-overflow:ellipsis}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination{align-items:center;color:var(--sidebar-black);display:flex;flex:0 0 auto;font-size:var(--font-size--smaller);font-style:normal;font-weight:500;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--grid-unit-20);margin-top:auto;padding:var(--grid-unit-15,12px) var(--grid-unit-30,24px);text-transform:uppercase}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector{align-items:center;display:flex;gap:var(--grid-unit-5)}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control{width:30px}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:var(--sidebar-white);border:0;height:30px}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input::-webkit-inner-spin-button,.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input::-webkit-outer-spin-button{appearance:none;-webkit-appearance:none;-moz-appearance:none}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-navigation{display:flex;gap:.25rem} +.parsely-tone-selector-dropdown{align-items:center;align-self:stretch;background:var(--Gutenberg-White,#fff);border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px;height:2.25rem;overflow-wrap:break-word;width:100%;word-break:break-word}.parsely-tone-selector-dropdown button{height:2.0625rem}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle.has-icon svg:first-child{display:none}.parsely-tone-selector-dropdown.is-disabled{opacity:.5;pointer-events:none}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle{display:flex;gap:.625rem;width:100%}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle svg:first-of-type path{transform:scale(1.4);transform-origin:center}.parsely-tone-selector-dropdown .parsely-tone-selector-label{flex-grow:2;padding:0 var(--grid-unit-10);text-align:right}.parsely-tone-selector-dropdown .parsely-tone-selector-label:first-letter{text-transform:uppercase}.parsely-persona-selector-custom{width:100%}.parsely-persona-selector-custom .components-base-control__field input{display:flex;height:2.5rem;padding:var(--grid-unit-15) var(--grid-unit-20)}.parsely-persona-selector-custom .components-base-control__field input,.parsely-persona-selector-dropdown{align-items:center;align-self:stretch;border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px}.parsely-persona-selector-dropdown{background:var(--Gutenberg-White,#fff);height:2.25rem;overflow-wrap:break-word;width:100%;word-break:break-word}.parsely-persona-selector-dropdown .components-dropdown-menu__toggle.has-icon svg:first-child{display:none}.parsely-persona-selector-dropdown button{height:2.0625rem}.parsely-persona-selector-dropdown.is-disabled{opacity:.5;pointer-events:none}.parsely-persona-selector-dropdown .components-dropdown-menu__toggle{display:flex;gap:.625rem;width:100%}.parsely-persona-selector-dropdown .parsely-persona-selector-label{flex-grow:2;padding:0 var(--grid-unit-10);text-align:right}.parsely-persona-selector-dropdown .parsely-persona-selector-label:first-letter{text-transform:uppercase}.parsely-tone-selector-custom{width:100%}.parsely-tone-selector-custom .components-base-control__field input{align-items:center;align-self:stretch;border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px;display:flex;height:2.5rem;padding:var(--grid-unit-15) var(--grid-unit-20)}.parsely-inputrange-control{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.parsely-inputrange-control .parsely-inputrange-control__label{margin:0}.parsely-inputrange-control .parsely-inputrange-control__controls{align-items:center;align-self:stretch;display:flex;gap:var(--grid-unit-20);height:2.5rem}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control{display:flex;flex:1 0 0}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]::-webkit-inner-spin-button,.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]{-moz-appearance:textfield}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control .components-base-control__field{flex-grow:1}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control .components-input-control__suffix{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.parsely-inputrange-control .parsely-inputrange-control__controls .components-range-control{flex:1 0 0;height:36px}.parsely-inputrange-control .parsely-inputrange-control__controls .components-range-control .components-range-control__root{height:2.5rem}#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-thumbnail{border-radius:3px;flex-shrink:0;overflow:hidden}.parsely-thumbnail img{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.parsely-thumbnail .parsely-thumbnail-icon-container{align-items:center;background:var(--gray-500);border-radius:3px;display:flex;height:100%;justify-content:center;width:100%}.parsely-thumbnail .parsely-thumbnail-icon-container svg{fill:var(--sidebar-white);height:60%;width:60%}.parsely-panel-settings{width:100%}.parsely-panel-settings .parsely-panel-settings-header{display:flex;margin:.625rem 0;width:100%}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label{flex-grow:2;margin:0 .3125rem 0 0;text-align:right}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label .components-base-control__field{align-items:center;display:flex;justify-content:space-between}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label .components-base-control__field .components-base-control__label{margin-bottom:0}.parsely-panel-settings .parsely-panel-settings-body{align-self:stretch;display:flex;flex-direction:column;gap:.625rem;padding:.375rem 0 var(--grid-unit-20) 0}.wp-parsely-dropdown-label{align-self:stretch;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-style:normal;font-weight:600;line-height:var(--grid-unit-20);text-transform:uppercase}.wp-parsely-content-helper-error{align-self:flex-start;margin:0}.wp-parsely-content-helper-error p{margin:0}.wp-parsely-content-helper-error .content-helper-error-message{margin:0!important}.wp-parsely-collapsible-panel{align-items:flex-start;align-self:stretch;border-bottom:none;border-radius:2px;border-top:none;display:flex;flex-direction:column;gap:var(--grid-unit-20);margin:0 0 .5rem;padding:0}.wp-parsely-collapsible-panel .components-panel__body-title{align-items:center;align-self:stretch;display:flex;margin:0 -1rem .375rem;padding:0}.wp-parsely-collapsible-panel .components-panel__body-title .components-panel__icon,.wp-parsely-collapsible-panel .components-panel__body-title svg{margin-right:0;margin-left:var(--grid-unit-10);order:-1}.wp-parsely-collapsible-panel .components-panel__body-title:hover{background-color:transparent}.wp-parsely-collapsible-panel.is-opened{padding:0}.wp-parsely-collapsible-panel.is-opened>div:first-of-type{margin-top:calc(var(--grid-unit-20)*-1)}.wp-parsely-collapsible-panel.is-opened .components-panel__body-title{margin:0 calc(var(--grid-unit-20)*-1) .375rem;padding-bottom:0}.wp-parsely-collapsible-panel .components-panel__body-toggle.components-button{color:var(--Gutenberg-Gray-900,#1e1e1e);font-size:.6875rem;font-style:normal;font-weight:600;line-height:1rem;padding:var(--grid-unit-20) var(--grid-unit-20);text-transform:uppercase}.wp-parsely-collapsible-panel .components-panel__body-toggle.components-button .components-panel__arrow{margin-left:0}.wp-parsely-collapsible-panel .components-panel__body.is-opened{padding:0}.parsely-table-container table{border-collapse:collapse;border-spacing:0;width:100%}.parsely-table-container table tr{display:flex;gap:var(--grid-unit-20);padding:var(--grid-unit-15) 0;position:relative}.parsely-table-container table tr:after{background-color:var(--border);bottom:0;content:"";height:1px;right:50%;position:absolute;transform:translateX(50%);width:100vw}.parsely-table-container table tr td,.parsely-table-container table tr th{align-self:center;text-align:right}.parsely-table-container table tr td.post-info,.parsely-table-container table tr th.post-info-header{width:70%}.parsely-table-container table tr th.boost-perf-header{overflow:visible;position:relative;white-space:nowrap;z-index:1}.parsely-table-container table tr td.actions{align-items:center;display:flex;flex:1;gap:var(--grid-unit-10);justify-content:flex-end;min-height:2.5rem;padding-left:var(--grid-unit-20);width:11.25rem}.parsely-table-container table tr td.actions a{text-decoration:none}.parsely-table-container table tr th{color:var(--sidebar-black);font-size:var(--font-size--small);font-style:normal;font-weight:600;line-height:var(--font-size--large);text-transform:uppercase}.parsely-table-container .posts-table-post-info{align-items:flex-start;display:flex;flex:1 0 0;gap:var(--grid-unit-20);min-height:2.5rem}.parsely-table-container .posts-table-post-info .posts-table-thumbnail{align-self:center}.parsely-table-container .posts-table-post-info .post-details{align-items:flex-start;display:flex;flex:1 0 0;flex-direction:column;gap:var(--grid-unit-05,4px);justify-content:center;min-height:var(--grid-unit-40)}.parsely-table-container .posts-table-post-info .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--medium);font-style:normal;font-weight:600;gap:var(--grid-unit-5);line-height:1.25rem;overflow:hidden;text-overflow:ellipsis}.parsely-table-container .posts-table-post-info .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.parsely-table-container .posts-table-post-info .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.parsely-table-container .posts-table-post-info .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--smaller);font-style:normal;font-weight:600;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--font-size--large);padding:var(--grid-unit-15);text-transform:uppercase}.parsely-table-container .posts-table-pagination-controls .page-selector{align-items:center;display:flex;gap:var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls .page-navigation{align-items:center;display:flex;gap:var(--grid-unit-5);justify-content:flex-end}body{background:#fff}.parsely-dashboard-container{margin-right:-1.25rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{margin:0 auto;max-width:var(--dashboard-width)} diff --git a/build/content-helper/dashboard-page.asset.php b/build/content-helper/dashboard-page.asset.php index ed217ba14..fa375c121 100644 --- a/build/content-helper/dashboard-page.asset.php +++ b/build/content-helper/dashboard-page.asset.php @@ -1 +1 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-date', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'), 'version' => '36b4bbd56eddce0ea333'); + array('react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'), 'version' => 'bb8fdd28a3ec1ee8b668'); diff --git a/build/content-helper/dashboard-page.css b/build/content-helper/dashboard-page.css index 77110cc75..2de7aaa69 100644 --- a/build/content-helper/dashboard-page.css +++ b/build/content-helper/dashboard-page.css @@ -1,2 +1,4 @@ -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{margin:0 auto;padding:var(--grid-unit-40) var(--grid-unit-40) var(--grid-unit-60) var(--grid-unit-40)}.dashboard-header-background{background:linear-gradient(303deg,#000 30.51%,#487006 133.77%)}.dashboard-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--grid-unit-25);justify-content:space-between}.dashboard-header .dashboard-header-summary{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-30);width:18.75rem}.dashboard-header .dashboard-header-summary .summary-info{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.dashboard-header .dashboard-header-summary .summary-info .summary-title{align-self:stretch;font-size:var(--font-size--bigger);font-style:normal;font-weight:600;line-height:2.8125rem}.dashboard-header .dashboard-header-summary .summary-info .summary-text{align-self:stretch;font-size:var(--font-size--small);font-style:normal;font-weight:400;line-height:var(--font-size--large)}.dashboard-header .dashboard-header-summary .summary-button button{background:transparent;border:1px solid var(--sidebar-white);box-shadow:none;color:var(--sidebar-white);cursor:pointer;margin-top:var(--grid-unit-20);padding:var(--grid-unit-10) var(--grid-unit-20)}.dashboard-header .dashboard-header-summary .summary-button button:hover{background:var(--sidebar-white);box-shadow:none;color:var(--sidebar-black)}.dashboard-header .dashboard-header-stats{align-content:flex-start;align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:var(--grid-unit-30);justify-content:flex-end;width:31.25rem}.dashboard-header .dashboard-header-stats .header-stat-card{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-05);height:var(--grid-unit-60);justify-content:center;width:9.375rem}.dashboard-header .dashboard-header-stats .header-stat-card .card-title{align-items:center;display:flex;font-size:var(--font-size--small);font-style:normal;font-weight:400;gap:var(--grid-unit-05);line-height:var(--font-size--large)}.dashboard-header .dashboard-header-stats .header-stat-card .card-title svg{fill:var(--sidebar-white)}.dashboard-header .dashboard-header-stats .header-stat-card .card-value{align-items:center;display:flex;font-size:1.5rem;font-style:normal;font-weight:600;gap:var(--grid-unit-05);letter-spacing:-.48px;line-height:2rem}.dashboard-header .dashboard-header-stats .header-stat-card .card-value .card-change{font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--large)}.dashboard-header .dashboard-header-stats .stats-top{align-items:flex-start;border-bottom:1px solid var(--sidebar-white);display:flex;gap:var(--grid-unit-30);padding-bottom:var(--grid-unit-30)}.dashboard-header .dashboard-header-stats .stats-top .card-title{color:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .card-title svg{fill:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .card-value{color:var(--dashboard-accent)}.dashboard-header .dashboard-header-stats .stats-top .stat-intro{justify-content:flex-start}.dashboard-header .dashboard-header-stats .stats-top .stat-intro .card-title{color:var(--sidebar-white);font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--extra-large)} -#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-table-container table{border-collapse:collapse;border-spacing:0;width:100%}.parsely-table-container table tr{display:flex;gap:var(--grid-unit-20);padding:var(--grid-unit-15) 0;position:relative}.parsely-table-container table tr:after{background-color:var(--border);bottom:0;content:"";height:1px;left:50%;position:absolute;transform:translateX(-50%);width:100vw}.parsely-table-container table tr td,.parsely-table-container table tr th{align-self:center;text-align:left}.parsely-table-container table tr td.post-info,.parsely-table-container table tr th.post-info-header{width:70%}.parsely-table-container table tr th.boost-perf-header{overflow:visible;position:relative;white-space:nowrap;z-index:1}.parsely-table-container table tr td.actions{align-items:center;display:flex;flex:1;gap:var(--grid-unit-10);justify-content:flex-end;min-height:2.5rem;padding-right:var(--grid-unit-20);width:11.25rem}.parsely-table-container table tr td.actions a{text-decoration:none}.parsely-table-container table tr th{color:var(--sidebar-black);font-size:var(--font-size--small);font-style:normal;font-weight:600;line-height:var(--font-size--large);text-transform:uppercase}.parsely-table-container .posts-table-post-info{align-items:flex-start;display:flex;flex:1 0 0;gap:var(--grid-unit-20);min-height:2.5rem}.parsely-table-container .posts-table-post-info .thumbnail{align-self:center}.parsely-table-container .posts-table-post-info .thumbnail img{border-radius:3px;height:2.8125rem;width:2.8125rem}.parsely-table-container .posts-table-post-info .thumbnail .icon-container{align-items:center;background:var(--gray-500);border-radius:3px;display:flex;height:2.8125rem;justify-content:center;width:2.8125rem}.parsely-table-container .posts-table-post-info .thumbnail .icon-container svg{fill:var(--sidebar-white)}.parsely-table-container .posts-table-post-info .post-details{align-items:flex-start;display:flex;flex:1 0 0;flex-direction:column;gap:var(--grid-unit-05,4px);justify-content:center;min-height:var(--grid-unit-40)}.parsely-table-container .posts-table-post-info .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--medium);font-style:normal;font-weight:600;gap:var(--grid-unit-5);line-height:1.25rem;overflow:hidden;text-overflow:ellipsis}.parsely-table-container .posts-table-post-info .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.parsely-table-container .posts-table-post-info .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.parsely-table-container .posts-table-post-info .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--smaller);font-style:normal;font-weight:600;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--font-size--large);padding:var(--grid-unit-15);text-transform:uppercase}.parsely-table-container .posts-table-pagination-controls .page-selector{align-items:center;display:flex;gap:var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls .page-navigation{align-items:center;display:flex;gap:var(--grid-unit-5);justify-content:flex-end}body{background:#fff}.parsely-dashboard-container{margin-left:-1.25rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{max-width:var(--dashboard-width)} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-menu-page-dashboard .parsely-dashboard-page-body,.parsely-menu-page-dashboard .parsely-dashboard-page-header{padding:var(--grid-unit-40) var(--grid-unit-40) var(--grid-unit-60) var(--grid-unit-40)}.parsely-menu-page-dashboard .dashboard-header-background{background:linear-gradient(303deg,#000 30.51%,#487006 133.77%)}.parsely-menu-page-dashboard .dashboard-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:var(--grid-unit-25);justify-content:space-between}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-30);width:18.75rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info .summary-title{align-self:stretch;font-size:var(--font-size--bigger);font-style:normal;font-weight:600;line-height:2.8125rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-info .summary-text{align-self:stretch;font-size:var(--font-size--small);font-style:normal;font-weight:400;line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-button button{background:transparent;border:1px solid var(--sidebar-white);box-shadow:none;color:var(--sidebar-white);cursor:pointer;margin-top:var(--grid-unit-20);padding:var(--grid-unit-10) var(--grid-unit-20)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-summary .summary-button button:hover{background:var(--sidebar-white);box-shadow:none;color:var(--sidebar-black)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats{align-content:flex-start;align-items:flex-start;align-self:stretch;display:flex;flex-wrap:wrap;gap:var(--grid-unit-30);justify-content:flex-end;width:31.25rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card{align-items:flex-start;color:var(--sidebar-white);display:flex;flex-direction:column;gap:var(--grid-unit-05);height:var(--grid-unit-60);justify-content:center;width:9.375rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-title{align-items:center;display:flex;font-size:var(--font-size--small);font-style:normal;font-weight:400;gap:var(--grid-unit-05);line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-title svg{fill:var(--sidebar-white)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-value{align-items:center;display:flex;font-size:1.5rem;font-style:normal;font-weight:600;gap:var(--grid-unit-05);letter-spacing:-.48px;line-height:2rem}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .header-stat-card .card-value .card-change{font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--large)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top{align-items:flex-start;border-bottom:1px solid var(--sidebar-white);display:flex;gap:var(--grid-unit-30);padding-bottom:var(--grid-unit-30)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-title{color:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-title svg{fill:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .card-value{color:var(--dashboard-accent)}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .stat-intro{justify-content:flex-start}.parsely-menu-page-dashboard .dashboard-header .dashboard-header-stats .stats-top .stat-intro .card-title{color:var(--sidebar-white);font-size:var(--font-size--medium);font-style:normal;font-weight:500;line-height:var(--font-size--extra-large)} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-menu-page-traffic-boost .parsely-dashboard-page-header{padding:var(--grid-unit-30)}.parsely-menu-page-traffic-boost .traffic-boost-search-container{border-radius:2px;margin-bottom:0;padding:var(--grid-unit-15) 0}.parsely-menu-page-traffic-boost-single-post{align-items:flex-start;align-self:stretch;display:flex;flex:1 0 0;gap:var(--grid-unit-20);padding:var(--grid-unit-20) var(--grid-unit-20) var(--grid-unit-20) 0}.parsely-menu-page-traffic-boost-single-post .traffic-boost-preview{align-self:stretch;flex:1 0 0} +#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.traffic-boost-sidebar{align-items:flex-start;background:var(--sidebar-white);border-bottom:1px solid var(--gray-200);border-radius:8px;box-shadow:0 1px 1px 0 rgba(0,0,0,.03),0 1px 2px 0 rgba(0,0,0,.02),0 3px 3px 0 rgba(0,0,0,.02),0 4px 4px 0 rgba(0,0,0,.01);display:flex;flex-direction:column;height:calc(100vh - 6.0625rem);padding:var(--grid-unit-20) var(--grid-unit-30);width:26.875rem}.traffic-boost-sidebar .traffic-boost-sidebar-header{align-items:center;align-self:stretch;display:flex;gap:var(--grid-unit-20);margin-bottom:var(--grid-unit-20);min-height:2.5rem}.traffic-boost-sidebar .traffic-boost-sidebar-header h2{color:var(--gray-900);font-size:var(--font-size--extra-large);font-weight:500;line-height:var(--grid-unit-30);margin:0;overflow:hidden;text-overflow:ellipsis}.traffic-boost-sidebar .traffic-boost-sidebar-content{display:flex;flex:1;flex-direction:column;gap:var(--grid-unit-15);margin:0;min-height:0;padding:0;width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons{align-items:center;align-self:stretch;display:flex;gap:12px}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats{align-content:center;align-items:center;display:flex;flex:1 0 0;flex-wrap:wrap;gap:var(--grid-unit-05,4px) var(--grid-unit-20)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats>div{align-items:center;display:flex;gap:var(--grid-unit-05)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats span{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));font-size:12px;font-style:normal;font-weight:400;line-height:16px}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-stats svg{fill:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions{align-items:center;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));display:flex;gap:var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions button{height:30px;margin:0!important;min-width:30px;padding:0}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-sidebar-icons .traffic-boost-sidebar-icons-actions svg{fill:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details{align-items:flex-start;display:flex;gap:var(--grid-unit-20);min-height:2.5rem}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details{align-items:flex-start;display:flex;flex:1;flex-direction:column;gap:var(--grid-unit-05,4px);min-height:var(--grid-unit-40);overflow:hidden}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--grid-unit-25);font-style:normal;font-weight:600;gap:var(--grid-unit-5);letter-spacing:-.4px;line-height:var(--grid-unit-30)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.traffic-boost-sidebar .traffic-boost-sidebar-content .traffic-boost-post-details .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-footer{flex-shrink:0;margin-top:var(--grid-unit-20);width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-footer .components-button.has-icon{align-items:center;display:flex;justify-content:center;padding-left:var(--grid-unit-15);padding-right:var(--grid-unit-15);width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-tabs{display:flex;flex:1;flex-direction:column;margin-left:calc(var(--grid-unit-30)*-1);margin-right:calc(var(--grid-unit-30)*-1);width:calc(100% + var(--grid-unit-30)*2)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tab-content{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs{border-bottom:1px solid var(--gray-400);border-top:1px solid var(--gray-400);display:flex;margin:0;padding:0;position:relative;width:100%}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item{flex:1;height:3rem;margin:0;padding:var(--grid-unit-15) var(--grid-unit-40)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.is-active{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) transparent,inset 0 -1.5px 0 0 var(--wp-admin-theme-color)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item .tab-count{align-items:center;background:var(--gray-400);border-radius:2px;display:inline-flex;gap:10px;justify-content:center;margin-left:var(--grid-unit-20);padding:var(--grid-unit-5) var(--grid-unit-10)}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab{flex:0 0 40px;justify-content:center!important;min-width:56px!important;padding:var(--grid-unit-10)!important;width:56px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab .icon{color:var(--gray-600);height:24px!important;width:24px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab .icon svg{height:24px!important;width:24px!important}.traffic-boost-sidebar .traffic-boost-sidebar-tabs .components-tab-panel__tabs .components-tab-panel__tabs-item.icon-only-tab:hover .icon{color:var(--gray-900)}.traffic-boost-sidebar .traffic-boost-suggestions{display:flex;flex:1;flex-direction:column;height:100%;min-height:0}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list{display:flex;flex:1 1 auto;flex-direction:column;height:0;min-height:0;overflow-y:auto}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion{align-items:center;border-bottom:1px solid var(--gray-350);display:flex;flex:0 0 auto;gap:var(--Scales-grid-unit-15,12px);padding:var(--Scales-grid-unit-20,16px) var(--Scales-grid-unit-30,24px)}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion.active{background:var(--Scales-Theme-theme-alpha-04,rgba(56,88,233,.04));border-bottom:1px solid var(--Scales-Theme-theme-alpha-08,rgba(56,88,233,.08))}.traffic-boost-sidebar .traffic-boost-suggestions .traffic-boost-suggestions-list .traffic-boost-single-suggestion .single-suggestion-title{color:var(--sidebar-black);font-size:var(--font-size--medium);font-style:normal;font-weight:400;line-height:var(--grid-unit-30);overflow:hidden;text-overflow:ellipsis}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination{align-items:center;color:var(--sidebar-black);display:flex;flex:0 0 auto;font-size:var(--font-size--smaller);font-style:normal;font-weight:500;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--grid-unit-20);margin-top:auto;padding:var(--grid-unit-15,12px) var(--grid-unit-30,24px);text-transform:uppercase}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector{align-items:center;display:flex;gap:var(--grid-unit-5)}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control{width:30px}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:var(--sidebar-white);border:0;height:30px}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input::-webkit-inner-spin-button,.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-selector .components-number-control input::-webkit-outer-spin-button{appearance:none;-webkit-appearance:none;-moz-appearance:none}.traffic-boost-sidebar .traffic-boost-suggestions .suggestions-pagination .page-navigation{display:flex;gap:.25rem} +.parsely-tone-selector-dropdown{align-items:center;align-self:stretch;background:var(--Gutenberg-White,#fff);border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px;height:2.25rem;overflow-wrap:break-word;width:100%;word-break:break-word}.parsely-tone-selector-dropdown button{height:2.0625rem}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle.has-icon svg:first-child{display:none}.parsely-tone-selector-dropdown.is-disabled{opacity:.5;pointer-events:none}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle{display:flex;gap:.625rem;width:100%}.parsely-tone-selector-dropdown .components-dropdown-menu__toggle svg:first-of-type path{transform:scale(1.4);transform-origin:center}.parsely-tone-selector-dropdown .parsely-tone-selector-label{flex-grow:2;padding:0 var(--grid-unit-10);text-align:left}.parsely-tone-selector-dropdown .parsely-tone-selector-label:first-letter{text-transform:uppercase}.parsely-persona-selector-custom{width:100%}.parsely-persona-selector-custom .components-base-control__field input{display:flex;height:2.5rem;padding:var(--grid-unit-15) var(--grid-unit-20)}.parsely-persona-selector-custom .components-base-control__field input,.parsely-persona-selector-dropdown{align-items:center;align-self:stretch;border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px}.parsely-persona-selector-dropdown{background:var(--Gutenberg-White,#fff);height:2.25rem;overflow-wrap:break-word;width:100%;word-break:break-word}.parsely-persona-selector-dropdown .components-dropdown-menu__toggle.has-icon svg:first-child{display:none}.parsely-persona-selector-dropdown button{height:2.0625rem}.parsely-persona-selector-dropdown.is-disabled{opacity:.5;pointer-events:none}.parsely-persona-selector-dropdown .components-dropdown-menu__toggle{display:flex;gap:.625rem;width:100%}.parsely-persona-selector-dropdown .parsely-persona-selector-label{flex-grow:2;padding:0 var(--grid-unit-10);text-align:left}.parsely-persona-selector-dropdown .parsely-persona-selector-label:first-letter{text-transform:uppercase}.parsely-tone-selector-custom{width:100%}.parsely-tone-selector-custom .components-base-control__field input{align-items:center;align-self:stretch;border:1px solid var(--Gutenberg-Gray-600,#949494);border-radius:2px;display:flex;height:2.5rem;padding:var(--grid-unit-15) var(--grid-unit-20)}.parsely-inputrange-control{align-items:flex-start;align-self:stretch;display:flex;flex-direction:column;gap:var(--grid-unit-10)}.parsely-inputrange-control .parsely-inputrange-control__label{margin:0}.parsely-inputrange-control .parsely-inputrange-control__controls{align-items:center;align-self:stretch;display:flex;gap:var(--grid-unit-20);height:2.5rem}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control{display:flex;flex:1 0 0}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]::-webkit-inner-spin-button,.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control input[type=number]{-moz-appearance:textfield}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control .components-base-control__field{flex-grow:1}.parsely-inputrange-control .parsely-inputrange-control__controls .components-input-control .components-input-control__suffix{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.parsely-inputrange-control .parsely-inputrange-control__controls .components-range-control{flex:1 0 0;height:36px}.parsely-inputrange-control .parsely-inputrange-control__controls .components-range-control .components-range-control__root{height:2.5rem}#wp-parsely-dashboard-widget,.components-button[aria-controls="wp-parsely-block-editor-sidebar:wp-parsely-content-helper"],.editor-post-excerpt,.parsely-dashboard-container,.settings_page_parsely,.wp-parsely-block-overlay,.wp-parsely-content-helper,.wp-parsely-excerpt-generator,.wp-parsely-panel,.wp-parsely-popover,.wp-parsely-preview-editor,.wp-parsely-smart-linking-close-dialog,.wp-parsely-smart-linking-review-modal,.wp-parsely-suggested-title-modal{--base-font:"source-sans-pro",arial,sans-serif;--numeric-font:"ff-din-round-web",sans-serif;--parsely-green-components:107,42%,46%;--parsely-green:hsl(var(--parsely-green-components));--parsely-green-10:#c7ecb1;--parsely-green-65:#2a691b;--gray-200:#f7f8f9;--gray-300:#edeeef;--gray-350:#e1e3e5;--gray-400:#d7dbdf;--gray-500:#959da5;--gray-600:#586069;--gray-700:#444d56;--gray-900:#24292e;--blue-500:#44a8e5;--blue-550:#2596db;--green-500:#7bc01b;--green-900:#3d6307;--ref-direct:205,13%,52%;--ref-internal:161,91%,41%;--ref-social:210,72%,41%;--ref-search:42,100%,50%;--ref-other:3,76%,58%;--base-text:var(--gray-900);--base-text-2:var(--gray-600);--base-3:var(--gray-400);--border:var(--gray-400);--data:var(--green-500);--control:var(--blue-500);--grid-unit-5:0.25rem;--grid-unit-10:0.5rem;--grid-unit-15:0.75rem;--grid-unit-20:1rem;--grid-unit-25:1.25rem;--grid-unit-30:1.5rem;--grid-unit-40:2rem;--grid-unit-50:2.5rem;--grid-unit-60:3rem;--font-size--smaller:0.688rem;--font-size--small:0.75rem;--font-size--medium:0.875rem;--font-size--large:1rem;--font-size--extra-large:1.2rem;--font-size--bigger:2rem;--black:#000;--sidebar-black:#1e1e1e;--sidebar-white:#f0f0f0;--dashboard-accent:#b9f16b;--dashboard-width:64rem}.parsely-thumbnail{border-radius:3px;flex-shrink:0;overflow:hidden}.parsely-thumbnail img{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.parsely-thumbnail .parsely-thumbnail-icon-container{align-items:center;background:var(--gray-500);border-radius:3px;display:flex;height:100%;justify-content:center;width:100%}.parsely-thumbnail .parsely-thumbnail-icon-container svg{fill:var(--sidebar-white);height:60%;width:60%}.parsely-panel-settings{width:100%}.parsely-panel-settings .parsely-panel-settings-header{display:flex;margin:.625rem 0;width:100%}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label{flex-grow:2;margin:0 0 0 .3125rem;text-align:left}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label .components-base-control__field{align-items:center;display:flex;justify-content:space-between}.parsely-panel-settings .parsely-panel-settings-header .parsely-panel-settings-header-label .components-base-control__field .components-base-control__label{margin-bottom:0}.parsely-panel-settings .parsely-panel-settings-body{align-self:stretch;display:flex;flex-direction:column;gap:.625rem;padding:.375rem 0 var(--grid-unit-20) 0}.wp-parsely-dropdown-label{align-self:stretch;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-style:normal;font-weight:600;line-height:var(--grid-unit-20);text-transform:uppercase}.wp-parsely-content-helper-error{align-self:flex-start;margin:0}.wp-parsely-content-helper-error p{margin:0}.wp-parsely-content-helper-error .content-helper-error-message{margin:0!important}.wp-parsely-collapsible-panel{align-items:flex-start;align-self:stretch;border-bottom:none;border-radius:2px;border-top:none;display:flex;flex-direction:column;gap:var(--grid-unit-20);margin:0 0 .5rem;padding:0}.wp-parsely-collapsible-panel .components-panel__body-title{align-items:center;align-self:stretch;display:flex;margin:0 -1rem .375rem;padding:0}.wp-parsely-collapsible-panel .components-panel__body-title .components-panel__icon,.wp-parsely-collapsible-panel .components-panel__body-title svg{margin-left:0;margin-right:var(--grid-unit-10);order:-1}.wp-parsely-collapsible-panel .components-panel__body-title:hover{background-color:transparent}.wp-parsely-collapsible-panel.is-opened{padding:0}.wp-parsely-collapsible-panel.is-opened>div:first-of-type{margin-top:calc(var(--grid-unit-20)*-1)}.wp-parsely-collapsible-panel.is-opened .components-panel__body-title{margin:0 calc(var(--grid-unit-20)*-1) .375rem;padding-bottom:0}.wp-parsely-collapsible-panel .components-panel__body-toggle.components-button{color:var(--Gutenberg-Gray-900,#1e1e1e);font-size:.6875rem;font-style:normal;font-weight:600;line-height:1rem;padding:var(--grid-unit-20) var(--grid-unit-20);text-transform:uppercase}.wp-parsely-collapsible-panel .components-panel__body-toggle.components-button .components-panel__arrow{margin-right:0}.wp-parsely-collapsible-panel .components-panel__body.is-opened{padding:0}.parsely-table-container table{border-collapse:collapse;border-spacing:0;width:100%}.parsely-table-container table tr{display:flex;gap:var(--grid-unit-20);padding:var(--grid-unit-15) 0;position:relative}.parsely-table-container table tr:after{background-color:var(--border);bottom:0;content:"";height:1px;left:50%;position:absolute;transform:translateX(-50%);width:100vw}.parsely-table-container table tr td,.parsely-table-container table tr th{align-self:center;text-align:left}.parsely-table-container table tr td.post-info,.parsely-table-container table tr th.post-info-header{width:70%}.parsely-table-container table tr th.boost-perf-header{overflow:visible;position:relative;white-space:nowrap;z-index:1}.parsely-table-container table tr td.actions{align-items:center;display:flex;flex:1;gap:var(--grid-unit-10);justify-content:flex-end;min-height:2.5rem;padding-right:var(--grid-unit-20);width:11.25rem}.parsely-table-container table tr td.actions a{text-decoration:none}.parsely-table-container table tr th{color:var(--sidebar-black);font-size:var(--font-size--small);font-style:normal;font-weight:600;line-height:var(--font-size--large);text-transform:uppercase}.parsely-table-container .posts-table-post-info{align-items:flex-start;display:flex;flex:1 0 0;gap:var(--grid-unit-20);min-height:2.5rem}.parsely-table-container .posts-table-post-info .posts-table-thumbnail{align-self:center}.parsely-table-container .posts-table-post-info .post-details{align-items:flex-start;display:flex;flex:1 0 0;flex-direction:column;gap:var(--grid-unit-05,4px);justify-content:center;min-height:var(--grid-unit-40)}.parsely-table-container .posts-table-post-info .post-details .post-title{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--medium);font-style:normal;font-weight:600;gap:var(--grid-unit-5);line-height:1.25rem;overflow:hidden;text-overflow:ellipsis}.parsely-table-container .posts-table-post-info .post-details .post-meta{align-content:center;align-items:center;align-self:stretch;color:var(--gray-500);display:flex;flex-wrap:wrap;gap:var(--grid-unit-5) var(--grid-unit-10)}.parsely-table-container .posts-table-post-info .post-details .post-categories{display:flex;gap:var(--grid-unit-5)}.parsely-table-container .posts-table-post-info .post-details .post-categories span{background:var(--gray-400);border-radius:.375rem;color:var(--sidebar-black);font-size:var(--font-size--smaller);font-weight:500;line-height:var(--font-size--large);padding:2px var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls{align-items:center;align-self:stretch;display:flex;font-size:var(--font-size--smaller);font-style:normal;font-weight:600;gap:var(--grid-unit-30);justify-content:flex-end;line-height:var(--font-size--large);padding:var(--grid-unit-15);text-transform:uppercase}.parsely-table-container .posts-table-pagination-controls .page-selector{align-items:center;display:flex;gap:var(--grid-unit-10)}.parsely-table-container .posts-table-pagination-controls .page-navigation{align-items:center;display:flex;gap:var(--grid-unit-5);justify-content:flex-end}body{background:#fff}.parsely-dashboard-container{margin-left:-1.25rem}.parsely-dashboard-page-body,.parsely-dashboard-page-header{margin:0 auto;max-width:var(--dashboard-width)} diff --git a/build/content-helper/dashboard-page.js b/build/content-helper/dashboard-page.js index bb4b1ffbb..41db135d5 100644 --- a/build/content-helper/dashboard-page.js +++ b/build/content-helper/dashboard-page.js @@ -1 +1 @@ -!function(){"use strict";var e={69:function(e,t){Object.prototype.toString},20:function(e,t,r){var n=r(609),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,c=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,n)&&!l.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:c,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},848:function(e,t,r){e.exports=r(20)},609:function(e){e.exports=window.React}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e=r(848),t=r(609),n=(r(69),"popstate");function a(e={}){return function(e,t,r,a={}){let{window:i=document.defaultView,v5Compat:c=!1}=a,p=i.history,h="POP",d=null,f=m();function m(){return(p.state||{idx:null}).idx}function y(){h="POP";let e=m(),t=null==e?null:e-f;f=e,d&&d({action:h,location:v.location,delta:t})}function g(e){let t="null"!==i.location.origin?i.location.origin:i.location.href,r="string"==typeof e?e:u(e);return r=r.replace(/ $/,"%20"),o(t,`No window.location.(origin|href) available to create URL for href: ${r}`),new URL(r,t)}null==f&&(f=0,p.replaceState({...p.state,idx:f},""));let v={get action(){return h},get location(){return e(i,p)},listen(e){if(d)throw new Error("A history only accepts one active listener");return i.addEventListener(n,y),d=e,()=>{i.removeEventListener(n,y),d=null}},createHref(e){return t(i,e)},createURL:g,encodeLocation(e){let t=g(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){h="PUSH";let n=l(v.location,e,t);r&&r(n,e),f=m()+1;let a=s(n,f),o=v.createHref(n);try{p.pushState(a,"",o)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;i.location.assign(o)}c&&d&&d({action:h,location:v.location,delta:1})},replace:function(e,t){h="REPLACE";let n=l(v.location,e,t);r&&r(n,e),f=m();let a=s(n,f),o=v.createHref(n);p.replaceState(a,"",o),c&&d&&d({action:h,location:v.location,delta:0})},go(e){return p.go(e)}};return v}((function(e,t){let{pathname:r="/",search:n="",hash:a=""}=c(e.location.hash.substring(1));return r.startsWith("/")||r.startsWith(".")||(r="/"+r),l("",{pathname:r,search:n,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let r=e.document.querySelector("base"),n="";if(r&&r.getAttribute("href")){let t=e.location.href,r=t.indexOf("#");n=-1===r?t:t.slice(0,r)}return n+"#"+("string"==typeof t?t:u(t))}),(function(e,t){i("/"===e.pathname.charAt(0),`relative pathnames are not supported in hash history.push(${JSON.stringify(t)})`)}),e)}function o(e,t){if(!1===e||null==e)throw new Error(t)}function i(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function s(e,t){return{usr:e.state,key:e.key,idx:t}}function l(e,t,r=null,n){return{pathname:"string"==typeof e?e:e.pathname,search:"",hash:"",..."string"==typeof t?c(t):t,state:r,key:t&&t.key||n||Math.random().toString(36).substring(2,10)}}function u({pathname:e="/",search:t="",hash:r=""}){return t&&"?"!==t&&(e+="?"===t.charAt(0)?t:"?"+t),r&&"#"!==r&&(e+="#"===r.charAt(0)?r:"#"+r),e}function c(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substring(r),e=e.substring(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substring(n),e=e.substring(0,n)),e&&(t.pathname=e)}return t}function p(e,t,r="/"){return function(e,t,r,n){let a=j(("string"==typeof t?c(t):t).pathname||"/",r);if(null==a)return null;let o=h(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){return e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]))?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(o);let i=null;for(let e=0;null==i&&e{let s={relativePath:void 0===i?e.path||"":i,caseSensitive:!0===e.caseSensitive,childrenIndex:a,route:e};s.relativePath.startsWith("/")&&(o(s.relativePath.startsWith(n),`Absolute route path "${s.relativePath}" nested under path "${n}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),s.relativePath=s.relativePath.slice(n.length));let l=N([n,s.relativePath]),u=r.concat(s);e.children&&e.children.length>0&&(o(!0!==e.index,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),h(e.children,t,u,l)),(null!=e.path||e.index)&&t.push({path:l,score:x(l,e.index),routesMeta:u})};return e.forEach(((e,t)=>{if(""!==e.path&&e.path?.includes("?"))for(let r of d(e.path))a(e,t,r);else a(e,t)})),t}function d(e){let t=e.split("/");if(0===t.length)return[];let[r,...n]=t,a=r.endsWith("?"),o=r.replace(/\?$/,"");if(0===n.length)return a?[o,""]:[o];let i=d(n.join("/")),s=[];return s.push(...i.map((e=>""===e?o:[o,e].join("/")))),a&&s.push(...i),s.map((t=>e.startsWith("/")&&""===t?"/":t))}var f=/^:[\w-]+$/,m=3,y=2,g=1,v=10,w=-2,b=e=>"*"===e;function x(e,t){let r=e.split("/"),n=r.length;return r.some(b)&&(n+=w),t&&(n+=y),r.filter((e=>!b(e))).reduce(((e,t)=>e+(f.test(t)?m:""===t?g:v)),n)}function S(e,t,r=!1){let{routesMeta:n}=e,a={},o="/",i=[];for(let e=0;e(n.push({paramName:t,isOptional:null!=r}),r?"/?([^\\/]+)?":"/([^\\/]+)")));return e.endsWith("*")?(n.push({paramName:"*"}),a+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":""!==e&&"/"!==e&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),n]}(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let o=a[0],s=o.replace(/(.)\/+$/,"$1"),l=a.slice(1);return{params:n.reduce(((e,{paramName:t,isOptional:r},n)=>{if("*"===t){let e=l[n]||"";s=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const a=l[n];return e[t]=r&&!a?void 0:(a||"").replace(/%2F/g,"/"),e}),{}),pathname:o,pathnameBase:s,pattern:e}}function _(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return i(!1,`The URL path "${e}" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function j(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&"/"!==n?null:e.slice(r)||"/"}function E(e,t,r,n){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(n)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function C(e){let t=function(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}(e);return t.map(((e,r)=>r===t.length-1?e.pathname:e.pathnameBase))}function A(e,t,r,n=!1){let a;"string"==typeof e?a=c(e):(a={...e},o(!a.pathname||!a.pathname.includes("?"),E("?","pathname","search",a)),o(!a.pathname||!a.pathname.includes("#"),E("#","pathname","hash",a)),o(!a.search||!a.search.includes("#"),E("#","search","hash",a)));let i,s=""===e||""===a.pathname,l=s?"/":a.pathname;if(null==l)i=r;else{let e=t.length-1;if(!n&&l.startsWith("..")){let t=l.split("/");for(;".."===t[0];)t.shift(),e-=1;a.pathname=t.join("/")}i=e>=0?t[e]:"/"}let u=function(e,t="/"){let{pathname:r,search:n="",hash:a=""}="string"==typeof e?c(e):e,o=r?r.startsWith("/")?r:function(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)})),r.length>1?r.join("/"):"/"}(r,t):t;return{pathname:o,search:O(n),hash:T(a)}}(a,i),p=l&&"/"!==l&&l.endsWith("/"),h=(s||"."===l)&&r.endsWith("/");return u.pathname.endsWith("/")||!p&&!h||(u.pathname+="/"),u}var N=e=>e.join("/").replace(/\/\/+/g,"/"),R=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),O=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",T=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";function k(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}var I=["POST","PUT","PATCH","DELETE"],L=(new Set(I),["GET",...I]);new Set(L),Symbol("ResetLoaderData");var $=t.createContext(null);$.displayName="DataRouter";var F=t.createContext(null);F.displayName="DataRouterState";var M=t.createContext({isTransitioning:!1});M.displayName="ViewTransition",t.createContext(new Map).displayName="Fetchers",t.createContext(null).displayName="Await";var D=t.createContext(null);D.displayName="Navigation";var B=t.createContext(null);B.displayName="Location";var H=t.createContext({outlet:null,matches:[],isDataRoute:!1});H.displayName="Route";var U=t.createContext(null);function W(){return null!=t.useContext(B)}function V(){return o(W(),"useLocation() may be used only in the context of a component."),t.useContext(B).location}U.displayName="RouteError";var z="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function G(e){t.useContext(D).static||t.useLayoutEffect(e)}function q(){let{isDataRoute:e}=t.useContext(H);return e?function(){let{router:e}=function(e){let r=t.useContext($);return o(r,ee(e)),r}("useNavigate"),r=te("useNavigate"),n=t.useRef(!1);return G((()=>{n.current=!0})),t.useCallback((async(t,a={})=>{i(n.current,z),n.current&&("number"==typeof t?e.navigate(t):await e.navigate(t,{fromRouteId:r,...a}))}),[e,r])}():function(){o(W(),"useNavigate() may be used only in the context of a component.");let e=t.useContext($),{basename:r,navigator:n}=t.useContext(D),{matches:a}=t.useContext(H),{pathname:s}=V(),l=JSON.stringify(C(a)),u=t.useRef(!1);return G((()=>{u.current=!0})),t.useCallback(((t,a={})=>{if(i(u.current,z),!u.current)return;if("number"==typeof t)return void n.go(t);let o=A(t,JSON.parse(l),s,"path"===a.relative);null==e&&"/"!==r&&(o.pathname="/"===o.pathname?r:N([r,o.pathname])),(a.replace?n.replace:n.push)(o,a.state,a)}),[r,n,l,s,e])}()}function J(e,{relative:r}={}){let{matches:n}=t.useContext(H),{pathname:a}=V(),o=JSON.stringify(C(n));return t.useMemo((()=>A(e,JSON.parse(o),a,"path"===r)),[e,o,a,r])}function K(e,r,n,a){o(W(),"useRoutes() may be used only in the context of a component.");let{navigator:s}=t.useContext(D),{matches:l}=t.useContext(H),u=l[l.length-1],h=u?u.params:{},d=(u&&u.pathname,u?u.pathnameBase:"/");u&&u.route;let f,m=V();if(r){let e="string"==typeof r?c(r):r;o("/"===d||e.pathname?.startsWith(d),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${d}" but pathname "${e.pathname}" was given in the \`location\` prop.`),f=e}else f=m;let y=f.pathname||"/",g=y;if("/"!==d){let e=d.replace(/^\//,"").split("/");g="/"+y.replace(/^\//,"").split("/").slice(e.length).join("/")}let v=p(e,{pathname:g}),w=function(e,r=[],n=null){if(null==e){if(!n)return null;if(n.errors)e=n.matches;else{if(0!==r.length||n.initialized||!(n.matches.length>0))return null;e=n.matches}}let a=e,s=n?.errors;if(null!=s){let e=a.findIndex((e=>e.route.id&&void 0!==s?.[e.route.id]));o(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,e+1))}let l=!1,u=-1;if(n)for(let e=0;e=0?a.slice(0,u+1):[a[0]];break}}}return a.reduceRight(((e,o,c)=>{let p,h=!1,d=null,f=null;var m,y;n&&(p=s&&o.route.id?s[o.route.id]:void 0,d=o.route.errorElement||Z,l&&(u<0&&0===c?(m="route-fallback",y="No `HydrateFallback` element provided to render during initial hydration",!1||re[m]||(re[m]=!0,i(!1,y)),h=!0,f=null):u===c&&(h=!0,f=o.route.hydrateFallbackElement||null)));let g=r.concat(a.slice(0,c+1)),v=()=>{let r;return r=p?d:h?f:o.route.Component?t.createElement(o.route.Component,null):o.route.element?o.route.element:e,t.createElement(X,{match:o,routeContext:{outlet:e,matches:g,isDataRoute:null!=n},children:r})};return n&&(o.route.ErrorBoundary||o.route.errorElement||0===c)?t.createElement(Q,{location:n.location,revalidation:n.revalidation,component:d,error:p,children:v(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):v()}),null)}(v&&v.map((e=>Object.assign({},e,{params:Object.assign({},h,e.params),pathname:N([d,s.encodeLocation?s.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?d:N([d,s.encodeLocation?s.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),l,n,a);return r&&w?t.createElement(B.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...f},navigationType:"POP"}},w):w}function Y(){let e=function(){let e=t.useContext(U),r=function(e){let r=t.useContext(F);return o(r,ee(e)),r}("useRouteError"),n=te("useRouteError");return void 0!==e?e:r.errors?.[n]}(),r=k(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return t.createElement(t.Fragment,null,t.createElement("h2",null,"Unexpected Application Error!"),t.createElement("h3",{style:{fontStyle:"italic"}},r),n?t.createElement("pre",{style:a},n):null,null)}t.createContext(null);var Z=t.createElement(Y,null),Q=class extends t.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?t.createElement(H.Provider,{value:this.props.routeContext},t.createElement(U.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function X({routeContext:e,match:r,children:n}){let a=t.useContext($);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),t.createElement(H.Provider,{value:e},n)}function ee(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function te(e){let r=function(e){let r=t.useContext(H);return o(r,ee(e)),r}(e),n=r.matches[r.matches.length-1];return o(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}var re={};function ne(e){o(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function ae({basename:e="/",children:r=null,location:n,navigationType:a="POP",navigator:s,static:l=!1}){o(!W(),"You cannot render a inside another . You should never have more than one in your app.");let u=e.replace(/^\/*/,"/"),p=t.useMemo((()=>({basename:u,navigator:s,static:l,future:{}})),[u,s,l]);"string"==typeof n&&(n=c(n));let{pathname:h="/",search:d="",hash:f="",state:m=null,key:y="default"}=n,g=t.useMemo((()=>{let e=j(h,u);return null==e?null:{location:{pathname:e,search:d,hash:f,state:m,key:y},navigationType:a}}),[u,h,d,f,m,y,a]);return i(null!=g,` is not able to match the URL "${h}${d}${f}" because it does not start with the basename, so the won't render anything.`),null==g?null:t.createElement(D.Provider,{value:p},t.createElement(B.Provider,{children:r,value:g}))}function oe({children:e,location:t}){return K(ie(e),t)}function ie(e,r=[]){let n=[];return t.Children.forEach(e,((e,a)=>{if(!t.isValidElement(e))return;let i=[...r,a];if(e.type===t.Fragment)return void n.push.apply(n,ie(e.props.children,i));o(e.type===ne,`[${"string"==typeof e.type?e.type:e.type.name}] is not a component. All component children of must be a or `),o(!e.props.index||!e.props.children,"An index route cannot have child routes.");let s={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:!0===e.props.hasErrorBoundary||null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(s.children=ie(e.props.children,i)),n.push(s)})),n}t.memo((function({routes:e,future:t,state:r}){return K(e,void 0,r,t)})),t.Component;var se="get",le="application/x-www-form-urlencoded";function ue(e){return null!=e&&"string"==typeof e.tagName}var ce=null,pe=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function he(e){return null==e||pe.has(e)?e:(i(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${le}"`),null)}function de(e,t){if(!1===e||null==e)throw new Error(t)}function fe(e){return null!=e&&(null==e.href?"preload"===e.rel&&"string"==typeof e.imageSrcSet&&"string"==typeof e.imageSizes:"string"==typeof e.rel&&"string"==typeof e.href)}function me(e,t,r,n,a,o){let i=(e,t)=>!r[t]||e.route.id!==r[t].route.id,s=(e,t)=>r[t].pathname!==e.pathname||r[t].route.path?.endsWith("*")&&r[t].params["*"]!==e.params["*"];return"assets"===o?t.filter(((e,t)=>i(e,t)||s(e,t))):"data"===o?t.filter(((t,o)=>{let l=n.routes[t.route.id];if(!l||!l.hasLoader)return!1;if(i(t,o)||s(t,o))return!0;if(t.route.shouldRevalidate){let n=t.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:r[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if("boolean"==typeof n)return n}return!0})):[]}function ye(){let e=t.useContext($);return de(e,"You must render this element inside a element"),e}function ge(){let e=t.useContext(F);return de(e,"You must render this element inside a element"),e}Symbol("SingleFetchRedirect"),t.Component;var ve=t.createContext(void 0);function we(){let e=t.useContext(ve);return de(e,"You must render this element inside a element"),e}function be(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function xe({page:e,...r}){let{router:n}=ye(),a=t.useMemo((()=>p(n.routes,e,n.basename)),[n.routes,e,n.basename]);return a?t.createElement(Pe,{page:e,matches:a,...r}):(console.warn(`Tried to prefetch ${e} but no routes matched.`),null)}function Se(e){let{manifest:r,routeModules:n}=we(),[a,o]=t.useState([]);return t.useEffect((()=>{let t=!1;return async function(e,t,r){return function(e,t){let r=new Set,n=new Set(t);return e.reduce(((e,a)=>{if(t&&(null==(o=a)||"string"!=typeof o.page)&&"script"===a.as&&a.href&&n.has(a.href))return e;var o;let i=JSON.stringify(function(e){let t={},r=Object.keys(e).sort();for(let n of r)t[n]=e[n];return t}(a));return r.has(i)||(r.add(i),e.push({key:i,link:a})),e}),[])}((await Promise.all(e.map((async e=>{let n=t.routes[e.route.id];if(n){let e=await async function(e,t){if(e.id in t)return t[e.id];try{let r=await import(e.module);return t[e.id]=r,r}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise((()=>{}))}}(n,r);return e.links?e.links():[]}return[]})))).flat(1).filter(fe).filter((e=>"stylesheet"===e.rel||"preload"===e.rel)).map((e=>"stylesheet"===e.rel?{...e,rel:"prefetch",as:"style"}:{...e,rel:"prefetch"})))}(e,r,n).then((e=>{t||o(e)})),()=>{t=!0}}),[e,r,n]),a}function Pe({page:e,matches:r,...n}){let a=V(),{manifest:o,routeModules:i}=we(),{loaderData:s,matches:l}=ge(),u=t.useMemo((()=>me(e,r,l,o,a,"data")),[e,r,l,o,a]),c=t.useMemo((()=>me(e,r,l,o,a,"assets")),[e,r,l,o,a]),p=t.useMemo((()=>{if(e===a.pathname+a.search+a.hash)return[];let t=new Set,n=!1;if(r.forEach((e=>{let r=o.routes[e.route.id];r&&r.hasLoader&&(!u.some((t=>t.route.id===e.route.id))&&e.route.id in s&&i[e.route.id]?.shouldRevalidate||r.hasClientLoader?n=!0:t.add(e.route.id))})),0===t.size)return[];let l=function(e){let t="string"==typeof e?new URL(e,"undefined"==typeof window?"server://singlefetch/":window.location.origin):e;return"/"===t.pathname?t.pathname="_root.data":t.pathname=`${t.pathname.replace(/\/$/,"")}.data`,t}(e);return n&&t.size>0&&l.searchParams.set("_routes",r.filter((e=>t.has(e.route.id))).map((e=>e.route.id)).join(",")),[l.pathname+l.search]}),[s,a,o,u,r,e,i]),h=t.useMemo((()=>function(e,t){return r=e.map((e=>{let r=t.routes[e.route.id];if(!r)return[];let n=[r.module];return r.imports&&(n=n.concat(r.imports)),n})).flat(1),[...new Set(r)];var r}(c,o)),[c,o]),d=Se(c);return t.createElement(t.Fragment,null,p.map((e=>t.createElement("link",{key:e,rel:"prefetch",as:"fetch",href:e,...n}))),h.map((e=>t.createElement("link",{key:e,rel:"modulepreload",href:e,...n}))),d.map((({key:e,link:r})=>t.createElement("link",{key:e,...r}))))}ve.displayName="FrameworkContext";function _e(...e){return t=>{e.forEach((e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)}))}}var je="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;try{je&&(window.__reactRouterVersion="7.0.1")}catch(e){}function Ee({basename:e,children:r,window:n}){let o=t.useRef();null==o.current&&(o.current=a({window:n,v5Compat:!0}));let i=o.current,[s,l]=t.useState({action:i.action,location:i.location}),u=t.useCallback((e=>{t.startTransition((()=>l(e)))}),[l]);return t.useLayoutEffect((()=>i.listen(u)),[i,u]),t.createElement(ae,{basename:e,children:r,location:s.location,navigationType:s.action,navigator:i})}var Ce=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ae=t.forwardRef((function({onClick:e,discover:r="render",prefetch:n="none",relative:a,reloadDocument:s,replace:l,state:c,target:p,to:h,preventScrollReset:d,viewTransition:f,...m},y){let g,{basename:v}=t.useContext(D),w="string"==typeof h&&Ce.test(h),b=!1;if("string"==typeof h&&w&&(g=h,je))try{let e=new URL(window.location.href),t=h.startsWith("//")?new URL(e.protocol+h):new URL(h),r=j(t.pathname,v);t.origin===e.origin&&null!=r?h=r+t.search+t.hash:b=!0}catch(e){i(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let x=function(e,{relative:r}={}){o(W(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:a}=t.useContext(D),{hash:i,pathname:s,search:l}=J(e,{relative:r}),u=s;return"/"!==n&&(u="/"===s?n:N([n,s])),a.createHref({pathname:u,search:l,hash:i})}(h,{relative:a}),[S,P,_]=function(e,r){let n=t.useContext(ve),[a,o]=t.useState(!1),[i,s]=t.useState(!1),{onFocus:l,onBlur:u,onMouseEnter:c,onMouseLeave:p,onTouchStart:h}=r,d=t.useRef(null);t.useEffect((()=>{if("render"===e&&s(!0),"viewport"===e){let e=new IntersectionObserver((e=>{e.forEach((e=>{s(e.isIntersecting)}))}),{threshold:.5});return d.current&&e.observe(d.current),()=>{e.disconnect()}}}),[e]),t.useEffect((()=>{if(a){let e=setTimeout((()=>{s(!0)}),100);return()=>{clearTimeout(e)}}}),[a]);let f=()=>{o(!0)},m=()=>{o(!1),s(!1)};return n?"intent"!==e?[i,d,{}]:[i,d,{onFocus:be(l,f),onBlur:be(u,m),onMouseEnter:be(c,f),onMouseLeave:be(p,m),onTouchStart:be(h,f)}]:[!1,d,{}]}(n,m),E=function(e,{target:r,replace:n,state:a,preventScrollReset:o,relative:i,viewTransition:s}={}){let l=q(),c=V(),p=J(e,{relative:i});return t.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,r)){t.preventDefault();let r=void 0!==n?n:u(c)===u(p);l(e,{replace:r,state:a,preventScrollReset:o,relative:i,viewTransition:s})}}),[c,l,p,n,a,r,e,o,i,s])}(h,{replace:l,state:c,target:p,preventScrollReset:d,relative:a,viewTransition:f}),C=t.createElement("a",{...m,..._,href:g||x,onClick:b||s?e:function(t){e&&e(t),t.defaultPrevented||E(t)},ref:_e(y,P),target:p,"data-discover":w||"render"!==r?void 0:"true"});return S&&!w?t.createElement(t.Fragment,null,C,t.createElement(xe,{page:x})):C}));function Ne(e){let r=t.useContext($);return o(r,function(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}(e)),r}Ae.displayName="Link",t.forwardRef((function({"aria-current":e="page",caseSensitive:r=!1,className:n="",end:a=!1,style:i,to:s,viewTransition:l,children:u,...c},p){let h=J(s,{relative:c.relative}),d=V(),f=t.useContext(F),{navigator:m,basename:y}=t.useContext(D),g=null!=f&&function(e,r={}){let n=t.useContext(M);o(null!=n,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:a}=Ne("useViewTransitionState"),i=J(e,{relative:r.relative});if(!n.isTransitioning)return!1;let s=j(n.currentLocation.pathname,a)||n.currentLocation.pathname,l=j(n.nextLocation.pathname,a)||n.nextLocation.pathname;return null!=P(i.pathname,l)||null!=P(i.pathname,s)}(h)&&!0===l,v=m.encodeLocation?m.encodeLocation(h).pathname:h.pathname,w=d.pathname,b=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;r||(w=w.toLowerCase(),b=b?b.toLowerCase():null,v=v.toLowerCase()),b&&y&&(b=j(b,y)||b);const x="/"!==v&&v.endsWith("/")?v.length-1:v.length;let S,_=w===v||!a&&w.startsWith(v)&&"/"===w.charAt(x),E=null!=b&&(b===v||!a&&b.startsWith(v)&&"/"===b.charAt(v.length)),C={isActive:_,isPending:E,isTransitioning:g},A=_?e:void 0;S="function"==typeof n?n(C):[n,_?"active":null,E?"pending":null,g?"transitioning":null].filter(Boolean).join(" ");let N="function"==typeof i?i(C):i;return t.createElement(Ae,{...c,"aria-current":A,className:S,ref:p,style:N,to:s,viewTransition:l},"function"==typeof u?u(C):u)})).displayName="NavLink",t.forwardRef((({discover:e="render",fetcherKey:r,navigate:n,reloadDocument:a,replace:i,state:s,method:l=se,action:c,onSubmit:p,relative:h,preventScrollReset:d,viewTransition:f,...m},y)=>{let g=function(){let{router:e}=Ne("useSubmit"),{basename:r}=t.useContext(D),n=te("useRouteId");return t.useCallback((async(t,a={})=>{let{action:o,method:i,encType:s,formData:l,body:u}=function(e,t){let r,n,a,o,i;if(ue(s=e)&&"form"===s.tagName.toLowerCase()){let i=e.getAttribute("action");n=i?j(i,t):null,r=e.getAttribute("method")||se,a=he(e.getAttribute("enctype"))||le,o=new FormData(e)}else if(function(e){return ue(e)&&"button"===e.tagName.toLowerCase()}(e)||function(e){return ue(e)&&"input"===e.tagName.toLowerCase()}(e)&&("submit"===e.type||"image"===e.type)){let i=e.form;if(null==i)throw new Error('Cannot submit a + +); diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/header.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/header.tsx new file mode 100644 index 000000000..4ca274448 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/header.tsx @@ -0,0 +1,28 @@ +/** + * WordPress dependencies + */ +import { Button } from '@wordpress/components'; +import { chevronLeft } from '@wordpress/icons'; + +/** + * Defines the props structure for SidebarHeader. + * + * @since 3.18.0 + */ +interface SidebarHeaderProps { + onBackClick: () => void; +} + +/** + * Header component for the Traffic Boost sidebar. + * + * @since 3.18.0 + * + * @param {SidebarHeaderProps} props Component props. + */ +export const SidebarHeader = ( { onBackClick }: SidebarHeaderProps ): React.JSX.Element => ( +
+
+); diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/icons.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/icons.tsx new file mode 100644 index 000000000..df04c1a02 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/icons.tsx @@ -0,0 +1,31 @@ +/** + * WordPress dependencies + */ +import { Button, Icon } from '@wordpress/components'; +import { desktop, edit, trendingUp } from '@wordpress/icons'; + +/** + * Internal dependencies + */ +import { LeafIcon } from '../../../../../common/icons/leaf-icon'; + +/** + * Component that displays stats and action buttons. + * + * @since 3.18.0 + */ +export const SidebarIcons = (): React.JSX.Element => ( +
+
+
+ 14% + +
+
+
+
+
+); diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/post-details.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/post-details.tsx new file mode 100644 index 000000000..10655c79a --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/post-details.tsx @@ -0,0 +1,57 @@ +/** + * WordPress dependencies + */ +import { format } from '@wordpress/date'; +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +import { HydratedPost } from '../../../../../common/base-wordpress-provider'; +import { Thumbnail } from '../../../../../common/components/thumbnail'; + +/** + * Defines the props structure for PostDetailsSidebar. + * + * @since 3.18.0 + */ +interface PostDetailsSidebarProps { + post: HydratedPost; +} + +/** + * Component that displays post details including thumbnail and meta information. + * + * @since 3.18.0 + * + * @param {PostDetailsSidebarProps} props Component props. + */ +export const PostDetailsSidebar = ( { post }: PostDetailsSidebarProps ): React.JSX.Element => { + const prettyDate = format( 'M j, o', post.date ?? '' ); + + return ( +
+ +
+
+ { post.title.rendered !== '' + ? post.title.rendered + : __( '(no title)', 'wp-parsely' ) } +
+
+ { prettyDate } + { post.author?.name } +
+
+ { post.categories.map( ( category ) => ( + { category.name } + ) ) } +
+
+
+ ); +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.scss b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.scss new file mode 100644 index 000000000..f71abbd66 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.scss @@ -0,0 +1,334 @@ +@import "../../../../../common/css/functions"; +@import "../../../../../common/css/variables"; + +.traffic-boost-sidebar { + display: flex; + width: to_rem(430px); + flex-direction: column; + align-items: flex-start; + box-shadow: + 0 1px 1px 0 rgba(0, 0, 0, 0.03), + 0 1px 2px 0 rgba(0, 0, 0, 0.02), + 0 3px 3px 0 rgba(0, 0, 0, 0.02), + 0 4px 4px 0 rgba(0, 0, 0, 0.01); + background: var(--sidebar-white); + border-radius: 8px; + border-bottom: 1px solid var(--gray-200); + height: calc(100vh - to_rem(97px)); + padding: var(--grid-unit-20) var(--grid-unit-30); + + .traffic-boost-sidebar-header { + display: flex; + min-height: to_rem(40px); + align-items: center; + gap: var(--grid-unit-20); + align-self: stretch; + margin-bottom: var(--grid-unit-20); + + h2 { + margin: 0; + overflow: hidden; + color: var(--gray-900); + text-overflow: ellipsis; + font-size: var(--font-size--extra-large); + font-weight: 500; + line-height: var(--grid-unit-30); + } + } + + .traffic-boost-sidebar-content { + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + flex: 1; + min-height: 0; + width: 100%; + gap: var(--grid-unit-15); + + .traffic-boost-sidebar-icons { + display: flex; + align-items: center; + gap: 12px; + align-self: stretch; + + .traffic-boost-sidebar-stats { + display: flex; + align-items: center; + align-content: center; + gap: var(--grid-unit-05, 4px) var(--grid-unit-20); + flex: 1 0 0; + flex-wrap: wrap; + + > div { + display: flex; + align-items: center; + gap: var(--grid-unit-05); + } + + span { + color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 16px; + } + + svg { + fill: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); + } + } + + .traffic-boost-sidebar-icons-actions { + display: flex; + align-items: center; + gap: var(--grid-unit-10); + color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); + + button { + margin: 0 !important; + min-width: 30px; + height: 30px; + padding: 0; + } + + svg { + fill: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9)); + } + } + } + + .traffic-boost-post-details { + display: flex; + min-height: to_rem(40px); + gap: var(--grid-unit-20); + align-items: flex-start; + + .post-details { + display: flex; + min-height: var(--grid-unit-40); + flex-direction: column; + align-items: flex-start; + gap: var(--grid-unit-05, 4px); + flex: 1; + overflow: hidden; + + .post-title { + display: flex; + align-items: center; + gap: var(--grid-unit-5); + align-self: stretch; + font-size: var(--grid-unit-25); + font-style: normal; + font-weight: 600; + line-height: var(--grid-unit-30); + letter-spacing: -0.4px; + } + + .post-meta { + display: flex; + align-items: center; + align-content: center; + gap: var(--grid-unit-5) var(--grid-unit-10); + align-self: stretch; + flex-wrap: wrap; + color: var(--gray-500); + } + + .post-categories { + display: flex; + gap: var(--grid-unit-5); + + span { + background: var(--gray-400); + border-radius: to_rem(6px); + padding: 2px var(--grid-unit-10); + font-size: var(--font-size--smaller); + font-weight: 500; + line-height: var(--font-size--large); + color: var(--sidebar-black); + } + } + } + } + } + + .traffic-boost-sidebar-footer { + margin-top: var(--grid-unit-20); + width: 100%; + flex-shrink: 0; + + .components-button.has-icon { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + padding-left: var(--grid-unit-15); + padding-right: var(--grid-unit-15); + } + } + + .traffic-boost-sidebar-tabs { + display: flex; + flex-direction: column; + flex: 1; + width: calc(100% + var(--grid-unit-30) * 2); + margin-left: calc(var(--grid-unit-30) * -1); + margin-right: calc(var(--grid-unit-30) * -1); + + .components-tab-panel__tab-content { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: hidden; + } + + .components-tab-panel__tabs { + display: flex; + width: 100%; + position: relative; + border-bottom: 1px solid var(--gray-400); + border-top: 1px solid var(--gray-400); + padding: 0; + margin: 0; + + .components-tab-panel__tabs-item { + flex: 1; + padding: var(--grid-unit-15) var(--grid-unit-40); + margin: 0; + height: to_rem(48px); + + &.is-active { + box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 -1.5px 0 0 var(--wp-admin-theme-color); + } + + .tab-count { + display: inline-flex; + padding: var(--grid-unit-5) var(--grid-unit-10); + justify-content: center; + align-items: center; + gap: 10px; + border-radius: 2px; + background: var(--gray-400); + margin-left: var(--grid-unit-20); + } + + &.icon-only-tab { + flex: 0 0 40px; + width: 56px !important; + min-width: 56px !important; + padding: var(--grid-unit-10) !important; + justify-content: center !important; + + .icon { + color: var(--gray-600); + width: 24px !important; + height: 24px !important; + + svg { + width: 24px !important; + height: 24px !important; + } + } + + &:hover .icon { + color: var(--gray-900); + } + } + } + } + } + + .traffic-boost-suggestions { + display: flex; + flex-direction: column; + flex: 1; + min-height: 0; + height: 100%; + + .traffic-boost-suggestions-list { + display: flex; + flex-direction: column; + flex: 1 1 auto; + overflow-y: auto; + height: 0; + min-height: 0; + + .traffic-boost-single-suggestion { + flex: 0 0 auto; + display: flex; + border-bottom: 1px solid var(--gray-350); + padding: var(--Scales-grid-unit-20, 16px) var(--Scales-grid-unit-30, 24px); + align-items: center; + gap: var(--Scales-grid-unit-15, 12px); + + &.active { + border-bottom: 1px solid var(--Scales-Theme-theme-alpha-08, rgba(56, 88, 233, 0.08)); + background: var(--Scales-Theme-theme-alpha-04, rgba(56, 88, 233, 0.04)); + } + + .single-suggestion-title { + overflow: hidden; + color: var(--sidebar-black); + text-overflow: ellipsis; + font-size: var(--font-size--medium); + font-style: normal; + font-weight: 400; + line-height: var(--grid-unit-30); + } + } + } + + .suggestions-pagination { + margin-top: auto; + display: flex; + justify-content: flex-end; + align-items: center; + gap: var(--grid-unit-30); + flex: 0 0 auto; + color: var(--sidebar-black); + font-size: var(--font-size--smaller); + font-style: normal; + font-weight: 500; + line-height: var(--grid-unit-20); + text-transform: uppercase; + padding: var(--grid-unit-15, 12px) var(--grid-unit-30, 24px); + + + .page-selector { + display: flex; + align-items: center; + gap: var(--grid-unit-5); + + .components-number-control { + width: 30px; + + input { + height: 30px; + background: var(--sidebar-white); + border: 0; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + + &::-webkit-inner-spin-button, + &::-webkit-outer-spin-button { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + } + } + } + } + + .page-navigation { + display: flex; + gap: 0.25rem; + } + } + } + + +} + diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.tsx new file mode 100644 index 000000000..337e8e828 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/sidebar.tsx @@ -0,0 +1,140 @@ +/** + * WordPress dependencies + */ +import { Icon, Spinner, TabPanel } from '@wordpress/components'; +import { useCallback, useEffect, useState } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { settings } from '@wordpress/icons'; +import { useNavigate } from 'react-router-dom'; + +/** + * Internal dependencies + */ +import { HydratedPost } from '../../../../../common/base-wordpress-provider'; +import { TrafficBoostSuggestion } from '../../provider'; +import { SidebarFooter } from './footer'; +import { SidebarHeader } from './header'; +import { SidebarIcons } from './icons'; +import { PostDetailsSidebar } from './post-details'; +import './sidebar.scss'; +import { TabsContent } from './tabs-content'; + +/** + * Defines the props structure for TrafficBoostSidebar. + * + * @since 3.18.0 + */ +interface TrafficBoostSidebarProps { + isLoading: boolean; + post: HydratedPost | null; + onSuggestionClick?: ( suggestion: TrafficBoostSuggestion ) => void; +} + +/** + * Sidebar component for the Traffic Boost feature. + * Displays post details, stats, and manages boost links functionality. + * + * @since 3.18.0 + * + * @param {TrafficBoostSidebarProps} props Component props. + */ +export const TrafficBoostSidebar = ( { + isLoading, + post, + onSuggestionClick, +}: TrafficBoostSidebarProps ): React.JSX.Element => { + const navigate = useNavigate(); + + const [ numSuggestions, setNumSuggestions ] = useState( 0 ); + const [ numBoostLinks, setNumBoostLinks ] = useState( 0 ); + + /** + * Handles tab counters in the UI. + * + * @since 3.18.0 + */ + useEffect( () => { + const updateTabCount = ( + tabSelector: string, + count: number + ) => { + const tab = document.querySelector( tabSelector ); + if ( ! tab || count <= 0 ) { + return; + } + + let counter = tab.querySelector( '.tab-count' ) as HTMLElement; + if ( ! counter ) { + counter = document.createElement( 'span' ); + counter.className = 'tab-count'; + tab.appendChild( counter ); + } + counter.textContent = count.toString(); + }; + + updateTabCount( '.components-tab-panel__tabs-item.suggestions-tab', numSuggestions ); + updateTabCount( '.components-tab-panel__tabs-item.boost-links-tab', numBoostLinks ); + }, [ numBoostLinks, numSuggestions ] ); + + /** + * Handles the total items change for suggestions. + * + * This needs to be a callback to prevent triggering duplicate calls to the API. + * + * @param {number} totalItems The total number of items. + * @since 3.18.0 + */ + const handleTotalItemsChange = useCallback( ( totalItems: number ) => { + setNumSuggestions( totalItems ); + setNumBoostLinks( totalItems ); // TODO: Replace this with a query that gets the boost links. + }, [] ); + + return ( +
+ navigate( '/traffic-boost' ) } /> + +
+ { isLoading ? ( + + ) : post && ( + <> +
+ + +
+ , + }, + ] } + > + { ( tab ) => } + + + ) } +
+ +
+ ); +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/single-suggestion.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/single-suggestion.tsx new file mode 100644 index 000000000..c3788d785 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/single-suggestion.tsx @@ -0,0 +1,57 @@ +/** + * Internal Dependencies + */ +import { Thumbnail } from '../../../../../common/components/thumbnail'; +import { TrafficBoostSuggestion } from '../../provider'; + +/** + * Defines the props structure for SingleSuggestion. + * + * @since 3.18.0 + */ +type SingleSuggestionProps = { + suggestion: TrafficBoostSuggestion; + isActive: boolean; + onClick?: () => void; +}; + +/** + * Displays a single suggestion for traffic boosting. + * + * @since 3.18.0 + * + * @param {SingleSuggestionProps} props Component props. + */ +export const SingleSuggestion = ( { + suggestion, + isActive, + onClick, +}: SingleSuggestionProps ): React.JSX.Element => { + const suggestedPost = suggestion.source_post; + return ( +
{ + if ( e.key === 'Enter' || e.key === ' ' ) { + onClick?.(); + } + } } + role="button" + tabIndex={ 0 } + > +
+ +
+
+
+ { suggestedPost.title.rendered } +
+
+
+ ); +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/suggestions-list.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/suggestions-list.tsx new file mode 100644 index 000000000..5fc8edee1 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/suggestions-list.tsx @@ -0,0 +1,246 @@ +/** + * WordPress dependencies + */ +import { + Button, + __experimentalNumberControl as NumberControl, + Spinner, +} from '@wordpress/components'; +import { debounce } from '@wordpress/compose'; +import { useCallback, useEffect, useRef, useState } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { chevronLeft, chevronRight } from '@wordpress/icons'; + +/** + * Internal dependencies + */ +import { HydratedPost } from '../../../../../common/base-wordpress-provider'; +import { DashboardProvider } from '../../../../provider'; +import { TrafficBoostSuggestion } from '../../provider'; +import { SingleSuggestion } from './single-suggestion'; + +/** + * Defines the props structure for SuggestionsList. + * + * @since 3.18.0 + */ +interface SuggestionsListProps { + minItemsPerPage?: number; + activeSuggestionId?: number; + onTotalItemsChange?: ( total: number ) => void; + onSuggestionClick?: ( suggestion: TrafficBoostSuggestion ) => void; +} + +/** + * Displays a list of suggestions for traffic boosting. + * + * @since 3.18.0 + * + * @param {SuggestionsListProps} props - Component props. + */ +export const SuggestionsList = ( { + activeSuggestionId, + minItemsPerPage = 3, + onTotalItemsChange, + onSuggestionClick, +}: SuggestionsListProps ): React.JSX.Element => { + const [ posts, setPosts ] = useState( [] ); + const [ currentPage, setCurrentPage ] = useState( 1 ); + const [ totalPages, setTotalPages ] = useState( 1 ); + const [ isLoading, setIsLoading ] = useState( true ); + const [ itemsPerPage, setItemsPerPage ] = useState( null ); + const containerRef = useRef( null ); + const lastContainerHeight = useRef( 0 ); + + /** + * Calculates the number of items per page based on the container height. + * + * @since 3.18.0 + */ + const calculateItemsPerPage = useCallback( () => { + if ( ! containerRef.current || 0 === totalPages ) { + return; + } + + // Height of the container. + const containerHeight = containerRef.current.clientHeight; + + // If the container height hasn't changed, don't recalculate. + if ( containerHeight === lastContainerHeight.current ) { + return; + } + lastContainerHeight.current = containerHeight; + + // Size of a single suggestion item including border. + const itemHeight = 85; // 84px + 2px border + // Size of pagination including border. + const paginationHeight = totalPages > 0 ? 60 : 0; + + const availableHeight = containerHeight - paginationHeight; + const calculatedItems = Math.floor( availableHeight / itemHeight ); + let newItemsPerPage = Math.max( 1, calculatedItems ); + + if ( newItemsPerPage < minItemsPerPage ) { + newItemsPerPage = minItemsPerPage; + } + + setItemsPerPage( newItemsPerPage ); + }, [ minItemsPerPage, totalPages ] ); + + /** + * Debounced version of calculateItemsPerPage to prevent excessive recalculations. + * + * @since 3.18.0 + */ + const debouncedCalculateItemsPerPage = debounce( calculateItemsPerPage, 200 ); + + /** + * Handles the resize event to recalculate items per page. + * + * @since 3.18.0 + */ + useEffect( () => { + debouncedCalculateItemsPerPage(); + + const resizeObserver = new ResizeObserver( debouncedCalculateItemsPerPage ); + + if ( containerRef.current ) { + resizeObserver.observe( containerRef.current ); + } + + return () => { + resizeObserver.disconnect(); + debouncedCalculateItemsPerPage.cancel(); + }; + }, [ debouncedCalculateItemsPerPage ] ); + + /** + * Fetches posts when the current page or items per page changes, + * either triggered by the user or automatically by the resize observer. + * + * @since 3.18.0 + */ + useEffect( () => { + if ( itemsPerPage === null ) { + return; + } + + const fetchPosts = async () => { + setIsLoading( true ); + // TODO: Replace this with a query that gets the suggestions. + try { + const fetchedPosts = await DashboardProvider.getInstance().getPosts( { + per_page: itemsPerPage, + page: currentPage, + order: 'asc', + } ); + + setPosts( fetchedPosts.data ); + setTotalPages( fetchedPosts.total_pages ); + onTotalItemsChange?.( fetchedPosts.total_items ); + } catch ( error ) { + // eslint-disable-next-line no-console + console.error( error ); + } finally { + setIsLoading( false ); + } + }; + + fetchPosts(); + }, [ currentPage, itemsPerPage, onTotalItemsChange ] ); + + /** + * Handles the previous page navigation. + * + * @since 3.18.0 + */ + const handlePrevious = () => { + setCurrentPage( ( prev ) => Math.max( prev - 1, 1 ) ); + }; + + /** + * Handles the next page navigation. + * + * @since 3.18.0 + */ + const handleNext = () => { + setCurrentPage( ( prev ) => Math.min( prev + 1, totalPages ) ); + }; + + /** + * Renders the suggestions list and handles loading and empty state. + * + * @since 3.18.0 + */ + const renderSuggestionsList = () => { + if ( ( isLoading && posts.length === 0 ) || itemsPerPage === null ) { + return ; + } + + if ( posts.length === 0 ) { + return

{ __( 'No posts found.', 'wp-parsely' ) }

; + } + + return ( +
+ { posts.map( ( post ) => { + const suggestion = { + source_post: post, + destination_post: post, // Using same post as placeholder + }; + return ( + onSuggestionClick?.( suggestion ) } + /> + ); + } ) } +
+ ); + }; + + return ( +
+ { renderSuggestionsList() } + { totalPages > 1 && ( +
+
+ { __( 'Page', 'wp-parsely' ) } + { + let selectedPage = parseInt( value ?? '1', 10 ); + if ( selectedPage > totalPages ) { + selectedPage = totalPages; + } else if ( selectedPage < 1 ) { + selectedPage = 1; + } + setCurrentPage( selectedPage ); + } } + min={ 1 } + max={ totalPages } + dragDirection="e" + /> + + { __( 'of', 'wp-parsely' ) } { totalPages } + +
+
+
+
+ ) } +
+ ); +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs-content.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs-content.tsx new file mode 100644 index 000000000..76d2e2396 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs-content.tsx @@ -0,0 +1,51 @@ +/** + * External dependencies + */ +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +import { TrafficBoostSuggestion } from '../../provider'; +import BoostLinksTab from './tabs/boost-links-tab'; +import SettingsTab from './tabs/settings-tab'; +import SuggestionsTab from './tabs/suggestions-tab'; + +/** + * Defines the props structure for TabsContent. + * + * @since 3.18.0 + */ +interface TabsContentProps { + activeTab: { name: string }; + totalSuggestions: number; + totalBoostLinks: number; + onSuggestionClick?: ( suggestion: TrafficBoostSuggestion ) => void; + onTotalItemsChange?: ( totalItems: number ) => void; +} + +/** + * Component that renders the content for each tab, depending on the active tab. + * + * @param {TabsContentProps} props Component props. + * @since 3.18.0 + */ +export const TabsContent = ( { + activeTab, + onSuggestionClick, + onTotalItemsChange, +}: TabsContentProps ): React.JSX.Element => { + switch ( activeTab.name ) { + case 'suggestions': + return ; + case 'boost-links': + return ; + case 'settings': + return ; + default: + return
{ __( 'Select a tab', 'wp-parsely' ) }
; + } +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/boost-links-tab.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/boost-links-tab.tsx new file mode 100644 index 000000000..b990c94c4 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/boost-links-tab.tsx @@ -0,0 +1,65 @@ +/** + * External dependencies + */ +import { useEffect, useState } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; + +/** + * Internal dependencies + */ +import { HydratedPost } from '../../../../../../common/base-wordpress-provider'; +import { DashboardProvider } from '../../../../../provider'; +import { Spinner } from '@wordpress/components'; + +/** + * Component that renders the boost links tab. + * + * @since 3.18.0 + */ +const BoostLinksTab = (): React.JSX.Element => { + const [ posts, setPosts ] = useState( [] ); + const [ isLoading, setIsLoading ] = useState( true ); + + useEffect( () => { + const fetchPosts = async () => { + try { + const fetchedPosts = await DashboardProvider.getInstance().getPosts( { + per_page: 5, + order: 'desc', + } ); + + setPosts( fetchedPosts.data ); + } catch ( error ) { + console.error( error ); // eslint-disable-line no-console + } finally { + setIsLoading( false ); + } + }; + + setIsLoading( true ); + fetchPosts(); + }, [] ); + + if ( isLoading ) { + return ; + } + + return ( +
+

{ __( 'Boost Links', 'wp-parsely' ) }

+ { posts.length > 0 ? ( +
    + { posts.map( ( post ) => ( +
  • + { post.title.rendered || __( '(no title)', 'wp-parsely' ) } +
  • + ) ) } +
+ ) : ( +

{ __( 'No posts found.', 'wp-parsely' ) }

+ ) } +
+ ); +}; + +export default BoostLinksTab; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/settings-tab.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/settings-tab.tsx new file mode 100644 index 000000000..2f447cfb0 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/settings-tab.tsx @@ -0,0 +1,15 @@ +/** + * Component that renders the settings tab. + * + * @since 3.18.0 + */ +const SettingsTab = (): React.JSX.Element => { + return ( +
+

Settings

+

Hello World

+
+ ); +}; + +export default SettingsTab; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/suggestions-tab.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/suggestions-tab.tsx new file mode 100644 index 000000000..e48618c96 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/components/sidebar/tabs/suggestions-tab.tsx @@ -0,0 +1,49 @@ +/** + * External dependencies + */ +import { useState } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { SuggestionsList } from '../suggestions-list'; +import { TrafficBoostSuggestion } from '../../../provider'; + +/** + * Defines the props structure for SuggestionsTab. + * + * @since 3.18.0 + */ +interface SuggestionsTabProps { + onSuggestionClick?: ( suggestion: TrafficBoostSuggestion ) => void; + onTotalItemsChange?: ( totalItems: number ) => void; +} + +/** + * Component that renders the suggestions tab. + * + * @since 3.18.0 + * + * @param {SuggestionsTabProps} props Component props. + */ +const SuggestionsTab = ( { + onSuggestionClick, + onTotalItemsChange, +}: SuggestionsTabProps ): React.JSX.Element => { + const [ activeSuggestion, setActiveSuggestion ] = useState( null ); + + const handleSuggestionClick = ( suggestion: TrafficBoostSuggestion ) => { + setActiveSuggestion( suggestion ); + onSuggestionClick?.( suggestion ); + }; + + return ( + + ); +}; + +export default SuggestionsTab; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/provider.ts b/src/content-helper/dashboard-page/pages/traffic-boost/provider.ts new file mode 100644 index 000000000..112a9828b --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/provider.ts @@ -0,0 +1,7 @@ +import { HydratedPost } from '../../../common/base-wordpress-provider'; + +export type TrafficBoostSuggestion = { + source_post: HydratedPost; + destination_post: HydratedPost; + // TODO: Add more fields as needed +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/single-post-component.tsx b/src/content-helper/dashboard-page/pages/traffic-boost/single-post-component.tsx new file mode 100644 index 000000000..3fa290629 --- /dev/null +++ b/src/content-helper/dashboard-page/pages/traffic-boost/single-post-component.tsx @@ -0,0 +1,126 @@ +/** + * External dependencies + */ +import { useNavigate, useParams } from 'react-router-dom'; + +/** + * WordPress dependencies + */ +import { useEffect, useState } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { HydratedPost } from '../../../common/base-wordpress-provider'; +import { PageContainer } from '../../components'; +import { DashboardProvider } from '../../provider'; +import { TrafficBoostSidebar } from './components/sidebar/sidebar'; +import { TrafficBoostSuggestion } from './provider'; +import './traffic-boost.scss'; + +/** + * Traffic Boost Post page component. + * + * @since 3.18.0 + */ +export const TrafficBoostPostPage = (): React.JSX.Element => { + const { postId } = useParams(); + const navigate = useNavigate(); + const [ post, setPost ] = useState( null ); + const [ isLoading, setIsLoading ] = useState( true ); + const [ backgroundColor, setBackgroundColor ] = useState(); + const [ activeSuggestion, setActiveSuggestion ] = useState( null ); + + const [ activePost, setActivePost ] = useState( null ); + + /** + * Sets the background color of the page container to the background color of the admin menu. + * + * @since 3.18.0 + */ + useEffect( () => { + const adminMenuBack = document.getElementById( 'adminmenuback' ); + if ( adminMenuBack ) { + const computedStyle = window.getComputedStyle( adminMenuBack ); + setBackgroundColor( computedStyle.backgroundColor ); + } + }, [] ); + + /** + * Fetches the post data from the dashboard provider. + * + * @since 3.18.0 + */ + useEffect( () => { + const fetchPost = async () => { + try { + const fetchedPost = await DashboardProvider.getInstance().getPosts( { + include: [ Number( postId ) ], + } ); + + if ( fetchedPost.data.length > 0 ) { + setPost( fetchedPost.data[ 0 ] ); + } else { + setPost( null ); + } + } catch ( error ) { + console.error( error ); // eslint-disable-line no-console + } finally { + setIsLoading( false ); + } + }; + + setIsLoading( true ); + fetchPost(); + }, [ postId ] ); + + /** + * Redirects to the traffic boost page if no post is found. + * + * @since 3.18.0 + */ + useEffect( () => { + if ( ! isLoading && ! post ) { + navigate( '/traffic-boost' ); + } + }, [ isLoading, post, navigate ] ); + + /** + * Handles the click event on a suggestion. + * + * @since 3.18.0 + * + * @param {TrafficBoostSuggestion} suggestion - The suggestion that was clicked. + */ + const handleSuggestionClick = ( suggestion: TrafficBoostSuggestion ) => { + setActiveSuggestion( suggestion ); + setActivePost( suggestion.source_post ); + }; + + return ( + + + +
+ { activeSuggestion && ( +
+ { activePost?.title.rendered } +
+ ) } +
+
+ ); +}; diff --git a/src/content-helper/dashboard-page/pages/traffic-boost/traffic-boost.scss b/src/content-helper/dashboard-page/pages/traffic-boost/traffic-boost.scss index c06f05766..174e8abaf 100644 --- a/src/content-helper/dashboard-page/pages/traffic-boost/traffic-boost.scss +++ b/src/content-helper/dashboard-page/pages/traffic-boost/traffic-boost.scss @@ -12,3 +12,17 @@ padding: var(--grid-unit-15) 0; } } + +.parsely-menu-page-traffic-boost-single-post { + display: flex; + padding: var(--grid-unit-20) var(--grid-unit-20) var(--grid-unit-20) 0; + align-items: flex-start; + gap: var(--grid-unit-20); + flex: 1 0 0; + align-self: stretch; + + .traffic-boost-preview { + flex: 1 0 0; + align-self: stretch; + } +}