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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/breeze/card_preview/faq_item.jpg +0 -0
  3. data/app/assets/images/breeze/section_preview/section_faq.jpg +0 -0
  4. data/app/assets/images/breeze/section_preview/section_half_slider.jpg +0 -0
  5. data/app/assets/stylesheets/breeze/breeze.css +396 -390
  6. data/app/assets/stylesheets/breeze/breeze.email.css +288 -283
  7. data/app/assets/stylesheets/breeze_tailwind_styles.css +5 -1
  8. data/app/controllers/breeze/images_controller.rb +29 -6
  9. data/app/controllers/breeze/pages_controller.rb +3 -10
  10. data/app/controllers/breeze/sections_controller.rb +1 -1
  11. data/app/controllers/breeze/view_controller.rb +6 -1
  12. data/app/helpers/breeze/images_helper.rb +11 -5
  13. data/app/helpers/breeze/options_helper.rb +1 -1
  14. data/app/helpers/breeze/view_helper.rb +25 -0
  15. data/app/models/breeze/active_yaml.rb +23 -0
  16. data/app/models/breeze/image.rb +30 -20
  17. data/app/models/breeze/section.rb +5 -0
  18. data/app/models/breeze/shared_base.rb +1 -1
  19. data/app/models/breeze/view_base.rb +11 -2
  20. data/app/views/breeze/images/_editor.haml +26 -14
  21. data/app/views/breeze/images/index.haml +6 -4
  22. data/app/views/breeze/images/show.haml +30 -12
  23. data/app/views/breeze/pages/show.haml +52 -62
  24. data/app/views/breeze/view/_form_section.haml +1 -1
  25. data/app/views/breeze/view/_section_faq.haml +29 -0
  26. data/app/views/breeze/view/_section_full_image.haml +1 -1
  27. data/app/views/breeze/view/_section_full_up.haml +1 -1
  28. data/app/views/breeze/view/_section_half_image.haml +1 -1
  29. data/app/views/breeze/view/_section_half_slider.haml +67 -0
  30. data/app/views/breeze/view/_section_large_image.haml +1 -1
  31. data/app/views/breeze/view/_section_slider.haml +33 -14
  32. data/app/views/breeze/view/_section_small_image.haml +1 -1
  33. data/app/views/breeze/view/cards/_card_normal_round.haml +1 -1
  34. data/app/views/breeze/view/cards/_faq_item.haml +9 -0
  35. data/app/views/breeze/view/page.haml +2 -0
  36. data/config/breeze/card_styles.yml +41 -31
  37. data/config/breeze/option_definitions.yml +14 -2
  38. data/config/breeze/page_styles.yml +5 -2
  39. data/config/breeze/section_styles.yml +50 -0
  40. data/config/initializers/simple_form_tailwind.rb +148 -0
  41. data/lib/breeze/engine.rb +3 -4
  42. data/lib/breeze/version.rb +1 -1
  43. metadata +32 -43
  44. 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-6.md:mx-12.mx-20.flex.h-16.items-center.gap-16
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
- %strong.rounded.bg-green-100.px-4.py-2.text-lg.font-medium.text-green-700{:class => "py-1.5"}
11
- = link_to 'Section details', breeze.page_sections_path(@page.id)
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.change.mr-3{type: :submit} New Section
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
- .flex.flex-col
56
- .basis-80
57
- = form_tag( breeze.page_path(@page.id) , {method: :patch , class: "mx-auto mt-8 mb-0 max-w space-y-4" } ) do
58
- %label.block
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
- -unless @page.redirects.blank?
64
- .mt-4
65
- Page redirects from
66
- = @page.redirects
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
- .relative.block.delete_page.mt-8
69
- = form_tag( breeze.page_path(@page.id) , {method: :delete } ) do
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
- .basis-80.grow.options
73
- %h3.mt-4.text-lg.font-bold Options
74
- = form_tag( breeze.page_path(@page.id) , {method: :patch , class: "mx-auto mt-8 mb-0 max-w space-y-4" } ) do
75
- - @page.option_definitions.each do |option|
76
- =render "/breeze/sections/option_form_#{option.type}" , section: @page , option: option
77
- -if @page.option_definitions.empty?
78
- %p No options
79
- -else
80
- %button.button.change.mt-4{type: :submit} Update Options
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-[50%]"}
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
+ });
@@ -7,4 +7,4 @@
7
7
  = section.header_text(current_lang)
8
8
  .section_text.sm:mt-4.text-2xl{ prose_classes }
9
9
  = markdown(section,current_lang)
10
- =view_button(section , "my-2")
10
+ =view_button(section , "my-4")
@@ -5,4 +5,4 @@
5
5
  = section.header_text(current_lang)
6
6
  .section_text.mt-4.text-lg.pt-10{ prose_classes }
7
7
  = markdown(section,current_lang)
8
- =view_button(section , "my-2")
8
+ =view_button(section , "my-4")
@@ -7,4 +7,4 @@
7
7
  = section.header_text(current_lang)
8
8
  .section_text.mt-8{ prose_classes }
9
9
  = markdown(section,current_lang)
10
- =view_button(section , "my-2")
10
+ =view_button(section , "my-4")
@@ -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);
@@ -7,4 +7,4 @@
7
7
  %h2.section_header.text-4xl.font-bold.text-center.mb-4.lg:mb-8= section.header_text(current_lang)
8
8
  .section_text.mt-3{ prose_classes }
9
9
  = markdown(section,current_lang)
10
- =view_button(section , "my-2")
10
+ =view_button(section , "my-4")
@@ -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-2")
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
- const swiper = new Swiper('.swiper', {
27
- loop: true,
28
- speed: 1500,
29
- breakpoints: breaks ,
30
- autoplay: true,
31
- pagination: {
32
- el: '.swiper-pagination',
33
- },
34
- navigation: {
35
- nextEl: '.swiper-button-next',
36
- prevEl: '.swiper-button-prev',
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];
@@ -5,4 +5,4 @@
5
5
  %h2.section_header.text-4xl.font-bold.text-left.mb-4.lg:mb-8{text_align_option(section)}= section.header_text(current_lang)
6
6
  .section_text.mt-3{ prose_classes }
7
7
  = markdown(section,current_lang)
8
- =view_button(section , "my-2")
8
+ =view_button(section , "my-4")
@@ -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.line-clamp-3{ prose_classes }
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,2 +1,4 @@
1
+ - content_for(:title , @title)
2
+ - content_for(:description , @description)
1
3
  - @page.sections.each do |section|
2
4
  = render_section( section )
@@ -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: meta
92
- :description: Meta tag for page
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. No options either.
4
+ No restrictions of any kind. Title goes to the page title and
5
+ description to meta.
5
6
  :options:
6
- - meta
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