sqlite-hub 0.9.1 → 0.9.4

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.
Files changed (56) hide show
  1. package/.github/workflows/ci.yml +36 -0
  2. package/README.md +2 -2
  3. package/bin/sqlite-hub.js +1 -1
  4. package/frontend/index.html +3 -158
  5. package/frontend/js/app.js +231 -5
  6. package/frontend/js/components/connectionCard.js +62 -87
  7. package/frontend/js/components/emptyState.js +20 -23
  8. package/frontend/js/components/modal.js +158 -199
  9. package/frontend/js/components/pageHeader.js +1 -1
  10. package/frontend/js/components/queryEditor.js +16 -30
  11. package/frontend/js/components/queryHistoryDetail.js +93 -164
  12. package/frontend/js/components/queryHistoryPanel.js +90 -100
  13. package/frontend/js/components/queryResults.js +3 -1
  14. package/frontend/js/components/rowEditorPanel.js +76 -56
  15. package/frontend/js/components/tableDesignerEditor.js +91 -116
  16. package/frontend/js/lib/queryChartOptions.js +5 -1
  17. package/frontend/js/lib/queryCharts.js +50 -2
  18. package/frontend/js/store.js +161 -23
  19. package/frontend/js/utils/tableDesigner.js +8 -2
  20. package/frontend/js/views/charts.js +126 -73
  21. package/frontend/js/views/data.js +147 -133
  22. package/frontend/js/views/editor.js +1 -0
  23. package/frontend/js/views/mediaTagging.js +131 -164
  24. package/frontend/js/views/structure.js +52 -48
  25. package/frontend/styles/base.css +57 -13
  26. package/frontend/styles/components.css +166 -96
  27. package/frontend/styles/layout.css +1 -1
  28. package/frontend/styles/structure-graph.css +11 -11
  29. package/frontend/styles/tailwind.css +81 -0
  30. package/frontend/styles/tailwind.generated.css +1 -0
  31. package/frontend/styles/tokens.css +50 -7
  32. package/frontend/styles/utilities.css +21 -0
  33. package/frontend/styles/views.css +94 -86
  34. package/package.json +16 -3
  35. package/server/routes/mediaTagging.js +2 -10
  36. package/server/routes/sql.js +35 -10
  37. package/server/server.js +24 -0
  38. package/server/services/sqlite/dataBrowserService.js +25 -5
  39. package/server/services/sqlite/exportService.js +4 -2
  40. package/server/services/sqlite/introspection.js +2 -2
  41. package/server/services/sqlite/mediaTaggingService.js +166 -53
  42. package/server/services/sqlite/structureService.js +2 -2
  43. package/server/services/sqlite/tableDesigner/sql.js +19 -3
  44. package/server/services/storage/appStateStore.js +227 -87
  45. package/server/services/storage/queryHistoryChartUtils.js +19 -2
  46. package/server/utils/appPaths.js +55 -19
  47. package/server/utils/fileValidation.js +94 -8
  48. package/tailwind.config.cjs +73 -0
  49. package/tests/security-paths.test.js +84 -0
  50. package/tests/sql-identifier-safety.test.js +66 -0
  51. package/.npmingnore +0 -4
  52. package/changelog.md +0 -77
  53. package/docs/DESIGN_GUIDELINES.md +0 -36
  54. package/scripts/publish_brew.sh +0 -466
  55. package/scripts/publish_npm.sh +0 -241
  56. package/shortkeys.md +0 -5
@@ -1,6 +1,6 @@
1
1
  .top-nav-shell {
2
2
  align-items: center;
3
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.05), transparent);
3
+ background: linear-gradient(to bottom, rgb(255 255 255 / 0.05), transparent);
4
4
  display: flex;
5
5
  height: 100%;
6
6
  justify-content: space-between;
@@ -25,7 +25,7 @@
25
25
 
