/*! * Name : Visual Portfolio * Author : nK https://nkdev.info */ @use "sass:math"; @use "sass:string"; @use "sass:color"; $escaped-svg-characters: ( ("<", "%3c"), (">", "%3e"), ("#", "%23"), ("(", "%28"), (")", "%29"), ) !default; // Replace `$search` with `$replace` in `$string` // Used on our SVG icon backgrounds for custom forms. // - // @author Hugo Giraudel // @param {String} $string - Initial string // @param {String} $search - Substring to replace // @param {String} $replace ('') - New value // @return {String} - Updated string @function str-replace($string, $search, $replace: "") { $index: string.index($string, $search); @if $index { @return string.slice($string, 1, $index - 1) + $replace + str-replace(string.slice($string, $index + string.length($search)), $search, $replace); } @return $string; } // See https://codepen.io/kevinweber/pen/dXWoRw // - // Requires the use of quotes around data URIs. @function escape-svg($string) { @if string.index($string, "data:image/svg+xml") { @each $char, $encoded in $escaped-svg-characters { $string: str-replace($string, $char, $encoded); } } @return $string; } @import "../../../gutenberg/components/pro-note/style.scss"; #adminmenu a[href*="https://visualportfolio.co/pricing/"], .wp-list-table.plugins a[href*="https://visualportfolio.co/pricing/"], .vpf-admin-toolbar a[href*="https://visualportfolio.co/pricing/"] { font-weight: 700; color: #11b916; .dashicons { transition: none; } &:hover, &:focus { color: #22e429; } } /** * Plugin Icon */ .dashicons-visual-portfolio, .mce-widget .mce-i-visual-portfolio { background-image: url(../../../assets/admin/images/icon.svg); background-repeat: no-repeat; background-position: center center; background-size: 18px; opacity: 0.6; } .mce-widget .mce-i-visual-portfolio { background-image: url(../images/icon-mce.svg); opacity: 1; } .menu-top.current .dashicons-visual-portfolio, .menu-top:hover .dashicons-visual-portfolio, .wp-has-current-submenu .dashicons-visual-portfolio { opacity: 1; } /** * Visual Composer Icon */ .vc_element-icon[data-is-container="true"].icon-visual-portfolio, .vc_element-icon.icon-visual-portfolio { background-position: 50% 50%; } .vc_element-icon.icon-visual-portfolio, .vc_control-visual-portfolio { position: relative; overflow: hidden; background-image: url(../images/icon-gutenberg.svg); background-position: 50% 50%; background-size: cover; border-radius: 3px; } .vc_add-element-container .icon-visual-portfolio { position: absolute; } .vc_control-visual-portfolio { display: inline-block; width: 18px; height: 18px; margin: 0 2px; cursor: pointer; } .vc_controls-row .vc_control-visual-portfolio { float: right; margin: 4px; } .vc_control-visual-portfolio-overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; } /* * Admin Menu. * We need to use additional ID `#toplevel...` because when disabled * Portfolio Archive in settings, the menu ID changes. */ /* stylelint-disable-next-line selector-id-pattern */ #menu-posts-portfolio, #toplevel_page_visual-portfolio-settings { #adminmenu & ul.wp-submenu-wrap li { clear: both; } li:not(:last-child) a[href^="edit-tags.php?taxonomy=portfolio_tag&post_type=portfolio"]::after, li:not(:last-child) a[href^="edit.php?post_type=portfolio&page=vpf_proofing_page"]::after, li:not(:last-child) a[href^="edit.php?post_type=vp_proofing"]::after { display: block; float: left; width: calc(100% + 26px); margin: 13px -15px 8px; content: ""; border-bottom: 1px solid rgba(255, 255, 255, 10%); @media screen and (max-width: 782px) { width: calc(100% + 30px); margin: 20px -20px 8px; } } } /* * Admin Toolbar. */ .vpf-admin-toolbar { background-color: #fff; border-bottom: 1px solid #d7dbde; @media screen and (max-width: 600px) { display: none; } #wpcontent & { padding-left: 20px; margin-left: -20px; } h2 { display: inline-block; padding: 5px 0; margin: 0 10px 0 0; font-size: 14px; line-height: 2.5714; i { display: inline-block; width: 20px; height: 20px; margin-top: -5px; margin-right: 5px; vertical-align: middle; filter: invert(1); opacity: 1; } } .vpf-admin-toolbar-tab { display: inline-block; padding: 5px 10px; margin: 0 2px; font-size: 14px; line-height: 2.5714; color: inherit; text-decoration: none; &.is-active { padding-bottom: 2px; border-bottom: #007cba solid 3px; } &:hover, &:focus { color: #007cba; } .dashicons { line-height: 2; } } } /** * oEmbed preview */ .vp-oembed-preview { position: relative; width: 100%; padding-top: 56.25%; color: #a2a2a2; background-color: #f1f1f1; border: 1px solid #e8e8e8; &::after { position: absolute; top: 50%; left: 50%; z-index: 1; display: block; width: 20px; height: 20px; margin-top: -10px; margin-left: -10px; /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */ font-family: dashicons; font-size: 20px; font-style: normal; font-weight: 400; line-height: 1; text-align: center; text-decoration: inherit; content: "\f126"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } > iframe { position: absolute; top: 0; left: 0; z-index: 2; width: 100%; height: 100%; } } /** * Post featured image focal point meta. */ .vpf-post-image-focal-point-panel { margin-top: 20px; > .components-panel__row { gap: 15px; } .components-input-control { flex: 1; } } /** * Form inputs */ .vp-input { width: 100%; } /** * Portfolio Post Type */ .vp-portfolio__thumbnail { position: relative; display: block; max-width: 70px; padding-top: 100%; overflow: hidden; border-radius: 3px; img { position: absolute; top: 0; left: 0; display: block; width: 100%; height: 100%; object-fit: cover; } } .vp-portfolio__thumbnail:empty { background-color: #f1f1f1; border: 1px solid #e8e8e8; &, &:hover, &:active, &:focus { color: #a2a2a2; } &::after { position: absolute; top: 50%; left: 50%; display: block; width: 18px; height: 18px; margin-top: -9px; margin-left: -9px; content: ""; background-image: url("#{escape-svg('data:image/svg+xml,')}"); background-size: cover; } } .wp-list-table { th.column-portfolio_post_thumbs { width: 70px; } th.column-vp_lists_post_icon { width: 28px; } th.column-vp_lists_post_shortcode { width: 250px; } @media screen and (max-width: 782px) { /* Hide column on mobile device */ th.column-portfolio_post_thumbs, th.column-vp_lists_post_icon { display: none; } tr:not(.inline-edit-row, .no-items) { td.column-portfolio_post_thumbs, td.column-vp_lists_post_icon { float: left; width: 70px !important; min-width: 70px; } td.column-vp_lists_post_icon { width: 40px !important; } td.column-portfolio_post_thumbs::before { content: none; } td.column-title { overflow: hidden; clear: right; } } } } /** * Admin Notices */ .vpf-admin-notice { display: flex; padding: 0; border: none; border-left: 4px solid #2540cc; box-shadow: 0 0 4px rgba(0, 0, 0, 15%); h3 { margin-top: 10px; margin-bottom: 12px; font-size: 16px; svg { display: inline-block; width: 1.3em; height: 1.3em; margin-right: 0.2em; vertical-align: -0.28em; } } .vpf-admin-notice-icon { display: flex; justify-content: center; width: 50px; min-width: 50px; padding-top: 14px; background-color: #f2f8ff; } .dashicons-visual-portfolio { display: block; width: 22px; height: 22px; filter: invert(1); background-size: 22px; opacity: 1; } .vpf-admin-notice-content { padding: 6px 16px; } } /** * Portfolio List page */ .vp-portfolio-list__icon { position: relative; display: block; max-width: 70px; padding-top: 100%; overflow: hidden; color: inherit; color: #868686; background-color: #f1f1f1; border: 1px solid #e8e8e8; border-radius: 3px; &:hover, &:active, &:focus { color: #5f5f5f; } svg { position: absolute; top: 15%; left: 15%; display: block; width: 70%; height: 70%; object-fit: cover; } } /** * Settings */ .portfolio_page_visual-portfolio-settings, .toplevel_page_visual-portfolio-settings { $settings_nav_width: 220px !default; $settings_content_height: 340px !default; // Navigation. @media (min-width: 782px) { h2.nav-tab-wrapper { position: relative; margin-right: -1px; border: none; } .nav-tab-wrapper { display: flex; flex-direction: column; float: left; width: $settings_nav_width; .nav-tab { padding: 10px 15px; margin-bottom: -1px; margin-left: 0; background: none; border: 1px solid transparent; border-right: none; border-left: 2px solid transparent; } .nav-tab:hover, .nav-tab:focus, .nav-tab-active { background: #fff; border-color: #d7dbde; border-left-color: #007cba; } } .metabox-holder { float: left; width: calc(100% - #{$settings_nav_width + 2}); // Compensate 10px padding + 2px border. min-height: $settings_content_height + 22px; margin-top: 9px; > div, > div > form { min-height: $settings_content_height; } } } .nav-tab-wrapper { svg { width: 1.2em; height: 1.2em; margin-right: 0.5em; vertical-align: -0.2em; } } // Content with settings. .metabox-holder { box-sizing: border-box; padding: 10px 20px; background-color: #fff; border: 1px solid #d7dbde; form { display: flex; flex-direction: column; } // Footer with save button. .metabox-holder-footer { position: sticky; bottom: 0; padding: 15px 20px; margin-top: auto; margin-right: -20px; margin-bottom: -10px; margin-left: -20px; background-color: #f5f5f5; border-top: 1px solid #ddd; > p { padding: 0; margin: 0; } } } // Controls base layout. .form-table { tr { display: block; } th { display: block; width: 100%; padding: 0; margin-bottom: 10px; } td { display: block; padding: 0; margin-bottom: 20px; } } .submit { margin: 0; } .description { opacity: 0.7; } // Section Title. .vpf-setting-type-section_title { &::before { display: block; padding-top: 15px; margin-right: -20px; margin-left: -20px; content: ""; border-top: 1px solid #d7dbde; } label { font-size: 15px; } label:empty { display: block; margin-top: -20px; } .description { margin-top: -5px; } } // Image control. .wpsa-image-remove { display: none; margin-left: 10px; } // Notices styles fix. .metabox-holder .notice { padding: 15px; } // Pro control. .vpf-settings-control-pro { > td { pointer-events: none; } .description { opacity: 0.3; } .vpf-settings-control-pro-label { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-left: 10px; font-family: sans-serif; font-size: 11px; line-height: 18px; color: #fff; text-align: center; text-decoration: none; cursor: pointer; background-color: #4c4c4c; border-radius: 10px; > span { position: absolute; bottom: 100%; z-index: 9990; display: none; width: 130px; padding: 10px; margin-bottom: 10px; background-color: #000; border-radius: 4px; box-shadow: 0 1px 7px rgba(#000, 0.3); } &:hover > span, &:focus > span { display: block; } } // Hide pro control info from individual breakpoint settings. &.breakpoint_xs .vpf-settings-control-pro-label, &.breakpoint_sm .vpf-settings-control-pro-label, &.breakpoint_md .vpf-settings-control-pro-label, &.breakpoint_lg .vpf-settings-control-pro-label, &.breakpoint_xl .vpf-settings-control-pro-label { display: none; } } /** * Toggle Field. **/ .vp-toggle-field { position: relative; display: inline-block; input { width: 0; height: 0; opacity: 0; } .vp-toggle-field-slider-round { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 36px; height: 18px; cursor: pointer; background-color: #ccc; border-radius: 34px; transition: 0.4s; &::before { position: absolute; bottom: 3px; left: 3px; width: 12px; height: 12px; content: ""; background-color: #fff; border-radius: 50%; transition: 0.4s; } } input:checked + .vp-toggle-field-slider-round { background-color: #007cba; } input:focus + .vp-toggle-field-slider-round { box-shadow: 0 0 1px #007cba; } input:checked + .vp-toggle-field-slider-round::before { transform: translateX(18px); } .description { margin-left: 22px; } } /** * Range Field. **/ .vp-range-field { width: 183px; height: 3px; vertical-align: middle; cursor: pointer; background: #007cba; outline: none; box-shadow: none; appearance: none; &::-webkit-slider-thumb { width: 20px; height: 20px; background: #fff; border: 1px solid #7e8993; border-radius: 20px; transition: border-width 0.2s cubic-bezier(0.26, 0.08, 0.15, 1); appearance: none; } &:active::-webkit-slider-thumb { border-color: #007cba; box-shadow: 0 0 0 1px #007cba; } } .vp-range-number-field { box-sizing: border-box; width: 55px; margin-left: 9px; vertical-align: middle; background: #fff; border: 1px solid #8f969f; border-radius: 4px; } /** * Select2 Field */ .select2-container { .select2-selection--single { width: 350px; height: 30px; border: 1px solid #8c8f94; } } } /** * PRO Notices. */ .portfolio_page_visual-portfolio-settings, .toplevel_page_visual-portfolio-settings, .portfolio_page_vpf_proofing_page { // Settings info Pro. .social_pro_info > th { display: none; } } /* stylelint-disable selector-id-pattern */ #vp_social_integrations, #vp_watermarks, #vp_white_label { .metabox-holder-footer { display: none; } } /** * Welcome Screen. */ .portfolio_page_visual-portfolio-welcome, .toplevel_page_visual-portfolio-welcome { background-color: #fff; } .vpf-welcome-screen { box-sizing: border-box; padding-right: 20px; padding-left: 20px; margin-left: -20px; font-size: 16px; line-height: 1.6; *, *::before, *::after { box-sizing: inherit; } @media screen and (max-width: 782px) { margin-left: -10px; } p { font-size: inherit; line-height: 1.6; } h2 { margin-top: 0; font-size: 2em; font-weight: 700; line-height: 1.2; text-align: center; } .vpf-welcome-head { position: relative; z-index: 0; padding: 120px 0; margin-bottom: 120px; color: #fff; background-color: #000; @media screen and (max-width: 600px) { margin-bottom: 60px; } .vpf-welcome-head-background { position: absolute; top: 0; right: -20px; z-index: -1; display: block; width: calc(100% + 40px); height: 100%; object-fit: cover; } // Logo. .vpf-welcome-head-logo { display: flex; align-items: center; justify-content: center; margin: 0; margin-bottom: 20px; color: #fff; @media screen and (max-width: 600px) { font-size: 20px; } } .dashicons-visual-portfolio { display: inline-block; width: 60px; height: 60px; margin-top: 3px; margin-right: 20px; background-size: 60px; opacity: 1; @media screen and (max-width: 600px) { width: 30px; height: 30px; margin-right: 10px; background-size: 30px; } } // Subtitle. .vpf-welcome-subtitle { max-width: 480px; margin: 0 auto; font-weight: 500; line-height: 1.7; color: #c1c1c1; text-align: center; } // Pro info. .vpf-welcome-head-pro-info { position: absolute; bottom: -50px; left: 50%; width: 100%; max-width: 570px; padding: 25px 45px; color: #131313; text-align: center; background-color: #fff; border-radius: 3px; box-shadow: 0 5px 10px 0 rgba(#000, 0.1); transform: translateX(-50%); @media screen and (max-width: 1120px) { max-width: 530px; } @media screen and (max-width: 600px) { position: relative; } } } .vpf-welcome-content { max-width: 900px; margin: 0 auto; // Title. .vpf-welcome-content-title { max-width: 600px; margin: 0 auto; margin-bottom: 80px; } // Features. .vpf-welcome-content-features { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 30px; list-style: none; @media screen and (max-width: 600px) { grid-template-columns: 1fr; } li { position: relative; padding-left: 50px; > span { position: absolute; top: 0; left: 0; display: block; font-size: 1.6em; line-height: 1.3; } > strong { font-size: 1.6em; font-weight: 400; line-height: 1.3; color: #1d2327; } } } hr { max-width: 200px; margin-top: 30px; margin-bottom: 60px; } // Buttons. .vpf-welcome-content-buttons { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 10px; max-width: 450px; margin: 0 auto; margin-bottom: 50px; text-align: center; @media screen and (max-width: 600px) { grid-template-columns: 1fr; } a { padding: 11px; font-size: 14px; font-weight: 600; color: #fff; text-decoration: none; text-transform: uppercase; background-color: #2540cc; border-radius: 3px; &:hover, &:focus { background-color: #13289a; } &:last-child { color: #000; background-color: #d2d2d2; &:hover, &:focus { background-color: #bdbdbd; } } } } } // Pro. .vpf-welcome-foot-pro-info { max-width: 700px; padding: 40px; margin: 60px auto; background-color: #fff; border: 1px solid #e0e0e0; ul { max-width: 500px; margin: 40px auto; column-count: 2; font-weight: 500; @media screen and (max-width: 600px) { column-count: 1; } > li::before { display: inline-block; width: 20px; height: 20px; margin-right: 6px; vertical-align: -0.25em; content: ""; background-image: url("#{escape-svg('data:image/svg+xml,')}"); } } > a { display: block; padding: 16px; font-size: 16px; font-weight: 600; color: #fff; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #1e9059; border-radius: 3px; &:hover, &:focus { background-color: #0f7544; } } } }