plutonium 0.11.2 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b6352f5ac97d4869094c4226b8e1327cd4ba4bcb63b2cc465ff54353a44a4e6
4
- data.tar.gz: 071752cc007fabe87d5a79c3c06e5357bcde3e01addba212d94cdb51c7a201df
3
+ metadata.gz: 6052b1ce7c4e476fcaa41cbef7030cc0f130c469d0d86911fa8f75d8f2dd0b8f
4
+ data.tar.gz: f8a5a453f724897eb12f9044dc856814516475a9d83d1d176ae13640cfa3134d
5
5
  SHA512:
6
- metadata.gz: e7efd694295f349c4008a3c3add37c12d5c04c5e9e1ca0e650d4c453aa3931ebe3d9245c7c2a9e78f3a85ef30ca20bf05ac746c19d3123b6e24f995dbd9e906a
7
- data.tar.gz: 055c209e6b2e5b568863e950b0203f308e132ba9d2c6a9ecda62e3874d977fc777f4007c90e049bb01b0d7c6d8b80a351c39678dd65d18275314b8c7e6042007
6
+ metadata.gz: d9b6b63b6023278a943bdebcf0c6bd834455417700b7d2c7324dbc5e3f923454d58d7fd2ac2e6e036d4a82a89bd72254a719801f53ad162871ef7e3f619a92d8
7
+ data.tar.gz: 372ff986316b2bac7c5542d9278e18d26a128c50257e5a7b2659c80c5047b8be08fc096fd3e735e51a7f1787706b329753cfb897d1188066d6381c790bc19eb5
@@ -0,0 +1,287 @@
1
+ <%# locals: (sidebar_toggle:) %>
2
+
3
+ <%= render_component :resource_header, sidebar_toggle: do |header| %>
4
+ <% header.with_action do %>
5
+ <%=
6
+ render_component :nav_grid_menu, label: "Apps" do |menu|
7
+ menu.with_item url: "#", name: "Sales", icon: "outline/sale-percent"
8
+ menu.with_item url: "#", name: "Users", icon: "outline/users"
9
+ end
10
+ %>
11
+ <% end %>
12
+
13
+ <% header.with_action do %>
14
+ <%= render_component :nav_user, email: current_user.email, logout_url: try(:logout_url) do |nav_user| %>
15
+ <% nav_user.with_section do |section| %>
16
+ <% section.with_link url: "#", label: "My profile" %>
17
+ <% section.with_link url: "#", label: "Account settings" %>
18
+ <% end %>
19
+
20
+ <% nav_user.with_section do |section| %>
21
+ <% section.with_link url: "#", label: "My likes" do |link| %>
22
+ <% link.with_leading do %>
23
+ <%= render_icon "outline/heart", classname: "mr-2 text-gray-400" %>
24
+ <% end %>
25
+ <% end %>
26
+
27
+ <% section.with_link url: "#", label: "Pro version" do |link| %>
28
+ <% link.with_leading do %>
29
+ <%= render_icon "outline/fire", classname: "mr-2 text-primary-600 dark:text-primary-500" %>
30
+ <% end %>
31
+ <% link.with_trailing do %>
32
+ <%= render_icon "outline/angle-right", size: :sm %>
33
+ <% end %>
34
+ <% end %>
35
+ <% end %>
36
+ <% end %>
37
+ <% end %>
38
+
39
+ <%#
40
+
41
+ <!-- Notifications -->
42
+ <div data-controller="resource-drop-down">
43
+ <button
44
+ type="button"
45
+ data-resource-drop-down-target="trigger"
46
+ class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
47
+ <span class="sr-only">View notifications</span>
48
+ <!-- Bell icon -->
49
+ <svg
50
+ aria-hidden="true"
51
+ class="w-6 h-6"
52
+ fill="currentColor"
53
+ viewBox="0 0 20 20"
54
+ xmlns="http://www.w3.org/2000/svg">
55
+ <path
56
+ d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
57
+ </svg>
58
+ </button>
59
+ <!-- Dropdown menu -->
60
+ <div
61
+ data-resource-drop-down-target="menu"
62
+ class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
63
+ <div
64
+ class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
65
+ Notifications
66
+ </div>
67
+ <div>
68
+ <a
69
+ href="#"
70
+ class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
71
+ <div class="shrink-0">
72
+ <img
73
+ class="w-11 h-11 rounded-full"
74
+ src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
75
+ alt="Bonnie Green avatar"
76
+ />
77
+ <div
78
+ class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
79
+ <svg
80
+ aria-hidden="true"
81
+ class="w-3 h-3 text-white"
82
+ fill="currentColor"
83
+ viewBox="0 0 20 20"
84
+ xmlns="http://www.w3.org/2000/svg">
85
+ <path
86
+ d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
87
+ <path
88
+ d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
89
+ </svg>
90
+ </div>
91
+ </div>
92
+ <div class="pl-3 w-full">
93
+ <div
94
+ class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
95
+ New message from
96
+ <span class="font-semibold text-gray-900 dark:text-white"
97
+ >Bonnie Green</span
98
+ >: "Hey, what's up? All set for the presentation?"
99
+ </div>
100
+ <div
101
+ class="text-xs font-medium text-primary-600 dark:text-primary-500">
102
+ a few moments ago
103
+ </div>
104
+ </div>
105
+ </a>
106
+ <a
107
+ href="#"
108
+ class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
109
+ <div class="shrink-0">
110
+ <img
111
+ class="w-11 h-11 rounded-full"
112
+ src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
113
+ alt="Jese Leos avatar"
114
+ />
115
+ <div
116
+ class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
117
+ <svg
118
+ aria-hidden="true"
119
+ class="w-3 h-3 text-white"
120
+ fill="currentColor"
121
+ viewBox="0 0 20 20"
122
+ xmlns="http://www.w3.org/2000/svg">
123
+ <path
124
+ d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
125
+ </svg>
126
+ </div>
127
+ </div>
128
+ <div class="pl-3 w-full">
129
+ <div
130
+ class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
131
+ <span class="font-semibold text-gray-900 dark:text-white"
132
+ >Jese leos</span>
133
+ and
134
+ <span class="font-medium text-gray-900 dark:text-white"
135
+ >5 others</span>
136
+ started following you.
137
+ </div>
138
+ <div
139
+ class="text-xs font-medium text-primary-600 dark:text-primary-500">
140
+ 10 minutes ago
141
+ </div>
142
+ </div>
143
+ </a>
144
+ <a
145
+ href="#"
146
+ class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
147
+ <div class="shrink-0">
148
+ <img
149
+ class="w-11 h-11 rounded-full"
150
+ src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
151
+ alt="Joseph McFall avatar"
152
+ />
153
+ <div
154
+ class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
155
+ <svg
156
+ aria-hidden="true"
157
+ class="w-3 h-3 text-white"
158
+ fill="currentColor"
159
+ viewBox="0 0 20 20"
160
+ xmlns="http://www.w3.org/2000/svg">
161
+ <path
162
+ fill-rule="evenodd"
163
+ d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
164
+ clip-rule="evenodd"
165
+ ></path>
166
+ </svg>
167
+ </div>
168
+ </div>
169
+ <div class="pl-3 w-full">
170
+ <div
171
+ class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
172
+ <span class="font-semibold text-gray-900 dark:text-white"
173
+ >Joseph Mcfall</span>
174
+ and
175
+ <span class="font-medium text-gray-900 dark:text-white"
176
+ >141 others</span>
177
+ love your story. See it and view more stories.
178
+ </div>
179
+ <div
180
+ class="text-xs font-medium text-primary-600 dark:text-primary-500">
181
+ 44 minutes ago
182
+ </div>
183
+ </div>
184
+ </a>
185
+ <a
186
+ href="#"
187
+ class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
188
+ <div class="shrink-0">
189
+ <img
190
+ class="w-11 h-11 rounded-full"
191
+ src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
192
+ alt="Roberta Casas image"
193
+ />
194
+ <div
195
+ class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
196
+ <svg
197
+ aria-hidden="true"
198
+ class="w-3 h-3 text-white"
199
+ fill="currentColor"
200
+ viewBox="0 0 20 20"
201
+ xmlns="http://www.w3.org/2000/svg">
202
+ <path
203
+ fill-rule="evenodd"
204
+ d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
205
+ clip-rule="evenodd"></path>
206
+ </svg>
207
+ </div>
208
+ </div>
209
+ <div class="pl-3 w-full">
210
+ <div
211
+ class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
212
+ <span class="font-semibold text-gray-900 dark:text-white"
213
+ >Leslie Livingston</span>
214
+ mentioned you in a comment:
215
+ <span
216
+ class="font-medium text-primary-600 dark:text-primary-500"
217
+ >@bonnie.green</span>
218
+ what do you say?
219
+ </div>
220
+ <div
221
+ class="text-xs font-medium text-primary-600 dark:text-primary-500">
222
+ 1 hour ago
223
+ </div>
224
+ </div>
225
+ </a>
226
+ <a
227
+ href="#"
228
+ class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
229
+ <div class="shrink-0">
230
+ <img
231
+ class="w-11 h-11 rounded-full"
232
+ src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
233
+ alt="Robert image"
234
+ />
235
+ <div
236
+ class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
237
+ <svg
238
+ aria-hidden="true"
239
+ class="w-3 h-3 text-white"
240
+ fill="currentColor"
241
+ viewBox="0 0 20 20"
242
+ xmlns="http://www.w3.org/2000/svg">
243
+ <path
244
+ d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
245
+ ></path>
246
+ </svg>
247
+ </div>
248
+ </div>
249
+ <div class="pl-3 w-full">
250
+ <div
251
+ class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
252
+ <span class="font-semibold text-gray-900 dark:text-white"
253
+ >Robert Brown</span>
254
+ posted a new video: Glassmorphism - learn how to implement
255
+ the new design trend.
256
+ </div>
257
+ <div
258
+ class="text-xs font-medium text-primary-600 dark:text-primary-500">
259
+ 3 hours ago
260
+ </div>
261
+ </div>
262
+ </a>
263
+ </div>
264
+ <a
265
+ href="#"
266
+ class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
267
+ <div class="inline-flex items-center">
268
+ <svg
269
+ aria-hidden="true"
270
+ class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
271
+ fill="currentColor"
272
+ viewBox="0 0 20 20"
273
+ xmlns="http://www.w3.org/2000/svg">
274
+ <path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
275
+ <path
276
+ fill-rule="evenodd"
277
+ d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
278
+ clip-rule="evenodd"></path>
279
+ </svg>
280
+ View all
281
+ </div>
282
+ </a>
283
+ </div>
284
+ </div>
285
+
286
+ %>
287
+ <% end %>
@@ -35,253 +35,4 @@
35
35
  <% end %>
