coveragebook_components 0.7.9 → 0.8.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/build/coco/app.css +1134 -165
  3. data/app/assets/build/coco/app.js +307 -49
  4. data/app/assets/build/coco/book.css +55 -9
  5. data/app/assets/build/coco/book.js +24 -2
  6. data/app/assets/css/app/tippy.css +4 -0
  7. data/app/assets/css/base/base.css +12 -0
  8. data/app/assets/css/base/components/coco.css +0 -3
  9. data/app/assets/js/app/setup.js +22 -0
  10. data/app/assets/js/app.js +2 -0
  11. data/app/assets/js/helpers/location.js +9 -0
  12. data/app/assets/js/libs/tippy/index.js +7 -2
  13. data/app/components/coco/app/blocks/header/header.css +43 -0
  14. data/app/components/coco/app/blocks/header/header.html.erb +30 -0
  15. data/app/components/coco/app/blocks/header/header.js +11 -0
  16. data/app/components/coco/app/blocks/header/header.rb +35 -0
  17. data/app/components/coco/app/blocks/nav_drawer/nav_drawer.css +48 -3
  18. data/app/components/coco/app/blocks/nav_drawer/nav_drawer.html.erb +14 -6
  19. data/app/components/coco/app/blocks/nav_drawer/nav_drawer.js +18 -1
  20. data/app/components/coco/app/blocks/nav_drawer/nav_drawer.rb +26 -1
  21. data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.css +104 -0
  22. data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.html.erb +42 -0
  23. data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.js +28 -0
  24. data/app/components/coco/app/blocks/sidebar_nav/sidebar_nav.rb +28 -0
  25. data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.css +165 -0
  26. data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.html.erb +43 -0
  27. data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.js +41 -0
  28. data/app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.rb +98 -0
  29. data/app/components/coco/app/elements/alert/alert.css +65 -18
  30. data/app/components/coco/app/elements/alert/alert.html.erb +20 -5
  31. data/app/components/coco/app/elements/alert/alert.js +4 -3
  32. data/app/components/coco/app/elements/alert/alert.rb +16 -6
  33. data/app/components/coco/app/elements/button/button.css +87 -5
  34. data/app/components/coco/app/elements/button/button.rb +3 -1
  35. data/app/components/coco/app/elements/button_group/button_group.rb +4 -0
  36. data/app/components/coco/app/elements/button_to/button_to.css +5 -1
  37. data/app/components/coco/app/elements/button_to/button_to.rb +8 -1
  38. data/app/components/coco/app/elements/color_picker/color_picker.rb +1 -1
  39. data/app/components/coco/app/elements/menu/menu.css +5 -0
  40. data/app/components/coco/app/elements/menu/menu.html.erb +1 -1
  41. data/app/components/coco/app/elements/menu/menu.rb +2 -1
  42. data/app/components/coco/app/elements/menu_button/menu_button.html.erb +6 -0
  43. data/app/components/coco/app/elements/menu_button/menu_button.rb +8 -9
  44. data/app/components/coco/app/elements/menu_items/user_profile/user_profile.css +22 -0
  45. data/app/components/coco/app/elements/menu_items/user_profile/user_profile.html.erb +17 -0
  46. data/app/components/coco/app/elements/menu_items/user_profile/user_profile.rb +20 -0
  47. data/app/components/coco/app/elements/notice/notice.css +4 -0
  48. data/app/components/coco/app/elements/notice/notice.rb +2 -2
  49. data/app/components/coco/app/elements/snackbar/snackbar.css +8 -1
  50. data/app/components/coco/app/elements/snackbar/snackbar.rb +2 -2
  51. data/app/components/coco/app/elements/system_banner/system_banner.html.erb +2 -1
  52. data/app/components/coco/app/elements/system_banner/system_banner.js +35 -2
  53. data/app/components/coco/app/elements/system_banner/system_banner.rb +47 -3
  54. data/app/components/coco/app/layouts/application/application.css +104 -4
  55. data/app/components/coco/app/layouts/application/application.html.erb +28 -7
  56. data/app/components/coco/app/layouts/application/application.js +16 -0
  57. data/app/components/coco/app/layouts/application/application.rb +11 -3
  58. data/app/components/coco/base/avatar/avatar.css +25 -0
  59. data/app/components/coco/base/avatar/avatar.rb +20 -0
  60. data/app/components/coco/base/icon/icon.css +6 -2
  61. data/app/components/coco/base/icon/icon.rb +1 -1
  62. data/app/components/coco/base/modal/modal.css +2 -1
  63. data/app/components/coco/base/modal/modal.html.erb +1 -1
  64. data/app/components/coco/base/modal/modal.js +2 -0
  65. data/app/components/coco/base/modal_lightbox/modal_lightbox.js +2 -2
  66. data/app/components/coco/base/placeholder/placeholder.css +15 -1
  67. data/app/components/coco/base/placeholder/placeholder.rb +2 -0
  68. data/app/components/coco/concerns/accepts_tag_attributes.rb +6 -2
  69. data/app/components/coco/concerns/acts_as_button_group.rb +30 -12
  70. data/app/helpers/coco/app_helper.rb +26 -2
  71. data/app/helpers/coco/base_helper.rb +6 -0
  72. data/app/helpers/coco/url_helper.rb +5 -1
  73. data/config/tailwind.base.config.cjs +3 -0
  74. data/config/tokens.cjs +6 -0
  75. data/lib/coco.rb +1 -1
  76. metadata +24 -10
  77. data/app/components/coco/app/blocks/banner/banner.css +0 -5
  78. data/app/components/coco/app/blocks/banner/banner.rb +0 -8
  79. data/app/components/coco/app/blocks/nav_bar/nav_bar.css +0 -51
  80. data/app/components/coco/app/blocks/nav_bar/nav_bar.html.erb +0 -23
  81. data/app/components/coco/app/blocks/nav_bar/nav_bar.js +0 -31
  82. data/app/components/coco/app/blocks/nav_bar/nav_bar.rb +0 -19
