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,84 @@
.plugin-details-content {
padding: 0 0;
}
.plugin-details-content > *:first-child {
margin-top: 0;
}
.plugin-details-content h1 {
font-size: 28px;
}
.plugin-details-content h2 {
font-size: 24px;
}
.plugin-details-content h3 {
font-size: 20px;
}
.plugin-details-content h4 {
font-size: 17px;
}
.plugin-details-content h1,
.plugin-details-content h2 {
padding-bottom: 10px;
border-bottom: 1px solid #ccc;
}
.plugin-details-content img {
max-width: 100%;
}
.plugin-details-content ul,
.plugin-details-content ol {
padding-left: 20px;
}
.plugin-details-content pre {
display: block;
border: none;
margin: 10px -20px 20px;
padding: 10px 10px 10px 20px;
font-size: 13px;
word-break: break-all;
word-wrap: break-word;
color: #fff;
background-color: #333;
}
.plugin-details-content pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.plugin-details-content ul pre,
.plugin-details-content ol pre {
margin-left: -40px;
padding-left: 40px;
}
.plugin-details-content table th {
font-weight: bold;
}
.plugin-details-content table th,
.plugin-details-content table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
.plugin-details-content table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}
.plugin-details-content table tr:nth-child(2n) {
background-color: #f8f8f8;
}
.plugin-details-content dl dt,
.plugin-details-content dl dd {
margin-bottom: 10px;
}
.plugin-details-content dl dt {
width: 75px;
float: left;
text-align: right;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.plugin-details-content dl dd {
margin-left: 85px;
}

View File

@@ -0,0 +1,297 @@
.product-list-empty {
padding: 5px 0;
font-size: 16px;
color: #999;
}
.product-list {
margin: 0;
padding: 10px 0;
overflow: hidden;
/* clearfix */
}
.product-list li button {
position: absolute;
top: 0;
right: 0;
width: 20px;
height: 20px;
opacity: 0;
outline: none;
}
.product-list li button,
.product-list li .image,
.product-list li .details {
-webkit-transition: opacity .2s linear;
-moz-transition: opacity .2s linear;
transition: opacity .2s linear;
}
.product-list li:hover button {
opacity: .3;
}
.product-list li:hover button:hover {
opacity: .8;
}
.plugin-list li {
list-style: none;
position: relative;
border-bottom: 1px solid #E6E9E9;
margin-bottom: 10px;
padding-bottom: 10px;
overflow: hidden;
}
.plugin-list li .image {
float: left;
margin-right: 15px;
margin-left: 5px;
}
.plugin-list li .image img {
width: 50px;
height: 50px;
}
.plugin-list li .details p {
padding: 0;
margin: 3px 0 0 0;
color: #808C8D;
}
.plugin-list li h4 {
padding: 5px 0 0;
margin: 0;
color: #C03F31;
font-weight: 400;
}
.plugin-list li:last-child {
border-bottom: none;
}
.theme-list li {
float: left;
padding: 0;
margin: 0 10px 10px 0;
list-style: none;
border: 1px solid #E6E9E9;
background: #fff;
position: relative;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-transition: border .2s linear;
-moz-transition: border .2s linear;
transition: border .2s linear;
}
.theme-list li .image {
padding: 5px;
}
.theme-list li .image img {
width: 210px;
height: 140px;
}
.theme-list li .details {
position: absolute;
bottom: 0;
left: 0;
opacity: 0;
padding: 10px;
overflow: hidden;
}
.theme-list li h4 {
padding: 15px 0 0;
margin: 0;
}
.theme-list li p {
padding: 0;
margin: 0;
color: #999;
text-transform: uppercase;
font-size: 12px;
}
.theme-list li:hover {
border-color: transparent;
}
.theme-list li:hover .image {
opacity: 0;
}
.theme-list li:hover .details {
opacity: 1;
}
.suggested-products {
padding: 0;
}
.suggested-products .product {
padding: 0;
}
.suggested-products .image {
float: left;
position: relative;
}
.suggested-products .image img {
width: 40px;
height: 40px;
margin-top: 10px;
}
.suggested-products .details {
margin-left: 50px;
padding: 10px 0;
}
.suggested-products .details h5 {
margin: 0 0 3px;
font-size: 14px;
color: #C03F31;
font-weight: 400;
}
.suggested-products .details p {
font-size: 12px;
}
.suggested-products a {
color: #777;
background: #fff;
padding: 5px;
text-decoration: none;
display: block;
overflow: hidden;
border-bottom: 1px solid #E6E9E9;
}
.suggested-products a:hover {
color: #333;
background: #f9f9f9;
}
.suggested-products a:hover .image:after {
content: "+";
color: #999;
font-size: 32px;
display: block;
width: 40px;
height: 40px;
text-align: center;
line-height: 40px;
position: absolute;
top: 7px;
left: 0;
}
.suggested-products a:hover .image img {
opacity: .5;
}
.suggested-themes .image img {
width: 60px;
height: 40px;
}
.suggested-themes .details {
margin-left: 70px;
}
/*!
* Typeahead
*/
.product-search {
position: relative;
width: 100%;
margin: 0 auto 0 auto;
text-align: left;
padding-bottom: 15px;
}
.product-search > i.icon {
position: absolute;
top: 50%;
right: 15px;
font-size: 24px;
margin-top: -20px;
color: rgba(0, 0, 0, 0.35);
}
.product-search > i.icon.loading {
display: block;
width: 24px;
height: 24px;
background: url('../../../../system/assets/ui/images/loader-transparent.svg') 50% 50%;
background-size: 24px 24px;
-webkit-animation: spin 1s linear infinite;
animation: spin 1s linear infinite;
}
.twitter-typeahead {
width: 100%;
}
.typeahead,
.tt-hint {
width: 100%;
height: 46px;
padding: 8px 12px;
font-size: 24px;
line-height: 30px;
border: 1px solid #024e6a;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
outline: none;
}
.typeahead {
background-color: #fff;
border-color: #e0e0e0;
}
.tt-input {
font-weight: 200;
}
.tt-input:focus {
border-color: #E6E9E9;
}
.tt-hint {
color: #999;
font-weight: 200;
}
.tt-dropdown-menu {
width: 100%;
margin-top: 0;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.tt-suggestion {
font-size: 14px;
line-height: 18px;
}
.tt-suggestion + .tt-suggestion {
font-size: 14px;
border-top: 1px solid #ccc;
}
.tt-suggestions .product-details {
padding: 5px;
overflow: hidden;
position: relative;
}
.tt-suggestions .product-image {
float: left;
margin-right: 10px;
}
.tt-suggestions .product-image img {
height: 45px;
width: 45px;
}
.tt-suggestions .product-name {
font-size: 20px;
padding-top: 5px;
}
.tt-suggestion.tt-cursor {
cursor: pointer;
}
.tt-suggestion.tt-cursor .product-details {
color: #333;
background: #f9f9f9;
border-color: #f0f0f0;
}
.tt-suggestion.tt-cursor .product-details .product-image:after {
content: "+";
color: #999;
font-size: 38px;
display: block;
width: 45px;
height: 45px;
text-align: center;
line-height: 45px;
position: absolute;
top: 5px;
left: 5px;
}
.tt-suggestion.tt-cursor .product-details .product-image img {
opacity: .5;
}

View File

@@ -0,0 +1,116 @@
.important-update-label {
margin: 7px 0;
}
.control-updatelist {
border: 1px solid #ccc;
margin-bottom: 20px;
}
.control-updatelist .update-item {
border-bottom: 1px solid #ccc;
}
.control-updatelist .update-item .item-header {
background-color: #f5f5f5;
border-bottom: 1px solid #ccc;
padding: 0 10px;
}
.control-updatelist .update-item .item-header h5 {
margin: 0;
padding: 15px 0;
text-transform: uppercase;
font-size: 13px;
}
.control-updatelist .update-item .item-header h5 i {
margin-right: 7px;
color: #405261;
}
.control-updatelist .update-item .item-header h5 small {
text-transform: none;
float: right;
line-height: 13px;
margin-right: 5px;
}
.control-updatelist .update-item .item-header .important-update {
padding: 7px 0 0 0;
float: right;
width: 200px;
}
.control-updatelist .update-item dl {
padding: 10px;
margin-bottom: 0;
}
.control-updatelist .update-item dl:before,
.control-updatelist .update-item dl:after {
content: " ";
display: table;
}
.control-updatelist .update-item dl:after {
clear: both;
}
.control-updatelist .update-item dl dt,
.control-updatelist .update-item dl dd {
float: left;
padding: 5px 0;
line-height: 20px;
}
.control-updatelist .update-item dl dt.text-muted,
.control-updatelist .update-item dl dd.text-muted {
color: #999 !important;
}
.control-updatelist .update-item dl dt {
width: 15%;
clear: left;
font-size: 14px;
font-weight: 400;
color: #2b3e50;
}
.control-updatelist .update-item dl dd {
width: 85%;
font-size: 12px;
color: #455152;
}
.control-updatelist .update-item dl .important-update-label {
position: relative;
top: -1px;
background-color: #ab2a1c;
color: #fff;
display: inline-block;
padding: .2em .6em .3em;
font-size: 75%;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
-webkit-border-radius: 0.25em;
-moz-border-radius: 0.25em;
border-radius: 0.25em;
}
.control-updatelist .update-item:last-child {
border-bottom: none;
}
.control-updatelist .update-item.item-danger .item-header {
background-color: #f2dede;
}
.control-updatelist .update-item.item-danger .item-header h5,
.control-updatelist .update-item.item-danger .item-header i,
.control-updatelist .update-item.item-danger .item-header {
color: #a94442;
}
.control-updatelist .update-item.item-success .item-header {
background-color: #dff0d8;
}
.control-updatelist .update-item.item-success .item-header h5,
.control-updatelist .update-item.item-success .item-header i,
.control-updatelist .update-item.item-success .item-header {
color: #3c763d;
}
.control-updatelist .update-item.item-muted {
border-bottom: none;
}
.control-updatelist .update-item.item-muted .item-header h5,
.control-updatelist .update-item.item-muted .item-header i,
.control-updatelist .update-item.item-muted .item-header {
color: rgba(0, 0, 0, 0.35);
}
.control-updatelist .update-item.item-muted dl {
display: none;
}