36
36
  <% end %>
37
37
  <% end %>
38
-
39
- <%#
40
-
41
- <!-- Notifications -->
42
- <div data-controller="resource-drop-down">
43
- <button
44
- type="button"
45
- data-resource-drop-down-target="trigger"
46
- class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
47
- <span class="sr-only">View notifications</span>
48
- <!-- Bell icon -->
49
- <svg
50
- aria-hidden="true"
51
- class="w-6 h-6"
52
- fill="currentColor"
53
- viewBox="0 0 20 20"
54
- xmlns="http://www.w3.org/2000/svg">
55
- <path
56
- d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
57
- </svg>
58
- </button>
59
- <!-- Dropdown menu -->
60
- <div
61
- data-resource-drop-down-target="menu"
62
- class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
63
- <div
64
- class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
65
- Notifications
66
- </div>
67
- <div>
68
- <a
69
- href="#"
70
- class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
71
- <div class="shrink-0">
72
- <img
73
- class="w-11 h-11 rounded-full"
74
- src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
75
- alt="Bonnie Green avatar"
76
- />
77
- <div
78
- class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
79
- <svg
80
- aria-hidden="true"
81
- class="w-3 h-3 text-white"
82
- fill="currentColor"
83
- viewBox="0 0 20 20"
84
- xmlns="http://www.w3.org/2000/svg">
85
- <path
86
- d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
87
- <path
88
- d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
89
- </svg>
90
- </div>
91
- </div>
92
- <div class="pl-3 w-full">
93
- <div
94
- class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
95
- New message from
96
- <span class="font-semibold text-gray-900 dark:text-white"
97
- >Bonnie Green</span
98
- >: "Hey, what's up? All set for the presentation?"
99
- </div>
100
- <div
101
- class="text-xs font-medium text-primary-600 dark:text-primary-500">
102
- a few moments ago
103
- </div>
104
- </div>
105
- </a>
106
- <a
107
- href="#"
108
- class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
109
- <div class="shrink-0">
110
- <img
111
- class="w-11 h-11 rounded-full"
112
- src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
113
- alt="Jese Leos avatar"
114
- />
115
- <div
116
- class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
117
- <svg
118
- aria-hidden="true"
119
- class="w-3 h-3 text-white"
120
- fill="currentColor"
121
- viewBox="0 0 20 20"
122
- xmlns="http://www.w3.org/2000/svg">
123
- <path
124
- d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
125
- </svg>
126
- </div>
127
- </div>
128
- <div class="pl-3 w-full">
129
- <div
130
- class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
131
- <span class="font-semibold text-gray-900 dark:text-white"
132
- >Jese leos</span>
133
- and
134
- <span class="font-medium text-gray-900 dark:text-white"
135
- >5 others</span>
136
- started following you.
137
- </div>
138
- <div
139
- class="text-xs font-medium text-primary-600 dark:text-primary-500">
140
- 10 minutes ago
141
- </div>
142
- </div>
143
- </a>
144
- <a
145
- href="#"
146
- class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
147
- <div class="shrink-0">
148
- <img
149
- class="w-11 h-11 rounded-full"
150
- src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
151
- alt="Joseph McFall avatar"
152
- />
153
- <div
154
- class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
155
- <svg
156
- aria-hidden="true"
157
- class="w-3 h-3 text-white"
158
- fill="currentColor"
159
- viewBox="0 0 20 20"
160
- xmlns="http://www.w3.org/2000/svg">
161
- <path
162
- fill-rule="evenodd"
163
- d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
164
- clip-rule="evenodd"
165
- ></path>
166
- </svg>
167
- </div>
168
- </div>
169
- <div class="pl-3 w-full">
170
- <div
171
- class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
172
- <span class="font-semibold text-gray-900 dark:text-white"
173
- >Joseph Mcfall</span>
174
- and
175
- <span class="font-medium text-gray-900 dark:text-white"
176
- >141 others</span>
177
- love your story. See it and view more stories.
178
- </div>
179
- <div
180
- class="text-xs font-medium text-primary-600 dark:text-primary-500">
181
- 44 minutes ago
182
- </div>
183
- </div>
184
- </a>
185
- <a
186
- href="#"
187
- class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
188
- <div class="shrink-0">
189
- <img
190
- class="w-11 h-11 rounded-full"
191
- src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
192
- alt="Roberta Casas image"
193
- />
194
- <div
195
- class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
196
- <svg
197
- aria-hidden="true"
198
- class="w-3 h-3 text-white"
199
- fill="currentColor"
200
- viewBox="0 0 20 20"
201
- xmlns="http://www.w3.org/2000/svg">
202
- <path
203
- fill-rule="evenodd"
204
- d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
205
- clip-rule="evenodd"></path>
206
- </svg>
207
- </div>
208
- </div>
209
- <div class="pl-3 w-full">
210
- <div
211
- class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
212
- <span class="font-semibold text-gray-900 dark:text-white"
213
- >Leslie Livingston</span>
214
- mentioned you in a comment:
215
- <span
216
- class="font-medium text-primary-600 dark:text-primary-500"
217
- >@bonnie.green</span>
218
- what do you say?
219
- </div>
220
- <div
221
- class="text-xs font-medium text-primary-600 dark:text-primary-500">
222
- 1 hour ago
223
- </div>
224
- </div>
225
- </a>
226
- <a
227
- href="#"
228
- class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
229
- <div class="shrink-0">
230
- <img
231
- class="w-11 h-11 rounded-full"
232
- src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
233
- alt="Robert image"
234
- />
235
- <div
236
- class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
237
- <svg
238
- aria-hidden="true"
239
- class="w-3 h-3 text-white"
240
- fill="currentColor"
241
- viewBox="0 0 20 20"
242
- xmlns="http://www.w3.org/2000/svg">
243
- <path
244
- d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
245
- ></path>
246
- </svg>
247
- </div>
248
- </div>
249
- <div class="pl-3 w-full">
250
- <div
251
- class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
252
- <span class="font-semibold text-gray-900 dark:text-white"
253
- >Robert Brown</span>
254
- posted a new video: Glassmorphism - learn how to implement
255
- the new design trend.
256
- </div>
257
- <div
258
- class="text-xs font-medium text-primary-600 dark:text-primary-500">
259
- 3 hours ago
260
- </div>
261
- </div>
262
- </a>
263
- </div>
264
- <a
265
- href="#"
266
- class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
267
- <div class="inline-flex items-center">
268
- <svg
269
- aria-hidden="true"
270
- class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
271
- fill="currentColor"
272
- viewBox="0 0 20 20"
273
- xmlns="http://www.w3.org/2000/svg">
274
- <path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
275
- <path
276
- fill-rule="evenodd"
277
- d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
278
- clip-rule="evenodd"></path>
279
- </svg>
280
- View all
281
- </div>
282
- </a>
283
- </div>
284
- </div>
285
-
286
- %>
287
38
  <% end %>
