feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
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:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
.finder-block-button() {
display: block;
float: left;
border: 2px dotted rgba(0,0,0,.1);
position: relative;
outline: none;
.find-button-icon {
position: absolute;
width: 22px;
height: 22px;
top: 50%;
left: 50%;
margin-top: -11px;
margin-left: -11px;
&:before {
text-align: center;
display: block;
font-size: 22px;
height: 22px;
width: 22px;
line-height: 22px;
color: rgba(0,0,0,.1);
}
}
&:hover {
border: 2px dotted rgba(0,0,0,.2);
.find-button-icon:before {
color: @brand-success;
color: rgba(0,0,0,.2);
}
}
&:focus {
border: 2px solid rgba(0,0,0,.3);
background: transparent;
.find-button-icon:before {
color: @brand-success;
color: rgba(0,0,0,.2);
}
}
}
.finder-vertical-align() {
position: absolute;
top: 50%;
margin-top: -44px;
height: 88px;
}
//
// Shared
//
.field-mediafinder {
overflow: hidden;
.find-object {
.border-radius(3px);
position: relative;
outline: none;
overflow: hidden;
display: inline-block;
vertical-align: top;
.icon-container {
display: table;
i {
color: #95a5a6;
display: inline-block;
}
}
h4 {
font-weight: 600;
font-size: 13px;
color: #2b3e50;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 150%;
margin: 15px 0 5px 0;
padding-right: 0;
.transition(padding 0.1s);
position: relative;
a {
position: absolute;
right: 0;
top: 0;
display: none;
font-weight: 400;
}
}
.info h4 a,
.meta a.find-remove-button {
color: #2b3e50;
display: none;
font-size: 15px;
text-decoration: none;
}
}
&.is-populated {
.find-object:hover {
h4 a,
.meta .find-remove-button { display: block; }
}
}
//
// Preview mode
//
&.is-preview {
.find-button,
.find-remove-button {
display: none !important;
}
}
}
//
// Media
//
@media (max-width: 1024px) {
.field-fileupload {
&.is-populated .find-object {
h4 a,
.meta .find-remove-button { display: block !important; }
}
}
}

View File

@@ -0,0 +1,90 @@
.field-mediafinder.style-file-single {
background-color: @color-form-field-bg;
border: 1px solid @color-form-field-border;
overflow: hidden;
position: relative;
padding-right: 30px;
border-radius: 3px;
.box-shadow(@input-box-shadow);
.find-button {
.finder-vertical-align();
background: transparent;
right: -2px;
color: lighten(@color-form-field-recordfinder-btn, 15%);
i {
font-size: 14px;
}
&:hover {
color: @color-form-field-recordfinder-btn;
}
}
.find-empty-message {
padding: 8px 0 8px 11px;
font-size: 14px;
}
.find-object {
display: none;
width: 100%;
padding: 7px 0 9px 0;
.icon-container {
position: absolute;
top: 0;
left: 0;
width: 15px;
padding: 0 5px;
margin: 8px 0 0 7px;
text-align: center;
i {
line-height: 150%;
font-size: 15px;
}
}
.info {
margin-left: 34px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
h4 {
display: inline;
margin: 0;
padding: 0;
font-size: 13px;
line-height: 150%;
color: #666666;
}
}
.meta {
.finder-vertical-align();
right: 0;
.find-remove-button {
position: absolute;
top: 50%;
right: 0;
height: 20px;
margin-top: -11px;
margin-right: 10px;
}
}
}
&.is-populated {
.find-empty-message {
display: none;
}
.find-object {
display: block;
}
}
}

View File

@@ -0,0 +1,47 @@
.field-mediafinder.style-image-single {
.find-button {
.finder-block-button();
min-height: 100px;
min-width: 100px;
}
.find-object {
display: none;
padding-bottom: 39px;
.icon-container {
display: block;
border: 1px solid #f6f8f9;
background: rgba(255,255,255,.5);
img {
.border-radius(3px);
.img-responsive();
}
}
.info {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 39px;
}
&:hover {
h4 { padding-right: 20px; }
}
}
&.is-populated {
.find-button {
display: none;
}
.find-object {
display: block;
}
}
}

View File

@@ -0,0 +1,5 @@
@import "../../../../../backend/assets/less/core/boot.less";
@import "mediafinder.base.less";
@import "mediafinder.imagesingle.less";
@import "mediafinder.filesingle.less";