add jazzy and clarity theme
|
@ -0,0 +1 @@
|
||||||
|
from . import controller
|
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
"name": "Clarity Backend Theme for community",
|
||||||
|
"version": "18.0.1.0.2",
|
||||||
|
'author': "Terabits Technolab",
|
||||||
|
'summary': """
|
||||||
|
Clarity backend theme
|
||||||
|
Odoo Backend Theme, Odoo Community Backend Theme, Web backend Theme, Web Responsive Odoo Theme, New theme design, New design, Multi Level Menu,
|
||||||
|
Web Responsive , Odoo Theme, Odoo Modern Theme, Odoo Modern Backend Theme Odoo, Advance Theme Backend Advanced, Left sidebar menu,
|
||||||
|
All in one, New advanced Odoo Menu, Sidebar apps, Web menu, Odoo backend menu, Web Responsive menu, Sidebar dark,
|
||||||
|
Advance Menu Odoo App Menu Apps, Advanced Apps Menu, Elegant Menu, Web App Menu Backend, Menu Odoo Backend, Collapse Menu, Light Sidebar,
|
||||||
|
Expand Menu, Collapsed Menu, Expanded Menu, New Style Menus, Advanced Sidebar Menu, Advance Sidebar Menu, Responsive Menu Sidebar, Sidebar Theme,
|
||||||
|
Responsive Sidebar, Hide menu, Show Menu, Hide Sidebar, Show Sidebar, Toggle Menu, Toggle Sidebar, Menu Theme,
|
||||||
|
Quick Backend Menu, Dropdown Menu, Parent Menus, Shortcut Menus, Menu Icons, Collapsible menu Odoo,
|
||||||
|
Menu Dynamic Sidebar, Advanced Menu, Backend Odoo Web, Elegant Theme Simple, Advance List View Manager,
|
||||||
|
Arc Backend Theme, Fully Functional Theme, Flexible Backend Theme, Fast Backend Theme, Advance Material Backend Theme, Customizable Backend Theme,
|
||||||
|
Attractive Theme for Backend, Elegant Backend Theme, Responsive Web Client, Backend UI, Mobile Responsive for Odoo Community,
|
||||||
|
Flexible Enterprise Theme, Enterprise Backend Theme
|
||||||
|
""",
|
||||||
|
'description': """
|
||||||
|
Clarity backend theme
|
||||||
|
Odoo Backend Theme, Odoo Community Backend Theme, Web backend Theme, Web Responsive Odoo Theme, New theme design, New design, Multi Level Menu,
|
||||||
|
Web Responsive , Odoo Theme, Odoo Modern Theme, Odoo Modern Backend Theme Odoo, Advance Theme Backend Advanced, Left sidebar menu,
|
||||||
|
All in one, New advanced Odoo Menu, Sidebar apps, Web menu, Odoo backend menu, Web Responsive menu, Sidebar dark,
|
||||||
|
Advance Menu Odoo App Menu Apps, Advanced Apps Menu, Elegant Menu, Web App Menu Backend, Menu Odoo Backend, Collapse Menu, Light Sidebar,
|
||||||
|
Expand Menu, Collapsed Menu, Expanded Menu, New Style Menus, Advanced Sidebar Menu, Advance Sidebar Menu, Responsive Menu Sidebar, Sidebar Theme,
|
||||||
|
Responsive Sidebar, Hide menu, Show Menu, Hide Sidebar, Show Sidebar, Toggle Menu, Toggle Sidebar, Menu Theme,
|
||||||
|
Quick Backend Menu, Dropdown Menu, Parent Menus, Shortcut Menus, Menu Icons, Collapsible menu Odoo,
|
||||||
|
Menu Dynamic Sidebar, Advanced Menu, Backend Odoo Web, Elegant Theme Simple, Advance List View Manager,
|
||||||
|
Arc Backend Theme, Fully Functional Theme, Flexible Backend Theme, Fast Backend Theme, Advance Material Backend Theme, Customizable Backend Theme,
|
||||||
|
Attractive Theme for Backend, Elegant Backend Theme, Responsive Web Client, Backend UI, Mobile Responsive for Odoo Community,
|
||||||
|
Flexible Enterprise Theme, Enterprise Backend Theme
|
||||||
|
""",
|
||||||
|
"sequence": 7,
|
||||||
|
"license": "OPL-1",
|
||||||
|
"category": "Themes/Backend",
|
||||||
|
"website": "https://www.terabits.xyz",
|
||||||
|
"depends": ["web"],
|
||||||
|
"data": [
|
||||||
|
'views/res_config_setting.xml',
|
||||||
|
'views/res_users.xml',
|
||||||
|
'views/webclient_templates.xml'
|
||||||
|
],
|
||||||
|
"assets": {
|
||||||
|
"web.assets_frontend": [
|
||||||
|
'clarity_backend_theme_bits/static/src/scss/login.scss'
|
||||||
|
],
|
||||||
|
"web.assets_backend": [
|
||||||
|
'clarity_backend_theme_bits/static/src/xml/WebClient.xml',
|
||||||
|
'clarity_backend_theme_bits/static/src/xml/navbar/sidebar.xml',
|
||||||
|
'clarity_backend_theme_bits/static/src/xml/systray_items/user_menu.xml',
|
||||||
|
'clarity_backend_theme_bits/static/src/js/SidebarBottom.js',
|
||||||
|
'clarity_backend_theme_bits/static/src/js/WebClient.js',
|
||||||
|
'clarity_backend_theme_bits/static/src/scss/layout.scss',
|
||||||
|
'clarity_backend_theme_bits/static/src/scss/navbar.scss',
|
||||||
|
'clarity_backend_theme_bits/static/src/js/navbar.js',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'installable': True,
|
||||||
|
'application': True,
|
||||||
|
'auto_install': False,
|
||||||
|
'images': [
|
||||||
|
'static/description/logo.gif',
|
||||||
|
'static/description/theme_screenshot.gif',
|
||||||
|
],
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
from . import main
|
|
@ -0,0 +1,17 @@
|
||||||
|
import datetime
|
||||||
|
import pytz
|
||||||
|
from odoo import http, models, fields, api, tools
|
||||||
|
from odoo.http import request
|
||||||
|
|
||||||
|
class BackThemeBits(http.Controller):
|
||||||
|
@http.route(['/get/menu_data'], type='json', auth='public')
|
||||||
|
def get_irmenu_icondata(self, **kw):
|
||||||
|
menuobj = request.env['ir.ui.menu']
|
||||||
|
menu_recs = request.env['ir.ui.menu'].sudo().search(
|
||||||
|
[('id', 'in', kw.get('menu_ids'))])
|
||||||
|
|
||||||
|
app_menu_dict = {}
|
||||||
|
for menu in menu_recs:
|
||||||
|
menu_dict = menu.read(set(menuobj._fields))
|
||||||
|
app_menu_dict[menu.id] = menu_dict
|
||||||
|
return app_menu_dict
|
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 903 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 147 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 298 KiB |
After Width: | Height: | Size: 312 KiB |
After Width: | Height: | Size: 251 KiB |
After Width: | Height: | Size: 680 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 726 KiB |
After Width: | Height: | Size: 746 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 489 KiB |
After Width: | Height: | Size: 525 B |
After Width: | Height: | Size: 392 B |
After Width: | Height: | Size: 780 KiB |
After Width: | Height: | Size: 4.8 MiB |
After Width: | Height: | Size: 420 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 860 KiB |
After Width: | Height: | Size: 217 KiB |
|
@ -0,0 +1,757 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-US" data-website-id="1" data-oe-company-name="Odoo S.A.">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<link type="text/css" rel="stylesheet"
|
||||||
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" />
|
||||||
|
|
||||||
|
<script src="https://code.jquery.com/jquery-3.6.0.js"
|
||||||
|
integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Halant:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<link type="text/css" rel="stylesheet" href="/assets/assets.css" />
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="module-description">
|
||||||
|
<!-- Keep From Here -->
|
||||||
|
<div class="container">
|
||||||
|
<div class="oe_styling_v8">
|
||||||
|
<img class="img img-responsive center-block" style="border-top-left-radius:10px; border-top-right-radius:10px" src="https://www.terabits.xyz/index/img/clarity_backend_theme_bits/18.0/img.png">
|
||||||
|
<!-- blog post starts -->
|
||||||
|
|
||||||
|
<section class="blog_post_01">
|
||||||
|
<div class="position-relative w-100" style="display: inline-grid;">
|
||||||
|
<img src="images/blog_post_bg_01.png" class="img-responsive w-100 h-100 img img-fluid position-absolute left_0"/>
|
||||||
|
|
||||||
|
<div class="position-relative row justify-content-center align-items-center" style="padding: 20px 10px 20px 10px;">
|
||||||
|
<div class="col-12 my-3 px-5">
|
||||||
|
<div class="header-img">
|
||||||
|
<img src="images/blogpost_header_img.png" class="img img-fluid w-100" style="width: 100% !important;"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="blg-01-content text-center" style="margin-top: 65px;">
|
||||||
|
<h1 style="font-family: 'Inter', sans-serif; font-size: 55px; font-weight: 700;line-height: 61px;color: #151765;margin-bottom: 0 !important;">
|
||||||
|
Clarity Backend Theme
|
||||||
|
</h1>
|
||||||
|
<h1 style="font-family: 'Inter', sans-serif; font-size: 28px; font-weight: 600;line-height: 41px;color: #4267C8;">
|
||||||
|
Odoo community backend theme
|
||||||
|
</h1>
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px; color: #000000; margin-top: 20px;">
|
||||||
|
The clarity backend theme have amazing appearance on any device and is easy to <br/>
|
||||||
|
switch between all screen sizes. Clicking on any menu is made simple with an <br/>
|
||||||
|
contemporary and modern sidebar. You can browse across different apps using <br/>
|
||||||
|
elegant sidebar menu.The theme is designed, keeping in mind the delivery of <br/>
|
||||||
|
great user experience and user-friendly interface to your users.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="features px-5 mx-5" style="margin-top: 70px;">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-xl-6 d-flex justify-content-end my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
App Drawer design for Community Addition
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 d-flex justify-content-start my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
Login & Signup Redesign
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 d-flex justify-content-end my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
Customized Discuss view design
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 d-flex justify-content-start my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
Show brand's logo in menu
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 d-flex justify-content-end my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
Customzed List, Form, Kanban view design
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 d-flex justify-content-start my-1">
|
||||||
|
<div class="box" style="background-color: #151765; border-radius: 10px; padding: 10px 20px; width: 420px;">
|
||||||
|
<h4 style="font-family: 'Inter', sans-serif; font-size: 18px; font-weight: 500;line-height: 27px;color: #fff;margin-bottom: 0 !important;">
|
||||||
|
Responsive sidebar design
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="before_after_img px-5 pb-3" style="margin-top: 70px;">
|
||||||
|
<img src="images/main-b.png" class="img img-fluid w-100" style="width: 100% !important;"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- blog post ends -->
|
||||||
|
|
||||||
|
<!-- features highlight -->
|
||||||
|
|
||||||
|
<section class="blog_post_01">
|
||||||
|
<div class="position-relative w-100" style="display: inline-grid;">
|
||||||
|
<img src="images/blog_ss_bg_03.png" class="img-responsive w-100 h-100 img img-fluid position-absolute left_0"/>
|
||||||
|
|
||||||
|
<div class="position-relative row justify-content-center align-items-center" style="padding: 40px 20px 40px 20px;">
|
||||||
|
<div class="col-12 my-3 px-5">
|
||||||
|
|
||||||
|
<div class="mt-2">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom discuss view
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/1.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Interactive and clean design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/2.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom list view design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/3.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom kanban view design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/4.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom form view design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/5.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom sign up design
|
||||||
|
</p>
|
||||||
|
<h6 class="text-danger font-size-xl"><b>(The login/signup design will appear only the backend login/signup view.
|
||||||
|
It will not appear in the website login/signup view.)</b>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/6.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom login design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/7.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Custom reset form design
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/8.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="content-note d-flex ">
|
||||||
|
<div class="icon-img">
|
||||||
|
<img src="images/icon_img.png" class="img img-fluid"/>
|
||||||
|
</div>
|
||||||
|
<div class="content" style="margin-left: 15px !important;">
|
||||||
|
<p style="font-family: 'Inter', sans-serif; font-size: 25px; font-weight: 600;line-height: 26px;color: #151765;">
|
||||||
|
Set company logo
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-img text-center mt-3 mx-5">
|
||||||
|
<img src="images/9.png" class="img img-fluid img-responsive"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- features highlight -->
|
||||||
|
|
||||||
|
<!-- simplify_banner -->
|
||||||
|
|
||||||
|
<!-- <section class="dashboard_01">
|
||||||
|
<h1 style="font-family: 'Inter', sans-serif;font-size: 40px;font-weight: 700;line-height: 45px;color: #151765;text-align: center;margin: 40px 0;">
|
||||||
|
Suggested Apps
|
||||||
|
</h1>
|
||||||
|
<div class="position-relative" style="display: inline-grid;">
|
||||||
|
<img src="images/simplify_banner_bg.png"
|
||||||
|
class="w-100 h-100 position-absolute left_0 img img-fluid" />
|
||||||
|
|
||||||
|
<div class="position-relative col-12 my-3" style="padding: 40px;">
|
||||||
|
|
||||||
|
<div class="row align-items-center">
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<h2
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 30px;font-weight: 700;line-height: 69px;color: #151756;">
|
||||||
|
Simplify access management</h2>
|
||||||
|
<p
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 18px;font-weight: 500;line-height: 29px;color: #151756;">
|
||||||
|
"Simplify Access Management can Control permissions for all aspects of your
|
||||||
|
Odoo
|
||||||
|
system easily from one place. Save up to 80% of customization time!"
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="d-flex mt-4">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Hide menu/sub menu</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Models access rights</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Fields access right</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Buttons/tab access rights</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Disable developer mode</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Hide chatter</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Domain access right</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Hide filter and groups</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Readonly users</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/simplify_access_management/"
|
||||||
|
style="text-decoration: none; background-color: #151765;font-size: 16px;font-family: 'Inter',sans-serif; font-weight: 500; color: #fff;padding: 10px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
Live demo available
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<img src="images/banner.png" class="img w-100 img-fluid" />
|
||||||
|
|
||||||
|
<div class="text-center mt-5">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/browse?author=Terabits%20Technolab"
|
||||||
|
style="text-decoration: none; border: 2px solid #151756 ;font-size: 16px; font-weight: 600; font-family: 'Inter',sans-serif;color: #151765;padding: 8px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
View more
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section> -->
|
||||||
|
|
||||||
|
<!-- simplify_banner -->
|
||||||
|
|
||||||
|
<!-- clarity_pro_banner -->
|
||||||
|
|
||||||
|
<section class="dashboard_01 my-2">
|
||||||
|
<div class="position-relative" style="display: inline-grid;">
|
||||||
|
<img src="images/simplify_banner_bg.png"
|
||||||
|
class="w-100 h-100 position-absolute left_0 img img-fluid" />
|
||||||
|
|
||||||
|
<div class="position-relative row align-items-center justify-content-between col-12 " style="padding: 40px 10px 50px 50px">
|
||||||
|
|
||||||
|
<div class="row align-items-center mb-4">
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<h2
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 40px;font-weight: 700;line-height: 69px;color: #151756;">
|
||||||
|
Clarity Pro Backend Theme</h2>
|
||||||
|
<p
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 18px;font-weight: 500;line-height: 29px;color: #151756;">
|
||||||
|
The clarity backend theme have amazing appearance on any device and is easy to switch between all screen sizes.
|
||||||
|
The theme is designed, keeping in mind the delivery of great user experience and user-friendly interface to your users.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="d-flex mt-4">
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Main menu for community</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Sidebar menu/top menu</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Multi tabs management</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Global search</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Global search in record</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Global search in menu</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Multi font style</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Multi icon style</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Custom color schemes</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Full-screen switch</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Bookmark management</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Attractive dark mode</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Kanban & list view style</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Checkbox & radio style</span>
|
||||||
|
|
||||||
|
<span class="w-100"
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
RTL support</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/themes/18.0/clarity_backend_theme_pro_bits/"
|
||||||
|
style="text-decoration: none; background-color: #151765;font-size: 16px;font-family: 'Inter',sans-serif; font-weight: 500; color: #fff;padding: 10px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
Live demo available
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 mt-5">
|
||||||
|
<img src="images/clarity_pro_banner.png" class="img img-fluid" />
|
||||||
|
|
||||||
|
<div class="text-center mt-5">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/browse?author=Terabits%20Technolab"
|
||||||
|
style="text-decoration: none; border: 2px solid #151756 ;font-size: 16px; font-weight: 600; font-family: 'Inter',sans-serif;color: #151765;padding: 8px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
View more
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- clarity_pro_banner -->
|
||||||
|
|
||||||
|
<!-- analytiX_banner -->
|
||||||
|
|
||||||
|
<!-- <section class="dashboard_01 my-2">
|
||||||
|
<div class="position-relative" style="display: inline-grid;">
|
||||||
|
<img src="images/simplify_banner_bg.png"
|
||||||
|
class="w-100 h-100 position-absolute left_0 img img-fluid" />
|
||||||
|
|
||||||
|
<div class="position-relative row align-items-center justify-content-between col-12 " style="padding: 40px 10px 40px 50px">
|
||||||
|
|
||||||
|
<div class="row align-items-center">
|
||||||
|
|
||||||
|
<div class="col-xl-6">
|
||||||
|
<h2
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 40px;font-weight: 700;line-height: 69px;color: #151756;">
|
||||||
|
AnalytiX Dashboard</h2>
|
||||||
|
<p
|
||||||
|
style="font-family: 'Inter', sans-serif; font-size: 18px;font-weight: 500;line-height: 29px;color: #151756;">
|
||||||
|
"Unlock the true potential of your data with AnalytiX Dashboard, a cutting-edge Odoo
|
||||||
|
dashboard module designed to revolutionizethe way you visualize & analyze information."
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="d-flex mt-4">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Predefined date filter</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Real-time Analytics</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Customizable Dashboards</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Smart Data Visualization</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
User-Friendly Interface</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 12px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Import/Export dashboard</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex">
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Group access control</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Share your findings</span>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style="background-color: #fff; padding: 5px 10px; border-radius: 20px; margin: 6px 4px;
|
||||||
|
font-family: 'Inter', sans-serif; font-size: 13px;font-weight: 500;line-height: 25px;color: #151756;">
|
||||||
|
Fully responsive layout</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/analytix_dashboard_bits/"
|
||||||
|
style="text-decoration: none; background-color: #151765;font-size: 16px;font-family: 'Inter',sans-serif; font-weight: 500; color: #fff;padding: 10px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
Live demo available
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xl-6 mt-5">
|
||||||
|
<img src="images/analytix_banner.png" class="img img-fluid" />
|
||||||
|
|
||||||
|
<div class="text-center mt-5">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/browse?author=Terabits%20Technolab"
|
||||||
|
style="text-decoration: none; border: 2px solid #151756 ;font-size: 16px; font-weight: 600; font-family: 'Inter',sans-serif;color: #151765;padding: 8px 15px;
|
||||||
|
line-height: 24px;border-radius: 5px;">
|
||||||
|
View more
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section> -->
|
||||||
|
|
||||||
|
<!-- analytix_banner -->
|
||||||
|
|
||||||
|
<!-- Suggested apps Starts -->
|
||||||
|
<section class="sugg-apps mt-4">
|
||||||
|
<div class="position-relative w-100" style="display: inline-grid;">
|
||||||
|
<img src="images/suggest-app-bg.png" class="w-100 h-100 position-absolute left_0 img img-fluid"/>
|
||||||
|
|
||||||
|
<div class="position-relative row justify-content-center align-items-center" style="padding: 20px 25px 30px 25px;">
|
||||||
|
<div class="col-12 px-5 py-4">
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 style="font-family: 'Inter', sans-serif;color: #151765;font-size: 45px;font-weight: 600;line-height: 55px;margin-bottom: 35px;">Recommended Apps</h2>
|
||||||
|
</div>
|
||||||
|
<!-- -->
|
||||||
|
<div class="suggest-apps my-4">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<!-- 01 -->
|
||||||
|
<div class="col-xl-4 col-md-2 col-sm-12 ">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/simplify_access_management"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-1.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- 02 -->
|
||||||
|
<div class="col-xl-4 col-md-2 col-sm-12">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/law_firm_bits"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-2.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- 03 -->
|
||||||
|
<div class="col-xl-4 col-md-2 col-sm-12">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/all_in_one_access_management"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-3.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- 04 -->
|
||||||
|
<div class="col-xl-4 col-sm-12 mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/simplify_pos_access_management"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-4.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- 05 -->
|
||||||
|
<div class="col-xl-4 col-sm-12 mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/user_login_with_user_audit"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-5.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- 06 -->
|
||||||
|
<div class="col-xl-4 col-sm-12 mt-4">
|
||||||
|
<a href="https://apps.odoo.com/apps/modules/18.0/real_estate_bits"
|
||||||
|
target="_blank">
|
||||||
|
<div style="border-radius:10px; background-color:white"
|
||||||
|
class="shadow-sm">
|
||||||
|
<img class="img img-fluid img-responsive center-block"
|
||||||
|
style="width:100%; border-radius:10px !important"
|
||||||
|
src="modules/app-6.png">
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- Suggested apps Ends -->
|
||||||
|
|
||||||
|
<!-- Help Start -->
|
||||||
|
|
||||||
|
<section class="container mt-4">
|
||||||
|
<div class="row pb16 pt48 mb-5">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="shadow alert alert-warning text-center w-100" style="padding: 21px 51px;background-color: #151765;border: 1px solid #dee2e6;color: #414d5c;margin: auto;display: block;border-radius: 20px;min-width: 90%;border-top: 3px solid #E5202B;">
|
||||||
|
<div>
|
||||||
|
<div style="background-color: rgb(255 164 0 / 12%);color: #fff;" class="badge border-0 rounded-circle p-3">
|
||||||
|
<i class="fa fa-question-circle fa-2x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 style="color: #fff;" class="mt-2 mb-4">
|
||||||
|
Need any help for this module?
|
||||||
|
</h2>
|
||||||
|
<h4 style="color: #fff;font-weight: 400" class="mt-2 mb-4">
|
||||||
|
Contact us
|
||||||
|
<b style="color: #25282D;background-color: #e0f0ff;padding: 3px 10px;border-radius: 3px;">info@terabits.xyz</b>
|
||||||
|
for your queries
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Help END -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 228 KiB |
After Width: | Height: | Size: 233 KiB |
After Width: | Height: | Size: 229 KiB |
After Width: | Height: | Size: 235 KiB |
After Width: | Height: | Size: 223 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 398 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 4.8 MiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 5.3 MiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 3.8 MiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 4.8 MiB |
After Width: | Height: | Size: 2.6 MiB |
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,193 @@
|
||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { Dropdown } from "@web/core/dropdown/dropdown";
|
||||||
|
import { useService } from "@web/core/utils/hooks";
|
||||||
|
import { registry } from "@web/core/registry";
|
||||||
|
import { debounce } from "@web/core/utils/timing";
|
||||||
|
import { ErrorHandler } from "@web/core/utils/components";
|
||||||
|
import { NavBarDropdownItem,MenuDropdown } from '@web/static/src/webclient/navbar/navbar';
|
||||||
|
import {
|
||||||
|
Component,
|
||||||
|
onWillDestroy,
|
||||||
|
useExternalListener,
|
||||||
|
useEffect,
|
||||||
|
useRef,
|
||||||
|
onWillUnmount,
|
||||||
|
} from "@odoo/owl";
|
||||||
|
const systrayRegistry = registry.category("systray");
|
||||||
|
|
||||||
|
const getBoundingClientRect = Element.prototype.getBoundingClientRect;
|
||||||
|
|
||||||
|
export class HeaderBar extends NavBar {
|
||||||
|
setup() {
|
||||||
|
this.currentAppSectionsExtra = [];
|
||||||
|
this.actionService = useService("action");
|
||||||
|
this.menuService = useService("menu");
|
||||||
|
this.root = useRef("root");
|
||||||
|
this.appSubMenus = useRef("appSubMenus");
|
||||||
|
const debouncedAdapt = debounce(this.adapt.bind(this), 250);
|
||||||
|
onWillDestroy(() => debouncedAdapt.cancel());
|
||||||
|
useExternalListener(window, "resize", debouncedAdapt);
|
||||||
|
|
||||||
|
let adaptCounter = 0;
|
||||||
|
const renderAndAdapt = () => {
|
||||||
|
adaptCounter++;
|
||||||
|
this.render();
|
||||||
|
};
|
||||||
|
|
||||||
|
systrayRegistry.addEventListener("UPDATE", renderAndAdapt);
|
||||||
|
this.env.bus.addEventListener("MENUS:APP-CHANGED", renderAndAdapt);
|
||||||
|
|
||||||
|
onWillUnmount(() => {
|
||||||
|
systrayRegistry.removeEventListener("UPDATE", renderAndAdapt);
|
||||||
|
this.env.bus.removeEventListener("MENUS:APP-CHANGED", renderAndAdapt);
|
||||||
|
});
|
||||||
|
|
||||||
|
// We don't want to adapt every time we are patched
|
||||||
|
// rather, we adapt only when menus or systrays have changed.
|
||||||
|
useEffect(
|
||||||
|
() => {
|
||||||
|
this.adapt();
|
||||||
|
},
|
||||||
|
() => [adaptCounter]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
handleItemError(error, item) {
|
||||||
|
// remove the faulty component
|
||||||
|
item.isDisplayed = () => false;
|
||||||
|
Promise.resolve().then(() => {
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
get currentApp() {
|
||||||
|
return this.menuService.getCurrentApp();
|
||||||
|
}
|
||||||
|
|
||||||
|
get currentAppSections() {
|
||||||
|
return (
|
||||||
|
(this.currentApp && this.menuService.getMenuAsTree(this.currentApp.id).childrenTree) ||
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This dummy setter is only here to prevent conflicts between the
|
||||||
|
// Enterprise NavBar extension and the Website NavBar patch.
|
||||||
|
set currentAppSections(_) {}
|
||||||
|
|
||||||
|
get systrayItems() {
|
||||||
|
return systrayRegistry
|
||||||
|
.getEntries()
|
||||||
|
.map(([key, value]) => ({ key, ...value }))
|
||||||
|
.filter((item) => ("isDisplayed" in item ? item.isDisplayed(this.env) : true))
|
||||||
|
.reverse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// This dummy setter is only here to prevent conflicts between the
|
||||||
|
// Enterprise NavBar extension and the Website NavBar patch.
|
||||||
|
set systrayItems(_) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapt will check the available width for the app sections to get displayed.
|
||||||
|
* If not enough space is available, it will replace by a "more" menu
|
||||||
|
* the least amount of app sections needed trying to fit the width.
|
||||||
|
*
|
||||||
|
* NB: To compute the widths of the actual app sections, a render needs to be done upfront.
|
||||||
|
* By the end of this method another render may occur depending on the adaptation result.
|
||||||
|
*/
|
||||||
|
async adapt() {
|
||||||
|
if (!this.root.el) {
|
||||||
|
/** @todo do we still need this check? */
|
||||||
|
// currently, the promise returned by 'render' is resolved at the end of
|
||||||
|
// the rendering even if the component has been destroyed meanwhile, so we
|
||||||
|
// may get here and have this.el unset
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------- Initialize -------
|
||||||
|
// Get the sectionsMenu
|
||||||
|
const sectionsMenu = this.appSubMenus.el;
|
||||||
|
if (!sectionsMenu) {
|
||||||
|
// No need to continue adaptations if there is no sections menu.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save initial state to further check if new render has to be done.
|
||||||
|
const initialAppSectionsExtra = this.currentAppSectionsExtra;
|
||||||
|
const firstInitialAppSectionExtra = [...initialAppSectionsExtra].shift();
|
||||||
|
const initialAppId = firstInitialAppSectionExtra && firstInitialAppSectionExtra.appID;
|
||||||
|
|
||||||
|
// Restore (needed to get offset widths)
|
||||||
|
const sections = [
|
||||||
|
...sectionsMenu.querySelectorAll(":scope > *:not(.o_menu_sections_more)"),
|
||||||
|
];
|
||||||
|
for (const section of sections) {
|
||||||
|
section.classList.remove("d-none");
|
||||||
|
}
|
||||||
|
this.currentAppSectionsExtra = [];
|
||||||
|
|
||||||
|
// ------- Check overflowing sections -------
|
||||||
|
// use getBoundingClientRect to get unrounded values for width in order to avoid rounding problem
|
||||||
|
// with offsetWidth.
|
||||||
|
const sectionsAvailableWidth = getBoundingClientRect.call(sectionsMenu).width;
|
||||||
|
const sectionsTotalWidth = sections.reduce(
|
||||||
|
(sum, s) => sum + getBoundingClientRect.call(s).width,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
if (sectionsAvailableWidth < sectionsTotalWidth) {
|
||||||
|
// Sections are overflowing
|
||||||
|
// Initial width is harcoded to the width the more menu dropdown will take
|
||||||
|
let width = 46;
|
||||||
|
for (const section of sections) {
|
||||||
|
if (sectionsAvailableWidth < width + section.offsetWidth) {
|
||||||
|
// Last sections are overflowing
|
||||||
|
const overflowingSections = sections.slice(sections.indexOf(section));
|
||||||
|
overflowingSections.forEach((s) => {
|
||||||
|
// Hide from normal menu
|
||||||
|
s.classList.add("d-none");
|
||||||
|
// Show inside "more" menu
|
||||||
|
const sectionId =
|
||||||
|
s.dataset.section ||
|
||||||
|
s.querySelector("[data-section]").getAttribute("data-section");
|
||||||
|
const currentAppSection = this.currentAppSections.find(
|
||||||
|
(appSection) => appSection.id.toString() === sectionId
|
||||||
|
);
|
||||||
|
this.currentAppSectionsExtra.push(currentAppSection);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
width += section.offsetWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------- Final rendering -------
|
||||||
|
const firstCurrentAppSectionExtra = [...this.currentAppSectionsExtra].shift();
|
||||||
|
const currentAppId = firstCurrentAppSectionExtra && firstCurrentAppSectionExtra.appID;
|
||||||
|
if (
|
||||||
|
initialAppSectionsExtra.length === this.currentAppSectionsExtra.length &&
|
||||||
|
initialAppId === currentAppId
|
||||||
|
) {
|
||||||
|
// Do not render if more menu items stayed the same.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return this.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
onNavBarDropdownItemSelection(menu) {
|
||||||
|
if (menu) {
|
||||||
|
this.menuService.selectMenu(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getMenuItemHref(payload) {
|
||||||
|
const parts = [`menu_id=${payload.id}`];
|
||||||
|
if (payload.actionID) {
|
||||||
|
parts.push(`action=${payload.actionID}`);
|
||||||
|
}
|
||||||
|
return "#" + parts.join("&");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HeaderBar.template = "web.NavBar";
|
||||||
|
HeaderBar.components = { Dropdown, NavBarDropdownItem, MenuDropdown, ErrorHandler };
|
||||||
|
HeaderBar.props = {};
|
|
@ -0,0 +1,46 @@
|
||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { Dropdown } from "@web/core/dropdown/dropdown";
|
||||||
|
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
|
||||||
|
import { CheckBox } from "@web/core/checkbox/checkbox";
|
||||||
|
import { browser } from "@web/core/browser/browser";
|
||||||
|
import { registry } from "@web/core/registry";
|
||||||
|
import { Component } from "@odoo/owl";
|
||||||
|
import { user } from "@web/core/user";
|
||||||
|
import { session } from "@web/session";
|
||||||
|
|
||||||
|
|
||||||
|
const userMenuRegistry = registry.category("user_menuitems");
|
||||||
|
|
||||||
|
export class SidebarBottom extends Component {
|
||||||
|
setup() {
|
||||||
|
this.user = user;
|
||||||
|
this.dbName = session.db;
|
||||||
|
if (!this.user.userId || !this.env) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const { origin } = browser.location;
|
||||||
|
this.source = `${origin}/web/image?model=res.users&field=avatar_128&id=${this.user.userId}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
getElements() {
|
||||||
|
const sortedItems = userMenuRegistry
|
||||||
|
.getAll()
|
||||||
|
.map((element) => element(this.env))
|
||||||
|
.sort((x, y) => {
|
||||||
|
const xSeq = x.sequence ? x.sequence : 100;
|
||||||
|
const ySeq = y.sequence ? y.sequence : 100;
|
||||||
|
return xSeq - ySeq;
|
||||||
|
});
|
||||||
|
return sortedItems;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarBottom.template = "SidebarBottom";
|
||||||
|
SidebarBottom.components = { Dropdown, DropdownItem, CheckBox };
|
||||||
|
SidebarBottom.props = {};
|
||||||
|
|
||||||
|
registry.category("systray").add("SidebarBottom", {
|
||||||
|
Component: SidebarBottom,
|
||||||
|
sequence: 100, // Increased to avoid conflicts with MessagingMenu
|
||||||
|
});
|
|
@ -0,0 +1,113 @@
|
||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { WebClient } from "@web/webclient/webclient";
|
||||||
|
import { useService } from "@web/core/utils/hooks";
|
||||||
|
import { useRef, onMounted } from "@odoo/owl";
|
||||||
|
import { patch } from "@web/core/utils/patch";
|
||||||
|
import { SidebarBottom } from "./SidebarBottom";
|
||||||
|
import { rpc } from "@web/core/network/rpc";
|
||||||
|
// import { Transition } from "@web/core/transition";
|
||||||
|
|
||||||
|
|
||||||
|
patch(WebClient.prototype, {
|
||||||
|
setup() {
|
||||||
|
super.setup();
|
||||||
|
this.root = useRef("root");
|
||||||
|
this.rpc = rpc;
|
||||||
|
this.companyService = useService("company");
|
||||||
|
this.menuService = useService("menu");
|
||||||
|
this.currentCompany = this.companyService.currentCompany;
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
this.fetchMenuData();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleSidebar(ev) {
|
||||||
|
const toggleEl = ev.currentTarget;
|
||||||
|
toggleEl.classList.toggle("visible");
|
||||||
|
const navWrapper = document.querySelector(".nav-wrapper-bits");
|
||||||
|
if (navWrapper) {
|
||||||
|
navWrapper.classList.toggle("toggle-show");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
async fetchMenuData() {
|
||||||
|
try {
|
||||||
|
const menuData = this.menuService.getApps();
|
||||||
|
const menuIds = menuData.map((app) => app.id);
|
||||||
|
const result = await this.rpc("/get/menu_data", { menu_ids: menuIds });
|
||||||
|
for (const menu of menuData) {
|
||||||
|
const targetElem = this.root.el?.querySelector(
|
||||||
|
`.primary-nav a.main_link[data-menu="${menu.id}"] .app_icon`
|
||||||
|
);
|
||||||
|
if (!targetElem) continue;
|
||||||
|
|
||||||
|
targetElem.innerHTML = "";
|
||||||
|
const prRecord = result[menu.id]?.[0];
|
||||||
|
if (!prRecord) continue;
|
||||||
|
|
||||||
|
menu.id = prRecord.id;
|
||||||
|
menu.use_icon = prRecord.use_icon;
|
||||||
|
menu.icon_class_name = prRecord.icon_class_name;
|
||||||
|
menu.icon_img = prRecord.icon_img;
|
||||||
|
|
||||||
|
let iconImage;
|
||||||
|
if (prRecord.use_icon) {
|
||||||
|
if (prRecord.icon_class_name) {
|
||||||
|
iconImage = `<span class="ri ${prRecord.icon_class_name}"/>`;
|
||||||
|
} else if (prRecord.icon_img) {
|
||||||
|
iconImage = `<img class="img img-fluid" src="/web/image/ir.ui.menu/${prRecord.id}/icon_img" />`;
|
||||||
|
} else if (prRecord.web_icon) {
|
||||||
|
const [iconPath, iconExt] = prRecord.web_icon.split("/icon.");
|
||||||
|
if (iconExt === "svg") {
|
||||||
|
const webSvgIcon = prRecord.web_icon.replace(",", "/");
|
||||||
|
iconImage = `<img class="img img-fluid" src="${webSvgIcon}" />`;
|
||||||
|
} else {
|
||||||
|
iconImage = `<img class="img img-fluid" src="data:image/${iconExt};base64,${prRecord.web_icon_data}" />`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
iconImage = `<img class="img img-fluid" src="/clarity_backend_theme_bits/static/img/logo.png" />`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (prRecord.icon_img) {
|
||||||
|
iconImage = `<img class="img img-fluid" src="/web/image/ir.ui.menu/${prRecord.id}/icon_img" />`;
|
||||||
|
} else if (prRecord.web_icon) {
|
||||||
|
const [iconPath, iconExt] = prRecord.web_icon.split("/icon.");
|
||||||
|
if (iconExt === "svg") {
|
||||||
|
const webSvgIcon = prRecord.web_icon.replace(",", "/");
|
||||||
|
iconImage = `<img class="img img-fluid" src="${webSvgIcon}" />`;
|
||||||
|
} else {
|
||||||
|
iconImage = `<img class="img img-fluid" src="data:image/${iconExt};base64,${prRecord.web_icon_data}" />`;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
iconImage = `<img class="img img-fluid" src="/clarity_backend_theme_bits/static/img/logo.png" />`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
targetElem.innerHTML = iconImage;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to fetch menu data:", error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
BackMenuToggle(ev) {
|
||||||
|
const parent = ev.currentTarget.parentElement;
|
||||||
|
if (parent) {
|
||||||
|
parent.classList.remove("show");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
get currentMenuId() {
|
||||||
|
const actionParams = window.location.hash;
|
||||||
|
const params = new URLSearchParams(actionParams.substring(1));
|
||||||
|
return params.get("menu_id");
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
patch(WebClient, {
|
||||||
|
components: { ...WebClient.components, SidebarBottom },
|
||||||
|
// components: { ...WebClient.components, SidebarBottom, Transition },
|
||||||
|
});
|
|
@ -0,0 +1,67 @@
|
||||||
|
/** @odoo-module **/
|
||||||
|
|
||||||
|
import { NavBar } from "@web/webclient/navbar/navbar";
|
||||||
|
import { useService } from "@web/core/utils/hooks";
|
||||||
|
import { patch } from "@web/core/utils/patch";
|
||||||
|
import { useEnvDebugContext } from "@web/core/debug/debug_context";
|
||||||
|
import { useState } from "@odoo/owl";
|
||||||
|
import { rpc } from "@web/core/network/rpc";
|
||||||
|
|
||||||
|
patch(NavBar.prototype, {
|
||||||
|
setup() {
|
||||||
|
super.setup();
|
||||||
|
this.debugContext = useEnvDebugContext();
|
||||||
|
this.rpc = rpc;
|
||||||
|
this.companyService = useService("company");
|
||||||
|
this.currentCompany = this.companyService.currentCompany;
|
||||||
|
this.menuService = useService("menu");
|
||||||
|
this.state = useState({
|
||||||
|
...this.state,
|
||||||
|
isSidebarOpen: false,
|
||||||
|
});
|
||||||
|
this.getMenuItemHref = this.getMenuItemHref.bind(this);
|
||||||
|
},
|
||||||
|
|
||||||
|
onNavBarDropdownItemSelection(menu) {
|
||||||
|
if (menu) {
|
||||||
|
this.menuService.selectMenu(menu);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
get currentApp() {
|
||||||
|
return this.menuService.getCurrentApp();
|
||||||
|
},
|
||||||
|
|
||||||
|
getMenuItemHref(payload) {
|
||||||
|
if (!payload || (!payload.actionPath && !payload.actionID)) {
|
||||||
|
return "#";
|
||||||
|
}
|
||||||
|
return `/odoo/${payload.actionPath || "action-" + (payload.actionID || "")}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleSidebar(ev) {
|
||||||
|
this.state.isSidebarOpen = !this.state.isSidebarOpen;
|
||||||
|
const toggleEl = ev.currentTarget;
|
||||||
|
toggleEl.classList.toggle("visible");
|
||||||
|
toggleEl.classList.toggle("sidebar-open");
|
||||||
|
const navWrapper = document.querySelector(".nav-wrapper-bits");
|
||||||
|
if (navWrapper) {
|
||||||
|
navWrapper.classList.toggle("toggle-show");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
BackMenuToggle() {
|
||||||
|
const subMenu = document.querySelector(".sub-menu-dropdown.show");
|
||||||
|
if (subMenu) {
|
||||||
|
subMenu.classList.remove("show");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
get appsMenuProps() {
|
||||||
|
return {
|
||||||
|
getMenuItemHref: this.getMenuItemHref,
|
||||||
|
onNavBarDropdownItemSelection: this.onNavBarDropdownItemSelection.bind(this),
|
||||||
|
isSmall: this.state.isSmall,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
|
@ -0,0 +1,666 @@
|
||||||
|
body.o_web_client{
|
||||||
|
flex-flow: row !important;
|
||||||
|
.wrapper-container-bits{
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
.content-wrapper-bits{
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: clip;
|
||||||
|
@media (max-width: 1540px) {
|
||||||
|
height: 100%;
|
||||||
|
// overflow: auto;
|
||||||
|
}
|
||||||
|
.btn-link{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
.btn.btn-primary{
|
||||||
|
background-color: #282828 !important;
|
||||||
|
color: #fff !important;
|
||||||
|
border-color: #fff;
|
||||||
|
border: 1px solid #282828;
|
||||||
|
&:focus,&:active,&:hover{
|
||||||
|
background-color: #fff !important;
|
||||||
|
color: #282828 !important;
|
||||||
|
border-color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn.btn-secondary{
|
||||||
|
background-color: #f1eef5 !important;
|
||||||
|
color: #282828 !important;
|
||||||
|
// border-color: #282828;
|
||||||
|
// border: 1px solid #282828;
|
||||||
|
&:focus,&:active,&:hover{
|
||||||
|
background-color: #f1eef5 !important;
|
||||||
|
// color: #fff !important;
|
||||||
|
// border-color: #f1eef5 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_main_navbar{
|
||||||
|
padding: 0 10px;
|
||||||
|
.o_menu_systray{
|
||||||
|
align-items: center;
|
||||||
|
.o_user_menu{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
button.dropdown-toggle{
|
||||||
|
background-color: #282828;
|
||||||
|
margin: 0px 4px;
|
||||||
|
width: 35px;
|
||||||
|
height: 35px;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 6px;
|
||||||
|
i{
|
||||||
|
color: #fff;
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
.badge.rounded-pill{
|
||||||
|
position: absolute;
|
||||||
|
right: -10px;
|
||||||
|
top: 2px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-color: #282828;
|
||||||
|
border: 1px solid #282828;
|
||||||
|
color: #282828;
|
||||||
|
}
|
||||||
|
&.o_mobile_menu_toggle{
|
||||||
|
padding: 15px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_mobile_preview{
|
||||||
|
a.o_nav_entry{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_website_switcher_container,.o_edit_website_container,.o_new_content_container,.o_mobile_preview{
|
||||||
|
button.dropdown-toggle,a.o_nav_entry,.o_nav_entry,a.btn{
|
||||||
|
width: auto !important;
|
||||||
|
background-color: #282828 !important;
|
||||||
|
margin: 0px 4px;
|
||||||
|
height: 35px !important;
|
||||||
|
text-align: center;
|
||||||
|
justify-content: center;
|
||||||
|
border-radius: 6px !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.o_menu_systray_item{
|
||||||
|
a{
|
||||||
|
.d-none.d-md-block.ms-1{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// header button popup
|
||||||
|
.o-mail-DiscussSystray{
|
||||||
|
box-shadow: 0px 1px 5px #abababed;
|
||||||
|
border-radius: 16px;
|
||||||
|
.o-mail-MessagingMenu-header{
|
||||||
|
button.fw-bold{
|
||||||
|
border-bottom: 1px solid #282828;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_mobile_menu_toggle{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sidebar-toggler{
|
||||||
|
cursor: pointer;
|
||||||
|
.sidebar-toggle-bits{
|
||||||
|
font-size: 12px;
|
||||||
|
color: #282828;
|
||||||
|
i.back-arrow{
|
||||||
|
width: 0px !important;
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
.sidebar-toggle-bits{
|
||||||
|
i.toggle{
|
||||||
|
width: 0px !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
i.back-arrow{
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transition: all 0.2s;
|
||||||
|
width: 100% !important;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_action_manager{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
.o_control_panel{
|
||||||
|
padding: 10px 14px !important;
|
||||||
|
.o_control_panel_main{
|
||||||
|
// create button
|
||||||
|
.o_control_panel_breadcrumbs{
|
||||||
|
.o_control_panel_main_buttons{
|
||||||
|
.btn-outline-primary{
|
||||||
|
color: #282828 !important;
|
||||||
|
border-color: #282828 !important;
|
||||||
|
&:hover,&:focus,&:active{
|
||||||
|
color: #fff !important;
|
||||||
|
background-color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.breadcrumb{
|
||||||
|
.breadcrumb-item{
|
||||||
|
a{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// action button
|
||||||
|
.o_control_panel_actions{
|
||||||
|
.btn-outline-secondary{
|
||||||
|
border-color: #282828 !important;
|
||||||
|
i{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
span{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_cp_searchview .o_searchview{
|
||||||
|
border-radius: 8px 1px 1px 8px;
|
||||||
|
border-color: #282828;
|
||||||
|
}
|
||||||
|
.o-dropdown{
|
||||||
|
button.o_searchview_dropdown_toggler{
|
||||||
|
border-radius: 0px 8px 8px 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_search_bar_menu{
|
||||||
|
i{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// navigation
|
||||||
|
.o_control_panel_navigation{
|
||||||
|
.o_pager_counter{
|
||||||
|
span{
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
font-size: 0.875rem;
|
||||||
|
border-radius: 6px !important;
|
||||||
|
border-color: #282828;
|
||||||
|
background-color: #fff !important;
|
||||||
|
color: #282828 !important;
|
||||||
|
height: 35px;
|
||||||
|
margin: 0px 3px;
|
||||||
|
&.active{
|
||||||
|
background-color: #2828282e !important;
|
||||||
|
}
|
||||||
|
// width: 35px;
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
width:auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Discuss module in community
|
||||||
|
.o-mail-Discuss{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.o_content{
|
||||||
|
overflow: auto !important;
|
||||||
|
height: 100vh;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
max-height: calc(100vh - 100px);
|
||||||
|
}
|
||||||
|
// config setting view
|
||||||
|
.o-settings-form-view{
|
||||||
|
.o_setting_container{
|
||||||
|
.settings_tab{
|
||||||
|
.app_name{
|
||||||
|
font-size: 15px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// form view
|
||||||
|
.o_form_view_container{
|
||||||
|
.o_form_sheet_bg{
|
||||||
|
.o_form_statusbar{
|
||||||
|
// overflow: hidden;
|
||||||
|
.o_statusbar_buttons{
|
||||||
|
.btn-primary{
|
||||||
|
background-color: #71639e !important;
|
||||||
|
border-color: #71639e !important;
|
||||||
|
&:hover{
|
||||||
|
background-color: #fff !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-secondary{
|
||||||
|
background-color: #fff !important;
|
||||||
|
border-color: #71639e !important;
|
||||||
|
&:hover{
|
||||||
|
background-color: #71639e !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_arrow_button{
|
||||||
|
border-color: #71639e !important;
|
||||||
|
background-color: #fff;
|
||||||
|
&:after{
|
||||||
|
border-color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_statusbar_status{
|
||||||
|
.o_arrow_button{
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
////////////////////////////////////////////////////////////////
|
||||||
|
.o_statusbar_status {
|
||||||
|
.o_arrow_button {
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
cursor: default;
|
||||||
|
margin: 0 3px;
|
||||||
|
padding: 5px 25px;
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
background-color: #d9e3f7 !important;
|
||||||
|
user-select: none;
|
||||||
|
transition: background-color 0.2s ease;
|
||||||
|
&:after,&:before{
|
||||||
|
content: " ";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: -17px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-top: 15px solid transparent;
|
||||||
|
border-bottom: 15px solid transparent;
|
||||||
|
border-left: 17px solid #d9e3f7;
|
||||||
|
z-index: 2;
|
||||||
|
transition: border-color 0.2s ease;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
&:before{
|
||||||
|
right: auto;
|
||||||
|
left: 0;
|
||||||
|
border-left: 17px solid #f8f9fa;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
&:first-child{
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
&:before {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.o_arrow_button_current{
|
||||||
|
color: #fff !important;
|
||||||
|
span{
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
background-color: #71639e !important;
|
||||||
|
&:after{
|
||||||
|
border-left: 17px solid #71639e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
////////////////////////////////////////////////////////////////
|
||||||
|
.o_form_sheet{
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0px 0px 3px #919191;
|
||||||
|
border: none;
|
||||||
|
.o_cell{
|
||||||
|
label,span,a{
|
||||||
|
font-size: 15px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_form_uri{
|
||||||
|
span:first-child{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_notebook{
|
||||||
|
.o_notebook_headers{
|
||||||
|
.nav.nav-tabs{
|
||||||
|
border-top: 1px solid #dee2e6;
|
||||||
|
padding: 0px !important;
|
||||||
|
.nav-item .nav-link{
|
||||||
|
color: #484848;
|
||||||
|
display: block;
|
||||||
|
border-right: 1px solid #2828286b !important;
|
||||||
|
padding: 10px;
|
||||||
|
font-weight: 500;
|
||||||
|
&:after{
|
||||||
|
height: 5px;
|
||||||
|
background-color: #282828;
|
||||||
|
}
|
||||||
|
&:before{
|
||||||
|
height: 5px;
|
||||||
|
background-color: #282828;
|
||||||
|
}
|
||||||
|
&.active{
|
||||||
|
border-bottom: 2px solid #31485e;
|
||||||
|
background: #f9f9f9 !important;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_list_renderer{
|
||||||
|
table{
|
||||||
|
a{
|
||||||
|
color: #000730 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// kanban view
|
||||||
|
.o_kanban_view{
|
||||||
|
.o_kanban_record{
|
||||||
|
margin: 14px 5px 0px !important;
|
||||||
|
border-radius: 15px;
|
||||||
|
.oe_kanban_card,.oe_kanban_global_click{
|
||||||
|
border-radius: 8px;
|
||||||
|
border-color: #2828286e;
|
||||||
|
border: 1px solid #28282812;
|
||||||
|
box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.03);
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// list view
|
||||||
|
.o_list_view.o_action{
|
||||||
|
height: 100%;
|
||||||
|
.o_content{
|
||||||
|
padding: 10px 14px;
|
||||||
|
}
|
||||||
|
.o_list_renderer{
|
||||||
|
border: 0px !important;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0px 0px 3px #919191;
|
||||||
|
.o_list_table{
|
||||||
|
table-layout: auto !important;
|
||||||
|
thead{
|
||||||
|
th{
|
||||||
|
padding: 10px 12px;
|
||||||
|
background-color: #282828;
|
||||||
|
color: #fff !important;
|
||||||
|
button{
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.form-check-input{
|
||||||
|
background-color: #fff !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tbody{
|
||||||
|
tr{
|
||||||
|
border-color: #28282899;
|
||||||
|
border: none ;
|
||||||
|
td{
|
||||||
|
border: none;
|
||||||
|
padding: 14px 12px;
|
||||||
|
color: #282828 !important;
|
||||||
|
font-size: 15px !important;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
&.o_data_row{
|
||||||
|
border-bottom-width: 1px !important;
|
||||||
|
border-bottom-style: dashed !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
box-shadow: 0px 1px 2px #e2e2e2;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
tfoot{
|
||||||
|
tr{
|
||||||
|
td{
|
||||||
|
border: none;
|
||||||
|
padding: 10px 12px;
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.form-check{
|
||||||
|
.form-check-input{
|
||||||
|
&:checked{
|
||||||
|
background-color: #282828 !important;
|
||||||
|
border-color: #282828 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// graph view
|
||||||
|
.o_graph_view {
|
||||||
|
.o_content {
|
||||||
|
height: calc(100vh - 100px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// discuss view
|
||||||
|
.o-mail-Discuss{
|
||||||
|
background: #fff !important;
|
||||||
|
.o-mail-DiscussSidebar{
|
||||||
|
margin: 7px;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: 0px 1px 4px #9191912e;
|
||||||
|
border-radius: 14px;
|
||||||
|
.o-mail-DiscussSidebar-item{
|
||||||
|
background: #e3e3e39e;
|
||||||
|
color: #282828 !important;
|
||||||
|
border-radius: 7px !important;
|
||||||
|
margin: 5px 10px;
|
||||||
|
padding: 10px 0 !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o-mail-Discuss-content{
|
||||||
|
overflow: scroll !important;
|
||||||
|
.o-mail-Discuss-header{
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
.o-mail-Thread{
|
||||||
|
overflow: scroll;
|
||||||
|
margin: 7px;
|
||||||
|
box-shadow: 0px 0px 6px #413d3d3b !important;
|
||||||
|
border: 1px solid #28282800;
|
||||||
|
border-radius: 14px;
|
||||||
|
//msg section
|
||||||
|
.o-mail-Message{
|
||||||
|
margin-top: 16px !important;
|
||||||
|
.o-mail-Message-core{
|
||||||
|
//right content / msg content
|
||||||
|
.o-min-width-0{
|
||||||
|
.o-mail-Message-header{
|
||||||
|
.o-mail-Message-author{
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 8px 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o-mail-Message-content{
|
||||||
|
.o-mail-Message-bubble{
|
||||||
|
border-radius: 0px 10px 6px 10px !important;
|
||||||
|
.o-mail-Message-body{
|
||||||
|
padding: 15px 25px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o-mail-Composer{
|
||||||
|
.o-mail-Composer-coreMain{
|
||||||
|
.btn{
|
||||||
|
color: #282828 !important;
|
||||||
|
}
|
||||||
|
.o-mail-Composer-send{
|
||||||
|
background: #282828 !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
opacity: 1;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#terabits-link{
|
||||||
|
h2{
|
||||||
|
padding: 12px 28px;
|
||||||
|
background: #eee;
|
||||||
|
font-size: 15px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.editor_has_snippets_hide_backend_navbar{
|
||||||
|
.nav-wrapper-bits{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
display: block;
|
||||||
|
width: 250px;
|
||||||
|
height: 100%;
|
||||||
|
transition: all 0.45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
z-index: 999;
|
||||||
|
.icon {
|
||||||
|
position: absolute;
|
||||||
|
top: 12px;
|
||||||
|
right: 10px;
|
||||||
|
pointer-events: none;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu,
|
||||||
|
.menu a,
|
||||||
|
.menu a:visited {
|
||||||
|
color: #aaa;
|
||||||
|
text-decoration: none!important;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.new-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
left: 50px;
|
||||||
|
width: calc(100% - 50px);
|
||||||
|
transition: transform .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu:checked + ul.menu-dropdown {
|
||||||
|
left: 0;
|
||||||
|
-webkit-animation: all .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
animation: all .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
}
|
||||||
|
.sub-menu-checkbox:checked + ul.sub-menu-dropdown {
|
||||||
|
display: block!important;
|
||||||
|
-webkit-animation: grow .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
animation: grow .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
}
|
||||||
|
.openNav .new-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
transform: translate3d(200px, 0, 0);
|
||||||
|
width: calc(100% - 250px);
|
||||||
|
transition: transform .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.downarrow {
|
||||||
|
background: transparent;
|
||||||
|
position: absolute;
|
||||||
|
right: 50px;
|
||||||
|
top: 12px;
|
||||||
|
color: #777;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.downarrow:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.menu-dropdown {
|
||||||
|
top: 0;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.overflow-container {
|
||||||
|
position: relative;
|
||||||
|
height: 100% !important;
|
||||||
|
overflow-y: auto;
|
||||||
|
z-index: -1;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
.sub-menu-dropdown {
|
||||||
|
background-color: #333;
|
||||||
|
}
|
||||||
|
.openNav .menu {
|
||||||
|
top: 73px;
|
||||||
|
transform: translate3d(200px, 0, 0);
|
||||||
|
transition: transform .45s cubic-bezier(0.77, 0, 0.175, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@-webkit-keyframes grow {
|
||||||
|
|
||||||
|
0% {
|
||||||
|
display: none;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
display: block;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes grow {
|
||||||
|
|
||||||
|
0% {
|
||||||
|
display: none;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
display: block;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.o_navbar_apps_menu{
|
||||||
|
height: 100%;
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
#wrapwrap{
|
||||||
|
.login-view-bits{
|
||||||
|
.oe_login_form,.oe_signup_form,.oe_reset_password_form{
|
||||||
|
.input-group{
|
||||||
|
a.btn{
|
||||||
|
background-color: #282828;
|
||||||
|
color: #fff !important;
|
||||||
|
border-radius: 0px 8px 8px 0px !important;
|
||||||
|
display: flex !important;
|
||||||
|
align-items: center;
|
||||||
|
i{
|
||||||
|
color: #fff !important;
|
||||||
|
padding-left: 5px;
|
||||||
|
margin-top: -4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
input,.form-control{
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.775rem 1rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: #4B5675;
|
||||||
|
appearance: none;
|
||||||
|
background-clip: padding-box;
|
||||||
|
border: 1px solid #DBDFE9;
|
||||||
|
border-radius: 0.475rem;
|
||||||
|
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||||
|
&#db{
|
||||||
|
border-radius: 8px 0px 0px 8px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.col-form-label,.form-label{
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-weight: bold !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.card-body{
|
||||||
|
box-shadow: 0px 0px 10px #d2d1d1;
|
||||||
|
border-radius: 30px;
|
||||||
|
}
|
||||||
|
.oe_login_buttons{
|
||||||
|
.btn-primary[type=submit]{
|
||||||
|
padding: 14px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #282828;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 14px;
|
||||||
|
&:hover,&:active,&:focus{
|
||||||
|
color: #282828;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #282828;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a,button.btn{
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
div.small{
|
||||||
|
a,button.btn{
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,292 @@
|
||||||
|
body.o_web_client{
|
||||||
|
.nav-wrapper-bits{
|
||||||
|
display: none ;
|
||||||
|
&.toggle-show{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: #282828;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 999;
|
||||||
|
header{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.sytray-container-bits{
|
||||||
|
margin: 5px 5px;
|
||||||
|
background-color: none !important;
|
||||||
|
button{
|
||||||
|
width: 100%;
|
||||||
|
border: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
background: #343434;
|
||||||
|
border-radius: 10px;
|
||||||
|
img{
|
||||||
|
width: 35px;
|
||||||
|
border-radius: 30px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mark{
|
||||||
|
font-size: 14px;
|
||||||
|
margin-top: 8px;
|
||||||
|
background: #fff !important;
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
.o_user_menu{
|
||||||
|
.o-dropdown--menu{
|
||||||
|
min-width: 15rem !important;
|
||||||
|
.dropdown-item{
|
||||||
|
padding: 5px 20px !important;
|
||||||
|
}
|
||||||
|
// @media (max-width: 768px) {
|
||||||
|
// width: 100%;
|
||||||
|
// height: 100%;
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: center;
|
||||||
|
// align-items: center;
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.powered-by{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
.powered-by{
|
||||||
|
display: block !important;
|
||||||
|
color: #fff;
|
||||||
|
a{
|
||||||
|
color: #aab6ff !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btm-user-menu{
|
||||||
|
z-index: 999;
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
header.o_navbar{
|
||||||
|
nav{
|
||||||
|
background-color: transparent !important;
|
||||||
|
border-bottom: none !important;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.o_company_logo{
|
||||||
|
padding: 8px 20px !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background: #343434;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 5px 5px;
|
||||||
|
i{
|
||||||
|
color: #fff !important;
|
||||||
|
font-size: 20px;
|
||||||
|
display: none;
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width: 150px;
|
||||||
|
height: 70px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.primary-nav{
|
||||||
|
flex: 1 1 0 !important;
|
||||||
|
overflow-y: auto;
|
||||||
|
.overflow-container{
|
||||||
|
.main_link{
|
||||||
|
.app_icon{
|
||||||
|
height: 25px !important;
|
||||||
|
width: 25px !important;
|
||||||
|
display: inline-flex;
|
||||||
|
img{
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul#menu-dropdown{
|
||||||
|
list-style-type: none !important;
|
||||||
|
padding-left: 5px !important;
|
||||||
|
li a.main_link{
|
||||||
|
display: flex;
|
||||||
|
align-items: center !important;
|
||||||
|
padding: 1em;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
ul.header-sub-menus.main{
|
||||||
|
list-style-type: none !important;
|
||||||
|
z-index: 3;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
background-color: #282828 !important;
|
||||||
|
height: 100%;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
padding: 0px 12px;
|
||||||
|
// &:not(.show){
|
||||||
|
// left: 100% !important;
|
||||||
|
// }
|
||||||
|
&:not(.show){
|
||||||
|
display: none;
|
||||||
|
width: 0% ;
|
||||||
|
}
|
||||||
|
.back_main_menu{
|
||||||
|
position: relative;
|
||||||
|
margin-left: -18px;
|
||||||
|
h3{
|
||||||
|
color: #ffff !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
li{
|
||||||
|
margin-left: 10px ;
|
||||||
|
background: #282828;
|
||||||
|
.header-sub-menus{
|
||||||
|
list-style-type: none !important;
|
||||||
|
border-left: 1px solid #717171;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.sub-main-menu{
|
||||||
|
cursor: pointer !important;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 600;
|
||||||
|
background: #282828;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @media (max-width: 768px) {
|
||||||
|
// position: relative !important;
|
||||||
|
// .back_main_menu{
|
||||||
|
// display: none !important;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// &.show{
|
||||||
|
// li{
|
||||||
|
// .collapse{
|
||||||
|
// display: block;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
a{
|
||||||
|
padding: 0.5rem !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
}
|
||||||
|
&.show{
|
||||||
|
li{
|
||||||
|
.sub-main-menu{
|
||||||
|
background: #eeeeee14;
|
||||||
|
padding: 5px 10px !important;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin: 8px 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::-webkit-scrollbar-track
|
||||||
|
{
|
||||||
|
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||||||
|
background-color: #F5F5F5;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar
|
||||||
|
{
|
||||||
|
width: 6px;
|
||||||
|
background-color: #F5F5F5;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb
|
||||||
|
{
|
||||||
|
background-color: #575757;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.button_bg_hover:hover {
|
||||||
|
background-color: gray;
|
||||||
|
color:black;
|
||||||
|
}
|
||||||
|
.menu-hasdropdown {
|
||||||
|
.button_bg_hover {
|
||||||
|
margin-right: 7%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-sub-menus .button_bg_hover {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar-toggler {
|
||||||
|
.sidebar-toggle-bits {
|
||||||
|
.chevron-toggle {
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.sidebar-open .chevron-toggle {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.sidebar-open) .chevron-toggle {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.sub-main-menu {
|
||||||
|
.chevron-toggle {
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&[aria-expanded="true"] .chevron-toggle {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
&[aria-expanded="false"] .chevron-toggle {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.o_user_avatar{
|
||||||
|
height: 15%;
|
||||||
|
width: 15%;
|
||||||
|
}
|
||||||
|
.user-avtar-bits {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: max-height 0.3s ease;
|
||||||
|
max-height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-avtar-bits:hover {
|
||||||
|
max-height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.powered-by {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(10px);
|
||||||
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||||
|
pointer-events: none;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-avtar-bits:hover .powered-by {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<templates xml:space="preserve">
|
||||||
|
|
||||||
|
<t t-inherit="web.WebClient" t-inherit-mode="extension" owl="1">
|
||||||
|
<xpath expr="//ActionContainer" position="replace"/>
|
||||||
|
<xpath expr="//MainComponentsContainer" position="replace"/>
|
||||||
|
<xpath expr="//t" position="replace">
|
||||||
|
<div class="wrapper-container-bits">
|
||||||
|
<div class="nav-wrapper-bits toggle-show">
|
||||||
|
<header class="o_navbar" t-ref="root">
|
||||||
|
<div class="o_company_logo p-3">
|
||||||
|
<div class="d-flex justify-content-between w-100 align-items-center">
|
||||||
|
<t t-if="currentCompany">
|
||||||
|
<img class="img img-fluid company_logo" t-attf-src="/web/image?model=res.company&field=logo&id={{currentCompany.id}}"/>
|
||||||
|
<img class="img img-fluid company_logo_icon d-none" t-attf-src="/web/image?model=res.company&field=logo_icon&id={{currentCompany.id}}"/>
|
||||||
|
</t>
|
||||||
|
<i class="fa fa-bars fa-2x" t-on-click="toggleSidebar"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Apps Menu -->
|
||||||
|
<!-- <t t-call="web.NavBar.AppsMenu">
|
||||||
|
</t> -->
|
||||||
|
<t t-call="CustomAppsMenu">
|
||||||
|
</t>
|
||||||
|
<div class="btm-user-menu d-block">
|
||||||
|
<SidebarBottom/>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="content-wrapper-bits">
|
||||||
|
|
||||||
|
<t t-if="!state.fullscreen">
|
||||||
|
<NavBar/>
|
||||||
|
</t>
|
||||||
|
<ActionContainer/>
|
||||||
|
<MainComponentsContainer/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
</templates>
|
|
@ -0,0 +1,141 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<templates xml:space="preserve">
|
||||||
|
<!-- Extend web.NavBar -->
|
||||||
|
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1">
|
||||||
|
<xpath expr="//DropdownItem[@t-if='!env.isSmall and currentApp']" position="before">
|
||||||
|
<div class="sidebar-toggler d-flex align-items-center p-2 ms-2">
|
||||||
|
<a href="javascript:;" class="sidebar-toggle-bits" t-on-click="toggleSidebar">
|
||||||
|
<i class="toggle fa fa-bars fa-2x"/>
|
||||||
|
<i class="back-arrow oi oi-chevron-left fa-2x chevron-toggle"/>
|
||||||
|
</a>
|
||||||
|
<t t-if="currentApp">
|
||||||
|
<h4 class="ms-2 mb-0"><t t-esc="currentApp.name"/></h4>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//DropdownItem[@t-if='!env.isSmall and currentApp']" position="replace"/>
|
||||||
|
<xpath expr="//t[t[@t-call='web.NavBar.SectionsMenu']]" position="replace"/>
|
||||||
|
<xpath expr="//t[@t-call='web.NavBar.AppsMenu']" position="replace"/>
|
||||||
|
</t>
|
||||||
|
<t t-name="CustomAppsMenu" owl="1">
|
||||||
|
<nav role="navigation" class="primary-nav menu o_main_navbar" data-command-category="disabled">
|
||||||
|
<div class="overflow-container">
|
||||||
|
<t t-set="curr_app" t-value="currentMenuId ? menuService.getMenuAsTree(currentMenuId) : null"/>
|
||||||
|
<ul id="menu-dropdown">
|
||||||
|
<t t-foreach="menuService.getApps()" t-as="main_menu" t-key="main_menu.name">
|
||||||
|
<t t-if="!main_menu.children.length">
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
t-att-href="main_menu ? '/odoo/' + (main_menu.actionPath || 'action-' + (main_menu.actionID || '')) : '#'"
|
||||||
|
t-att-data-menu-xmlid="main_menu.xmlid"
|
||||||
|
t-att-data-section="main_menu.id"
|
||||||
|
class="main_link"
|
||||||
|
t-on-click="() => props.onNavBarDropdownItemSelection ? props.onNavBarDropdownItemSelection(main_menu) : null"
|
||||||
|
>
|
||||||
|
<span class="app_icon me-2"></span>
|
||||||
|
<span><t t-esc="main_menu.name" /></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</t>
|
||||||
|
<t t-else="">
|
||||||
|
<li class="menu-hasdropdown d-flex align-items-center">
|
||||||
|
<a t-att-href="main_menu ? '/odoo/' + (main_menu.actionPath || 'action-' + (main_menu.actionID || '')) : '#'"
|
||||||
|
t-att-data-menu="main_menu.id"
|
||||||
|
t-att-data-action-model="main_menu.actionModel || ''"
|
||||||
|
t-att-data-action-id="main_menu.actionID || ''"
|
||||||
|
t-att-data-menu-xmlid="main_menu.xmlid"
|
||||||
|
t-att-class="'main_link flex-grow-1'"
|
||||||
|
t-on-click="() => props.onNavBarDropdownItemSelection ? props.onNavBarDropdownItemSelection(main_menu) : null">
|
||||||
|
<span class="app_icon me-2"></span>
|
||||||
|
<span><t t-esc="main_menu.name" /></span>
|
||||||
|
</a>
|
||||||
|
<!-- Chevron for toggling dropdown -->
|
||||||
|
<span class="oi oi-chevron-right p-1 button_bg_hover rounded "
|
||||||
|
data-bs-toggle="collapse"
|
||||||
|
t-att-data-bs-target="'#child_menu_' + main_menu.id"/>
|
||||||
|
<!-- Submenu -->
|
||||||
|
<ul t-att-class="'main header-sub-menus sub-menu-dropdown collapse' + (curr_app && curr_app.appID == main_menu.appID ? ' show' : '')"
|
||||||
|
t-att-id="'child_menu_' + main_menu.id">
|
||||||
|
<a class="back_main_menu collapse_back d-flex align-items-center" t-on-click="BackMenuToggle">
|
||||||
|
<span class="oi oi-chevron-left p-2" />
|
||||||
|
<h3 class="m-0 p-o"><b><t t-esc="main_menu.name" /></b></h3>
|
||||||
|
</a>
|
||||||
|
<t t-set="parent_menu_id" t-value="main_menu.id" />
|
||||||
|
<t t-foreach="main_menu.children" t-as="menuid" t-key="menuid">
|
||||||
|
<t t-set="menu" t-value="menuService.getMenuAsTree(menuid)"/>
|
||||||
|
<t t-call="AllmenuRecursive">
|
||||||
|
<t t-set="props" t-value="props"/>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
<t t-if="main_menu.xmlid == 'base.menu_administration'">
|
||||||
|
<li>
|
||||||
|
<a class="d-flex align-items-center w-100 sub-main-menu" data-bs-toggle="collapse" t-att-data-bs-target="'#child_menu_theme'">
|
||||||
|
<span>Backend Theme</span>
|
||||||
|
<span class="oi oi-chevron-right ms-auto p-2" />
|
||||||
|
</a>
|
||||||
|
<div t-att-id="'child_menu_theme'" class="collapse">
|
||||||
|
<ul class="header-sub-menus">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="child_menus" href="https://www.terabits.xyz/survey/start/0261438c-36bd-4f73-a63d-9120a4d4764d" target="_blank">
|
||||||
|
<span>Leave a review</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="child_menus" href="https://www.terabits.xyz/survey/start/9e8fe56d-b8b4-4c34-b3b6-513b08ab513e">
|
||||||
|
<span>Get regular updates</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="child_menus" href="https://www.terabits.xyz/services/debranding">
|
||||||
|
<span>Debrand your ERP</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</t>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</t>
|
||||||
|
<!-- Recursive Menu Template -->
|
||||||
|
<t t-name="AllmenuRecursive" owl="1">
|
||||||
|
<li class="nav-item">
|
||||||
|
<t t-if="menu.childrenTree.length">
|
||||||
|
<a class="d-flex align-items-center w-100 sub-main-menu"
|
||||||
|
data-bs-toggle="collapse"
|
||||||
|
t-attf-data-bs-target="#child_menu_{{menu.id}}"
|
||||||
|
t-att-data-menu-xmlid="menu.xmlid"
|
||||||
|
t-att-href="menu ? '/odoo/' + (menu.actionPath || 'action-' + (menu.actionID || '')) : '#'"
|
||||||
|
t-on-click="() => props.onNavBarDropdownItemSelection ? props.onNavBarDropdownItemSelection(menu) : null">
|
||||||
|
<span><t t-esc="menu.name"/></span>
|
||||||
|
<span class="oi oi-chevron-right ms-auto p-1 button_bg_hover rounded chevron-toggle"/>
|
||||||
|
</a>
|
||||||
|
<div t-attf-id="child_menu_{{menu.id}}" class="collapse">
|
||||||
|
<ul class="header-sub-menus">
|
||||||
|
<t t-foreach="menu.children" t-as="menuid" t-key="menuid">
|
||||||
|
<t t-set="menu" t-value="menuService.getMenuAsTree(menuid)"/>
|
||||||
|
<t t-call="AllmenuRecursive">
|
||||||
|
<t t-set="props" t-value="props"/>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
<t t-else="">
|
||||||
|
<a t-att-data-menu="menu.id"
|
||||||
|
t-attf-class="child_menus"
|
||||||
|
t-att-href="menu ? '/odoo/' + (menu.actionPath || 'action-' + (menu.actionID || '')) : '#'"
|
||||||
|
t-att-data-menu-xmlid="menu.xmlid"
|
||||||
|
t-attf-data-action-id="{{menu.actionID ? menu.actionID : ''}}"
|
||||||
|
t-on-click="() => props.onNavBarDropdownItemSelection ? props.onNavBarDropdownItemSelection(menu) : null">
|
||||||
|
<span class="app_name"><t t-esc="menu.name" /></span>
|
||||||
|
</a>
|
||||||
|
</t>
|
||||||
|
</li>
|
||||||
|
</t>
|
||||||
|
</templates>
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<templates xml:space="preserve">
|
||||||
|
|
||||||
|
<!-- Extend web.UserMenu -->
|
||||||
|
<t t-inherit="web.UserMenu" t-inherit-mode="extension" owl="1">
|
||||||
|
<xpath expr="//button" position="replace">
|
||||||
|
<img class="o_avatar o_user_avatar rounded" t-att-src="source" alt="User"/>
|
||||||
|
</xpath>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<!-- Custom SidebarBottom for Systray -->
|
||||||
|
<t t-name="SidebarBottom" owl="1">
|
||||||
|
<div class="systray-container-bits">
|
||||||
|
<div class="o_user_menu pe-0 dropdown p-1">
|
||||||
|
<div class="user-avtar-bits d-block py-1 px-1 rounded" style="background-color:#343434" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<img class="o_avatar o_user_avatar rounded-circle px-1 py-1" style="height:20%; width:20%" t-att-src="source || '/web/static/img/user_menu_avatar.png'" t-att-alt="user?.name || 'User'"/>
|
||||||
|
<span class="oe_topbar_name ms-2 lh-1 text-truncate mb-0 py-2 text-white d-block">
|
||||||
|
<t t-esc="user?.name || 'Unknown User'"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="oe_topbar_name text-start smaller py-1 lh-1 text-truncate w-100" t-att-class="{'d-lg-inline-block' : env.debug}">
|
||||||
|
<mark class="d-block font-monospace text-truncate text-black p-2" style="background-color:white; border-radius:5px">
|
||||||
|
<i class="fa fa-database oi-small me-1"/><t t-esc="dbName || 'No Database'"/>
|
||||||
|
</mark>
|
||||||
|
</div>
|
||||||
|
<div class="powered-by text-white">
|
||||||
|
Powered By <a href="https://www.terabits.xyz/contact-us" class="btn btn-link btn-sm" style="color:#007aff">Terabits Technolab</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-menu systray-dropdown-menu w-100">
|
||||||
|
<t t-foreach="getElements()" t-as="element" t-key="element_index">
|
||||||
|
<t t-if="!element.hide">
|
||||||
|
<DropdownItem
|
||||||
|
t-if="element.type == 'item' || element.type == 'switch'"
|
||||||
|
>
|
||||||
|
<a t-att-href="element.href" t-att-data-menu="element.id" class="dropdown-item-content" t-on-click="element.callback">
|
||||||
|
<CheckBox
|
||||||
|
t-if="element.type == 'switch'"
|
||||||
|
value="element.isChecked"
|
||||||
|
className="'form-switch d-flex flex-row-reverse justify-content-between p-0 w-100'"
|
||||||
|
onChange="element.callback"
|
||||||
|
>
|
||||||
|
<t t-out="element.description"/>
|
||||||
|
</CheckBox>
|
||||||
|
<t t-else="" t-out="element.description"/>
|
||||||
|
</a>
|
||||||
|
</DropdownItem>
|
||||||
|
<div t-if="element.type == 'separator'" role="separator" class="dropdown-divider"/>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</t>
|
||||||
|
<t t-inherit="web.SwitchCompanyMenu" t-inherit-mode="extension" owl="1">
|
||||||
|
<xpath expr="//button" position="replace">
|
||||||
|
<button t-att-disabled="isSingleCompany" t-att-title="companyService.currentCompany.name">
|
||||||
|
<i class="fa fa-building" title="Switch Company"/>
|
||||||
|
</button>
|
||||||
|
</xpath>
|
||||||
|
</t>
|
||||||
|
</templates>
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.config.settings.view.form.inherit.base</field>
|
||||||
|
<field name="model">res.config.settings</field>
|
||||||
|
<field name="priority" eval="1000"></field>
|
||||||
|
<field name="inherit_id" ref="base.res_config_settings_view_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//form" position="inside">
|
||||||
|
<div id="terabits-link">
|
||||||
|
<block title="Clarity backend theme" name="links_container">
|
||||||
|
<div class="d-block">
|
||||||
|
<div>
|
||||||
|
<h6 class="mb-3">
|
||||||
|
Clarity Backend Theme - Powered by <a href="https://terabits.xyz?ref=clarity_backend_theme" target="_blank">Terabits Technolab</a>
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h6>
|
||||||
|
Easily set correct access rights with <a href="https://apps.odoo.com/apps/modules/17.0/simplify_access_management/" target="_blank" title="Terabits Technolab">Simplify Access Management</a> app.
|
||||||
|
</h6>
|
||||||
|
</div>
|
||||||
|
</block>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record id="view_users_form" model="ir.ui.view">
|
||||||
|
<field name="name">res.users.form</field>
|
||||||
|
<field name="model">res.users</field>
|
||||||
|
<field name="inherit_id" ref="base.view_users_form" />
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//page[@name='access_rights']" position="inside">
|
||||||
|
<!-- <separator string="Don't know how to set correct access rights for multiple users?" class=""/> -->
|
||||||
|
<div class="o_horizontal_separator mt-4 mb-3 text-uppercase fw-bolder bg-300 py-4 rounded px-2">Don't know how to set correct access rights for multiple users?</div>
|
||||||
|
<div>
|
||||||
|
<div class="d-block">
|
||||||
|
<h5 class="mt-2">Easily set with <a href="https://apps.odoo.com/apps/modules/18.0/simplify_access_management/" title="terabits">Simplify Access Management</a> app.</h5>
|
||||||
|
<h5 class="mt-2">
|
||||||
|
Live demo available
|
||||||
|
<a href="https://www.terabits.xyz/request_demo?source=clarity_backend_theme&version=18&app=simplify_access_management" title="terabits">Access Here.</a>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<template id="login_layout_bits" inherit_id="web.login_layout" name="login layout">
|
||||||
|
<!-- <xpath expr="//div[@class='container py-5']" position="attributes">
|
||||||
|
<attribute name="class">container py-5 login-view-bits</attribute>
|
||||||
|
</xpath> -->
|
||||||
|
<xpath expr="//div[@class='container py-5']" position="replace">
|
||||||
|
<div class="container py-5 login-view-bits">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-12 col-md-4 col-lg-4">
|
||||||
|
<div t-attf-class="card border-0 mx-auto bg-100 {{login_card_classes}} o_database_list" style="max-width: 300px;">
|
||||||
|
<div class="card-body">
|
||||||
|
<div t-attf-class="text-center pb-3 border-bottom {{'mb-3' if form_small else 'mb-4'}}">
|
||||||
|
<img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>
|
||||||
|
</div>
|
||||||
|
<t t-out="0"/>
|
||||||
|
<div class="text-center small mt-4 pt-3 border-top" t-if="not disable_footer">
|
||||||
|
<t t-if="not disable_database_manager">
|
||||||
|
<a class="border-end pe-2 me-1" href="/web/database/manager">Manage Databases</a>
|
||||||
|
</t>
|
||||||
|
<a href="https://www.odoo.com?utm_source=db&utm_medium=auth" target="_blank">Powered by <span>Odoo</span></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</odoo>
|
|
@ -0,0 +1,47 @@
|
||||||
|
.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg
|
||||||
|
:target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
||||||
|
:alt: License: LGPL-3
|
||||||
|
|
||||||
|
Jazzy Backend Theme
|
||||||
|
===================
|
||||||
|
* Jazzy Backend Theme module for Odoo 18 community editions. This is a Minimalist and Elegant Backend Theme for Odoo 17. This theme will change your Old Experience to a New Experience with Odoo.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
- www.odoo.com/documentation/18.0/setup/install.html
|
||||||
|
- Install our custom addon
|
||||||
|
|
||||||
|
Company
|
||||||
|
-------
|
||||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
General Public License, Version 3 (LGPL v3).
|
||||||
|
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html)
|
||||||
|
|
||||||
|
Credits
|
||||||
|
-------
|
||||||
|
Developer: (V17) Developer ADVAITH BG, Contact: odoo@cybrosys.com
|
||||||
|
(V18) Developer ATHIRA K, Contact: odoo@cybrosys.com
|
||||||
|
Contacts
|
||||||
|
--------
|
||||||
|
* Mail Contact : odoo@cybrosys.com
|
||||||
|
* Website : https://cybrosys.com
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
-----------
|
||||||
|
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
|
||||||
|
|
||||||
|
Maintainer
|
||||||
|
--------
|
||||||
|
This module is maintained by Cybrosys Technologies.
|
||||||
|
|
||||||
|
For support and more information, please visit https://www.cybrosys.com
|
||||||
|
|
||||||
|
.. image:: https://cybrosys.com/images/logo.png
|
||||||
|
:target: https://cybrosys.com"
|
||||||
|
|
||||||
|
Further information
|
||||||
|
-----------------
|
||||||
|
HTML Description: `<static/description/index.html>`__
|
|
@ -0,0 +1,22 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Cybrosys Technologies Pvt. Ltd.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||||
|
#
|
||||||
|
# You can modify it under the terms of the GNU LESSER
|
||||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
# (LGPL v3) along with this program.
|
||||||
|
# If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
from . import models
|
|
@ -0,0 +1,58 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Cybrosys Technologies Pvt. Ltd.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||||
|
#
|
||||||
|
# You can modify it under the terms of the GNU LESSER
|
||||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
# (LGPL v3) along with this program.
|
||||||
|
# If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
{
|
||||||
|
"name": "Jazzy Backend Theme",
|
||||||
|
"version": "18.0.1.0.0",
|
||||||
|
"category": "Themes/Backend",
|
||||||
|
"summary": "Jazzy backed Theme is an attractive theme for backend",
|
||||||
|
"description": """Minimalist and elegant backend theme for Odoo Backend""",
|
||||||
|
"author": "Cybrosys Techno Solutions",
|
||||||
|
"company": "Cybrosys Techno Solutions",
|
||||||
|
"maintainer": "Cybrosys Techno Solutions",
|
||||||
|
"website": "https://www.cybrosys.com",
|
||||||
|
"depends": ["web", "mail"],
|
||||||
|
"data": [
|
||||||
|
'views/layout_templates.xml',
|
||||||
|
'views/res_config_settings_views.xml',
|
||||||
|
],
|
||||||
|
'assets': {
|
||||||
|
'web.assets_backend': [
|
||||||
|
'jazzy_backend_theme/static/src/components/app_menu/side_menu.xml',
|
||||||
|
'jazzy_backend_theme/static/src/layout/style/layout_colors.scss',
|
||||||
|
'jazzy_backend_theme/static/src/components/app_menu/menu_order.css',
|
||||||
|
'jazzy_backend_theme/static/src/layout/style/layout_style.scss',
|
||||||
|
'jazzy_backend_theme/static/src/layout/style/sidebar.scss',
|
||||||
|
'jazzy_backend_theme/static/src/components/app_menu/search_apps.js',
|
||||||
|
],
|
||||||
|
'web.assets_frontend': [
|
||||||
|
'jazzy_backend_theme/static/src/layout/style/login.scss'
|
||||||
|
],
|
||||||
|
},
|
||||||
|
'images': [
|
||||||
|
'static/description/banner.jpg',
|
||||||
|
'static/description/theme_screenshot.jpg',
|
||||||
|
],
|
||||||
|
'license': 'LGPL-3',
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': False,
|
||||||
|
'application': False,
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
## Module <jazzy_backend_theme>
|
||||||
|
|
||||||
|
#### 01.01.2025
|
||||||
|
|
||||||
|
#### Version 18.0.1.0.0
|
||||||
|
|
||||||
|
##### ADD
|
||||||
|
|
||||||
|
- Initial commit for Jazzy Backend Theme
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Cybrosys Technologies Pvt. Ltd.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||||
|
#
|
||||||
|
# You can modify it under the terms of the GNU LESSER
|
||||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
# (LGPL v3) along with this program.
|
||||||
|
# If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
from . import res_company
|
||||||
|
from . import res_config_settings
|
|
@ -0,0 +1,30 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Cybrosys Technologies Pvt. Ltd.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||||
|
#
|
||||||
|
# You can modify it under the terms of the GNU LESSER
|
||||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
# (LGPL v3) along with this program.
|
||||||
|
# If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
|
||||||
|
class ResCompany(models.Model):
|
||||||
|
"""Inherits the Res Company Model"""
|
||||||
|
_inherit = 'res.company'
|
||||||
|
|
||||||
|
background_image = fields.Binary(string="Background Image", attachment=True,
|
||||||
|
help="Add Background image")
|
|
@ -0,0 +1,85 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# Cybrosys Technologies Pvt. Ltd.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||||
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||||
|
#
|
||||||
|
# You can modify it under the terms of the GNU LESSER
|
||||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
# (LGPL v3) along with this program.
|
||||||
|
# If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
from odoo import models, fields
|
||||||
|
|
||||||
|
|
||||||
|
class ResConfigSettings(models.TransientModel):
|
||||||
|
"""Inherits the Configuration settings Model"""
|
||||||
|
_inherit = 'res.config.settings'
|
||||||
|
|
||||||
|
theme_background = fields.Binary(string="App menu Background",
|
||||||
|
related='company_id.background_image',
|
||||||
|
readonly=False,
|
||||||
|
help="Add background image")
|
||||||
|
app_bar_color = fields.Char(string='Appbar color',
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'appbar_color',
|
||||||
|
default='#000000',
|
||||||
|
help="App bar color")
|
||||||
|
primary_accent = fields.Char(string="Navbar color",
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'primary_accent_color',
|
||||||
|
default='#004589',
|
||||||
|
help="Navbar color")
|
||||||
|
primary_hover = fields.Char(string="Hover Primary Color",
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'primary_hover',
|
||||||
|
default='#00376E',
|
||||||
|
help="Hover primary color")
|
||||||
|
appbar_text = fields.Char(string="Home Menu Text Color",
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'appbar_text',
|
||||||
|
default='#ffffff',
|
||||||
|
help="App bar text color")
|
||||||
|
secondary_hover = fields.Char(string="AppBar Hover",
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'secondary_hover',
|
||||||
|
default='#F2F2F3',
|
||||||
|
help="Appbar hover")
|
||||||
|
kanban_bg_color = fields.Char(string="Kanban Bg Color",
|
||||||
|
config_parameter='jazzy_backend_theme.'
|
||||||
|
'kanban_bg_color',
|
||||||
|
default='#F7F7F7',
|
||||||
|
help="Kanban view background color")
|
||||||
|
|
||||||
|
def config_color_settings(self):
|
||||||
|
"""Define the configuration color settings"""
|
||||||
|
colors = {
|
||||||
|
'full_bg_img': self.env.user.company_id.background_image,
|
||||||
|
'appbar_color': self.env[ 'ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.appbar_color'),
|
||||||
|
'primary_accent': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.primary_accent_color'),
|
||||||
|
'secondary_color': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.secondary_color'),
|
||||||
|
'kanban_bg_color': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.kanban_bg_color'),
|
||||||
|
'primary_hover': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.primary_hover'),
|
||||||
|
'light_hover': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.light_hover'),
|
||||||
|
'appbar_text': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.appbar_text'),
|
||||||
|
'secondary_hover': self.env['ir.config_parameter'].sudo().get_param(
|
||||||
|
'jazzy_backend_theme.secondary_hover')
|
||||||
|
}
|
||||||
|
return colors
|
After Width: | Height: | Size: 260 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 257 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 700 KiB |
After Width: | Height: | Size: 137 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 909 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 383 KiB |
After Width: | Height: | Size: 528 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 559 KiB |
After Width: | Height: | Size: 167 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 462 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_48_838)">
|
||||||
|
<path d="M0.000110011 16.2916C0.000110011 9.65172 5.40186 4.24997 12.0418 4.24997H26.9168V1.89405C26.9168 0.631803 28.4425 -3.05772e-05 29.335 0.892469L33.585 5.37339C34.1389 5.9273 34.1375 6.82405 33.585 7.37655L29.335 11.8575C28.4425 12.75 26.9168 12.1181 26.9168 10.8559V8.49997H12.0418C7.74503 8.49997 4.25011 11.9963 4.25011 16.2916C4.25011 17.4646 3.29953 18.4166 2.12511 18.4166C0.950693 18.4166 0.000110011 17.4646 0.000110011 16.2916ZM31.8751 15.5833C30.7007 15.5833 29.7501 16.5353 29.7501 17.7083C29.7501 22.0036 26.2552 25.5 21.9584 25.5H7.08344V23.1441C7.08344 21.8818 5.55769 21.25 4.66519 22.1425L0.415193 26.6234C-0.138723 27.1773 -0.138723 28.0741 0.415193 28.6266L4.66519 33.1075C5.55769 34 7.08344 33.3681 7.08344 32.1059V29.75H21.9584C28.5984 29.75 34.0001 24.3482 34.0001 17.7083C34.0001 16.5353 33.0495 15.5833 31.8751 15.5833Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_48_838">
|
||||||
|
<rect width="34" height="34" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,66 @@
|
||||||
|
<svg width="1408" height="694" viewBox="0 0 1408 694" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_2133_160)">
|
||||||
|
<rect width="1408" height="694" rx="32" fill="url(#paint0_linear_2133_160)"/>
|
||||||
|
<g clip-path="url(#clip1_2133_160)">
|
||||||
|
<g opacity="0.3" clip-path="url(#clip2_2133_160)">
|
||||||
|
<g clip-path="url(#clip3_2133_160)">
|
||||||
|
<path d="M356.462 674.053C353.888 671.48 353.887 668.9 356.457 666.329C353.887 668.9 351.307 668.898 348.734 666.325C351.307 668.898 351.309 671.478 348.738 674.049C351.309 671.478 353.888 671.48 356.462 674.053ZM349.506 667.098C351.57 669.161 353.624 669.162 355.686 667.101C353.624 669.162 353.626 671.217 355.689 673.28C353.626 671.217 351.571 671.216 349.51 673.277C351.571 671.216 351.57 669.161 349.506 667.098Z" fill="#375DFB"/>
|
||||||
|
<path d="M395.06 635.455C392.487 632.881 392.485 630.301 395.056 627.73C392.485 630.301 389.906 630.3 387.332 627.726C389.906 630.3 389.907 632.88 387.336 635.45C389.907 632.88 392.487 632.881 395.06 635.455ZM388.105 628.499C390.168 630.563 392.223 630.564 394.284 628.502C392.223 630.564 392.224 632.618 394.288 634.682C392.224 632.618 390.17 632.617 388.108 634.678C390.17 632.617 390.168 630.563 388.105 628.499Z" fill="#375DFB"/>
|
||||||
|
<path d="M434.475 674.869C431.383 671.777 431.381 668.688 434.469 665.6C431.381 668.688 428.292 668.686 425.201 665.595C428.292 668.686 428.294 671.776 425.206 674.864C428.294 671.776 431.383 671.777 434.475 674.869ZM426.128 666.522C428.601 668.995 431.073 668.997 433.543 666.526C431.073 668.997 431.074 671.468 433.547 673.941C431.074 671.468 428.602 671.467 426.132 673.937C428.602 671.467 428.601 668.995 426.128 666.522Z" fill="#375DFB"/>
|
||||||
|
<path d="M433.659 596.856C431.085 594.282 431.084 591.703 433.655 589.132C431.084 591.703 428.504 591.701 425.931 589.128C428.504 591.701 428.506 594.281 425.935 596.852C428.506 594.281 431.085 594.282 433.659 596.856ZM426.703 589.901C428.767 591.964 430.821 591.965 432.883 589.904C430.821 591.965 430.823 594.02 432.886 596.083C430.823 594.02 428.768 594.019 426.707 596.08C428.768 594.019 428.767 591.964 426.703 589.901Z" fill="#375DFB"/>
|
||||||
|
<path d="M473.073 636.27C469.982 633.179 469.98 630.089 473.068 627.001C469.98 630.089 466.89 630.088 463.799 626.996C466.89 630.088 466.892 633.177 463.804 636.265C466.892 633.177 469.982 633.179 473.073 636.27ZM464.727 627.924C467.2 630.397 469.671 630.398 472.142 627.928C469.671 630.398 469.673 632.87 472.146 635.343C469.673 632.87 467.201 632.868 464.731 635.339C467.201 632.868 467.2 630.397 464.727 627.924Z" fill="#375DFB"/>
|
||||||
|
<path d="M512.487 675.684C508.878 672.075 508.876 668.476 512.481 664.871C508.876 668.476 505.277 668.474 501.668 664.865C505.277 668.474 505.279 672.073 501.674 675.678C505.279 672.073 508.878 672.075 512.487 675.684ZM502.75 665.947C505.632 668.829 508.521 668.831 511.4 665.952C508.521 668.831 508.523 671.72 511.405 674.602C508.523 671.72 505.634 671.718 502.754 674.598C505.634 671.718 505.632 668.829 502.75 665.947Z" fill="#375DFB"/>
|
||||||
|
<path d="M472.257 558.257C469.684 555.684 469.683 553.104 472.253 550.533C469.683 553.104 467.103 553.103 464.529 550.529C467.103 553.103 467.104 555.683 464.533 558.253C467.104 555.683 469.684 555.684 472.257 558.257ZM465.302 551.302C467.365 553.365 469.42 553.367 471.481 551.305C469.42 553.367 469.421 555.421 471.485 557.485C469.421 555.421 467.367 555.42 465.305 557.481C467.367 555.42 467.365 553.365 465.302 551.302Z" fill="#375DFB"/>
|
||||||
|
<path d="M511.672 597.672C508.58 594.58 508.579 591.491 511.666 588.403C508.579 591.491 505.489 591.489 502.398 588.398C505.489 591.489 505.491 594.579 502.403 597.666C505.491 594.579 508.58 594.58 511.672 597.672ZM503.325 589.325C505.798 591.798 508.27 591.8 510.74 589.329C508.27 591.8 508.271 594.271 510.744 596.744C508.271 594.271 505.799 594.27 503.329 596.74C505.799 594.27 505.798 591.798 503.325 589.325Z" fill="#375DFB"/>
|
||||||
|
<path d="M551.086 637.086C547.477 633.477 547.475 629.877 551.08 626.272C547.475 629.877 543.875 629.875 540.266 626.266C543.875 629.875 543.877 633.475 540.272 637.08C543.877 633.475 547.477 633.477 551.086 637.086ZM541.348 627.348C544.231 630.231 547.12 630.232 549.999 627.353C547.12 630.232 547.121 633.121 550.004 636.004C547.121 633.121 544.232 633.12 541.353 635.999C544.232 633.12 544.231 630.231 541.348 627.348Z" fill="#375DFB"/>
|
||||||
|
<path d="M590.5 676.5C586.381 672.381 586.379 668.256 590.493 664.142C586.379 668.256 582.254 668.254 578.135 664.135C582.254 668.254 582.256 672.379 578.142 676.493C582.256 672.379 586.381 672.381 590.5 676.5ZM579.371 665.371C582.671 668.671 585.962 668.673 589.258 665.377C585.962 668.673 585.963 671.964 589.263 675.263C585.963 671.964 582.673 671.962 579.377 675.258C582.673 671.962 582.671 668.671 579.371 665.371Z" fill="#375DFB"/>
|
||||||
|
<path d="M510.856 519.659C508.282 517.085 508.281 514.506 510.852 511.935C508.281 514.506 505.701 514.504 503.128 511.931C505.701 514.504 505.703 517.084 503.132 519.655C505.703 517.084 508.282 517.085 510.856 519.659ZM503.9 512.703C505.964 514.767 508.019 514.768 510.08 512.707C508.019 514.768 508.02 516.823 510.083 518.886C508.02 516.823 505.965 516.822 503.904 518.883C505.965 516.822 505.964 514.767 503.9 512.703Z" fill="#375DFB"/>
|
||||||
|
<path d="M550.27 559.073C547.179 555.982 547.177 552.892 550.265 549.804C547.177 552.892 544.087 552.89 540.996 549.799C544.087 552.89 544.089 555.98 541.001 559.068C544.089 555.98 547.179 555.982 550.27 559.073ZM541.924 550.727C544.397 553.2 546.868 553.201 549.339 550.731C546.868 553.201 546.87 555.673 549.343 558.146C546.87 555.673 544.398 555.671 541.928 558.142C544.398 555.671 544.397 553.2 541.924 550.727Z" fill="#375DFB"/>
|
||||||
|
<path d="M589.684 598.487C586.075 594.878 586.073 591.279 589.678 587.674C586.073 591.279 582.474 591.277 578.865 587.668C582.474 591.277 582.476 594.876 578.871 598.481C582.476 594.876 586.075 594.878 589.684 598.487ZM579.947 588.75C582.829 591.632 585.718 591.634 588.598 588.755C585.718 591.634 585.72 594.523 588.602 597.405C585.72 594.523 582.831 594.521 579.951 597.401C582.831 594.521 582.829 591.632 579.947 588.75Z" fill="#375DFB"/>
|
||||||
|
<path d="M549.454 481.06C546.881 478.487 546.879 475.907 549.45 473.336C546.879 475.907 544.3 475.906 541.726 473.332C544.3 475.906 544.301 478.485 541.73 481.056C544.301 478.485 546.881 478.487 549.454 481.06ZM542.499 474.105C544.562 476.168 546.617 476.17 548.678 474.108C546.617 476.17 546.618 478.224 548.682 480.288C546.618 478.224 544.564 478.223 542.502 480.284C544.564 478.223 544.562 476.168 542.499 474.105Z" fill="#375DFB"/>
|
||||||
|
<path d="M588.869 520.475C585.777 517.383 585.776 514.294 588.864 511.206C585.776 514.294 582.686 514.292 579.595 511.201C582.686 514.292 582.688 517.382 579.6 520.469C582.688 517.382 585.777 517.383 588.869 520.475ZM580.522 512.128C582.995 514.601 585.467 514.602 587.937 512.132C585.467 514.602 585.468 517.074 587.941 519.547C585.468 517.074 582.997 517.073 580.526 519.543C582.997 517.073 582.995 514.601 580.522 512.128Z" fill="#375DFB"/>
|
||||||
|
<path d="M588.053 442.462C585.48 439.888 585.478 437.308 588.049 434.738C585.478 437.308 582.898 437.307 580.325 434.734C582.898 437.307 582.9 439.887 580.329 442.458C582.9 439.887 585.48 439.888 588.053 442.462ZM581.098 435.506C583.161 437.57 585.216 437.571 587.277 435.51C585.216 437.571 585.217 439.626 587.28 441.689C585.217 439.626 583.162 439.624 581.101 441.686C583.162 439.624 583.161 437.57 581.098 435.506Z" fill="#375DFB"/>
|
||||||
|
<path d="M317.455 673.645C315.137 671.327 315.136 669.01 317.452 666.694C315.136 669.01 312.818 669.008 310.5 666.69C312.818 669.008 312.82 671.325 310.504 673.641C312.82 671.325 315.137 671.327 317.455 673.645ZM311.196 667.385C313.05 669.24 314.904 669.241 316.757 667.388C314.904 669.241 314.905 671.095 316.76 672.95C314.905 671.095 313.051 671.094 311.199 672.947C313.051 671.094 313.05 669.24 311.196 667.385Z" fill="#375DFB"/>
|
||||||
|
<path d="M356.054 635.047C353.736 632.728 353.734 630.411 356.05 628.095C353.734 630.411 351.417 630.41 349.099 628.091C351.417 630.41 351.418 632.727 349.102 635.043C351.418 632.727 353.736 632.728 356.054 635.047ZM349.794 628.787C351.649 630.642 353.503 630.643 355.355 628.79C353.503 630.643 353.504 632.496 355.358 634.351C353.504 632.496 351.65 632.495 349.797 634.348C351.65 632.495 351.649 630.642 349.794 628.787Z" fill="#375DFB"/>
|
||||||
|
<path d="M395.468 674.461C392.632 671.625 392.63 668.798 395.463 665.964C392.63 668.798 389.803 668.796 386.967 665.96C389.803 668.796 389.805 671.623 386.972 674.456C389.805 671.623 392.632 671.625 395.468 674.461ZM387.817 666.81C390.082 669.074 392.352 669.076 394.614 666.814C392.352 669.076 392.354 671.346 394.618 673.611C392.354 671.346 390.083 671.345 387.821 673.607C390.083 671.345 390.082 669.074 387.817 666.81Z" fill="#375DFB"/>
|
||||||
|
<path d="M394.653 596.448C392.334 594.13 392.333 591.813 394.649 589.497C392.333 591.813 390.016 591.811 387.697 589.493C390.016 591.811 390.017 594.128 387.701 596.444C390.017 594.128 392.334 594.13 394.653 596.448ZM388.393 590.188C390.247 592.043 392.101 592.044 393.954 590.191C392.101 592.044 392.102 593.898 393.957 595.753C392.102 593.898 390.248 593.897 388.396 595.75C390.248 593.897 390.247 592.043 388.393 590.188Z" fill="#375DFB"/>
|
||||||
|
<path d="M434.067 635.862C431.23 633.026 431.229 630.199 434.062 627.366C431.229 630.199 428.402 630.198 425.566 627.361C428.402 630.198 428.403 633.024 425.57 635.858C428.403 633.024 431.23 633.026 434.067 635.862ZM426.416 628.211C428.68 630.476 430.951 630.477 433.213 628.215C430.951 630.477 430.952 632.748 433.217 635.012C430.952 632.748 428.681 632.747 426.419 635.008C428.681 632.747 428.68 630.476 426.416 628.211Z" fill="#375DFB"/>
|
||||||
|
<path d="M473.481 675.277C470.135 671.93 470.133 668.578 473.475 665.235C470.133 668.578 466.78 668.576 463.434 665.23C466.78 668.576 466.782 671.928 463.44 675.271C466.782 671.928 470.135 671.93 473.481 675.277ZM464.439 666.235C467.121 668.916 469.793 668.918 472.472 666.239C469.793 668.918 469.794 671.59 472.476 674.272C469.794 671.59 467.122 671.589 464.443 674.267C467.122 671.589 467.121 668.916 464.439 666.235Z" fill="#375DFB"/>
|
||||||
|
<path d="M433.251 557.85C430.933 555.531 430.931 553.214 433.247 550.898C430.931 553.214 428.614 553.213 426.296 550.894C428.614 553.213 428.615 555.53 426.299 557.846C428.615 555.53 430.933 555.531 433.251 557.85ZM426.991 551.59C428.846 553.444 430.7 553.446 432.552 551.593C430.7 553.446 430.701 555.299 432.556 557.154C430.701 555.299 428.847 555.298 426.994 557.151C428.847 555.298 428.846 553.444 426.991 551.59Z" fill="#375DFB"/>
|
||||||
|
<path d="M472.665 597.264C469.829 594.428 469.827 591.601 472.661 588.767C469.827 591.601 467 591.599 464.164 588.763C467 591.599 467.002 594.426 464.169 597.259C467.002 594.426 469.829 594.428 472.665 597.264ZM465.014 589.613C467.279 591.877 469.549 591.879 471.811 589.617C469.549 591.879 469.551 594.149 471.815 596.414C469.551 594.149 467.28 594.148 465.018 596.41C467.28 594.148 467.279 591.877 465.014 589.613Z" fill="#375DFB"/>
|
||||||
|
<path d="M512.079 636.678C508.733 633.332 508.731 629.979 512.074 626.637C508.731 629.979 505.379 629.978 502.033 626.631C505.379 629.978 505.381 633.33 502.038 636.672C505.381 633.33 508.733 633.332 512.079 636.678ZM503.037 627.636C505.719 630.318 508.392 630.319 511.07 627.64C508.392 630.319 508.393 632.992 511.075 635.673C508.393 632.992 505.721 632.99 503.042 635.669C505.721 632.99 505.719 630.318 503.037 627.636Z" fill="#375DFB"/>
|
||||||
|
<path d="M551.494 676.092C547.629 672.228 547.627 668.366 551.487 664.506C547.627 668.366 543.765 668.364 539.901 664.5C543.765 668.364 543.767 672.226 539.908 676.086C543.767 672.226 547.629 672.228 551.494 676.092ZM541.06 665.659C544.152 668.75 547.241 668.752 550.329 665.664C547.241 668.752 547.243 671.842 550.334 674.933C547.243 671.842 544.153 671.84 541.066 674.928C544.153 671.84 544.152 668.75 541.06 665.659Z" fill="#375DFB"/>
|
||||||
|
<path d="M471.85 519.251C469.531 516.933 469.53 514.615 471.846 512.299C469.53 514.615 467.213 514.614 464.894 512.296C467.213 514.614 467.214 516.931 464.898 519.247C467.214 516.931 469.531 516.933 471.85 519.251ZM465.59 512.991C467.444 514.846 469.298 514.847 471.151 512.994C469.298 514.847 469.299 516.701 471.154 518.556C469.299 516.701 467.445 516.7 465.593 518.552C467.445 516.7 467.444 514.846 465.59 512.991Z" fill="#375DFB"/>
|
||||||
|
<path d="M511.264 558.665C508.428 555.829 508.426 553.002 511.259 550.169C508.426 553.002 505.599 553 502.763 550.164C505.599 553 505.601 555.827 502.767 558.661C505.601 555.827 508.428 555.829 511.264 558.665ZM503.613 551.014C505.877 553.279 508.148 553.28 510.41 551.018C508.148 553.28 508.149 555.551 510.414 557.815C508.149 555.551 505.878 555.55 503.617 557.811C505.878 555.55 505.877 553.279 503.613 551.014Z" fill="#375DFB"/>
|
||||||
|
<path d="M550.678 598.079C547.332 594.733 547.33 591.381 550.672 588.038C547.33 591.381 543.978 591.379 540.631 588.033C543.978 591.379 543.979 594.731 540.637 598.074C543.979 594.731 547.332 594.733 550.678 598.079ZM541.636 589.037C544.318 591.719 546.99 591.721 549.669 589.042C546.99 591.721 546.992 594.393 549.673 597.075C546.992 594.393 544.319 594.392 541.64 597.07C544.319 594.392 544.318 591.719 541.636 589.037Z" fill="#375DFB"/>
|
||||||
|
<path d="M590.092 637.494C586.228 633.63 586.226 629.768 590.086 625.908C586.226 629.768 582.364 629.765 578.5 625.901C582.364 629.765 582.366 633.627 578.506 637.487C582.366 633.627 586.228 633.63 590.092 637.494ZM579.659 627.061C582.75 630.152 585.84 630.154 588.928 627.066C585.84 630.154 585.842 633.243 588.933 636.334C585.842 633.243 582.752 633.241 579.664 636.329C582.752 633.241 582.75 630.152 579.659 627.061Z" fill="#375DFB"/>
|
||||||
|
<path d="M510.448 480.653C508.13 478.334 508.128 476.017 510.444 473.701C508.128 476.017 505.811 476.016 503.493 473.697C505.811 476.016 505.812 478.333 503.497 480.649C505.812 478.333 508.13 478.334 510.448 480.653ZM504.188 474.393C506.043 476.247 507.897 476.248 509.749 474.396C507.897 476.248 507.898 478.102 509.753 479.957C507.898 478.102 506.044 478.101 504.191 479.954C506.044 478.101 506.043 476.247 504.188 474.393Z" fill="#375DFB"/>
|
||||||
|
<path d="M549.862 520.067C547.026 517.231 547.024 514.403 549.858 511.57C547.024 514.403 544.197 514.402 541.361 511.566C544.197 514.402 544.199 517.229 541.366 520.062C544.199 517.229 547.026 517.231 549.862 520.067ZM542.211 512.416C544.476 514.68 546.747 514.681 549.008 512.42C546.747 514.681 546.748 516.952 549.012 519.217C546.748 516.952 544.477 516.951 542.215 519.213C544.477 516.951 544.476 514.68 542.211 512.416Z" fill="#375DFB"/>
|
||||||
|
<path d="M589.276 559.481C585.93 556.135 585.928 552.782 589.271 549.44C585.928 552.782 582.576 552.781 579.23 549.434C582.576 552.781 582.578 556.133 579.235 559.475C582.578 556.133 585.93 556.135 589.276 559.481ZM580.234 550.439C582.916 553.121 585.589 553.122 588.267 550.443C585.589 553.122 585.59 555.795 588.272 558.476C585.59 555.795 582.918 555.793 580.239 558.472C582.918 555.793 582.916 553.121 580.234 550.439Z" fill="#375DFB"/>
|
||||||
|
<path d="M549.047 442.054C546.728 439.735 546.727 437.418 549.043 435.102C546.727 437.418 544.41 437.417 542.091 435.099C544.41 437.417 544.411 439.734 542.095 442.05C544.411 439.734 546.728 439.735 549.047 442.054ZM542.787 435.794C544.642 437.649 546.495 437.65 548.348 435.797C546.495 437.65 546.496 439.504 548.351 441.358C546.496 439.504 544.643 439.503 542.79 441.355C544.643 439.503 544.642 437.649 542.787 435.794Z" fill="#375DFB"/>
|
||||||
|
<path d="M588.461 481.468C585.625 478.632 585.623 475.805 588.456 472.972C585.623 475.805 582.796 475.803 579.96 472.967C582.796 475.803 582.798 478.63 579.964 481.464C582.798 478.63 585.625 478.632 588.461 481.468ZM580.81 473.817C583.074 476.082 585.345 476.083 587.607 473.821C585.345 476.083 585.346 478.354 587.611 480.618C585.346 478.354 583.075 478.352 580.814 480.614C583.075 478.352 583.074 476.082 580.81 473.817Z" fill="#375DFB"/>
|
||||||
|
<path d="M587.645 403.455C585.327 401.137 585.325 398.82 587.641 396.504C585.325 398.82 583.008 398.818 580.69 396.5C583.008 398.818 583.01 401.136 580.694 403.452C583.01 401.136 585.327 401.137 587.645 403.455ZM581.385 397.196C583.24 399.05 585.094 399.051 586.947 397.199C585.094 399.051 585.095 400.905 586.95 402.76C585.095 400.905 583.241 400.904 581.388 402.757C583.241 400.904 583.24 399.05 581.385 397.196Z" fill="#375DFB"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<rect x="0.5" y="0.5" width="1407" height="693" rx="31.5" stroke="#D6E0FF"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_2133_160" x1="704" y1="0" x2="704" y2="694" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#E5EEFF"/>
|
||||||
|
<stop offset="1" stop-color="#F9FBFF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="clip0_2133_160">
|
||||||
|
<rect width="1408" height="694" rx="32" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip1_2133_160">
|
||||||
|
<rect width="281" height="281" fill="white" transform="translate(311 397)"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip2_2133_160">
|
||||||
|
<rect width="281" height="281" fill="white" transform="translate(310.5 396.5)"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip3_2133_160">
|
||||||
|
<rect width="281" height="281" fill="white" transform="translate(310.5 396.5)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 150 KiB |