feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
This commit is contained in:
234
modules/backend/assets/less/layout/layout.less
Normal file
234
modules/backend/assets/less/layout/layout.less
Normal file
@@ -0,0 +1,234 @@
|
||||
//
|
||||
// Common layout elements
|
||||
// --------------------------------------------------
|
||||
|
||||
html:not(.mobile) body.drag * {
|
||||
cursor: grab !important;
|
||||
cursor: -webkit-grab !important;
|
||||
cursor: -moz-grab !important;
|
||||
}
|
||||
|
||||
// Used by sortable plugin
|
||||
body.dragging, body.dragging * {
|
||||
cursor: move !important;
|
||||
}
|
||||
|
||||
body.loading, body.loading * {
|
||||
cursor: wait !important;
|
||||
}
|
||||
|
||||
body.no-select {
|
||||
.user-select(none);
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
//
|
||||
// Layout canvas
|
||||
//
|
||||
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
/* The html and body elements cannot have any padding or margin. */
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: @font-family-base;
|
||||
background: @body-bg;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
#layout-canvas {
|
||||
min-height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
//
|
||||
// Font
|
||||
//
|
||||
|
||||
// Removed for performance reasons
|
||||
//
|
||||
// @import url(https://fonts.googleapis.com/css?family=Noto+Sans:400,400italic,700,700italic);
|
||||
//
|
||||
// body {
|
||||
// font-family: 'Noto Sans', sans-serif;
|
||||
// }
|
||||
|
||||
//
|
||||
// Tabs override for Layout
|
||||
// Primary tabs should use inset by default, unless otherwise specified
|
||||
// --------------------------------------------------
|
||||
|
||||
.control-tabs.primary-tabs {
|
||||
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
|
||||
margin-left: -(@padding-standard);
|
||||
margin-right: -(@padding-standard);
|
||||
}
|
||||
|
||||
&.tabs-no-inset {
|
||||
> ul.nav-tabs, > div > ul.nav-tabs, > div > div > ul.nav-tabs {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Flexible layout system
|
||||
// --------------------------------------------------
|
||||
|
||||
.layout {
|
||||
.layout-cell() {
|
||||
display: table-cell;
|
||||
vertical-align: top;
|
||||
height: 100%;
|
||||
|
||||
&.layout-container, .layout-container, &.padded-container, .padded-container {
|
||||
padding: @padding-standard @padding-standard 0 @padding-standard;
|
||||
|
||||
// Container to sit flush to the element above
|
||||
.container-flush {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.layout-relative {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.layout-absolute {
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.min-size {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
&.min-height {
|
||||
height: 0;
|
||||
}
|
||||
|
||||
&.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&.middle {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
display: table;
|
||||
table-layout: fixed;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
||||
> .layout-row {
|
||||
display: table-row;
|
||||
vertical-align: top;
|
||||
height: 100%;
|
||||
|
||||
> .layout-cell {
|
||||
.layout-cell();
|
||||
}
|
||||
|
||||
&.min-size {
|
||||
height: 0.1px;
|
||||
}
|
||||
}
|
||||
|
||||
> .layout-cell {
|
||||
.layout-cell();
|
||||
}
|
||||
}
|
||||
|
||||
.whiteboard {
|
||||
background: white;
|
||||
}
|
||||
|
||||
.layout-fill-container {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
//
|
||||
// Calculated fixed width
|
||||
//
|
||||
|
||||
[data-calculate-width] {
|
||||
> form, > div {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Layout styles
|
||||
//
|
||||
|
||||
body.compact-container {
|
||||
.layout {
|
||||
&.layout-container, .layout-container { padding: 0 !important; }
|
||||
}
|
||||
}
|
||||
|
||||
body.slim-container {
|
||||
.layout {
|
||||
&.layout-container, .layout-container { padding-left: 0 !important; padding-right: 0 !important; }
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Screen specific
|
||||
//
|
||||
|
||||
@media (max-width: @screen-sm) {
|
||||
.layout {
|
||||
.hide-on-small {
|
||||
display: none;
|
||||
}
|
||||
|
||||
//
|
||||
// Layout with a responsive sidebar
|
||||
//
|
||||
|
||||
&.responsive-sidebar {
|
||||
> .layout-cell:first-child {
|
||||
display: table-footer-group;
|
||||
height: auto;
|
||||
|
||||
.control-breadcrumb {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
> .layout-cell:last-child {
|
||||
display: table-header-group;
|
||||
width: auto;
|
||||
height: auto;
|
||||
|
||||
.layout-absolute {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Browser specific
|
||||
//
|
||||
|
||||
// Remove focus outline for mouse clicks, keep for keyboard navigation
|
||||
@supports (-moz-appearance: none) {
|
||||
a:focus:not(:focus-visible) {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user