@ -0,0 +1,47 @@ |
|||||
|
.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg |
||||
|
:target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html |
||||
|
:alt: License: LGPL-3 |
||||
|
|
||||
|
Theme Diva |
||||
|
========== |
||||
|
* Design Web Pages with Theme Diva |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
License |
||||
|
------- |
||||
|
General Public License, Version 3 (LGPL v3). |
||||
|
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
Developer: (V17) Ayana KP, |
||||
|
Developer: (V18) Ashwin T |
||||
|
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 |
||||
|
========== |
||||
|
.. image:: https://cybrosys.com/images/logo.png |
||||
|
:target: https://cybrosys.com |
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit `Our Website <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Further information |
||||
|
=================== |
||||
|
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 |
||||
|
from . import controllers |
@ -0,0 +1,110 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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': 'Theme Diva', |
||||
|
'version': '18.0.1.0.0', |
||||
|
'category': 'Theme/Corporate', |
||||
|
'summary': """Design Web Pages with Theme Diva. The theme is very ' |
||||
|
'user-friendly and is suitable for your website.""", |
||||
|
'description': """Theme Diva is an attractive and modern eCommerce |
||||
|
Website theme""", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': "https://www.cybrosys.com", |
||||
|
'depends': ['website_sale', 'website_blog', 'hr'], |
||||
|
'data': [ |
||||
|
'security/ir.model.access.csv', |
||||
|
'data/product_featured_data.xml', |
||||
|
'views/featured_configuration.xml', |
||||
|
'views/ecommerce_category.xml', |
||||
|
'views/views.xml', |
||||
|
'views/customize.xml', |
||||
|
'views/layout.xml', |
||||
|
'views/myaccount.xml', |
||||
|
'views/shop.xml', |
||||
|
'views/product_view.xml', |
||||
|
'views/contact.xml', |
||||
|
'views/product_template_views.xml', |
||||
|
'views/popular_products_actions.xml', |
||||
|
'views/popular_products_views.xml', |
||||
|
'views/index_layout/index_banner.xml', |
||||
|
'views/index_layout/index_main_product.xml', |
||||
|
'views/index_layout/index_featured_product.xml', |
||||
|
'views/index_layout/index_demo.xml', |
||||
|
'views/index_layout/index_subscribe.xml', |
||||
|
'views/home_index/banner.xml', |
||||
|
'views/home_index/popular_product.xml', |
||||
|
'views/home_index/Featured_product.xml', |
||||
|
'views/home_index/testimonial.xml', |
||||
|
'views/home_index/offer.xml', |
||||
|
'views/home_index/index2_blog.xml', |
||||
|
'views/diva_index/index3_banner.xml', |
||||
|
'views/diva_index/index3_product.xml', |
||||
|
'views/diva_index/index3_store.xml', |
||||
|
'views/diva_index/index3_gallery.xml', |
||||
|
'views/diva_index/index3_blog.xml', |
||||
|
'views/landing_page/landing_features.xml', |
||||
|
'views/landing_page/landing_demo.xml', |
||||
|
'views/landing_page/landing_banner.xml', |
||||
|
'views/landing_page/landing_sponsored.xml', |
||||
|
'views/landing_page/landing_subscribe.xml', |
||||
|
|
||||
|
], |
||||
|
'assets': { |
||||
|
'web.assets_frontend': [ |
||||
|
'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.30.1/moment.min.js', |
||||
|
'/theme_diva/static/src/xml/home_index_blog.xml', |
||||
|
'/theme_diva/static/src/xml/index_layout_blog.xml', |
||||
|
'/theme_diva/static/src/xml/index_featured_products.xml', |
||||
|
'/theme_diva/static/src/xml/index_featured_products2.xml', |
||||
|
'/theme_diva/static/src/xml/index_main_product.xml', |
||||
|
'/theme_diva/static/src/css/style.css', |
||||
|
'theme_diva/static/src/css/pluginstyle.css', |
||||
|
'/theme_diva/static/src/css/owl.carousel.min.css', |
||||
|
'/theme_diva/static/src/css/animate.min.css', |
||||
|
'/theme_diva/static/src/css/owl.theme.default.min.css', |
||||
|
'/theme_diva/static/src/js/acLazyLoadImage.js', |
||||
|
'/theme_diva/static/src/js/owl.carousel.js', |
||||
|
'/theme_diva/static/src/js/owl.carousel.min.js', |
||||
|
'/theme_diva/static/src/js/index_layout.js', |
||||
|
'/theme_diva/static/src/js/popular_product.js', |
||||
|
'/theme_diva/static/src/js/blog.js', |
||||
|
'/theme_diva/static/src/js/diva_index.js', |
||||
|
'/theme_diva/static/src/js/featured_product2.js', |
||||
|
'/theme_diva/static/src/js/script.js', |
||||
|
'/theme_diva/static/src/js/featured_product.js', |
||||
|
'/theme_diva/static/src/js/index_subscribe.js', |
||||
|
'/theme_diva/static/src/js/landing_subscribe.js', |
||||
|
'/theme_diva/static/src/js/index3_product.js', |
||||
|
'/theme_diva/static/src/js/index_popular_product.js', |
||||
|
], |
||||
|
}, |
||||
|
'images': [ |
||||
|
'static/description/banner.jpg', |
||||
|
'static/description/theme_screenshot.jpg' |
||||
|
], |
||||
|
'license': 'LGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': False, |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 theme_diva_blog |
||||
|
from . import theme_diva_products |
||||
|
from . import main |
@ -0,0 +1,40 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class PopularProductController(http.Controller): |
||||
|
@http.route('/popular/products', type='json', auth='public', website=True) |
||||
|
def popular_products(self): |
||||
|
products = request.env['product.template'].search([ |
||||
|
('is_popular', '=', True), |
||||
|
('is_published', '=', True) |
||||
|
]) |
||||
|
|
||||
|
return [{ |
||||
|
'id': product.id, |
||||
|
'name': product.name, |
||||
|
'variant_count': product.popular_product_count, |
||||
|
'image_url': f'/web/image/product.template/{product.id}/image_1920', |
||||
|
'url': product.website_url, |
||||
|
} for product in products] |
@ -0,0 +1,54 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 fields, http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class WebsiteBlog(http.Controller): |
||||
|
|
||||
|
@http.route('/get_blog_post', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_blog_post(self): |
||||
|
"""This function is used to get blog post information""" |
||||
|
posts = request.env['blog.post'].sudo().search( |
||||
|
[('website_published', '=', True), |
||||
|
('post_date', '<=', fields.Datetime.now())], |
||||
|
order='published_date desc', limit=3) |
||||
|
values = { |
||||
|
'posts_recent': posts.read(['name', 'published_date', 'blog_id', 'cover_properties']), |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/get_blog_posts', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_blog_posts(self): |
||||
|
"""This function is used to get blog post information""" |
||||
|
posts = request.env['blog.post'].sudo().search( |
||||
|
[('website_published', '=', True), |
||||
|
('post_date', '<=', fields.Datetime.now())], |
||||
|
order='published_date desc', limit=4) |
||||
|
|
||||
|
values = { |
||||
|
'posts_recent': posts.read( |
||||
|
['name', 'published_date', 'blog_id', 'cover_properties']), |
||||
|
} |
||||
|
return values |
@ -0,0 +1,149 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 http |
||||
|
from odoo.http import request |
||||
|
|
||||
|
|
||||
|
class WebsiteProduct(http.Controller): |
||||
|
|
||||
|
@http.route('/get_featured_product', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_featured_product(self): |
||||
|
"""This function is used to get the featured products""" |
||||
|
published_list_ids = request.env['product.featured'].sudo().search( |
||||
|
[('website_published', '=', True)]).ids |
||||
|
# Use mapped('product_id') to get a list of product records |
||||
|
featured_products1 = request.env[ |
||||
|
'product.featured.relation'].sudo().search( |
||||
|
[('featured_rel_id', 'in', published_list_ids)], limit=4).mapped( |
||||
|
'product_id') |
||||
|
products = [] |
||||
|
for product in featured_products1: |
||||
|
val = { |
||||
|
'product': product.id, |
||||
|
'list_price': product.list_price, |
||||
|
'name': product.name, |
||||
|
'currency': product.currency_id.symbol, |
||||
|
'rating_count': product.rating_count, |
||||
|
'rating_total': product.rating_total, |
||||
|
'website_url': product.website_url, |
||||
|
} |
||||
|
products.append(val) |
||||
|
values = { |
||||
|
'featured_products1': products, |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/get_featured_products', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_featured_products(self): |
||||
|
"""This function is used to get the featured products""" |
||||
|
published_list_ids = request.env['product.featured'].sudo().search( |
||||
|
[('website_published', '=', True)]).ids |
||||
|
featured_products2 = request.env['product.featured.relation'].sudo().search( |
||||
|
[('featured_rel_id', 'in', published_list_ids)], limit=8).mapped('product_id') |
||||
|
products = [] |
||||
|
for product in featured_products2: |
||||
|
val = { |
||||
|
'product': product.id, |
||||
|
'list_price':product.list_price, |
||||
|
'name': product.name, |
||||
|
'currency': product.currency_id.symbol, |
||||
|
'url': product.website_url |
||||
|
} |
||||
|
products.append(val) |
||||
|
values = { |
||||
|
'featured_products2': products, |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/get_main_product', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_main_product(self): |
||||
|
"""This function is used to get the main products""" |
||||
|
main_products = request.env['product.template'].sudo().search( |
||||
|
[('website_published', '=', True)], |
||||
|
order='create_date asc', limit=1) |
||||
|
values = { |
||||
|
'main_products': main_products.read(), |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/get_main_product', auth="public", type='json', |
||||
|
website=True) |
||||
|
def get_main_product(self): |
||||
|
"""This function is used to get the main products""" |
||||
|
main_products = request.env['product.template'].sudo().search( |
||||
|
[('website_published', '=', True)], |
||||
|
order='create_date asc', limit=1) |
||||
|
values = { |
||||
|
'main_products': main_products.read(), |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/fetch_diva_products', auth="public", type='json', |
||||
|
website=True) |
||||
|
def fetch_diva_products(self): |
||||
|
"""This function is used to get the Diva products""" |
||||
|
is_diva_product = request.env['product.public.category'].sudo().search( |
||||
|
[('is_diva_product', '=', True)],) |
||||
|
values = { |
||||
|
'diva_products': is_diva_product, |
||||
|
'length': len(is_diva_product) |
||||
|
} |
||||
|
return values |
||||
|
|
||||
|
@http.route('/shop_collection_data', type='http', auth='public', website=True, csrf=False) |
||||
|
def shop_collection_data(self): |
||||
|
collections = [ |
||||
|
{ |
||||
|
'title': 'British Backpacks', |
||||
|
'description': 'Handmade in Britain from organic materials.', |
||||
|
'image_url': '/theme_diva/static/src/images/banner-3/banner-31.jpg', |
||||
|
'link': '/shop', |
||||
|
}, |
||||
|
{ |
||||
|
'title': 'Adventure Inspired', |
||||
|
'description': 'Organic cotton tees, printed in Britain.', |
||||
|
'image_url': '/theme_diva/static/src/images/banner-3/banner-1 (3).jpg', |
||||
|
'link': '/shop', |
||||
|
}, |
||||
|
{ |
||||
|
'title': 'Sustainable Supplies', |
||||
|
'description': 'Built for outdoor lovers. Explore responsibly.', |
||||
|
'image_url': '/theme_diva/static/src/images/banner-3/banner-1 (5).jpg', |
||||
|
'link': '/shop', |
||||
|
}, |
||||
|
] |
||||
|
|
||||
|
html = request.env['ir.ui.view']._render_template( |
||||
|
"theme_diva.dynamic_shop_collection_banner", |
||||
|
{'collections': collections} |
||||
|
) |
||||
|
return html |
||||
|
|
||||
|
@http.route('/diva_index_main_product_data', type='http', auth='public', website=True) |
||||
|
def diva_index_main_product_data(self): |
||||
|
products = request.env['product.template'].search([('website_published', '=', True)], limit=6) |
||||
|
return request.render('theme_diva.diva_index_main_product_dynamic', { |
||||
|
'main_products': products |
||||
|
}) |
@ -0,0 +1,10 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- Data file for product featured --> |
||||
|
<data noupdate="1"> |
||||
|
<record id="featured_product" model="product.featured"> |
||||
|
<field name="name">Featured products</field> |
||||
|
<field name="website_published">True</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,6 @@ |
|||||
|
## Module <theme_diva> |
||||
|
|
||||
|
#### 22.07.2025 |
||||
|
#### Version 18.0.1.0.0 |
||||
|
#### ADD |
||||
|
- Initial commit for Theme Diva |
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 product_template |
||||
|
from . import product_featured |
||||
|
from . import ecommerce_category |
||||
|
from . import popular_products |
@ -0,0 +1,29 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 EcommerceCategory(models.Model): |
||||
|
_inherit = 'product.public.category' |
||||
|
|
||||
|
is_diva_product = fields.Boolean(string='Is a Diva Product') |
||||
|
category_image = fields.Image(required=True) |
@ -0,0 +1,83 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 api, fields, models |
||||
|
|
||||
|
|
||||
|
class PopularProducts(models.Model): |
||||
|
"""popular_products""" |
||||
|
_name = "popular.products" |
||||
|
_description = "Popular Products" |
||||
|
|
||||
|
name = fields.Char(string="Name", required=True) |
||||
|
product_ids = fields.Many2many( |
||||
|
"product.template", |
||||
|
string="Selected Products", |
||||
|
domain=[('is_published', '=', True)] |
||||
|
) |
||||
|
product_count = fields.Integer( |
||||
|
string="Product Count", |
||||
|
help="Number of product variants to be displayed", |
||||
|
compute="_compute_product_count", |
||||
|
store=True |
||||
|
) |
||||
|
active = fields.Boolean(default=True) |
||||
|
|
||||
|
@api.depends('product_ids', 'product_ids.product_variant_ids', 'product_ids.product_variant_ids.website_published', |
||||
|
'product_ids.product_variant_ids.active') |
||||
|
def _compute_product_count(self): |
||||
|
"""Compute the number of product variants to be displayed""" |
||||
|
for rec in self: |
||||
|
# Get manually selected product variants that are published and active |
||||
|
manual_variants = rec.product_ids.mapped('product_variant_idsproduct_variant_ids').filtered( |
||||
|
lambda v: v.website_published and v.active |
||||
|
) |
||||
|
|
||||
|
# Get automatically marked popular product variants |
||||
|
auto_products = self.env['product.template'].search([ |
||||
|
('is_popular', '=', True), |
||||
|
('is_published', '=', True) |
||||
|
]) |
||||
|
auto_variants = auto_products.mapped('product_variant_ids').filtered( |
||||
|
lambda v: v.website_published and v.active |
||||
|
) |
||||
|
|
||||
|
# Combine and count unique variants |
||||
|
rec.product_count = len(manual_variants | auto_variants) |
||||
|
|
||||
|
def get_popular_product_variants(self): |
||||
|
"""Returns published variants of both manually selected and auto-marked popular products""" |
||||
|
self.ensure_one() |
||||
|
# Get manually selected product variants |
||||
|
manual_variants = self.product_ids.mapped('product_variant_ids').filtered( |
||||
|
lambda v: v.website_published and v.active |
||||
|
) |
||||
|
|
||||
|
# Get automatically marked popular product variants |
||||
|
auto_products = self.env['product.template'].search([ |
||||
|
('is_popular', '=', True), |
||||
|
('is_published', '=', True) |
||||
|
]) |
||||
|
auto_variants = auto_products.mapped('product_variant_ids').filtered( |
||||
|
lambda v: v.website_published and v.active |
||||
|
) |
||||
|
|
||||
|
return (manual_variants | auto_variants)[:self.product_count] |
@ -0,0 +1,67 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 FeaturedProducts(models.Model): |
||||
|
""" Model for product featured relation""" |
||||
|
_name = 'product.featured.relation' |
||||
|
_description = 'Featured Products' |
||||
|
|
||||
|
product_id = fields.Many2one('product.template', string="Product", |
||||
|
help="Product") |
||||
|
featured_rel_id = fields.Many2one('product.featured', |
||||
|
string="Featured Product", |
||||
|
help="Featured Product") |
||||
|
|
||||
|
|
||||
|
class WebsiteProductFeatured(models.Model): |
||||
|
""" Model for product featured """ |
||||
|
_name = 'product.featured' |
||||
|
_inherit = ['website.published.mixin', 'mail.thread'] |
||||
|
_description = 'Basic model for featured products records' |
||||
|
|
||||
|
def _default_featured_list(self): |
||||
|
"""This function is used to get the featured list""" |
||||
|
featured_products = [] |
||||
|
products = self.env['product.template'].search([], limit=8) |
||||
|
for product in products: |
||||
|
featured_products.append((0, 0, { |
||||
|
'product_id': product.id, |
||||
|
'featured_rel_id': self.id |
||||
|
})) |
||||
|
return featured_products |
||||
|
|
||||
|
name = fields.Char(string="Name", help='Name') |
||||
|
website_published = fields.Boolean(string='Available on the Website', |
||||
|
copy=False, default=False, |
||||
|
help='helps to know whether the product' |
||||
|
' is available on the website') |
||||
|
featured_list_ids = fields.One2many("product.featured.relation", |
||||
|
"featured_rel_id", |
||||
|
string="Featured List", |
||||
|
default=_default_featured_list, |
||||
|
help='Relational field to product') |
||||
|
user_id = fields.Many2one('res.users', string="Person Responsible", |
||||
|
track_visibility='onchange', |
||||
|
help='Person Responsible', |
||||
|
default=lambda self: self.env.uid) |
@ -0,0 +1,65 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2025-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
||||
|
# Author: Ashwin T (<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 api, models, fields |
||||
|
|
||||
|
|
||||
|
class ProductTemplate(models.Model): |
||||
|
_inherit = 'product.template' |
||||
|
|
||||
|
is_popular = fields.Boolean( |
||||
|
string='Is Popular', default=False, |
||||
|
help='This product is popular' |
||||
|
) |
||||
|
popular_product_count = fields.Integer( |
||||
|
string="Displayed Product Count", |
||||
|
compute='_compute_popular_product_count', |
||||
|
store=True, |
||||
|
help='Count of published variants for this product' |
||||
|
) |
||||
|
|
||||
|
@api.depends('product_variant_ids', 'product_variant_ids.website_published', 'product_variant_ids.active') |
||||
|
def _compute_popular_product_count(self): |
||||
|
"""This function is used for counting the number of published variants for this product""" |
||||
|
for product in self: |
||||
|
product.popular_product_count = len(product.product_variant_ids.filtered( |
||||
|
lambda v: v.website_published and v.active |
||||
|
)) |
||||
|
def _compute_rating_count(self): |
||||
|
"""This function is used for counting the number of rating""" |
||||
|
for rec in self: |
||||
|
reviews = rec.rating_get_stats() |
||||
|
count_avg = reviews.get('avg') |
||||
|
rec.rating_count = count_avg |
||||
|
|
||||
|
def _compute_rating_total(self): |
||||
|
"""This function is used for counting the total rating""" |
||||
|
for rec in self: |
||||
|
reviews = rec.rating_get_stats() |
||||
|
count_total = reviews.get('total') |
||||
|
rec.rating_total = count_total |
||||
|
|
||||
|
rating_count = fields.Float(compute='_compute_rating_count', |
||||
|
string='Average Rating', help='helps to know ' |
||||
|
'the Average Rating') |
||||
|
rating_total = fields.Integer(compute='_compute_rating_total', |
||||
|
string='Total Rating', |
||||
|
help='Helps to know the Total Rating') |
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 163 KiB |
After Width: | Height: | Size: 341 KiB |
After Width: | Height: | Size: 286 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 531 KiB |
After Width: | Height: | Size: 577 KiB |
After Width: | Height: | Size: 910 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1001 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 466 KiB |
After Width: | Height: | Size: 515 KiB |
After Width: | Height: | Size: 602 KiB |
After Width: | Height: | Size: 252 KiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 268 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 130 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 295 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 149 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 929 B |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 565 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 885 B |
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,737 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"/> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> |
||||
|
<title>app index</title> |
||||
|
<link |
||||
|
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" |
||||
|
rel="stylesheet" |
||||
|
/> |
||||
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
||||
|
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" |
||||
|
rel="stylesheet"> |
||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"/> |
||||
|
<style> |
||||
|
:root { |
||||
|
--primary-color: #F5C000;; |
||||
|
--bg-white: #fff; |
||||
|
--text-color: #121212; |
||||
|
--text-color-light: #64728f; |
||||
|
} |
||||
|
body{ |
||||
|
font-family: "Montserrat", sans-serif; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!-- overview --> |
||||
|
<div class="container"> |
||||
|
|
||||
|
<!-- support-header --> |
||||
|
|
||||
|
<div class="supports my-5 py-3" style="border-bottom: 1px solid #e7e7e7;"> |
||||
|
<div class="row justify-content-between"> |
||||
|
<div class="col-4"> |
||||
|
<div class="my-3"> |
||||
|
<img src="//apps.odoocdn.com/apps/assets/17.0/theme_boec/images/Cybrosys.png?fcdde35" |
||||
|
style="width:auto !important; height:40px !important"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-6"> |
||||
|
<div class="row" style="margin-top:10px"> |
||||
|
|
||||
|
<div class="my-3 d-flex align-items-center justify-content-end"> |
||||
|
<span class="me-3"><b>Supports: </b></span> |
||||
|
<div class="text-center" |
||||
|
style="background-color:#017E84 !important; font-size:0.8rem !important; color:#fff !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:50px !important; min-width:120px !important"> |
||||
|
Community |
||||
|
</div> |
||||
|
<div class="text-center" |
||||
|
style="background-color:#875A7B !important; color:#fff !important; font-size:0.8rem !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:50px !important; min-width:120px !important"> |
||||
|
Enterprise |
||||
|
</div> |
||||
|
<div class="text-center" |
||||
|
style="background-color:#7C7BAD !important; color:#fff !important; font-size:0.8rem !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:50px !important; min-width:120px !important"> |
||||
|
Odoo.sh |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row" style="margin-top:10px"> |
||||
|
<div class="d-flex align-items-center justify-content-end"> |
||||
|
<span class="me-3"><b>Availability: </b></span> |
||||
|
<div class="text-center col" |
||||
|
style="border:1px solid #017E84; font-size:0.8rem !important; color:#017E84 !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:20px !important; min-width:120px !important"> |
||||
|
<i class="fa fa-times" style="color:red"></i> Odoo Online |
||||
|
</div> |
||||
|
<div class="text-center col" |
||||
|
style="font-size:0.8rem !important; border:1px solid #714b67; color:#714b67 !important; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:20px !important; min-width:120px !important"> |
||||
|
<i class="fa fa-check" style="color:green"></i> Odoo.sh |
||||
|
</div> |
||||
|
<div class="text-center col" |
||||
|
style="font-size:0.8rem !important; color:#5B899E !important; border:1px solid #5B899E; font-weight:500 !important; padding:4px !important; margin:0 3px !important; border-radius:20px !important; min-width:120px !important"> |
||||
|
<i class="fa fa-check" style="color:green"></i> On Premise |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- --> |
||||
|
|
||||
|
<!-- banner-section --> |
||||
|
<div class="my-5"> |
||||
|
<div class=""> |
||||
|
<img src="./banner.jpg" class="img-fluid" style="border-radius: 16px; width:1300px"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- --> |
||||
|
|
||||
|
|
||||
|
<!-- widgets-features --> |
||||
|
|
||||
|
|
||||
|
<!--feature section --> |
||||
|
|
||||
|
<div class="my-5" style="padding: 100px; background-color: #f1f5fd; border-radius: 16px;"> |
||||
|
<div class="container"> |
||||
|
<div class="row mb-60"> |
||||
|
<div class="col-lg-12 d-flex justify-content-center align-items-center flex-wrap gap-3"> |
||||
|
<div class="position-relative" ; style=" |
||||
|
text-align: center; |
||||
|
font-size: 46.875px; |
||||
|
font-style: normal; |
||||
|
padding-bottom: 40px; "> |
||||
|
<h2 style="font-weight: 600;">Our Features</h2> |
||||
|
|
||||
|
<p style="color: #999; |
||||
|
text-align: center; |
||||
|
font-size: 15.625px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 25.6px;">info includes 300+ elements that you may need to create website without |
||||
|
external plugins.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row g-4"> |
||||
|
<div class="col-lg-4 col-md-6" style="visibility: visible;"> |
||||
|
<div style="background-color: #fff;height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">A Stunning eCommerce Frontend</a></h4> |
||||
|
|
||||
|
<p>An eye-catching and modern design tailored for exceptional eCommerce experiences.</p> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-4 col-md-6"> |
||||
|
<div style="background-color: #fff; height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">Enhanced User Interaction</a></h4> |
||||
|
|
||||
|
<p>Custom-designed snippets improve usability and elevate the shopping experience.</p> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-4 col-md-6"> |
||||
|
<div style="background-color: #fff; height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">Interactive Product Sliders</a></h4> |
||||
|
|
||||
|
<p>Showcase your products with smooth, engaging transitions for an immersive browsing experience.</p> |
||||
|
</div> |
||||
|
|
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-4 col-md-6"> |
||||
|
<div style="background-color: #fff;height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">Complete eCommerce Customization</a></h4> |
||||
|
|
||||
|
<p> Seamlessly customize your shop, product views, and overall eCommerce website with ease.</p> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-4 col-md-6"> |
||||
|
<div style="background-color: #fff;height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">Flexible View Structures</a></h4> |
||||
|
|
||||
|
<p>Optimized layouts for various view types, ensuring a tailored shopping experience.</p> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-4 col-md-6"> |
||||
|
<div style="background-color: #fff;height: 100%; |
||||
|
border-radius: 12px; |
||||
|
padding: 35px 30px;"> |
||||
|
<div class="content"> |
||||
|
<img src="./images/feature-star.svg" class="img-responsive" height="46px" width="46px"> |
||||
|
<h4 class="mt-3"><a href="#" style=" color: var(--text-color); |
||||
|
font-size: 24px; |
||||
|
text-decoration: none; |
||||
|
font-weight: 700; |
||||
|
line-height: 1.2;">Responsive & Intuitive Interface</a></h4> |
||||
|
|
||||
|
<p>A user-friendly design, fully optimized for flawless performance across desktops and mobile devices.</p> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- --> |
||||
|
|
||||
|
<!--sections --> |
||||
|
|
||||
|
<section class="my-5"> |
||||
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px;"> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;">Home</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;">Transform your homepage effortlessly with our intuitive |
||||
|
customization tools. Drag and drop elements to create an inviting and engaging entry |
||||
|
point for your visitors.</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/4.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;"> Shop Collection Banner</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;">Effortlessly organize and display your shop collections to |
||||
|
captivate your audience and highlight your best products.</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/6.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
|
||||
|
<!--row-2 --> |
||||
|
|
||||
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px;"> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;">Blog</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;">Share your thoughts and insights with the world through our |
||||
|
customizable blog section. Publish engaging content and foster a community around your |
||||
|
brand with our intuitive blogging tools.</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/9.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;">The Future of Beauty</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;"> Discover the finest and latest Korean makeup brands and skincare products, curated just for you.</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/5.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
|
||||
|
<!--row-3 --> |
||||
|
|
||||
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px;"> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;">Diva Gallery</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;">Show off your products in a stunning, interactive gallery designed to |
||||
|
captivate shoppers and boost sales!</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/7.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
<div> |
||||
|
<div style="border-radius: 10px; padding: 32px; |
||||
|
background: rgba(48, 48, 48, 1); |
||||
|
-webkit-backdrop-filter: blur(5px); |
||||
|
backdrop-filter: blur(5px); height: 100%;"> |
||||
|
<div class="info"> |
||||
|
<span class="label" style="font-size: 12px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: 32px; |
||||
|
background: -o-linear-gradient(359deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background: linear-gradient(91deg, #ff9c8d 0%, #d655a5 46.64%, #6053cb 92.32%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
margin-bottom: 13px; |
||||
|
text-transform: uppercase;">HIGHLIGHT</span> |
||||
|
<h3 class="text-white" style=" color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: 500; |
||||
|
line-height: 32px; |
||||
|
margin-bottom: 9px;">Popular Products</h3> |
||||
|
<p class="des" style="color: #c7c7c7; |
||||
|
font-size: 16px; |
||||
|
font-style: normal; |
||||
|
font-weight: 400; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 0;"> Discover top-selling items loved by customers, |
||||
|
featuring exclusive deals and must-have essentials for every shopper.</p> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
<div class="mt-5"> |
||||
|
<img src="./images/10.png" alt="Grid item" class="img-fluid"> |
||||
|
</div> |
||||
|
<a href="#" target="_blank" class="url_link" name="grid_popup" |
||||
|
aria-label="Url link label"><span></span></a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- --> |
||||
|
</section> |
||||
|
|
||||
|
<!-- section content --> |
||||
|
|
||||
|
<section class="mb-5" |
||||
|
style="background: linear-gradient(to top, rgb(253 254 255), #E5EEFF); border: 1px solid #D6E0FF; border-radius: 20px; padding: 40px;"> |
||||
|
<div class="row d-flex align-items-center"> |
||||
|
<div class="col col-12 col-md-12 col-lg-6"> |
||||
|
<div style="padding: 20px;"> |
||||
|
<h4 class="" style="font-size: 46px;"> |
||||
|
<span class="gradient" style="background: linear-gradient(248.96deg, #FF9C8D 45.28%, #D655A5 65.79%, #6053CB 85.87%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
font-weight: 700; |
||||
|
display: inline-block; |
||||
|
width: 100%;"></span><br> |
||||
|
<span class="gradient" style="background: linear-gradient(248.96deg, #FF9C8D 45.28%, #D655A5 65.79%, #6053CB 85.87%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
font-weight: 700; |
||||
|
display: inline-block; |
||||
|
width: 100%;"><span class="under-line">Mobile</span> View</span><br> |
||||
|
</h4> |
||||
|
|
||||
|
<div class="mt-4"> |
||||
|
<p style="color: #444;"> Customizing and using our theme is effortless. |
||||
|
With a simple drag-and-drop interface, you can create visually stunning webpages. |
||||
|
Whether you're a novice or an experienced user, our intuitive design tools make the |
||||
|
process seamless. Say goodbye to complicated setups and hello to hassle-free website |
||||
|
customization. Elevate your online presence with ease using our user-friendly theme.</p> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col col-12 col-md-12 col-lg-6"> |
||||
|
<div> |
||||
|
<div> |
||||
|
<img class="img-fluid" src="./images/phone-screenshots.jpg" style=" |
||||
|
border-radius: 20px; |
||||
|
"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<!-- 2 --> |
||||
|
|
||||
|
<section class="" |
||||
|
style="background: linear-gradient(to top, rgb(253 254 255), #E5EEFF); border: 1px solid #D6E0FF; border-radius: 20px; padding: 40px;"> |
||||
|
<div class="row d-flex align-items-center"> |
||||
|
<div class="col col-12 col-md-12 col-lg-6"> |
||||
|
<div> |
||||
|
<div> |
||||
|
<img class="img-fluid" src="./images/laptop-screenshots.jpg" style=" |
||||
|
border-radius: 20px; |
||||
|
"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col col-12 col-md-12 col-lg-6"> |
||||
|
<div style="padding: 20px;"> |
||||
|
<h4 class="" style="font-size: 46px;"> |
||||
|
<span class="gradient" style="background: linear-gradient(248.96deg, #FF9C8D 45.28%, #D655A5 65.79%, #6053CB 85.87%); |
||||
|
background-clip: text; |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
font-weight: 700; |
||||
|
display: inline-block; |
||||
|
width: 100%;"><span class="under-line">Desktop</span> View</span><br> |
||||
|
</h4> |
||||
|
|
||||
|
<div class="mt-4"> |
||||
|
<p style="color: #444;">Our theme offers a modern, |
||||
|
user-friendly design that enhances the stylishness and beauty of your webpage. |
||||
|
With its sleek aesthetics and intuitive interface, |
||||
|
your website will captivate visitors and leave a lasting impression. |
||||
|
Experience the perfect blend of functionality and aesthetics with our contemporary theme. |
||||
|
Elevate your online presence effortlessly and stand out in today's digital landscape.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<!-- --> |
||||
|
|
||||
|
<!-- --> |
||||
|
|
||||
|
|
||||
|
<div class="my-5"> |
||||
|
<!-- banner card --> |
||||
|
|
||||
|
|
||||
|
<!-- service-section --> |
||||
|
|
||||
|
<section id="services" class="mt-5" style="border-radius: 16px; |
||||
|
border: 1px solid #EBEEF2; |
||||
|
background: var(--Neutral-N0, #FFF); |
||||
|
padding: 60px 40px; |
||||
|
box-shadow: 0px 5px 20px -11px rgba(0, 0, 0, 0.25);"> |
||||
|
<div class="text-center mt-4"> |
||||
|
<h3 class="mb-0" style="color: #000; |
||||
|
text-align: center; |
||||
|
font-family: Montserrat; |
||||
|
font-size: 40px; |
||||
|
font-style: normal; |
||||
|
font-weight: 700; |
||||
|
line-height: normal; |
||||
|
text-transform: uppercase; |
||||
|
padding-bottom: 50px;" |
||||
|
>Our Services</h3> |
||||
|
</div> |
||||
|
<div class="row mt-3"> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#FFE2E5; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#FA5A7D; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/gear.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;"> Odoo Customization</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#FFF4DE; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#FF947A; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/wrench-icon.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;"> Odoo Implementation</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#DCFCE7; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#3CD856; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/life-ring-icon.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Odoo Support</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#F3E8FF; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#BF83FF; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/arrows-repeat.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Odoo Migration</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#F1F9FF; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#01649C; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/puzzle-piece-icon.svg" class="img-responsive" height="28px" |
||||
|
width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Odoo integration</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#EDF8ED; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#69CC70; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/odoo-consultancy.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Odoo Consultancy</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#F1F6FF; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#2E4556; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/odoo-licencing.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Odoo Licensing</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-lg-3 col-sm-12 mb-3"> |
||||
|
<a href="#" style="text-decoration:none"> |
||||
|
<div class="btn-lg btn-block p-4 mb-2 d-flex flex-column justify-content-center align-items-center" |
||||
|
style="font-size:25px; font-weight:bold;background-color:#FAF6EA; margin:auto; gap: 16px; border-radius: 8px;"> |
||||
|
|
||||
|
<div class="d-flex justify-content-center align-items-center" |
||||
|
style="background-color:#FCD12C; border-radius:50%; height:56px; width:56px"> |
||||
|
<img src="./images/hire-odoo.svg" class="img-responsive" height="28px" width="28px"> |
||||
|
</div> |
||||
|
<span style="font-size: 18px; |
||||
|
color: var(--text-color); |
||||
|
font-weight: 600;">Hire Odoo Developer</span> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<!-- --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</body> |
||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script> |
||||
|
</html> |
After Width: | Height: | Size: 387 KiB |
@ -0,0 +1,6 @@ |
|||||
|
/** |
||||
|
* Owl Carousel v2.3.4 |
||||
|
* Copyright 2013-2018 David Deutsch |
||||
|
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE |
||||
|
*/ |
||||
|
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:flex}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} |
@ -0,0 +1,6 @@ |
|||||
|
/** |
||||
|
* Owl Carousel v2.3.4 |
||||
|
* Copyright 2013-2018 David Deutsch |
||||
|
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE |
||||
|
*/ |
||||
|
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} |
@ -0,0 +1,15 @@ |
|||||
|
body{ |
||||
|
text-align: left; |
||||
|
} |
||||
|
ul, ol{text-align:left} |
||||
|
.lazy-container{ |
||||
|
min-height: 90px; |
||||
|
height: 100px; |
||||
|
max-height:300px; |
||||
|
margin-top:300px;} |
||||
|
.lazy-img{ |
||||
|
height:200px; |
||||
|
max-height:300px; |
||||
|
opacity:0; |
||||
|
|
||||
|
} |
After Width: | Height: | Size: 313 B |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 387 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 560 KiB |
After Width: | Height: | Size: 302 KiB |
After Width: | Height: | Size: 649 KiB |
After Width: | Height: | Size: 484 KiB |
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 200 KiB |