solid_litequeen 0.19.3 → 0.20.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.
@@ -1,241 +1,309 @@
1
- <div class="container mx-auto px-4 py-8">
2
- <h1 class="text-3xl font-bold mb-6 flex gap-1 items-center justify-center">
3
- <%= link_to database_path(params[:database_id]) do %>
4
- <%= image_tag "solid_litequeen/icons/database.svg", class: "opacity-60 size-6 dark:filter-white" %>
5
- <% end %>
1
+ <div class="space-y-6">
2
+ <div>
3
+ <div class="flex items-center gap-2 text-sm text-faint">
4
+ <%= link_to database_path(params[:database_id]), class: "inline-flex items-center gap-2 text-faint hover:text-[var(--accent)]" do %>
5
+ <%= image_tag "solid_litequeen/icons/database.svg", class: "size-4 icon-muted" %>
6
+ Database
7
+ <% end %>
6
8
 
7
- <%= image_tag "solid_litequeen/icons/chevron-right.svg", class: "opacity-60 size-6 dark:filter-white" %>
9
+ <span class="text-faint">/</span>
10
+ <span class="font-medium text-[var(--text)]"><%= @table_name %></span>
11
+ </div>
8
12
 
9
- <span>
10
- <%= @table_name %>
11
- </span>
13
+ <h1
14
+ class="
15
+ mt-3 text-2xl font-display font-semibold text-[var(--text)]
16
+ sm:text-3xl
17
+ "
18
+ >
19
+ <%= @table_name %> Rows
12
20
  </h1>
13
21
 
14
- <div class="mb-6">
15
- <p class="text-base-content/60"><%= pluralize(@row_count, "row") %> found</p>
16
- </div>
22
+ <p class="mt-2 text-sm text-muted">
23
+ <%= pluralize(@row_count, "row") %> found
24
+ </p>
25
+ </div>
26
+
27
+ <div class="surface-card overflow-x-auto">
28
+ <div class="min-w-full inline-block align-middle">
29
+ <table
30
+ data-controller="table"
31
+ data-database_table_path="<%= database_table_rows_path %>"
32
+ data-set-table-order-path="<%= database_set_table_column_order_path(params[:database_id], @table_name) %>"
33
+ class="min-w-full text-sm"
34
+ >
35
+ <thead
36
+ class="
37
+ bg-[var(--surface-strong)] text-xs uppercase tracking-[0.2em]
38
+ text-faint
39
+ "
40
+ >
41
+ <tr class="border-b border-[var(--border)]">
42
+ <% @data.columns.each_with_index do |column, index| %>
43
+ <th
44
+ draggable="true"
45
+ data-controller="orbit"
46
+ data-column-index="<%= index %>"
47
+ data-column-name="<%= column %>"
48
+ class="
49
+ px-6 py-3 text-left font-semibold hover:cursor-move
50
+ data-[is-dragging]:bg-[var(--drag-highlight)]
51
+ data-[column-order-about-to-be-swapped]:bg-[var(--swap-highlight)]
52
+ "
53
+ >
54
+ <% popover_id = "popover_#{column}_#{SecureRandom.hex(8)}"
55
+ anchor_name = "--anchor_#{popover_id}"
56
+ sort_arrow =
57
+ if @sort_column == column && @sort_direction == 'DESC'
58
+ '▼'
59
+ elsif @sort_column == column && @sort_direction == 'ASC'
60
+ '▲'
61
+ end %>
62
+
63
+ <div class="inline-flex items-center gap-2 whitespace-nowrap">
64
+ <button
65
+ type="button"
66
+ popovertarget="<%= popover_id %>"
67
+ data-orbit-target="planet"
68
+ class="
69
+ inline-flex size-6 items-center justify-center
70
+ rounded-full border border-[var(--border)]
71
+ bg-[var(--surface)] text-faint shadow-sm transition
72
+ hover:-translate-y-0.5 hover:text-[var(--accent)]
73
+ hover:shadow-md
74
+ "
75
+ style="anchor-name: <%= anchor_name %>;"
76
+ >
77
+ <%= image_tag "solid_litequeen/icons/info.svg", class: "size-3.5 icon-muted" %>
78
+ </button>
79
+
80
+ <%= link_to database_table_rows_path(
81
+ database_id: @database_id,
82
+ table: @table_name,
83
+ sort_column: column,
84
+ sort_direction: (@sort_column == column && @sort_direction == 'DESC') ? 'ASC' : 'DESC'
85
+ ), class: "inline-flex items-center gap-1 text-[var(--text)] hover:text-[var(--accent)]" do %>
86
+ <span><%= column %></span>
17
87
 