@@ -1,9 +1,30 @@
1
- <%= render component_tag do %>
2
- <header class="app-header">
3
- <%= banner %>
4
- <%= navbar %>
5
- </header>
6
- <main class="app-main">
1
+ <%= render component_tag(
2
+ x: {
3
+ data: x_data("appLayout", banner: banner? && banner_content?),
4
+ ":class": "{'with-banner': banner}"
5
+ },
6
+ class: {
7
+ "with-sidebar-nav": sidebar_nav?,
8
+ "with-banner": banner? && banner_content?,
9
+ "with-header": header?
10
+ }) do %>
11
+ <% if banner? && banner_content? %>
12
+ <div class="layout-banner" data-role="app-banner" role="banner" @banner:dismiss="hideBanner">
13
+ <%= banner %>
14
+ </div>
15
+ <% end %>
16
+ <% if header? %>
17
+ <div class="layout-header" data-role="app-header">
18
+ <%= header %>
19
+ </div>
20
+ <% end %>
21
+ <% if sidebar_nav? %>
22
+ <div class="layout-sidebar-nav" data-role="app-sidebar-nav">
23
+ <%= sidebar_nav %>
24
+ </div>
25
+ <% end %>
26
+ <div class="layout-body" data-role="app-body">
7
27
  <%= content %>
8
- </main>
28
+ </div>
29
+ <%= flashes %>
9
30
  <% end %>
@@ -0,0 +1,16 @@
1
+ import { CocoComponent } from "@js/coco";
2
+
3
+ export default CocoComponent("appLayout", (opts) => {
4
+ return {
5
+ banner: false,
6
+
7
+ init() {
8
+ this.banner = opts.banner;
9
+ },
10
+
11
+ hideBanner() {
12
+ this.banner = false;
13
+ this.$el.remove();
14
+ },
15
+ };
16
+ });
@@ -2,10 +2,18 @@ module Coco
2
2
  module App
3
3
  module Layouts
4
4
  class Application < Coco::Component
