better_ui 0.1.0 → 0.4.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +65 -1
  3. data/app/assets/javascripts/better_ui/controllers/navbar_controller.js +138 -0
  4. data/app/assets/javascripts/better_ui/controllers/sidebar_controller.js +211 -0
  5. data/app/assets/javascripts/better_ui/controllers/toast_controller.js +161 -0
  6. data/app/assets/javascripts/better_ui/index.js +159 -0
  7. data/app/assets/javascripts/better_ui/toast_manager.js +77 -0
  8. data/app/assets/stylesheets/better_ui/application.css +25 -351
  9. data/app/components/better_ui/application/alert_component.html.erb +27 -0
  10. data/app/components/better_ui/application/alert_component.rb +196 -0
  11. data/app/components/better_ui/application/header_component.html.erb +88 -0
  12. data/app/components/better_ui/application/header_component.rb +188 -0
  13. data/app/components/better_ui/application/navbar_component.html.erb +294 -0
  14. data/app/components/better_ui/application/navbar_component.rb +249 -0
  15. data/app/components/better_ui/application/sidebar_component.html.erb +207 -0
  16. data/app/components/better_ui/application/sidebar_component.rb +318 -0
  17. data/app/components/better_ui/application/toast_component.html.erb +35 -0
  18. data/app/components/better_ui/application/toast_component.rb +188 -0
  19. data/app/components/better_ui/general/breadcrumb_component.html.erb +39 -0
  20. data/app/components/better_ui/general/breadcrumb_component.rb +132 -0
  21. data/app/components/better_ui/general/button_component.html.erb +34 -0
  22. data/app/components/better_ui/general/button_component.rb +193 -0
  23. data/app/components/better_ui/general/heading_component.html.erb +25 -0
  24. data/app/components/better_ui/general/heading_component.rb +142 -0
  25. data/app/components/better_ui/general/icon_component.html.erb +2 -0
  26. data/app/components/better_ui/general/icon_component.rb +101 -0
  27. data/app/components/better_ui/general/panel_component.html.erb +27 -0
  28. data/app/components/better_ui/general/panel_component.rb +97 -0
  29. data/app/components/better_ui/general/table_component.html.erb +37 -0
  30. data/app/components/better_ui/general/table_component.rb +141 -0
  31. data/app/components/better_ui/theme_helper.rb +169 -0
  32. data/app/controllers/better_ui/application_controller.rb +1 -0
  33. data/app/controllers/better_ui/docs_controller.rb +18 -25
  34. data/app/helpers/better_ui_application_helper.rb +99 -0
  35. data/app/views/layouts/component_preview.html.erb +32 -0
  36. data/config/initializers/lookbook.rb +23 -0
  37. data/config/routes.rb +6 -1
  38. data/lib/better_ui/engine.rb +24 -1
  39. data/lib/better_ui/version.rb +1 -1
  40. metadata +103 -7
  41. data/app/helpers/better_ui/application_helper.rb +0 -183
  42. data/app/views/better_ui/docs/component.html.erb +0 -365
  43. data/app/views/better_ui/docs/index.html.erb +0 -100
  44. data/app/views/better_ui/docs/show.html.erb +0 -60
  45. data/app/views/layouts/better_ui/application.html.erb +0 -135