@@ -19,9 +19,9 @@ module PlutoniumUi
19
19
  # @param label [String] The label of the column.
20
20
  # @param search_object [Object] The search object associated with the column.
21
21
  # @param block [Proc] An optional block for additional column customization.
22
- def column(name:, label:, search_object:, &block)
22
+ def column(name:, label:, search_object:, &)
23
23
  @columns ||= []
24
- @columns << Column.new(name:, label:, search_object:, &block)
24
+ @columns << Column.new(name:, label:, search_object:, &)
25
25
  end
26
26
 
27
27
  # Returns the base attributes for the table.
@@ -12,16 +12,16 @@ module Pu
12
12
  desc "Set up the base requirements for Plutonium"
13
13
 
14
14
  def start
15
- setup_packaging_system
16
- install_required_gems
15
+ setup_packages
17
16
  setup_app
17
+ eject_views
18
18
  rescue => e
19
19
  exception "#{self.class} failed:", e
20
20
  end
21
21
 
22
22
  private
23
23
 
24
- def setup_packaging_system
24
+ def setup_packages
25
25
  copy_file "config/packages.rb"
26
26
  create_file "packages/.keep"
27
27
  insert_into_file "config/application.rb", "\nrequire_relative \"packages\"\n", after: /Bundler\.require.*\n/