5
- renders_one :banner, Blocks::Banner
6
- renders_one :navbar, Blocks::NavBar
5
+ include Concerns::AcceptsOptions
7
6
 
8
- component_name :app_application_layout
7
+ renders_one :flashes
8
+ renders_one :banner
9
+ renders_one :header
10
+ renders_one :sidebar_nav
11
+
12
+ component_name :application_layout
13
+
14
+ def banner_content?
15
+ banner.to_s.strip != ""
16
+ end
9
17
  end
10
18
  end
11
19
  end
@@ -0,0 +1,25 @@
1
+ @layer components {
2
+ [data-coco][data-component="avatar"] {
3
+ @apply block rounded-full overflow-hidden flex-none;
4
+
5
+ img {
6
+ @apply w-full rounded-full;
7
+ }
8
+
9
+ &[data-size="sm"] {
10
+ @apply w-5 h-5;
11
+ }
12
+
13
+ &[data-size="md"] {
14
+ @apply w-6 h-6;
15
+ }
16
+
17
+ &[data-size="lg"] {
18
+ @apply w-7 h-7;
19
+ }
20
+
21
+ &[data-size="xl"] {
22
+ @apply w-8 h-8;
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,20 @@
1
+ module Coco
2
+ class Avatar < Coco::Component
3
+ include Concerns::AcceptsOptions
4
+
5
+ accepts_option :size, from: %i[sm md lg xl], default: :md
6
+
7
+ attr_reader :src, :name
8
+
9
+ def initialize(src:, name: nil, **)
10
+ @src = src
11
+ @name = name
12
+ end
13
+
14
+ def call
15
+ render component_tag do
16
+ tag.img src: src, alt: name
17
+ end
18
+ end
19
+ end
20
+ end
@@ -35,11 +35,15 @@
35
35
  }
36
36
 
37
37
  &[data-size="xl"] {
38
- @apply w-9 h-9;
38
+ @apply w-8 h-8;
39
39
  }
40
40
 
41
41
  &[data-size="xxl"] {
42
- @apply w-12 h-12;
42
+ @apply w-10 h-10;
43
+ }
44
+
45
+ &[data-size="full"] {
46
+ @apply w-full h-full;
43
47
  }
44
48
 
45
49
  /* Motion */
@@ -6,7 +6,7 @@ module Coco
6
6
 
7
7
  InvalidIconError = Class.new(StandardError)
8
8
 
9
- accepts_option :size, from: %i[xs sm md lg xl xxl]
9
+ accepts_option :size, from: %i[xs sm md lg xl xxl full]
10
10
  accepts_option :spin, from: [true, false]
11
11
  accepts_option :style, from: [:line, :fill, :custom]
12
12
 
@@ -7,7 +7,8 @@
7
7
  }
8
8
 
9
9
  .modal-container {
10
- @apply relative flex min-h-screen justify-center items-center z-[10000] p-2 sm:p-8;
10
+ @apply relative flex justify-center items-center z-[10000] p-2 sm:p-8;
11
+ min-height: var(--app-height);
11
12
  }
12
13
 
13
14
  .modal-content {
@@ -12,7 +12,7 @@
12
12
  },
13
13
  ) do %>
14
14
  <div class="modal-overlay" x-bind="overlay"></div>
15
- <div class="modal-container" x-bind="container" x-ref="container">
15
+ <div class="modal-container" x-bind="container" x-ref="container">
16
16
  <div class="modal-content" x-trap.noscroll.inert.noreturn="open">
17
17
  <%= modal_content %>
18
18
  </div>
@@ -1,4 +1,5 @@
1
1
  import { CocoComponent } from "@js/coco";
2
+ import { hideAll } from "@libs/tippy";
2
3
 
