breeze_cms 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/images/breeze/card_preview/faq_item.jpg +0 -0
- data/app/assets/images/breeze/section_preview/section_faq.jpg +0 -0
- data/app/assets/images/breeze/section_preview/section_half_slider.jpg +0 -0
- data/app/assets/stylesheets/breeze/breeze.css +396 -390
- data/app/assets/stylesheets/breeze/breeze.email.css +288 -283
- data/app/assets/stylesheets/breeze_tailwind_styles.css +5 -1
- data/app/controllers/breeze/images_controller.rb +29 -6
- data/app/controllers/breeze/pages_controller.rb +3 -10
- data/app/controllers/breeze/sections_controller.rb +1 -1
- data/app/controllers/breeze/view_controller.rb +6 -1
- data/app/helpers/breeze/images_helper.rb +11 -5
- data/app/helpers/breeze/options_helper.rb +1 -1
- data/app/helpers/breeze/view_helper.rb +25 -0
- data/app/models/breeze/active_yaml.rb +23 -0
- data/app/models/breeze/image.rb +30 -20
- data/app/models/breeze/section.rb +5 -0
- data/app/models/breeze/shared_base.rb +1 -1
- data/app/models/breeze/view_base.rb +11 -2
- data/app/views/breeze/images/_editor.haml +26 -14
- data/app/views/breeze/images/index.haml +6 -4
- data/app/views/breeze/images/show.haml +30 -12
- data/app/views/breeze/pages/show.haml +52 -62
- data/app/views/breeze/view/_form_section.haml +1 -1
- data/app/views/breeze/view/_section_faq.haml +29 -0
- data/app/views/breeze/view/_section_full_image.haml +1 -1
- data/app/views/breeze/view/_section_full_up.haml +1 -1
- data/app/views/breeze/view/_section_half_image.haml +1 -1
- data/app/views/breeze/view/_section_half_slider.haml +67 -0
- data/app/views/breeze/view/_section_large_image.haml +1 -1
- data/app/views/breeze/view/_section_slider.haml +33 -14
- data/app/views/breeze/view/_section_small_image.haml +1 -1
- data/app/views/breeze/view/cards/_card_normal_round.haml +1 -1
- data/app/views/breeze/view/cards/_faq_item.haml +9 -0
- data/app/views/breeze/view/page.haml +2 -0
- data/config/breeze/card_styles.yml +41 -31
- data/config/breeze/option_definitions.yml +14 -2
- data/config/breeze/page_styles.yml +5 -2
- data/config/breeze/section_styles.yml +50 -0
- data/config/initializers/simple_form_tailwind.rb +148 -0
- data/lib/breeze/engine.rb +3 -4
- data/lib/breeze/version.rb +1 -1
- metadata +32 -43
- data/config/initializers/simple_form.rb +0 -212
@@ -1,83 +1,73 @@
|
|
1
1
|
- @page.sections.each do |section|
|
2
2
|
= render_section( section )
|
3
3
|
|
4
|
-
.mx-
|
4
|
+
.grid.grid-cols-4.mx-20.md:mx-12.gap-8.mt-8
|
5
5
|
.text-xl.font-bold.text-gray-900
|
6
6
|
= @page.type.capitalize
|
7
7
|
= ":"
|
8
|
-
.text-xl.font-bold.text-gray-900
|
9
8
|
=@page.name
|
10
|
-
|
11
|
-
|
9
|
+
-unless @page.redirects.blank?
|
10
|
+
.mt-4
|
11
|
+
Page redirects from
|
12
|
+
= @page.redirects
|
13
|
+
%div
|
14
|
+
%button.button.change
|
15
|
+
= link_to 'Section details', breeze.page_sections_path(@page.id)
|
12
16
|
|
13
17
|
= form_tag( breeze.section_new_path(@page.id), method: :post ) do
|
14
|
-
%button.button.
|
18
|
+
%button.button.action{type: :submit} New Section
|
15
19
|
|
16
20
|
.text-xl
|
17
21
|
Edited
|
18
22
|
= distance_of_time_in_words_to_now(@page.updated_at)
|
19
23
|
ago
|
20
|
-
.flex.gap-4.justify-center.m-20
|
21
|
-
.grid.grid-cols-5
|
22
|
-
.text.font-bold Section
|
23
|
-
.text.font-bold Cards
|
24
|
-
.text.font-bold Translations
|
25
|
-
.text.font-bold Updated
|
26
|
-
.text.font-bold Actions
|
27
|
-
- @page.sections.each do |section |
|
28
|
-
.span
|
29
|
-
=link_to( breeze.section_path(section.id)) do
|
30
|
-
#{section.index} : #{section.header}
|
31
|
-
.text
|
32
|
-
=link_to breeze.section_cards_path(section.id) do
|
33
|
-
#{section.cards.length} Cards
|
34
|
-
.text
|
35
|
-
= link_to breeze.translation_path(@page.id) do
|
36
|
-
%button.button.action
|
37
|
-
=section.missing_translations
|
38
|
-
missing
|
39
|
-
.text
|
40
|
-
= updated_by(section)
|
41
|
-
.flex
|
42
|
-
= form_tag( breeze.section_new_path(@page.id), method: :post ) do
|
43
|
-
%button.button.change.mr-3{type: :submit} New
|
44
|
-
= link_to breeze.section_path(section.id) do
|
45
|
-
%button.button.action Edit
|
46
|
-
.p-2
|
47
|
-
=link_to(breeze.section_move_path(section.id , dir: :down)) do
|
48
|
-
%svg.w-6.h-6{:fill => "none", :stroke => "currentColor", "stroke-width" => "1.5", :viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
49
|
-
%path{:d => "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3", "stroke-linecap" => "round", "stroke-linejoin" => "round"}
|
50
|
-
.p-2
|
51
|
-
=link_to(breeze.section_move_path(section.id , dir: :up)) do
|
52
|
-
%svg.w-6.h-6{:fill => "none", :stroke => "currentColor", "stroke-width" => "1.5", :viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
53
|
-
%path{:d => "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18", "stroke-linecap" => "round", "stroke-linejoin" => "round"}
|
54
24
|
|
55
|
-
.
|
56
|
-
.
|
57
|
-
|
58
|
-
|
59
|
-
%h4.text-lg.font-bold Name
|
60
|
-
= text_field_tag( :name , @page.name, class: "w-full rounded-lg border-gray-200 p-4 pr-12 text-sm shadow-sm")
|
61
|
-
%button.button.change.mt-4{type: :submit} Update name
|
25
|
+
= form_tag( breeze.page_path(@page.id) , {method: :patch , class: "mx-auto mt-8 mb-0 max-w space-y-4" } ) do
|
26
|
+
%h4.text-lg.font-bold Name
|
27
|
+
= text_field_tag( :name , @page.name, class: "w-full rounded-lg border-gray-200 p-4 text-sm shadow-sm")
|
28
|
+
%button.button.change.mt-4{type: :submit} Update name
|
62
29
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
30
|
+
- @page.option_definitions.each do |option|
|
31
|
+
= form_tag( breeze.page_path(@page.id) , {method: :patch , class: "mx-auto mt-8 mb-0 max-w space-y-4" } ) do
|
32
|
+
=render "/breeze/sections/option_form_#{option.type}" , section: @page , option: option
|
33
|
+
%button.button.change.mt-4{type: :submit} Update #{option.name.camelcase}
|
67
34
|
|
68
|
-
|
69
|
-
|
70
|
-
%button.button.remove{type: :submit} Delete Page
|
35
|
+
= form_tag( breeze.page_path(@page.id) , {method: :delete } ) do
|
36
|
+
%button.button.mt-40.ml-10.remove{type: :submit} Delete Page
|
71
37
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
38
|
+
.grid.grid-cols-5.gap-8.m-20
|
39
|
+
.text.font-bold Section
|
40
|
+
.text.font-bold Actions
|
41
|
+
.text.font-bold Translations
|
42
|
+
.text.font-bold Cards
|
43
|
+
.text.font-bold Updated
|
44
|
+
- @page.sections.each do |section |
|
45
|
+
.span
|
46
|
+
=link_to( breeze.section_path(section.id)) do
|
47
|
+
#{section.index} : #{section.header}
|
48
|
+
.flex
|
49
|
+
= form_tag( breeze.section_new_path(@page.id), method: :post ) do
|
50
|
+
%button.button.change.mr-3{type: :submit} New
|
51
|
+
= link_to breeze.section_path(section.id) do
|
52
|
+
%button.button.action Edit
|
53
|
+
.p-2
|
54
|
+
=link_to(breeze.section_move_path(section.id , dir: :down)) do
|
55
|
+
%svg.w-6.h-6{:fill => "none", :stroke => "currentColor", "stroke-width" => "1.5", :viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
56
|
+
%path{:d => "M15.75 17.25L12 21m0 0l-3.75-3.75M12 21V3", "stroke-linecap" => "round", "stroke-linejoin" => "round"}
|
57
|
+
.p-2
|
58
|
+
=link_to(breeze.section_move_path(section.id , dir: :up)) do
|
59
|
+
%svg.w-6.h-6{:fill => "none", :stroke => "currentColor", "stroke-width" => "1.5", :viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
60
|
+
%path{:d => "M8.25 6.75L12 3m0 0l3.75 3.75M12 3v18", "stroke-linecap" => "round", "stroke-linejoin" => "round"}
|
61
|
+
.text
|
62
|
+
= link_to breeze.translation_path(@page.id) do
|
63
|
+
%button.button.action
|
64
|
+
=section.missing_translations
|
65
|
+
missing
|
66
|
+
.text
|
67
|
+
=link_to breeze.section_cards_path(section.id) do
|
68
|
+
#{section.cards.length} Cards
|
69
|
+
.text
|
70
|
+
= updated_by(section)
|
81
71
|
|
82
72
|
:javascript
|
83
73
|
var sections = #{ render( partial: "sections" , formats: :json).html_safe }
|
@@ -5,7 +5,7 @@
|
|
5
5
|
.mt-4.text-lg.pt-10{ prose_classes }
|
6
6
|
= markdown(section,current_lang)
|
7
7
|
.flex.items-center.justify-start.m-10.md:m-20
|
8
|
-
.mx-auto.w-full.max-w-4xl{class: "max-w-[
|
8
|
+
.mx-auto.w-full.max-w-4xl{class: "max-w-[90%]"}
|
9
9
|
= form_tag( main_app.post_form_path , {class: "mt-10" }) do
|
10
10
|
- challenge = rand(8)
|
11
11
|
= hidden_field_tag :section_id , section.id
|
@@ -0,0 +1,29 @@
|
|
1
|
+
%section.m-6.md:m-12.lg:m-20{ options(section , :background , :text_color), id: section.type_id}
|
2
|
+
.flex.justify-center
|
3
|
+
.px-4.py-4.md:py-10.lg:py-16{ options(section , :text_align)}
|
4
|
+
%h1.section_header.text-2xl.font-bold.tracking-tight.sm:text-4xl
|
5
|
+
= section.header_text(current_lang)
|
6
|
+
- unless section.text.blank?
|
7
|
+
.section_text.text-lg.pt-10{ prose_classes }
|
8
|
+
= markdown(section , current_lang)
|
9
|
+
- template = "breeze/view/cards/" + section.card_template
|
10
|
+
.max-w-3xl.mx-auto.mt-8.space-y-4.md:mt-16
|
11
|
+
- section.cards.each_with_index do |card, index|
|
12
|
+
= render( template , card: card , index: index + 1)
|
13
|
+
|
14
|
+
:javascript
|
15
|
+
// JavaScript to toggle the answers and rotate the arrows
|
16
|
+
document.querySelectorAll('[id^="question"]').forEach(function(button, index) {
|
17
|
+
button.addEventListener('click', function() {
|
18
|
+
var answer = document.getElementById('answer' + (index + 1));
|
19
|
+
var arrow = document.getElementById('arrow' + (index + 1));
|
20
|
+
|
21
|
+
if (answer.style.display === 'none' || answer.style.display === '') {
|
22
|
+
answer.style.display = 'block';
|
23
|
+
arrow.style.transform = 'rotate(0deg)';
|
24
|
+
} else {
|
25
|
+
answer.style.display = 'none';
|
26
|
+
arrow.style.transform = 'rotate(-180deg)';
|
27
|
+
}
|
28
|
+
});
|
29
|
+
});
|
@@ -0,0 +1,67 @@
|
|
1
|
+
%section.overflow-hidden.grid.grid-cols-1.m-5.md:m-12.lg:m-20.md:grid-cols-2{id: section.type_id}
|
2
|
+
%div{ order_option(section)}
|
3
|
+
.swiper{ class: "swiper-#{section.id}"}
|
4
|
+
.swiper-wrapper
|
5
|
+
- template = "breeze/view/cards/" + section.card_template
|
6
|
+
- section.cards.each do |card|
|
7
|
+
.swiper-slide{ column_option(section)}
|
8
|
+
= render( template , card: card)
|
9
|
+
|
10
|
+
.swiper-pagination
|
11
|
+
.swiper-button-prev
|
12
|
+
.swiper-button-next
|
13
|
+
|
14
|
+
.p-8.md:p-12.lg:px-16.lg:py-24{ background_option(section)}
|
15
|
+
.mx-auto.max-w-xl{options(section , :text_align , :text_color)}
|
16
|
+
%h2.section_header.text-2xl.font-bold.md:text-4xl
|
17
|
+
= section.header_text(current_lang)
|
18
|
+
.section_text.mt-8{ prose_classes }
|
19
|
+
= markdown(section,current_lang)
|
20
|
+
=view_button(section , "my-4")
|
21
|
+
|
22
|
+
%script{:src => "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"}
|
23
|
+
|
24
|
+
:javascript
|
25
|
+
var breaks = #{slider_columns_option(section).to_json};
|
26
|
+
document.addEventListener("DOMContentLoaded", function(event) {
|
27
|
+
|
28
|
+
function initSwiper(){
|
29
|
+
const swiper = new Swiper(".swiper-#{section.id}", {
|
30
|
+
loop: true,
|
31
|
+
speed: 1500,
|
32
|
+
breakpoints: breaks ,
|
33
|
+
autoplay: true,
|
34
|
+
pagination: {
|
35
|
+
el: '.swiper-pagination',
|
36
|
+
},
|
37
|
+
navigation: {
|
38
|
+
nextEl: '.swiper-button-next',
|
39
|
+
prevEl: '.swiper-button-prev',
|
40
|
+
},
|
41
|
+
});
|
42
|
+
}
|
43
|
+
|
44
|
+
// Intersection Observer to detect when the element is in view
|
45
|
+
const observer = new IntersectionObserver((entries) => {
|
46
|
+
entries.forEach(entry => {
|
47
|
+
if (entry.isIntersecting) {
|
48
|
+
initSwiper(); // Initialize Swiper when the element is in view
|
49
|
+
observer.unobserve(entry.target); // Stop observing after initialization
|
50
|
+
}
|
51
|
+
});
|
52
|
+
});
|
53
|
+
|
54
|
+
// Start observing the Swiper container
|
55
|
+
const swiperContainer = document.querySelector(".swiper-#{section.id}");
|
56
|
+
observer.observe(swiperContainer);
|
57
|
+
|
58
|
+
});
|
59
|
+
|
60
|
+
var head = document.getElementsByTagName("head")[0];
|
61
|
+
cssLink = document.createElement("link");
|
62
|
+
cssLink.href = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css";
|
63
|
+
cssLink.rel="stylesheet";
|
64
|
+
cssLink.id="dynamic-css";
|
65
|
+
cssLink.media="screen";
|
66
|
+
cssLink.type="text/css";
|
67
|
+
head.appendChild(cssLink);
|
@@ -6,8 +6,8 @@
|
|
6
6
|
= section.header_text(current_lang)
|
7
7
|
.section_text.mt-4.text-lg.pt-10{ prose_classes }
|
8
8
|
= markdown(section,current_lang)
|
9
|
-
=view_button(section , "my-
|
10
|
-
.swiper
|
9
|
+
=view_button(section , "my-4")
|
10
|
+
.swiper{ class: "swiper-#{section.id}"}
|
11
11
|
.swiper-wrapper
|
12
12
|
- template = "breeze/view/cards/" + section.card_template
|
13
13
|
- section.cards.each do |card|
|
@@ -23,19 +23,38 @@
|
|
23
23
|
:javascript
|
24
24
|
var breaks = #{slider_columns_option(section).to_json};
|
25
25
|
document.addEventListener("DOMContentLoaded", function(event) {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
|
27
|
+
function initSwiper(){
|
28
|
+
const swiper = new Swiper(".swiper-#{section.id}", {
|
29
|
+
loop: true,
|
30
|
+
speed: 1500,
|
31
|
+
breakpoints: breaks ,
|
32
|
+
autoplay: true,
|
33
|
+
pagination: {
|
34
|
+
el: '.swiper-pagination',
|
35
|
+
},
|
36
|
+
navigation: {
|
37
|
+
nextEl: '.swiper-button-next',
|
38
|
+
prevEl: '.swiper-button-prev',
|
39
|
+
},
|
40
|
+
});
|
41
|
+
}
|
42
|
+
|
43
|
+
|
44
|
+
// Intersection Observer to detect when the element is in view
|
45
|
+
const observer = new IntersectionObserver((entries) => {
|
46
|
+
entries.forEach(entry => {
|
47
|
+
if (entry.isIntersecting) {
|
48
|
+
initSwiper(); // Initialize Swiper when the element is in view
|
49
|
+
observer.unobserve(entry.target); // Stop observing after initialization
|
50
|
+
}
|
51
|
+
});
|
38
52
|
});
|
53
|
+
|
54
|
+
// Start observing the Swiper container
|
55
|
+
const swiperContainer = document.querySelector(".swiper-#{section.id}");
|
56
|
+
observer.observe(swiperContainer);
|
57
|
+
|
39
58
|
});
|
40
59
|
|
41
60
|
var head = document.getElementsByTagName("head")[0];
|
@@ -3,6 +3,6 @@
|
|
3
3
|
%h3.card_header.p-5.text-2xl.bg-gray-100.text-black.font-bold{ text_align_option(card)}= card.header_text(current_lang)
|
4
4
|
%div.h-full{background_option(card)}
|
5
5
|
.p-5{options(card , :text_align , :text_color)}
|
6
|
-
.card_text.m-2.text-sm.leading-relaxed
|
6
|
+
.card_text.m-2.text-sm.leading-relaxed{ prose_classes }
|
7
7
|
= markdown(card,current_lang)
|
8
8
|
=view_button(card , "my-2")
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.transition-all.duration-200.bg-white.border.border-gray-200.shadow-lg.cursor-pointer.hover:bg-gray-50{options(card, :text_color)}
|
2
|
+
%button.flex.items-center.justify-between.w-full.px-4.py-5.sm:p-6{"data-state" => "closed",
|
3
|
+
:type => "button" , id: "question#{index}" }
|
4
|
+
%span.flex.text-lg.font-semibold.text-black= card.header_text(current_lang)
|
5
|
+
%svg.w-6.h-6.text-gray-400{fill: :none, stroke: :currentColor, id: "arrow#{index}",
|
6
|
+
:viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
7
|
+
%path{:d => "M19 9l-7 7-7-7", "stroke-linecap" => "round", "stroke-linejoin" => "round", "stroke-width" => "2"}
|
8
|
+
.px-4.pb-5.sm:px-6.sm:pb-6{style: "display:none" , id: "answer#{index}"}
|
9
|
+
%p= markdown(card,current_lang)
|
@@ -1,4 +1,35 @@
|
|
1
1
|
---
|
2
|
+
- :template: card_normal_round
|
3
|
+
:header: Standard card with rounded look
|
4
|
+
:text: Otherwise quite similar to standard. But there is gap under the image.
|
5
|
+
Images can be wide or square, for 2 column 800 wide,
|
6
|
+
3 column 600 , 4 column 400
|
7
|
+
|
8
|
+
:fields:
|
9
|
+
- header
|
10
|
+
- text
|
11
|
+
:options:
|
12
|
+
- background
|
13
|
+
- text_color
|
14
|
+
- text_align
|
15
|
+
- button_link
|
16
|
+
- button_text
|
17
|
+
- :template: card_normal_square
|
18
|
+
:header: Standard card with square image
|
19
|
+
:text: Image, header, text, normal stuff. No margin between image and text.
|
20
|
+
Text alignment option. Also option to turn upside down with order.
|
21
|
+
Images can be wide or square, for 2 column 800 wide,
|
22
|
+
3 column 600 , 4 column 400
|
23
|
+
:fields:
|
24
|
+
- header
|
25
|
+
- text
|
26
|
+
:options:
|
27
|
+
- background
|
28
|
+
- text_color
|
29
|
+
- text_align
|
30
|
+
- order
|
31
|
+
- button_link
|
32
|
+
- button_text
|
2
33
|
- :template: card_full_image
|
3
34
|
:header: Full background
|
4
35
|
:text: Text in box on top of the imag. Adjustable background
|
@@ -36,22 +67,6 @@
|
|
36
67
|
- text_color
|
37
68
|
- order
|
38
69
|
- text_align
|
39
|
-
- :template: card_normal_square
|
40
|
-
:header: Standard card with square image
|
41
|
-
:text: Image, header, text, normal stuff. No margin between image and text.
|
42
|
-
Text alignment option. Also option to turn upside down with order.
|
43
|
-
Images can be wide or square, for 2 column 800 wide,
|
44
|
-
3 column 600 , 4 column 400
|
45
|
-
:fields:
|
46
|
-
- header
|
47
|
-
- text
|
48
|
-
:options:
|
49
|
-
- background
|
50
|
-
- text_color
|
51
|
-
- text_align
|
52
|
-
- order
|
53
|
-
- button_link
|
54
|
-
- button_text
|
55
70
|
- :template: card_wide_square
|
56
71
|
:header: Sideway card with square image
|
57
72
|
:text: Much like standard square card, just turned sideways.
|
@@ -98,21 +113,6 @@
|
|
98
113
|
- text_align
|
99
114
|
- button_link
|
100
115
|
- button_text
|
101
|
-
- :template: card_normal_round
|
102
|
-
:header: Standard card with rounded look
|
103
|
-
:text: Otherwise quite similar to standard. But there is gap under the image.
|
104
|
-
Images can be wide or square, for 2 column 800 wide,
|
105
|
-
3 column 600 , 4 column 400
|
106
|
-
|
107
|
-
:fields:
|
108
|
-
- header
|
109
|
-
- text
|
110
|
-
:options:
|
111
|
-
- background
|
112
|
-
- text_color
|
113
|
-
- text_align
|
114
|
-
- button_link
|
115
|
-
- button_text
|
116
116
|
- :template: form_field
|
117
117
|
:header: A single field in a form
|
118
118
|
:text: The header is the Name of the field, the description
|
@@ -123,3 +123,13 @@
|
|
123
123
|
:options:
|
124
124
|
- compulsory
|
125
125
|
- form_type
|
126
|
+
- :template: faq_item
|
127
|
+
:header: A question answer in an faq section
|
128
|
+
:text: The header is the qustion, the description
|
129
|
+
is the answer. (No image)
|
130
|
+
:fields:
|
131
|
+
- header
|
132
|
+
- text
|
133
|
+
:options:
|
134
|
+
- background
|
135
|
+
- text_color
|
@@ -88,8 +88,8 @@
|
|
88
88
|
:values: left center right
|
89
89
|
:default: center
|
90
90
|
:id: 17
|
91
|
-
- :name:
|
92
|
-
:description:
|
91
|
+
- :name: title
|
92
|
+
:description: Title for page
|
93
93
|
:values:
|
94
94
|
:default:
|
95
95
|
:id: 18
|
@@ -127,3 +127,15 @@
|
|
127
127
|
:values: h-8 h-16 h-24 h-32 h-40 h-48 h-64 h-96
|
128
128
|
:default: h-24
|
129
129
|
:id: 24
|
130
|
+
- :name: description
|
131
|
+
:description: Meta description for page
|
132
|
+
:values:
|
133
|
+
:default:
|
134
|
+
:id: 25
|
135
|
+
- :name: main_image
|
136
|
+
:description: Image that should be shown in posts (fb)
|
137
|
+
Should be the number of a breeze picture,
|
138
|
+
ie what is in the url eg 381 for /breeze/images/381
|
139
|
+
:values:
|
140
|
+
:default:
|
141
|
+
:id: 26
|
@@ -1,9 +1,12 @@
|
|
1
1
|
---
|
2
2
|
- :type: page
|
3
3
|
:description: A general page, may contain anykind of section.
|
4
|
-
No restrictions of any kind.
|
4
|
+
No restrictions of any kind. Title goes to the page title and
|
5
|
+
description to meta.
|
5
6
|
:options:
|
6
|
-
-
|
7
|
+
- title
|
8
|
+
- description
|
9
|
+
- main_image
|
7
10
|
- :type: blog
|
8
11
|
:description: An news or similar article.
|
9
12
|
:section_template: blog_header
|
@@ -30,6 +30,26 @@
|
|
30
30
|
- item_align
|
31
31
|
- button_link
|
32
32
|
- button_text
|
33
|
+
- :template: section_half_slider
|
34
|
+
:header: Half text, half slider with optional header with text
|
35
|
+
:text: Header. text button on the right (constant) slider left.
|
36
|
+
Slider slides any (number) of cards.
|
37
|
+
Columns means how many slides are visible on desktop.
|
38
|
+
Optional header text on top of the slider (like the section with header/text)
|
39
|
+
:cards: true
|
40
|
+
:fields:
|
41
|
+
- header
|
42
|
+
- text
|
43
|
+
:options:
|
44
|
+
- slider_columns
|
45
|
+
- order
|
46
|
+
- background
|
47
|
+
- text_color
|
48
|
+
- margin
|
49
|
+
- text_align
|
50
|
+
- item_align
|
51
|
+
- button_link
|
52
|
+
- button_text
|
33
53
|
- :template: section_feature
|
34
54
|
:header: Feature section with 2 column,
|
35
55
|
:text: A split header with two column layout on the right.
|
@@ -193,3 +213,33 @@
|
|
193
213
|
- text_columns
|
194
214
|
- background
|
195
215
|
- text_color
|
216
|
+
- :template: section_faq
|
217
|
+
:header: Faq section with Cards as questions
|
218
|
+
:text: A header with text and collapsable faq layout.
|
219
|
+
Only works proper with faq_item card style
|
220
|
+
:cards: true
|
221
|
+
:fields:
|
222
|
+
- header
|
223
|
+
- text
|
224
|
+
:options:
|
225
|
+
- background
|
226
|
+
- text_color
|
227
|
+
- text_align
|
228
|
+
- :template: section_slider
|
229
|
+
:header: Slider with optional header with text
|
230
|
+
:text: Slider slides any (number) of cards. Columns means how many
|
231
|
+
slides are visible on desktop.
|
232
|
+
Optional header text on top of the slider (like the section with header/text)
|
233
|
+
:cards: true
|
234
|
+
:fields:
|
235
|
+
- header
|
236
|
+
- text
|
237
|
+
:options:
|
238
|
+
- slider_columns
|
239
|
+
- background
|
240
|
+
- text_color
|
241
|
+
- margin
|
242
|
+
- text_align
|
243
|
+
- item_align
|
244
|
+
- button_link
|
245
|
+
- button_text
|