@@ -36,10 +36,10 @@ module Pu
36
36
  environment "# config.plutonium.assets.logo = \"logo.png\""
37
37
  end
38
38
 
39
- def install_required_gems
40
- # invoke "pu:gem:simple_form"
41
- # invoke "pu:gem:pagy"
42
- # invoke "pu:gem:rabl"
39
+ def eject_views
40
+ invoke "pu:eject:layout", [], dest: "main_app",
41
+ force: options[:force],
42
+ skip: options[:skip]
43
43
  end
44
44
  end
45
45
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../lib/plutonium_generators"
4
+
5
+ module Pu
6
+ module Eject
7
+ class LayoutGenerator < Rails::Generators::Base
8
+ include PlutoniumGenerators::Generator
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ desc "Eject layout views into your own project"
13
+
14
+ class_option :dest, type: :string
15
+ class_option :rodauth, type: :boolean
16
+
17
+ def start
18
+ destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
19
+ [
20
+ "layouts/resource.html.erb"
21
+ ].each do |file|
22
+ copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
23
+ end
24
+ rescue => e
25
+ exception "#{self.class} failed:", e
26
+ end
27
+
28
+ private
29
+
30
+ def destination_app
31
+ @destination_app || select_app(options[:dest], msg: "Select destination app")
32
+ end
33
+
34
+ def copy_file(source_path, destination_path)
35
+ if File.exist?(source_path)
36
+ FileUtils.cp(source_path, destination_path)
37
+ say_status("info", "Copied #{source_path} to #{destination_path}", :green)
38
+ else
39
+ say_status("error", "Source file #{source_path} does not exist", :red)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../lib/plutonium_generators"
4
+
5
+ module Pu
6
+ module Eject
7
+ class ShellGenerator < Rails::Generators::Base
8
+ include PlutoniumGenerators::Generator
9
+
10
+ source_root File.expand_path("templates", __dir__)
11
+
12
+ desc "Eject layout shell (i.e header, sidebar) into your own project"
13
+
14
+ class_option :dest, type: :string
15
+
16
+ def start
17
+ destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
18
+ [
19
+ "application/_resource_header.html.erb",
20
+ "application/_resource_sidebar.html.erb"
21
+ ].each do |file|
22
+ copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
23
+ end
24
+ rescue => e
25
+ exception "#{self.class} failed:", e
26
+ end
27
+
28
+ private
29
+
30
+ def destination_app
31
+ @destination_app || select_app(options[:dest], msg: "Select destination app")
32
+ end
33
+
34
+ def copy_file(source_path, destination_path)
35
+ if File.exist?(source_path)
36
+ FileUtils.cp(source_path, destination_path)
37
+ say_status("info", "Copied #{source_path} to #{destination_path}", :green)
38
+ else
39
+ say_status("error", "Source file #{source_path} does not exist", :red)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -34,7 +34,7 @@ module PlutoniumGenerators
34
34
  end