3
4
  export default CocoComponent("modal", () => {
4
5
  return {
@@ -19,6 +20,7 @@ export default CocoComponent("modal", () => {
19
20
 
20
21
  show() {
21
22
  this.open = true;
23
+ hideAll();
22
24
  setTimeout(() => {
23
25
  this.$dispatch("modal:shown");
24
26
  }, 400);
@@ -16,12 +16,12 @@ export default CocoComponent("modalLightbox", () => {
16
16
 
17
17
  imageLoaded() {
18
18
  this.loaded = true;
19
- this.$nextTick(() => {
19
+ setTimeout(() => {
20
20
  const scrollTop = parseInt(this.img.dataset.scrollTop, 10);
21
21
  if (!isNaN(scrollTop) && scrollTop !== 0) {
22
22
  this.modal.scrollTo(scrollTop);
23
23
  }
24
- });
24
+ }, 200);
25
25
  },
26
26
 
27
27
  get img() {
@@ -1,6 +1,20 @@
1
1
  @layer components {
2
2
  [data-coco][data-component="placeholder"] {
3
- @apply border border-dashed border-gray-400 p-4 bg-gray-50 text-center;
3
+ @apply p-4;
4
+
5
+ &[data-boxed="true"] {
6
+ @apply border border-dashed border-gray-400 bg-gray-50;
7
+ }
8
+
9
+ &[data-prose="true"] {
10
+ .placeholder-content {
11
+ @apply space-y-3;
12
+ }
13
+ }
14
+
15
+ &[data-prose="false"] {
16
+ @apply text-center;
17
+ }
4
18
 
5
19
  &[data-size="full"] {
6
20
  @apply w-full h-full;
@@ -3,5 +3,7 @@ module Coco
3
3
  include Concerns::AcceptsOptions
4
4
 
5
5
  accepts_option :size, from: [:auto, :full], default: :auto
6
+ accepts_option :prose, from: [true, false], default: false
7
+ accepts_option :boxed, from: [true, false], default: true
6
8
  end
7
9
  end
@@ -11,8 +11,8 @@ module Coco
11
11
  @_tag_name
12
12
  end
13
13
 
14
- def tag_attr(*attr_names)
15
- tag_attr_names.push(*attr_names)
14
+ def tag_attr(*)
15
+ tag_attr_names.push(*)
16
16
  end
17
17
 
18
18
  def tag_attr_names
@@ -48,6 +48,10 @@ module Coco
48
48
  tag_attrs.key?(attr_name)
49
49
  end
50
50
 
51
+ def tag_attr(attr_name, fallback = nil)
52
+ tag_attrs.fetch(attr_name, fallback)
53
+ end
54
+
51
55
  private
52
56
 
53
57
  def process_tag_attrs(args)
@@ -4,24 +4,42 @@ module Coco
4
4
  extend ActiveSupport::Concern
5
5
  include Coco::AppHelper
6
6
 
7
+ BUTTON_TYPES = {
8
+ menu: "Coco::App::Elements::MenuButton",
9
+ color_picker: "Coco::App::Elements::ColorPickerButton",
10
+ layout_picker: "Coco::App::Elements::LayoutPickerButton",
11
+ image_picker: "Coco::App::Elements::ImagePickerButton",
12
+ dropdown: "Coco::App::Elements::DropdownButton"
13
+ }
14
+
7
15
  included do
8
16
  renders_many :items, types: {
17
+ noop: -> {},
9
18
  divider: ->(**kwargs) { tag.div(class: "divider") },
10
- button: ->(**kwargs) {
11
- if kwargs.key?(:action) || kwargs.key?(:method) || kwargs.key?(:params)
12
- App::Elements::ButtonTo.new(**button_kwargs(kwargs, :button_to))
13
- else
14
- App::Elements::Button.new(**button_kwargs(kwargs, :button))
15
- end
16
- },
17
- menu_button: ->(**kwargs) { App::Elements::MenuButton.new(**button_kwargs(kwargs, :menu)) },
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)) },
20
- image_picker_button: ->(**kwargs) { App::Elements::ImagePickerButton.new(**button_kwargs(kwargs, :image_picker)) },
21
- dropdown_button: ->(**kwargs) { App::Elements::DropdownButton.new(**button_kwargs(kwargs, :dropdown)) }
19
+ button: ->(*args, **kwargs, &block) { coco_button(*args, **button_kwargs(kwargs, :button), &block) },
20
+ menu_button: ->(*args, **kwargs, &block) { instantiate_button(:menu, *args, **kwargs, &block) },
21
+ dropdown_button: ->(*args, **kwargs, &block) { instantiate_button(:dropdown, *args, **kwargs, &block) },
22
+ color_picker_button: ->(*args, **kwargs, &block) { instantiate_button(:color_picker, *args, **kwargs, &block) },
23
+ image_picker_button: ->(*args, **kwargs, &block) { instantiate_button(:image_picker, *args, **kwargs, &block) },
24
+ layout_picker_button: ->(*args, **kwargs, &block) { instantiate_button(:layout_picker, *args, **kwargs, &block) }
22
25
  }
23
26
  end
24
27
 
28
+ def instantiate_button(type, *args, **kwargs, &block)
29
+ href, content = if block
30
+ [args.first, nil]
31
+ else
32
+ (args.size == 1) ? [nil, args.first] : args[0..2].reverse!
33
+ end
34
+ component = BUTTON_TYPES[type].constantize.new(href: href, **button_kwargs(kwargs, type))
35
+ component.with_content(content) if !block && content.present?
36
+ component
37
+ end
38
+
39
+ def init_button_group
40
+ with_item_noop
41
+ end
42
+
25
43
  def with_divider(...)
26
44
  with_item_divider(...)
27
45
  end
@@ -1,7 +1,11 @@
1
1
  module Coco
2
2
  module AppHelper
3
3
  def coco_link(*args, **, &block)
4
- href, content = args[0..2].reverse!
4
+ href, content = if block
5
+ [args.first, nil]
6
+ else
7
+ (args.size == 1) ? [nil, args.first] : args[0..2].reverse!
8
+ end
5
9
 
6
10
  link = Coco::App::Elements::Link.new(href: href, **)
7
11
  link = link.with_content(content) if !block && content.present?
@@ -10,7 +14,11 @@ module Coco
10
14
  end
11
15
 
12
16
  def coco_button(*args, **kwargs, &block)
13
- href, content = args[0..2].reverse!
17
+ href, content = if block
18
+ [args.first, nil]
19
+ else
20
+ (args.size == 1) ? [nil, args.first] : args[0..2].reverse!
21
+ end
14
22
 
15
23
  button = if kwargs.key?(:action) || kwargs.key?(:method) || kwargs.key?(:params)
16
24
  "ButtonTo"
@@ -87,5 +95,21 @@ module Coco
87
95
  def coco_fields(**, &block)
88
96
  fields(**, builder: Coco::AppFormBuilder, &block)
89
97
  end
98
+
99
+ def coco_layout(name, **, &block)
100
+ render coco_component("app/layouts/#{name}", **), &block
101
+ end
102
+
103
+ def coco_app_header(*, **, &block)
104
+ render Coco::App::Blocks::Header.new(*, **), &block
105
+ end
106
+
107
+ def coco_sidebar_nav(*, **, &block)
108
+ render Coco::App::Blocks::SidebarNav.new(*, **), &block
109
+ end
110
+
111
+ def coco_menu_item(type, **, &block)
112
+ render coco_component("app/elements/menu_items/#{type}", **), &block
113
+ end
90
114
  end
91
115
  end
@@ -12,6 +12,10 @@ module Coco
12
12
  render Coco::Image.new(src: src, **)
13
13
  end
14
14
 
15
+ def coco_avatar(src, name = nil, **)
16
+ render Coco::Avatar.new(src: src, name: name, **)
17
+ end
18
+
15
19
  def coco_icon(icon_name = nil, **, &block)
16
20
  render Coco::Icon.new(name: icon_name, **), &block
17
21
  end
@@ -56,6 +60,8 @@ module Coco
56
60
  end
57
61
 
58
62
  def coco_modal_data_attributes(name = "default")
63
+ return {} if name.nil?
64
+
59
65
  {
60
66
  turbo: true,
61
67
  turbo_frame: coco_modal_frame_id(name)
@@ -9,7 +9,11 @@ module Coco
9
9
 
10
10
  href = Coco::ActionViewHelper.url_target(name, options)
11
11
 
12
- coco_link(name, href, **html_options.symbolize_keys!, &block)
12
+ if block
13
+ coco_link(href, **html_options.symbolize_keys!, &block)
14
+ else
15
+ coco_link(name, href, **html_options.symbolize_keys!)
16
+ end
13
17
  end
14
18
 
15
19
  def coco_button_to(name = nil, options = nil, html_options = nil, &block)
@@ -26,6 +26,9 @@ module.exports = {
26
26
  spin: "spin 1.5s linear infinite",
27
27
  "spin-reverse": "spin 1.5s linear infinite reverse",
28
28
  },
29
+ width: {
30
+ 18: "4.5rem",
31
+ },
29
32
  customForms: () => ({
30
33
  DEFAULT: {
31
34
  checkbox: {
data/config/tokens.cjs CHANGED
@@ -90,6 +90,9 @@ const colorAliases = {
90
90
  ...colors.blue,
91
91
  },
92
92
  background: {
93
+ header: {
94
+ DEFAULT: "#427484",
95
+ },
93
96
  light: {
94
97
  1: colors.white,
95
98
  2: colors.gray[50],
@@ -136,6 +139,7 @@ const colorAliases = {
136
139
  DEFAULT: colors.green[500],
137
140
  dark: colors.green[600],
138
141
  inverse: colors.green[300],
142
+ "inverse-vivid": "#009979",
139
143
  },
140
144
  negative: {
141
145
  DEFAULT: colors.red[600],
@@ -168,6 +172,7 @@ const screens = {
168
172
  xl: "1200px",
169
173
  "2xl": "1400px",
170
174
  max: "1800px",
175
+ letterbox: { raw: "(max-height: 760px) and (min-width: 576px)" },
171
176
  print: { raw: "print" }, // Note: PDFs are rendered at a viewport width of 1280px
172
177
  };
173
178
 
@@ -177,6 +182,7 @@ const fontSize = {
177
182
  "para-md": ["16px", "24px"],
178
183
  "para-lg": ["18px", "27px"],
179
184
 
185
+ "label-xxs": ["10px", "12px"],
180
186
  "label-xs": ["12px", "14px"],
181
187
  "label-sm": ["14px", "16px"],
182
188
  "label-md": ["16px", "20px"],
data/lib/coco.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Coco
2
- VERSION = "0.7.9"
2
+ VERSION = "0.8.0.beta.1"
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.7.9
4
+ version: 0.8.0.beta.1
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-10-17 00:00:00.000000000 Z
11
+ date: 2023-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -1323,6 +1323,7 @@ files:
1323
1323
  - app/assets/img/test/slides/slide-foreground-portrait.jpg
1324
1324
  - app/assets/js/app.js
1325
1325
  - app/assets/js/app/components.js
1326
+ - app/assets/js/app/setup.js
1326
1327
  - app/assets/js/base/components.js
1327
1328
  - app/assets/js/book.js
1328
1329
  - app/assets/js/book/components.js
@@ -1332,6 +1333,7 @@ files:
1332
1333
  - app/assets/js/helpers/dom.js
1333
1334
  - app/assets/js/helpers/file.js
1334
1335
  - app/assets/js/helpers/lang.js
1336
+ - app/assets/js/helpers/location.js
1335
1337
  - app/assets/js/helpers/path.js
1336
1338
  - app/assets/js/helpers/screenshot.js
1337
1339
  - app/assets/js/helpers/turbo_events.js
@@ -1346,16 +1348,22 @@ files:
1346
1348
  - app/assets/js/libs/alpine/utils/tippy_modifiers.js
1347
1349
  - app/assets/js/libs/tippy/index.js
1348
1350
  - app/assets/js/libs/tippy/plugins/hide_on_esc.js
1349
- - app/components/coco/app/blocks/banner/banner.css
1350
- - app/components/coco/app/blocks/banner/banner.rb
1351
- - app/components/coco/app/blocks/nav_bar/nav_bar.css
1352
- - app/components/coco/app/blocks/nav_bar/nav_bar.html.erb
1353
- - app/components/coco/app/blocks/nav_bar/nav_bar.js
1354
- - app/components/coco/app/blocks/nav_bar/nav_bar.rb
1351
+ - app/components/coco/app/blocks/header/header.css
1352
+ - app/components/coco/app/blocks/header/header.html.erb
1353
+ - app/components/coco/app/blocks/header/header.js
1354
+ - app/components/coco/app/blocks/header/header.rb
1355
1355
  - app/components/coco/app/blocks/nav_drawer/nav_drawer.css
1356
1356
  - app/components/coco/app/blocks/nav_drawer/nav_drawer.html.erb
1357
1357
  - app/components/coco/app/blocks/nav_drawer/nav_drawer.js
1358
1358
  - app/components/coco/app/blocks/nav_drawer/nav_drawer.rb
1359
+ - app/components/coco/app/blocks/sidebar_nav/sidebar_nav.css
1360
+ - app/components/coco/app/blocks/sidebar_nav/sidebar_nav.html.erb
1361
+ - app/components/coco/app/blocks/sidebar_nav/sidebar_nav.js
1362
+ - app/components/coco/app/blocks/sidebar_nav/sidebar_nav.rb
1363
+ - app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.css
1364
+ - app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.html.erb
1365
+ - app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.js
1366
+ - app/components/coco/app/blocks/sidebar_nav_item/sidebar_nav_item.rb
1359
1367
  - app/components/coco/app/blocks/slat/slat.css
1360
1368
  - app/components/coco/app/blocks/slat/slat.rb
1361
1369
  - app/components/coco/app/blocks/slide_editor/slide_editor.css
@@ -1408,6 +1416,9 @@ files:
1408
1416
  - app/components/coco/app/elements/menu_button/menu_button.html.erb
1409
1417
  - app/components/coco/app/elements/menu_button/menu_button.js
1410
1418
  - app/components/coco/app/elements/menu_button/menu_button.rb
1419
+ - app/components/coco/app/elements/menu_items/user_profile/user_profile.css
1420
+ - app/components/coco/app/elements/menu_items/user_profile/user_profile.html.erb
1421
+ - app/components/coco/app/elements/menu_items/user_profile/user_profile.rb
1411
1422
  - app/components/coco/app/elements/notice/notice.css
1412
1423
  - app/components/coco/app/elements/notice/notice.html.erb
1413
1424
  - app/components/coco/app/elements/notice/notice.js
@@ -1467,7 +1478,10 @@ files:
1467
1478
  - app/components/coco/app/fields/weekday_select_component.rb
1468
1479
  - app/components/coco/app/layouts/application/application.css
1469
1480
  - app/components/coco/app/layouts/application/application.html.erb
1481
+ - app/components/coco/app/layouts/application/application.js
1470
1482
  - app/components/coco/app/layouts/application/application.rb
1483
+ - app/components/coco/base/avatar/avatar.css
1484
+ - app/components/coco/base/avatar/avatar.rb
1471
1485
  - app/components/coco/base/button/button.css
1472
1486
  - app/components/coco/base/button/button.html.erb
1473
1487
  - app/components/coco/base/button/button.js
@@ -1591,9 +1605,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1591
1605
  version: 3.2.0
1592
1606
  required_rubygems_version: !ruby/object:Gem::Requirement
1593
1607
  requirements:
1594
- - - ">="
1608
+ - - ">"
1595
1609
  - !ruby/object:Gem::Version
1596
- version: '0'
1610
+ version: 1.3.1
1597
1611
  requirements: []
1598
1612
  rubygems_version: 3.4.19
1599
1613
  signing_key:
@@ -1,5 +0,0 @@
1
- @layer components {
2
- [data-coco][data-component="app-banner"] {
3
- @apply px-app py-2 text-center;
4
- }
5
- }
@@ -1,8 +0,0 @@
1
- module Coco
2
- module App
3
- module Blocks
4
- class Banner < Coco::Component
5
- end
6
- end
7
- end
8
- end
@@ -1,51 +0,0 @@
1
- @layer components {
2
- [data-coco][data-component="app-navbar"] {
3
- @apply @container;
4
-
5
- .nav-content {
6
- @apply h-11 @lg:h-14 flex items-center bg-teal-700 px-app;
7
- }
8
-
9
- .nav-logo {
10
- @apply flex-none mr-8;
11
- }
12
-
13
- .nav-logo-small {
14
- @apply h-6 @lg:hidden;
15
- }
16
-
17
- .nav-logo-full {
18
- @apply hidden @lg:block h-7;
19
- }
20
-
21
- .nav-links {
22
- @apply flex items-center w-full overflow-hidden;
23
- }
24
-
25
- .nav-link-group {
26
- @apply flex items-center gap-x-6;
27
-
28
- .nav-button {
29
- > .button-inner {
30
- @apply whitespace-nowrap text-white gap-2 text-label-sm @5xl:text-label-md py-2;
31
- }
32
-
33
- [data-component="icon"] {
34
- @apply w-4 h-4;
35
- }
36
- }
37
- }
38
-
39
- .nav-secondary {
40
- @apply ml-auto;
41
- }
42
-
43
- .nav-mobile-controls {
44
- @apply flex items-center ml-auto text-white -mr-2;
45
-
46
- [data-component="app-button"] {
47
- @apply p-2;
48
- }
49
- }
50
- }
51
- }
@@ -1,23 +0,0 @@
1
- <%= render component_tag(x: {data: "appNavBar"}) do %>
2
- <div class="nav-content">
3
- <div class="nav-logo">
4
- <%= image_tag asset_url("coco/img/coveragebook-logomark-white.svg"),
5
- alt: "CoverageBook logomark",
6
- class: "nav-logo-small" %>
7
- <%= image_tag asset_url("coco/img/coveragebook-landscape-white.svg"),
8
- alt: "CoverageBook full logo",
9
- class: "nav-logo-full" %>
10
- </div>
11
- <div class="nav-links" x-ref="links">
12
- <div class="nav-link-group nav-primary" x-ref="primaryLinks" x-show="!mobile" x-cloak>
13
- <%= safe_join(primary_buttons) %>
14
- </div>
15
- <div class="nav-link-group nav-secondary" x-ref="secondaryLinks" x-show="!mobile" x-cloak>
16
- <%= safe_join(secondary_buttons) %>
17
- </div>
18
- <div class="nav-mobile-controls" x-show="mobile" x-cloak>
19
- <%= coco_button(icon: :menu, theme: nil) %>
20
- </div>
21
- </div>
22
- </div>
23
- <% end %>
@@ -1,31 +0,0 @@
1
- import { CocoComponent } from "@js/coco";
2
- import { getHiddenElementDimensions as getSize } from "@helpers/dom";
3
- import tokens from "@config/tokens.cjs";
4
-
5
- export default CocoComponent("appNavBar", () => {
6
- const mobileMaxWidth = parseInt(tokens.app.screens.md, 10);
7
- return {
8
- mobile: true,
9
- init() {
10
- const sizeObserver = new ResizeObserver(
11
- Alpine.throttle((entries) => {
12
- this.$nextTick(() => {
13
- const navWidth = entries[0].contentRect.width;
14
- const linksWidth = this.$refs.links.offsetWidth;
15
- const primaryWidth = getSize(this.$refs.primaryLinks, "flex").width;
16
- const secondaryWidth = getSize(
17
- this.$refs.secondaryLinks,
18
- "flex"
19
- ).width;
20
- const difference = linksWidth - primaryWidth - secondaryWidth;
21
-
22
- this.mobile =
23
- navWidth < mobileMaxWidth || this.mobudifference <= 50;
24
- });
25
- }, 20)
26
- );
27
-
28
- sizeObserver.observe(this.$root);
29
- },
30
- };
31
- });