26
26
  .top-nav-link {
27
27
  align-items: center;
28
- color: rgba(229, 226, 225, 0.6);
28
+ color: var(--text-muted);
29
29
  display: flex;
30
30
  font-family: var(--font-family-headline);
31
31
  height: 100%;
@@ -42,9 +42,8 @@
42
42
  }
43
43
 
44
44
  .top-nav-link.is-active {
45
- border-bottom: 2px solid var(--color-primary-container);
45
+ box-shadow: inset 0 -2px 0 var(--color-primary-container);
46
46
  color: var(--color-primary-container);
47
- padding-bottom: 1px;
48
47
  }
49
48
 
50
49
  .top-nav-actions {
@@ -95,12 +94,12 @@
95
94
  gap: 2px;
96
95
  margin: 4px 0 4px var(--spacing-6);
97
96
  padding-left: var(--spacing-6);
98
- border-left: 1px solid rgba(75, 71, 50, 0.15);
97
+ border-left: 1px solid rgb(var(--rgb-outline) / 0.15);
99
98
  }
100
99
 
101
100
  .sidebar-sublink {
102
101
  align-items: center;
103
- color: rgba(229, 226, 225, 0.35);
102
+ color: var(--text-faint);
104
103
  display: flex;
105
104
  font-family: var(--font-family-body);
106
105
  font-size: 0.6875rem;
@@ -121,14 +120,14 @@
121
120
  }
122
121
 
123
122
  .sidebar-sublink.is-active {
124
- border-left: 2px solid var(--color-primary-container);
125
- color: var(--color-primary-container);
126
123
  background: var(--color-surface-high);
124
+ box-shadow: inset 2px 0 0 var(--color-primary-container);
125
+ color: var(--color-primary-container);
127
126
  }
128
127
 
