diff --git a/pages/pricing.php b/pages/pricing.php index 35d4ae6..99325ca 100644 --- a/pages/pricing.php +++ b/pages/pricing.php @@ -26,7 +26,7 @@ return <<<'ORIBI_SYNC_CONTENT' - + diff --git a/theme/assets/css/main.css b/theme/assets/css/main.css index 1f7f41f..96c2b82 100644 --- a/theme/assets/css/main.css +++ b/theme/assets/css/main.css @@ -4536,6 +4536,30 @@ p:last-child { margin-bottom: 0; } .cta-banner h2 { color: #fff; margin-bottom: 1rem; } .cta-banner p { color: rgba(255,255,255,.85); margin-bottom: 2rem; font-size: 1.1rem; } +/* ── CTA Inline ─────────────────────────────────────────────────────────── */ +.cta-inline { + padding-block: 3rem; + border-top: 1px solid var(--color-border); + border-bottom: 1px solid var(--color-border); +} +.cta-inline__inner { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 1.5rem; +} +.cta-inline__heading { + font-size: clamp(1.25rem, 2.5vw, 1.75rem); + color: var(--color-heading); + margin-bottom: 0.4rem; +} +.cta-inline__text { + color: var(--color-text-muted); + font-size: 1rem; + margin: 0; +} + .devices-split-card { display: grid; grid-template-columns: 1fr 1fr; diff --git a/theme/blocks/editor.js b/theme/blocks/editor.js index a13b8f2..c49edb7 100644 --- a/theme/blocks/editor.js +++ b/theme/blocks/editor.js @@ -591,6 +591,43 @@ save: function () { return null; } }); + /* 5b. CTA INLINE ──────────────────────────────────────────────────────── */ + reg('oribi/cta-inline', { + title: 'Oribi CTA Inline', + icon: 'minus', + category: 'oribi', + supports: { align: ['full'], html: false }, + attributes: { + align: { type: 'string', default: 'full' }, + heading: { type: 'string', default: '' }, + text: { type: 'string', default: '' }, + btnText: { type: 'string', default: '' }, + btnUrl: { type: 'string', default: '' }, + }, + edit: function (props) { + var a = props.attributes, s = props.setAttributes; + return el(Frag, null, + el(IC, null, + el(PB, { title: 'Button' }, + el(TC, { label: 'URL', value: a.btnUrl, onChange: function (v) { s({ btnUrl: v }); } }) + ) + ), + el('section', { className: 'cta-inline' }, + el('div', { className: 'container' }, + el('div', { className: 'cta-inline__inner' }, + el('div', { className: 'cta-inline__body' }, + el(RT, { tagName: 'h2', className: 'cta-inline__heading', value: a.heading, onChange: function (v) { s({ heading: v }); }, placeholder: 'CTA heading...' }), + el(RT, { tagName: 'p', className: 'cta-inline__text', value: a.text, onChange: function (v) { s({ text: v }); }, placeholder: 'Supporting text...' }) + ), + el(RT, { tagName: 'span', className: 'btn btn-primary', value: a.btnText, onChange: function (v) { s({ btnText: v }); }, placeholder: 'Button text...' }) + ) + ) + ) + ); + }, + save: function () { return null; } + }); + /* 6. INTRO SECTION ────────────────────────────────────────────────────── */ reg('oribi/intro-section', { title: 'Oribi Intro Section', diff --git a/theme/blocks/index.php b/theme/blocks/index.php index 499384f..c806113 100644 --- a/theme/blocks/index.php +++ b/theme/blocks/index.php @@ -331,6 +331,17 @@ add_action('init', function () { 'render_callback' => 'oribi_render_cta_banner', ]); + register_block_type('oribi/cta-inline', [ + 'attributes' => [ + 'heading' => ['type' => 'string', 'default' => ''], + 'text' => ['type' => 'string', 'default' => ''], + 'btnText' => ['type' => 'string', 'default' => ''], + 'btnUrl' => ['type' => 'string', 'default' => ''], + ], + 'supports' => $block_supports, + 'render_callback' => 'oribi_render_cta_inline', + ]); + register_block_type('oribi/intro-section', [ 'attributes' => [ 'variant' => ['type' => 'string', 'default' => 'normal'], @@ -1004,6 +1015,26 @@ function oribi_render_cta_banner($a) +
+
+
+
+

+ +

+ +
+ +
+
+
+