@@ -0,0 +1,169 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BetterUi
4
+ module ThemeHelper
5
+ # Colori principali del tema
6
+ THEME_COLORS = {
7
+ # Neutrali
8
+ white: 'bg-white',
9
+ black: 'bg-black',
10
+
11
+ # Colori del tema
12
+ primary: {
13
+ light: 'bg-orange-100',
14
+ default: 'bg-orange-500',
15
+ dark: 'bg-orange-600',
16
+ text: 'text-white'
17
+ },
18
+ secondary: {
19
+ light: 'bg-gray-100',
20
+ default: 'bg-gray-200',
21
+ dark: 'bg-gray-300',
22
+ text: 'text-gray-800'
23
+ },
24
+ success: {
25
+ light: 'bg-green-100',
26
+ default: 'bg-green-500',
27
+ dark: 'bg-green-600',
28
+ text: 'text-white'
29
+ },
30
+ warning: {
31
+ light: 'bg-amber-100',
32
+ default: 'bg-amber-500',
33
+ dark: 'bg-amber-600',
34
+ text: 'text-white'
35
+ },
36
+ danger: {
37
+ light: 'bg-red-100',
38
+ default: 'bg-red-500',
39
+ dark: 'bg-red-600',
40
+ text: 'text-white'
41
+ },
42
+ info: {
43
+ light: 'bg-blue-100',
44
+ default: 'bg-blue-500',
45
+ dark: 'bg-blue-600',
46
+ text: 'text-white'
47
+ }
48
+ }
49
+
50
+ # Bordi del tema
51
+ THEME_BORDERS = {
52
+ primary: 'border-orange-200',
53
+ secondary: 'border-gray-200',
54
+ success: 'border-green-200',
55
+ warning: 'border-amber-200',
56
+ danger: 'border-red-200',
57
+ info: 'border-blue-200'
58
+ }
59
+
60
+ # Effetti hover
61
+ THEME_HOVER = {
62
+ primary: 'hover:bg-orange-600',
63
+ secondary: 'hover:bg-gray-300',
64
+ success: 'hover:bg-green-600',
65
+ warning: 'hover:bg-amber-600',
66
+ danger: 'hover:bg-red-600',
67
+ info: 'hover:bg-blue-600'
68
+ }
69
+
70
+ # Stili base comuni
71
+ COMMON_STYLES = {
72
+ rounded: 'rounded-md',
73
+ shadow: 'shadow-sm',
74
+ transitions: 'transition-all duration-200'
75
+ }
76
+
77
+ # Stili per elementi di layout
78
+ LAYOUT_STYLES = {
79
+ panel: {
80
+ base: 'rounded-lg border shadow-sm',
81
+ header: 'px-4 py-3 border-b',
82
+ body: 'p-4',
83
+ footer: 'px-4 py-3 border-t'
84
+ },
85
+ table: {
86
+ container: 'overflow-hidden rounded-md border shadow-sm',
87
+ header: 'bg-gray-50 text-left text-xs uppercase tracking-wider text-gray-500 font-medium',
88
+ row: {
89
+ base: '',
90
+ hover: 'hover:bg-gray-50',
91
+ striped: 'even:bg-white odd:bg-gray-50'
92
+ },
93
+ cell: 'px-4 py-3 text-sm text-gray-700'
94
+ }
95
+ }
96
+
97
+ # Genera classi per un componente basato su variante
98
+ def self.generate_component_classes(component_type, variant, options = {})
99
+ base_classes = []
100
+
101
+ case component_type
102
+ when :button
103
+ base_classes << 'inline-flex items-center justify-center'
104
+ base_classes << 'font-medium'
105
+ base_classes << COMMON_STYLES[:rounded]
106
+ base_classes << COMMON_STYLES[:transitions]
107
+
108
+ if options[:outline]
109
+ # Versione outline
110
+ base_classes << 'border-2'
111
+ base_classes << "border-#{variant}-500"
112
+ base_classes << "text-#{variant}-500"
113
+ base_classes << "hover:bg-#{variant}-50"
114
+ else
115
+ # Versione piena
116
+ base_classes << THEME_COLORS.dig(variant.to_sym, :default)&.sub('bg-', '') || "bg-#{variant}-500"
117
+ base_classes << THEME_COLORS.dig(variant.to_sym, :text) || 'text-white'
118
+ base_classes << THEME_HOVER[variant.to_sym] || "hover:bg-#{variant}-600"
119
+ end
120
+
121
+ # Dimensione
122
+ case options[:size]
123
+ when :sm
124
+ base_classes << 'px-2.5 py-1.5 text-xs'
125
+ when :lg
126
+ base_classes << 'px-6 py-3 text-base'
127
+ else # :md (default)
128
+ base_classes << 'px-4 py-2 text-sm'
129
+ end
130
+
131
+ # Disabilitato
132
+ if options[:disabled]
133
+ base_classes << 'opacity-50 cursor-not-allowed'
134
+ end
135
+
136
+ # Larghezza piena
137
+ if options[:full_width]
138
+ base_classes << 'w-full'
139
+ end
140
+
141
+ when :panel
142
+ base_classes << LAYOUT_STYLES[:panel][:base]
143
+
144
+ # Colore di sfondo in base alla variante
145
+ if variant.to_sym == :default
146
+ base_classes << 'bg-white'
147
+ base_classes << 'border-gray-200'
148
+ else
149
+ base_classes << THEME_COLORS.dig(variant.to_sym, :light)&.sub('bg-', '') || "bg-#{variant}-50"
150
+ base_classes << THEME_BORDERS[variant.to_sym] || "border-#{variant}-200"
151
+ end
152
+
153
+ when :table
154
+ base_classes << 'min-w-full bg-white'
155
+
156
+ # Bordi
157
+ if options[:bordered]
158
+ base_classes << 'border-collapse'
159
+ base_classes << (THEME_BORDERS[variant.to_sym] || 'border-gray-200')
160
+ end
161
+
162
+ # Classi personalizzate
163
+ base_classes << options[:classes] if options[:classes].present?
164
+ end
165
+
166
+ base_classes.compact.join(' ')
167
+ end
168
+ end
169
+ end
@@ -1,4 +1,5 @@
1
1
  module BetterUi
