maquina-components 0.1.1 → 0.2.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/README.md +410 -13
- data/app/assets/images/maquina.svg +1 -0
- data/app/assets/stylesheets/alert.css +143 -0
- data/app/assets/stylesheets/badge.css +145 -0
- data/app/assets/stylesheets/breadcrumbs.css +163 -0
- data/app/assets/stylesheets/card.css +128 -0
- data/app/assets/stylesheets/dropdown_menu.css +248 -0
- data/app/assets/stylesheets/empty.css +133 -0
- data/app/assets/stylesheets/form.css +617 -0
- data/app/assets/stylesheets/header.css +61 -0
- data/app/assets/stylesheets/maquina_components.css +178 -0
- data/app/assets/stylesheets/pagination.css +154 -0
- data/app/assets/stylesheets/sidebar.css +477 -0
- data/app/assets/stylesheets/table.css +205 -0
- data/app/assets/stylesheets/toggle_group.css +151 -0
- data/app/assets/tailwind/maquina_components_engine/engine.css +16 -0
- data/app/helpers/maquina_components/breadcrumbs_helper.rb +118 -0
- data/app/helpers/maquina_components/dropdown_menu_helper.rb +249 -0
- data/app/helpers/maquina_components/empty_helper.rb +102 -0
- data/app/helpers/maquina_components/icons_helper.rb +161 -0
- data/app/helpers/maquina_components/pagination_helper.rb +153 -0
- data/app/helpers/maquina_components/sidebar_helper.rb +63 -0
- data/app/helpers/maquina_components/table_helper.rb +144 -0
- data/app/helpers/maquina_components/toggle_group_helper.rb +172 -0
- data/app/javascript/controllers/breadcrumb_controller.js +71 -0
- data/app/javascript/controllers/dropdown_menu_controller.js +203 -0
- data/app/javascript/controllers/menu_button_controller.js +59 -0
- data/app/javascript/controllers/sidebar_controller.js +316 -0
- data/app/javascript/controllers/sidebar_trigger_controller.js +32 -0
- data/app/javascript/controllers/toggle_group_controller.js +178 -0
- data/app/views/components/_alert.html.erb +12 -0
- data/app/views/components/_badge.html.erb +10 -0
- data/app/views/components/_breadcrumbs.html.erb +16 -0
- data/app/views/components/_card.html.erb +6 -0
- data/app/views/components/_dropdown.html.erb +25 -0
- data/app/views/components/_dropdown_menu.html.erb +9 -0
- data/app/views/components/_empty.html.erb +10 -0
- data/app/views/components/_header.html.erb +8 -0
- data/app/views/components/_menu_button.html.erb +44 -0
- data/app/views/components/_pagination.html.erb +13 -0
- data/app/views/components/_separator.html.erb +11 -0
- data/app/views/components/_sidebar.html.erb +40 -0
- data/app/views/components/_simple_table.html.erb +49 -0
- data/app/views/components/_table.html.erb +21 -0
- data/app/views/components/_toggle_group.html.erb +24 -0
- data/app/views/components/alert/_description.html.erb +6 -0
- data/app/views/components/alert/_title.html.erb +6 -0
- data/app/views/components/breadcrumbs/_ellipsis.html.erb +9 -0
- data/app/views/components/breadcrumbs/_item.html.erb +8 -0
- data/app/views/components/breadcrumbs/_link.html.erb +8 -0
- data/app/views/components/breadcrumbs/_list.html.erb +8 -0
- data/app/views/components/breadcrumbs/_page.html.erb +8 -0
- data/app/views/components/breadcrumbs/_separator.html.erb +17 -0
- data/app/views/components/card/_action.html.erb +6 -0
- data/app/views/components/card/_content.html.erb +9 -0
- data/app/views/components/card/_description.html.erb +6 -0
- data/app/views/components/card/_footer.html.erb +17 -0
- data/app/views/components/card/_header.html.erb +9 -0
- data/app/views/components/card/_title.html.erb +9 -0
- data/app/views/components/dropdown_menu/_content.html.erb +20 -0
- data/app/views/components/dropdown_menu/_group.html.erb +12 -0
- data/app/views/components/dropdown_menu/_item.html.erb +29 -0
- data/app/views/components/dropdown_menu/_label.html.erb +13 -0
- data/app/views/components/dropdown_menu/_separator.html.erb +11 -0
- data/app/views/components/dropdown_menu/_shortcut.html.erb +12 -0
- data/app/views/components/dropdown_menu/_trigger.html.erb +24 -0
- data/app/views/components/empty/_content.html.erb +8 -0
- data/app/views/components/empty/_description.html.erb +12 -0
- data/app/views/components/empty/_header.html.erb +8 -0
- data/app/views/components/empty/_media.html.erb +13 -0
- data/app/views/components/empty/_title.html.erb +12 -0
- data/app/views/components/pagination/_content.html.erb +8 -0
- data/app/views/components/pagination/_ellipsis.html.erb +28 -0
- data/app/views/components/pagination/_item.html.erb +8 -0
- data/app/views/components/pagination/_link.html.erb +23 -0
- data/app/views/components/pagination/_next.html.erb +57 -0
- data/app/views/components/pagination/_previous.html.erb +57 -0
- data/app/views/components/sidebar/_content.html.erb +8 -0
- data/app/views/components/sidebar/_footer.html.erb +8 -0
- data/app/views/components/sidebar/_group.html.erb +12 -0
- data/app/views/components/sidebar/_header.html.erb +8 -0
- data/app/views/components/sidebar/_inset.html.erb +8 -0
- data/app/views/components/sidebar/_menu.html.erb +8 -0
- data/app/views/components/sidebar/_menu_button.html.erb +14 -0
- data/app/views/components/sidebar/_menu_item.html.erb +7 -0
- data/app/views/components/sidebar/_menu_link.html.erb +32 -0
- data/app/views/components/sidebar/_provider.html.erb +16 -0
- data/app/views/components/sidebar/_trigger.html.erb +12 -0
- data/app/views/components/stats/_stats_card.html.erb +100 -0
- data/app/views/components/stats/_stats_grid.html.erb +38 -0
- data/app/views/components/table/_body.html.erb +5 -0
- data/app/views/components/table/_caption.html.erb +5 -0
- data/app/views/components/table/_cell.html.erb +5 -0
- data/app/views/components/table/_footer.html.erb +5 -0
- data/app/views/components/table/_head.html.erb +8 -0
- data/app/views/components/table/_header.html.erb +8 -0
- data/app/views/components/table/_row.html.erb +8 -0
- data/app/views/components/toggle_group/_item.html.erb +19 -0
- data/config/importmap.rb +1 -0
- data/lib/generators/maquina_components/install/USAGE +39 -0
- data/lib/generators/maquina_components/install/install_generator.rb +123 -0
- data/lib/generators/maquina_components/install/templates/maquina_components_helper.rb.tt +68 -0
- data/lib/generators/maquina_components/install/templates/theme.css.tt +179 -0
- data/lib/maquina_components/engine.rb +10 -0
- data/lib/maquina_components/version.rb +1 -1
- metadata +121 -5
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/* ===== Empty Component Styles ===== */
|
|
2
|
+
/*
|
|
3
|
+
* Empty state component for displaying placeholder content when no data exists.
|
|
4
|
+
* Uses data attributes for styling to avoid inline utility classes.
|
|
5
|
+
* Fully compatible with dark mode via CSS variables.
|
|
6
|
+
*
|
|
7
|
+
* Structure:
|
|
8
|
+
* - empty (root container)
|
|
9
|
+
* - header (groups media + text)
|
|
10
|
+
* - media (icon or avatar)
|
|
11
|
+
* - title (heading)
|
|
12
|
+
* - description (explanatory text)
|
|
13
|
+
* - content (action buttons/links)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* ===== Root Container ===== */
|
|
17
|
+
[data-component="empty"] {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
text-align: center;
|
|
23
|
+
@apply px-6 py-12;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ===== Size Variants ===== */
|
|
27
|
+
[data-component="empty"][data-size="compact"] {
|
|
28
|
+
@apply px-6 py-8;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* ===== Visual Variants ===== */
|
|
32
|
+
[data-component="empty"][data-variant="default"] {
|
|
33
|
+
/* No additional styles for default */
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
[data-component="empty"][data-variant="outline"] {
|
|
37
|
+
@apply rounded-lg;
|
|
38
|
+
border: 1px dashed var(--border);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ===== Header ===== */
|
|
42
|
+
[data-empty-part="header"] {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
align-items: center;
|
|
46
|
+
@apply gap-2;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ===== Media (Icon/Avatar Container) ===== */
|
|
50
|
+
[data-empty-part="media"] {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
color: var(--muted-foreground);
|
|
55
|
+
@apply mb-2;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Icon variant */
|
|
59
|
+
[data-empty-part="media"][data-variant="icon"] {
|
|
60
|
+
@apply opacity-60;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-empty-part="media"][data-variant="icon"] svg {
|
|
64
|
+
@apply size-12;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Compact size adjustments */
|
|
68
|
+
[data-component="empty"][data-size="compact"] [data-empty-part="media"][data-variant="icon"] svg {
|
|
69
|
+
@apply size-8;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Avatar variant */
|
|
73
|
+
[data-empty-part="media"][data-variant="avatar"] {
|
|
74
|
+
@apply size-16 rounded-full overflow-hidden;
|
|
75
|
+
background-color: var(--muted);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
[data-empty-part="media"][data-variant="avatar"] img {
|
|
79
|
+
@apply size-full object-cover;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* ===== Title ===== */
|
|
83
|
+
[data-empty-part="title"] {
|
|
84
|
+
color: var(--foreground);
|
|
85
|
+
@apply text-base font-medium;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Compact size */
|
|
89
|
+
[data-component="empty"][data-size="compact"] [data-empty-part="title"] {
|
|
90
|
+
@apply text-sm;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ===== Description ===== */
|
|
94
|
+
[data-empty-part="description"] {
|
|
95
|
+
color: var(--muted-foreground);
|
|
96
|
+
@apply text-sm mt-1 max-w-md;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Links in description */
|
|
100
|
+
[data-empty-part="description"] a {
|
|
101
|
+
color: var(--primary);
|
|
102
|
+
text-decoration: underline;
|
|
103
|
+
text-underline-offset: 4px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
[data-empty-part="description"] a:hover {
|
|
107
|
+
@apply opacity-80;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* ===== Content (Actions) ===== */
|
|
111
|
+
[data-empty-part="content"] {
|
|
112
|
+
display: flex;
|
|
113
|
+
flex-direction: column;
|
|
114
|
+
align-items: center;
|
|
115
|
+
@apply mt-6 gap-3;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Compact size */
|
|
119
|
+
[data-component="empty"][data-size="compact"] [data-empty-part="content"] {
|
|
120
|
+
@apply mt-4;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Flex container for multiple buttons */
|
|
124
|
+
[data-empty-part="content"] > .flex {
|
|
125
|
+
@apply gap-2;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* ===== Dark Mode ===== */
|
|
129
|
+
/*
|
|
130
|
+
* Dark mode is handled automatically through CSS variables.
|
|
131
|
+
* The theme variables change based on the .dark class on html/body.
|
|
132
|
+
* No additional dark mode styles needed here.
|
|
133
|
+
*/
|