18
- <div class="bg-base-200 border border-base-content/20 rounded-lg shadow overflow-x-auto">
19
- <div class="min-w-full inline-block align-middle">
20
- <table
21
- data-controller="table"
22
- data-database_table_path="<%= database_table_rows_path %>"
23
- data-set-table-order-path="<%= database_set_table_column_order_path(params[:database_id], @table_name) %>"
24
- class="min-w-full relative"
88
+ <% if sort_arrow.present? %>
89
+ <span class="text-[10px] text-faint">
90
+ <%= sort_arrow %>
91
+ </span>
92
+ <% end %>
93
+ <% end %>
94
+ </div>
95
+
96
+ <div
97
+ popover
98
+ id="<%= popover_id %>"
99
+ data-orbit-target="moon"
100
+ class="surface-card max-w-lg p-4"
101
+ style="position-anchor: <%= anchor_name %>;"
25
102
  >
26
- <thead class="">
27
- <tr class="bg-base-300 border-b border-base-content/20">
28
- <% @data.columns.each_with_index do |column, index| %>
29
- <th
30
- draggable="true"
31
- data-controller="orbit"
32
- data-column-index="<%= index %>"
33
- data-column-name="<%= column %>"
34
- class="hover:cursor-move px-6 py-3 text-left text-sm font-medium whitespace-nowrap data-[is-dragging]:bg-orange-300/30 data-[column-order-about-to-be-swapped]:bg-green-300/30"
35
- >
36
-
37
- <%# popover the the column info %>
38
- <%
39
- popover_id = "popover_#{column}_#{SecureRandom.hex(8)}"
40
- anchor_name = "--anchor_#{popover_id}"
41
- %>
42
-
43
-
44
- <button popovertarget="<%= popover_id %>" data-orbit-target="planet" class="mr-1 p-1 hover:cursor-pointer" style="anchor-name: <%= anchor_name %> ;">
45
- <%= image_tag "solid_litequeen/icons/info.svg", class: "size-3.5 opacity-60 dark:filter-white" %>
46
- </button>
47
-
48
- <div popover id="<%= popover_id %>" data-orbit-target="moon" class="max-w-lg min-h-10 bg-base-200 border border-base-content/20 p-4 rounded-md" style="position-anchor: <%= anchor_name %>;">
49
- <table class="min-w-full divide-y border border-base-content/10">
50
-
51
- <tbody class="bg-base-100">
52
- <% column_info = @columns_info[column] %>
53
-
54
- <tr class="border-b last:border-none border-base-content/10">
55
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Type</td>
56
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "><%= column_info&.dig(:sql_type) %></td>
57
- </tr>
58
-
59
- <tr class="border-b last:border-none border-base-content/10">
60
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Primary Key</td>
61
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "><%= column_info&.dig(:is_primary_key) %></td>
62
- </tr>
63
-
64
- <tr class="border-b last:border-none border-base-content/10">
65
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Nullable</td>
66
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "><%= column_info&.dig(:null) %></td>
67
- </tr>
68
-
69
- <tr class="border-b last:border-none border-base-content/10">
70
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Default</td>
71
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "><%= column_info&.dig(:default) %></td>
72
- </tr>
73
-
74
- <% if column_info[:enum_options] %>
75
- <tr class="border-b last:border-none border-base-content/10">
76
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Enum values</td>
77
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80">
78
- <%= column_info[:enum_options].map { |k, v| "#{k}: #{v}" }.join(', ') %>
79
- </td>
80
- </tr>
81
- <% end %>
82
-
83
- <% if column_info&.dig(:foreign_key).present? %>
84
-
85
- <tr class="border-b last:border-none border-base-content/10">
86
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold"></td>
87
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "> </td>
88
- </tr>
89
-
90
- <tr class="border-b last:border-none border-base-content/10">
91
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Foreign Key</td>
92
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80">
93
- <%= column_info&.dig(:foreign_key).dig(:to_table) %>
94
- &gt;
95
- <%= column_info&.dig(:foreign_key).dig(:primary_key) %>
96
- </td>
97
- </tr>
98
-
99
- <tr class="border-b last:border-none border-base-content/10">
100
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">ON_UPDATE</td>
101
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80"><%= column_info&.dig(:foreign_key).dig(:on_update) %></td>
102
- </tr>
103
-
104
- <tr class="border-b last:border-none border-base-content/10">
105
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">ON_DELETE</td>
106
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80"><%= column_info&.dig(:foreign_key).dig(:on_delete) %></td>
107
- </tr>
108
-
109
- <% end %>
110
-
111
- <% if column_info&.dig(:indexes).present? %>
112
-
113
- <tr class="border-b last:border-none border-base-content/10">
114
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold"></td>
115
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80 "> </td>
116
- </tr>
117
-
118
- <% column_info&.dig(:indexes).each do |index| %>
119
- <tr class="border-b last:border-none border-base-content/10">
120
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Index Name</td>
121
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80">
122
- <%= index[:name] %>
123
- </td>
124
- </tr>
125
- <tr class="border-b last:border-none border-base-content/10">
126
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content font-semibold">Unique</td>
127
- <td class="px-6 py-4 whitespace-nowrap text-sm text-base-content/80">
128
- <%= index[:unique] %>
129
- </td>
130
- </tr>
131
- <% end %>
132
-
133
-
134
- <% end %>
135
-
136
-
137
-
138
- </tbody>
139
- </table>
140
- </div>
141
-
142
- <%# link to sort the columns %>
143
- <%= link_to column,
144
- database_table_rows_path(
145
- database_id: @database_id,
146
- table: @table_name,
147
- sort_column: column,
148
- sort_direction: (@sort_column == column && @sort_direction == 'DESC') ? 'ASC' : 'DESC'
149
- ), class: "" %>
150
- <%= '▼' if @sort_column == column && @sort_direction == 'DESC' %>
151
- <%= '▲' if @sort_column == column && @sort_direction == 'ASC' %>
152
- </th>
153
- <% end %>
154
- </tr>
155
- </thead>
156
-
157
- <tbody class="main">
158
- <% @data.rows.each do |row| %>
159
- <tr class="border-b border-base-content/10 last:border-none hover:bg-base-100" >
160
- <% row.each_with_index do |item, index| %>
161
- <% truncated_item = item&.truncate(80) %>
162
- <% column_name = @data.columns[index] %>
163
- <% foreign_key = @columns_info[column_name]&.dig(:foreign_key) %>
164
- <td
165
- data-column="<%= column_name %>"
166
- data-data_type="<%= @columns_info.dig(column_name).dig(:type) %>"
167
- class="px-6 py-4 text-sm whitespace-nowrap"
168
- >
169
-
170
- <div class="flex justify-between gap-1">
171
-
172
- <% enum_opts = @columns_info[column_name][:enum_options] %>
173
- <% enum_label = enum_opts&.invert&.dig(item.to_i) if enum_opts.present? && item.present? %>
174
- <span data-column_item title="<%= enum_label if enum_label %>"><%= truncated_item %></span>
175
-
176
- <% if item.present? and foreign_key.present? %>
177
- <button
178
- data-action="click->table#load_foreign_key_data"
179
- data-fk_target_table="<%= foreign_key[:to_table] %>"
180
- data-fk_target_field="<%= foreign_key[:primary_key]%>"
181
- data-fk_target_field_value="<%= truncated_item %>"
182
- class="size-4 mt-0.5 hover:cursor-pointer flex-grow outline-none"
183
- >
184
- <%= image_tag "solid_litequeen/icons/spline.svg", class: "size-4 filter-cyan" %>
185
- </button>
186
-
187
- <% end %>
188
-
189
-
190
- <%# TODO: we can use one dynamic modal instead and fetch the data. for now this works and is (s)crapy! %>
191
- <% if truncated_item&.to_s&.ends_with?("...") %>
192
- <% dialog_id = "#{column_name}_#{SecureRandom.hex(8)}_context_dialog" %>
193
-
194
- <%= render "table-data-context-dialog", dialog_id: dialog_id, column_name: column_name, data: item %>
195
-
196
- <button onclick="document.getElementById('<%= dialog_id %>').showModal()" class="cursor-pointer size-4 outline-none">
197
- <%= image_tag "solid_litequeen/icons/circle-elipsis.svg", class: "opacity-60 size-4 dark:filter-white" %>
198
-
199
- </button>
200
-
201
-
202
- <% end %>
203
-
204
-
205
- </div>
206
- </td>
207
- <% end %>
103
+ <table class="min-w-full text-xs">
104
+ <tbody class="divide-y divide-[var(--border)]">
105
+ <% column_info = @columns_info[column] %>
106
+
107
+ <tr>
108
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
109
+ Type
110
+ </td>
111
+
112
+ <td class="px-4 py-2 text-muted">
113
+ <%= column_info&.dig(:sql_type) %>
114
+ </td>
115
+ </tr>
116
+
117
+ <tr>
118
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
119
+ Primary Key
120
+ </td>
121
+
122
+ <td class="px-4 py-2 text-muted">
123
+ <%= column_info&.dig(:is_primary_key) %>
124
+ </td>
125
+ </tr>
126
+
127
+ <tr>
128
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
129
+ Nullable
130
+ </td>
131
+
132
+ <td class="px-4 py-2 text-muted">
133
+ <%= column_info&.dig(:null) %>
134
+ </td>
135
+ </tr>
136
+
137
+ <tr>
138
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
139
+ Default
140
+ </td>
141
+
142
+ <td class="px-4 py-2 text-muted">
143
+ <%= column_info&.dig(:default) %>
144
+ </td>
145
+ </tr>
146
+
147
+ <% if column_info[:enum_options] %>
148
+ <tr>
149
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
150
+ Enum values
151
+ </td>
152
+
153
+ <td class="px-4 py-2 text-muted">
154
+ <%= column_info[:enum_options].map { |k, v| "#{k}: #{v}" }.join(', ') %>
155
+ </td>
156
+ </tr>
157
+ <% end %>
158
+
159
+ <% if column_info&.dig(:foreign_key).present? %>
160
+ <tr>
161
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
162
+ Foreign Key
163
+ </td>
164
+
165
+ <td class="px-4 py-2 text-muted">
166
+ <%= column_info&.dig(:foreign_key).dig(:to_table) %>
167
+ &gt;
168
+ <%= column_info&.dig(:foreign_key).dig(:primary_key) %>
169
+ </td>
170
+ </tr>
171
+ <tr>
172
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
173
+ ON_UPDATE
174
+ </td>
175
+
176
+ <td class="px-4 py-2 text-muted">
177
+ <%= column_info&.dig(:foreign_key).dig(:on_update) %>
178
+ </td>
179
+ </tr>
180
+ <tr>
181
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
182
+ ON_DELETE
183
+ </td>
184
+
185
+ <td class="px-4 py-2 text-muted">
186
+ <%= column_info&.dig(:foreign_key).dig(:on_delete) %>
187
+ </td>
208
188
  </tr>