35
35
 
36
36
  def available_apps
37
- @available_apps ||= available_packages.select { |pkg| pkg.ends_with? "_app" }
37
+ @available_apps ||= ["main_app"] + available_packages.select { |pkg| pkg.ends_with? "_app" }
38
38
  end
39
39
 
40
40
  def available_features
@@ -4,7 +4,7 @@ require "rails/generators"
4
4
  require "rails/generators/active_record/model/model_generator"
5
5
 
6
6
  module PlutoniumGenerators
7
- class ModelGenerator < ActiveRecord::Generators::ModelGenerator
7
+ class ModelGeneratorBase < ActiveRecord::Generators::ModelGenerator
8
8
  include PlutoniumGenerators::Generator
9
9
 
10
10
  remove_hook_for :test_framework
@@ -41,27 +41,27 @@ module PlutoniumGenerators
41
41
  def name
42
42
  @pu_name ||= begin
43
43
  @original_name = @name
44
- @selected_feature = select_feature selected_feature
45
- @name = [main_app? ? nil : selected_feature.underscore, super.singularize.underscore].compact.join "/"
44
+ @selected_destination_feature = select_feature selected_destination_feature, msg: "Select destination feature"
45
+ @name = [main_app? ? nil : selected_destination_feature.underscore, super.singularize.underscore].compact.join "/"
46
46
  set_destination_root!
