better_ui 0.4.0 → 0.5.1

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.

Potentially problematic release.


This version of better_ui might be problematic. Click here for more details.

Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +141 -189
  3. data/app/assets/stylesheets/better_ui/_base.scss +9 -0
  4. data/app/assets/stylesheets/better_ui/_components.scss +2 -0
  5. data/app/assets/stylesheets/better_ui/_utilities.scss +14 -0
  6. data/app/assets/stylesheets/better_ui/application.css +3 -1
  7. data/app/assets/stylesheets/better_ui/components/_avatar.scss +200 -0
  8. data/app/assets/stylesheets/better_ui/components/_badge.scss +154 -0
  9. data/app/assets/stylesheets/better_ui/components/_breadcrumb.scss +106 -0
  10. data/app/assets/stylesheets/better_ui/components/_button.scss +105 -0
  11. data/app/assets/stylesheets/better_ui/components/_card.scss +60 -0
  12. data/app/assets/stylesheets/better_ui/components/_heading.scss +81 -0
  13. data/app/assets/stylesheets/better_ui/components/_icon.scss +134 -0
  14. data/app/assets/stylesheets/better_ui/components/_index.scss +17 -0
  15. data/app/assets/stylesheets/better_ui/components/_link.scss +100 -0
  16. data/app/assets/stylesheets/better_ui/components/_panel.scss +104 -0
  17. data/app/assets/stylesheets/better_ui/components/_spinner.scss +129 -0
  18. data/app/assets/stylesheets/better_ui/components/_table.scss +156 -0
  19. data/app/assets/stylesheets/better_ui/components/_variables.scss +1 -0
  20. data/app/assets/stylesheets/better_ui.scss +4 -0
  21. data/app/components/better_ui/application/alert_component.html.erb +1 -1
  22. data/app/components/better_ui/application/alert_component.rb +95 -89
  23. data/app/components/better_ui/application/card_component.html.erb +24 -0
  24. data/app/components/better_ui/application/card_component.rb +53 -0
  25. data/app/components/better_ui/application/card_container_component.html.erb +8 -0
  26. data/app/components/better_ui/application/card_container_component.rb +14 -0
  27. data/app/components/better_ui/application/toast_component.rb +92 -57
  28. data/app/components/better_ui/general/avatar_component.html.erb +19 -0
  29. data/app/components/better_ui/general/avatar_component.rb +171 -0
  30. data/app/components/better_ui/general/badge_component.html.erb +19 -0
  31. data/app/components/better_ui/general/badge_component.rb +135 -0
  32. data/app/components/better_ui/general/breadcrumb_component.html.erb +7 -31
  33. data/app/components/better_ui/general/breadcrumb_component.rb +64 -66
  34. data/app/components/better_ui/general/button_component.html.erb +6 -6
  35. data/app/components/better_ui/general/button_component.rb +62 -95
  36. data/app/components/better_ui/general/heading_component.html.erb +1 -25
  37. data/app/components/better_ui/general/heading_component.rb +20 -113
  38. data/app/components/better_ui/general/icon_component.rb +37 -61
  39. data/app/components/better_ui/general/link_component.html.erb +17 -0
  40. data/app/components/better_ui/general/link_component.rb +132 -0
  41. data/app/components/better_ui/general/panel_component.rb +51 -56
  42. data/app/components/better_ui/general/spinner_component.html.erb +15 -0
  43. data/app/components/better_ui/general/spinner_component.rb +79 -0
  44. data/app/components/better_ui/general/table_component.html.erb +56 -20
  45. data/app/components/better_ui/general/table_component.rb +89 -87
  46. data/app/helpers/better_ui/general/components/avatar_helper.rb +17 -0
  47. data/app/helpers/better_ui/general/components/badge_helper.rb +17 -0
  48. data/app/helpers/better_ui/general/components/breadcrumb_helper.rb +17 -0
  49. data/app/helpers/better_ui/general/components/button_helper.rb +17 -0
  50. data/app/helpers/better_ui/general/components/heading_helper.rb +17 -0
  51. data/app/helpers/better_ui/general/components/icon_helper.rb +17 -0
  52. data/app/helpers/better_ui/general/components/link_helper.rb +17 -0
  53. data/app/helpers/better_ui/general/components/panel_helper.rb +16 -0
  54. data/app/helpers/better_ui/general/components/spinner_helper.rb +17 -0
  55. data/app/helpers/better_ui/general/components/table_helper.rb +17 -0
  56. data/app/helpers/better_ui/general_helper.rb +15 -0
  57. data/app/helpers/better_ui_helper.rb +12 -0
  58. data/app/views/components/better_ui/general/table/_custom_body_row.html.erb +17 -0
  59. data/app/views/components/better_ui/general/table/_custom_footer_rows.html.erb +17 -0
  60. data/app/views/components/better_ui/general/table/_custom_header_rows.html.erb +12 -0
  61. data/config/routes.rb +2 -13
  62. data/lib/better_ui/engine.rb +66 -16
  63. data/lib/better_ui/version.rb +1 -1
  64. data/lib/better_ui.rb +12 -0
  65. data/lib/generators/better_ui/install_generator.rb +103 -0
  66. data/lib/generators/better_ui/stylesheet_generator.rb +159 -0
  67. data/lib/generators/better_ui/templates/README +125 -0
  68. data/lib/generators/better_ui/templates/components/_avatar.scss +200 -0
  69. data/lib/generators/better_ui/templates/components/_badge.scss +154 -0
  70. data/lib/generators/better_ui/templates/components/_breadcrumb.scss +106 -0
  71. data/lib/generators/better_ui/templates/components/_button.scss +109 -0
  72. data/lib/generators/better_ui/templates/components/_card.scss +60 -0
  73. data/lib/generators/better_ui/templates/components/_heading.scss +81 -0
  74. data/lib/generators/better_ui/templates/components/_icon.scss +134 -0
  75. data/lib/generators/better_ui/templates/components/_index.scss +17 -0
  76. data/lib/generators/better_ui/templates/components/_link.scss +100 -0
  77. data/lib/generators/better_ui/templates/components/_panel.scss +104 -0
  78. data/lib/generators/better_ui/templates/components/_spinner.scss +129 -0
  79. data/lib/generators/better_ui/templates/components/_table.scss +156 -0
  80. data/lib/generators/better_ui/templates/components/_variables.scss +0 -0
  81. data/lib/generators/better_ui/templates/components_stylesheet.scss +35 -0
  82. data/lib/generators/better_ui/templates/index.scss +18 -0
  83. data/lib/generators/better_ui/templates/initializer.rb +41 -0
  84. metadata +120 -49
  85. data/app/assets/javascripts/better_ui/controllers/navbar_controller.js +0 -138
  86. data/app/assets/javascripts/better_ui/controllers/sidebar_controller.js +0 -211
  87. data/app/assets/javascripts/better_ui/controllers/toast_controller.js +0 -161
  88. data/app/assets/javascripts/better_ui/index.js +0 -159
  89. data/app/assets/javascripts/better_ui/toast_manager.js +0 -77
  90. data/app/components/better_ui/theme_helper.rb +0 -169
  91. data/app/controllers/better_ui/docs_controller.rb +0 -34
  92. data/app/helpers/better_ui_application_helper.rb +0 -99