129
128
  .sidebar-link {
130
129
  align-items: center;
131
- color: rgba(229, 226, 225, 0.4);
130
+ color: rgb(var(--rgb-on-surface) / 0.4);
132
131
  display: flex;
133
132
  font-family: var(--font-family-headline);
134
133
  font-size: 0.75rem;
@@ -150,7 +149,7 @@
150
149
 
151
150
  .sidebar-link.is-active {
152
151
  background: var(--color-surface-high);
153
- border-left: 2px solid var(--color-primary-container);
152
+ box-shadow: inset 2px 0 0 var(--color-primary-container);
154
153
  color: var(--color-primary-container);
155
154
  }
156
155
 
@@ -182,7 +181,7 @@
182
181
  .status-bar-shell {
183
182
  align-items: center;
184
183
  background: var(--color-surface-lowest);
185
- border-top: 1px solid rgba(75, 71, 50, 0.15);
184
+ border-top: 1px solid rgb(var(--rgb-outline) / 0.15);
186
185
  display: flex;
187
186
  height: 100%;
188
187
  justify-content: space-between;
@@ -204,7 +203,7 @@
204
203
  }
205
204
 
206
205
  .status-bar-link {
207
- color: rgba(229, 226, 225, 0.3);
206
+ color: rgb(var(--rgb-on-surface) / 0.48);
208
207
  cursor: default;
209
208
  font-family: var(--font-family-mono);
210
209
  font-size: var(--font-size-status);
@@ -220,24 +219,50 @@
220
219
  .status-bar-dot {
221
220
  background: var(--color-success);
222
221
  border-radius: 9999px;
223
- box-shadow: 0 0 8px rgba(34, 197, 94, 0.6);
222
+ box-shadow: 0 0 8px rgb(var(--rgb-success) / 0.6);
224
223
  height: 6px;
225
224
  width: 6px;
226
225
  }
227
226
 
228
227
  .shell-section {
229
228
  background: var(--color-surface-container);
230
- border: 1px solid rgba(75, 71, 50, 0.12);
229
+ border: 1px solid var(--border-subtle);
231
230
  }
232
231
 
233
- .toolbar-button {
232
+ .standard-button,
233
+ .signature-button,
234
+ .delete-button,
235
+ .toolbar-button,
236
+ .query-history-icon-button,
237
+ .top-nav-icon {
234
238
  align-items: center;
235
239
  box-sizing: border-box;
236
240
  display: inline-flex;
237
- gap: var(--spacing-2);
238
- height: var(--control-height);
239
241
  justify-content: center;
240
242
  line-height: 1;
243
+ }
244
+
245
+ .standard-button:focus-visible,
246
+ .signature-button:focus-visible,
247
+ .delete-button:focus-visible,
248
+ .toolbar-button:focus-visible,
249
+ .query-history-icon-button:focus-visible,
250
+ .top-nav-icon:focus-visible,
251
+ .query-history-item-hit:focus-visible,
252
+ .query-history-tab:focus-visible,
253
+ .bottom-tab:focus-visible,
254
+ .sidebar-link:focus-visible,
255
+ .sidebar-sublink:focus-visible,
256
+ .charts-height-toggle__button:focus-visible {
257
+ box-shadow: var(--focus-ring);
258
+ outline: none;
259
+ position: relative;
260
+ z-index: 1;
261
+ }
262
+
263
+ .toolbar-button {
264
+ gap: var(--spacing-2);
265
+ height: var(--control-height);
241
266
  min-height: var(--control-height);
242
267
  padding: 0 var(--control-padding-inline);
243
268
  text-transform: uppercase;
@@ -256,7 +281,7 @@
256
281
  }
257
282
 
258
283
  .metric-card--accent {
259
- border-left: 2px solid var(--color-primary-container);
284
+ box-shadow: inset 2px 0 0 var(--color-primary-container);
260
285
  }
261
286
 
262
287
  .status-badge {
@@ -270,20 +295,20 @@
270
295
  }
271
296
 
272
297
  .status-badge--primary {
273
- background: rgba(252, 227, 0, 0.1);
274
- border-color: rgba(252, 227, 0, 0.2);
298
+ background: var(--primary-alpha-10);
299
+ border-color: var(--primary-alpha-20);
275
300
  color: var(--color-primary-container);
276
301
  }
277
302
 
278
303
  .status-badge--muted {
279
304
  background: var(--color-surface-highest);
280
- border-color: rgba(75, 71, 50, 0.2);
305
+ border-color: rgb(var(--rgb-outline) / 0.2);
281
306
  color: var(--color-on-surface-variant);
282
307
  }
283
308
 
284
309
  .status-badge--alert {
285
- background: rgba(147, 0, 10, 0.2);
286
- border-color: rgba(255, 180, 171, 0.2);
310
+ background: rgb(var(--rgb-error-container) / 0.2);
311
+ border-color: rgb(var(--rgb-error) / 0.2);
287
312
  color: var(--color-error);
288
313
  }
289
314
 
@@ -294,13 +319,12 @@
294
319
  }
295
320
 
296
321
  .status-badge--success {
297
- background: rgba(0, 220, 225, 0.1);
322
+ background: rgb(var(--rgb-tertiary) / 0.1);
298
323
  color: var(--color-tertiary-dim);
299
324
  }
300
325
 
301
326
  .connection-card {
302
327
  background: var(--color-surface-container);
303
- border-left: 2px solid transparent;
304
328
  cursor: pointer;
305
329
  display: flex;
306
330
  flex-direction: column;
@@ -308,18 +332,18 @@
308
332
  text-align: left;
309
333
  transition:
310
334
  background-color var(--transition-fast),
311
- border-color var(--transition-fast),
312
335
  box-shadow var(--transition-standard);
313
336
  }
314
337
 
315
338
  .connection-card:hover {
316
339
  background: var(--color-surface-high);
317
- border-color: var(--color-outline-variant);
340
+ box-shadow: inset 2px 0 0 var(--color-outline-variant);
318
341
  }
319
342
 
320
343
  .connection-card.is-active {
321
- border-color: var(--color-primary-container);
322
- box-shadow: 0 0 20px rgba(252, 227, 0, 0.05);
344
+ box-shadow:
345
+ inset 2px 0 0 var(--color-primary-container),
346
+ 0 0 20px var(--primary-alpha-05);
323
347
  }
324
348
 
325
349
  .connection-card-footer {
@@ -330,7 +354,7 @@
330
354
 
331
355
  .bottom-tab {
332
356
  border-bottom: 1px solid transparent;
333
- color: rgba(205, 199, 171, 0.4);
357
+ color: var(--text-variant-subtle);
334
358
  font-size: var(--font-size-status);
335
359
  font-weight: 700;
336
360
  height: 100%;
@@ -339,7 +363,8 @@
339
363
  }
340
364
 
341
365
  .bottom-tab.is-active {
342
- border-color: var(--color-primary-container);
366
+ border-color: transparent;
367
+ box-shadow: inset 0 -1px 0 var(--color-primary-container);
343
368
  color: var(--color-primary-container);
344
369
  }
345
370
 
@@ -351,7 +376,7 @@
351
376
  }
352
377
 
353
378
  .page-eyebrow-line {
354
- background: rgba(252, 227, 0, 0.3);
379
+ background: var(--primary-alpha-30);
355
380
  height: 1px;
356
381
  width: 48px;
357
382
  }
@@ -363,7 +388,7 @@
363
388
 
364
389
  .view-card {
365
390
  background: var(--color-surface-low);
366
- border: 1px solid rgba(75, 71, 50, 0.1);
391
+ border: 1px solid rgb(var(--rgb-outline) / 0.1);
367
392
  }
368
393
 
369
394
  .view-card-header {
@@ -376,26 +401,26 @@
376
401
 
377
402
  .query-history-panel {
378
403
  display: flex;
379
- flex: 0 0 360px;
404
+ flex: 0 0 clamp(20rem, 26vw, 22.5rem);
380
405
  flex-direction: column;
381
406
  min-height: 0;
382
- width: 360px;
407
+ width: clamp(20rem, 26vw, 22.5rem);
383
408
  }
384
409
 
385
410
  .table-designer-sidebar {
386
411
  background: var(--color-surface-low);
387
- border-right: 1px solid rgba(75, 71, 50, 0.18);
412
+ border-right: 1px solid var(--border-medium);
388
413
  display: flex;
389
- flex: 0 0 18rem;
414
+ flex: 0 0 clamp(16rem, 20vw, 18.2rem);
390
415
  flex-direction: column;
391
416
  max-width: 18.2rem;
392
417
  min-height: 0;
393
- min-width: 18.2rem;
394
- width: 18.2rem;
418
+ min-width: min(18.2rem, 100%);
419
+ width: clamp(16rem, 20vw, 18.2rem);
395
420
  }
396
421
 
397
422
  .table-designer-sidebar__header {
398
- border-bottom: 1px solid rgba(75, 71, 50, 0.18);
423
+ border-bottom: 1px solid var(--border-medium);
399
424
  display: flex;
400
425
  flex-wrap: wrap;
401
426
  gap: var(--spacing-4);
@@ -434,7 +459,7 @@
434
459
  .table-designer-sidebar__meta,
435
460
  .table-designer-main__subtitle,
436
461
  .table-designer-main__section-text {
437
- color: rgba(229, 226, 225, 0.52);
462
+ color: rgb(var(--rgb-on-surface) / 0.52);
438
463
  font-family: var(--font-family-mono);
439
464
  font-size: var(--font-size-status);
440
465
  letter-spacing: 0.14em;
@@ -449,30 +474,25 @@
449
474
  .table-designer-sidebar__search {
450
475
  align-items: center;
451
476
  background: var(--color-surface-container-lowest);
452
- border: 1px solid rgba(75, 71, 50, 0.18);
477
+ border: 1px solid var(--border-medium);
453
478
  box-sizing: border-box;
454
479
  min-height: var(--control-height);
455
480
  margin: var(--spacing-4) var(--spacing-3) 0;
456
- border-bottom: 1px solid rgba(75, 71, 50, 0.18);
457
481
  display: flex;
458
482
  gap: var(--spacing-3);
459
483
  padding: 0 var(--control-padding-inline);
460
484
  }
461
485
 
462
- .table-designer-sidebar__search-input,
463
- .table-designer-field,
464
- .table-designer-main__name {
486
+ .table-designer-field {
465
487
  background: var(--color-surface-container-lowest);
466
- border: 1px solid rgba(75, 71, 50, 0.18);
488
+ border: 1px solid var(--border-medium);
467
489
  color: var(--color-on-surface);
468
490
  min-width: 0;
469
491
  outline: none;
470
492
  }
471
493
 
472
- input.table-designer-sidebar__search-input,
473
494
  input.table-designer-field,
474
- select.table-designer-field,
475
- input.table-designer-main__name {
495
+ select.table-designer-field {
476
496
  -webkit-appearance: none;
477
497
  appearance: none;
478
498
  border-radius: 0;
@@ -481,26 +501,58 @@ input.table-designer-main__name {
481
501
 
482
502
  input.table-designer-field,
483
503
  select.table-designer-field {
484
- background: var(--color-surface-container-lowest) !important;
485
- color: var(--color-on-surface) !important;
504
+ background: var(--color-surface-container-lowest);
505
+ color: var(--color-on-surface);
506
+ }
507
+
508
+ .table-designer-field:focus-visible,
509
+ .table-designer-main__name:focus-visible {
510
+ border-color: var(--primary-alpha-35);
511
+ box-shadow: var(--focus-ring-inset);
512
+ }
513
+
514
+ .table-designer-sidebar__search:focus-within {
515
+ border-color: var(--primary-alpha-35);
516
+ box-shadow: var(--focus-ring-inset);
486
517
  }
487
518
 
488
- .table-designer-sidebar__search-input:focus,
489
- .table-designer-field:focus,
490
- .table-designer-main__name:focus {
491
- border-color: rgba(252, 227, 0, 0.35);
519
+ .table-designer-sidebar__search .material-symbols-outlined {
520
+ flex: 0 0 auto;
492
521
  }
493
522
 
494
523
  .table-designer-sidebar__search-input {
495
- background: transparent !important;
524
+ -webkit-appearance: none;
525
+ appearance: none;
526
+ background: transparent;
527
+ background-color: transparent;
528
+ background-image: none;
496
529
  border: none;
530
+ border-radius: 0;
531
+ box-shadow: none;
497
532
  color: var(--color-on-surface);
498
533
  flex: 1;
499
534
  font-size: 0.875rem;
500
535
  height: calc(var(--control-height) - 2px);
536
+ min-width: 0;
537
+ outline: none;
538
+ padding: 0;
539
+ }
540
+
541
+ input.table-designer-sidebar__search-input[type='search'] {
542
+ background: transparent;
543
+ background-color: transparent;
544
+ background-image: none;
545
+ border: 0;
546
+ box-shadow: none;
547
+ color: var(--color-on-surface);
548
+ height: calc(var(--control-height) - 2px);
501
549
  padding: 0;
502
550
  }
503
551
 
552
+ .table-designer-sidebar__search-input::placeholder {
553
+ color: rgb(var(--rgb-on-surface-variant) / 0.65);
554
+ }
555
+
504
556
  .table-designer-sidebar__list {
505
557
  flex: 1;
506
558
  min-height: 0;
@@ -517,11 +569,11 @@ select.table-designer-field {
517
569
  }
518
570
 
519
571
  .table-designer-sidebar__item:hover {
520
- border-color: rgba(75, 71, 50, 0.1);
572
+ border-color: rgb(var(--rgb-outline) / 0.1);
521
573
  }
522
574
 
523
575
  .table-designer-sidebar__item.is-active {
524
- border-color: rgba(252, 227, 0, 0.3);
576
+ border-color: var(--primary-alpha-30);
525
577
  }
526
578
 
527
579
  .table-designer-sidebar__item-name {
@@ -538,7 +590,7 @@ select.table-designer-field {
538
590
  }
539
591
 
540
592
  .table-designer-sidebar__item-meta {
541
- color: rgba(229, 226, 225, 0.45);
593
+ color: var(--text-subtle);
542
594
  font-family: var(--font-family-mono);
543
595
  font-size: var(--font-size-status);
544
596
  letter-spacing: 0.12em;
@@ -550,7 +602,7 @@ select.table-designer-field {
550
602
  .table-designer-preview__empty,
551
603
  .table-designer-main__empty {
552
604
  align-items: center;
553
- color: rgba(205, 199, 171, 0.55);
605
+ color: var(--text-variant-muted);
554
606
  display: flex;
555
607
  flex-direction: column;
556
608
  justify-content: center;
@@ -587,7 +639,7 @@ select.table-designer-field {
587
639
  .table-designer-main__header,
588
640
  .table-designer-preview__header {
589
641
  align-items: center;
590
- border-bottom: 1px solid rgba(75, 71, 50, 0.16);
642
+ border-bottom: 1px solid rgb(var(--rgb-outline) / 0.16);
591
643
  display: flex;
592
644
  flex-wrap: wrap;
593
645
  gap: var(--spacing-4);
@@ -612,14 +664,33 @@ select.table-designer-field {
612
664
  }
613
665
 
614
666
  .table-designer-main__name {
615
- background: transparent !important;
667
+ -webkit-appearance: none;
668
+ appearance: none;
669
+ background: transparent;
670
+ background-color: transparent;
671
+ background-image: none;
616
672
  border: none;
673
+ border-radius: 0;
674
+ box-shadow: none;
617
675
  color: var(--color-primary-container);
618
676
  font-family: var(--font-family-headline);
619
- font-size: 2rem;
677
+ font-size: 1rem;
620
678
  font-weight: 900;
621
- letter-spacing: -0.06em;
679
+ letter-spacing: -0.04em;
680
+ height: auto;
622
681
  min-width: min(28rem, 100%);
682
+ outline: none;
683
+ padding: 0;
684
+ }
685
+
686
+ input.table-designer-main__name[type='text'] {
687
+ background: transparent;
688
+ background-color: transparent;
689
+ background-image: none;
690
+ border: 0;
691
+ box-shadow: none;
692
+ color: var(--color-primary-container);
693
+ height: auto;
623
694
  padding: 0;
624
695
  }
625
696
 
@@ -639,17 +710,17 @@ select.table-designer-field {
639
710
 
640
711
  .table-designer-fill-toggle {
641
712
  background: var(--color-surface-container);
642
- border: 1px solid rgba(75, 71, 50, 0.18);
713
+ border: 1px solid var(--border-medium);
643
714
  color: var(--color-on-surface);
644
715
  gap: 0.75rem;
645
716
  }
646
717
 
647
718
  .table-designer-fill-toggle.is-disabled {
648
- color: rgba(229, 226, 225, 0.45);
719
+ color: var(--text-subtle);
649
720
  }
650
721
 
651
722
  .table-designer-fill-toggle__meta {
652
- color: rgba(205, 199, 171, 0.52);
723
+ color: rgb(var(--rgb-on-surface-variant) / 0.52);
653
724
  font-family: var(--font-family-mono);
654
725
  font-size: var(--font-size-status);
655
726
  letter-spacing: 0.1em;
@@ -658,8 +729,8 @@ select.table-designer-field {
658
729
 
659
730
  .table-designer-main__error,
660
731
  .table-designer-route-error {
661
- background: rgba(147, 0, 10, 0.16);
662
- border: 1px solid rgba(255, 180, 171, 0.16);
732
+ background: rgb(var(--rgb-error-container) / 0.16);
733
+ border: 1px solid rgb(var(--rgb-error) / 0.16);
663
734
  color: var(--color-on-surface);
664
735
  margin: var(--spacing-4);
665
736
  padding: var(--spacing-4);
@@ -684,17 +755,17 @@ select.table-designer-field {
684
755
  }
685
756
 
686
757
  .table-designer-banner {
687
- border: 1px solid rgba(75, 71, 50, 0.16);
758
+ border: 1px solid rgb(var(--rgb-outline) / 0.16);
688
759
  margin: 0 var(--spacing-4) var(--spacing-4);
689
760
  padding: var(--spacing-4);
690
761
  }
691
762
 
692
763
  .table-designer-banner.is-warning {
693
- background: rgba(252, 227, 0, 0.06);
764
+ background: var(--primary-alpha-06);
694
765
  }
695
766
 
696
767
  .table-designer-banner.is-validation {
697
- background: rgba(147, 0, 10, 0.12);
768
+ background: rgb(var(--rgb-error-container) / 0.12);
698
769
  }
699
770
 
700
771
  .table-designer-banner__header {
@@ -725,7 +796,7 @@ select.table-designer-field {
725
796
  }
726
797
 
727
798
  .table-designer-banner__item-text {
728
- color: rgba(229, 226, 225, 0.68);
799
+ color: rgb(var(--rgb-on-surface) / 0.68);
729
800
  font-size: 0.8125rem;
730
801
  margin-top: var(--spacing-1);
731
802
  }
@@ -749,7 +820,7 @@ select.table-designer-field {
749
820
 
750
821
  .table-designer-grid {
751
822
  background: var(--color-surface-container-lowest);
752
- border: 1px solid rgba(75, 71, 50, 0.14);
823
+ border: 1px solid rgb(var(--rgb-outline) / 0.14);
753
824
  flex: 1;
754
825
  min-height: 0;
755
826
  overflow: auto;
@@ -774,8 +845,8 @@ select.table-designer-field {
774
845
  }
775
846
 
776
847
  .table-designer-grid__header {
777
- border-bottom: 1px solid rgba(75, 71, 50, 0.16);
778
- color: rgba(205, 199, 171, 0.52);
848
+ border-bottom: 1px solid rgb(var(--rgb-outline) / 0.16);
849
+ color: rgb(var(--rgb-on-surface-variant) / 0.52);
779
850
  font-family: var(--font-family-mono);
780
851
  font-size: var(--font-size-status);
781
852
  letter-spacing: 0.12em;
@@ -787,7 +858,7 @@ select.table-designer-field {
787
858
  }
788
859
 
789
860
  .table-designer-grid__row {
790
- border-bottom: 1px solid rgba(75, 71, 50, 0.1);
861
+ border-bottom: 1px solid rgb(var(--rgb-outline) / 0.1);
791
862
  align-items: center;
792
863
  }
793
864
 
@@ -799,17 +870,18 @@ select.table-designer-field {
799
870
 
800
871
  .table-designer-check {
801
872
  background: var(--color-surface-container);
802
- border: 1px solid rgba(75, 71, 50, 0.18);
803
- color: rgba(229, 226, 225, 0.75);
873
+ border: 1px solid var(--border-medium);
874
+ color: rgb(var(--rgb-on-surface) / 0.75);
804
875
  font-size: 0.75rem;
805
876
  gap: 0.5rem;
806
877
  }
807
878
 
808
879
  .table-designer-checkbox-override {
880
+ /* Tailwind Forms resets checkbox controls late; keep this grid override visually pinned to the 4173 reference. */
809
881
  background: var(--color-surface-container-lowest) !important;
810
882
  background-color: var(--color-surface-container-lowest) !important;
811
883
  background-image: none !important;
812
- border: 1px solid rgba(75, 71, 50, 0.18) !important;
884
+ border: 1px solid var(--border-medium) !important;
813
885
  }
814
886
 
815
887
  .table-designer-check input[type='checkbox']:not(:checked),
@@ -842,7 +914,7 @@ select.table-designer-field {
842
914
 
843
915
  @media (max-width: 1023px) {
844
916
  .table-designer-sidebar {
845
- border-bottom: 1px solid rgba(75, 71, 50, 0.18);
917
+ border-bottom: 1px solid var(--border-medium);
846
918
  border-right: none;
847
919
  flex-basis: auto;
848
920
  }
@@ -851,8 +923,7 @@ select.table-designer-field {
851
923
  .query-history-item {
852
924
  align-items: stretch;
853
925
  background: var(--color-surface-low);
854
- border: 1px solid rgba(75, 71, 50, 0.16);
855
- border-left: 2px solid transparent;
926
+ border: 1px solid rgb(var(--rgb-outline) / 0.16);
856
927
  display: flex;
857
928
  flex-direction: column;
858
929
  min-width: 0;
@@ -864,16 +935,17 @@ select.table-designer-field {
864
935
 
865
936
  .query-history-item:hover {
866
937
  background: var(--color-surface-high);
867
- border-color: rgba(252, 227, 0, 0.18);
938
+ border-color: var(--primary-alpha-18);
868
939
  }
869
940
 
870
941
  .query-history-item.is-active {
871
- border-left-color: var(--color-primary-container);
872
- box-shadow: 0 0 24px rgba(252, 227, 0, 0.06);
942
+ box-shadow:
943
+ inset 2px 0 0 var(--color-primary-container),
944
+ 0 0 24px var(--primary-alpha-06);
873
945
  }
874
946
 
875
947
  .query-history-item.is-error {
876
- border-left-color: var(--color-error);
948
+ box-shadow: inset 2px 0 0 var(--color-error);
877
949
  }
878
950
 
879
951
  .query-history-item-hit {
@@ -888,18 +960,15 @@ select.table-designer-field {
888
960
  }
889
961
 
890
962
  .query-history-item-hit.is-active {
891
- background: rgba(252, 227, 0, 0.08);
963
+ background: var(--primary-alpha-08);
892
964
  }
893
965
 
894
966
  .query-history-icon-button {
895
- align-items: center;
896
967
  background: transparent;
897
968
  border: 0;
898
969
  box-sizing: border-box;
899
- color: rgba(229, 226, 225, 0.6);
900
- display: inline-flex;
970
+ color: var(--text-muted);
901
971
  height: var(--control-height);
902
- justify-content: center;
903
972
  transition:
904
973
  color var(--transition-fast),
905
974
  background-color var(--transition-fast);
@@ -917,7 +986,7 @@ select.table-designer-field {
917
986
  background: transparent;
918
987
  border: 0;
919
988
  border-bottom: 1px solid transparent;
920
- color: rgba(205, 199, 171, 0.45);
989
+ color: var(--text-variant-subtle);
921
990
  display: inline-flex;
922
991
  font-family: var(--font-family-mono);
923
992
  font-size: var(--font-size-status);
@@ -932,7 +1001,8 @@ select.table-designer-field {
932
1001
  }
933
1002
 
934
1003
  .query-history-tab.is-active {
935
- border-color: var(--color-primary-container);
1004
+ border-color: transparent;
1005
+ box-shadow: inset 0 -1px 0 var(--color-primary-container);
936
1006
  color: var(--color-primary-container);
937
1007
  }
938
1008
 
@@ -951,7 +1021,7 @@ select.table-designer-field {
951
1021
  @media (max-width: 1279px) {
952
1022
  .query-history-panel {
953
1023
  border-left: 0;
954
- border-top: 1px solid rgba(75, 71, 50, 0.16);
1024
+ border-top: 1px solid rgb(var(--rgb-outline) / 0.16);
955
1025
  flex: 0 0 auto;
956
1026
  width: 100%;
957
1027
  }
@@ -57,7 +57,7 @@
57
57
 
58
58
  .app-right-panel {
59
59
  background: var(--color-surface-low);
60
- border-left: 1px solid rgba(75, 71, 50, 0.2);
60
+ border-left: 1px solid rgb(var(--rgb-outline) / 0.2);
61
61
  box-shadow: var(--shadow-panel);
62
62
  display: flex;
63
63
  flex-direction: column;