2
2
  class ApplicationController < ActionController::Base
3
+ layout 'better_ui/application'
3
4
  end
4
5
  end
@@ -1,41 +1,34 @@
1
1
  module BetterUi
2
2
  class DocsController < ApplicationController
3
3
  def index
4
- @components = [
5
- { name: 'Button', path: better_ui.docs_component_path('button') },
6
- { name: 'Alert', path: better_ui.docs_component_path('alert') },
7
- { name: 'Card', path: better_ui.docs_component_path('card') },
8
- { name: 'Modal', path: better_ui.docs_component_path('modal') },
9
- { name: 'Tabs', path: better_ui.docs_component_path('tabs') },
10
- { name: 'Form Elements', path: better_ui.docs_component_path('form_elements') }
11
- ]
4
+ # Pagina principale della documentazione
12
5
  end
13
6
 
14
7
  def show
15
- doc_file = Rails.root.join('docs', "#{params[:page]}.md")
8
+ # Verifica se esiste una vista con il nome richiesto
9
+ page = params[:page]
10
+ valid_pages = %w[introduction installation customization components/buttons components/icons components/panel components/table]
16
11
 
17
- if File.exist?(doc_file)
18
- @content = File.read(doc_file)
12
+ if valid_pages.include?(page)
13
+ if page.start_with?('components/')
14
+ # Per i componenti, rendiamo esplicitamente il template nella directory corretta
15
+ component_name = page.split('/').last
16
+ render template: "better_ui/docs/components/#{component_name}"
17
+ else
18
+ render page
19
+ end
19
20
  else
20
- @content = "# Documentazione non trovata\nLa pagina richiesta non è stata trovata."
21
+ # Pagina non trovata
22
+ render plain: "Pagina non trovata", status: :not_found
21
23
  end
22
24
  end
23
25
 
24
26
  def component
27
+ # Gestisce le rotte tipo /better_ui/docs/components/button
25
28
  component_name = params[:component]
26
-
27
- # Percorso relativo ai file di documentazione dei componenti
28
- doc_file = BetterUi::Engine.root.join('docs', 'components', "#{component_name}.md")
29
-
30
- if File.exist?(doc_file)
31
- @content = File.read(doc_file)
32
- else
33
- @content = "# Componente non trovato\nLa documentazione per il componente '#{component_name}' non è stata trovata."
34
- end
35
-
36
- # Decidere quali esempi mostrare in base al componente
37
- @component_name = component_name
38
- render :component
29
+ render template: "better_ui/docs/components/#{component_name}"
30
+ rescue ActionView::MissingTemplate
31
+ render plain: "Componente non trovato", status: :not_found
39
32
  end
40
33
  end
41
34
  end