47
47
  @name
48
48
  end
49
49
  end
50
50
 
51
51
  def feature_package_name
52
- main_app? ? nil : selected_feature.camelize
52
+ main_app? ? nil : selected_destination_feature.camelize
53
53
  end
54
54
 
55
55
  def main_app?
56
- selected_feature == "main_app"
56
+ selected_destination_feature == "main_app"
57
57
  end
58
58
 
59
- def selected_feature
60
- @selected_feature || options[:dest]
59
+ def selected_destination_feature
60
+ @selected_destination_feature || options[:dest]
61
61
  end
62
62
 
63
63
  def set_destination_root!
64
- @destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{selected_feature.underscore}")]
64
+ @destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{selected_destination_feature.underscore}")]
65
65
  end
66
66
 
67
67
  # https://github.com/rails/rails/blob/main/railties/lib/rails/generators/generated_attribute.rb#L7
@@ -42,6 +42,10 @@ module Pu
42
42
  directory "app/#{dir}", "packages/#{package_namespace}/app/#{dir}/#{package_namespace}"
43
43
  end
44
44
  create_file "packages/#{package_namespace}/app/views/#{package_namespace}/.keep"
45
+
46
+ invoke "pu:eject:shell", [], dest: package_namespace,
47
+ force: options[:force],
48
+ skip: options[:skip]
45
49
  rescue => e
