diff --git a/assets/admin/settings.css b/assets/admin/settings.css index f7bc5b5..b7dfb3b 100644 --- a/assets/admin/settings.css +++ b/assets/admin/settings.css @@ -520,6 +520,9 @@ video { .frbl-settings-wrapper .tw--ml-1 { margin-left: -0.25rem; } +.frbl-settings-wrapper .tw-mb-0 { + margin-bottom: 0px; +} .frbl-settings-wrapper .tw-mb-2 { margin-bottom: 0.5rem; } @@ -529,24 +532,24 @@ video { .frbl-settings-wrapper .tw-mb-8 { margin-bottom: 2rem; } -.frbl-settings-wrapper .tw-ml-2 { - margin-left: 0.5rem; -} .frbl-settings-wrapper .tw-ml-3 { margin-left: 0.75rem; } -.frbl-settings-wrapper .tw-ml-auto { - margin-left: auto; -} .frbl-settings-wrapper .tw-mr-2 { margin-right: 0.5rem; } -.frbl-settings-wrapper .tw-mt-1 { - margin-top: 0.25rem; +.frbl-settings-wrapper .tw-mt-0 { + margin-top: 0px; } .frbl-settings-wrapper .tw-mt-2 { margin-top: 0.5rem; } +.frbl-settings-wrapper .tw-mt-4 { + margin-top: 1rem; +} +.frbl-settings-wrapper .tw-mt-6 { + margin-top: 1.5rem; +} .frbl-settings-wrapper .tw-mt-8 { margin-top: 2rem; } @@ -574,15 +577,12 @@ video { .frbl-settings-wrapper .tw-max-w-5xl { max-width: 64rem; } +.frbl-settings-wrapper .tw-flex-1 { + flex: 1 1 0%; +} .frbl-settings-wrapper .tw-flex-shrink-0 { flex-shrink: 0; } -.frbl-settings-wrapper .tw-flex-grow { - flex-grow: 1; -} -.frbl-settings-wrapper .tw-items-start { - align-items: flex-start; -} .frbl-settings-wrapper .tw-items-center { align-items: center; } @@ -592,24 +592,19 @@ video { .frbl-settings-wrapper .tw-gap-2 { gap: 0.5rem; } -.frbl-settings-wrapper .tw-gap-3 { - gap: 0.75rem; -} .frbl-settings-wrapper :is(.tw-space-x-2 > :not([hidden]) ~ :not([hidden])) { --tw-space-x-reverse: 0; margin-right: calc(0.5rem * var(--tw-space-x-reverse)); margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); } -.frbl-settings-wrapper :is(.tw-space-y-4 > :not([hidden]) ~ :not([hidden])) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} .frbl-settings-wrapper :is(.tw-space-y-6 > :not([hidden]) ~ :not([hidden])) { --tw-space-y-reverse: 0; margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); } +.frbl-settings-wrapper .tw-overflow-auto { + overflow: auto; +} .frbl-settings-wrapper .tw-overflow-hidden { overflow: hidden; } @@ -646,24 +641,16 @@ video { --tw-border-opacity: 1; border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); } -.frbl-settings-wrapper .tw-border-green-300 { - --tw-border-opacity: 1; - border-color: rgb(134 239 172 / var(--tw-border-opacity, 1)); -} .frbl-settings-wrapper .tw-border-red-200 { --tw-border-opacity: 1; border-color: rgb(254 202 202 / var(--tw-border-opacity, 1)); } -.frbl-settings-wrapper .tw-border-red-300 { - --tw-border-opacity: 1; - border-color: rgb(252 165 165 / var(--tw-border-opacity, 1)); -} .frbl-settings-wrapper .tw-border-transparent { border-color: transparent; } -.frbl-settings-wrapper .tw-border-yellow-300 { +.frbl-settings-wrapper .tw-border-yellow-200 { --tw-border-opacity: 1; - border-color: rgb(253 224 71 / var(--tw-border-opacity, 1)); + border-color: rgb(254 240 138 / var(--tw-border-opacity, 1)); } .frbl-settings-wrapper .tw-border-yellow-400 { --tw-border-opacity: 1; @@ -677,10 +664,6 @@ video { --tw-bg-opacity: 1; background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); } -.frbl-settings-wrapper .tw-bg-green-100 { - --tw-bg-opacity: 1; - background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1)); -} .frbl-settings-wrapper .tw-bg-primary-100 { --tw-bg-opacity: 1; background-color: rgb(228 230 253 / var(--tw-bg-opacity, 1)); @@ -689,10 +672,6 @@ video { --tw-bg-opacity: 1; background-color: rgb(104 125 249 / var(--tw-bg-opacity, 1)); } -.frbl-settings-wrapper .tw-bg-red-100 { - --tw-bg-opacity: 1; - background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1)); -} .frbl-settings-wrapper .tw-bg-red-50 { --tw-bg-opacity: 1; background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1)); @@ -701,10 +680,6 @@ video { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); } -.frbl-settings-wrapper .tw-bg-yellow-100 { - --tw-bg-opacity: 1; - background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1)); -} .frbl-settings-wrapper .tw-bg-yellow-50 { --tw-bg-opacity: 1; background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1)); @@ -720,12 +695,12 @@ video { .frbl-settings-wrapper .tw-to-white { --tw-gradient-to: #fff var(--tw-gradient-to-position); } -.frbl-settings-wrapper .tw-p-3 { - padding: 0.75rem; -} .frbl-settings-wrapper .tw-p-4 { padding: 1rem; } +.frbl-settings-wrapper .tw-p-6 { + padding: 1.5rem; +} .frbl-settings-wrapper .tw-px-3 { padding-left: 0.75rem; padding-right: 0.75rem; @@ -742,6 +717,10 @@ video { padding-top: 0.25rem; padding-bottom: 0.25rem; } +.frbl-settings-wrapper .tw-py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} .frbl-settings-wrapper .tw-py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; @@ -754,15 +733,16 @@ video { padding-top: 2rem; padding-bottom: 2rem; } -.frbl-settings-wrapper .tw-pr-4 { - padding-right: 1rem; -} .frbl-settings-wrapper .tw-pt-6 { padding-top: 1.5rem; } .frbl-settings-wrapper .tw-text-center { text-align: center; } +.frbl-settings-wrapper .tw-text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} .frbl-settings-wrapper .tw-text-3xl { font-size: 1.875rem; line-height: 2.25rem; @@ -771,6 +751,10 @@ video { font-size: 1rem; line-height: 1.5rem; } +.frbl-settings-wrapper .tw-text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} .frbl-settings-wrapper .tw-text-sm { font-size: 0.875rem; line-height: 1.25rem; @@ -808,13 +792,13 @@ video { --tw-text-opacity: 1; color: rgb(75 85 99 / var(--tw-text-opacity, 1)); } -.frbl-settings-wrapper .tw-text-gray-900 { +.frbl-settings-wrapper .tw-text-gray-700 { --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity, 1)); + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); } -.frbl-settings-wrapper .tw-text-green-800 { +.frbl-settings-wrapper .tw-text-gray-900 { --tw-text-opacity: 1; - color: rgb(22 101 52 / var(--tw-text-opacity, 1)); + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); } .frbl-settings-wrapper .tw-text-primary-500 { --tw-text-opacity: 1; @@ -828,10 +812,6 @@ video { --tw-text-opacity: 1; color: rgb(185 28 28 / var(--tw-text-opacity, 1)); } -.frbl-settings-wrapper .tw-text-red-800 { - --tw-text-opacity: 1; - color: rgb(153 27 27 / var(--tw-text-opacity, 1)); -} .frbl-settings-wrapper .tw-text-white { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)); @@ -844,19 +824,9 @@ video { --tw-text-opacity: 1; color: rgb(161 98 7 / var(--tw-text-opacity, 1)); } -.frbl-settings-wrapper .tw-text-yellow-800 { - --tw-text-opacity: 1; - color: rgb(133 77 14 / var(--tw-text-opacity, 1)); -} .frbl-settings-wrapper .tw-underline { text-decoration-line: underline; } -.frbl-settings-wrapper .tw-no-underline { - text-decoration-line: none; -} -.frbl-settings-wrapper .tw-opacity-50 { - opacity: 0.5; -} .frbl-settings-wrapper .tw-shadow-sm { --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); @@ -1051,10 +1021,6 @@ video { margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } } -.frbl-settings-wrapper .hover\:tw-bg-primary-200:hover { - --tw-bg-opacity: 1; - background-color: rgb(205 208 251 / var(--tw-bg-opacity, 1)); -} .frbl-settings-wrapper .hover\:tw-bg-primary-600:hover { --tw-bg-opacity: 1; background-color: rgb(85 101 237 / var(--tw-bg-opacity, 1)); @@ -1063,9 +1029,6 @@ video { --tw-text-opacity: 1; color: rgb(85 101 237 / var(--tw-text-opacity, 1)); } -.frbl-settings-wrapper .hover\:tw-no-underline:hover { - text-decoration-line: none; -} .frbl-settings-wrapper .focus\:tw-border-transparent:focus { border-color: transparent; } @@ -1100,486 +1063,3 @@ video { } } -/* Custom styles for license fields */ -.frbl-settings-wrapper .tw-text-base:not(button) { - font-size: 1rem; - line-height: 1.5rem; - width: 100%; -} - -.frbl-settings-wrapper .tw-flex { - display: flex; - column-gap: 20px; -} - -/* Submit button width */ -.frbl-settings-wrapper .tw-w-1\/2 { - width: 50%; -} - -/* Features Grid Layout */ -.frbl-section-wrapper { - margin-bottom: 3rem; -} - -.frbl-features-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 1.25rem; -} - -/* Feature Card Styles */ -.frbl-feature-card { - position: relative; - background: #ffffff; - border: 1px solid #e5e7eb; - border-radius: 12px; - padding: 1.5rem; - transition: all 0.2s ease; - overflow: hidden; - display: flex; - flex-direction: column; - min-height: 80px; -} - -.frbl-feature-card:hover { - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); - transform: translateY(-2px); - border-color: #687df9; -} - -/* PRO Badge */ -.frbl-pro-badge { - position: absolute; - top: 0; - left: 0; - background: linear-gradient(135deg, #ec4899 0%, #f97316 100%); - color: #ffffff; - font-size: 0.625rem; - font-weight: 700; - letter-spacing: 0.05em; - padding: 0.25rem 0.75rem; - border-radius: 0 0 12px 0; - box-shadow: 0 2px 4px rgba(236, 72, 153, 0.3); - z-index: 10; -} - -/* Feature Card Content */ -.frbl-feature-content { - display: flex; - align-items: center; - justify-content: space-between; - gap: 1rem; - min-height: 3rem; -} - -/* Feature Icon */ -.frbl-feature-icon { - flex-shrink: 0; - width: 2.5rem; - height: 2.5rem; - display: flex; - align-items: center; - justify-content: center; - background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%); - border-radius: 10px; - color: #687df9; - transition: all 0.2s ease; -} - -.frbl-feature-card:hover .frbl-feature-icon { - background: linear-gradient(135deg, #e0e3fc 0%, #d0d4fb 100%); - transform: scale(1.05); -} - -.frbl-feature-icon svg { - width: 1.5rem; - height: 1.5rem; - stroke-width: 2; -} - -/* Feature Info */ -.frbl-feature-info { - flex: 1; - min-width: 0; - display: flex; - align-items: center; -} - -.frbl-feature-title { - font-size: 0.9375rem; - font-weight: 600; - color: #1f2937; - margin: 0; - line-height: 1.5; -} - -.frbl-feature-description { - font-size: 0.8125rem; - color: #6b7280; - margin: 0.25rem 0 0 0; - line-height: 1.4; -} - -/* Active Feature Cards */ -.frbl-feature-card.frbl-feature-active { - background: linear-gradient(135deg, #ffffff 0%, #f0fdf4 100%); - border-color: #d1fae5; -} - -.frbl-feature-card.frbl-feature-active:hover { - border-color: #10b981; -} - -.frbl-feature-card.frbl-feature-active .frbl-feature-icon { - background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%); - color: #10b981; -} - -.frbl-feature-card.frbl-feature-active:hover .frbl-feature-icon { - background: linear-gradient(135deg, #a7f3d0 0%, #6ee7b7 100%); -} - -/* Active cards need vertical layout for description */ -.frbl-feature-card.frbl-feature-active .frbl-feature-info { - flex-direction: column; - align-items: flex-start; -} - -/* Active cards don't have toggle, so don't use space-between */ -.frbl-feature-card.frbl-feature-active .frbl-feature-content { - justify-content: flex-start; -} - -/* Feature Toggle */ -.frbl-feature-toggle { - flex-shrink: 0; - display: flex; - align-items: center; -} - -/* PRO Card Styles */ -.frbl-feature-card.frbl-feature-pro { - background: linear-gradient(135deg, #ffffff 0%, #fef3f2 100%); - border-color: #fee2e2; -} - -.frbl-feature-card.frbl-feature-pro:hover { - border-color: #ec4899; -} - -.frbl-feature-card.frbl-feature-pro .frbl-feature-icon { - background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%); - color: #ec4899; -} - -.frbl-feature-card.frbl-feature-pro:hover .frbl-feature-icon { - background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%); -} - -/* Disabled state for PRO features without license */ -.frbl-feature-card.frbl-feature-pro .frbl-toggle:has(input:disabled) { - opacity: 0.6; -} - -/* Responsive adjustments */ -@media (max-width: 768px) { - .frbl-features-grid { - grid-template-columns: 1fr; - } - - .frbl-feature-card { - padding: 1.25rem; - } -} - -@media (min-width: 768px) and (max-width: 1024px) { - .frbl-features-grid { - grid-template-columns: repeat(2, 1fr); - } -} - - -/* ============================================= - License Management Styles (Complete & Independent) - Based on FormsCRM but standalone for FrontBlocks - ============================================= */ - -/* License Wrapper - Grid Layout */ -.formscrm-license-wrapper { - display: grid; - grid-template-columns: 1fr 320px; - gap: 24px; - max-width: 1200px; - margin: 20px 0; -} - -@media (max-width: 900px) { - .formscrm-license-wrapper { - grid-template-columns: 1fr; - } -} - -/* Main Card */ -.formscrm-card { - background: #fff; - border: 1px solid #e5e7eb; - border-radius: 12px; - padding: 32px; - box-shadow: 0 1px 3px rgba(0,0,0,0.05); -} - -.formscrm-card-header { - margin-bottom: 24px; - padding-bottom: 20px; - border-bottom: 1px solid #e5e7eb; -} - -.formscrm-card-header h2 { - margin: 0 0 8px 0; - font-size: 1.5rem; - font-weight: 600; - color: #1f2937; -} - -.formscrm-card-header p { - margin: 0; - color: #6b7280; - font-size: 0.875rem; -} - -/* Form Elements */ -.formscrm-form-group { - margin-bottom: 24px; -} - -.formscrm-label { - display: block; - font-weight: 600; - color: #374151; - margin-bottom: 8px; - font-size: 0.875rem; -} - -.formscrm-input-group { - display: flex; - gap: 12px; - align-items: center; -} - -.formscrm-input { - flex: 1; - padding: 12px 16px; - border: 1px solid #d1d5db; - border-radius: 8px; - font-size: 1rem; - transition: all 0.2s; - background: #fff; -} - -.formscrm-input:focus { - outline: none; - border-color: #8b5cf6; - box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15); -} - -.formscrm-input[readonly] { - background: #f9fafb; - color: #6b7280; - cursor: not-allowed; -} - -/* Deactivate Label */ -.formscrm-deactivate-label { - display: flex; - align-items: center; - gap: 8px; - padding: 12px 16px; - background: #fef2f2; - border: 1px solid #fecaca; - border-radius: 8px; - cursor: pointer; - transition: background 0.2s; - white-space: nowrap; -} - -.formscrm-deactivate-label:hover { - background: #fee2e2; -} - -.formscrm-deactivate-label input { - margin: 0; -} - -.formscrm-deactivate-label span { - font-size: 0.875rem; - font-weight: 600; - color: #dc2626; -} - -/* Help Text */ -.formscrm-help-text { - margin: 8px 0 0 0; - font-size: 0.75rem; - color: #9ca3af; -} - -/* Status Box */ -.formscrm-status-box { - display: flex; - align-items: center; - gap: 12px; - padding: 14px 18px; - border-radius: 8px; - border: 2px solid; -} - -.formscrm-status-active { - background: #dcfce7; - border-color: #86efac; - color: #166534; -} - -.formscrm-status-expired { - background: #fee2e2; - border-color: #fca5a5; - color: #991b1b; -} - -.formscrm-status-inactive { - background: #fef9c3; - border-color: #fde047; - color: #854d0e; -} - -.formscrm-status-icon { - display: flex; - flex-shrink: 0; -} - -.formscrm-icon, -.fcod-icon { - width: 22px; - height: 22px; -} - -.formscrm-status-text { - font-weight: 700; - font-size: 1rem; -} - -/* Notices */ -.formscrm-notice { - padding: 14px 18px; - border-radius: 8px; - margin-bottom: 20px; -} - -.formscrm-notice p { - margin: 0; - font-size: 0.875rem; - line-height: 1.5; -} - -.formscrm-notice a { - font-weight: 600; - text-decoration: underline; -} - -.formscrm-notice-info { - background: #f0f9ff; - border: 1px solid #bfdbfe; - color: #1e40af; -} - -.formscrm-notice-info a { - color: #1d4ed8; -} - -.formscrm-notice-error { - background: #fef2f2; - border: 1px solid #fecaca; - color: #991b1b; -} - -.formscrm-notice-error a { - color: #dc2626; -} - -/* Form Actions */ -.formscrm-form-actions { - margin-top: 24px; - padding-top: 24px; - border-top: 1px solid #e5e7eb; -} - -/* Buttons - FrontBlocks Purple Style */ -.formscrm-button { - display: inline-flex; - align-items: center; - padding: 12px 24px; - border-radius: 8px; - font-size: 1rem; - font-weight: 600; - cursor: pointer; - transition: all 0.2s; - border: none; -} - -.formscrm-button-primary { - background: #8b5cf6; - color: #fff; -} - -.formscrm-button-primary:hover { - background: #7c3aed; - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); -} - -/* Info Card (Sidebar) */ -.formscrm-info-card { - background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); - border: 1px solid #e2e8f0; - border-radius: 12px; - padding: 24px; - height: fit-content; -} - -.formscrm-info-card h3 { - margin: 0 0 12px 0; - font-size: 1.125rem; - font-weight: 700; - color: #1e293b; -} - -.formscrm-info-card p { - margin: 0 0 16px 0; - font-size: 0.875rem; - color: #64748b; - line-height: 1.5; -} - -/* Benefits List */ -.formscrm-benefits-list { - margin: 0; - padding: 0; - list-style: none; -} - -.formscrm-benefits-list li { - position: relative; - padding-left: 28px; - margin-bottom: 10px; - font-size: 0.875rem; - color: #475569; -} - -.formscrm-benefits-list li::before { - content: "✓"; - position: absolute; - left: 0; - top: 0; - color: #8b5cf6; - font-weight: 700; - font-size: 1.125rem; -} diff --git a/assets/carousel/frontblocks-advanced-option.js b/assets/carousel/frontblocks-advanced-option.js index c61355e..9ace701 100644 --- a/assets/carousel/frontblocks-advanced-option.js +++ b/assets/carousel/frontblocks-advanced-option.js @@ -1,8 +1,14 @@ "use strict"; +function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } +function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } +function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // Add custom controls to the Advanced panel of GenerateBlocks Grid block var addFilter = wp.hooks.addFilter; -var Fragment = wp.element.Fragment; +var _wp$element = wp.element, + Fragment = _wp$element.Fragment, + useEffect = _wp$element.useEffect, + useRef = _wp$element.useRef; var _wp$blockEditor = wp.blockEditor, InspectorControls = _wp$blockEditor.InspectorControls, PanelColorSettings = _wp$blockEditor.PanelColorSettings; @@ -12,22 +18,79 @@ var _wp$components = wp.components, PanelBody = _wp$components.PanelBody, ToggleControl = _wp$components.ToggleControl; var __ = wp.i18n.__; + +/** + * Returns the document that renders block content. + * WordPress 6.x uses an