coveragebook_components 0.5.5 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/build/coco/app.css +400 -70
  3. data/app/assets/build/coco/app.js +24 -5
  4. data/app/assets/build/coco/book.css +347 -62
  5. data/app/assets/build/coco/book.js +3 -2
  6. data/app/assets/build/coco/img/slides/one-col-media-layout.svg +3 -0
  7. data/app/assets/build/coco/img/slides/one-col-text-layout.svg +3 -0
  8. data/app/assets/build/coco/img/slides/one-col-title-layout.svg +4 -0
  9. data/app/assets/build/coco/img/slides/two-col-media-layout.svg +3 -0
  10. data/app/assets/build/coco/img/slides/two-col-mixed-layout.svg +5 -0
  11. data/app/assets/build/coco/img/slides/two-col-text-layout.svg +3 -0
  12. data/app/assets/build/coco/img/test/cb-logo.svg +8 -0
  13. data/app/assets/build/coco/img/test/slides/slide-bg.jpg +0 -0
  14. data/app/assets/build/coco/img/test/slides/slide-foreground-landscape.jpg +0 -0
  15. data/app/assets/build/coco/img/test/slides/slide-foreground-portrait.jpg +0 -0
  16. data/app/assets/img/slides/one-col-media-layout.svg +3 -0
  17. data/app/assets/img/slides/one-col-text-layout.svg +3 -0
  18. data/app/assets/img/slides/one-col-title-layout.svg +4 -0
  19. data/app/assets/img/slides/two-col-media-layout.svg +3 -0
  20. data/app/assets/img/slides/two-col-mixed-layout.svg +5 -0
  21. data/app/assets/img/slides/two-col-text-layout.svg +3 -0
  22. data/app/assets/img/test/cb-logo.svg +8 -0
  23. data/app/assets/img/test/slides/slide-bg.jpg +0 -0
  24. data/app/assets/img/test/slides/slide-foreground-landscape.jpg +0 -0
  25. data/app/assets/img/test/slides/slide-foreground-portrait.jpg +0 -0
  26. data/app/assets/js/libs/alpine/plugins/dropdown.js +1 -0
  27. data/app/components/coco/app/elements/button/button.css +10 -1
  28. data/app/components/coco/app/elements/button/button.rb +4 -0
  29. data/app/components/coco/app/elements/button_group/button_group.css +19 -0
  30. data/app/components/coco/app/elements/button_group/button_group.rb +10 -0
  31. data/app/components/coco/app/elements/image_picker_button/image_picker_button.rb +0 -20
  32. data/app/components/coco/app/elements/layout_picker_button/layout_picker_button.css +74 -0
  33. data/app/components/coco/app/elements/layout_picker_button/layout_picker_button.html.erb +31 -0
  34. data/app/components/coco/app/elements/layout_picker_button/layout_picker_button.js +17 -0
  35. data/app/components/coco/app/elements/layout_picker_button/layout_picker_button.rb +37 -0
  36. data/app/components/coco/base/button/button.rb +0 -5
  37. data/app/components/coco/base/svg/svg.html.erb +1 -0
  38. data/app/components/coco/base/svg/svg.rb +29 -0
  39. data/app/components/coco/book/blocks/slides/editable_slide/editable_slide.css +243 -37
  40. data/app/components/coco/book/blocks/slides/editable_slide/editable_slide.html.erb +30 -12
  41. data/app/components/coco/book/blocks/slides/editable_slide/editable_slide.rb +28 -1
  42. data/app/components/coco/concerns/acts_as_button_group.rb +5 -0
  43. data/app/helpers/coco/app_helper.rb +4 -0
  44. data/app/helpers/coco/base_helper.rb +4 -0
  45. data/lib/coco/options/group.rb +1 -34
  46. data/lib/coco/options/option.rb +0 -13
  47. data/lib/coco.rb +1 -1
  48. metadata +29 -7
  49. data/app/assets/build/coco/img/slide-bg.jpg +0 -0
  50. data/app/assets/img/slide-bg.jpg +0 -0
  51. data/config/credentials/production.key +0 -1
  52. data/config/credentials/production.yml.enc +0 -1