@@ -0,0 +1,129 @@
1
+ @layer components {
2
+ // Classe base per lo spinner (Block)
3
+ .bui-spinner {
4
+ @apply inline-flex flex-col items-center justify-center;
5
+
6
+ // Elements
7
+ &__animation {
8
+ @apply inline-block rounded-full animate-spin;
9
+ border-top-color: transparent;
10
+ }
11
+
12
+ &__label {
13
+ @apply mt-2 text-center;
14
+ }
15
+
16
+ &__content {
17
+ @apply mt-4;
18
+ }
19
+
20
+ // Modifiers (dimensioni)
21
+ &--small &__animation {
22
+ @apply w-5 h-5 border-2;
23
+ }
24
+
25
+ &--medium &__animation {
26
+ @apply w-8 h-8 border-3;
27
+ }
28
+
29
+ &--large &__animation {
30
+ @apply w-12 h-12 border-4;
31
+ }
32
+
33
+ // Modifiers (temi colore)
34
+ &--default {
35
+ .bui-spinner__animation {
36
+ @apply border-gray-200 border-t-gray-800;
37
+ }
38
+
39
+ .bui-spinner__label {
40
+ @apply text-gray-800;
41
+ }
42
+ }
43
+
44
+ &--white {
45
+ .bui-spinner__animation {
46
+ @apply border-gray-100 border-t-white;
47
+ }
48
+
49
+ .bui-spinner__label {
50
+ @apply text-white;
51
+ }
52
+ }
53
+
54
+ &--red {
55
+ .bui-spinner__animation {
56
+ @apply border-red-100 border-t-red-600;
57
+ }
58
+
59
+ .bui-spinner__label {
60
+ @apply text-red-600;
61
+ }
62
+ }
63
+
64
+ &--rose {
65
+ .bui-spinner__animation {
66
+ @apply border-rose-100 border-t-rose-600;
67
+ }
68
+
69
+ .bui-spinner__label {
70
+ @apply text-rose-600;
71
+ }
72
+ }
73
+
74
+ &--orange {
75
+ .bui-spinner__animation {
76
+ @apply border-orange-100 border-t-orange-500;
77
+ }
78
+
79
+ .bui-spinner__label {
80
+ @apply text-orange-500;
81
+ }
82
+ }
83
+
84
+ &--green {
85
+ .bui-spinner__animation {
86
+ @apply border-green-100 border-t-green-600;
87
+ }
88
+
89
+ .bui-spinner__label {
90
+ @apply text-green-600;
91
+ }
92
+ }
93
+
94
+ &--blue {
95
+ .bui-spinner__animation {
96
+ @apply border-blue-100 border-t-blue-600;
97
+ }
98
+
99
+ .bui-spinner__label {
100
+ @apply text-blue-600;
101
+ }
102
+ }
103
+
104
+ &--yellow {
105
+ .bui-spinner__animation {
106
+ @apply border-yellow-100 border-t-yellow-500;
107
+ }
108
+
109
+ .bui-spinner__label {
110
+ @apply text-yellow-500;
111
+ }
112
+ }
113
+
114
+ &--violet {
115
+ .bui-spinner__animation {
116
+ @apply border-violet-100 border-t-violet-600;
117
+ }
118
+
119
+ .bui-spinner__label {
120
+ @apply text-violet-600;
121
+ }
122
+ }
123
+
124
+ // Modifiers (stati)
125
+ &--fullscreen {
126
+ @apply fixed inset-0 flex items-center justify-center z-50 bg-black bg-opacity-50;
127
+ }
128
+ }
129
+ }
@@ -0,0 +1,156 @@
1
+ @layer components {
2
+ // Classe base per la tabella (Block)
3
+ .bui-table {
4
+ @apply w-full border-collapse;
5
+
6
+ // Elements
7
+ &__container {
8
+ @apply overflow-hidden border shadow-sm;
9
+ }
10
+
11
+ &__caption {
12
+ @apply p-4 font-medium text-left;
13
+ }
14
+
15
+ &__header {
16
+ @apply bg-gray-50;
17
+ }
18
+
19
+ &__footer {
20
+ @apply bg-gray-50;
21
+ }
22
+
23
+ &__body {
24
+ // Styling base per il corpo della tabella
25
+ }
26
+
27
+ &__cell {
28
+ @apply px-4 py-3 text-sm text-gray-700;
29
+
30
+ &--header {
31
+ @apply bg-gray-50 text-left text-xs uppercase tracking-wider text-gray-500 font-medium;
32
+ }
33
+
34
+ &--footer {
35
+ @apply font-medium;
36
+ }
37
+ }
38
+
39
+ &__row {
40
+ @apply border-b border-gray-200;
41
+ }
42
+
43
+ // Modifiers (varianti)
44
+ &--default {
45
+ @apply bg-white text-gray-900 border-gray-200;
46
+ }
47
+
48
+ &--red {
49
+ @apply bg-red-50 text-red-900 border-red-200;
50
+
51
+ .bui-table__header {
52
+ @apply bg-red-100;
53
+ }
54
+
55
+ .bui-table__footer {
56
+ @apply bg-red-100;
57
+ }
58
+
59
+ .bui-table__cell--header {
60
+ @apply bg-red-100 text-red-800;
61
+ }
62
+ }
63
+
64
+ &--blue {
65
+ @apply bg-blue-50 text-blue-900 border-blue-200;
66
+
67
+ .bui-table__header {
68
+ @apply bg-blue-100;
69
+ }
70
+
71
+ .bui-table__footer {
72
+ @apply bg-blue-100;
73
+ }
74
+
75
+ .bui-table__cell--header {
76
+ @apply bg-blue-100 text-blue-800;
77
+ }
78
+ }
79
+
80
+ &--green {
81
+ @apply bg-green-50 text-green-900 border-green-200;
82
+
83
+ .bui-table__header {
84
+ @apply bg-green-100;
85
+ }
86
+
87
+ .bui-table__footer {
88
+ @apply bg-green-100;
89
+ }
90
+
91
+ .bui-table__cell--header {
92
+ @apply bg-green-100 text-green-800;
93
+ }
94
+ }
95
+
96
+ // Stati tabella
97
+ &--striped {
98
+ .bui-table__row:nth-child(even) {
99
+ @apply bg-gray-50;
100
+ }
101
+ }
102
+
103
+ &--hoverable {
104
+ .bui-table__row:hover {
105
+ @apply bg-gray-100;
106
+ }
107
+ }
108
+
109
+ &--bordered {
110
+ @apply border;
111
+
112
+ .bui-table__cell {
113
+ @apply border;
114
+ }
115
+ }
116
+
117
+ &--compact {
118
+ .bui-table__cell {
119
+ @apply px-2 py-1 text-xs;
120
+ }
121
+ }
122
+
123
+ // Modifiers (border radius)
124
+ &--radius-none {
125
+ @apply rounded-none;
126
+
127
+ .bui-table__container {
128
+ @apply rounded-none;
129
+ }
130
+ }
131
+
132
+ &--radius-small {
133
+ @apply rounded-md;
134
+
135
+ .bui-table__container {
136
+ @apply rounded-md overflow-hidden;
137
+ }
138
+ }
139
+
140
+ &--radius-medium {
141
+ @apply rounded-lg;
142
+
143
+ .bui-table__container {
144
+ @apply rounded-lg overflow-hidden;
145
+ }
146
+ }
147
+
148
+ &--radius-large {
149
+ @apply rounded-xl;
150
+
151
+ .bui-table__container {
152
+ @apply rounded-xl overflow-hidden;
153
+ }
154
+ }
155
+ }
156
+ }
@@ -0,0 +1,35 @@
1
+ /*
2
+ * <%= options[:prefix] %>_better_ui_components.scss
3
+ * ========================================================================
4
+ * File principale che utilizza il sistema moderno di moduli Sass
5
+ * Generato il: <%= Time.now.strftime('%d/%m/%Y %H:%M') %>
6
+ */
7
+
8
+ /* Base Tailwind - importazioni fondamentali */
9
+ @use "tailwindcss/base";
10
+ @use "tailwindcss/components";
11
+ @use "tailwindcss/utilities";
12
+
13
+ /*
14
+ * Importa i componenti originali della gemma attraverso un namespace
15
+ * per evitare conflitti
16
+ */
17
+ @use 'better_ui/components' as bui;
18
+
19
+ /*
20
+ * Importa le personalizzazioni con namespace per organizzazione
21
+ * e chiarezza nel codice
22
+ */
23
+ @use 'components/variables_overrides' as vars;
24
+ @use 'components/index' as overrides;
25
+
26
+ /*
27
+ * Aggiungi stili personalizzati dell'applicazione
28
+ * all'interno del layer components per mantenerli organizzati
29
+ */
30
+ @layer components {
31
+ /*
32
+ * Qui puoi inserire stili personalizzati aggiuntivi
33
+ * che non rientrano nei file di override
34
+ */
35
+ }
@@ -0,0 +1,18 @@
1
+ /*
2
+ * components/_index.scss
3
+ * File indice che raccoglie e riespone tutti i moduli di override
4
+ * Utilizza @forward per mantenere le API originali accessibili
5
+ */
6
+
7
+ @forward 'variables_overrides';
8
+ @forward 'button_overrides';
9
+ @forward 'heading_overrides';
10
+ @forward 'breadcrumb_overrides';
11
+ @forward 'link_overrides';
12
+ @forward 'panel_overrides';
13
+ @forward 'icon_overrides';
14
+ @forward 'table_overrides';
15
+ @forward 'badge_overrides';
16
+ @forward 'spinner_overrides';
17
+ @forward 'avatar_overrides';
18
+ @forward 'card_overrides';
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Configurazione di Better UI
4
+ # Questo file contiene le impostazioni predefinite per i componenti di Better UI.
5
+ # Puoi modificare queste impostazioni in base alle tue necessità.
6
+
7
+ BetterUi.configure do |config|
8
+ # Configurazione predefinita per i bottoni
9
+ # Queste impostazioni verranno applicate a tutti i bottoni a meno che non vengano sovrascritte
10
+ config.button_defaults = {
11
+ type: :default, # Tipo di bottone (:default, :white, :red, :green, ecc.)
12
+ size: :medium, # Dimensione del bottone (:small, :medium, :large)
13
+ rounded: :small, # Arrotondamento (:none, :small, :medium, :large, :full)
14
+ full_width: false, # Se il bottone deve occupare tutta la larghezza disponibile
15
+ disabled: false # Se il bottone è disabilitato di default
16
+ }
17
+
18
+ # Configurazione predefinita per gli alert
19
+ config.alert_defaults = {
20
+ theme: :default, # Tema dell'alert (:default, :success, :warning, :danger, :info)
21
+ dismissible: true, # Se l'alert può essere chiuso dall'utente
22
+ icon: true # Se mostrare l'icona associata al tema
23
+ }
24
+
25
+ # Configurazione predefinita per le card
26
+ config.card_defaults = {
27
+ theme: :default, # Tema della card (:default, :outline, :elevated)
28
+ padding: :medium, # Padding interno (:small, :medium, :large)
29
+ rounded: :medium, # Arrotondamento (:none, :small, :medium, :large)
30
+ shadow: :medium # Ombreggiatura (:none, :small, :medium, :large)
31
+ }
32
+
33
+ # Configurazione predefinita per i tab
34
+ config.tabs_defaults = {
35
+ theme: :default, # Tema dei tab (:default, :pills, :underline)
36
+ size: :medium, # Dimensione (:small, :medium, :large)
37
+ alignment: :left # Allineamento (:left, :center, :right, :justified)
38
+ }
39
+
40
+ # Puoi aggiungere altre configurazioni predefinite per i tuoi componenti qui
41
+ end