First Push

This commit is contained in:
MOH 2025-04-22 18:18:42 +02:00
parent 4db6a77a7a
commit 549d2a17c2
20 changed files with 3717 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
assets/.DS_Store vendored Executable file

Binary file not shown.

1
assets/css/color-picker.css Executable file

File diff suppressed because one or more lines are too long

761
assets/css/css.css Executable file
View File

@ -0,0 +1,761 @@
.mb-1 {
margin-bottom: 1rem;
}
.pp-loader {
position: absolute;
top: 115px;
left: 1060px;
width: 25px;
height: 25px;
border-radius: 50%;
border: 4px solid #f0f0f1;
border-top: 4px solid #7049ba;
animation: spin 1s linear infinite;
z-index: 9999;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
input[type=color],
input[type=date],
input[type=datetime-local],
input[type=datetime],
input[type=email],
input[type=month],
input[type=number],
input[type=password],
input[type=search],
input[type=tel],
input[type=text],
input[type=time],
input[type=url],
input[type=week],
select,
textarea {
box-shadow: 0 0 0 transparent;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
background-color: #fff;
color: #253142;
}
.grid1 {
display: grid;
grid-template-columns: repeat(1, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid4 {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid5 {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid6 {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid-3-1 {
display: grid;
grid-template-columns: 3fr 1fr;
grid-gap: 0px;
grid-auto-flow: dense;
padding: 1rem;
}
.noticeq {
padding: 10px;
background-color: red;
border-left: 4px solid #0073aa;
}
.noticeq h1 {
margin: 0;
font-size: 24px;
font-weight: bold;
}
.noticeq p {
margin: 0;
font-size: 14px;
}
.notice-dismiss {
float: right;
margin-top: 5px;
margin-right: 5px;
background: none;
border: none;
color: #333;
}
.notice-dismiss:before {
content: "\f153";
font-family: dashicons;
font-size: 20px;
line-height: 1;
}
.pp-button {
display: block;
width: 100%;
padding: 10px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
}
.pp-button:hover {
background-color: #e5e5e5;
}
.pp-input-wrapper label.pp-button-upload {
padding: 8px 12px;
color: white;
cursor: pointer;
transition: background-color 0.3s ease;
}
.pp-input-wrapper label.pp-button-upload:active {
background-color: #3e8e41;
}
.btn-save {
display: block;
width: 100%;
padding: 13px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
color: #fff;
}
.btn-reset {
display: block;
width: 100%;
padding: 13px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
color: #253142;
}
.color-schemes {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.color-schemes .color-option {
display: flex;
justify-content: center;
width: 100%;
padding: 5px;
margin-bottom: 0px;
}
.color-schemes .color-option .color-square {
width: 20px;
height: 20px;
margin-right: 10px;
border: 1px solid #ccc;
}
.color-schemes .color1 {
background-color: #ff0000;
}
.color-schemes .color2 {
background-color: #00ff00;
}
.color-schemes .color3 {
background-color: #0000ff;
}
.color-schemes .color4 {
background-color: #ffff00;
}
.color-schemes .color5 {
background-color: #ff9900;
}
.color-schemes .color6 {
background-color: #6600cc;
}
.color-schemes .color7 {
background-color: #0099ff;
}
.color-schemes .color8 {
background-color: #00cc00;
}
.color-schemes .color9 {
background-color: #ff3399;
}
.color-schemes .color10 {
background-color: #ffcc00;
}
.color-schemes .color11 {
background-color: #3366ff;
}
.color-schemes .color12 {
background-color: #ff66cc;
}
#pp-version {
font-size: 14px;
color: blue;
}
.pp-version-number {
font-weight: bold;
}
.pp-wordpress-version {
font-weight: bold;
color: red;
padding: 5px 10px;
}
.pp-plugin-version {
font-weight: bold;
color: green;
}
.pp-current-year {
font-weight: bold;
color: black;
}
.pp-palette {
font-weight: bold;
color: pink;
}
@keyframes heartbeat {
0% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
.pp-made-with-heart {
display: inline-block;
vertical-align: middle;
animation: heartbeat 1s infinite;
}
.pp-heart {
color: red;
padding-right: 4px;
}
.pp-made-with-text {
display: inline-block;
vertical-align: middle;
margin-left: 10px;
}
#pp_dashBoard .pp-input-wrapper input[type=number] {
border: 1px solid #fff;
}
.pp-borderradius-btn {
border: 1px solid rgba(0, 0, 0, 0.1882352941);
color: #333;
padding: 5px 10px;
cursor: pointer;
}
.pp-borderradius-btn.active {
background-color: #ccc;
}
.pp-btns-borderradius {
display: grid;
grid-template-columns: repeat(3, 1fr);
align-items: center;
padding: 10px;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-btns-borderradius button {
width: 100%;
}
.pp-form {
display: grid;
grid-template-columns: 200px 700px 200px;
gap: 0px;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
}
@media (max-width: 782px) {
.pp-form {
grid-template-columns: 1fr;
}
}
.pp-settings {
background-color: #fff;
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
color: #253142;
}
.pp-settings a.settings-active {
color: #fff;
}
.pp-menu-link {
display: block;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
text-decoration: none;
color: #253142;
position: relative;
transition: padding-left 0.3s ease;
padding: 10px;
}
.pp-menu-link:hover {
color: #fff;
}
.pp-menu-link:last-child {
margin-bottom: 0px;
}
.pp-menu-link:focus, .pp-menu-link:active {
outline: none;
box-shadow: none;
}
.pp-menu-link::before {
content: "";
font-family: "dashicons";
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
transition: transform 0.3s ease;
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
padding: 5px 10px;
height: auto;
}
.pp-menu-link.icon-dashboard::before {
content: "\f111";
}
.pp-menu-link.icon-login::before {
content: "\f307";
}
.pp-menu-link.icon-topmenu::before {
content: "\f342";
}
.pp-menu-link.icon-leftmenu::before {
content: "\f340";
}
.pp-menu-link.icon-btns::before {
content: "\f11a";
}
.pp-menu-link.icon-reset::before {
content: "\f531";
}
.pp-menu-link:hover {
padding-left: 55px;
}
.pp-menu {
padding: 0;
}
.pp-menu a {
padding-left: 50px;
}
.pp-menu h2 {
color: #fff;
padding: 16px;
text-align: center;
margin: 0;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-content {
background-color: #fff;
}
.pp-content h1 {
text-align: center;
font-weight: 700;
margin-bottom: 20px;
color: red;
}
.pp-sidebar {
position: relative;
background-color: #fff;
border-left: 1px solid rgba(0, 0, 0, 0.1882352941);
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-sidebar .btnsave {
display: block;
border: none;
cursor: pointer;
position: absolute;
bottom: 0px;
left: 50%;
transform: translateX(-50%);
width: 100%;
color: #fff;
}
.pp-card-content {
display: none;
}
.pp-card-content.active {
display: block;
}
.pp-container {
width: 100%;
max-width: 1100px;
padding: 0 0 0 1rem;
}
.pp-note {
background-color: #fff;
color: black;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
padding: 1rem 1.5rem;
margin: 1rem 0;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
}
.pp-note span {
margin-right: 1rem;
}
.pp-note .pp-note-content h4 {
margin: 0;
font-size: 14px;
}
.pp-note .pp-note-content p {
margin: 0;
font-size: 10px;
font-weight: 300;
}
.pp-head {
background-color: #fff;
padding: 15px 15px 15px 20px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
display: flex;
}
.pp-head .pp-logo {
width: 50px;
height: 50px;
margin-right: 1rem;
padding-right: 1rem;
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-head .pp-logo img {
width: 50px;
height: 50px;
}
.pp-head .pp-logoname {
position: relative;
}
.pp-head .pp-logoname h1 {
font-size: 24px;
margin: 7px 0;
background: linear-gradient(to bottom right, #7049ba, #e95095);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.pp-head .pp-logoname p {
margin: 0;
font-size: 12px;
}
.pp-head .pp-logoname span {
position: absolute;
left: 120px;
top: 0px;
padding: 3px 5px;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-footer {
background-color: #fff;
position: fixed;
bottom: 0;
width: 100%;
padding: 1rem;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
display: flex;
justify-content: space-evenly;
align-items: center;
}
.pp-section {
text-align: center;
background-color: #fff;
}
.pp-section-head {
padding: 1rem;
text-align: center;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-section-head h2 {
padding: 0;
margin: 0;
}
.pp-section-body {
background-color: #fff;
text-align: center;
}
.pp-section-footer {
text-align: center;
padding: 0 10px;
border-top: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-section-footer p {
font-size: 12px;
}
.pp-card {
background-color: #fff;
margin-top: 0;
padding: 0;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
height: auto;
}
.pp-card-head {
padding: 1rem;
text-align: center;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
color: black;
}
.pp-card-head label {
margin: 0;
font-size: 15px;
font-weight: 500;
}
.pp-card-body {
padding: 1rem;
margin-bottom: 0;
}
.pp-card-body h2 {
margin: 0;
}
.pp-card-body p {
margin: 0;
padding: 0;
}
.pp-card-footer {
border-top: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-card-footer p {
font-size: 10px;
}
.pp-card-body-login .pp-color-picker-fields .pp-color-picker-wrapper:first-child {
padding: 10px;
}
.pp-card-body-login .pp-color-picker-fields .pp-color-picker-wrapper:last-child {
padding: 10px;
}
.pp-input-wrapper input[type=text],
.pp-input-wrapper input[type=number] {
width: 100%;
padding: 5px;
text-align: center;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-input-wrapper input[type=text] {
text-align: left;
border: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-input-wrapper input[type=file] {
display: none;
}
.pp-radio-group input[type=radio] {
display: none;
}
.pp-radio-group input[type=radio]:checked + label {
color: #253142;
}
.pp-color-picker-fields {
display: flex;
justify-content: center;
margin-top: 1rem;
}
.pp-color-picker-wrapper {
width: 100%;
}
.pp-color-picker-wrapper span {
width: 100%;
}
input.spectrum.with-add-on {
padding: 5px;
width: 100%;
}
.sp-original-input-container .sp-add-on {
width: 50px !important;
}
.pp-radio-group {
display: flex;
align-items: center;
}
.pp-radio-group input[type=radio] {
margin-right: 5px;
}
.pp-radio-group label {
display: inline-block;
width: 50%;
padding: 10px 0;
font-size: 12px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1882352941);
cursor: pointer;
box-sizing: border-box;
text-align: center;
color: #253142;
}
.pp-input-wrapper {
position: relative;
}
.pp-input-wrapper button {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
cursor: pointer;
border: 1px solid transparent;
}
.pp-input-wrapper button.pp-left {
left: 0;
border-left: 1px solid rgba(0, 0, 0, 0.1882352941);
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
border-top: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-input-wrapper button.pp-center {
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
.pp-input-wrapper button.pp-right {
right: 0px;
border-left: 1px solid rgba(0, 0, 0, 0.1882352941);
border-right: 1px solid rgba(0, 0, 0, 0.1882352941);
border-top: 1px solid rgba(0, 0, 0, 0.1882352941);
}
.pp-input-wrapper img {
padding-top: 1rem;
}
.pp-input-upload {
margin-top: 1rem;
}
.pp-input-upload label {
display: block;
}
.pp-hidden {
display: none;
}
#mceu_25 div.mce-toolbar-grp > div {
padding: 10px !important;
}
#wpcontent,
#wpfooter {
margin-left: 140px !important;
}
@media (max-width: 960px) {
#wpcontent,
#wpfooter {
margin-left: 0 !important;
}
}
.folded #wpcontent,
.folded #wpfooter {
margin-left: 16px !important;
}
.wp-picker-container .wp-color-result.button {
min-height: 30px;
}
#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,
#adminmenu .wp-menu-arrow,
#adminmenu .wp-menu-arrow div,
#adminmenu li.current a.menu-top,
#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu {
background: linear-gradient(to right, #7049ba, #e95095) !important;
color: #fff;
}
#wpbody-content {
padding-bottom: 0px;
}
#login {
width: 378px !important;
padding: 20% 0 0 !important;
margin: auto;
}/*# sourceMappingURL=css.css.map */

1
assets/css/css.css.map Executable file

File diff suppressed because one or more lines are too long

BIN
assets/js/.DS_Store vendored Executable file

Binary file not shown.

1
assets/js/color-picker.js Executable file

File diff suppressed because one or more lines are too long

218
assets/js/palettepro.js Executable file
View File

@ -0,0 +1,218 @@
document.addEventListener("DOMContentLoaded", function () {
var menuLinks = document.querySelectorAll(".pp-menu-link");
var contentSections = document.querySelectorAll(".pp-card-content");
// Retrieve the active section from local storage
var activeSection = localStorage.getItem("activeSection");
// Function to remove 'settings-active' class from all menu links
function removeActiveClass(elements) {
elements.forEach(function (element) {
element.classList.remove("settings-active");
});
}
// Function to hide all content sections
function hideContentSections() {
contentSections.forEach(function (section) {
section.style.display = "none";
});
}
// Function to set the active section and menu link
function setActiveSection(sectionId, link) {
removeActiveClass(menuLinks);
hideContentSections();
document.querySelector(sectionId).style.display = "block";
link.classList.add("settings-active");
// Store the active section in local storage
localStorage.setItem("activeSection", sectionId);
}
// If there is an active section, show it and update the menu link
if (activeSection) {
removeActiveClass(menuLinks);
hideContentSections();
var activeMenuLink = document.querySelector(
'a[href="' + activeSection + '"]'
);
if (activeMenuLink) {
setActiveSection(activeSection, activeMenuLink);
}
} else {
// If no active section is stored, set the first link as active by default
setActiveSection(menuLinks[0].getAttribute("href"), menuLinks[0]);
}
// Add click event listener to menu links
menuLinks.forEach(function (link) {
link.addEventListener("click", function (e) {
e.preventDefault();
var target = this.getAttribute("href");
var targetElement = document.querySelector(target);
setActiveSection(target, this);
});
});
});
// <!------------------------------------------------------------------------------
// ------------------- pp color picker sctipt
// ------------------------------------------------------------------------------->
(function ($) {
"use strict";
$(document).ready(function () {
$(".pp-color-picker").spectrum({
preferredFormat: ["hex"],
showInput: true,
showInitial: true,
allowEmpty: true,
clickoutFiresChange: true,
showAlpha: true,
showPalette: true,
palette: [
["#f0f0f1", "#1d2327", "#0073aa", "#f2f6fc", "#ffc0c0"],
["green", "#005782", "#1a1a1a", "#f2f6fc", "#ffc0c0"],
["#dd4124", "#f7b91f", "#e95095", "#7049ba", "#c0ffc0"],
["#dd4124", "#e86646", "#f07b69", "#f7918c", "#fab6b0"],
["#ff6699", "#ff80aa", "#ff99bb", "#ffb3cc", "#ffcce5"],
["#ff9933", "#ffa54d", "#ffbb66", "#ffd080", "#ffe699"],
["#3399ff", "#4da3ff", "#66adff", "#80b7ff", "#99c1ff"],
["#99cc33", "#a3cc4d", "#add366", "#b7dd80", "#c1e699"],
["#9966ff", "#a373ff", "#ac80ff", "#b58cff", "#bf99ff"],
["#cc6699", "#d280ad", "#db8cb9", "#e599c5", "#efb3d1"],
["#ffcc00", "#ffd633", "#ffe066", "#ffeb99", "#fff5cc"],
["#333333", "#4d4d4d", "#666666", "#808080", "#999999"],
],
showPaletteOnly: true, // Set to true to show only the palette
maxSelectionSize: 2, // Limit the number of colors that can be selected
togglePaletteOnly: true, // Allow toggling between picker and palette
replacerClassName: "custom-color-picker", // Add a custom class name for the color picker container
appendTo: ".color-picker-container", // Append the color picker to a specific element or selector
showButtons: true, // Display OK and Cancel buttons
chooseText: "Apply", // Customize the text of the "Apply" button
// Callbacks
change: function (color) {
console.log("Color changed:", color.toHexString());
},
move: function (color) {
console.log("Color moving:", color.toHexString());
},
show: function (color) {
console.log("Picker shown:", color.toHexString());
},
hide: function (color) {
console.log("Picker hidden:", color.toHexString());
},
beforeShow: function (color) {
console.log("Before show:", color.toHexString());
},
beforeHide: function (color) {
console.log("Before hide:", color.toHexString());
},
cancel: function (color) {
console.log("Color selection canceled:", color.toHexString());
},
choose: function (color) {
console.log("Color selected:", color.toHexString());
},
});
showHideFields();
});
})(jQuery);
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// + - border radius
////////////////////////////////////////////////////////////////////////////////
function changeValue(operator, event) {
event.preventDefault(); // Prevent form submission and page refresh
const input = document.getElementById("border-radius");
let value = parseInt(input.value);
if (operator === "+") {
value += 1;
} else if (operator === "-" && value > 0) {
value -= 1;
}
input.value = value;
}
// function setBorderRadius(value, event) {
// event.preventDefault();
// document.getElementById("border-radius").value = value;
// }
function setBorderRadius(value, event) {
event.preventDefault();
document.getElementById("border-radius").value = value;
// Remove 'active' class from all buttons
var buttons = document.getElementsByClassName("pp-borderradius-btn");
for (var i = 0; i < buttons.length; i++) {
buttons[i].classList.remove("active");
}
// Add 'active' class to the clicked button
event.target.classList.add("active");
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Gradient für loginbackground color
////////////////////////////////////////////////////////////////////////////////
const colorRadio = document.getElementById("login-bg-color-radio");
const gradientRadio = document.getElementById("login-bg-gradient");
const colorFields = document.getElementById("login-bg-color-field");
const gradientFields = document.getElementById("login-bg-gradient-field");
function toggleFields() {
if (colorRadio.checked) {
colorFields.classList.remove("pp-hidden");
gradientFields.classList.add("pp-hidden");
} else if (gradientRadio.checked) {
colorFields.classList.add("pp-hidden");
gradientFields.classList.remove("pp-hidden");
}
}
colorRadio.addEventListener("change", toggleFields);
gradientRadio.addEventListener("change", toggleFields);
toggleFields(); // Ensure the correct fields are shown on page load
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// loader refresh after 1sec
////////////////////////////////////////////////////////////////////////////////
var timeoutID;
// Function to show the loader and refresh the page after 1 second
function showLoaderAndRefresh() {
var loader = document.querySelector(".loader");
loader.style.display = "block";
timeoutID = setTimeout(function () {
window.location.reload();
}, 1000);
}
// Hide the loader and clear the timeout when the page finishes loading
window.addEventListener("load", function () {
var loader = document.querySelector(".loader");
loader.style.display = "none";
clearTimeout(timeoutID);
});
// Show the loader and set the timeout when the page is being refreshed
window.addEventListener("beforeunload", showLoaderAndRefresh);
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// nnnnnn
////////////////////////////////////////////////////////////////////////////////

BIN
assets/logos/.DS_Store vendored Executable file

Binary file not shown.

1
assets/logos/logo.svg Executable file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 129.64 149.69"><defs><style>.cls-1{fill:url(#Neues_Verlaufsfeld_2);}.cls-2{fill:#383838;opacity:0.2;}.cls-3{fill:#f5f5f5;}.cls-4{fill:url(#Neues_Verlaufsfeld_2-2);}.cls-5{fill:url(#Neues_Verlaufsfeld_2-3);}</style><linearGradient id="Neues_Verlaufsfeld_2" y1="74.85" x2="129.64" y2="74.85" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#7049ba"/><stop offset="1" stop-color="#e95095"/></linearGradient><linearGradient id="Neues_Verlaufsfeld_2-2" x1="29.68" y1="81.29" x2="69.22" y2="81.29" xlink:href="#Neues_Verlaufsfeld_2"/><linearGradient id="Neues_Verlaufsfeld_2-3" x1="51.5" y1="73.04" x2="111.37" y2="73.04" xlink:href="#Neues_Verlaufsfeld_2"/></defs><g id="Ebene_2" data-name="Ebene 2"><g id="Illustration"><path class="cls-1" d="M129.56,33c-.45,11.71-.94,23.4-2,35.06a178.43,178.43,0,0,1-5,29.92,52.68,52.68,0,0,1-25.28,33.09c-10,5.83-20.22,11.26-29.86,17.68a5,5,0,0,1-5.8,0c-10-6.72-20.64-12.36-30.95-18.55-14.41-8.67-22-21.77-25.27-37.84C2.25,76.93,1.25,61.27.67,45.56.41,38.46.39,31.35,0,24.26c-.22-4.25,2.09-7.11,6.88-7A92.7,92.7,0,0,0,41.77,12,73,73,0,0,0,60.94,1.57c2.77-2.09,5.15-2.09,7.9,0,11.67,8.89,25,13.56,39.41,15.29a124.46,124.46,0,0,0,15.56.77c3.75,0,5.83,2.15,5.83,5.91,0,1.58,0,3.16-.07,4.74S129.57,31.43,129.56,33Z"/><path class="cls-2" d="M120.12,35.27c-.65,15.67-1.28,31.33-3.45,46.87a124.45,124.45,0,0,1-4.08,19c-3.3,10.89-10,18.93-19.48,24.76C84,131.5,74.43,136.5,65.48,142.46a1.45,1.45,0,0,1-1.84,0c-8.93-6-18.38-11.13-27.57-16.69-11.65-7.06-18-17.63-21-30.86a225.51,225.51,0,0,1-4.32-33.43C10.1,51.25,9.65,41,9.57,30.67c0-2.61-.05-2.58,2.62-2.66,17.28-.53,33.64-4.55,48.38-14,3.26-2.08,5.34-2.11,8.6,0,13,8.47,27.38,12.64,42.65,13.86,2.23.17,4.46.37,6.68.37,1.39,0,1.73.54,1.66,1.84C120.06,31.81,120.13,33.55,120.12,35.27Z"/><path class="cls-3" d="M118.61,35c-.64,14.92-1.25,29.84-3.35,44.65a117,117,0,0,1-4,18.09c-3.21,10.37-9.71,18-18.94,23.58-8.92,5.35-18.17,10.11-26.89,15.79a1.42,1.42,0,0,1-1.78,0c-8.68-5.74-17.88-10.6-26.82-15.91-11.33-6.72-17.56-16.79-20.39-29.4A208.42,208.42,0,0,1,12.27,60c-.67-9.78-1.11-19.57-1.19-29.38,0-2.49-.05-2.46,2.55-2.54,16.81-.5,32.72-4.32,47.06-13.34,3.17-2,5.19-2,8.36,0,12.61,8.07,26.63,12,41.49,13.2,2.16.17,4.33.36,6.5.36,1.35,0,1.68.52,1.6,1.75C118.55,31.72,118.61,33.37,118.61,35Z"/><path class="cls-4" d="M29.68,69.5c2.57-5.33,5-10.21,7.29-15.1.4-.86,1.05-1,1.87-1,9.67,0,19.33.09,29,.05,2.06,0,1.33.92.9,1.94C62.6,70.21,56.5,85,50.28,99.75c-.4,1-.47,1.51-.24,1.8s.41.24,1.71.25c.64,0,1.19,0,1.61,0,.22,0,.84-.07,1.07.27s0,.75-.12,1.05c-.73,1.61-1.35,3.25-2,4.89a1.66,1.66,0,0,1-1.78,1.12c-4.29,0-8.59-.07-12.89,0-2,0-1.37-1-1-2.06q5.19-12.53,10.39-25c1.33-3.18,2.67-6.35,4-9.54,1.19-2.9,1.18-2.91-1.86-2.92l-16.8,0Z"/><path class="cls-5" d="M110.15,45.32q-17.36,0-34.71-.07a1.44,1.44,0,0,0-1.61.92q-2.64,6.6-5.3,13.17C66,64.64,63.88,70.1,61.72,75.55a92.33,92.33,0,0,0-3.89,9.5c-2,4.76-4,9.53-6.09,14.28-.51,1.16-.21,1.46,1,1.46,4.35,0,8.71,0,13.06,0a1.83,1.83,0,0,0,2-1.45C69,96.19,70.32,93,71.62,89.85c.82-1.93,1.71-3.84,2.44-5.8a2,2,0,0,1,2.33-1.59c2.59.1,5.19,0,7.79,0l11.7.1c.68,0,1.35.08,1.67-.81,1.36-3.78,2.77-7.55,4.25-11.58l-22.24,0,2.78-6.47c.46-1.84,1.57-2.4,3.5-2.35,6.2.15,12.4.08,18.61.09.9,0,1.71.14,2.12-1.13,1.45-4.51,3-9,4.62-13.44C111.61,45.62,111.33,45.32,110.15,45.32Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

752
assets/scss/css.scss Executable file
View File

@ -0,0 +1,752 @@
@import "utilities/variables";
@import "utilities/framework";
@import "utilities/reset";
@import "utilities/grid";
@import "utilities/btns";
@import "utilities/color_schemes";
#pp-version {
font-size: 14px;
color: blue;
}
.pp-version-number {
font-weight: bold;
}
.pp-wordpress-version {
font-weight: bold;
color: red;
// background-color: yellow;
padding: 5px 10px;
}
.pp-plugin-version {
font-weight: bold;
color: green;
}
.pp-current-year {
font-weight: bold;
color: black;
}
.pp-palette {
font-weight: bold;
color: pink;
}
@keyframes heartbeat {
0% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
.pp-made-with-heart {
display: inline-block;
vertical-align: middle;
animation: heartbeat 1s infinite;
}
.pp-heart {
color: red;
padding-right: 4px;
}
.pp-made-with-text {
display: inline-block;
vertical-align: middle;
margin-left: 10px;
}
//=============================================
//
//=============================================
// .pp-notice {
// background-color: #f44336;
// color: #fff;
// padding: 20px;
// margin-bottom: 20px;
// position: relative;
// }
// .pp-notice h1 {
// font-size: 44px;
// margin-top: 0;
// margin-bottom: 10px;
// }
// .pp-notice p.pp-custom-message {
// font-size: 16px;
// margin-top: 0;
// margin-bottom: 20px;
// }
// .pp-notice-dismiss {
// position: absolute;
// top: 5px;
// right: 5px;
// background: transparent;
// border: none;
// color: #fff;
// cursor: pointer;
// font-size: 16px;
// border: 1px solid red;
// }
// .pp-close-button {
// position: relative;
// display: inline-block;
// width: 20px;
// height: 20px;
// }
// .pp-close-button:before,
// .pp-close-button:after {
// position: absolute;
// top: 50%;
// left: 50%;
// content: " ";
// height: 2px;
// width: 10px;
// background-color: #fff;
// transform-origin: 50% 50%;
// }
// .pp-close-button:before {
// transform: translate(-50%, -50%) rotate(45deg);
// }
// .pp-close-button:after {
// transform: translate(-50%, -50%) rotate(-45deg);
// }
//=============================================
//
//=============================================
#pp_dashBoard {
.pp-input-wrapper input[type="number"] {
border: 1px solid $white;
}
}
//=============================================
//
//=============================================
.pp-borderradius-btn {
// background-color: #eaeaea;
border: 1px solid $border;
color: #333;
padding: 5px 10px;
cursor: pointer;
// margin-right: 5px;
}
.pp-borderradius-btn.active {
background-color: #ccc;
}
.pp-btns-borderradius {
display: grid;
grid-template-columns: repeat(3, 1fr);
// gap: 2px;
align-items: center;
padding: 10px;
border: 1px solid $border;
// border-right: 1px solid $border;
// border-bottom: 1px solid $border;
}
.pp-btns-borderradius button {
// margin-bottom: 3px;
width: 100%;
}
//=============================================
// Form
//=============================================
.pp-form {
display: grid;
grid-template-columns: 200px 700px 200px;
gap: 0px;
border: 1px solid $border;
@media (max-width: 782px) {
grid-template-columns: 1fr;
}
}
.pp-settings {
background-color: $pp-bg;
border-right: 1px solid $border;
color: $black;
a.settings-active {
color: $white;
}
}
//=============================================//
//=============================================
.pp-menu-link {
display: block;
border-bottom: 1px solid $border;
text-decoration: none;
color: $black;
position: relative;
transition: padding-left 0.3s ease;
padding: 10px;
&:hover {
color: $white;
}
&:last-child {
margin-bottom: 0px;
}
&:focus,
&:active {
outline: none;
box-shadow: none;
}
}
.pp-menu-link::before {
content: "";
font-family: "dashicons";
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
transition: transform 0.3s ease;
border-right: 1px solid $border;
padding: 5px 10px;
height: auto;
}
.pp-menu-link.icon-dashboard::before {
content: "\f111";
}
.pp-menu-link.icon-login::before {
content: "\f307";
}
.pp-menu-link.icon-topmenu::before {
content: "\f342";
}
.pp-menu-link.icon-leftmenu::before {
content: "\f340";
}
.pp-menu-link.icon-btns::before {
content: "\f11a";
}
.pp-menu-link.icon-reset::before {
content: "\f531";
}
.pp-menu-link:hover {
padding-left: 55px;
}
// .pp-menu-link:hover::before {
// transform: translate(20px, -50%);
// }
.pp-menu {
padding: 0;
a {
padding-left: 50px;
}
h2 {
color: $white;
padding: 16px;
text-align: center;
margin: 0;
border-bottom: 1px solid $border;
}
}
//=============================================//
//=============================================
.pp-content {
// padding: 20px;
background-color: $card-body;
h1 {
text-align: center;
font-weight: 700;
margin-bottom: 20px;
color: $primary-color;
}
}
.pp-sidebar {
position: relative;
background-color: $card-body;
border-left: 1px solid $border;
border-right: 1px solid $border;
// padding: 1rem;
// border: 1px solid $border;
// position: sticky;
// top: 50px;
.btnsave {
display: block;
border: none;
cursor: pointer;
position: absolute;
bottom: 0px;
left: 50%;
transform: translateX(-50%);
width: 100%;
color: #fff;
}
}
//=============================================
// END
//=============================================
.pp-card-content {
display: none;
}
.pp-card-content.active {
display: block;
}
//=============================================
// Container
//=============================================
.pp-palettepro {
}
.pp-container {
width: 100%;
max-width: 1100px;
padding: 0 0 0 1rem;
}
//=============================================
// NOTE
//=============================================
.pp-note {
background-color: $pp-bg;
color: black;
border: 1px solid $border;
padding: 1rem 1.5rem;
margin: 1rem 0;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
span {
margin-right: 1rem;
}
.pp-note-content {
h4 {
margin: 0;
font-size: 14px;
}
p {
margin: 0;
font-size: 10px;
font-weight: 300;
}
}
}
//=============================================
// HEADER
//=============================================
.pp-head {
background-color: $pp-bg;
padding: 15px 15px 15px 20px;
border-bottom: 1px solid $border;
display: flex;
.pp-logo {
width: 50px;
height: 50px;
margin-right: 1rem;
padding-right: 1rem;
border-right: 1px solid $border;
img {
width: 50px;
height: 50px;
}
}
.pp-logoname {
position: relative;
h1 {
font-size: 24px;
margin: 7px 0;
background: linear-gradient(to bottom right, #7049ba, #e95095);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
p {
margin: 0;
font-size: 12px;
}
span {
position: absolute;
left: 120px;
top: 0px;
padding: 3px 5px;
border: 1px solid $border;
}
}
}
//=============================================
// FOOTER
//=============================================
.pp-footer {
background-color: $pp-bg;
position: fixed;
bottom: 0;
width: 100%;
padding: 1rem;
border-bottom: 1px solid $border;
display: flex;
// flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
.pp-footer-text {
// text-align: center;
}
}
//=============================================
// SECTION
//=============================================
.pp-section {
// margin-bottom: 2rem;
text-align: center;
background-color: $pp-bg;
// border: 1px solid $border;
}
.pp-section-head {
padding: 1rem;
text-align: center;
border-bottom: 1px solid $border;
h2 {
padding: 0;
margin: 0;
}
}
.pp-section-body {
background-color: $pp-bg;
text-align: center;
}
.pp-section-footer {
text-align: center;
padding: 0 10px;
// margin-bottom: 3rem;
border-top: 1px solid $border;
p {
font-size: 12px;
}
}
//=============================================
// CARDS
//=============================================
.pp-card {
background-color: $pp-bg;
margin-top: 0;
padding: 0;
border: 1px solid $border;
height: auto;
}
.pp-card-head {
padding: 1rem;
text-align: center;
border-bottom: 1px solid $border;
color: black;
label {
margin: 0;
font-size: 15px;
font-weight: 500;
}
}
.pp-card-body {
padding: 1rem;
margin-bottom: 0;
h2 {
margin: 0;
}
p {
margin: 0;
padding: 0;
}
}
.pp-card-footer {
border-top: 1px solid $border;
p {
font-size: 10px;
}
}
.pp-card-body-login {
.pp-color-picker-fields {
.pp-color-picker-wrapper:first-child {
padding: 10px;
}
.pp-color-picker-wrapper:last-child {
padding: 10px;
}
}
}
//=============================================
// INPUTS
//=============================================
.pp-input-wrapper input[type="text"],
.pp-input-wrapper input[type="number"] {
width: 100%;
padding: 5px;
text-align: center;
border: 1px solid $border;
}
.pp-input-wrapper input[type="text"] {
text-align: left;
border: 1px solid $border;
}
.pp-input-wrapper input[type="file"] {
display: none;
}
.pp-radio-group input[type="radio"] {
display: none;
}
.pp-radio-group input[type="radio"]:checked + label {
color: $black;
}
//=============================================
// COLOR PICKER
//=============================================
.pp-color-picker-fields {
display: flex;
justify-content: center;
margin-top: 1rem;
}
.pp-color-picker-wrapper {
width: 100%;
// .sp-original-input-container {
// .sp-colorize-container .sp-colorize {
// border: 1px solid red !important;
// z-index: 9999999;
// }
// }
span {
width: 100%;
}
}
input.spectrum.with-add-on {
padding: 5px;
width: 100%;
// text-align: center;
}
.sp-original-input-container .sp-add-on {
width: 50px !important;
}
//=============================================
// LOGIN COLOR GRADIENT
//=============================================
.pp-radio-group {
display: flex;
align-items: center;
input[type="radio"] {
margin-right: 5px;
}
}
.pp-radio-group label {
display: inline-block;
width: 50%;
padding: 10px 0;
font-size: 12px;
border-bottom: 1px solid $border;
cursor: pointer;
box-sizing: border-box;
text-align: center;
color: $black;
}
//=============================================
// + - input number
//=============================================
.pp-input-wrapper {
position: relative;
button {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
cursor: pointer;
border: 1px solid transparent;
}
button.pp-left {
left: 0;
border-left: 1px solid $border;
border-right: 1px solid $border;
border-top: 1px solid $border;
}
button.pp-center {
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
button.pp-right {
right: 0px;
border-left: 1px solid $border;
border-right: 1px solid $border;
border-top: 1px solid $border;
}
}
//=============================================
// LOGO
//=============================================
.pp-input-wrapper img {
padding-top: 1rem;
}
.pp-input-upload {
margin-top: 1rem;
label {
display: block;
}
}
//=============================================
// DISPLAY NONE
//=============================================
.pp-hidden {
display: none;
}
//=============================================
// RANDOM
//=============================================
#mceu_25 div.mce-toolbar-grp > div {
padding: 10px !important;
}
#wpcontent,
#wpfooter {
margin-left: 140px !important;
@media (max-width: 960px) {
margin-left: 0 !important;
}
}
.folded #wpcontent,
.folded #wpfooter {
margin-left: 16px !important;
}
.wp-picker-container .wp-color-result.button {
min-height: 30px;
// margin: 0 6px 6px 0;
// padding: 0 0 0 30px;
// font-size: 11px;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,
#adminmenu .wp-menu-arrow,
#adminmenu .wp-menu-arrow div,
#adminmenu li.current a.menu-top,
#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu {
background: linear-gradient(to right, #7049ba, #e95095) !important;
color: #fff;
}
#wpbody-content {
padding-bottom: 0px;
}
#login {
width: 378px !important;
padding: 20% 0 0 !important;
margin: auto;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// .pp-left-user {
// a {
// height: 100px;
// .pp-user-avatar {
// margin-top: -4rem;
// }
// }
// .pp-user-avatar img {
// border-radius: 50%;
// width: 60px;
// height: 60px;
// }
// .pp-user-name {
// // display: block;
// // font-size: 1rem;
// }
// }
// #adminmenu .pp-left-user .wp-menu-name {
// display: flex;
// flex-direction: column;
// justify-content: center;
// align-items: center;
// width: 100%;
// height: 75px;
// // background-color: green;
// padding: 0px !important;
// height: 100px;
// }

View File

@ -0,0 +1,49 @@
////////////////////////////////// Container
.pp-button {
display: block;
width: 100%;
padding: 10px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
&:hover {
background-color: #e5e5e5;
}
}
.pp-input-wrapper label.pp-button-upload {
// display: inline-block;
padding: 8px 12px;
color: white;
cursor: pointer;
transition: background-color 0.3s ease;
&:active {
background-color: #3e8e41;
}
}
.btn-save {
display: block;
width: 100%;
padding: 13px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
color: $white;
}
.btn-reset {
display: block;
width: 100%;
padding: 13px 20px;
border: none;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s ease;
color: $black;
}

View File

@ -0,0 +1,71 @@
.color-schemes {
display: flex;
flex-wrap: wrap;
justify-content: center;
.color-option {
display: flex;
justify-content: center;
width: 100%;
padding: 5px;
margin-bottom: 0px;
.color-square {
width: 20px;
height: 20px;
margin-right: 10px;
border: 1px solid #ccc;
}
}
// Color Scheme 1
.color1 {
background-color: #ff0000;
}
.color2 {
background-color: #00ff00;
}
.color3 {
background-color: #0000ff;
}
.color4 {
background-color: #ffff00;
}
// Color Scheme 2
.color5 {
background-color: #ff9900;
}
.color6 {
background-color: #6600cc;
}
.color7 {
background-color: #0099ff;
}
.color8 {
background-color: #00cc00;
}
// Color Scheme 3
.color9 {
background-color: #ff3399;
}
.color10 {
background-color: #ffcc00;
}
.color11 {
background-color: #3366ff;
}
.color12 {
background-color: #ff66cc;
}
}

View File

@ -0,0 +1,3 @@
.mb-1 {
margin-bottom: 1rem;
}

View File

@ -0,0 +1,71 @@
@mixin grid($columns) {
display: grid;
grid-template-columns: repeat(#{$columns}, 1fr);
grid-gap: 20px;
grid-auto-flow: dense;
padding: 1rem;
}
.grid1 {
@include grid(1);
}
.grid2 {
@include grid(2);
}
.grid3 {
@include grid(3);
}
.grid4 {
@include grid(4);
}
.grid5 {
@include grid(5);
}
.grid6 {
@include grid(6);
}
.grid-3-1 {
display: grid;
grid-template-columns: 3fr 1fr;
grid-gap: 0px;
grid-auto-flow: dense;
padding: 1rem;
}
.noticeq {
padding: 10px;
background-color: red;
border-left: 4px solid #0073aa;
}
.noticeq h1 {
margin: 0;
font-size: 24px;
font-weight: bold;
}
.noticeq p {
margin: 0;
font-size: 14px;
}
.notice-dismiss {
float: right;
margin-top: 5px;
margin-right: 5px;
background: none;
border: none;
color: #333;
}
.notice-dismiss:before {
content: "\f153";
font-family: dashicons;
font-size: 20px;
line-height: 1;
}

View File

@ -0,0 +1,67 @@
// Loader
.pp-loader {
position: absolute;
top: 115px;
left: 1060px;
width: 25px;
height: 25px;
border-radius: 50%;
border: 4px solid $loader-secondary-color;
border-top: 4px solid $loader-primary-color;
animation: spin 1s linear infinite;
z-index: 9999;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
// border radius 0
// .postbox,
// #dashboard-widgets .postbox-container,
// input[type="submit"].wp-core-ui.button,
// #preview-action .preview,
// .wp-core-ui .button-primary,
// .wrap .page-title-action,
// input[type="text"],
// input[type="url"],
// input[type="email"],
// input[type="password"],
// input[type="number"],
// textarea,
// .wp-core-ui .attachment .thumbnail,
// .wp-core-ui .attachment-preview,
// .wp-core-ui .button-secondary,
// form#loginform input[type="text"],
// .pp-section,
// .pp-radio-group label,
// .pp-button-upload {
// border-radius: 0;
// }
input[type="color"],
input[type="date"],
input[type="datetime-local"],
input[type="datetime"],
input[type="email"],
input[type="month"],
input[type="number"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="text"],
input[type="time"],
input[type="url"],
input[type="week"],
select,
textarea {
box-shadow: 0 0 0 transparent;
border: 1px solid $border;
background-color: $pp-bg;
color: $black;
}

View File

@ -0,0 +1,19 @@
$primary-color: red;
$secondary-color: lightblue;
$background-color: lightgrey;
$accent-color: green;
$highlight-color: pink;
$notice-color: #4caf50;
$loader-primary-color: #7049ba;
$loader-secondary-color: #f0f0f1;
$card-head: red;
$card-body: #fff;
$pp-bg: #fff;
$border: #00000030;
$black: #253142;
$white: #fff;

266
functions.php Executable file
View File

@ -0,0 +1,266 @@
<?php
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function custom_admin_menu_function()
{
global $menu, $current_user;
// Get the current user's information
$user_id = get_current_user_id();
$user_info = get_userdata($user_id);
$username = $user_info->user_login;
$user_avatar = get_avatar_url($user_id);
$pp_left_user_menu = array();
$pp_left_user_menu[] = array(
'<span class="pp-user-avatar"><img src="' . $user_avatar . '" alt="' . $username . '"></span><span class="pp-user-name">' . $username . '</span>',
'read',
'profile.php',
'', // Leave the ID empty, so it gets auto-generated
'pp-left-user' // Add any additional classes for the <li> element if needed
);
// Add Logout link with an extra class for the <li> element
// $pp_left_user_menu[] = array('Logout', 'read', wp_logout_url(), '', 'wp-menu-image');
// Add a separator between your custom items and the default items with an extra class for the <li> element
// $pp_left_user_menu[] = array('', 'read', 'separator1', '', 'wp-menu-separator');
// Merge your custom items with the existing menu items, placing your items at the top
$menu = array_merge($pp_left_user_menu, $menu);
}
add_action('admin_menu', 'custom_admin_menu_function');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function palettepro_remove_admin_footer()
{
return '';
}
add_filter('admin_footer_text', 'palettepro_remove_admin_footer', 999);
add_filter('update_footer', 'palettepro_remove_admin_footer', 999);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Define the default options outside the function
$default_options = array(
'palettepro_logo_url' => '/assets/a.svg',
'palettepro_login_logo_url' => '/assets/a.svg',
'palettepro_login_bg_type' => 'color',
'palettepro_login_bg_color' => '#f0f0f1',
'palettepro_login_bg_gradient_start' => '#f0f0f1',
'palettepro_login_bg_gradient_end' => '#d6d6d6',
'palettepro_dashboard_background_color' => '#f0f0f1',
'palettepro_border_radius' => 0,
'palettepro_primary_color' => '#0073aa',
'palettepro_primary_button_bg_color' => '#0073aa',
'palettepro_secondary_button_bg_color' => '#e95095',
'palettepro_primary_button_hover_color' => '#7049ba',
'palettepro_secondary_button_hover_color' => '#e95095',
'palettepro_left_menu_bg_color' => '#f0f0f1',
'palettepro_left_menu_bg_items' => '#1D2327',
'palettepro_left_menu_item_text_color' => '#f2f6fc',
'palettepro_left_menu_item_text_hover' => '#f2f6fc',
'palettepro_left_menu_item_bg_color' => '#0073aa',
'palettepro_left_menu_item_bg_hover' => '#0073aa',
'palettepro_top_menu_bg_color' => '#1D2327'
);
// Function to reset the options to their default values
function reset_palettepro_options()
{
global $default_options; // Access the global default_options array
// Reset each option to its default value
foreach ($default_options as $option_name => $default_value) {
update_option($option_name, $default_value);
}
// Update the login logo and logo URLs with the default image
$plugin_dir = plugin_dir_url(__FILE__);
$default_logo_url = $plugin_dir . 'assets/logos/logo.svg';
$default_login_logo_url = $plugin_dir . 'assets/logos/logo.svg';
update_option('palettepro_logo_url', $default_logo_url);
update_option('palettepro_login_logo_url', $default_login_logo_url);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Add a support menu item to the top navigation bar with an icon
function pp_support_menu($wp_admin_bar)
{
$args = array(
'id' => 'palettePro',
'title' => '<span class="ab-icon dashicons-before dashicons-art"></span> palettePro',
'href' => admin_url('admin.php?page=palettepro'),
'parent' => 'top-secondary', // Add the parent menu item ID here
'meta' => array('class' => 'palettePro-menu-item')
);
$wp_admin_bar->add_node($args);
// Add dropdown menu items
$args_submenu1 = array(
'id' => 'submenu1',
'title' => '<span class="ab-icon dashicons-before dashicons-art"></span> palettePro',
'href' => '#', // Add your submenu 1 URL here
'parent' => 'palettePro',
'meta' => array('class' => 'pp-sub-menu1')
);
$wp_admin_bar->add_node($args_submenu1);
$args_submenu2 = array(
'id' => 'submenu2',
'title' => 'Submenu 2',
'href' => '#', // Add your submenu 2 URL here
'parent' => 'palettePro',
'meta' => array('class' => 'pp-sub-menu2')
);
$wp_admin_bar->add_node($args_submenu2);
}
add_action('admin_bar_menu', 'pp_support_menu', 10);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function palettepro_custom_login_logo()
{
$login_logo_url = get_option('palettepro_login_logo_url');
echo '<!-- Debug: Login Logo URL: ' . esc_url($login_logo_url) . ' -->';
$custom_logo_link = get_home_url(); // Change this to the desired URL
if (!empty($login_logo_url)) {
?>
<style type="text/css">
.login h1 a {
background-image: url('<?php echo esc_attr($login_logo_url); ?>') !important;
background-size: contain !important;
width: 100% !important;
height: 100px !important;
}
</style>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var logoLink = document.querySelector('.login h1 a');
logoLink.href = '<?php echo esc_url($custom_logo_link); ?>';
});
</script>
<?php
}
}
add_action('login_enqueue_scripts', 'palettepro_custom_login_logo');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
/***************************************************
* Display All Custom Post Type (At a Glance)
***************************************************/
add_action('dashboard_glance_items', 'at_glance_content_von_moh');
function at_glance_content_von_moh()
{
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'object';
$operator = 'and';
$post_types = get_post_types($args, $output, $operator);
foreach ($post_types as $post_type) {
$num_posts = wp_count_posts($post_type->name);
$num = number_format_i18n($num_posts->publish);
$text = _n($post_type->labels->singular_name, $post_type->labels->name, intval($num_posts->publish));
if (current_user_can('edit_posts')) {
$output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . ' ' . $text . '</a>';
echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
} else {
$output = '<span>' . $num . ' ' . $text . '</span>';
echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
}
}
}
/***************************************************
* Set Post Color By Status In WordPress Admin Panel
***************************************************/
add_action('admin_footer', 'posts_status_color_von_moh');
function posts_status_color_von_moh()
{
?>
<style>
.status-draft {
background: #ffffe0 !important;
}
.status-future {
background: #E9F2D3 !important;
}
.status-publish {
/* no background keep WordPress colors */
}
.status-pending {
background: #D3E4ED !important;
}
.status-private {
background: #FFECE6 !important;
}
.status-sticky {
background: #F9F9F9 !important;
}
.post-password-required {
background: #F7FCFE !important;
}
</style>
<?php
}

943
palettepro.php Executable file
View File

@ -0,0 +1,943 @@
<?php
/*
Plugin Name: PalettePro
Description: Allows customization of WordPress dashboard and login page colors.
Version: 1.1.0
Author: MohFarawati.de
Author URI: www.MohFarawati.de
*/
include 'functions.php';
// Enqueue the color picker script and styles
function palettepro_enqueue_scripts($hook)
{
if ($hook !== 'toplevel_page_palettepro') {
return;
}
wp_enqueue_style('palettepro-css', plugins_url('assets/css/css.css', __FILE__));
wp_enqueue_style('palettepro-color-picker-css', plugins_url('assets/css/color-picker.css', __FILE__));
wp_enqueue_script('palettepro-color-picker-script', plugins_url('assets/js/color-picker.js', __FILE__), array('jquery', 'wp-color-picker'), false, true);
wp_enqueue_script('palettepro-script', plugins_url('assets/js/palettepro.js', __FILE__), array('jquery', 'wp-color-picker'), false, true);
}
add_action('admin_enqueue_scripts', 'palettepro_enqueue_scripts', 999);
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function pp_admin_welcome_msg()
{
$current_screen = get_current_screen();
if ($current_screen && $current_screen->base === 'dashboard') {
$dismissed = isset($_COOKIE['pp_dashboard_welcome_dismissed']);
if (!$dismissed) {
?>
<div class="pp-welcome-notice">
<div class="pp-notice-content">
<button type="button" class="pp-notice-dismiss" onclick="dismissWelcomeMessage();">
<span class="pp-screen-reader-text">X</span>
<span class="pp-close-button"></span>
</button>
<div class="pp-flex">
<div class="pp-welcome-logo">
<img src="https://picsum.photos/75/75" alt="">
</div>
<div class="pp-welcome-msg">
<h1>Welcome to My Custom Dashboard!</h1>
<p class="pp-welcome-message">This is a customized message for the dashboard.</p>
<div class="pp-welcome-menu">
<a href="#" class="pp-welcome-menu-item">Link </a>
<a href="#" class="pp-welcome-menu-item">Link </a>
<a href="#" class="pp-welcome-menu-item">Link </a>
<a href="#" class="pp-welcome-menu-item">Link </a>
<a href="#" class="pp-welcome-menu-item">Link </a>
</div>
</div>
<div class="pp-welcome-support">
<h3>Contact Support</h3>
<ul>
<li><span class="dashicons dashicons-location-alt"></span> Your Address</li>
<li><span class="dashicons dashicons-email"></span> Your Email</li>
<li><span class="dashicons dashicons-phone"></span> Your Phone Number</li>
</ul>
<button class="btn-save">Contact Us</button>
</div>
</div>
</div>
</div>
<script>
function dismissWelcomeMessage() {
document.cookie = "pp_dashboard_welcome_dismissed=1; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
document.querySelector('.pp-welcome-notice').style.display = 'none';
}
</script>
<?php
}
}
}
add_action('admin_notices', 'pp_admin_welcome_msg');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// WELCOME MSG FUNCTION
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function pp_admin_enqueue_scripts()
{
$current_screen = get_current_screen();
if ($current_screen && $current_screen->base === 'dashboard') {
$dismissed = isset($_COOKIE['pp_dashboard_welcome_dismissed']);
if (!$dismissed) {
wp_enqueue_script('pp-welcome-dismiss', get_template_directory_uri() . '/js/welcome-dismiss.js', array(), '1.0', true);
}
}
}
add_action('admin_enqueue_scripts', 'pp_admin_enqueue_scripts');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// Output custom CSS styles
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//
function palettepro_output_styles()
{
include 'palettepro_output_styles.php';
}
add_action('admin_head', 'palettepro_output_styles');
add_action('login_head', 'palettepro_output_styles');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// Create the color customizer page
///////////////////////////////////////////////////////////////////////////////////////////////////////////
function palettepro_page()
{
// Handle form submission
if (isset($_POST['submit'])) {
// Validate and save the selected colors and border radius
/////////////////////////////////// DASHBOARD //////////////////////////////////////////////
$dashboard_background_color = sanitize_hex_color($_POST['dashboard_background_color']);
$border_radius = absint($_POST['border_radius']);
/////////////////////////////////// LEFT MENU //////////////////////////////////////////////
$left_menu_bg_color = sanitize_hex_color($_POST['left_menu_bg_color']);
$left_menu_bg_items = sanitize_hex_color($_POST['left_menu_bg_items']);
$left_menu_item_text_color = sanitize_hex_color($_POST['left_menu_item_text_color']);
$left_menu_item_bg_color = sanitize_hex_color($_POST['left_menu_item_bg_color']);
$left_menu_item_bg_hover = sanitize_hex_color($_POST['left_menu_item_bg_hover']);
$left_menu_item_text_hover = sanitize_hex_color($_POST['left_menu_item_text_hover']);
/////////////////////////////////// TOP MENU //////////////////////////////////////////////
$top_menu_bg_color = sanitize_hex_color($_POST['top_menu_bg_color']);
$logo_file = $_FILES['logo_file'];
if ($logo_file['error'] === UPLOAD_ERR_OK) {
// Upload the dashboard logo
$upload_dir = wp_upload_dir();
$logo_dir = trailingslashit($upload_dir['basedir']) . 'palettepro-logos/';
$logo_url = trailingslashit($upload_dir['baseurl']) . 'palettepro-logos/';
// Create the directory if it doesn't exist
if (!file_exists($logo_dir)) {
mkdir($logo_dir);
}
$logo_filename = $logo_file['name'];
$logo_path = $logo_dir . $logo_filename;
move_uploaded_file($logo_file['tmp_name'], $logo_path);
update_option('palettepro_logo_url', $logo_url . $logo_filename);
}
/////////////////////////////////// LOGIN PAGE //////////////////////////////////////////////
$login_bg_type = $_POST['login_bg_type'];
$login_bg_color = sanitize_hex_color($_POST['login_bg_color']);
$login_bg_gradient_start = sanitize_hex_color($_POST['login_bg_gradient_start']);
$login_bg_gradient_end = sanitize_hex_color($_POST['login_bg_gradient_end']);
$login_logo_file = $_FILES['login_logo_file'];
if ($login_logo_file['error'] === UPLOAD_ERR_OK) {
// Upload the login page logo
$upload_dir = wp_upload_dir();
$logo_dir = trailingslashit($upload_dir['basedir']) . 'palettepro-logos/';
$logo_url = trailingslashit($upload_dir['baseurl']) . 'palettepro-logos/';
// Create the directory if it doesn't exist
if (!file_exists($logo_dir)) {
mkdir($logo_dir);
}
$logo_filename = $login_logo_file['name'];
$logo_path = $logo_dir . $logo_filename;
// Move the uploaded file to the designated directory
move_uploaded_file($login_logo_file['tmp_name'], $logo_path);
// Update the login page logo URL option
update_option('palettepro_login_logo_url', $logo_url . $logo_filename);
}
/////////////////////////////////// BUTTONS //////////////////////////////////////////////
$primary_button_bg_color = sanitize_hex_color($_POST['primary_button_bg_color']);
$primary_button_hover_color = sanitize_hex_color($_POST['primary_button_hover_color']);
$secondary_button_bg_color = sanitize_hex_color($_POST['secondary_button_bg_color']);
$secondary_button_hover_color = sanitize_hex_color($_POST['secondary_button_hover_color']);
$primary_color = sanitize_hex_color($_POST['primary_color']);
update_option('palettepro_dashboard_background_color', $dashboard_background_color);
update_option('palettepro_border_radius', $border_radius);
update_option('palettepro_top_menu_bg_color', $top_menu_bg_color);
update_option('palettepro_login_bg_type', $login_bg_type);
update_option('palettepro_login_bg_color', $login_bg_color);
update_option('palettepro_login_bg_gradient_start', $login_bg_gradient_start);
update_option('palettepro_login_bg_gradient_end', $login_bg_gradient_end);
update_option('palettepro_primary_button_bg_color', $primary_button_bg_color);
update_option('palettepro_primary_button_hover_color', $primary_button_hover_color);
update_option('palettepro_secondary_button_bg_color', $secondary_button_bg_color);
update_option('palettepro_secondary_button_hover_color', $secondary_button_hover_color);
update_option('palettepro_primary_color', $primary_color);
update_option('palettepro_left_menu_bg_color', $left_menu_bg_color);
update_option('palettepro_left_menu_bg_items', $left_menu_bg_items);
update_option('palettepro_left_menu_item_text_color', $left_menu_item_text_color);
update_option('palettepro_left_menu_item_bg_color', $left_menu_item_bg_color);
update_option('palettepro_left_menu_item_bg_hover', $left_menu_item_bg_hover);
update_option('palettepro_left_menu_item_text_hover', $left_menu_item_text_hover);
// Show the loader
echo '<div class="pp-loader"></div>';
// Refresh the page after a delay
echo '<script>setTimeout(function() {
window.location.reload();
}, 500);</script>';
// ..................................
// ..................................
} elseif (isset($_POST['reset'])) {
echo '<div class="pp-loader"></div>';
// Code to reset the options to their default values...
reset_palettepro_options();
// Refresh the page after resetting
echo '<script>setTimeout(function() {
window.location.reload();
}, 500);</script>';
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// Retrieve the previously selected colors and border radius
///////////////////////////////////////////////////////////////////////////////////////////////////////////
$dashboard_background_color = get_option('palettepro_dashboard_background_color', '#81d742');
$border_radius = get_option('palettepro_border_radius', 0);
$logo_url = get_option('palettepro_logo_url');
$top_menu_bg_color = get_option('palettepro_top_menu_bg_color', 'red');
$login_bg_type = get_option('palettepro_login_bg_type', 'color');
$login_bg_color = get_option('palettepro_login_bg_color', '#ffffff');
$login_bg_gradient_start = get_option('palettepro_login_bg_gradient_start', '#ffffff');
$login_bg_gradient_end = get_option('palettepro_login_bg_gradient_end', '#ffffff');
$login_logo_url = get_option('palettepro_login_logo_url');
$primary_color = get_option('palettepro_primary_color', '#000000');
$primary_button_bg_color = get_option('palettepro_primary_button_bg_color', '#007cba');
$secondary_button_bg_color = get_option('palettepro_secondary_button_bg_color', '#999999');
$primary_button_hover_color = get_option('palettepro_primary_button_hover_color', '#005a8c');
$secondary_button_hover_color = get_option('palettepro_secondary_button_hover_color', '#808080');
$left_menu_bg_color = get_option('palettepro_left_menu_bg_color', 'yellow');
$left_menu_bg_items = get_option('palettepro_left_menu_bg_items', 'yellow');
$left_menu_item_text_color = get_option('palettepro_left_menu_item_text_color', 'yellow');
$left_menu_item_bg_color = get_option('palettepro_left_menu_item_bg_color', 'yellow');
$left_menu_item_bg_hover = get_option('palettepro_left_menu_item_bg_hover', 'yellow');
$left_menu_item_text_hover = get_option('palettepro_left_menu_item_text_hover', 'yellow');
?>
<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// HTML FORM
/////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
<div class="pp-palettepro">
<!------------------------------------------------------------------------------
------------------- HEADER
------------------------------------------------------------------------------->
<div class="pp-head">
<div class="pp-logo">
<img src="https://picsum.photos/200" alt="logo">
</div>
<div class="pp-logoname">
<h1>PalettePro</h1>
<span>BETA</span>
<p>Unlock the Power of Customization with PalettePro: Transform Your WordPress Experience with Personalized Colors and Styling!</p>
</div>
</div>
<div class="pp-container">
<!------------------------------------------------------------------------------
------------------- NOTE
------------------------------------------------------------------------------->
<div class="pp-note">
<span class="dashicons dashicons-admin-site"></span>
<div class="pp-note-content">
<h4>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h4>
<p>quam, aliquid eos voluptatibus iure minus maiores, quos nisi dolorum harum est excepturi impedit magni distinctio vero libero ipsa! Aperiam.</p>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- START SETTINGS
------------------------------------------------------------------------------->
<form method="post" action="" enctype="multipart/form-data">
<div class="pp-form">
<div class="pp-settings">
<!------------------------------------------------------------------------------
-------------------
------------------------------------------------------------------------------->
<div class="pp-menu">
<h2> <?php
$plugin_data = get_plugin_data(__FILE__);
$plugin_version = $plugin_data['Version'];
$wordpress_version = get_bloginfo('version');
echo '<div id="pp-versiona">';
echo ' <span class="pp-plugin-versiona">palettePro ' . $plugin_version . '</span> ';
echo '</div>';
?></h2>
<a class="pp-menu-link settings-active icon-dashboard" href="#pp_general">General</a>
<a class="pp-menu-link icon-login" href="#pp_LoginPage">Login Page</a>
<a class="pp-menu-link icon-leftmenu" href="#pp_leftMenu">Left Menu</a>
<a class="pp-menu-link icon-topmenu" href="#pp_topMenu">Top Menu</a>
<a class="pp-menu-link icon-btns" href="#pp_btns">Buttons</a>
<a class="pp-menu-link icon-reset" href="#pp_reset_settings">Reset Settings</a>
</div>
</div>
<!------------------------------------------------------------------------------
------------------
------------------------------------------------------------------------------->
<div class="pp-content">
<!------------------------------------------------------------------------------
------------------- Control Panel Customization
------------------------------------------------------------------------------->
<div id="pp_general" class="pp-card-content active">
<div class="pp-section">
<div class="pp-section-head">
<h2>Control Panel Customization</h2>
</div>
<div class="pp-section-body">
<div class="grid2">
<div class="pp-card">
<div class="pp-card-head">
<label for="dashboard-background-color">Dashboard Background</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="dashboard_background_color" id="dashboard-background-color" value="<?php echo $dashboard_background_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="primary-color">Primary Color</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="primary_color" id="primary-color" value="<?php echo $primary_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="border-radius">Border Radius</label>
</div>
<div class="pp-card-body">
<div class="pp-input-wrapper">
<button onclick="changeValue('-', event)" class="pp-left">-</button>
<input type="number" name="border_radius" id="border-radius" value="<?php echo $border_radius; ?>" min="0" step="1">
<button onclick="changeValue('+', event)" class="pp-right">+</button>
</div>
<div class="pp-btns-borderradius">
<button onclick="setBorderRadius(0, event)" class="pp-borderradius-btn">0px</button>
<button onclick="setBorderRadius(5, event)" class="pp-borderradius-btn">5px</button>
<button onclick="setBorderRadius(10, event)" class="pp-borderradius-btn">10px</button>
<button onclick="setBorderRadius(15, event)" class="pp-borderradius-btn">15px</button>
<button onclick="setBorderRadius(20, event)" class="pp-borderradius-btn">20px</button>
<button onclick="setBorderRadius(25, event)" class="pp-borderradius-btn">25px</button>
</div>
</div>
</div>
</div>
</div>
<div class="pp-section-footer">
<p>Enhance your user experience by personalizing the control panel. Enjoy complete control over the color scheme, including the control panel itself, background, buttons, and border radius.</p>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- Login Customization
------------------------------------------------------------------------------->
<div id="pp_LoginPage" class="pp-card-content">
<div class="pp-section">
<div class="pp-section-head">
<h2>Login Customization</h2>
</div>
<div class="pp-section-body">
<div class="grid1">
<div class="pp-card">
<div class="pp-card-head">
<label>Login Background color</label>
</div>
<div class="pp-card-body-login">
<div class="pp-radio-group">
<input type="radio" name="login_bg_type" value="color" id="login-bg-color-radio" <?php checked($login_bg_type, 'color'); ?>>
<label for="login-bg-color-radio" class="pp-login-color">Color</label>
<input type="radio" name="login_bg_type" value="gradient" id="login-bg-gradient" <?php checked($login_bg_type, 'gradient'); ?>>
<label for="login-bg-gradient" class="pp-login-gradient">Gradient</label>
</div>
<div class="pp-color-picker-fields <?php if ($login_bg_type !== 'color') echo 'pp-hidden'; ?>" id="login-bg-color-field">
<div class="pp-color-picker-wrapper">
<input type="text" name="login_bg_color" id="login-bg-color" value="<?php echo $login_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-color-picker-fields <?php if ($login_bg_type !== 'gradient') echo 'pp-hidden'; ?>" id="login-bg-gradient-field">
<div class="pp-color-picker-wrapper">
<input type="text" name="login_bg_gradient_start" id="login-bg-gradient-start" value="<?php echo $login_bg_gradient_start; ?>" class="pp-color-picker" data-alpha="true">
</div>
<div class="pp-color-picker-wrapper">
<input type="text" name="login_bg_gradient_end" id="login-bg-gradient-end" value="<?php echo $login_bg_gradient_end; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="login-logo-file">Login Page Logo</label>
</div>
<div class="pp-card-body-btn">
<div class="pp-input-wrapper">
<?php if (!empty($login_logo_url)) : ?>
<img src="<?php echo esc_attr($login_logo_url); ?>" alt="Login Page Logo" width="auto" height="75">
<br>
<?php endif; ?>
<div class="pp-input-upload">
<label for="login_logo_file" class="pp-button-upload">Upload your Logo</label>
<input type="file" name="login_logo_file" id="login_logo_file">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="pp-section-footer">
<p>Make a lasting impression with a customized login page. Tailor the login logo to reflect your brand identity and choose from a variety of background options, whether it's a solid color or an eye-catching gradient.</p>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- Left Menu Styling
------------------------------------------------------------------------------->
<div id="pp_leftMenu" class="pp-card-content">
<div class="pp-section">
<div class="pp-section-head">
<h2>Left Menu Styling</h2>
</div>
<div class="pp-section-body">
<h3>Background</h3>
<div class="grid2">
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Background Color</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_bg_color" id="left-menu-bg-color" value="<?php echo $left_menu_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-items">Background Items</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_bg_items" id="left-menu-bg-items" value="<?php echo $left_menu_bg_items; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Active Item Background</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_item_bg_color" id="left_menu_item_bg_color" value="<?php echo $left_menu_item_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Item Bg on hover</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_item_bg_hover" id="left_menu_item_bg_hover" value="<?php echo $left_menu_item_bg_hover; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
</div>
<h3>TEXT</h3>
<div class="grid2">
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Item Text Color</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_item_text_color" id="left_menu_item_text_color" value="<?php echo $left_menu_item_text_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Item text on hover</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="left_menu_item_text_hover" id="left_menu_item_text_hover" value="<?php echo $left_menu_item_text_hover; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
<div class="pp-section-footer">
<p>for your design.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- Top Menu Styling
------------------------------------------------------------------------------->
<div id="pp_topMenu" class="pp-card-content">
<div class="pp-section">
<div class="pp-section-head">
<h2>Top Menu Enhancement</h2>
</div>
<div class="pp-section-body">
<div class="grid1">
<div class="pp-card">
<div class="pp-card-head">
<label for="left-menu-bg-color">Top Menu Background Color</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="top_menu_bg_color" id="top-menu-bg-color" value="<?php echo $top_menu_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="logo-file">Logo topNav</label>
</div>
<div class="pp-card-body-btn">
<div class="pp-input-wrapper">
<?php if ($logo_url) : ?>
<img src="<?php echo esc_attr($logo_url); ?>" alt="Logo" width="auto" height="75">
<br>
<?php endif; ?>
<div class="pp-input-upload">
<label for="logo-file" class="pp-button-upload">Upload Image</label>
<input type="file" name="logo_file" id="logo-file">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="pp-section-footer">
<p>Refine the appearance of the top menu by customizing its background color and font colors. Create a cohesive and visually appealing layout that aligns with your brand.</p>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- Button Customization
------------------------------------------------------------------------------->
<div id="pp_btns" class="pp-card-content">
<div class="pp-section">
<div class="pp-section-head">
<h2>Button Customization</h2>
</div>
<div class="pp-section-body">
<div class="grid2">
<div class="pp-card">
<div class="pp-card-head">
<label for="primary-button-bg-color">Primary Button</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="primary_button_bg_color" id="primary-button-bg-color" value="<?php echo $primary_button_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="primary-button-hover-color">Primary Hover</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="primary_button_hover_color" id="primary-button-hover-color" value="<?php echo $primary_button_hover_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="secondary-button-bg-color">Secondary Button</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="secondary_button_bg_color" id="secondary-button-bg-color" value="<?php echo $secondary_button_bg_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
<div class="pp-card">
<div class="pp-card-head">
<label for="secondary-button-hover-color">Secondary Hover</label>
</div>
<div class="pp-card-body">
<div class="pp-color-picker-wrapper">
<input type="text" name="secondary_button_hover_color" id="secondary-button-hover-color" value="<?php echo $secondary_button_hover_color; ?>" class="pp-color-picker" data-alpha="true">
</div>
</div>
</div>
</div>
</div>
<div class="pp-section-footer">
<p>Take your WordPress buttons to the next level by customizing their colors. Whether it's primary buttons that grab attention or secondary buttons for subtler interactions, tailor their appearance to match your website's style and branding.</p>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- RESET
------------------------------------------------------------------------------->
<div id="pp_reset_settings" class="pp-card-content">
<div class="pp-section">
<div class="pp-section-head">
<h2>RESET</h2>
</div>
<div class="pp-section-body">
<div class="grid1">
<div class="pp-card">
<div class="pp-card-head">
<label for="primary-button-hover-color">Reset everthing</label>
</div>
<div class="pp-card-body">
<div class="btnreset">
<input type="submit" name="reset" id="submit-reset" class="btn-reset" value="Reset Values">
</div>
</div>
</div>
</div>
</div>
<div class="pp-section-footer">
<p>Take your WordPress buttons to the next level by customizing their colors. Whether it's primary buttons that grab attention or secondary buttons for subtler interactions, tailor their appearance to match your website's style and branding.</p>
</div>
</div>
</div>
<!------------------------------------------------------------------------------
------------------- END
------------------------------------------------------------------------------->
</div>
<!------------------------------------------------------------------------------
------------------- START SIDEBAR
------------------------------------------------------------------------------->
<div class="pp-sidebar">
<div class="btnsave">
<input type="submit" name="submit" id="submit-top" class="btn-save" value="Save Changes">
</div>
</div>
</div>
</form> <!-- END FORM -->
<!------------------------------------------------------------------------------
------------------- START FOOTER
------------------------------------------------------------------------------->
<div class="pp-footer">
<div class="pp-made-with-text">Made with <div class="pp-made-with-heart"><span class="pp-heart">&hearts;</span></div>by PP</div>
<div class="pp-footer-text">
<?php
$plugin_data = get_plugin_data(__FILE__);
$plugin_version = $plugin_data['Version'];
$wordpress_version = get_bloginfo('version');
echo '<div id="pp-version">';
echo '<span class="pp-wordpress-version">WordPress Version: ' . $wordpress_version . '</span> | <span class="pp-plugin-version">Plugin Version: ' . $plugin_version . '</span> | <span class="pp-current-year">' . date('Y') . '</span> &copy; <span class="pp-company-name">PalettePro</span>. All rights reserved.';
echo '</div>';
?>
</div>
</div>
</div>
</div>
<?php
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Add Upgrade | Settings | Deactivate
function pp_custom_links_plugin_page($links)
{
// Get the plugin's main file name
$plugin_file = plugin_basename(__FILE__);
// Define the upgrade URL
$upgrade_url = 'https://www.your-website.com/upgrade';
// Add the "Upgrade" link to the plugin action links
$upgrade_link = '<a href="' . $upgrade_url . '" target="_blank">' . __('Upgrade', 'your-text-domain') . '</a>';
$action_links = array(
'upgrade' => $upgrade_link,
'settings' => '<a href="' . admin_url('admin.php?page=palettepro') . '">' . __('Settings', 'your-text-domain') . '</a>',
'deactivate' => '<a href="' . wp_nonce_url(admin_url('plugins.php?action=deactivate&plugin=' . $plugin_file), 'deactivate-plugin_' . $plugin_file) . '">' . __('Deactivate', 'your-text-domain') . '</a>',
);
return array_merge($action_links, $links);
}
// Add the action links to the plugin row
add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'pp_custom_links_plugin_page');
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Add the color customizer page to the admin menu
function palettepro_menu()
{
add_menu_page(
'PalettePro', // Page title
'PalettePro', // Menu title
'manage_options', // Capability required to access the menu item
'palettepro', // Menu slug
'palettepro_page', // Callback function to render the page
'dashicons-art', // Icon name (using 'art' icon)
1 // Position in the menu
);
}
add_action('admin_menu', 'palettepro_menu');

493
palettepro_output_styles.php Executable file
View File

@ -0,0 +1,493 @@
<?php
$dashboard_background_color = get_option('palettepro_dashboard_background_color', '#ffffff');
/////////////////////////////////// DASHBOARD //////////////////////////////////////////////
$border_radius = get_option('palettepro_border_radius', 0);
/////////////////////////////////// TOP MENU //////////////////////////////////////////////
$top_menu_bg_color = get_option('palettepro_top_menu_bg_color');
/////////////////////////////////// LOGIN PAGE //////////////////////////////////////////////
$login_bg_type = get_option('palettepro_login_bg_type', 'color');
$login_bg_color = get_option('palettepro_login_bg_color', '#ffffff');
$login_bg_gradient_start = get_option('palettepro_login_bg_gradient_start', '#ffffff');
$login_bg_gradient_end = get_option('palettepro_login_bg_gradient_end', '#ffffff');
$logo_url = get_option('palettepro_logo_url');
/////////////////////////////////// BUTTONS //////////////////////////////////////////////
$primary_button_bg_color = get_option('palettepro_primary_button_bg_color', '#007cba');
$primary_button_hover_color = get_option('palettepro_primary_button_hover_color', 'green');
$secondary_button_bg_color = get_option('palettepro_secondary_button_bg_color', '#999999');
$secondary_button_hover_color = get_option('palettepro_secondary_button_hover_color', 'red');
$primary_color = get_option('palettepro_primary_color', '#007cba');
/////////////////////////////////// LEFT MENU //////////////////////////////////////////////
$left_menu_bg_color = get_option('palettepro_left_menu_bg_color');
$left_menu_bg_items = get_option('palettepro_left_menu_bg_items');
$left_menu_item_text_color = get_option('palettepro_left_menu_item_text_color');
$left_menu_item_bg_color = get_option('palettepro_left_menu_item_bg_color');
$left_menu_item_bg_hover = get_option('palettepro_left_menu_item_bg_hover');
$left_menu_item_text_hover = get_option('palettepro_left_menu_item_text_hover');
echo '<style>';
/////////////////////////////////////////////////////////
/////////////// GENERAL //////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
// Dashboard Background
echo 'body.wp-admin, #wp-content-editor-tools, .pp-logoname span, .pp-radio-group input[type="radio"]:checked + label, .pp-borderradius-btn, .pp-btns-borderradius, .pp-input-wrapper button
{ background-color: ' . $dashboard_background_color . '; }';
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Primary Color
echo ' .theme-browser .theme.add-new-theme a:focus:after, .theme-browser .theme.add-new-theme a:hover:after, ';
echo ' #adminmenu li.current a.menu-top, #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, ';
echo ' .filter-count .count, .title-count, .pp-menu h2, .pp-menu-link.settings-active, .pp-menu-link:hover, #pp_dashBoard .pp-input-wrapper button:hover ';
echo '{';
echo ' background-color: ' . $primary_color . ';';
echo '}';
echo ' .plugin-update-tr.active td, .plugins .active th.check-column ';
echo '{';
echo ' border-left: 4px solid ' . $primary_color . ';';
echo '}';
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Border Radius
echo '.postbox,';
echo '#dashboard-widgets .postbox-container,';
echo 'input[type="submit"].wp-core-ui.button,';
echo '#preview-action .preview,';
echo '.wp-core-ui .button-primary,';
echo '.wrap .page-title-action,';
echo 'input[type="text"],';
echo 'input[type="url"],';
echo 'input[type="email"],';
echo 'input[type="password"],';
echo 'input[type="number"],';
echo 'textarea,';
echo '.wp-core-ui .attachment .thumbnail,';
echo '.wp-core-ui .attachment-preview,';
echo '.pp-section,';
echo '.wp-core-ui p .button,';
echo '.wp-core-ui .button-secondary,';
echo '.wpb_edit_form_elements textarea, .usof-radio, .usof-radio input[type=radio]:checked + .usof-radio-value, .usof-radio input[type=radio][checked] + .usof-radio-value';
echo '.wpb_edit_form_elements input,';
echo '.wpb_edit_form_elements select, #loginform, #login, #login_error, #language-switcher input, #language-switcher select, #lostpasswordform, #login .message,';
echo '.pp-card, .pp-section, .pp-button, .wp-core-ui .button, .wp-core-ui .button-secondary, .search-box input[name="s"],';
echo '.tablenav .actions select, .media-upload-form .notice, .media-upload-form div.error, .wrap .notice, .wrap div.error, .wrap div.updated, #poststuff .inside #page_template, #poststuff .inside #parent_id, table,';
echo '.theme-browser .theme, .wp-color-result-text, .wp-core-ui select, #dashboard-widgets .postbox-container .empty-container,';
echo '.pp-note, .btn-reset, .pp-logoname span, .pp-logo img, .pp-section-body,';
echo '.themes-php .wp-filter-search, .media-frame.mode-grid .media-toolbar, .media-frame.mode-grid .wp-filter input[type=search],';
echo '.theme-browser .theme .more-details, .theme-install-php .wp-filter, .wp-filter .search-form input[type=search], .show-filters .wp-filter .button.drawer-toggle,';
echo '.wrap .add-new-h2, .wrap .add-new-h2:active, .wrap .page-title-action, .wrap .page-title-action:active, ';
echo '.theme-browser .theme.add-new-theme a:after, .pp-form, .pp-notice-content, .wp-filter, .drag-drop #drag-drop-area ';
echo '{';
echo ' border-radius: ' . $border_radius . 'px;';
echo '}';
//////////////////////////// top-left
echo '.pp-card-head, .pp-section, .pp-section-head, .wp-switch-editor, .wp-editor-expand #wp-content-editor-container, .mce-container, .mce-container *, .mce-widget, .mce-widget *, .theme-browser .theme .theme-screenshot,';
echo '.pp-left, .pp-settings, .pp-menu-link:first-child, .pp-menu h2, .pp-btns-borderradius button:nth-child(1), .plugins thead td.check-column';
echo '{';
echo ' border-top-left-radius: ' . $border_radius . 'px;';
echo '}';
//////////////////////////// top-right
echo '.pp-card-head, .pp-sectionHead, .pp-section, .pp-section-head,
.wp-switch-editor, .theme-browser .theme .theme-screenshot, .pp-right, .pp-sidebar, .pp-btns-borderradius button:nth-child(3), .pp-close-button, .wp-submenu, .plugins thead tr th:last-child';
echo '{';
echo ' border-top-right-radius: ' . $border_radius . 'px;';
echo '}';
//////////////////////////// bottom-left
echo '.pp-cardBody, .pp-section, .pp-section-footer, #screen-meta-links .show-settings, .theme-browser .theme.active .theme-name,';
echo '.theme-browser .theme .theme-name, #screen-meta, #major-publishing-actions, .pp-button-upload, .pp-settings, .pp-menu-link.settings-active:last-child, .pp-btns-borderradius,';
echo '.pp-btns-borderradius button:nth-child(4), .plugins-php .widefat tfoot td';
echo '{';
echo ' border-bottom-left-radius: ' . $border_radius . 'px;';
echo '}';
//////////////////////////// bottom-right
echo '.pp-cardBody, .pp-section, .pp-section-footer, #screen-meta-links .show-settings, .theme-browser .theme.active .theme-name,';
echo '.theme-browser .theme .theme-actions, .theme-browser .theme .theme-name, #screen-meta, #major-publishing-actions, .pp-button-upload,';
echo ' .pp-sidebar, .pp-btns-borderradius, .pp-btns-borderradius button:nth-child(6), #adminmenu, .btn-save, #adminmenu .wp-submenu, .plugins tfoot tr th:last-child';
echo '{';
echo ' border-bottom-right-radius: ' . $border_radius . 'px;';
echo '}';
/////////////////////////////////////////////////////////
/////////////// LOGIN PAGE ///////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
if ($login_bg_type === 'color') {
echo 'body.login { background-color: ' . $login_bg_color . '; }';
} else {
echo 'body.login { background: linear-gradient(to top, ' . $login_bg_gradient_start . ', ' . $login_bg_gradient_end . '); }';
}
/////////////////////////////////////////////////////////
/////////////// BTNS /////////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
echo '.wp-core-ui .button-primary, .pp-button, .btn-save {';
echo ' background-color: ' . $primary_button_bg_color . ';';
echo '}';
echo '.wp-core-ui .button-primary:hover, .pp-button:hover, .btn-save:hover {';
echo ' background-color: ' . $primary_button_hover_color . ';';
echo '}';
echo '.wp-core-ui .button-secondary, #preview-action .preview, .page-title-action, .pp-button-upload {';
echo ' background-color: ' . $secondary_button_bg_color . ';';
echo '}';
echo '#preview-action .preview:hover, .btn-reset:hover, .pp-button-upload:hover {';
echo ' background-color: ' . $secondary_button_hover_color . ';';
echo '}';
///////// STANDARD BTNS
echo '.wrap .add-new-h2, .wrap .add-new-h2:active, .wrap .page-title-action, .wrap .page-title-action:active,';
echo '.wp-core-ui .button, .wp-core-ui .button-secondary {';
echo ' border: 1px solid ' . $primary_color . ';';
echo ' color: #fff;';
echo ' background-color: ' . $primary_color . ';';
echo '}';
/////////////////////////////////////////////////////////
/////////////// LEFT MENU ///////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
/////////// LEFT MENU BG ////////////////////////////
echo ' #adminmenuback, #adminmenuwrap';
echo '{';
echo ' background-color: ' . $left_menu_bg_color . ';';
echo '}';
/////////// ITEM BG ////////////////////////////
echo ' #adminmenu ';
echo '{';
echo ' background-color: ' . $left_menu_bg_items . ';';
echo '}';
/////////// ITEM TEXT COLOR ////////////////////////////
echo '#adminmenu a, #adminmenu li a:focus div.wp-menu-image:before, #collapse-button:hover, #collapse-button:focus {';
echo ' color: ' . $left_menu_item_text_color . ';';
echo '}';
/////////// ITEM TEXT HOVER ////////////////////////////
echo '#adminmenu a:hover, #adminmenu .wp-submenu a:hover, #adminmenu a:hover, .wp-has-submenu a .wp-menu-name:hover, #adminmenu li.menu-top:hover {';
echo ' color: ' . $left_menu_item_text_hover . ';';
echo '}';
/////////// ITEM BG COLOR ////////////////////////////
echo '#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu {';
echo ' background-color: ' . $left_menu_item_bg_color . ';';
echo '}';
/////////// ITEM BG HOVER ////////////////////////////
echo '#adminmenu li.menu-top:hover, #adminmenu li.opensub>a.menu-top, #adminmenu li>a.menu-top:focus,';
echo '.wp-has-submenu a .wp-menu-image::before:hover {';
echo ' background-color: ' . $left_menu_item_bg_hover . ';';
echo '}';
// DARKEN 10%
$hexColor = str_replace('#', '', $left_menu_bg_items);
// Split the hexadecimal representation into separate color components (R, G, B)
$r = hexdec(substr($hexColor, 0, 2));
$g = hexdec(substr($hexColor, 2, 2));
$b = hexdec(substr($hexColor, 4, 2));
// Calculate the darkened color components by reducing each component by 10% (10% of 255 is 25.5, rounded to 26)
$darkened_r = max($r - 26, 0); // Ensure the result is not less than 0
$darkened_g = max($g - 26, 0);
$darkened_b = max($b - 26, 0);
// Convert the darkened color components back to hexadecimal
$darkened_color = sprintf("#%02x%02x%02x", $darkened_r, $darkened_g, $darkened_b);
echo '#adminmenu .wp-submenu, .pp-left-user{';
echo ' background-color: ' . $darkened_color . ';';
echo '}';
echo '#adminmenu .wp-has-current-submenu .wp-submenu,
#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,
#adminmenu .wp-has-current-submenu.opensub .wp-submenu,
.no-js li.wp-has-current-submenu:hover .wp-submenu {';
echo ' border-radius: 0px;';
echo '}';
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////// PRIMARY COLOR
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////// Borders in Foucs
/////////////////////////////////////////////////////////
/////////////// TOP MENU ////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
echo '#wpadminbar ';
echo '{';
echo ' background-color: ' . $top_menu_bg_color . ';';
echo '}';
echo '#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {';
echo ' content: "";';
echo ' display: inline-block;';
echo ' width: 20px;'; // Adjust the width as needed
echo ' height: 25px;'; // Adjust the height as needed
echo ' background-image: url("' . $logo_url . '");';
echo ' background-size: contain;';
echo ' background-repeat: no-repeat;';
echo ' margin-right: 3px;';
echo ' vertical-align: middle;';
echo '}';
echo '#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon svg {';
echo ' fill: ' . $logo_color . ';';
echo '}';
echo '#adminmenu {';
echo ' margin: 0;';
echo ' padding: 0;';
echo '}';
/////////////////////////////////////////////////////////
/////////////// WELCOME MSG /////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
echo '.pp-welcome-notice {';
echo ' position: relative;';
echo '}';
echo '.pp-flex {';
echo ' display: flex;';
echo ' align-items: center;';
echo '}';
echo '.pp-welcome-logo {';
echo ' flex: 1;';
echo '}';
echo '.pp-welcome-msg {';
echo ' flex:12;';
echo '}';
echo '.pp-welcome-support {';
echo ' flex: 3;';
echo '}';
echo '.pp-notice-content {';
// echo ' display: flex;';
echo ' position: relative;';
echo ' background: #fff;';
echo ' border: 1px solid #00000030;';
echo ' margin-top: 2.5rem;';
echo ' padding: 2rem;';
echo ' margin-right: 20px;';
echo '}';
echo '.pp-notice-dismiss {';
echo ' position: absolute;';
echo ' top: -1px;';
echo ' right: -6px;';
echo ' background: transparent;';
echo ' border: none;';
echo ' color: #ff0000;';
echo ' cursor: pointer;';
echo '}';
echo '.pp-close-button {';
echo ' position: relative;';
echo ' display: inline-block;';
echo ' width: 35px;';
echo ' height: 35px;';
echo ' cursor: pointer;';
echo ' background-color: yellow;';
echo '}';
echo '.pp-close-button:hover {';
echo ' background-color: blue;';
echo '}';
echo '.pp-close-button:before,';
echo '.pp-close-button:after {';
echo ' position: absolute;';
echo ' top: 50%;';
echo ' left: 50%;';
echo ' content: "";';
echo ' height: 2px;';
echo ' width: 10px;';
echo ' background-color: red;';
echo ' transition: all 0.3s ease;';
echo '}';
echo '.pp-close-button:before {';
echo ' transform: translate(-50%, -50%) rotate(45deg);';
echo '}';
echo '.pp-close-button:after {';
echo ' transform: translate(-50%, -50%) rotate(-45deg);';
echo '}';
echo '.pp-notice-dismiss .dashicons-no-alt:before {';
echo ' content: "\f158";';
echo ' color: red;';
echo '}';
echo '.pp-notice-dismiss .pp-screen-reader-text {';
echo ' display: none;';
echo '}';
echo '.pp-notice-dismiss:hover .pp-close-button:before,';
echo '.pp-notice-dismiss:hover .pp-close-button:after {';
echo ' background-color: green;';
echo '}';
echo '.pp-welcome-menu {';
echo ' display: flex;';
echo ' justify-content: flex-start;';
echo ' align-items: left;';
echo ' padding: 10px 0px;';
echo '}';
echo '.pp-welcome-menu-item {';
echo ' padding: 8px 12px;';
echo ' border-radius: 5px;';
echo ' transition: background-color 0.3s ease;';
echo '}';
echo '.pp-welcome-menu-item:hover {';
echo ' background-color: #ddd;';
echo '}';
/////////////////////////////////////////////////////////
/////////////// RANDOM //////////////////////////////
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
echo '.wp-core-ui .button-secondary:focus, .wp-core-ui .button.focus, .wp-core-ui .button:focus,';
echo 'input[type=checkbox]:focus, input[type=color]:focus, input[type=date]:focus, input[type=datetime-local]:focus, input[type=datetime]:focus, input[type=email]:focus, input[type=month]:focus, input[type=number]:focus, input[type=password]:focus, input[type=radio]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=text]:focus, input[type=time]:focus, input[type=url]:focus, input[type=week]:focus, select:focus, textarea:focus,';
echo '.rank-math-focus-keyword .tagify.tagify--focus';
echo '{';
echo ' border-color: none;';
echo ' box-shadow: none;';
echo '}';
echo '.pp-left-user a';
echo '{';
echo ' height: 100px;';
echo '}';
echo '.pp-user-avatar ';
echo '{';
echo ' margin-top: -4rem;';
echo '}';
echo '.pp-user-avatar img ';
echo '{';
echo ' border-radius: 50%;';
echo ' width: 60px;';
echo ' height: 60px;';
echo '}';
echo '#adminmenu .pp-left-user .wp-menu-name ';
echo '{';
echo ' display: flex;';
echo ' flex-direction: column;';
echo ' justify-content: center;';
echo ' align-items: center;';
echo ' width: 100%;';
echo ' height: 75px;';
echo ' padding: 0px !important;';
echo ' height: 100px;';
echo '}';
echo '.pp-user-name ';
echo '{';
echo ' font-size: 15px;';
echo '}';
echo '</style>';
?>