coveragebook_components 0.8.2 → 0.8.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/build/coco/app.css +427 -303
- data/app/assets/build/coco/app.js +458 -226
- data/app/assets/build/coco/book.js +378 -175
- data/app/assets/build/coco/icons/armchair.svg +1 -1
- data/app/assets/build/coco/icons/folder-archive.svg +1 -1
- data/app/assets/build/coco/icons/folder-check.svg +1 -1
- data/app/assets/build/coco/icons/folder-clock.svg +1 -1
- data/app/assets/build/coco/icons/folder-closed.svg +1 -1
- data/app/assets/build/coco/icons/folder-cog.svg +1 -1
- data/app/assets/build/coco/icons/folder-down.svg +1 -1
- data/app/assets/build/coco/icons/folder-edit.svg +1 -1
- data/app/assets/build/coco/icons/folder-git.svg +1 -1
- data/app/assets/build/coco/icons/folder-heart.svg +1 -1
- data/app/assets/build/coco/icons/folder-input.svg +1 -1
- data/app/assets/build/coco/icons/folder-key.svg +1 -1
- data/app/assets/build/coco/icons/folder-lock.svg +1 -1
- data/app/assets/build/coco/icons/folder-minus.svg +1 -1
- data/app/assets/build/coco/icons/folder-open.svg +1 -1
- data/app/assets/build/coco/icons/folder-plus.svg +1 -1
- data/app/assets/build/coco/icons/folder-search-2.svg +1 -1
- data/app/assets/build/coco/icons/folder-search.svg +1 -1
- data/app/assets/build/coco/icons/folder-tree.svg +1 -1
- data/app/assets/build/coco/icons/folder-up.svg +1 -1
- data/app/assets/build/coco/icons/folder-x.svg +1 -1
- data/app/assets/build/coco/icons/folder.svg +1 -1
- data/app/assets/build/coco/icons/folders.svg +1 -1
- data/app/assets/build/coco/icons/git-commit-vertical.svg +1 -0
- data/app/assets/build/coco/icons/git-compare-arrows.svg +1 -0
- data/app/assets/build/coco/icons/git-fork.svg +1 -1
- data/app/assets/build/coco/icons/git-graph.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-arrow.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-closed.svg +1 -1
- data/app/assets/build/coco/icons/git-pull-request-create-arrow.svg +1 -0
- data/app/assets/build/coco/icons/git-pull-request-create.svg +1 -0
- data/app/assets/build/coco/icons/power-circle.svg +1 -0
- data/app/assets/build/coco/icons/power-square.svg +1 -0
- data/app/assets/build/coco/icons/power.svg +1 -1
- data/app/components/coco/app/blocks/sidebar_nav/item/item.css +121 -0
- data/app/components/coco/app/blocks/sidebar_nav/item/item.html.erb +9 -0
- data/app/components/coco/app/blocks/{sidebar_nav_item/sidebar_nav_item.js → sidebar_nav/item/item.js} +12 -5
- data/app/components/coco/app/blocks/sidebar_nav/item/item.rb +50 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.css +138 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.html.erb +24 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.js +13 -0
- data/app/components/coco/app/blocks/sidebar_nav/menu/menu.rb +48 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.css +75 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.html.erb +29 -0
- data/app/components/coco/app/blocks/sidebar_nav/navbar/navbar.rb +50 -0
- data/app/components/coco/base/icon/icon.rb +1 -0
- data/app/components/coco/component.rb +2 -2
- data/app/helpers/coco/app_helper.rb +5 -1
- data/app/helpers/coco/book_helper.rb +4 -4
- data/app/helpers/coco/component_helper.rb +2 -2
- data/app/helpers/coco/integration_helper.rb +4 -4
- data/config/icons.json +9 -1
- data/config/tokens.cjs +6 -0
- data/lib/coco/options/group.rb +9 -9
- data/lib/coco/test_helpers.rb +2 -2
- data/lib/coco.rb +1 -1
- metadata +23 -11
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.css +0 -110
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.html.erb +0 -42
- data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.rb +0 -28
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.css +0 -153
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.html.erb +0 -45
- data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.rb +0 -108
- /data/app/assets/build/coco/icons/{git-commit.svg → git-commit-horizontal.svg} +0 -0
- /data/app/components/coco/app/blocks/sidebar_nav/{sidebar_nav.js → navbar/navbar.js} +0 -0
@@ -1,153 +0,0 @@
|
|
1
|
-
@layer components {
|
2
|
-
[data-coco][data-component="app-sidebar-nav-item"] {
|
3
|
-
@apply bg-background-dark-2 text-content-dark-muted text-center no-underline flex-none cursor-pointer;
|
4
|
-
@apply flex items-center justify-center px-4 w-full flex-col hover:text-content-light-1;
|
5
|
-
|
6
|
-
.nav-item-icon {
|
7
|
-
@apply block mx-auto transition-colors;
|
8
|
-
@apply w-6 h-6;
|
9
|
-
}
|
10
|
-
|
11
|
-
.nav-item-label {
|
12
|
-
@apply block font-semibold text-label-xxs transition-colors mt-0.5 cursor-pointer;
|
13
|
-
}
|
14
|
-
|
15
|
-
&.emphasised {
|
16
|
-
.nav-item-icon {
|
17
|
-
@apply sm:text-content-primary-inverse-vivid;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
|
21
|
-
&.active {
|
22
|
-
@apply text-content-light-1;
|
23
|
-
}
|
24
|
-
|
25
|
-
&:hover {
|
26
|
-
.nav-item-icon {
|
27
|
-
@apply text-content-light-1;
|
28
|
-
}
|
29
|
-
|
30
|
-
&.emphasised .nav-item-icon {
|
31
|
-
@apply sm:text-content-primary-inverse-vivid;
|
32
|
-
}
|
33
|
-
|
34
|
-
.nav-item-label {
|
35
|
-
@apply text-content-light-1;
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
@media screen(sm) {
|
40
|
-
@apply sidebar-nav-item-vertical-condensed;
|
41
|
-
}
|
42
|
-
|
43
|
-
@media screen(lg) {
|
44
|
-
@apply sidebar-nav-item-vertical;
|
45
|
-
}
|
46
|
-
|
47
|
-
@media screen(letterbox) {
|
48
|
-
@apply sidebar-nav-item-vertical-condensed;
|
49
|
-
}
|
50
|
-
}
|
51
|
-
|
52
|
-
.sidebar-nav-menu {
|
53
|
-
@apply bg-content-dark-2 shadow-md sm:rounded-r-md overflow-hidden divide-y divide-content-dark-muted/20;
|
54
|
-
|
55
|
-
[data-placement="bottom"] & {
|
56
|
-
@apply rounded-b-md;
|
57
|
-
}
|
58
|
-
|
59
|
-
[data-placement="top"] & {
|
60
|
-
@apply rounded-t-md;
|
61
|
-
}
|
62
|
-
|
63
|
-
.sidebar-nav-menu-select {
|
64
|
-
@apply focus:ring-0 bg-transparent hover:bg-content-dark-1 active:bg-content-dark-1 border-0 text-content-light-2 w-full font-semibold;
|
65
|
-
}
|
66
|
-
|
67
|
-
.sidebar-nav-menu-item {
|
68
|
-
@apply flex w-full items-center p-3 text-center no-underline bg-content-dark-2 text-content-dark-muted transition;
|
69
|
-
}
|
70
|
-
|
71
|
-
.coco-link.sidebar-nav-menu-item {
|
72
|
-
@apply hover:bg-content-dark-1;
|
73
|
-
}
|
74
|
-
|
75
|
-
.sidebar-nav-menu-item-text {
|
76
|
-
@apply truncate min-w-0 font-semibold text-content-light-1 transition-colors;
|
77
|
-
}
|
78
|
-
|
79
|
-
.sidebar-nav-menu-item-qualifier {
|
80
|
-
@apply ml-auto text-label-sm flex-none pl-4;
|
81
|
-
}
|
82
|
-
|
83
|
-
@apply sidebar-nav-menu-large;
|
84
|
-
|
85
|
-
@media screen(sm) {
|
86
|
-
@apply sidebar-nav-menu-small;
|
87
|
-
}
|
88
|
-
|
89
|
-
@media screen(lg) {
|
90
|
-
@apply sidebar-nav-menu-large;
|
91
|
-
}
|
92
|
-
|
93
|
-
@media screen(letterbox) {
|
94
|
-
@apply sidebar-nav-menu-small;
|
95
|
-
}
|
96
|
-
}
|
97
|
-
}
|
98
|
-
|
99
|
-
@layer utilities {
|
100
|
-
.sidebar-nav-item-vertical-condensed {
|
101
|
-
@apply block px-2 py-4 hover:bg-content-dark-1;
|
102
|
-
|
103
|
-
.nav-item-icon {
|
104
|
-
@apply w-7 h-7;
|
105
|
-
}
|
106
|
-
|
107
|
-
.nav-item-label {
|
108
|
-
@apply mt-1 text-label-xxs;
|
109
|
-
}
|
110
|
-
|
111
|
-
&.active {
|
112
|
-
@apply bg-background-dark-3 hover:bg-background-dark-3 text-content-light-1;
|
113
|
-
}
|
114
|
-
}
|
115
|
-
|
116
|
-
.sidebar-nav-item-vertical {
|
117
|
-
@apply py-5 hover:bg-content-dark-1;
|
118
|
-
|
119
|
-
.nav-item-icon {
|
120
|
-
@apply w-8 h-8;
|
121
|
-
}
|
122
|
-
|
123
|
-
.nav-item-label {
|
124
|
-
@apply text-label-xs;
|
125
|
-
}
|
126
|
-
|
127
|
-
&.active {
|
128
|
-
@apply bg-background-dark-3 hover:bg-background-dark-3 text-content-light-1;
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
|
-
.sidebar-nav-menu-small {
|
133
|
-
.sidebar-nav-menu-select {
|
134
|
-
@apply text-sm;
|
135
|
-
}
|
136
|
-
|
137
|
-
.sidebar-nav-menu-item {
|
138
|
-
@apply text-sm;
|
139
|
-
width: 240px;
|
140
|
-
}
|
141
|
-
}
|
142
|
-
|
143
|
-
.sidebar-nav-menu-large {
|
144
|
-
.sidebar-nav-menu-select {
|
145
|
-
@apply text-base;
|
146
|
-
}
|
147
|
-
|
148
|
-
.sidebar-nav-menu-item {
|
149
|
-
@apply text-base;
|
150
|
-
width: 280px;
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
@@ -1,45 +0,0 @@
|
|
1
|
-
<%= render component_tag(
|
2
|
-
x: {
|
3
|
-
data: "appSidebarNavItem",
|
4
|
-
"on:click": "if (menu) $event.preventDefault()"
|
5
|
-
},
|
6
|
-
class: {
|
7
|
-
active: active?,
|
8
|
-
emphasised: emphasise?
|
9
|
-
}) do %>
|
10
|
-
<%= icon %>
|
11
|
-
<label class="nav-item-label">
|
12
|
-
<%= label %>
|
13
|
-
</label>
|
14
|
-
<% if menu? || menu_items? %>
|
15
|
-
<%= tag.template id: menu_template_id, "x-ref": "menu" do %>
|
16
|
-
<%= tag.div id: menu_id,
|
17
|
-
class: "sidebar-nav-menu",
|
18
|
-
"x-cloak": "" do %>
|
19
|
-
<% if menu? %>
|
20
|
-
<%= menu %>
|
21
|
-
<% else %>
|
22
|
-
<%= safe_join(menu_items) %>
|
23
|
-
|
24
|
-
<% if dropdown_menu_items.any? %>
|
25
|
-
<select
|
26
|
-
x-data
|
27
|
-
class="sidebar-nav-menu-select"
|
28
|
-
@change="navigateTo($el.value)">
|
29
|
-
<% if menu_select_placeholder.present? %>
|
30
|
-
<option disabled="disabled" selected="selected"><%= menu_select_placeholder %></option>
|
31
|
-
<% end %>
|
32
|
-
<% dropdown_menu_items.each do |item| %>
|
33
|
-
<option value="<%= item[:href] %>">
|
34
|
-
<%= item[:label] %> <%= "(#{item[:qualifier]})" if item[:qualifier].present? %>
|
35
|
-
</option>
|
36
|
-
<% end %>
|
37
|
-
</select>
|
38
|
-
<% end %>
|
39
|
-
|
40
|
-
<%= menu_action %>
|
41
|
-
<% end %>
|
42
|
-
<% end %>
|
43
|
-
<% end %>
|
44
|
-
<% end %>
|
45
|
-
<% end %>
|
@@ -1,108 +0,0 @@
|
|
1
|
-
module Coco
|
2
|
-
module App
|
3
|
-
module Blocks
|
4
|
-
class SidebarNavItem < Coco::Component
|
5
|
-
tag_name :a
|
6
|
-
tag_attr :href
|
7
|
-
|
8
|
-
renders_one :icon
|
9
|
-
renders_one :menu
|
10
|
-
|
11
|
-
renders_many :menu_items, ->(label, href, **kwargs) do
|
12
|
-
data = {label: label, href: href, **kwargs}
|
13
|
-
if menu_items.size < max_menu_items
|
14
|
-
SidebarNavMenuItem.new(**data)
|
15
|
-
else
|
16
|
-
dropdown_menu_items << data
|
17
|
-
nil
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
renders_one :menu_action, ->(*args, **kwargs, &block) do
|
22
|
-
tag.div class: "sidebar-nav-menu-item" do
|
23
|
-
coco_button(*args, theme: :primary, size: :sm, fit: :full, **kwargs, &block)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
before_render do
|
28
|
-
set_tag_attr(:id, item_id)
|
29
|
-
if @icon && !icon?
|
30
|
-
with_icon do
|
31
|
-
tag.span(class: "nav-item-icon") do
|
32
|
-
coco_icon(@icon, size: :full)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
attr_reader :label, :tooltip, :dropdown_menu_items, :max_menu_items, :item_id
|
39
|
-
|
40
|
-
def initialize(label:, id: nil, icon: nil, emphasise: false, active: false, tooltip: nil, menu_select_placeholder: nil, max_menu_items: 6, **)
|
41
|
-
@item_id = id
|
42
|
-
@label = label
|
43
|
-
@icon = icon
|
44
|
-
@emphasise = emphasise
|
45
|
-
@tooltip = tooltip
|
46
|
-
@active = active
|
47
|
-
@max_menu_items = max_menu_items
|
48
|
-
@menu_select_placeholder = menu_select_placeholder
|
49
|
-
@dropdown_menu_items = []
|
50
|
-
end
|
51
|
-
|
52
|
-
def tooltip?
|
53
|
-
tooltip.present?
|
54
|
-
end
|
55
|
-
|
56
|
-
def active?
|
57
|
-
@active == true
|
58
|
-
end
|
59
|
-
|
60
|
-
def emphasise?
|
61
|
-
@emphasise == true
|
62
|
-
end
|
63
|
-
|
64
|
-
def menu_select_placeholder
|
65
|
-
@menu_select_placeholder || "More items..."
|
66
|
-
end
|
67
|
-
|
68
|
-
def menu_id
|
69
|
-
"#{item_id}-menu" if item_id.present?
|
70
|
-
end
|
71
|
-
|
72
|
-
def menu_template_id
|
73
|
-
"#{menu_id}-template" if menu_id.present?
|
74
|
-
end
|
75
|
-
|
76
|
-
class SidebarNavMenuItem < Coco::Component
|
77
|
-
attr_reader :icon, :href, :modal
|
78
|
-
|
79
|
-
def initialize(label:, href:, icon: nil, modal: nil, qualifier: nil, **)
|
80
|
-
@label = label
|
81
|
-
@href = href
|
82
|
-
@icon = icon
|
83
|
-
@modal = modal
|
84
|
-
@qualifier = qualifier
|
85
|
-
end
|
86
|
-
|
87
|
-
def call
|
88
|
-
coco_link(href, theme: nil, modal: modal, class: "sidebar-nav-menu-item") do
|
89
|
-
label
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def label
|
94
|
-
tag.span(@label, class: "sidebar-nav-menu-item-text") + qualifier
|
95
|
-
end
|
96
|
-
|
97
|
-
def qualifier
|
98
|
-
if @icon || @qualifier
|
99
|
-
tag.span(class: "sidebar-nav-menu-item-qualifier") do
|
100
|
-
@icon ? coco_icon(icon, size: :sm) : @qualifier
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
File without changes
|
File without changes
|