coveragebook_components 0.10.1.beta.1 → 0.11.0
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/build/coco/app.css +3968 -3053
- data/app/assets/build/coco/app.js +5 -4
- data/app/assets/build/coco/book.css +1609 -627
- data/app/assets/build/coco/book.js +2 -2
- data/app/assets/css/app/tippy.css +1 -1
- data/app/assets/css/base.css +0 -4
- data/app/assets/css/shared/tippy.css +2 -2
- data/app/assets/css/shared/utils/text.css +323 -66
- data/app/components/coco/app/blocks/sidebar_nav/item/item.css +3 -3
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.css +3 -3
- data/app/components/coco/app/elements/alert/alert.css +7 -7
- data/app/components/coco/app/elements/color_picker/color_picker.css +2 -2
- data/app/components/coco/app/elements/confirm_panel/confirm_panel.css +1 -1
- data/app/components/coco/app/elements/image_picker/image_picker.css +4 -4
- data/app/components/coco/app/elements/menu/menu.css +2 -2
- data/app/components/coco/app/elements/menu_items/user_profile/user_profile.css +1 -1
- data/app/components/coco/app/elements/snackbar/snackbar.css +1 -1
- data/app/components/coco/app/layouts/page/page.css +1 -5
- data/app/components/coco/app/layouts/page/page.html.erb +3 -9
- data/app/components/coco/app/layouts/page/page.rb +18 -3
- data/app/components/coco/shared/button/button.css +31 -31
- data/app/components/coco/shared/button/button.rb +2 -2
- data/app/components/coco/shared/link/link.css +67 -0
- data/app/components/coco/shared/link/link.rb +20 -1
- data/app/components/coco/shared/prose/prose.css +28 -0
- data/app/components/coco/shared/prose/prose.rb +14 -0
- data/app/components/coco/shared/spacer/spacer.css +201 -0
- data/app/components/coco/shared/spacer/spacer.rb +23 -0
- data/app/components/coco/shared/stack/stack.css +4 -0
- data/app/components/coco/shared/stack/stack.html.erb +4 -0
- data/app/components/coco/shared/stack/stack.rb +47 -0
- data/app/helpers/coco/app_helper.rb +1 -1
- data/app/helpers/coco/shared_helper.rb +13 -0
- data/config/tailwind.base.config.cjs +3 -1
- data/config/tokens.cjs +1 -0
- data/lib/coco.rb +1 -1
- metadata +12 -7
- data/app/components/coco/app/elements/link/link.css +0 -70
- data/app/components/coco/app/elements/link/link.rb +0 -33
@@ -4,17 +4,11 @@
|
|
4
4
|
<%= header %>
|
5
5
|
</header>
|
6
6
|
<% end %>
|
7
|
+
|
7
8
|
<div class="page-body" data-role="page-body">
|
8
|
-
|
9
|
-
<% if sections? %>
|
10
|
-
<div class="page-sections">
|
11
|
-
<%= safe_join(sections) %>
|
12
|
-
</div>
|
13
|
-
<% end %>
|
14
|
-
<%= content %>
|
15
|
-
</div>
|
9
|
+
<%= render stack %>
|
16
10
|
</div>
|
17
|
-
|
11
|
+
|
18
12
|
<% if previous_link? || next_link? %>
|
19
13
|
<div class="page-controls">
|
20
14
|
<%= previous_link %>
|
@@ -11,8 +11,9 @@ module Coco
|
|
11
11
|
renders_one :header
|
12
12
|
renders_many :hidden_sections
|
13
13
|
|
14
|
-
renders_many :sections, ->(**kwargs, &block) do
|
15
|
-
|
14
|
+
renders_many :sections, ->(tag_name = :section, **kwargs, &block) do
|
15
|
+
stack.with_space(@spacing) unless stack.starts_with_spacer?
|
16
|
+
stack.with_item(tag_name, **kwargs) { block&.call }
|
16
17
|
end
|
17
18
|
|
18
19
|
renders_one :previous_link, ->(**kwargs) do
|
@@ -31,12 +32,26 @@ module Coco
|
|
31
32
|
with_poll_controller(@poll) unless poll_controller? || @poll.nil?
|
32
33
|
with_next_link(href: @next_page) if @next_page
|
33
34
|
with_previous_link(href: @previous_page) if @previous_page
|
35
|
+
|
36
|
+
with_section(class: "contents") { content } if content.present?
|
37
|
+
stack.with_space(@spacing) unless stack.ends_with_spacer?
|
34
38
|
end
|
35
39
|
|
36
|
-
|
40
|
+
delegate :with_space, to: :stack
|
41
|
+
|
42
|
+
def initialize(spacing: 4, poll: nil, **kwargs)
|
37
43
|
@poll = poll
|
38
44
|
@previous_page = kwargs[:previous]
|
39
45
|
@next_page = kwargs[:next]
|
46
|
+
@spacing = spacing
|
47
|
+
end
|
48
|
+
|
49
|
+
def stack
|
50
|
+
@stack ||= Coco::Stack.new(
|
51
|
+
spacing: @spacing,
|
52
|
+
direction: :vertical,
|
53
|
+
class: "page-body-content"
|
54
|
+
)
|
40
55
|
end
|
41
56
|
end
|
42
57
|
end
|
@@ -359,119 +359,119 @@
|
|
359
359
|
/* Responsive resizing */
|
360
360
|
|
361
361
|
&[data-size="xs"] {
|
362
|
-
@apply
|
362
|
+
@apply button-xs;
|
363
363
|
}
|
364
364
|
|
365
365
|
&[data-size="sm"] {
|
366
|
-
@apply
|
366
|
+
@apply button-sm;
|
367
367
|
}
|
368
368
|
|
369
369
|
&[data-size="md"] {
|
370
|
-
@apply
|
370
|
+
@apply button-md;
|
371
371
|
}
|
372
372
|
|
373
373
|
&[data-size="lg"] {
|
374
|
-
@apply
|
374
|
+
@apply button-lg;
|
375
375
|
}
|
376
376
|
|
377
377
|
@media screen(md) {
|
378
378
|
&[data-size-md="xs"] {
|
379
|
-
@apply
|
379
|
+
@apply button-xs;
|
380
380
|
}
|
381
381
|
|
382
382
|
&[data-size-md="sm"] {
|
383
|
-
@apply
|
383
|
+
@apply button-sm;
|
384
384
|
}
|
385
385
|
|
386
386
|
&[data-size-md="md"] {
|
387
|
-
@apply
|
387
|
+
@apply button-md;
|
388
388
|
}
|
389
389
|
|
390
390
|
&[data-size-md="lg"] {
|
391
|
-
@apply
|
391
|
+
@apply button-lg;
|
392
392
|
}
|
393
393
|
}
|
394
394
|
|
395
395
|
@media screen(lg) {
|
396
396
|
&[data-size-lg="xs"] {
|
397
|
-
@apply
|
397
|
+
@apply button-xs;
|
398
398
|
}
|
399
399
|
|
400
400
|
&[data-size-lg="sm"] {
|
401
|
-
@apply
|
401
|
+
@apply button-sm;
|
402
402
|
}
|
403
403
|
|
404
404
|
&[data-size-lg="md"] {
|
405
|
-
@apply
|
405
|
+
@apply button-md;
|
406
406
|
}
|
407
407
|
|
408
408
|
&[data-size-lg="lg"] {
|
409
|
-
@apply
|
409
|
+
@apply button-lg;
|
410
410
|
}
|
411
411
|
}
|
412
412
|
|
413
413
|
@media screen(xl) {
|
414
414
|
&[data-size-xl="xs"] {
|
415
|
-
@apply
|
415
|
+
@apply button-xs;
|
416
416
|
}
|
417
417
|
|
418
418
|
&[data-size-xl="sm"] {
|
419
|
-
@apply
|
419
|
+
@apply button-sm;
|
420
420
|
}
|
421
421
|
|
422
422
|
&[data-size-xl="md"] {
|
423
|
-
@apply
|
423
|
+
@apply button-md;
|
424
424
|
}
|
425
425
|
|
426
426
|
&[data-size-xl="lg"] {
|
427
|
-
@apply
|
427
|
+
@apply button-lg;
|
428
428
|
}
|
429
429
|
}
|
430
430
|
|
431
431
|
@media screen(2xl) {
|
432
432
|
&[data-size-xxl="xs"],
|
433
433
|
&[data-size-2xl="xs"] {
|
434
|
-
@apply
|
434
|
+
@apply button-xs;
|
435
435
|
}
|
436
436
|
|
437
437
|
&[data-size-xxl="sm"],
|
438
438
|
&[data-size-2xl="sm"] {
|
439
|
-
@apply
|
439
|
+
@apply button-sm;
|
440
440
|
}
|
441
441
|
|
442
442
|
&[data-size-xxl="md"],
|
443
443
|
&[data-size-2xl="md"] {
|
444
|
-
@apply
|
444
|
+
@apply button-md;
|
445
445
|
}
|
446
446
|
|
447
447
|
&[data-size-xxl="lg"],
|
448
448
|
&[data-size-2xl="lg"] {
|
449
|
-
@apply
|
449
|
+
@apply button-lg;
|
450
450
|
}
|
451
451
|
}
|
452
452
|
|
453
453
|
@media screen(max) {
|
454
454
|
&[data-size-max="xs"] {
|
455
|
-
@apply
|
455
|
+
@apply button-xs;
|
456
456
|
}
|
457
457
|
|
458
458
|
&[data-size-max="sm"] {
|
459
|
-
@apply
|
459
|
+
@apply button-sm;
|
460
460
|
}
|
461
461
|
|
462
462
|
&[data-size-max="md"] {
|
463
|
-
@apply
|
463
|
+
@apply button-md;
|
464
464
|
}
|
465
465
|
|
466
466
|
&[data-size-max="lg"] {
|
467
|
-
@apply
|
467
|
+
@apply button-lg;
|
468
468
|
}
|
469
469
|
}
|
470
470
|
}
|
471
471
|
}
|
472
472
|
|
473
473
|
@layer utilities {
|
474
|
-
.
|
474
|
+
.button-xs {
|
475
475
|
.button-content {
|
476
476
|
font-size: 14px;
|
477
477
|
line-height: 14px;
|
@@ -501,9 +501,9 @@
|
|
501
501
|
}
|
502
502
|
}
|
503
503
|
|
504
|
-
.
|
504
|
+
.button-sm {
|
505
505
|
.button-content {
|
506
|
-
@apply
|
506
|
+
@apply label-sm;
|
507
507
|
}
|
508
508
|
|
509
509
|
.button-icon [data-component="icon"],
|
@@ -530,9 +530,9 @@
|
|
530
530
|
}
|
531
531
|
}
|
532
532
|
|
533
|
-
.
|
533
|
+
.button-md {
|
534
534
|
.button-content {
|
535
|
-
@apply
|
535
|
+
@apply label-md;
|
536
536
|
}
|
537
537
|
|
538
538
|
.button-icon [data-component="icon"],
|
@@ -559,9 +559,9 @@
|
|
559
559
|
}
|
560
560
|
}
|
561
561
|
|
562
|
-
.
|
562
|
+
.button-lg {
|
563
563
|
.button-content {
|
564
|
-
@apply
|
564
|
+
@apply label-lg;
|
565
565
|
}
|
566
566
|
|
567
567
|
.button-icon [data-component="icon"],
|
@@ -107,8 +107,8 @@ module Coco
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def static?
|
110
|
-
if @static.nil?
|
111
|
-
!(confirm? || dropdown? || tooltip? || @states.any? || on_click.present? || get_option_value(:collapsible))
|
110
|
+
@_static ||= if @static.nil?
|
111
|
+
!(confirm? || dropdown? || tooltip? || @states.any? || on_click.present? || get_option_value(:collapsible) || tag_attrs.key?(:x))
|
112
112
|
else
|
113
113
|
@static
|
114
114
|
end
|
@@ -21,5 +21,72 @@
|
|
21
21
|
}
|
22
22
|
}
|
23
23
|
}
|
24
|
+
|
25
|
+
&[data-theme] {
|
26
|
+
@apply no-underline hover:underline;
|
27
|
+
}
|
28
|
+
|
29
|
+
&[data-underline="true"] {
|
30
|
+
@apply underline;
|
31
|
+
}
|
32
|
+
|
33
|
+
&[data-underline="false"] {
|
34
|
+
@apply no-underline;
|
35
|
+
}
|
36
|
+
|
37
|
+
&[data-theme="primary"] {
|
38
|
+
@apply link-primary;
|
39
|
+
}
|
40
|
+
|
41
|
+
&[data-theme="positive"] {
|
42
|
+
@apply link-positive;
|
43
|
+
}
|
44
|
+
|
45
|
+
&[data-theme="negative"] {
|
46
|
+
@apply link-negative;
|
47
|
+
}
|
48
|
+
|
49
|
+
&[data-theme="warning"] {
|
50
|
+
@apply link-warning;
|
51
|
+
}
|
52
|
+
|
53
|
+
&[data-theme="info"] {
|
54
|
+
@apply link-info;
|
55
|
+
}
|
56
|
+
|
57
|
+
&[data-theme="neutral-dark"] {
|
58
|
+
@apply link-neutral-dark;
|
59
|
+
}
|
60
|
+
|
61
|
+
&[data-theme="neutral-light"] {
|
62
|
+
@apply link-neutral-light;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
@layer utilities {
|
68
|
+
.link-primary,
|
69
|
+
.link-positive {
|
70
|
+
@apply text-content-primary active:text-green-700;
|
71
|
+
}
|
72
|
+
|
73
|
+
.link-negative {
|
74
|
+
@apply text-content-negative active:text-red-800;
|
75
|
+
}
|
76
|
+
|
77
|
+
.link-warning {
|
78
|
+
@apply text-content-warning active:text-amber-800;
|
79
|
+
}
|
80
|
+
|
81
|
+
.link-info {
|
82
|
+
@apply text-content-info active:text-info-800;
|
83
|
+
}
|
84
|
+
|
85
|
+
.link-neutral-dark {
|
86
|
+
@apply text-content-dark-1;
|
87
|
+
}
|
88
|
+
|
89
|
+
.link-neutral-light {
|
90
|
+
@apply text-content-light-1;
|
24
91
|
}
|
25
92
|
}
|
@@ -1,8 +1,23 @@
|
|
1
1
|
module Coco
|
2
2
|
class Link < Coco::Component
|
3
|
-
include Concerns::Extendable
|
4
3
|
include Concerns::ActsAsLink
|
5
4
|
include Concerns::WithIcon
|
5
|
+
include Concerns::AcceptsOptions
|
6
|
+
include Concerns::AcceptsTheme
|
7
|
+
|
8
|
+
THEMES = %W[positive primary warning negative info neutral-dark neutral-light] << nil
|
9
|
+
|
10
|
+
accepts_option :theme, from: THEMES
|
11
|
+
accepts_option :underline, from: [true, false]
|
12
|
+
|
13
|
+
before_initialize do |kwargs|
|
14
|
+
if kwargs.key?(:modal)
|
15
|
+
modal_name = (kwargs[:modal] == true) ? "default" : kwargs[:modal]
|
16
|
+
kwargs[:data] = kwargs.fetch(:data, {}).merge(coco_modal_data_attributes(modal_name))
|
17
|
+
kwargs.delete(:modal)
|
18
|
+
end
|
19
|
+
kwargs
|
20
|
+
end
|
6
21
|
|
7
22
|
def call
|
8
23
|
render component_tag(class: ["coco-link", ("with-icon" if icon?)]) do
|
@@ -12,5 +27,9 @@ module Coco
|
|
12
27
|
])
|
13
28
|
end
|
14
29
|
end
|
30
|
+
|
31
|
+
class << self
|
32
|
+
include Coco::SharedHelper
|
33
|
+
end
|
15
34
|
end
|
16
35
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
@layer components {
|
2
|
+
[data-coco].coco-prose {
|
3
|
+
@apply para-md;
|
4
|
+
|
5
|
+
:last-child {
|
6
|
+
@apply !mb-0;
|
7
|
+
}
|
8
|
+
|
9
|
+
a[href]:not([data-theme]) {
|
10
|
+
@apply text-content-primary;
|
11
|
+
}
|
12
|
+
|
13
|
+
&[data-centered="true"] {
|
14
|
+
@apply text-center;
|
15
|
+
}
|
16
|
+
|
17
|
+
&[data-style="display"] > {
|
18
|
+
h1,
|
19
|
+
h2,
|
20
|
+
h3,
|
21
|
+
h4,
|
22
|
+
h5,
|
23
|
+
h6 {
|
24
|
+
margin-bottom: 0.34em;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Coco
|
2
|
+
class Prose < Coco::Component
|
3
|
+
include Concerns::AcceptsOptions
|
4
|
+
|
5
|
+
accepts_option :centered, from: [true, false]
|
6
|
+
accepts_option :style, from: [:display, :content]
|
7
|
+
|
8
|
+
def call
|
9
|
+
render component_tag(class: "coco-prose") do
|
10
|
+
content
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,201 @@
|
|
1
|
+
@layer components {
|
2
|
+
[data-coco][data-component="spacer"] {
|
3
|
+
@apply pointer-events-none select-none invisible !p-0 !m-0 !border-none !flex-none;
|
4
|
+
|
5
|
+
&[data-size="0"] {
|
6
|
+
@apply hidden;
|
7
|
+
}
|
8
|
+
|
9
|
+
@apply !w-0;
|
10
|
+
|
11
|
+
&:not([data-scale-from]) {
|
12
|
+
@apply spacer-vertical-xs;
|
13
|
+
}
|
14
|
+
|
15
|
+
&[data-scale-from="sm"] {
|
16
|
+
@apply spacer-vertical-sm;
|
17
|
+
}
|
18
|
+
|
19
|
+
&[data-scale-from="md"] {
|
20
|
+
@apply spacer-vertical-md;
|
21
|
+
}
|
22
|
+
|
23
|
+
&[data-scale-from="lg"] {
|
24
|
+
@apply spacer-vertical-lg;
|
25
|
+
}
|
26
|
+
|
27
|
+
@media screen(sm) {
|
28
|
+
&:not([data-scale-from]),
|
29
|
+
&[data-scale-from="sm"] {
|
30
|
+
@apply spacer-vertical-sm;
|
31
|
+
}
|
32
|
+
|
33
|
+
&[data-scale-from="md"] {
|
34
|
+
@apply spacer-vertical-md;
|
35
|
+
}
|
36
|
+
|
37
|
+
&[data-scale-from="lg"] {
|
38
|
+
@apply spacer-vertical-lg;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
@media screen(md) {
|
43
|
+
&:not([data-scale-from]),
|
44
|
+
&[data-scale-from="sm"],
|
45
|
+
&[data-scale-from="md"] {
|
46
|
+
@apply spacer-vertical-md;
|
47
|
+
}
|
48
|
+
|
49
|
+
&[data-scale-from="lg"] {
|
50
|
+
@apply spacer-vertical-lg;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
@media screen(lg) {
|
55
|
+
&:not([data-scale-from]),
|
56
|
+
&[data-scale-from="sm"],
|
57
|
+
&[data-scale-from="md"],
|
58
|
+
&[data-scale-from="lg"] {
|
59
|
+
@apply spacer-vertical-lg;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
@layer utilities {
|
66
|
+
.spacer-vertical-xs {
|
67
|
+
&[data-size="1"] {
|
68
|
+
@apply h-1.5;
|
69
|
+
}
|
70
|
+
|
71
|
+
&[data-size="2"] {
|
72
|
+
@apply h-3;
|
73
|
+
}
|
74
|
+
|
75
|
+
&[data-size="3"] {
|
76
|
+
@apply h-5;
|
77
|
+
}
|
78
|
+
|
79
|
+
&[data-size="4"] {
|
80
|
+
@apply h-7;
|
81
|
+
}
|
82
|
+
|
83
|
+
&[data-size="5"] {
|
84
|
+
@apply h-9;
|
85
|
+
}
|
86
|
+
|
87
|
+
&[data-size="6"] {
|
88
|
+
@apply h-11;
|
89
|
+
}
|
90
|
+
|
91
|
+
&[data-size="7"] {
|
92
|
+
@apply h-13;
|
93
|
+
}
|
94
|
+
|
95
|
+
&[data-size="8"] {
|
96
|
+
@apply h-15;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
.spacer-vertical-sm {
|
101
|
+
&[data-size="1"] {
|
102
|
+
@apply h-2;
|
103
|
+
}
|
104
|
+
|
105
|
+
&[data-size="2"] {
|
106
|
+
@apply h-4;
|
107
|
+
}
|
108
|
+
|
109
|
+
&[data-size="3"] {
|
110
|
+
@apply h-6;
|
111
|
+
}
|
112
|
+
|
113
|
+
&[data-size="4"] {
|
114
|
+
@apply h-8;
|
115
|
+
}
|
116
|
+
|
117
|
+
&[data-size="5"] {
|
118
|
+
@apply h-10;
|
119
|
+
}
|
120
|
+
|
121
|
+
&[data-size="6"] {
|
122
|
+
@apply h-12;
|
123
|
+
}
|
124
|
+
|
125
|
+
&[data-size="7"] {
|
126
|
+
@apply h-14;
|
127
|
+
}
|
128
|
+
|
129
|
+
&[data-size="8"] {
|
130
|
+
@apply h-16;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
.spacer-vertical-md {
|
135
|
+
&[data-size="1"] {
|
136
|
+
@apply h-4;
|
137
|
+
}
|
138
|
+
|
139
|
+
&[data-size="2"] {
|
140
|
+
@apply h-6;
|
141
|
+
}
|
142
|
+
|
143
|
+
&[data-size="3"] {
|
144
|
+
@apply h-8;
|
145
|
+
}
|
146
|
+
|
147
|
+
&[data-size="4"] {
|
148
|
+
@apply h-10;
|
149
|
+
}
|
150
|
+
|
151
|
+
&[data-size="5"] {
|
152
|
+
@apply h-12;
|
153
|
+
}
|
154
|
+
|
155
|
+
&[data-size="6"] {
|
156
|
+
@apply h-14;
|
157
|
+
}
|
158
|
+
|
159
|
+
&[data-size="7"] {
|
160
|
+
@apply h-16;
|
161
|
+
}
|
162
|
+
|
163
|
+
&[data-size="8"] {
|
164
|
+
@apply h-18;
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
.spacer-vertical-lg {
|
169
|
+
&[data-size="1"] {
|
170
|
+
@apply h-6;
|
171
|
+
}
|
172
|
+
|
173
|
+
&[data-size="2"] {
|
174
|
+
@apply h-8;
|
175
|
+
}
|
176
|
+
|
177
|
+
&[data-size="3"] {
|
178
|
+
@apply h-10;
|
179
|
+
}
|
180
|
+
|
181
|
+
&[data-size="4"] {
|
182
|
+
@apply h-12;
|
183
|
+
}
|
184
|
+
|
185
|
+
&[data-size="5"] {
|
186
|
+
@apply h-14;
|
187
|
+
}
|
188
|
+
|
189
|
+
&[data-size="6"] {
|
190
|
+
@apply h-16;
|
191
|
+
}
|
192
|
+
|
193
|
+
&[data-size="7"] {
|
194
|
+
@apply h-18;
|
195
|
+
}
|
196
|
+
|
197
|
+
&[data-size="8"] {
|
198
|
+
@apply h-20;
|
199
|
+
}
|
200
|
+
}
|
201
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Coco
|
2
|
+
class Spacer < Coco::Component
|
3
|
+
include Concerns::AcceptsOptions
|
4
|
+
|
5
|
+
SIZES = [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
6
|
+
|
7
|
+
BREAKPOINTS = %i[sm md lg xl]
|
8
|
+
|
9
|
+
DEFAULT = 4
|
10
|
+
|
11
|
+
accepts_option :size, from: SIZES, default: DEFAULT
|
12
|
+
accepts_option :scale_from, from: BREAKPOINTS, private: true
|
13
|
+
accepts_option :responsive, from: [true, false], default: true, private: true
|
14
|
+
|
15
|
+
def call
|
16
|
+
render component_tag(:div, data: {scale_from:})
|
17
|
+
end
|
18
|
+
|
19
|
+
def scale_from
|
20
|
+
get_option_value(:responsive) ? get_option_value(:scale_from) : BREAKPOINTS.last
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|