189
+ <% end %>
190
+
191
+ <% if column_info&.dig(:indexes).present? %>
192
+ <% column_info&.dig(:indexes).each do |index| %>
193
+ <tr>
194
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
195
+ Index Name
196
+ </td>
197
+
198
+ <td class="px-4 py-2 text-muted">
199
+ <%= index[:name] %>
200
+ </td>
201
+ </tr>
202
+
203
+ <tr>
204
+ <td class="px-4 py-2 font-semibold text-[var(--text)]">
205
+ Unique
206
+ </td>
207
+
208
+ <td class="px-4 py-2 text-muted">
209
+ <%= index[:unique] %>
210
+ </td>
211
+ </tr>
212
+ <% end %>
213
+ <% end %>
214
+ </tbody>
215
+ </table>
216
+ </div>
217
+ </th>
218
+ <% end %>
219
+ </tr>
220
+ </thead>
221
+
222
+ <tbody class="divide-y divide-[var(--border)]">
223
+ <% @data.rows.each do |row| %>
224
+ <tr class="transition hover:bg-[var(--surface-muted)]">
225
+ <% row.each_with_index do |item, index| %>
226
+ <% truncated_item = item&.truncate(80) %>
227
+ <% column_name = @data.columns[index] %>
228
+ <% foreign_key = @columns_info[column_name]&.dig(:foreign_key) %>
229
+
230
+ <td
231
+ data-column="<%= column_name %>"
232
+ data-data_type="<%= @columns_info.dig(column_name).dig(:type) %>"
233
+ class="px-6 py-4 text-sm whitespace-nowrap"
234
+ >
235
+ <div class="flex justify-between gap-1">
236
+ <% enum_opts = @columns_info[column_name][:enum_options] %>
237
+ <% enum_label = enum_opts&.invert&.dig(item.to_i) if enum_opts.present? && item.present? %>
238
+
239
+ <span
240
+ data-column_item
241
+ title="<%= enum_label if enum_label %>"
242
+ >
243
+ <%= truncated_item %>
244
+ </span>
245
+
246
+ <% if item.present? && foreign_key.present? %>
247
+ <button
248
+ data-action="click->table#load_foreign_key_data"
249
+ data-fk_target_table="<%= foreign_key[:to_table] %>"
250
+ data-fk_target_field="<%= foreign_key[:primary_key] %>"
251
+ data-fk_target_field_value="<%= truncated_item %>"
252
+ class="size-4 mt-0.5 flex-grow outline-none"
253
+ >
254
+ <%= image_tag "solid_litequeen/icons/spline.svg", class: "size-4 filter-cyan" %>
255
+ </button>
209
256
  <% end %>
