sqlite-hub 1.0.0 → 1.1.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.
- package/README.md +47 -33
- package/bin/sqlite-hub.js +127 -47
- package/frontend/js/api.js +6 -0
- package/frontend/js/app.js +229 -44
- package/frontend/js/components/modal.js +17 -1
- package/frontend/js/components/queryChartRenderer.js +28 -3
- package/frontend/js/components/queryEditor.js +24 -26
- package/frontend/js/components/queryHistoryDetail.js +1 -1
- package/frontend/js/components/queryHistoryHeader.js +48 -0
- package/frontend/js/components/queryHistoryList.js +132 -0
- package/frontend/js/components/queryHistoryPanel.js +72 -136
- package/frontend/js/components/structureGraph.js +700 -89
- package/frontend/js/components/tableDesignerEditor.js +26 -47
- package/frontend/js/components/tableDesignerSidebar.js +7 -31
- package/frontend/js/components/tableDesignerSqlPreview.js +2 -1
- package/frontend/js/store.js +97 -8
- package/frontend/js/utils/exportFilenames.js +3 -1
- package/frontend/js/views/charts.js +326 -174
- package/frontend/js/views/connections.js +59 -64
- package/frontend/js/views/data.js +48 -54
- package/frontend/js/views/documents.js +62 -23
- package/frontend/js/views/editor.js +0 -2
- package/frontend/js/views/mediaTagging.js +6 -5
- package/frontend/js/views/settings.js +78 -0
- package/frontend/js/views/structure.js +48 -32
- package/frontend/js/views/tableDesigner.js +45 -1
- package/frontend/styles/components.css +259 -54
- package/frontend/styles/structure-graph.css +150 -37
- package/frontend/styles/tailwind.generated.css +1 -1
- package/frontend/styles/tokens.css +2 -0
- package/frontend/styles/views.css +75 -38
- package/package.json +3 -2
- package/server/routes/export.js +89 -22
- package/server/routes/externalApi.js +84 -2
- package/server/routes/settings.js +37 -28
- package/server/services/appInfoService.js +215 -0
- package/server/services/databaseCommandService.js +50 -6
- package/server/services/sqlite/dataBrowserService.js +11 -3
- package/server/services/sqlite/exportService.js +307 -22
- package/tests/api-token-auth.test.js +110 -1
- package/tests/cli-args.test.js +16 -3
- package/tests/database-command-service.test.js +40 -3
- package/tests/export-blob.test.js +54 -1
- package/tests/export-filenames.test.js +4 -0
- package/tests/settings-api-tokens-route.test.js +22 -1
- package/tests/settings-metadata.test.js +99 -1
- package/tests/settings-view.test.js +28 -0
|
@@ -22,7 +22,7 @@ function renderEntryGroup(title, entries, activeName, options = {}) {
|
|
|
22
22
|
: '';
|
|
23
23
|
|
|
24
24
|
return [
|
|
25
|
-
'<button class="
|
|
25
|
+
'<button class="subnavi-item border px-3 ',
|
|
26
26
|
compact ? 'py-2.5' : 'py-3',
|
|
27
27
|
' text-left transition-colors ',
|
|
28
28
|
isActive
|
|
@@ -115,20 +115,27 @@ function renderObjectInspector(detail) {
|
|
|
115
115
|
return `
|
|
116
116
|
<div class="structure-graph__panel">
|
|
117
117
|
<div class="space-y-3">
|
|
118
|
-
<div class="structure-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
`
|
|
129
|
-
: ''
|
|
130
|
-
}
|
|
118
|
+
<div class="structure-graph__panel-heading">
|
|
119
|
+
<div class="structure-graph__eyebrow">Object Inspector</div>
|
|
120
|
+
<button
|
|
121
|
+
class="query-history-icon-button"
|
|
122
|
+
data-structure-graph-action="toggle-inspector"
|
|
123
|
+
type="button"
|
|
124
|
+
aria-label="Hide inspector"
|
|
125
|
+
>
|
|
126
|
+
<span class="material-symbols-outlined text-[18px]">close</span>
|
|
127
|
+
</button>
|
|
131
128
|
</div>
|
|
129
|
+
<div class="structure-graph__title">${escapeHtml(detail.name)}</div>
|
|
130
|
+
${
|
|
131
|
+
detail.tableName
|
|
132
|
+
? `
|
|
133
|
+
<div class="structure-graph__subtitle">
|
|
134
|
+
TABLE ${escapeHtml(detail.tableName)}
|
|
135
|
+
</div>
|
|
136
|
+
`
|
|
137
|
+
: ''
|
|
138
|
+
}
|
|
132
139
|
</div>
|
|
133
140
|
|
|
134
141
|
<div class="structure-graph__summary">
|
|
@@ -210,10 +217,11 @@ function renderGraphSurface(structure, selectedName, detail, detailLoading, tabl
|
|
|
210
217
|
|
|
211
218
|
return `
|
|
212
219
|
<section class="structure-graph" data-structure-graph-root>
|
|
213
|
-
<div class="structure-graph__toolbar">
|
|
220
|
+
<div class="structure-graph__toolbar workspace-header">
|
|
214
221
|
<div class="structure-graph__toolbar-main">
|
|
215
222
|
<button
|
|
216
|
-
class="${toolbarButtonClass}"
|
|
223
|
+
class="${toolbarButtonClass} panel-toggle-button ${tablesVisible ? '' : 'is-active'}"
|
|
224
|
+
aria-pressed="${tablesVisible ? 'false' : 'true'}"
|
|
217
225
|
data-action="toggle-structure-tables"
|
|
218
226
|
type="button"
|
|
219
227
|
>
|
|
@@ -255,8 +263,11 @@ function renderGraphSurface(structure, selectedName, detail, detailLoading, tabl
|
|
|
255
263
|
<span class="material-symbols-outlined text-sm">table_rows</span>
|
|
256
264
|
Open Data
|
|
257
265
|
</button>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="structure-graph__toolbar-inspector">
|
|
258
268
|
<button
|
|
259
|
-
class="${toolbarButtonClass}"
|
|
269
|
+
class="${toolbarButtonClass} panel-toggle-button"
|
|
270
|
+
aria-pressed="false"
|
|
260
271
|
data-structure-graph-action="toggle-inspector"
|
|
261
272
|
type="button"
|
|
262
273
|
>
|
|
@@ -280,6 +291,11 @@ function renderGraphSurface(structure, selectedName, detail, detailLoading, tabl
|
|
|
280
291
|
The active database does not expose table metadata for the schema graph.
|
|
281
292
|
</p>
|
|
282
293
|
</div>
|
|
294
|
+
<div
|
|
295
|
+
class="structure-graph__edge-readout"
|
|
296
|
+
data-structure-graph-edge-readout
|
|
297
|
+
hidden
|
|
298
|
+
></div>
|
|
283
299
|
</div>
|
|
284
300
|
|
|
285
301
|
<aside
|
|
@@ -307,24 +323,24 @@ export function renderStructureView(state) {
|
|
|
307
323
|
${
|
|
308
324
|
tablesVisible
|
|
309
325
|
? `
|
|
310
|
-
<aside class="structure-view__sidebar">
|
|
311
|
-
<div class="structure-view__sidebar-header">
|
|
312
|
-
<div
|
|
313
|
-
Objects
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
326
|
+
<aside class="structure-view__sidebar subnavi-panel">
|
|
327
|
+
<div class="structure-view__sidebar-header subnavi-header">
|
|
328
|
+
<div>
|
|
329
|
+
<div class="subnavi-header-title">Objects</div>
|
|
330
|
+
<div class="subnavi-header-details">
|
|
331
|
+
total ${escapeHtml(
|
|
332
|
+
formatNumber(
|
|
333
|
+
(structure?.grouped?.tables?.length ?? 0) +
|
|
334
|
+
(structure?.grouped?.views?.length ?? 0) +
|
|
335
|
+
(structure?.grouped?.indexes?.length ?? 0) +
|
|
336
|
+
(structure?.grouped?.triggers?.length ?? 0),
|
|
337
|
+
),
|
|
338
|
+
)}
|
|
339
|
+
</div>
|
|
324
340
|
</div>
|
|
325
341
|
</div>
|
|
326
342
|
${renderStructureTableSearch(state)}
|
|
327
|
-
<div class="structure-view__sidebar-body custom-scrollbar">
|
|
343
|
+
<div class="structure-view__sidebar-body subnavi-list custom-scrollbar">
|
|
328
344
|
${
|
|
329
345
|
structure
|
|
330
346
|
? `
|
|
@@ -16,12 +16,56 @@ function renderRouteError(error) {
|
|
|
16
16
|
`;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
function renderWorkspaceToolbar(state) {
|
|
20
|
+
const tablesVisible = state.tableDesigner.tablesVisible !== false;
|
|
21
|
+
|
|
22
|
+
return `
|
|
23
|
+
<div class="table-designer-workspace__toolbar workspace-header">
|
|
24
|
+
<div class="table-designer-workspace__toolbar-left">
|
|
25
|
+
<button
|
|
26
|
+
class="standard-button panel-toggle-button ${tablesVisible ? "" : "is-active"}"
|
|
27
|
+
aria-pressed="${tablesVisible ? "false" : "true"}"
|
|
28
|
+
data-action="toggle-table-designer-tables"
|
|
29
|
+
type="button"
|
|
30
|
+
>
|
|
31
|
+
<span class="material-symbols-outlined">${tablesVisible ? "visibility_off" : "visibility"}</span>
|
|
32
|
+
${tablesVisible ? "Hide Tables" : "Show Tables"}
|
|
33
|
+
</button>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="table-designer-workspace__toolbar-right">
|
|
36
|
+
<button
|
|
37
|
+
class="standard-button"
|
|
38
|
+
data-action="import-table-designer-csv"
|
|
39
|
+
type="button"
|
|
40
|
+
>
|
|
41
|
+
Import CSV
|
|
42
|
+
</button>
|
|
43
|
+
<input
|
|
44
|
+
accept=".csv,text/csv"
|
|
45
|
+
class="table-designer-workspace__file-input"
|
|
46
|
+
data-bind="table-designer-import-file"
|
|
47
|
+
type="file"
|
|
48
|
+
/>
|
|
49
|
+
<button
|
|
50
|
+
class="signature-button"
|
|
51
|
+
data-action="navigate"
|
|
52
|
+
data-to="/table-designer/new"
|
|
53
|
+
type="button"
|
|
54
|
+
>
|
|
55
|
+
+ New Table
|
|
56
|
+
</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
|
|
19
62
|
export function renderTableDesignerView(state) {
|
|
20
63
|
return {
|
|
21
64
|
main: `
|
|
22
65
|
<section class="view-surface table-designer-view">
|
|
23
|
-
${renderTableDesignerSidebar(state)}
|
|
66
|
+
${state.tableDesigner.tablesVisible !== false ? renderTableDesignerSidebar(state) : ""}
|
|
24
67
|
<div class="table-designer-workspace">
|
|
68
|
+
${renderWorkspaceToolbar(state)}
|
|
25
69
|
${renderRouteError(state.tableDesigner.error)}
|
|
26
70
|
<div class="table-designer-workspace__top">
|
|
27
71
|
${renderTableDesignerEditor(state)}
|
|
@@ -153,6 +153,92 @@
|
|
|
153
153
|
color: var(--color-primary-container);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
.subnavi-panel {
|
|
157
|
+
display: flex;
|
|
158
|
+
flex: 0 0 var(--subnavi-width);
|
|
159
|
+
flex-direction: column;
|
|
160
|
+
min-height: 0;
|
|
161
|
+
min-width: min(var(--subnavi-width), 100%);
|
|
162
|
+
width: var(--subnavi-width);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.subnavi-list {
|
|
166
|
+
align-items: center;
|
|
167
|
+
display: flex;
|
|
168
|
+
flex: 1;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
gap: var(--spacing-2);
|
|
171
|
+
min-height: 0;
|
|
172
|
+
overflow: auto;
|
|
173
|
+
padding: var(--spacing-3);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.subnavi-item {
|
|
177
|
+
max-width: 100%;
|
|
178
|
+
width: min(var(--subnavi-item-width), 100%);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.subnavi-header {
|
|
182
|
+
align-items: center;
|
|
183
|
+
border-bottom: 1px solid var(--border-medium);
|
|
184
|
+
display: flex;
|
|
185
|
+
flex-wrap: wrap;
|
|
186
|
+
gap: var(--spacing-4);
|
|
187
|
+
justify-content: space-between;
|
|
188
|
+
padding: var(--spacing-5);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.subnavi-header > :first-child {
|
|
192
|
+
align-items: baseline;
|
|
193
|
+
display: flex;
|
|
194
|
+
flex-wrap: wrap;
|
|
195
|
+
gap: var(--spacing-3);
|
|
196
|
+
justify-content: space-between;
|
|
197
|
+
min-width: 0;
|
|
198
|
+
width: 100%;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.subnavi-header-title {
|
|
202
|
+
color: var(--color-primary-container);
|
|
203
|
+
flex: 1 1 auto;
|
|
204
|
+
font-family: var(--font-family-mono);
|
|
205
|
+
font-size: var(--font-size-status);
|
|
206
|
+
font-weight: 700;
|
|
207
|
+
letter-spacing: 0.2em;
|
|
208
|
+
min-width: 0;
|
|
209
|
+
text-transform: uppercase;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.subnavi-header-details {
|
|
213
|
+
color: rgb(var(--rgb-on-surface-variant) / 0.55);
|
|
214
|
+
flex: 0 0 auto;
|
|
215
|
+
font-family: var(--font-family-mono);
|
|
216
|
+
font-size: var(--font-size-status);
|
|
217
|
+
letter-spacing: 0.16em;
|
|
218
|
+
margin-left: auto;
|
|
219
|
+
text-align: right;
|
|
220
|
+
text-transform: uppercase;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.workspace-header {
|
|
224
|
+
align-items: center;
|
|
225
|
+
background: var(--color-surface-container);
|
|
226
|
+
border-bottom: 1px solid rgb(var(--rgb-outline) / 0.1);
|
|
227
|
+
display: flex;
|
|
228
|
+
flex-wrap: wrap;
|
|
229
|
+
gap: var(--spacing-4);
|
|
230
|
+
min-height: calc(var(--button-height) + (var(--spacing-3) * 2));
|
|
231
|
+
padding: var(--spacing-3) var(--spacing-6);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.workspace-header--low {
|
|
235
|
+
background: var(--color-surface-container-low);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.workspace-header > :only-child {
|
|
239
|
+
width: 100%;
|
|
240
|
+
}
|
|
241
|
+
|
|
156
242
|
.sidebar-footer {
|
|
157
243
|
margin-top: auto;
|
|
158
244
|
padding: 0 var(--spacing-6);
|
|
@@ -409,6 +495,21 @@
|
|
|
409
495
|
text-transform: uppercase;
|
|
410
496
|
}
|
|
411
497
|
|
|
498
|
+
.panel-toggle-button.is-active,
|
|
499
|
+
.panel-toggle-button[aria-pressed='true'] {
|
|
500
|
+
background: var(--primary-alpha-12);
|
|
501
|
+
border-color: rgb(var(--rgb-primary) / 0.38);
|
|
502
|
+
box-shadow: inset 0 0 0 1px var(--primary-alpha-12);
|
|
503
|
+
color: var(--color-primary-container);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
.panel-toggle-button.is-active:hover,
|
|
507
|
+
.panel-toggle-button[aria-pressed='true']:hover {
|
|
508
|
+
background: var(--primary-alpha-18);
|
|
509
|
+
border-color: rgb(var(--rgb-primary) / 0.5);
|
|
510
|
+
color: var(--color-primary-container);
|
|
511
|
+
}
|
|
512
|
+
|
|
412
513
|
.signature-button {
|
|
413
514
|
color: #000;
|
|
414
515
|
font-family: var(--font-family-headline);
|
|
@@ -624,13 +725,35 @@
|
|
|
624
725
|
}
|
|
625
726
|
|
|
626
727
|
.status-badge {
|
|
728
|
+
align-items: center;
|
|
627
729
|
border: 1px solid transparent;
|
|
730
|
+
box-sizing: border-box;
|
|
628
731
|
display: inline-flex;
|
|
629
732
|
font-size: var(--font-size-micro);
|
|
630
733
|
font-weight: 700;
|
|
734
|
+
justify-content: center;
|
|
631
735
|
letter-spacing: 0.12em;
|
|
736
|
+
line-height: 1;
|
|
632
737
|
padding: 0.125rem 0.5rem;
|
|
633
738
|
text-transform: uppercase;
|
|
739
|
+
white-space: nowrap;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.query-history-badge-row {
|
|
743
|
+
align-items: center;
|
|
744
|
+
display: flex;
|
|
745
|
+
flex-wrap: wrap;
|
|
746
|
+
gap: var(--spacing-2);
|
|
747
|
+
width: 100%;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
.query-history-badge-row .status-badge {
|
|
751
|
+
min-height: var(--button-height);
|
|
752
|
+
min-width: 8.5rem;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.query-history-badge-row--compact .status-badge {
|
|
756
|
+
min-width: 6.75rem;
|
|
634
757
|
}
|
|
635
758
|
|
|
636
759
|
.status-badge--primary {
|
|
@@ -746,38 +869,87 @@
|
|
|
746
869
|
width: clamp(20rem, 26vw, 22.5rem);
|
|
747
870
|
}
|
|
748
871
|
|
|
749
|
-
.
|
|
750
|
-
|
|
751
|
-
|
|
872
|
+
.query-history-panel__header {
|
|
873
|
+
border-bottom: 1px solid var(--border-medium);
|
|
874
|
+
padding: var(--spacing-4);
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
.query-history-tabs {
|
|
878
|
+
align-items: center;
|
|
752
879
|
display: flex;
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
880
|
+
gap: var(--spacing-2);
|
|
881
|
+
margin-top: var(--spacing-4);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
.query-history-tabs__count {
|
|
885
|
+
color: var(--text-variant-subtle);
|
|
886
|
+
font-family: var(--font-family-mono);
|
|
887
|
+
font-size: 10px;
|
|
888
|
+
letter-spacing: 0.16em;
|
|
889
|
+
margin-left: auto;
|
|
890
|
+
text-transform: uppercase;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
.query-history-list-scroll {
|
|
894
|
+
flex: 1;
|
|
756
895
|
min-height: 0;
|
|
757
|
-
|
|
758
|
-
|
|
896
|
+
overflow: auto;
|
|
897
|
+
padding: var(--spacing-3);
|
|
759
898
|
}
|
|
760
899
|
|
|
761
|
-
.
|
|
762
|
-
border-bottom: 1px solid var(--border-medium);
|
|
900
|
+
.query-history-list {
|
|
763
901
|
display: flex;
|
|
764
|
-
flex-
|
|
902
|
+
flex-direction: column;
|
|
903
|
+
gap: var(--spacing-3);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.query-editor-toolbar {
|
|
907
|
+
align-items: center;
|
|
908
|
+
display: grid;
|
|
765
909
|
gap: var(--spacing-4);
|
|
766
|
-
|
|
767
|
-
padding: var(--spacing-5);
|
|
910
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
768
911
|
}
|
|
769
912
|
|
|
770
|
-
.
|
|
913
|
+
.query-editor-toolbar__left,
|
|
914
|
+
.query-editor-toolbar__center,
|
|
915
|
+
.query-editor-toolbar__right {
|
|
771
916
|
align-items: center;
|
|
772
917
|
display: flex;
|
|
773
|
-
|
|
774
|
-
|
|
918
|
+
gap: var(--spacing-3);
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
.query-editor-toolbar__center {
|
|
775
922
|
flex-wrap: wrap;
|
|
923
|
+
justify-content: center;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
.query-editor-toolbar__right {
|
|
927
|
+
justify-content: flex-end;
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
@media (max-width: 980px) {
|
|
931
|
+
.query-editor-toolbar {
|
|
932
|
+
grid-template-columns: 1fr;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
.query-editor-toolbar__left,
|
|
936
|
+
.query-editor-toolbar__center,
|
|
937
|
+
.query-editor-toolbar__right {
|
|
938
|
+
justify-content: flex-start;
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
.table-designer-sidebar {
|
|
943
|
+
background: var(--color-surface-low);
|
|
944
|
+
border-right: 1px solid var(--border-medium);
|
|
945
|
+
max-width: var(--subnavi-width);
|
|
776
946
|
}
|
|
777
947
|
|
|
778
|
-
.table-designer-
|
|
779
|
-
|
|
780
|
-
|
|
948
|
+
.table-designer-sidebar__header {
|
|
949
|
+
align-items: flex-start;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.table-designer-preview__eyebrow {
|
|
781
953
|
color: var(--color-primary-container);
|
|
782
954
|
font-family: var(--font-family-mono);
|
|
783
955
|
font-size: var(--font-size-status);
|
|
@@ -785,8 +957,7 @@
|
|
|
785
957
|
text-transform: uppercase;
|
|
786
958
|
}
|
|
787
959
|
|
|
788
|
-
.table-designer-preview__title
|
|
789
|
-
.table-designer-main__section-title {
|
|
960
|
+
.table-designer-preview__title {
|
|
790
961
|
color: var(--color-on-surface);
|
|
791
962
|
font-family: var(--font-family-headline);
|
|
792
963
|
font-size: 1rem;
|
|
@@ -795,21 +966,6 @@
|
|
|
795
966
|
margin-top: var(--spacing-2);
|
|
796
967
|
}
|
|
797
968
|
|
|
798
|
-
.table-designer-sidebar__meta,
|
|
799
|
-
.table-designer-main__subtitle,
|
|
800
|
-
.table-designer-main__section-text {
|
|
801
|
-
color: rgb(var(--rgb-on-surface) / 0.52);
|
|
802
|
-
font-family: var(--font-family-mono);
|
|
803
|
-
font-size: var(--font-size-status);
|
|
804
|
-
letter-spacing: 0.14em;
|
|
805
|
-
margin-top: var(--spacing-2);
|
|
806
|
-
text-transform: uppercase;
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
.table-designer-sidebar__file-input {
|
|
810
|
-
display: none;
|
|
811
|
-
}
|
|
812
|
-
|
|
813
969
|
.table-designer-sidebar__search {
|
|
814
970
|
align-items: center;
|
|
815
971
|
background: var(--color-surface-container-lowest);
|
|
@@ -892,16 +1048,8 @@ input.table-designer-sidebar__search-input[type='search'] {
|
|
|
892
1048
|
color: rgb(var(--rgb-on-surface-variant) / 0.65);
|
|
893
1049
|
}
|
|
894
1050
|
|
|
895
|
-
.table-designer-sidebar__list {
|
|
896
|
-
flex: 1;
|
|
897
|
-
min-height: 0;
|
|
898
|
-
overflow: auto;
|
|
899
|
-
padding: var(--spacing-3);
|
|
900
|
-
}
|
|
901
|
-
|
|
902
1051
|
.table-designer-sidebar__item {
|
|
903
1052
|
display: block;
|
|
904
|
-
margin-bottom: var(--spacing-2);
|
|
905
1053
|
transition:
|
|
906
1054
|
background-color var(--transition-fast),
|
|
907
1055
|
border-color var(--transition-fast);
|
|
@@ -975,7 +1123,6 @@ input.table-designer-sidebar__search-input[type='search'] {
|
|
|
975
1123
|
min-height: 0;
|
|
976
1124
|
}
|
|
977
1125
|
|
|
978
|
-
.table-designer-main__header,
|
|
979
1126
|
.table-designer-preview__header {
|
|
980
1127
|
align-items: center;
|
|
981
1128
|
border-bottom: 1px solid rgb(var(--rgb-outline) / 0.16);
|
|
@@ -999,7 +1146,7 @@ input.table-designer-sidebar__search-input[type='search'] {
|
|
|
999
1146
|
display: flex;
|
|
1000
1147
|
flex-wrap: wrap;
|
|
1001
1148
|
gap: var(--spacing-3);
|
|
1002
|
-
margin-top:
|
|
1149
|
+
margin-top: 0;
|
|
1003
1150
|
}
|
|
1004
1151
|
|
|
1005
1152
|
.table-designer-main__name {
|
|
@@ -1033,13 +1180,6 @@ input.table-designer-main__name[type='text'] {
|
|
|
1033
1180
|
padding: 0;
|
|
1034
1181
|
}
|
|
1035
1182
|
|
|
1036
|
-
.table-designer-main__actions {
|
|
1037
|
-
align-items: center;
|
|
1038
|
-
display: flex;
|
|
1039
|
-
flex-wrap: wrap;
|
|
1040
|
-
gap: var(--spacing-3);
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
1183
|
.table-designer-preview__actions {
|
|
1044
1184
|
align-items: center;
|
|
1045
1185
|
display: flex;
|
|
@@ -1153,7 +1293,7 @@ input.table-designer-main__name[type='text'] {
|
|
|
1153
1293
|
}
|
|
1154
1294
|
|
|
1155
1295
|
.table-designer-main__section-header {
|
|
1156
|
-
align-items:
|
|
1296
|
+
align-items: center;
|
|
1157
1297
|
display: flex;
|
|
1158
1298
|
flex-wrap: wrap;
|
|
1159
1299
|
gap: var(--spacing-4);
|
|
@@ -1432,6 +1572,8 @@ input.table-designer-main__name[type='text'] {
|
|
|
1432
1572
|
border-bottom: 1px solid var(--border-medium);
|
|
1433
1573
|
border-right: none;
|
|
1434
1574
|
flex-basis: auto;
|
|
1575
|
+
max-width: none;
|
|
1576
|
+
width: 100%;
|
|
1435
1577
|
}
|
|
1436
1578
|
}
|
|
1437
1579
|
|
|
@@ -1478,6 +1620,63 @@ input.table-designer-main__name[type='text'] {
|
|
|
1478
1620
|
background: var(--primary-alpha-08);
|
|
1479
1621
|
}
|
|
1480
1622
|
|
|
1623
|
+
.query-history-item-main {
|
|
1624
|
+
display: flex;
|
|
1625
|
+
flex-direction: column;
|
|
1626
|
+
gap: var(--spacing-2);
|
|
1627
|
+
text-align: left;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
.query-history-item-title {
|
|
1631
|
+
color: var(--color-on-surface);
|
|
1632
|
+
display: block;
|
|
1633
|
+
font-family: var(--font-family-headline);
|
|
1634
|
+
font-size: 0.875rem;
|
|
1635
|
+
font-weight: 700;
|
|
1636
|
+
letter-spacing: 0;
|
|
1637
|
+
line-height: 1.15;
|
|
1638
|
+
min-width: 0;
|
|
1639
|
+
overflow: hidden;
|
|
1640
|
+
text-overflow: ellipsis;
|
|
1641
|
+
text-transform: uppercase;
|
|
1642
|
+
white-space: nowrap;
|
|
1643
|
+
width: 100%;
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
.query-history-item.is-active .query-history-item-title,
|
|
1647
|
+
.query-history-item-hit.is-active .query-history-item-title {
|
|
1648
|
+
color: var(--color-primary-container);
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
.query-history-item-footer {
|
|
1652
|
+
align-items: center;
|
|
1653
|
+
border-top: 1px solid var(--border-subtle);
|
|
1654
|
+
display: flex;
|
|
1655
|
+
gap: var(--spacing-3);
|
|
1656
|
+
justify-content: space-between;
|
|
1657
|
+
padding: var(--spacing-2) var(--spacing-3) var(--spacing-3);
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
.query-history-item-meta {
|
|
1661
|
+
color: var(--text-variant-subtle);
|
|
1662
|
+
display: flex;
|
|
1663
|
+
flex-wrap: wrap;
|
|
1664
|
+
font-family: var(--font-family-mono);
|
|
1665
|
+
font-size: 10px;
|
|
1666
|
+
gap: var(--spacing-2);
|
|
1667
|
+
letter-spacing: 0.14em;
|
|
1668
|
+
min-width: 0;
|
|
1669
|
+
text-transform: uppercase;
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
.query-history-item-actions {
|
|
1673
|
+
align-items: center;
|
|
1674
|
+
display: flex;
|
|
1675
|
+
flex-shrink: 0;
|
|
1676
|
+
gap: var(--spacing-1);
|
|
1677
|
+
margin-left: auto;
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1481
1680
|
.query-history-icon-button {
|
|
1482
1681
|
background: transparent;
|
|
1483
1682
|
border: 0;
|
|
@@ -1522,10 +1721,16 @@ input.table-designer-main__name[type='text'] {
|
|
|
1522
1721
|
}
|
|
1523
1722
|
|
|
1524
1723
|
.query-history-sql-preview {
|
|
1724
|
+
color: rgb(var(--rgb-on-surface-variant) / 0.75);
|
|
1525
1725
|
display: -webkit-box;
|
|
1526
1726
|
-webkit-box-orient: vertical;
|
|
1527
1727
|
-webkit-line-clamp: 2;
|
|
1728
|
+
font-family: var(--font-family-mono);
|
|
1729
|
+
font-size: 0.75rem;
|
|
1730
|
+
line-height: 1.25rem;
|
|
1731
|
+
margin-top: var(--spacing-2);
|
|
1528
1732
|
overflow: hidden;
|
|
1733
|
+
text-align: left;
|
|
1529
1734
|
}
|
|
1530
1735
|
|
|
1531
1736
|
.query-history-detail-sql {
|