Polish corporate website branding

This commit is contained in:
metatroncubeswdev 2026-08-31 15:02:24 -04:00
parent cdf7dbe86e
commit d1b464f4bb
7 changed files with 154 additions and 18 deletions

View File

@ -1,2 +1,3 @@
from . import controllers from . import controllers
from . import hooks
from . import models from . import models

View File

@ -19,6 +19,7 @@
"security/security.xml", "security/security.xml",
"security/ir.model.access.csv", "security/ir.model.access.csv",
"data/sequence_data.xml", "data/sequence_data.xml",
"data/website_data.xml",
"views/support_ticket_views.xml", "views/support_ticket_views.xml",
"views/website_templates.xml", "views/website_templates.xml",
"views/website_menus.xml", "views/website_menus.xml",
@ -28,6 +29,7 @@
"mcs_corporate_website/static/src/scss/corporate_website.scss", "mcs_corporate_website/static/src/scss/corporate_website.scss",
], ],
}, },
"post_init_hook": "post_init_hook",
"installable": True, "installable": True,
"application": False, "application": False,
} }

View File

@ -0,0 +1,6 @@
<odoo>
<record id="website.default_website" model="website">
<field name="name">Metatroncube Workplace</field>
<field name="logo" type="base64" file="mcs_corporate_website/static/src/img/metatroncube-logo.png"/>
</record>
</odoo>

View File