210
- </tbody>
211
-
212
- <dialog id="foreign-key-data" data-controller="dialog" class="bg-base-200 border rounded border-base-content/20 w-[900px] m-auto overscroll-y-contain">
213
- <div class="flex flex-row-reverse">
214
- <button data-action="click->dialog#close" class="cursor-pointer mr-4 mt-2 outline-none">
215
- <%= image_tag "solid_litequeen/icons/x.svg", class: "opacity-60 size-5 dark:filter-white" %>
216
- </button>
217
-
218
- </div>
219
-
220
- <div class="overflow-x-auto relative">
221
- <turbo-frame id="foreign-key-data-frame" class="peer">
222
- <%# loading animation for the first render %>
223
- <div class="flex w-full h-52 items-center justify-center">
224
- <%= render "solid_litequeen/loading-animation" %>
225
- </div>
226
-
227
- </turbo-frame>
228
-
229
- <%# loading animation everytime we load a new foreign key data %>
230
- <div class="hidden peer-aria-busy:flex absolute inset-0 w-full h-52 items-center justify-center">
231
- <%= render "solid_litequeen/loading-animation" %>
232
- </div>
233
-
234
- </div>
235
- </dialog>
236
- </table>
237
-
238
-
239
- </div>
257
+
258
+ <% if truncated_item&.to_s&.ends_with?("...") %>
259
+ <% dialog_id = "#{column_name}_#{SecureRandom.hex(8)}_context_dialog" %>
260
+ <%= render "table-data-context-dialog", dialog_id: dialog_id, column_name: column_name, data: item %>
261
+ <button
262
+ onclick="document.getElementById('<%= dialog_id %>').showModal()"
263
+ class="cursor-pointer size-4 outline-none"
264
+ >
265
+ <%= image_tag "solid_litequeen/icons/circle-elipsis.svg", class: "size-4 icon-muted" %>
266
+ </button>
267
+ <% end %>
268
+ </div>
269
+ </td>
270
+ <% end %>
271
+ </tr>
272
+ <% end %>
273
+ </tbody>
274
+
275
+ <dialog
276
+ id="foreign-key-data"
277
+ data-controller="dialog"
278
+ class="slq-dialog w-[900px] m-auto overscroll-y-contain"
279
+ >
280
+ <div class="flex flex-row-reverse">
281
+ <button
282
+ data-action="click->dialog#close"
283
+ class="cursor-pointer mr-4 mt-3 outline-none"
284
+ >
285
+ <%= image_tag "solid_litequeen/icons/x.svg", class: "size-5 icon-muted" %>
286
+ </button>
287
+ </div>
288
+
289
+ <div class="overflow-x-auto relative">
290
+ <turbo-frame id="foreign-key-data-frame" class="peer">
291
+ <div class="flex h-52 w-full items-center justify-center">
292
+ <%= render "solid_litequeen/loading-animation" %>
293
+ </div>
294
+ </turbo-frame>
295
+
296
+ <div
297
+ class="
298
+ hidden peer-aria-busy:flex absolute inset-0 h-52 w-full
299
+ items-center justify-center
300
+ "
301
+ >
302
+ <%= render "solid_litequeen/loading-animation" %>
303
+ </div>
304
+ </div>
305
+ </dialog>
306
+ </table>
240
307
  </div>