@@ -0,0 +1,99 @@
1
+ module BetterUi
2
+ module ApplicationHelper
3
+ # Render markdown
4
+ def better_ui_markdown(text)
5
+ return '' if text.blank?
6
+
7
+ renderer = Redcarpet::Render::HTML.new(
8
+ filter_html: false,
9
+ hard_wrap: true,
10
+ link_attributes: { target: '_blank', rel: 'noopener noreferrer' }
11
+ )
12
+
13
+ markdown = Redcarpet::Markdown.new(
14
+ renderer,
15
+ autolink: true,
16
+ tables: true,
17
+ fenced_code_blocks: true,
18
+ strikethrough: true,
19
+ superscript: true,
20
+ underline: true,
21
+ highlight: true,
22
+ quote: true,
23
+ footnotes: true
24
+ )
25
+
26
+ rendered_html = markdown.render(text).html_safe
27
+
28
+ # Applica classi Tailwind agli elementi HTML generati dal markdown
29
+ rendered_html
30
+ .gsub(/<h1>/i, '<h1 class="text-3xl font-bold mb-6 pb-2 border-b border-gray-200">')
31
+ .gsub(/<h2>/i, '<h2 class="text-2xl font-semibold mt-8 mb-4 pb-2 border-b border-gray-100">')
32
+ .gsub(/<h3>/i, '<h3 class="text-xl font-medium mt-6 mb-3">')
33
+ .gsub(/<pre>/i, '<pre class="bg-gray-100 p-4 rounded-md overflow-x-auto my-4">')
34
+ .gsub(/<code>/i, '<code class="font-mono">')
35
+ .gsub(/<ul>/i, '<ul class="ml-6 mb-4">')
36
+ .gsub(/<ol>/i, '<ol class="ml-6 mb-4">')
37
+ .gsub(/<p>/i, '<p class="mb-4 leading-relaxed">')
38
+ .gsub(/<a /i, '<a class="text-blue-600 no-underline hover:underline" ')
39
+ .gsub(/<blockquote>/i, '<blockquote class="border-l-4 border-gray-200 pl-4 ml-0 text-gray-600">')
40
+ .html_safe
41
+ end
42
+
43
+ # Determina se il path corrente corrisponde a quello dato
44
+ def current_page?(path)
45
+ request.path == path
46
+ end
47
+
48
+ # Helper per i componenti General
49
+ def better_ui_general_button(label = nil, **options)
50
+ render BetterUi::General::ButtonComponent.new(label: label, **options)
51
+ end
52
+
53
+ def better_ui_general_panel(**options, &block)
54
+ render BetterUi::General::PanelComponent.new(**options), &block
55
+ end
56
+
57
+ def better_ui_general_table(**options)
58
+ render BetterUi::General::TableComponent.new(**options)
59
+ end
60
+
61
+ def better_ui_general_icon(name, **options)
62
+ render BetterUi::General::IconComponent.new(name: name, **options)
63
+ end
64
+
65
+ # Helper per i componenti Application
66
+ def better_ui_application_button(label = nil, **options)
67
+ render BetterUi::Application::ButtonComponent.new(label: label, **options)
68
+ end
69
+
70
+ def better_ui_application_panel(**options, &block)
71
+ render BetterUi::Application::PanelComponent.new(**options), &block
72
+ end
73
+
74
+ def better_ui_application_table(**options)
75
+ render BetterUi::Application::TableComponent.new(**options)
76
+ end
77
+
78
+ def better_ui_application_icon(name, **options)
79
+ render BetterUi::Application::IconComponent.new(name: name, **options)
80
+ end
81
+
82
+ # Helper per i componenti Website
83
+ def better_ui_website_button(label = nil, **options)
84
+ render BetterUi::Website::ButtonComponent.new(label: label, **options)
85
+ end
86
+
87
+ def better_ui_website_panel(**options, &block)
88
+ render BetterUi::Website::PanelComponent.new(**options), &block
89
+ end
90
+
91
+ def better_ui_website_table(**options)
92
+ render BetterUi::Website::TableComponent.new(**options)
93
+ end
94
+
95
+ def better_ui_website_icon(name, **options)
96
+ render BetterUi::Website::IconComponent.new(name: name, **options)
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html>
2
+ <html style="background-color: <%= params.dig(:lookbook, :display, :bg_color) || "white" %>">
3
+ <head>
4
+ <title><%= content_for(:title) || "BetterUI" %></title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="apple-mobile-web-app-capable" content="yes">
7
+ <meta name="mobile-web-app-capable" content="yes">
8
+ <%= csrf_meta_tags %>
9
+ <%= csp_meta_tag %>
10
+
11
+ <%= yield :head %>
12
+
13
+ <link rel="icon" href="/icon.png" type="image/png">
14
+ <link rel="icon" href="/icon.svg" type="image/svg+xml">
15
+ <link rel="apple-touch-icon" href="/icon.png">
16
+
17
+ <%# Includes all stylesheet files in app/assets/stylesheets %>
18
+ <%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
19
+ <%= stylesheet_link_tag "better_ui/application" %>
20
+ </head>
21
+
22
+ <body class="bg-white text-gray-800">
23
+ <main class="min-h-screen p-8 bg-yellow-500">
24
+ <div style="
25
+ margin-left: auto;
26
+ margin-right: auto;
27
+ max-width: <%= params.dig(:lookbook, :display, :max_width) || "100%" %>
28
+ ">
29
+ <%= yield %> <!-- rendered preview will be injected here -->
30
+ </main>
31
+ </body>
32
+ </html>
@@ -0,0 +1,23 @@
1
+ if defined?(Lookbook)
2
+ Lookbook.configure do |config|
3
+ # Configura la directory delle preview dei componenti
4
+ config.preview_paths << BetterUi::Engine.root.join('test/components/previews')
5
+
6
+ # Configura il titolo della pagina Lookbook
7
+ config.page_title = 'BetterUI - Catalogo Componenti'
8
+
9
+ # Configura i tag principali
10
+ config.preview_display_names = {
11
+ 'BetterUi::General' => 'Componenti Generali',
12
+ 'BetterUi::Application' => 'Componenti Applicazione',
13
+ 'BetterUi::Website' => 'Componenti Sito Web'
14
+ }
15
+
16
+ # Per supportare i componenti ViewComponent
17
+ config.listen_for_changes = {
18
+ component: 'app/components/**/*.rb',
19
+ preview: 'test/components/previews/**/*_preview.rb',
20
+ template: 'app/components/**/*.erb'
21
+ }
22
+ end
23
+ end
data/config/routes.rb CHANGED
@@ -5,6 +5,11 @@ BetterUi::Engine.routes.draw do
5
5
  # Route per le pagine di documentazione generiche