46
50
  exception "#{self.class} failed:", e
47
51
  end
@@ -14,7 +14,7 @@ module Pu
14
14
  # argument :name
15
15
 
16
16
  def start
17
- source_feature = select_feature
17
+ source_feature = select_feature msg: "Select source feature"
18
18
  source_module = (source_feature == "main_app") ? "ResourceRecord" : "#{source_feature.classify}::ResourceRecord"
19
19
 
20
20
  Plutonium.eager_load_rails!
@@ -4,7 +4,7 @@ require_relative "../../lib/plutonium_generators"
4
4
 
5
5
  module Pu
6
6
  module Res
7
- class ModelGenerator < PlutoniumGenerators::ModelGenerator
7
+ class ModelGenerator < PlutoniumGenerators::ModelGeneratorBase
8
8
  source_root File.expand_path("templates", __dir__)
9
9
 
10
10
  def run_create_module
@@ -4,14 +4,18 @@ require_relative "../../lib/plutonium_generators"
4
4
 
5
5
  module Pu
6
6
  module Res
7
- class ScaffoldGenerator < PlutoniumGenerators::ModelGenerator
7
+ class ScaffoldGenerator < PlutoniumGenerators::ModelGeneratorBase
8
8
  include PlutoniumGenerators::Generator
9
9
 
10
10
  source_root File.expand_path("templates", __dir__)
11
11
 
12
12
  desc "Scaffold a resource"
13
13
 
14
+ class_option :model, type: :boolean, default: true
15
+
14
16
  def setup
17
+ return unless options[:model]
18
+
15
19
  model_class = class_name.safe_constantize
16
20
  if model_class.present? && attributes.empty? && prompt.yes?("Existing model class found. Do you want to import its attributes?")
17
21
  attributes_str = model_class.content_columns.map { |col| "#{col.name}:#{col.type}" }
@@ -20,6 +24,8 @@ module Pu
20
24
  end
21
25
 
22
26
  def create_model
27
+ return unless options[:model]
28
+
23
29
  invoke "pu:res:model", [@original_name, *@original_attributes], dest: selected_feature, **options
24
30
  end
25
31
 
@@ -89,6 +89,10 @@ module Pu
89
89
  return unless base?
90
90
 
91
91
  template "app/models/account.rb", "app/models/#{account_path}.rb"
92
+ invoke "pu:res:scaffold", [table, "email:string", "status:integer"], dest: "main_app",
93
+ model: false,
94
+ force: true,
95
+ skip: options[:skip]
92
96
  end
93
97
 
94
98
  def create_mailer
@@ -45,9 +45,16 @@ module Pu
45
45
  end
46
46
 
47
47
  def create_install_migration
48
+ next unless activerecord_adapter == "postgresql"
49
+
48
50
  migration_template "db/migrate/install_rodauth.rb", "db/migrate/install_rodauth.rb" # , File.join(db_migrate_path, "#{migration_name}.rb")
49
51
  end
50
52
 
53
+ def eject_layout
54
+ file = "app/views/layouts/rodauth.html.erb"
55
+ FileUtils.cp Plutonium.root.join(file), Rails.root.join(file)
56
+ end
57
+
51
58
  def show_instructions
52
59
  readme "INSTRUCTIONS" if behavior == :invoke
53
60
  end
@@ -1,5 +1,5 @@
1
1
  <% if defined?(ActiveRecord::Railtie) -%>