@ -0,0 +1,38 @@
import base64
from pathlib import Path
from odoo import api, SUPERUSER_ID
def post_init_hook(env_or_cr, registry=None):
if registry is not None:
env = api.Environment(env_or_cr, SUPERUSER_ID, {})
else:
env = env_or_cr
CorporateWebsiteSetup(env).run()
class CorporateWebsiteSetup:
def __init__(self, env):
self.env = env
def run(self):
self._brand_website()
self._hide_duplicate_home_menu()
def _brand_website(self):
website = self.env["website"].sudo().search([], limit=1)
if not website:
return
logo_path = Path(__file__).parent / "static" / "src" / "img" / "metatroncube-logo.png"
values = {
"name": "Metatroncube Workplace",
}
if logo_path.exists():
values["logo"] = base64.b64encode(logo_path.read_bytes())
website.write(values)
def _hide_duplicate_home_menu(self):
menu = self.env.ref("mcs_corporate_website.menu_home", raise_if_not_found=False)
if menu:
menu.sudo().write({"is_visible": False})

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,10 +1,13 @@
.mcs-site { .mcs-site {
--mcs-ink: #101828; --mcs-ink: #101828;
--mcs-muted: #5b6474; --mcs-muted: #596579;
--mcs-line: #d8dee8; --mcs-line: #d7dfe9;
--mcs-blue: #155eef; --mcs-blue: #1c4ed8;
--mcs-blue-dark: #0f2f6f; --mcs-navy: #071426;
--mcs-surface: #f5f8fc; --mcs-teal: #0f766e;
--mcs-gold: #d9931e;
--mcs-surface: #f6f8fb;
--mcs-panel: #ffffff;
color: var(--mcs-ink); color: var(--mcs-ink);
background: #ffffff; background: #ffffff;
@ -20,9 +23,9 @@
} }
h1 { h1 {
font-size: clamp(2.4rem, 4rem, 4rem); font-size: 4rem;
line-height: 1.02; line-height: 1.02;
font-weight: 750; font-weight: 780;
} }
h2 { h2 {
@ -47,22 +50,79 @@
font-weight: 700; font-weight: 700;
padding: 0.75rem 1.05rem; padding: 0.75rem 1.05rem;
} }
.btn-primary {
background: var(--mcs-blue);
border-color: var(--mcs-blue);
box-shadow: 0 8px 18px rgba(28, 78, 216, 0.18);
}
.btn-secondary {
color: #ffffff;
background: var(--mcs-teal);
border-color: var(--mcs-teal);
}
}
#wrapwrap > header {
.navbar {
min-height: 76px;
background: #071426 !important;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 12px 30px rgba(7, 20, 38, 0.16) !important;
}
.navbar-brand.logo {
display: flex;
align-items: center;
min-width: 180px;
margin-right: 28px !important;
img {
width: auto !important;
height: 44px !important;
max-width: 190px;
object-fit: contain;
}
}
.top_menu .nav-link {
color: rgba(255, 255, 255, 0.76) !important;
font-weight: 700;
padding-inline: 0.8rem !important;
}
.top_menu .nav-link.active,
.top_menu .nav-link:hover {
color: #ffffff !important;
}
.top_menu .nav-link.active span {
border-bottom: 2px solid #d9931e;
padding-bottom: 5px;
}
.o_header_hide_on_scroll {
background: #071426 !important;
}
} }
.mcs-hero { .mcs-hero {
position: relative; position: relative;
min-height: 680px; min-height: 640px;
display: flex; display: flex;
align-items: center; align-items: center;
overflow: hidden; overflow: hidden;
color: #ffffff; color: #ffffff;
background: #07111f; background: #071426;
&::before { &::before {
content: ""; content: "";
position: absolute; position: absolute;
inset: 0; inset: 0;
background: linear-gradient(90deg, rgba(7, 17, 31, 0.94), rgba(7, 17, 31, 0.72), rgba(7, 17, 31, 0.18)); background:
linear-gradient(90deg, rgba(7, 20, 38, 0.96), rgba(7, 20, 38, 0.78), rgba(7, 20, 38, 0.28)),
linear-gradient(180deg, rgba(7, 20, 38, 0), rgba(7, 20, 38, 0.38));
z-index: 1; z-index: 1;
} }
} }
@ -89,14 +149,14 @@
.mcs-lead { .mcs-lead {
max-width: 650px; max-width: 650px;
margin: 24px 0 0; margin: 24px 0 0;
color: rgba(255, 255, 255, 0.82); color: rgba(255, 255, 255, 0.84);
font-size: 1.18rem; font-size: 1.18rem;
} }
} }
.mcs-eyebrow { .mcs-eyebrow {
margin: 0 0 12px; margin: 0 0 12px;
color: var(--mcs-blue); color: var(--mcs-gold);
font-size: 0.78rem; font-size: 0.78rem;
font-weight: 800; font-weight: 800;
letter-spacing: 0.12em; letter-spacing: 0.12em;
@ -111,7 +171,7 @@
} }
.mcs-band { .mcs-band {
padding: 76px 0; padding: 80px 0;
} }
.mcs-band--quiet { .mcs-band--quiet {
@ -148,11 +208,19 @@
.mcs-metrics div { .mcs-metrics div {
border: 1px solid var(--mcs-line); border: 1px solid var(--mcs-line);
border-radius: 8px; border-radius: 8px;
background: #ffffff; background: var(--mcs-panel);
box-shadow: 0 18px 45px rgba(16, 24, 40, 0.07);
} }
.mcs-service-card { .mcs-service-card {
overflow: hidden; overflow: hidden;
transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
&:hover {
border-color: rgba(28, 78, 216, 0.24);
box-shadow: 0 24px 60px rgba(16, 24, 40, 0.12);
transform: translateY(-2px);
}
img { img {
width: 100%; width: 100%;
@ -172,6 +240,7 @@
a { a {
display: inline-flex; display: inline-flex;
margin-top: 12px; margin-top: 12px;
color: var(--mcs-blue);
font-weight: 700; font-weight: 700;
text-decoration: none; text-decoration: none;
} }
@ -190,6 +259,7 @@
div { div {
padding: 20px; padding: 20px;
border-left: 4px solid var(--mcs-gold);
} }
strong { strong {
@ -211,7 +281,7 @@
} }
.mcs-cta { .mcs-cta {
background: #101828; background: var(--mcs-navy);
color: #ffffff; color: #ffffff;
h2 { h2 {
@ -221,8 +291,10 @@
} }
.mcs-page-head { .mcs-page-head {
padding: 96px 0 56px; padding: 104px 0 64px;
background: #101828; background:
linear-gradient(90deg, rgba(7, 20, 38, 0.96), rgba(7, 20, 38, 0.86)),
url("https://metatroncubesolutions.com/assets/images/home/bg-without.webp") center / cover;
color: #ffffff; color: #ffffff;
p:not(.mcs-eyebrow) { p:not(.mcs-eyebrow) {
@ -239,6 +311,7 @@
article { article {
padding: 26px; padding: 26px;
border-top: 4px solid var(--mcs-blue);
} }
} }
@ -283,7 +356,7 @@
} }
.mcs-hero { .mcs-hero {
min-height: 620px; min-height: 560px;
} }
.mcs-service-grid, .mcs-service-grid,
@ -303,3 +376,18 @@
position: static; position: static;
} }
} }
@media (max-width: 575.98px) {
#wrapwrap > header .navbar-brand.logo img {
height: 36px !important;
max-width: 158px;
}
.mcs-site h1 {
font-size: 2.1rem;
}
.mcs-band {
padding: 56px 0;
}
}

View File

@ -4,6 +4,7 @@
<field name="url">/</field> <field name="url">/</field>
<field name="parent_id" ref="website.main_menu"/> <field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">5</field> <field name="sequence" type="int">5</field>
<field name="is_visible" eval="False"/>
</record> </record>
<record id="menu_services" model="website.menu"> <record id="menu_services" model="website.menu">
<field name="name">Services</field> <field name="name">Services</field>