6
6
  get 'docs/:page', to: 'docs#show', as: :docs_page
7
7
 
8
- # Route per la documentazione dei componenti specifici
8
+ # Route specifica per i componenti
9
9
  get 'docs/components/:component', to: 'docs#component', as: :docs_component
10
+
11
+ # Montaggio di Lookbook per lo sviluppo e il test
12
+ if Rails.env.development? || Rails.env.test?
13
+ mount Lookbook::Engine, at: "/lookbook"
14
+ end
10
15
  end
@@ -1,6 +1,8 @@
1
1
  require 'view_component'
2
2
  require 'redcarpet'
3
3
  require 'tailwindcss-rails'
4
+ require 'coderay'
5
+ require 'font-awesome-sass'
4
6
 
5
7
  module BetterUi
6
8
  class Engine < ::Rails::Engine
@@ -12,8 +14,13 @@ module BetterUi
12
14
  app.config.assets.paths << root.join('app', 'assets', 'images')
13
15
  end
14
16
 
17
+ # Assicuriamo che gli helper siano correttamente caricati
18
+ config.autoload_paths << root.join('app', 'helpers')
19
+
15
20
  # Configurazione per rendere disponibili i componenti all'applicazione host
16
21
  initializer 'better_ui.view_helpers' do
22
+ require_relative '../../app/helpers/better_ui_application_helper'
23
+
17
24
  ActiveSupport.on_load :action_controller do
18
25
  helper BetterUi::ApplicationHelper
19
26
  end
@@ -24,6 +31,22 @@ module BetterUi
24
31
  end
25
32
 
26
33
  # Configurazione per ViewComponent