2
- class <%= account_path.classify %> < ApplicationRecord
2
+ class <%= account_path.classify %> < ResourceRecord
3
3
  include Rodauth::Rails.model<%= "(:#{table_prefix})" unless primary? %>
4
4
  # add concerns above.
5
5
 
@@ -190,9 +190,9 @@ module Plutonium
190
190
  #
191
191
  # @param name [Symbol] The name of the filter.
192
192
  # @param body [Proc, nil] The body of the filter.
193
- def define_filter(name, body = nil, &block)
193
+ def define_filter(name, body = nil, &)
194
194
  body ||= name
195
- filter_definitions[name] = build_query(body, &block)
195
+ filter_definitions[name] = build_query(body, &)
196
196
  end
197
197
 
198
198
  # Defines a scope with the given name and body.
@@ -251,14 +251,14 @@ module Plutonium
251
251
  # @param body [Proc, Symbol] The body of the query.
252
252
  # @yieldparam query [Query] The query object.
253
253
  # @return [Query] The constructed query object.
254
- def build_query(body, &block)
254
+ def build_query(body, &)
255
255
  case body
256
256
  when Symbol
257
257
  raise "Cannot find scope :#{body} on #{resource_class}" unless resource_class.respond_to?(body)
258
258
 
259
- ScopeQuery.new(body, &block)
259
+ ScopeQuery.new(body, &)
260
260
  else
261
- BlockQuery.new(body, &block)
261
+ BlockQuery.new(body, &)
262
262
  end
263
263
  end
264
264
 
@@ -1,3 +1,3 @@
1
1
  module Plutonium
2
- VERSION = "0.11.2"
2
+ VERSION = "0.12.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plutonium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
@@ -720,6 +720,7 @@ files:
720
720
  - app/views/application/_flash.html.erb
721
721
  - app/views/application/_flash_alerts.html.erb
722
722
  - app/views/application/_flash_toasts.html.erb
723
+ - app/views/application/_resource_header.html copy.erb
723
724
  - app/views/application/_resource_header.html.erb
724
725
  - app/views/application/_resource_sidebar.html.erb
725
726
  - app/views/components/action_button/action_button_component.html.erb
@@ -874,6 +875,8 @@ files:
874
875
  - lib/generators/pu/docker/install/templates/bin/restart
875
876
  - lib/generators/pu/docker/install/templates/bin/shell
876
877
  - lib/generators/pu/docker/install/templates/docker-compose.yml
878
+ - lib/generators/pu/eject/layout/layout_generator.rb
879
+ - lib/generators/pu/eject/shell/shell_generator.rb
877
880
  - lib/generators/pu/gem/dotenv/dotenv_generator.rb
878
881
  - lib/generators/pu/gem/dotenv/templates/.env
879
882
  - lib/generators/pu/gem/dotenv/templates/.env.local
@@ -897,7 +900,7 @@ files:
897
900
  - lib/generators/pu/lib/plutonium_generators/concerns/serializer.rb
898
901
  - lib/generators/pu/lib/plutonium_generators/generator.rb
899
902
  - lib/generators/pu/lib/plutonium_generators/installer.rb
900
- - lib/generators/pu/lib/plutonium_generators/model_generator.rb
903
+ - lib/generators/pu/lib/plutonium_generators/model_generator_base.rb
901
904
  - lib/generators/pu/pkg/app/app_generator.rb
902
905
  - lib/generators/pu/pkg/app/templates/app/controllers/concerns/controller.rb.tt
903
906
  - lib/generators/pu/pkg/app/templates/app/controllers/controller.rb.tt
@@ -1172,7 +1175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1172
1175
  - !ruby/object:Gem::Version
1173
1176
  version: '0'
1174
1177
  requirements: []
1175
- rubygems_version: 3.5.3
1178
+ rubygems_version: 3.5.11
1176
1179
  signing_key:
1177
1180
  specification_version: 4
1178
1181
  summary: The ultimate Rapid Application Development Toolkit (RADKit) for Rails application