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,304 @@
/* Base */
body, body *:not(html):not(style):not(br):not(tr):not(code) {
font-family: Avenir, Helvetica, sans-serif;
box-sizing: border-box;
}
body {
background-color: @body-bg;
color: @text-color;
height: 100%;
hyphens: auto;
line-height: 1.4;
margin: 0;
-moz-hyphens: auto;
-ms-word-break: break-word;
width: 100% !important;
-webkit-hyphens: auto;
-webkit-text-size-adjust: none;
word-break: break-word;
}
p,
ul,
ol,
blockquote {
line-height: 1.4;
text-align: left;
}
a {
color: @link-color;
}
a img {
border: none;
}
/* Typography */
h1 {
color: @heading-color;
font-size: 19px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
h2 {
color: @heading-color;
font-size: 16px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
h3 {
color: @heading-color;
font-size: 14px;
font-weight: bold;
margin-top: 0;
text-align: left;
}
p {
color: @text-color;
font-size: 16px;
line-height: 1.5em;
margin-top: 0;
text-align: left;
}
code {
color: @text-color;
font-size: 16px;
line-height: 1.5em;
word-break: break-all;
}
p.sub {
font-size: 12px;
}
img {
max-width: 100%;
}
.break-all, .break-all * {
word-break: break-all;
}
/* Layout */
.wrapper {
background-color: @body-bg;
margin: 0;
padding: 0;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
.content {
margin: 0;
padding: 0;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
/* Header */
.header {
padding: 25px 0;
text-align: center;
}
.header a, .header span {
color: @header-color;
font-size: 19px;
font-weight: bold;
text-decoration: none;
}
/* Body */
.body {
background-color: @content-bg;
border-bottom: 1px solid @body-border-color;
border-top: 1px solid @body-border-color;
margin: 0;
padding: 0;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
.inner-body {
background-color: @content-inner-bg;
margin: 0 auto;
padding: 0;
width: 570px;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 570px;
}
/* Subcopy */
.subcopy {
border-top: 1px solid @subcopy-border-color;
margin-top: 25px;
padding-top: 25px;
}
.subcopy p {
font-size: 12px;
}
/* Footer */
.footer {
margin: 0 auto;
padding: 0;
text-align: center;
width: 570px;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 570px;
}
.footer p {
color: @footer-color;
font-size: 12px;
text-align: center;
}
/* Tables */
.table table {
border-collapse: collapse;
margin: 30px auto;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
.table th {
border-bottom: 1px solid @table-border-color;
padding-bottom: 8px;
}
.table td {
color: @text-color;
font-size: 15px;
line-height: 18px;
padding: 10px 0;
}
.content-cell {
padding: 35px;
}
.wrapper.layout-system .content-cell {
padding: 35px 0;
}
/* Buttons */
.action {
margin: 30px auto;
padding: 0;
text-align: center;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
.button {
border-radius: 3px;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16);
color: @button-text-color;
display: inline-block;
text-decoration: none;
-webkit-text-size-adjust: none;
}
.button-primary {
background-color: @button-primary-bg;
border-top: 10px solid @button-primary-bg;
border-right: 18px solid @button-primary-bg;
border-bottom: 10px solid @button-primary-bg;
border-left: 18px solid @button-primary-bg;
}
.button-positive {
background-color: @button-positive-bg;
border-top: 10px solid @button-positive-bg;
border-right: 18px solid @button-positive-bg;
border-bottom: 10px solid @button-positive-bg;
border-left: 18px solid @button-positive-bg;
}
.button-negative {
background-color: @button-negative-bg;
border-top: 10px solid @button-negative-bg;
border-right: 18px solid @button-negative-bg;
border-bottom: 10px solid @button-negative-bg;
border-left: 18px solid @button-negative-bg;
}
/* Panels */
.panel {
margin: 0 0 21px;
}
.panel-content {
background-color: @panel-bg;
padding: 16px;
}
.panel-item {
padding: 0;
}
.panel-item p:last-of-type {
margin-bottom: 0;
padding-bottom: 0;
}
/* Promotions */
.promotion {
background-color: @promotion-bg;
border: 2px dashed @promotion-border-color;
margin: 0;
margin-bottom: 25px;
margin-top: 25px;
padding: 24px;
width: 100%;
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
-premailer-width: 100%;
}
.promotion h1 {
text-align: center;
}
.promotion p {
font-size: 15px;
text-align: center;
}
.promotion p:last-of-type {
margin-bottom: 0;
padding-bottom: 0;
}

View File

@@ -0,0 +1,122 @@
# ===================================
# Field Definitions
# ===================================
fields:
_mail_preview:
type: partial
path: field_mail_preview
secondaryTabs:
fields:
_section_background:
label: system::lang.mail_brand.fields._section_background
type: section
body_bg:
label: system::lang.mail_brand.fields.body_bg
type: colorpicker
availableColors: []
content_bg:
label: system::lang.mail_brand.fields.content_bg
type: colorpicker
availableColors: []
content_inner_bg:
label: system::lang.mail_brand.fields.content_inner_bg
type: colorpicker
availableColors: []
_section_buttons:
label: system::lang.mail_brand.fields._section_buttons
type: section
button_text_color:
label: system::lang.mail_brand.fields.button_text_color
type: colorpicker
availableColors: []
button_primary_bg:
label: system::lang.mail_brand.fields.button_primary_bg
type: colorpicker
availableColors: []
button_positive_bg:
label: system::lang.mail_brand.fields.button_positive_bg
type: colorpicker
availableColors: []
button_negative_bg:
label: system::lang.mail_brand.fields.button_negative_bg
type: colorpicker
availableColors: []
_section_type:
label: system::lang.mail_brand.fields._section_type
type: section
header_color:
label: system::lang.mail_brand.fields.header_color
type: colorpicker
availableColors: []
heading_color:
label: system::lang.mail_brand.fields.heading_color
type: colorpicker
availableColors: []
text_color:
label: system::lang.mail_brand.fields.text_color
type: colorpicker
availableColors: []
link_color:
label: system::lang.mail_brand.fields.link_color
type: colorpicker
availableColors: []
footer_color:
label: system::lang.mail_brand.fields.footer_color
type: colorpicker
availableColors: []
_section_borders:
label: system::lang.mail_brand.fields._section_borders
type: section
body_border_color:
label: system::lang.mail_brand.fields.body_border_color
type: colorpicker
availableColors: []
subcopy_border_color:
label: system::lang.mail_brand.fields.subcopy_border_color
type: colorpicker
availableColors: []
table_border_color:
label: system::lang.mail_brand.fields.table_border_color
type: colorpicker
availableColors: []
_section_components:
label: system::lang.mail_brand.fields._section_components
type: section
panel_bg:
label: system::lang.mail_brand.fields.panel_bg
type: colorpicker
availableColors: []
promotion_bg:
label: system::lang.mail_brand.fields.promotion_bg
type: colorpicker
availableColors: []
promotion_border_color:
label: system::lang.mail_brand.fields.promotion_border_color
type: colorpicker
availableColors: []

View File

@@ -0,0 +1,45 @@
# {{texts.heading}} 1
{{texts.paragraph|raw}}
## {{texts.heading}} 2
{% partial 'table' body %}
| {{texts.table.item}} | {{texts.table.description}} | {{texts.table.price}} |
|:------------- |:-------------:| --------:|
| {{texts.table.item}} 1 | {{texts.table.centered}} | $10 |
| {{texts.table.item}} 2 | {{texts.table.right_aligned}} | $20 |
{% endpartial %}
### {{texts.heading}} 3
{{texts.paragraph|raw}}
{% partial 'button' url='javascript:;' body %}
{{texts.buttons.primary}}
{% endpartial %}
{% partial 'button' type='positive' url='javascript:;' body %}
{{texts.buttons.positive}}
{% endpartial %}
{% partial 'button' type='negative' url='javascript:;' body %}
{{texts.buttons.negative}}
{% endpartial %}
{% partial 'panel' body %}
{{texts.panel}}
{% endpartial %}
{{texts.more}}
{% partial 'promotion' body %}
{{texts.promotion}}
{% endpartial %}
{{texts.thanks}},
{{ appName }}
{% partial 'subcopy' body %}
{{texts.subcopy}}
{% endpartial %}