241
- </div>
308
+ </div>
309
+ </div>
data/config/importmap.rb CHANGED
@@ -5,7 +5,5 @@ pin "application", to: "solid_litequeen/application.js", preload: true
5
5
  pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true
6
6
  pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
7
7
  pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
8
- pin " @joint/core", to: "join.js", preload: false
9
- pin " @dagrejs/dagre", to: "dagre.min.js", preload: false
10
8
  pin_all_from SolidLitequeen::Engine.root.join("app/javascript/solid_litequeen/controllers"), under: "controllers", to: "solid_litequeen/controllers"
11
9
  # pin_all_from SolidLitequeen::Engine.root.join("app/javascript/solid_litequeen/helpers"), under: "helpers", to: "solid_litequeen/helpers"
@@ -1,3 +1,3 @@
1
1
  module SolidLitequeen
2
- VERSION = "0.19.3"
2
+ VERSION = "0.20.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid_litequeen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.3
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vik Borges
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: tailwindcss-rails
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '4.0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.0'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: debug
84
98
  requirement: !ruby/object:Gem::Requirement
@@ -173,6 +187,9 @@ files:
173
187
  - app/assets/images/solid_litequeen/icons/workflow.svg
174
188
  - app/assets/images/solid_litequeen/icons/x.svg
