Changeset 3064464
- Timestamp:
- 04/04/2024 09:00:44 AM (23 months ago)
- Location:
- adcaptcha
- Files:
-
- 13 added
- 13 edited
- 1 copied
-
assets/screenshot-5.png (modified) (previous)
-
assets/screenshot-6.png (added)
-
tags/1.1.0 (copied) (copied from adcaptcha/trunk)
-
tags/1.1.0/README.md (modified) (2 diffs)
-
tags/1.1.0/adcaptcha.php (modified) (3 diffs)
-
tags/1.1.0/assets/contactForm7_logo.png (added)
-
tags/1.1.0/assets/mailchimp_logo.png (added)
-
tags/1.1.0/assets/woocommerce_logo.png (added)
-
tags/1.1.0/assets/wordpress_logo.png (added)
-
tags/1.1.0/readme.txt (modified) (5 diffs)
-
tags/1.1.0/src/Instantiate.php (modified) (1 diff)
-
tags/1.1.0/src/Settings/General.php (added)
-
tags/1.1.0/src/Settings/Plugins.php (added)
-
tags/1.1.0/src/Settings/Settings.php (modified) (3 diffs)
-
tags/1.1.0/src/styles/settings.css (modified) (5 diffs)
-
trunk/README.md (modified) (2 diffs)
-
trunk/adcaptcha.php (modified) (3 diffs)
-
trunk/assets/contactForm7_logo.png (added)
-
trunk/assets/mailchimp_logo.png (added)
-
trunk/assets/woocommerce_logo.png (added)
-
trunk/assets/wordpress_logo.png (added)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/src/Instantiate.php (modified) (1 diff)
-
trunk/src/Settings/General.php (added)
-
trunk/src/Settings/Plugins.php (added)
-
trunk/src/Settings/Settings.php (modified) (3 diffs)
-
trunk/src/styles/settings.css (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
adcaptcha/tags/1.1.0/README.md
r3060548 r3064464 22 22 * Login 23 23 * Comments 24 * Forgot Password24 * Forgot Password 25 25 * Register 26 26 … … 29 29 * Login 30 30 * Comments 31 * Forgot Password31 * Forgot Password 32 32 * Register 33 33 -
adcaptcha/tags/1.1.0/adcaptcha.php
r3060699 r3064464 3 3 * Plugin Name: adCAPTCHA for WordPress 4 4 * Description: Secure your site. Elevate your brand. Boost Ad Revenue. 5 * Version: 1. 0.35 * Version: 1.1.0 6 6 * Requires at least: 6.4.2 7 7 * Requires PHP: 7.4 … … 21 21 require_once plugin_dir_path(__FILE__) . 'src/Instantiate.php'; 22 22 require_once plugin_dir_path(__FILE__) . 'src/Settings/Settings.php'; 23 require_once plugin_dir_path(__FILE__) . 'src/Settings/General.php'; 24 require_once plugin_dir_path(__FILE__) . 'src/Settings/Plugins.php'; 23 25 require_once plugin_dir_path(__FILE__) . 'src/Plugin/Login.php'; 24 26 require_once plugin_dir_path(__FILE__) . 'src/Plugin/Registration.php'; … … 45 47 delete_option( 'adcaptcha_success_token' ); 46 48 delete_option( 'adcaptcha_render_captcha' ); 49 delete_option( 'adcaptcha_selected_plugins' ); 47 50 } 48 51 -
adcaptcha/tags/1.1.0/readme.txt
r3060699 r3064464 5 5 Requires at least: 6.0 6 6 Tested up to: 6.4 7 Stable tag: 1. 0.37 Stable tag: 1.1.0 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later … … 28 28 * Login 29 29 * Comments 30 * Forgot Password30 * Forgot Password 31 31 * Register 32 32 … … 35 35 * Login 36 36 * Comments 37 * Forgot Password37 * Forgot Password 38 38 * Register 39 39 … … 61 61 1. Login 62 62 2. Comments 63 3. Forgot Password63 3. Forgot Password 64 64 4. Register 65 5. Settings 65 5. General Settings 66 6. Manage Plugins 66 67 67 68 == Privacy Notices == … … 88 89 = 1.0.3 = 89 90 - Minor patch: update to stable plugin tag version 91 92 = 1.1.0 = 93 - Feature: add plugin location selection in setting -
adcaptcha/tags/1.1.0/src/Instantiate.php
r3060548 r3064464 17 17 18 18 public function setup() { 19 $classes = array( 20 'Wordpress_Login' => new Login(), 21 'Wordpress_Register' => new Registration(), 22 'Wordpress_ForgotPassword' => new PasswordReset(), 23 'Wordpress_Comments' => new Comments(), 24 'Woocommerce_Login' => new WoocommerceLogin(), 25 'Woocommerce_ForgotPassword' => new WoocommercePasswordReset(), 26 'Woocommerce_Register' => new WoocommerceRegistration(), 27 'ContactForm7_Forms' => new ContactForm7(), 28 'Mailchimp_Forms' => new MailchimpForms(), 29 ); 30 31 $selected_plugins = get_option('adcaptcha_selected_plugins') ? get_option('adcaptcha_selected_plugins') : array(); 32 19 33 $settings = new Settings(); 20 34 $settings->setup(); 21 35 22 36 if (get_option('adcaptcha_render_captcha') === '1') { 23 $login = new Login(); 24 $login->setup(); 25 26 $registration = new Registration(); 27 $registration->setup(); 28 29 $passwordReset = new PasswordReset(); 30 $passwordReset->setup(); 31 32 33 $comments = new Comments(); 34 $comments->setup(); 35 36 $woocommerceLogin = new WoocommerceLogin(); 37 $woocommerceLogin->setup(); 38 39 $woocommercePasswordReset = new WoocommercePasswordReset(); 40 $woocommercePasswordReset->setup(); 41 42 $woocommerceRegistration = new WoocommerceRegistration(); 43 $woocommerceRegistration->setup(); 44 45 $contactForm7 = new ContactForm7(); 46 $contactForm7->setup(); 47 48 $mailchimpForms = new MailchimpForms(); 49 $mailchimpForms->setup(); 37 foreach ($selected_plugins as $selected_plugin) { 38 if (isset($classes[$selected_plugin])) { 39 $classes[$selected_plugin]->setup(); 40 } 41 } 50 42 } 51 43 } -
adcaptcha/tags/1.1.0/src/Settings/Settings.php
r3060548 r3064464 24 24 wp_enqueue_style('adcaptcha-admin-styles', plugins_url('../styles/settings.css', __FILE__), array(), PLUGIN_VERSION); 25 25 } 26 27 public function verify_input_data($api_key, $placement_id) {28 $url = 'https://api.adcaptcha.com/v1/placements/' . $placement_id;29 $headers = [30 'Content-Type' => 'application/json',31 'Authorization' => 'Bearer ' . $api_key,32 ];33 34 $response = wp_remote_get($url, array(35 'headers' => $headers,36 ));37 38 if (is_wp_error($response)) {39 $error_message = $response->get_error_message();40 echo esc_html("Something went wrong: $error_message");41 }42 43 return $response;44 }45 26 46 27 public function render_adcaptcha_options_page() { 47 $save_error = false; 48 $saved_successfully = false; 49 // Saves the Api Key and Placements ID in the wp db 50 if ($_SERVER["REQUEST_METHOD"] == "POST") { 51 $nonce = sanitize_text_field(wp_unslash($_POST['_wpnonce'])); 52 // Verify the nonce 53 if (!isset($nonce) || !wp_verify_nonce($nonce, 'adcaptcha_form_action')) { 54 die('Invalid nonce'); 55 } 56 57 $api_key = sanitize_text_field(wp_unslash($_POST['adcaptcha_option_name']['api_key'])); 58 $placement_id = sanitize_text_field(wp_unslash($_POST['adcaptcha_option_name']['placement_id'])); 59 $response = $this->verify_input_data($api_key, $placement_id); 60 if ($response['response']['code'] === 200) { 61 update_option('adcaptcha_api_key', $api_key); 62 update_option('adcaptcha_placement_id', $placement_id); 63 update_option('adcaptcha_render_captcha', true); 64 $saved_successfully = true; 65 } else { 66 $save_error = true; 67 update_option('adcaptcha_render_captcha', false); 68 } 28 $tab = filter_input( INPUT_GET, 'tab', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 29 $tab = isset( $tab ) ? $tab : 'general'; 30 if (!isset($tab) || ($tab !== 'general' && $tab !== 'plugins')) { 31 $tab = 'general'; 69 32 } 70 33 … … 74 37 <?php printf('<img src="%s" class="logo"/>', esc_url(untrailingslashit(plugin_dir_url(dirname(dirname(__FILE__)))) . '/assets/logo_gradient.png')); ?> 75 38 <hr> 39 <nav class="nav"> 40 <a href="?page=adcaptcha" class="nav-tab 41 <?php 42 if ( $tab === 'general' ) : 43 ?> 44 nav-tab-active<?php endif; ?>">General</a> 45 <a href="?page=adcaptcha&tab=plugins" class="nav-tab 46 <?php 47 if ( $tab === 'plugins' ) : 48 ?> 49 nav-tab-active<?php endif; ?>">Plugins</a> 76 50 </div> 77 <div class="integrating-description"> 78 <p>Before integrating, you must have an adCAPTCHA account and gone through the setup process. <a class="dashboard-link link" href="https://app.adcaptcha.com" target="_blank">Dashboard →</a><a class="documentation-link link" href="https://docs.adcaptcha.com/" target="_blank">Documentation →</a></p> 79 </div> 80 <?php if ($saved_successfully === true) : ?> 81 <div style="background-color: #22C55E; color: #ffffff; padding: 10px; border-radius: 5px; margin: 10px 0; max-width: 450px; font-size: 14px;"> 82 Settings saved successfully. The captcha will now be displayed. 83 </div> 84 <?php endif; ?> 85 <?php if (get_option('adcaptcha_render_captcha') !== '1' && $saved_successfully !== true || $save_error === true) : ?> 86 <div style="background-color: #DC2626; color: #ffffff; padding: 10px; border-radius: 5px; margin: 10px 0; max-width: 800px; font-size: 14px;"> 87 Placement ID or API Key is Invalid. Please try again. Captcha will not be displayed until the settings are saved successfully. 88 </div> 89 <?php endif; ?> 90 <form method="post" class="form"> 91 <?php 92 echo '<label for="api_key" class="input-label">API Key</label>'; 93 echo '<input type="password" id="api_key" class="input-field" name="adcaptcha_option_name[api_key]" value="' . esc_attr(get_option('adcaptcha_api_key')) . '" placeholder="API key">'; 94 ?> 95 <?php 96 echo '<label for="placement_id" class="input-label">Placement ID</label>'; 97 echo '<input type="text" id="placement_id" class="input-field" name="adcaptcha_option_name[placement_id]" value="' . esc_attr(get_option('adcaptcha_placement_id')) . '" placeholder="Placement ID">'; 98 ?> 99 <div class="integrating-description"> 100 <p>By default the captcha will be placed on the Login, Register, Lost Password and Comments forms.</p> 101 </div> 102 <?php wp_nonce_field('adcaptcha_form_action'); ?> 103 <button type="submit" class="save-button">Save</button> 104 </form> 51 <?php 52 switch ($tab) { 53 case 'general': 54 $generalSettings = new \AdCaptcha\Settings\General\General(); 55 $generalSettings->render_general_settings(); 56 break; 57 case 'plugins': 58 $pluginsSettings = new \AdCaptcha\Settings\Plugins\Plugins(); 59 $pluginsSettings->render_Plugins_settings(); 60 break; 61 } 62 ?> 105 63 </div> 106 64 <?php … … 113 71 114 72 public function change_admin_footer_version() { 115 return 'Version 1. 0';73 return 'Version 1.1.0'; 116 74 } 117 75 } -
adcaptcha/tags/1.1.0/src/styles/settings.css
r3060548 r3064464 5 5 6 6 .header { 7 padding: 35px 20px 35px 20px;7 padding: 35px 20px 0px 20px; 8 8 margin: 0 20px 0 0; 9 9 display: grid; 10 grid-auto-flow: column;11 10 justify-content: space-between; 12 11 align-items: center; … … 23 22 } 24 23 24 .plugin_logo { 25 margin-bottom: 20px; 26 margin-top: 10px; 27 } 28 25 29 .input-field { 26 30 max-width: 500px; … … 35 39 } 36 40 41 .checkbox-container{ 42 display: flex; 43 align-items: center; 44 margin-bottom: 10px; 45 } 46 47 .checkbox-label { 48 font-size: 14px; 49 margin-left: 5px; 50 margin-bottom: 3px; 51 } 52 37 53 .form { 38 54 display: flex; … … 43 59 } 44 60 45 .integrating-description { 61 .plugin-form { 62 display: flex; 63 flex-direction: column; 64 margin-bottom: 20px; 65 margin-right: 36px; 66 } 67 68 .plugins-layout { 69 display: flex; 70 flex-direction: row; 71 flex-wrap: wrap; 72 } 73 74 .plugin-container { 75 background-color: white; 76 padding: 20px 20px 0px 20px; 77 width: 320px; 78 height: 225px; 79 margin-bottom: 20px; 80 margin-right: 30px; 81 border-radius: 5px; 82 } 83 84 .plugins-container, .integrating-description { 46 85 margin-top: 20px; 86 margin-left: 20px; 47 87 } 48 88 … … 91 131 outline: 2px solid var(--accent); 92 132 } 133 134 .nav { 135 padding: 0 20px; 136 } 137 138 .nav-tab { 139 box-shadow: inset 0 -2px #fff; 140 text-decoration: none; 141 font-size: 0.875rem; 142 font-weight: 500; 143 background: none; 144 border: none; 145 margin: 0; 146 padding: 15px; 147 transition: box-shadow 0.1s ease; 148 149 150 &.nav-tab-active, 151 &.nav-tab-active:hover { 152 box-shadow: inset 0 -2px var(--accent); 153 color: var(--accent); 154 } 155 156 &:hover { 157 box-shadow: inset 0 -2px rgba(151, 151, 246, 0.8); 158 } 159 } -
adcaptcha/trunk/README.md
r3060548 r3064464 22 22 * Login 23 23 * Comments 24 * Forgot Password24 * Forgot Password 25 25 * Register 26 26 … … 29 29 * Login 30 30 * Comments 31 * Forgot Password31 * Forgot Password 32 32 * Register 33 33 -
adcaptcha/trunk/adcaptcha.php
r3060699 r3064464 3 3 * Plugin Name: adCAPTCHA for WordPress 4 4 * Description: Secure your site. Elevate your brand. Boost Ad Revenue. 5 * Version: 1. 0.35 * Version: 1.1.0 6 6 * Requires at least: 6.4.2 7 7 * Requires PHP: 7.4 … … 21 21 require_once plugin_dir_path(__FILE__) . 'src/Instantiate.php'; 22 22 require_once plugin_dir_path(__FILE__) . 'src/Settings/Settings.php'; 23 require_once plugin_dir_path(__FILE__) . 'src/Settings/General.php'; 24 require_once plugin_dir_path(__FILE__) . 'src/Settings/Plugins.php'; 23 25 require_once plugin_dir_path(__FILE__) . 'src/Plugin/Login.php'; 24 26 require_once plugin_dir_path(__FILE__) . 'src/Plugin/Registration.php'; … … 45 47 delete_option( 'adcaptcha_success_token' ); 46 48 delete_option( 'adcaptcha_render_captcha' ); 49 delete_option( 'adcaptcha_selected_plugins' ); 47 50 } 48 51 -
adcaptcha/trunk/readme.txt
r3060699 r3064464 5 5 Requires at least: 6.0 6 6 Tested up to: 6.4 7 Stable tag: 1. 0.37 Stable tag: 1.1.0 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later … … 28 28 * Login 29 29 * Comments 30 * Forgot Password30 * Forgot Password 31 31 * Register 32 32 … … 35 35 * Login 36 36 * Comments 37 * Forgot Password37 * Forgot Password 38 38 * Register 39 39 … … 61 61 1. Login 62 62 2. Comments 63 3. Forgot Password63 3. Forgot Password 64 64 4. Register 65 5. Settings 65 5. General Settings 66 6. Manage Plugins 66 67 67 68 == Privacy Notices == … … 88 89 = 1.0.3 = 89 90 - Minor patch: update to stable plugin tag version 91 92 = 1.1.0 = 93 - Feature: add plugin location selection in setting -
adcaptcha/trunk/src/Instantiate.php
r3060548 r3064464 17 17 18 18 public function setup() { 19 $classes = array( 20 'Wordpress_Login' => new Login(), 21 'Wordpress_Register' => new Registration(), 22 'Wordpress_ForgotPassword' => new PasswordReset(), 23 'Wordpress_Comments' => new Comments(), 24 'Woocommerce_Login' => new WoocommerceLogin(), 25 'Woocommerce_ForgotPassword' => new WoocommercePasswordReset(), 26 'Woocommerce_Register' => new WoocommerceRegistration(), 27 'ContactForm7_Forms' => new ContactForm7(), 28 'Mailchimp_Forms' => new MailchimpForms(), 29 ); 30 31 $selected_plugins = get_option('adcaptcha_selected_plugins') ? get_option('adcaptcha_selected_plugins') : array(); 32 19 33 $settings = new Settings(); 20 34 $settings->setup(); 21 35 22 36 if (get_option('adcaptcha_render_captcha') === '1') { 23 $login = new Login(); 24 $login->setup(); 25 26 $registration = new Registration(); 27 $registration->setup(); 28 29 $passwordReset = new PasswordReset(); 30 $passwordReset->setup(); 31 32 33 $comments = new Comments(); 34 $comments->setup(); 35 36 $woocommerceLogin = new WoocommerceLogin(); 37 $woocommerceLogin->setup(); 38 39 $woocommercePasswordReset = new WoocommercePasswordReset(); 40 $woocommercePasswordReset->setup(); 41 42 $woocommerceRegistration = new WoocommerceRegistration(); 43 $woocommerceRegistration->setup(); 44 45 $contactForm7 = new ContactForm7(); 46 $contactForm7->setup(); 47 48 $mailchimpForms = new MailchimpForms(); 49 $mailchimpForms->setup(); 37 foreach ($selected_plugins as $selected_plugin) { 38 if (isset($classes[$selected_plugin])) { 39 $classes[$selected_plugin]->setup(); 40 } 41 } 50 42 } 51 43 } -
adcaptcha/trunk/src/Settings/Settings.php
r3060548 r3064464 24 24 wp_enqueue_style('adcaptcha-admin-styles', plugins_url('../styles/settings.css', __FILE__), array(), PLUGIN_VERSION); 25 25 } 26 27 public function verify_input_data($api_key, $placement_id) {28 $url = 'https://api.adcaptcha.com/v1/placements/' . $placement_id;29 $headers = [30 'Content-Type' => 'application/json',31 'Authorization' => 'Bearer ' . $api_key,32 ];33 34 $response = wp_remote_get($url, array(35 'headers' => $headers,36 ));37 38 if (is_wp_error($response)) {39 $error_message = $response->get_error_message();40 echo esc_html("Something went wrong: $error_message");41 }42 43 return $response;44 }45 26 46 27 public function render_adcaptcha_options_page() { 47 $save_error = false; 48 $saved_successfully = false; 49 // Saves the Api Key and Placements ID in the wp db 50 if ($_SERVER["REQUEST_METHOD"] == "POST") { 51 $nonce = sanitize_text_field(wp_unslash($_POST['_wpnonce'])); 52 // Verify the nonce 53 if (!isset($nonce) || !wp_verify_nonce($nonce, 'adcaptcha_form_action')) { 54 die('Invalid nonce'); 55 } 56 57 $api_key = sanitize_text_field(wp_unslash($_POST['adcaptcha_option_name']['api_key'])); 58 $placement_id = sanitize_text_field(wp_unslash($_POST['adcaptcha_option_name']['placement_id'])); 59 $response = $this->verify_input_data($api_key, $placement_id); 60 if ($response['response']['code'] === 200) { 61 update_option('adcaptcha_api_key', $api_key); 62 update_option('adcaptcha_placement_id', $placement_id); 63 update_option('adcaptcha_render_captcha', true); 64 $saved_successfully = true; 65 } else { 66 $save_error = true; 67 update_option('adcaptcha_render_captcha', false); 68 } 28 $tab = filter_input( INPUT_GET, 'tab', FILTER_SANITIZE_FULL_SPECIAL_CHARS ); 29 $tab = isset( $tab ) ? $tab : 'general'; 30 if (!isset($tab) || ($tab !== 'general' && $tab !== 'plugins')) { 31 $tab = 'general'; 69 32 } 70 33 … … 74 37 <?php printf('<img src="%s" class="logo"/>', esc_url(untrailingslashit(plugin_dir_url(dirname(dirname(__FILE__)))) . '/assets/logo_gradient.png')); ?> 75 38 <hr> 39 <nav class="nav"> 40 <a href="?page=adcaptcha" class="nav-tab 41 <?php 42 if ( $tab === 'general' ) : 43 ?> 44 nav-tab-active<?php endif; ?>">General</a> 45 <a href="?page=adcaptcha&tab=plugins" class="nav-tab 46 <?php 47 if ( $tab === 'plugins' ) : 48 ?> 49 nav-tab-active<?php endif; ?>">Plugins</a> 76 50 </div> 77 <div class="integrating-description"> 78 <p>Before integrating, you must have an adCAPTCHA account and gone through the setup process. <a class="dashboard-link link" href="https://app.adcaptcha.com" target="_blank">Dashboard →</a><a class="documentation-link link" href="https://docs.adcaptcha.com/" target="_blank">Documentation →</a></p> 79 </div> 80 <?php if ($saved_successfully === true) : ?> 81 <div style="background-color: #22C55E; color: #ffffff; padding: 10px; border-radius: 5px; margin: 10px 0; max-width: 450px; font-size: 14px;"> 82 Settings saved successfully. The captcha will now be displayed. 83 </div> 84 <?php endif; ?> 85 <?php if (get_option('adcaptcha_render_captcha') !== '1' && $saved_successfully !== true || $save_error === true) : ?> 86 <div style="background-color: #DC2626; color: #ffffff; padding: 10px; border-radius: 5px; margin: 10px 0; max-width: 800px; font-size: 14px;"> 87 Placement ID or API Key is Invalid. Please try again. Captcha will not be displayed until the settings are saved successfully. 88 </div> 89 <?php endif; ?> 90 <form method="post" class="form"> 91 <?php 92 echo '<label for="api_key" class="input-label">API Key</label>'; 93 echo '<input type="password" id="api_key" class="input-field" name="adcaptcha_option_name[api_key]" value="' . esc_attr(get_option('adcaptcha_api_key')) . '" placeholder="API key">'; 94 ?> 95 <?php 96 echo '<label for="placement_id" class="input-label">Placement ID</label>'; 97 echo '<input type="text" id="placement_id" class="input-field" name="adcaptcha_option_name[placement_id]" value="' . esc_attr(get_option('adcaptcha_placement_id')) . '" placeholder="Placement ID">'; 98 ?> 99 <div class="integrating-description"> 100 <p>By default the captcha will be placed on the Login, Register, Lost Password and Comments forms.</p> 101 </div> 102 <?php wp_nonce_field('adcaptcha_form_action'); ?> 103 <button type="submit" class="save-button">Save</button> 104 </form> 51 <?php 52 switch ($tab) { 53 case 'general': 54 $generalSettings = new \AdCaptcha\Settings\General\General(); 55 $generalSettings->render_general_settings(); 56 break; 57 case 'plugins': 58 $pluginsSettings = new \AdCaptcha\Settings\Plugins\Plugins(); 59 $pluginsSettings->render_Plugins_settings(); 60 break; 61 } 62 ?> 105 63 </div> 106 64 <?php … … 113 71 114 72 public function change_admin_footer_version() { 115 return 'Version 1. 0';73 return 'Version 1.1.0'; 116 74 } 117 75 } -
adcaptcha/trunk/src/styles/settings.css
r3060548 r3064464 5 5 6 6 .header { 7 padding: 35px 20px 35px 20px;7 padding: 35px 20px 0px 20px; 8 8 margin: 0 20px 0 0; 9 9 display: grid; 10 grid-auto-flow: column;11 10 justify-content: space-between; 12 11 align-items: center; … … 23 22 } 24 23 24 .plugin_logo { 25 margin-bottom: 20px; 26 margin-top: 10px; 27 } 28 25 29 .input-field { 26 30 max-width: 500px; … … 35 39 } 36 40 41 .checkbox-container{ 42 display: flex; 43 align-items: center; 44 margin-bottom: 10px; 45 } 46 47 .checkbox-label { 48 font-size: 14px; 49 margin-left: 5px; 50 margin-bottom: 3px; 51 } 52 37 53 .form { 38 54 display: flex; … … 43 59 } 44 60 45 .integrating-description { 61 .plugin-form { 62 display: flex; 63 flex-direction: column; 64 margin-bottom: 20px; 65 margin-right: 36px; 66 } 67 68 .plugins-layout { 69 display: flex; 70 flex-direction: row; 71 flex-wrap: wrap; 72 } 73 74 .plugin-container { 75 background-color: white; 76 padding: 20px 20px 0px 20px; 77 width: 320px; 78 height: 225px; 79 margin-bottom: 20px; 80 margin-right: 30px; 81 border-radius: 5px; 82 } 83 84 .plugins-container, .integrating-description { 46 85 margin-top: 20px; 86 margin-left: 20px; 47 87 } 48 88 … … 91 131 outline: 2px solid var(--accent); 92 132 } 133 134 .nav { 135 padding: 0 20px; 136 } 137 138 .nav-tab { 139 box-shadow: inset 0 -2px #fff; 140 text-decoration: none; 141 font-size: 0.875rem; 142 font-weight: 500; 143 background: none; 144 border: none; 145 margin: 0; 146 padding: 15px; 147 transition: box-shadow 0.1s ease; 148 149 150 &.nav-tab-active, 151 &.nav-tab-active:hover { 152 box-shadow: inset 0 -2px var(--accent); 153 color: var(--accent); 154 } 155 156 &:hover { 157 box-shadow: inset 0 -2px rgba(151, 151, 246, 0.8); 158 } 159 }
Note: See TracChangeset
for help on using the changeset viewer.