27
- config.view_component.preview_paths << root.join('spec', 'components', 'previews')
34
+ config.view_component.preview_paths << root.join('test', 'components', 'previews')
35
+
36
+ # Configurazione per Lookbook in sviluppo e test
37
+ initializer 'better_ui.lookbook' do
38
+ if defined?(Lookbook) && (Rails.env.development? || Rails.env.test?)
39
+ # Carica esplicitamente le dipendenze per le funzionalità avanzate di Lookbook
40
+ begin
41
+ require 'listen'
42
+ require 'action_cable'
43
+ rescue LoadError => e
44
+ # Log che le dipendenze opzionali non sono disponibili
45
+ puts "NOTA: Alcune funzionalità avanzate di Lookbook potrebbero non essere disponibili: #{e.message}"
46
+ end
47
+
48
+ config.lookbook = Lookbook
49
+ end
50
+ end
28
51
  end
29
52
  end
@@ -1,3 +1,3 @@
1
1
  module BetterUi
2
- VERSION = "0.1.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - alessiobussolari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-01 00:00:00.000000000 Z
11
+ date: 2025-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: coderay
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: font-awesome-sass
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 6.5.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 6.5.1
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: sqlite3
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +122,48 @@ dependencies:
94
122
  - - ">="
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: lookbook
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: listen
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: actioncable
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
97
167
  description: Una gem Rails che funziona come engine montabile contenente componenti
98
168
  UI riutilizzabili e pagine di documentazione
99
169
  email:
@@ -105,17 +175,43 @@ files:
105
175
  - MIT-LICENSE
106
176
  - README.md
107
177
  - Rakefile
178
+ - app/assets/javascripts/better_ui/controllers/navbar_controller.js
179
+ - app/assets/javascripts/better_ui/controllers/sidebar_controller.js
180
+ - app/assets/javascripts/better_ui/controllers/toast_controller.js
181
+ - app/assets/javascripts/better_ui/index.js
182
+ - app/assets/javascripts/better_ui/toast_manager.js
108
183
  - app/assets/stylesheets/better_ui/application.css
184
+ - app/components/better_ui/application/alert_component.html.erb
185
+ - app/components/better_ui/application/alert_component.rb
186
+ - app/components/better_ui/application/header_component.html.erb
187
+ - app/components/better_ui/application/header_component.rb
188
+ - app/components/better_ui/application/navbar_component.html.erb
189
+ - app/components/better_ui/application/navbar_component.rb
190
+ - app/components/better_ui/application/sidebar_component.html.erb
191
+ - app/components/better_ui/application/sidebar_component.rb
192
+ - app/components/better_ui/application/toast_component.html.erb
193
+ - app/components/better_ui/application/toast_component.rb
194
+ - app/components/better_ui/general/breadcrumb_component.html.erb
195
+ - app/components/better_ui/general/breadcrumb_component.rb
196
+ - app/components/better_ui/general/button_component.html.erb
197
+ - app/components/better_ui/general/button_component.rb
198
+ - app/components/better_ui/general/heading_component.html.erb
199
+ - app/components/better_ui/general/heading_component.rb
200
+ - app/components/better_ui/general/icon_component.html.erb
201
+ - app/components/better_ui/general/icon_component.rb
202
+ - app/components/better_ui/general/panel_component.html.erb
203
+ - app/components/better_ui/general/panel_component.rb
204
+ - app/components/better_ui/general/table_component.html.erb
205
+ - app/components/better_ui/general/table_component.rb
206
+ - app/components/better_ui/theme_helper.rb
109
207
  - app/controllers/better_ui/application_controller.rb
110
208
  - app/controllers/better_ui/docs_controller.rb
111
- - app/helpers/better_ui/application_helper.rb
209
+ - app/helpers/better_ui_application_helper.rb
112
210
  - app/jobs/better_ui/application_job.rb
113
211
  - app/mailers/better_ui/application_mailer.rb
114
212
  - app/models/better_ui/application_record.rb
115
- - app/views/better_ui/docs/component.html.erb
116
- - app/views/better_ui/docs/index.html.erb
117
- - app/views/better_ui/docs/show.html.erb
118
- - app/views/layouts/better_ui/application.html.erb
213
+ - app/views/layouts/component_preview.html.erb
214
+ - config/initializers/lookbook.rb
119
215
  - config/routes.rb
120
216
  - lib/better_ui.rb
121
217
  - lib/better_ui/engine.rb