175
189
  - app/assets/stylesheets/solid_litequeen/application.css
190
+ - app/assets/stylesheets/solid_litequeen/tailwind.css
191
+ - app/assets/tailwind/solid_litequeen/application.css
192
+ - app/assets/tailwind/solid_litequeen/engine.css
176
193
  - app/controllers/solid_litequeen/application_controller.rb
177
194
  - app/controllers/solid_litequeen/databases_controller.rb
178
195
  - app/helpers/solid_litequeen/application_helper.rb
@@ -186,6 +203,10 @@ files:
186
203
  - app/javascript/solid_litequeen/controllers/orbit_controller.js
187
204
  - app/javascript/solid_litequeen/controllers/table_controller.js
188
205
  - app/javascript/solid_litequeen/controllers/table_relations_controller.js
206
+ - app/javascript/solid_litequeen/vendor/dagre.min.js
207
+ - app/javascript/solid_litequeen/vendor/floating-ui-core.js
208
+ - app/javascript/solid_litequeen/vendor/floating-ui-dom.js
209
+ - app/javascript/solid_litequeen/vendor/joint.js
189
210
  - app/jobs/solid_litequeen/application_job.rb
190
211
  - app/mailers/solid_litequeen/application_mailer.rb
191
212
  - app/models/solid_litequeen/application_record.rb