@@ -1,40 +1,46 @@
1
1
  @layer components {
2
2
  [data-coco][data-component="book-editable-slide"] {
3
3
  /*
4
- * x-padding at max (1480px): 240px / 16.2%
5
- * x-padding at min (320px): 16.2% x 320px = 52px
4
+ * slide-padding-md at max (1480px): 240px (16.2%)
5
+ * slide-padding-md at min (320px): 16.2% x 320px = 52px
6
6
  */
7
- --x-padding: max(38px, clamp(52px, 16.2cqw, 240px));
7
+ --slide-padding-lg: max(38px, clamp(52px, 16.2cqw, 240px));
8
8
 
9
9
  /*
10
- * y-padding at max (1480px): 80px / 5.4%
11
- * y-padding at min (320px): 5.4% x 320px = 17px
10
+ * slide-padding-md at max (1480px): 120px (8.1%)
11
+ * slide-padding-md at min (320px): 8.1% x 320px = 26px
12
12
  */
13
- --y-padding: max(38px, clamp(17px, 5.4cqw, 80px));
13
+ --slide-padding-md: max(24px, clamp(26px, 8.1cqw, 120px));
14
14
 
15
15
  /*
16
- * Title font size at max (1480px): 80px / 5.4%
17
- * Title font size at min (320px): 5.4% x 320px = 17px
18
- * Text font size at reflow (700px): 35px
16
+ * slide-padding-sm at max (1480px): 80px (5.4%)
17
+ * slide-padding-sm at min (320px): 5.4% x 320px = 17px
18
+ */
19
+ --slide-padding-sm: max(24px, clamp(17px, 5.4cqw, 80px));
20
+
21
+ /*
22
+ * Small title font size at max (1480px): 64px (4.3%)
23
+ * Small title font size at min (320px): 4.3% x 320px = 13.8px
19
24
  */
20
25
  --title-font-size: max(
21
- 35px,
22
- clamp(17px, 5.4cqw, theme(fontSize.display-2))
26
+ 32px,
27
+ clamp(13.8px, 4.3cqw, theme(fontSize.display-3))
23
28
  );
24
29
 
25
30
  /*
26
- * Text font size at max (1480px): 32px / 2.16%
27
- * Text font size at min (320px): 2.16% x 320px = 7px
28
- * Text font size at reflow (700px): 14px
31
+ * Text font size at max (1480px): 24px / 1.62%
32
+ * Text font size at min (320px): 1.62% x 320px = 5.2px
29
33
  */
30
34
  --text-font-size: max(
31
- 15px,
32
- clamp(7px, 2.16cqw, theme(fontSize.subheading-1))
35
+ 16px,
36
+ clamp(5.2px, 1.62cqw, theme(fontSize.subheading-2))
33
37
  );
34
38
 
35
39
  /* ------------- */
36
40
 
37
- @apply bg-white relative rounded-md @container;
41
+ @apply relative rounded-md @container;
42
+ @apply bg-white bg-no-repeat bg-cover;
43
+
38
44
  min-width: 320px;
39
45
 
40
46
  .slide-aspect {
@@ -42,13 +48,14 @@
42
48
  }
43
49
 
44
50
  .slide-container {
45
- @apply @slide-fluid:absolute @slide-fluid:inset-0;
46
- @apply flex flex-col items-center justify-center text-center overflow-hidden bg-cover bg-center;
51
+ @apply @slide-fluid:absolute @slide-fluid:inset-0 overflow-hidden;
52
+ @apply px-6 py-10 @slide-fluid:p-[var(--slide-padding-md)];
47
53
  }
48
54
 
49
55
  [data-slide-region],
56
+ .slide-header,
50
57
  .slide-text,
51
- .slide-media {
58
+ .slide-image {
52
59
  @apply hidden;
53
60
  }
54
61
 
@@ -56,10 +63,53 @@
56
63
  @apply contents;
57
64
  }
58
65
 
66
+ .slide-title {
67
+ @apply font-bold text-current;
68
+ overflow-wrap: anywhere;
69
+ line-height: 1.1;
70
+ font-size: var(--title-font-size);
71
+ }
72
+
73
+ .slide-text {
74
+ @apply text-current;
75
+ line-height: 1.5;
76
+ font-size: var(--text-font-size);
77
+ }
78
+
79
+ .slide-media {
80
+ @apply w-full;
81
+
82
+ img {
83
+ @apply w-full h-full object-contain;
84
+ }
85
+ }
86
+
59
87
  /* layouts */
60
88
 
61
- &[data-layout="basic"] {
62
- @apply text-center bg-no-repeat bg-cover;
89
+ &[data-layout="one-col-title"] {
90
+ /*
91
+ * Title font size at max (1480px): 80px (5.4%)
92
+ * Title font size at min (320px): 5.4% x 320px = 17px
93
+ */
94
+ --title-font-size: max(
95
+ 35px,
96
+ clamp(17px, 5.4cqw, theme(fontSize.display-2))
97
+ );
98
+
99
+ /*
100
+ * Text font size at max (1480px): 32px / 2.16%
101
+ * Text font size at min (320px): 2.16% x 320px = 7px
102
+ */
103
+ --text-font-size: max(
104
+ 16px,
105
+ clamp(7px, 2.16cqw, theme(fontSize.subheading-1))
106
+ );
107
+
108
+ @apply text-center;
109
+
110
+ .slide-container {
111
+ @apply @slide-fluid:px-[var(--slide-padding-lg)];
112
+ }
63
113
 
64
114
  [data-slide-region="content-1"] {
65
115
  @apply block;
@@ -69,17 +119,16 @@
69
119
  }
70
120
  }
71
121
 
72
- .slide-container {
73
- @apply overflow-hidden;
74
- @apply px-8;
75
- @apply py-[var(--y-padding)] @slide-fluid:px-[var(--x-padding)];
122
+ &.with-title [data-slide-region="content-1"] .slide-text {
123
+ margin-top: 0.875em;
124
+ }
125
+
126
+ .slide-layout {
127
+ @apply flex flex-col items-center justify-center text-center w-full h-full;
76
128
  }
77
129
 
78
130
  .slide-header {
79
- @apply w-full;
80
- margin-bottom: 0.3em;
81
- line-height: 1.1;
82
- font-size: var(--title-font-size);
131
+ @apply w-full block;
83
132
  }
84
133
 
85
134
  .slide-content {
@@ -91,16 +140,173 @@
91
140
  @apply mx-auto w-full max-w-[360px] @slide-fluid:max-w-full;
92
141
  }
93
142
 
143
+ .slide-text {
144
+ line-height: 1.4;
145
+ }
146
+ }
147
+
148
+ &[data-layout="one-col-text"] {
149
+ .slide-container {
150
+ @apply flex items-center;
151
+ }
152
+
153
+ .slide-layout {
154
+ @apply @slide-fluid:grid w-full;
155
+ height: min-content;
156
+ grid-template-columns: 1fr;
157
+ grid-template-rows: auto;
158
+ grid-gap: var(--slide-padding-sm);
159
+ }
160
+
161
+ &.with-title {
162
+ .slide-container {
163
+ @apply block;
164
+ }
165
+
166
+ .slide-layout {
167
+ @apply h-full;
168
+ grid-template-rows: min-content auto;
169
+ }
170
+ }
171
+
172
+ .slide-header {
173
+ @apply w-full block;
174
+ @apply mb-6 @slide-fluid:mb-0;
175
+ }
176
+
177
+ [data-slide-region="content-1"] {
178
+ @apply block;
179
+
180
+ .slide-text {
181
+ @apply block;
182
+ }
183
+ }
184
+ }
185
+
186
+ &[data-layout="one-col-media"] {
187
+ .slide-container {
188
+ @apply py-6 @slide-fluid:py-[var(--slide-padding-sm)];
189
+ }
190
+
191
+ .slide-layout,
192
+ .slide-content {
193
+ @apply h-full;
194
+ }
195
+
196
+ [data-slide-region="content-1"] {
197
+ @apply block;
198
+
199
+ .slide-media {
200
+ @apply block w-full h-full;
201
+
202
+ img {
203
+ @apply h-full w-full object-contain;
204
+ }
205
+ }
206
+ }
207
+ }
208
+
209
+ &[data-layout="two-col-text"],
210
+ &[data-layout="two-col-media"] {
211
+ .slide-container {
212
+ @apply flex items-center;
213
+ @apply py-6 @slide-fluid:py-[var(--slide-padding-sm)];
214
+ }
215
+
216
+ .slide-layout {
217
+ @apply @slide-fluid:grid w-full;
218
+ height: min-content;
219
+ grid-template-columns: 1fr 1fr;
220
+ grid-template-rows: auto;
221
+ grid-gap: var(--slide-padding-sm);
222
+ }
223
+
224
+ &.with-title {
225
+ .slide-container {
226
+ @apply block;
227
+ }
228
+
229
+ .slide-layout {
230
+ @apply h-full;
231
+ grid-template-rows: min-content auto;
232
+ }
233
+ }
234
+
235
+ .slide-header {
236
+ @apply w-full block;
237
+ @apply mb-10 @slide-fluid:mb-0;
238
+ grid-column-start: 1;
239
+ grid-column-end: -1;
240
+ }
241
+
242
+ [data-slide-region="content-1"],
243
+ [data-slide-region="content-2"] {
244
+ @apply block;
245
+
246
+ .slide-text,
247
+ .slide-media {
248
+ @apply block;
249
+ }
250
+ }
251
+
252
+ [data-slide-region="content-1"] {
253
+ @apply mb-[var(--slide-padding-sm)] @slide-fluid:mb-0;
254
+ }
255
+ }
256
+
257
+ &[data-layout="two-col-media"] {
258
+ .slide-layout {
259
+ @apply @slide-fluid:h-full;
260
+ }
261
+
262
+ .slide-content {
263
+ @apply relative @slide-fluid:flex @slide-fluid:items-center @slide-fluid:h-full;
264
+ }
265
+
266
+ .slide-media {
267
+ @apply @slide-fluid:absolute @slide-fluid:inset-0;
268
+ }
269
+ }
270
+
271
+ &[data-layout="two-col-mixed"] {
272
+ .slide-layout {
273
+ @apply @slide-fluid:grid w-full h-full;
274
+ grid-template-columns: 1fr 1fr;
275
+ grid-template-rows: auto;
276
+ grid-gap: var(--slide-padding-sm);
277
+ }
278
+
279
+ .slide-group {
280
+ @apply flex flex-col justify-center;
281
+ @apply mb-[var(--slide-padding-sm)] @slide-fluid:mb-0;
282
+ }
283
+
284
+ .slide-header {
285
+ @apply w-full block;
286
+ }
287
+
94
288
  .slide-title {
95
- @apply font-bold text-current;
96
- overflow-wrap: anywhere;
97
- line-height: 1.1;
289
+ margin-bottom: 0.5em;
98
290
  }
99
291
 
100
- .slide-text {
101
- @apply text-current;
102
- line-height: 1.4;
103
- font-size: var(--text-font-size);
292
+ [data-slide-region="content-1"] {
293
+ @apply block;
294
+
295
+ .slide-text {
296
+ @apply block;
297
+ }
298
+ }
299
+
300
+ [data-slide-region="content-2"] {
301
+ @apply relative block @slide-fluid:flex @slide-fluid:items-center @slide-fluid:h-full;
302
+
303
+ .slide-media {
304
+ @apply block @slide-fluid:absolute @slide-fluid:inset-0;
305
+
306
+ img {
307
+ @apply h-full w-full object-contain;
308
+ }
309
+ }
104
310
  }
105
311
  }
106
312
  }
@@ -1,21 +1,39 @@
1
- <%= render component_tag(style: slide_styles) do %>
1
+ <%= render component_tag(style: slide_styles, class: {"with-title": title?}) do %>
2
2
  <div class="slide-aspect">
3
3
  <div class="slide-container">
4
4
 
5
- <div class="slide-group">
6
- <header class="slide-header">
5
+ <div class="slide-layout">
6
+ <div class="slide-group">
7
7
  <% if title? %>
8
- <h3 class="slide-title" data-role="title">
9
- <%= title %>
10
- </h3>
8
+ <header class="slide-header">
9
+ <h3 class="slide-title" data-role="title">
10
+ <%= title %>
11
+ </h3>
12
+ </header>
11
13
  <% end %>
12
- </header>
13
14
 
14
- <div class="slide-content" data-slide-region="content-1">
15
- <% if text_1? %>
16
- <div class="slide-text" data-role="text-1">
17
- <%= text_1 %>
18
- </div>
15
+ <div class="slide-content" data-slide-region="content-1">
16
+ <% if text_1? %>
17
+ <div class="slide-text" data-role="text-1">
18
+ <%= text_1 %>
19
+ </div>
20
+ <% elsif image_1? %>
21
+ <div class="slide-media" data-role="media-1">
22
+ <img src="<%= image_1 %>">
23
+ </div>
24
+ <% end %>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="slide-content" data-slide-region="content-2">
29
+ <% if text_2? %>
30
+ <div class="slide-text" data-role="text-2">
31
+ <%= text_2 %>
32
+ </div>
33
+ <% elsif image_2? %>
34
+ <div class="slide-media" data-role="media-2">
35
+ <img src="<%= image_2 %>">
36
+ </div>
19
37
  <% end %>
20
38
  </div>
21
39
  </div>
@@ -7,7 +7,7 @@ module Coco
7
7
  include Coco::TagHelper
8
8
  include Coco::FormatHelper
9
9
 
10
- accepts_option :layout, from: %w[basic], default: "basic"
10
+ accepts_option :layout, from: %w[one-col-title one-col-text one-col-media two-col-text two-col-media two-col-mixed], default: "one-col-title"
11
11
 
12
12
  renders_one :title,
13
13
  ->(&block) do
@@ -21,6 +21,33 @@ module Coco
21
21
  block.call
22
22
  end
23
23
 
24
+ renders_one :text_2,
25
+ ->(&block) do
26
+ @has_content = true
27
+ block.call
28
+ end
29
+
30
+ renders_one :image_1,
31
+ ->(href:) do
32
+ @has_content = true
33
+ href
34
+ end
35
+
36
+ renders_one :image_2,
37
+ ->(href:) do
38
+ @has_content = true
39
+ href
40
+ end
41
+
42
+ before_initialize do |kwargs|
43
+ if kwargs[:layout]
44
+ kwargs[:layout] = kwargs[:layout].to_s.tr("_", "-")
45
+ kwargs[:layout] = "one-col-title" if kwargs[:layout] == "basic" # handle legacy layout name
46
+ end
47
+
48
+ kwargs
49
+ end
50
+
24
51
  attr_reader :bg_image, :text_color_hex, :bg_color_hex
25
52
 
26
53
  def initialize(bg_image: nil, bg_color_hex: nil, text_color_hex: nil, render_empty: false, **kwargs)
@@ -16,6 +16,7 @@ module Coco
16
16
  },
17
17
  menu_button: ->(**kwargs) { App::Elements::MenuButton.new(**button_kwargs(kwargs, :menu)) },
18
18
  color_picker_button: ->(**kwargs) { App::Elements::ColorPickerButton.new(**button_kwargs(kwargs, :color_picker)) },
19
+ layout_picker_button: ->(**kwargs) { App::Elements::LayoutPickerButton.new(**button_kwargs(kwargs, :layout_picker)) },
19
20
  image_picker_button: ->(**kwargs) { App::Elements::ImagePickerButton.new(**button_kwargs(kwargs, :image_picker)) },
20
21
  dropdown_button: ->(**kwargs) { App::Elements::DropdownButton.new(**button_kwargs(kwargs, :dropdown)) }
21
22
  }
@@ -41,6 +42,10 @@ module Coco
41
42
  with_item_image_picker_button(...)
42
43
  end
43
44
 
45
+ def with_layout_picker_button(...)
46
+ with_item_layout_picker_button(...)
47
+ end
48
+
44
49
  def with_dropdown_button(...)
45
50
  with_item_dropdown_button(...)
46
51
  end
@@ -39,6 +39,10 @@ module Coco
39
39
  render Coco::App::Elements::ImagePickerButton.new(**kwargs), &block
40
40
  end
41
41
 
42
+ def coco_layout_picker_button(**kwargs, &block)
43
+ render Coco::App::Elements::LayoutPickerButton.new(**kwargs), &block
44
+ end
45
+
42
46
  def coco_dropdown_button(**kwargs, &block)
43
47
  render Coco::App::Elements::DropdownButton.new(**kwargs), &block
44
48
  end
@@ -4,6 +4,10 @@ module Coco
4
4
  render Coco::Tag.new(*args, **kwargs), &block
5
5
  end
6
6
 
7
+ def coco_svg(path = nil, **kwargs)
8
+ render Coco::Svg.new(path: path, **kwargs)
9
+ end
10
+
7
11
  def coco_image(src = nil, **kwargs)
8
12
  render Coco::Image.new(src: src, **kwargs)
9
13
  end
@@ -130,17 +130,8 @@ module Coco
130
130
  end.to_h
131
131
  end
132
132
 
133
- def to_h
134
- {
135
- name: name,
136
- alias: @alias,
137
- shorthand: shorthand,
138
- options: items.map(&:to_h)
139
- }
140
- end
141
-
142
133
  def clone
143
- Group.from_h(to_h)
134
+ Marshal.load(Marshal.dump(self))
144
135
  end
145
136
 
146
137
  protected
@@ -156,30 +147,6 @@ module Coco
156
147
  def groups
157
148
  items.filter { _1.is_a?(Group) }
158
149
  end
159
-
160
- class << self
161
- # Recursively create an options tree from a hash.
162
- #
163
- # {
164
- # name: :root,
165
- # options: [
166
- # { name: :size, default: "md" },
167
- # { name: :dropdown, options: [{name: :placement, from: [:left, :right]}] }
168
- # }
169
- # }
170
- def from_h(data)
171
- group = Group.new(data.fetch(:name), **data.except(:options, :name))
172
- data.fetch(:options, []).each do |option|
173
- if option.key?(:options)
174
- subgroup = Group.from_h(option)
175
- group.add_group(subgroup)
176
- else
177
- group.add_option(option.fetch(:name), **option.except(:name))
178
- end
179
- end
180
- group
181
- end
182
- end
183
150
  end
184
151
  end
185
152
  end
@@ -40,19 +40,6 @@ module Coco
40
40
  end
41
41
  @value = val
42
42
  end
43
-
44
- def to_h
45
- h = {
46
- name: name,
47
- alias: @alias,
48
- required: required?,
49
- private: private?,
50
- from: from,
51
- default: default
52
- }
53
- h[:value] = @value unless undefined?
54
- h
55
- end
56
43
  end
57
44
  end
58
45
  end
data/lib/coco.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Coco
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coveragebook_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Perkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-18 00:00:00.000000000 Z
11
+ date: 2023-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -1257,7 +1257,16 @@ files:
1257
1257
  - app/assets/build/coco/icons/zoom-out.svg
1258
1258
  - app/assets/build/coco/img/coveragebook-landscape-white.svg
1259
1259
  - app/assets/build/coco/img/coveragebook-logomark-white.svg
1260
- - app/assets/build/coco/img/slide-bg.jpg
1260
+ - app/assets/build/coco/img/slides/one-col-media-layout.svg
1261
+ - app/assets/build/coco/img/slides/one-col-text-layout.svg
1262
+ - app/assets/build/coco/img/slides/one-col-title-layout.svg
1263
+ - app/assets/build/coco/img/slides/two-col-media-layout.svg
1264
+ - app/assets/build/coco/img/slides/two-col-mixed-layout.svg
1265
+ - app/assets/build/coco/img/slides/two-col-text-layout.svg
1266
+ - app/assets/build/coco/img/test/cb-logo.svg
1267
+ - app/assets/build/coco/img/test/slides/slide-bg.jpg
1268
+ - app/assets/build/coco/img/test/slides/slide-foreground-landscape.jpg
1269
+ - app/assets/build/coco/img/test/slides/slide-foreground-portrait.jpg
1261
1270
  - app/assets/config/coco/manifest.js
1262
1271
  - app/assets/css/app.css
1263
1272
  - app/assets/css/app/config.css
@@ -1274,7 +1283,16 @@ files:
1274
1283
  - app/assets/css/libs/tippy.css
1275
1284
  - app/assets/img/coveragebook-landscape-white.svg
1276
1285
  - app/assets/img/coveragebook-logomark-white.svg
1277
- - app/assets/img/slide-bg.jpg
1286
+ - app/assets/img/slides/one-col-media-layout.svg
1287
+ - app/assets/img/slides/one-col-text-layout.svg
1288
+ - app/assets/img/slides/one-col-title-layout.svg
1289
+ - app/assets/img/slides/two-col-media-layout.svg
1290
+ - app/assets/img/slides/two-col-mixed-layout.svg
1291
+ - app/assets/img/slides/two-col-text-layout.svg
1292
+ - app/assets/img/test/cb-logo.svg
1293
+ - app/assets/img/test/slides/slide-bg.jpg
1294
+ - app/assets/img/test/slides/slide-foreground-landscape.jpg
1295
+ - app/assets/img/test/slides/slide-foreground-portrait.jpg
1278
1296
  - app/assets/js/app.js
1279
1297
  - app/assets/js/app/components.js
1280
1298
  - app/assets/js/app/mixins/dropdown.js
@@ -1358,6 +1376,10 @@ files:
1358
1376
  - app/components/coco/app/elements/image_picker_button/image_picker_button.html.erb
1359
1377
  - app/components/coco/app/elements/image_picker_button/image_picker_button.js
1360
1378
  - app/components/coco/app/elements/image_picker_button/image_picker_button.rb
1379
+ - app/components/coco/app/elements/layout_picker_button/layout_picker_button.css
1380
+ - app/components/coco/app/elements/layout_picker_button/layout_picker_button.html.erb
1381
+ - app/components/coco/app/elements/layout_picker_button/layout_picker_button.js
1382
+ - app/components/coco/app/elements/layout_picker_button/layout_picker_button.rb
1361
1383
  - app/components/coco/app/elements/link/link.css
1362
1384
  - app/components/coco/app/elements/link/link.rb
1363
1385
  - app/components/coco/app/elements/menu/menu.css
@@ -1454,6 +1476,8 @@ files:
1454
1476
  - app/components/coco/base/placeholder/placeholder.css
1455
1477
  - app/components/coco/base/placeholder/placeholder.html.erb
1456
1478
  - app/components/coco/base/placeholder/placeholder.rb
1479
+ - app/components/coco/base/svg/svg.html.erb
1480
+ - app/components/coco/base/svg/svg.rb
1457
1481
  - app/components/coco/book/blocks/slides/editable_slide/editable_slide.css
1458
1482
  - app/components/coco/book/blocks/slides/editable_slide/editable_slide.html.erb
1459
1483
  - app/components/coco/book/blocks/slides/editable_slide/editable_slide.rb
@@ -1489,8 +1513,6 @@ files:
1489
1513
  - app/helpers/coco/integration_helper.rb
1490
1514
  - app/helpers/coco/tag_helper.rb
1491
1515
  - app/helpers/coco/url_helper.rb
1492
- - config/credentials/production.key
1493
- - config/credentials/production.yml.enc
1494
1516
  - config/icons.json
1495
1517
  - config/locales/coco.en.yml
1496
1518
  - config/tailwind.app.config.cjs
@@ -1542,7 +1564,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1542
1564
  - !ruby/object:Gem::Version
1543
1565
  version: '0'
1544
1566
  requirements: []
1545
- rubygems_version: 3.4.10
1567
+ rubygems_version: 3.4.17
1546
1568
  signing_key:
1547
1569
  specification_version: 4
1548
1570
  summary: CoverageBook component library
Binary file
Binary file
@@ -1 +0,0 @@
1
- 265f649a303f0c2cbbfc9cfece75a181
@@ -1 +0,0 @@
1
- j8VyKMx4mwRZArG1zS/oqUw1F6/UD0hQQ5sujzeTTBlNAuCTkLiuoiyAXnJV9FtR90T765ll/50wFbw0MFtk8nAzPJg=--TOqZsXP2UCs2CSMx--xYL00fHdXoCd+/xpGro01g==