@upstash/react-redis-browser 0.1.11 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
- # RedisBrowser for Upstash Redis
1
+ # Redis Browser for Upstash Redis - [Preview](https://react-redis-browser.vercel.app/)
2
2
  `@upstash/react-redis-browser` is a React component that provides a UI for browsing and editing data in your Upstash Redis instances.
3
3
 
4
- <img src="public%2Fredis-browser.png" width="640px" />
4
+ <img src="https://github.com/user-attachments/assets/1b714616-310b-4250-9f92-cc28ed9881cd" width="640px" />
5
5
 
6
6
  ### Install
7
7
 
@@ -19,19 +19,34 @@ Here's a basic example of how to use the component:
19
19
  import { RedisBrowser } from "@upstash/react-redis-browser"
20
20
  import "@upstash/react-redis-browser/dist/index.css"
21
21
 
22
- export default function RedisBrowserDemo() {
22
+ export default function Page() {
23
23
  return (
24
- <main style={mainStyle}>
25
- <RedisBrowser
26
- url={UPSTASH_REDIS_REST_URL}
27
- token={UPSTASH_REDIS_REST_TOKEN} />
28
- </main>
24
+ <RedisBrowser
25
+ url={UPSTASH_REDIS_REST_URL}
26
+ token={UPSTASH_REDIS_REST_TOKEN}
27
+ />
29
28
  )
30
29
  }
30
+ ```
31
+
32
+ ### Persistance
33
+
34
+ The state of the databrowser can be persisted using the `storage` property.
35
+
36
+ ```tsx
37
+ import { RedisBrowser } from "@upstash/react-redis-browser"
38
+ import "@upstash/react-redis-browser/dist/index.css"
31
39
 
32
- const mainStyle = {
33
- width: "100vw",
34
- maxWidth: "900px",
35
- height: "500px",
36
- margin: "0 auto",
40
+ export default function Page() {
41
+ return (
42
+ <RedisBrowser
43
+ url={UPSTASH_REDIS_REST_URL}
44
+ token={UPSTASH_REDIS_REST_TOKEN}
45
+ storage={{
46
+ get: () => localStorage.getItem("databrowser") || "",
47
+ set: (value) => localStorage.setItem("databrowser", value),
48
+ }}
49
+ />
50
+ )
37
51
  }
52
+ ```
package/dist/index.css CHANGED
@@ -371,9 +371,6 @@
371
371
  white-space: nowrap;
372
372
  border-width: 0;
373
373
  }
374
- .ups-db .pointer-events-none {
375
- pointer-events: none;
376
- }
377
374
  .ups-db .pointer-events-auto {
378
375
  pointer-events: auto;
379
376
  }
@@ -395,6 +392,9 @@
395
392
  .ups-db .bottom-0 {
396
393
  bottom: 0px;
397
394
  }
395
+ .ups-db .left-0 {
396
+ left: 0px;
397
+ }
398
398
  .ups-db .left-2 {
399
399
  left: 0.5rem;
400
400
  }
@@ -434,6 +434,9 @@
434
434
  .ups-db .top-\[50\%\] {
435
435
  top: 50%;
436
436
  }
437
+ .ups-db .-z-10 {
438
+ z-index: -10;
439
+ }
437
440
  .ups-db .z-50 {
438
441
  z-index: 50;
439
442
  }
@@ -444,13 +447,23 @@
444
447
  margin-left: -0.25rem;
445
448
  margin-right: -0.25rem;
446
449
  }
450
+ .ups-db .mx-auto {
451
+ margin-left: auto;
452
+ margin-right: auto;
453
+ }
447
454
  .ups-db .my-1 {
448
455
  margin-top: 0.25rem;
449
456
  margin-bottom: 0.25rem;
450
457
  }
458
+ .ups-db .mb-2 {
459
+ margin-bottom: 0.5rem;
460
+ }
451
461
  .ups-db .mb-3 {
452
462
  margin-bottom: 0.75rem;
453
463
  }
464
+ .ups-db .mb-4 {
465
+ margin-bottom: 1rem;
466
+ }
454
467
  .ups-db .ml-1 {
455
468
  margin-left: 0.25rem;
456
469
  }
@@ -460,6 +473,9 @@
460
473
  .ups-db .ml-auto {
461
474
  margin-left: auto;
462
475
  }
476
+ .ups-db .mr-1 {
477
+ margin-right: 0.25rem;
478
+ }
463
479
  .ups-db .mt-0\.5 {
464
480
  margin-top: 0.125rem;
465
481
  }
@@ -475,6 +491,9 @@
475
491
  .ups-db .mt-6 {
476
492
  margin-top: 1.5rem;
477
493
  }
494
+ .ups-db .mt-\[150px\] {
495
+ margin-top: 150px;
496
+ }
478
497
  .ups-db .mt-\[1px\] {
479
498
  margin-top: 1px;
480
499
  }
@@ -510,6 +529,9 @@
510
529
  .ups-db .h-10 {
511
530
  height: 2.5rem;
512
531
  }
532
+ .ups-db .h-2 {
533
+ height: 0.5rem;
534
+ }
513
535
  .ups-db .h-3 {
514
536
  height: 0.75rem;
515
537
  }
@@ -531,9 +553,15 @@
531
553
  .ups-db .h-8 {
532
554
  height: 2rem;
533
555
  }
556
+ .ups-db .h-9 {
557
+ height: 2.25rem;
558
+ }
534
559
  .ups-db .h-\[100px\] {
535
560
  height: 100px;
536
561
  }
562
+ .ups-db .h-\[1px\] {
563
+ height: 1px;
564
+ }
537
565
  .ups-db .h-\[var\(--radix-select-trigger-height\)\] {
538
566
  height: var(--radix-select-trigger-height);
539
567
  }
@@ -543,6 +571,9 @@
543
571
  .ups-db .h-px {
544
572
  height: 1px;
545
573
  }
574
+ .ups-db .max-h-\[var\(--radix-dropdown-menu-content-available-height\)\] {
575
+ max-height: var(--radix-dropdown-menu-content-available-height);
576
+ }
546
577
  .ups-db .max-h-screen {
547
578
  max-height: 100vh;
548
579
  }
@@ -552,18 +583,12 @@
552
583
  .ups-db .min-h-10 {
553
584
  min-height: 2.5rem;
554
585
  }
555
- .ups-db .min-h-\[60px\] {
556
- min-height: 60px;
557
- }
558
586
  .ups-db .\!w-auto {
559
587
  width: auto !important;
560
588
  }
561
589
  .ups-db .w-0 {
562
590
  width: 0px;
563
591
  }
564
- .ups-db .w-1\.5 {
565
- width: 0.375rem;
566
- }
567
592
  .ups-db .w-10 {
568
593
  width: 2.5rem;
569
594
  }
@@ -573,6 +598,9 @@
573
598
  .ups-db .w-24 {
574
599
  width: 6rem;
575
600
  }
601
+ .ups-db .w-3 {
602
+ width: 0.75rem;
603
+ }
576
604
  .ups-db .w-3\.5 {
577
605
  width: 0.875rem;
578
606
  }
@@ -594,6 +622,9 @@
594
622
  .ups-db .w-8 {
595
623
  width: 2rem;
596
624
  }
625
+ .ups-db .w-\[--radix-popover-trigger-width\] {
626
+ width: var(--radix-popover-trigger-width);
627
+ }
597
628
  .ups-db .w-\[300px\] {
598
629
  width: 300px;
599
630
  }
@@ -621,6 +652,9 @@
621
652
  .ups-db .max-w-0 {
622
653
  max-width: 0px;
623
654
  }
655
+ .ups-db .max-w-32 {
656
+ max-width: 8rem;
657
+ }
624
658
  .ups-db .max-w-\[400px\] {
625
659
  max-width: 400px;
626
660
  }
@@ -630,14 +664,17 @@
630
664
  .ups-db .flex-1 {
631
665
  flex: 1 1 0%;
632
666
  }
667
+ .ups-db .flex-shrink-0 {
668
+ flex-shrink: 0;
669
+ }
633
670
  .ups-db .shrink-0 {
634
671
  flex-shrink: 0;
635
672
  }
636
673
  .ups-db .grow {
637
674
  flex-grow: 1;
638
675
  }
639
- .ups-db .caption-bottom {
640
- caption-side: bottom;
676
+ .ups-db .origin-\[--radix-dropdown-menu-content-transform-origin\] {
677
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
641
678
  }
642
679
  .ups-db .-translate-y-1\/2 {
643
680
  --tw-translate-y: -50%;
@@ -651,6 +688,10 @@
651
688
  --tw-translate-y: -50%;
652
689
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
653
690
  }
691
+ .ups-db .translate-y-\[1px\] {
692
+ --tw-translate-y: 1px;
693
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
694
+ }
654
695
  @keyframes pulse {
655
696
  50% {
656
697
  opacity: .5;
@@ -748,12 +789,26 @@
748
789
  margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
749
790
  margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
750
791
  }
751
- .ups-db .overflow-auto {
752
- overflow: auto;
792
+ .ups-db .divide-y > :not([hidden]) ~ :not([hidden]) {
793
+ --tw-divide-y-reverse: 0;
794
+ border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
795
+ border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
753
796
  }
754
797
  .ups-db .overflow-hidden {
755
798
  overflow: hidden;
756
799
  }
800
+ .ups-db .overflow-visible {
801
+ overflow: visible;
802
+ }
803
+ .ups-db .overflow-y-auto {
804
+ overflow-y: auto;
805
+ }
806
+ .ups-db .overflow-x-hidden {
807
+ overflow-x: hidden;
808
+ }
809
+ .ups-db .overflow-x-scroll {
810
+ overflow-x: scroll;
811
+ }
757
812
  .ups-db .truncate {
758
813
  overflow: hidden;
759
814
  text-overflow: ellipsis;
@@ -783,9 +838,6 @@
783
838
  .ups-db .rounded-sm {
784
839
  border-radius: 0.125rem;
785
840
  }
786
- .ups-db .rounded-xl {
787
- border-radius: 0.75rem;
788
- }
789
841
  .ups-db .rounded-l-none {
790
842
  border-top-left-radius: 0px;
791
843
  border-bottom-left-radius: 0px;
@@ -794,6 +846,10 @@
794
846
  border-top-right-radius: 0px;
795
847
  border-bottom-right-radius: 0px;
796
848
  }
849
+ .ups-db .rounded-t-lg {
850
+ border-top-left-radius: 0.5rem;
851
+ border-top-right-radius: 0.5rem;
852
+ }
797
853
  .ups-db .border {
798
854
  border-width: 1px;
799
855
  }
@@ -803,6 +859,9 @@
803
859
  .ups-db .border-l-0 {
804
860
  border-left-width: 0px;
805
861
  }
862
+ .ups-db .border-r {
863
+ border-right-width: 1px;
864
+ }
806
865
  .ups-db .border-r-0 {
807
866
  border-right-width: 0px;
808
867
  }
@@ -840,6 +899,10 @@
840
899
  --tw-border-opacity: 1;
841
900
  border-color: rgb(192 132 252 / var(--tw-border-opacity));
842
901
  }
902
+ .ups-db .border-red-400 {
903
+ --tw-border-opacity: 1;
904
+ border-color: rgb(248 113 113 / var(--tw-border-opacity));
905
+ }
843
906
  .ups-db .border-red-500 {
844
907
  --tw-border-opacity: 1;
845
908
  border-color: rgb(239 68 68 / var(--tw-border-opacity));
@@ -859,6 +922,10 @@
859
922
  --tw-border-opacity: 1;
860
923
  border-color: rgb(212 212 216 / var(--tw-border-opacity));
861
924
  }
925
+ .ups-db .border-b-white {
926
+ --tw-border-opacity: 1;
927
+ border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity));
928
+ }
862
929
  .ups-db .border-b-zinc-100 {
863
930
  --tw-border-opacity: 1;
864
931
  border-bottom-color: rgb(244 244 245 / var(--tw-border-opacity));
@@ -933,6 +1000,10 @@
933
1000
  --tw-bg-opacity: 1;
934
1001
  background-color: rgb(233 213 255 / var(--tw-bg-opacity));
935
1002
  }
1003
+ .ups-db .bg-red-50 {
1004
+ --tw-bg-opacity: 1;
1005
+ background-color: rgb(254 242 242 / var(--tw-bg-opacity));
1006
+ }
936
1007
  .ups-db .bg-red-500 {
937
1008
  --tw-bg-opacity: 1;
938
1009
  background-color: rgb(239 68 68 / var(--tw-bg-opacity));
@@ -955,6 +1026,10 @@
955
1026
  --tw-bg-opacity: 1;
956
1027
  background-color: rgb(244 244 245 / var(--tw-bg-opacity));
957
1028
  }
1029
+ .ups-db .bg-zinc-200 {
1030
+ --tw-bg-opacity: 1;
1031
+ background-color: rgb(228 228 231 / var(--tw-bg-opacity));
1032
+ }
958
1033
  .ups-db .bg-zinc-900 {
959
1034
  --tw-bg-opacity: 1;
960
1035
  background-color: rgb(24 24 27 / var(--tw-bg-opacity));
@@ -974,9 +1049,6 @@
974
1049
  .ups-db .p-2 {
975
1050
  padding: 0.5rem;
976
1051
  }
977
- .ups-db .p-3 {
978
- padding: 0.75rem;
979
- }
980
1052
  .ups-db .p-4 {
981
1053
  padding: 1rem;
982
1054
  }
@@ -1019,10 +1091,21 @@
1019
1091
  padding-top: 0.5rem;
1020
1092
  padding-bottom: 0.5rem;
1021
1093
  }
1094
+ .ups-db .py-3 {
1095
+ padding-top: 0.75rem;
1096
+ padding-bottom: 0.75rem;
1097
+ }
1022
1098
  .ups-db .py-6 {
1023
1099
  padding-top: 1.5rem;
1024
1100
  padding-bottom: 1.5rem;
1025
1101
  }
1102
+ .ups-db .py-\[3px\] {
1103
+ padding-top: 3px;
1104
+ padding-bottom: 3px;
1105
+ }
1106
+ .ups-db .pb-\[1px\] {
1107
+ padding-bottom: 1px;
1108
+ }
1026
1109
  .ups-db .pl-0 {
1027
1110
  padding-left: 0px;
1028
1111
  }
@@ -1059,8 +1142,8 @@
1059
1142
  .ups-db .text-right {
1060
1143
  text-align: right;
1061
1144
  }
1062
- .ups-db .align-middle {
1063
- vertical-align: middle;
1145
+ .ups-db .text-\[13px\] {
1146
+ font-size: 13px;
1064
1147
  }
1065
1148
  .ups-db .text-base {
1066
1149
  font-size: 1rem;
@@ -1074,6 +1157,10 @@
1074
1157
  font-size: 0.875rem;
1075
1158
  line-height: 1.25rem;
1076
1159
  }
1160
+ .ups-db .text-xl {
1161
+ font-size: 1.25rem;
1162
+ line-height: 1.75rem;
1163
+ }
1077
1164
  .ups-db .text-xs {
1078
1165
  font-size: 0.75rem;
1079
1166
  line-height: 1rem;
@@ -1189,6 +1276,10 @@
1189
1276
  --tw-text-opacity: 1;
1190
1277
  color: rgb(220 38 38 / var(--tw-text-opacity));
1191
1278
  }
1279
+ .ups-db .text-red-700 {
1280
+ --tw-text-opacity: 1;
1281
+ color: rgb(185 28 28 / var(--tw-text-opacity));
1282
+ }
1192
1283
  .ups-db .text-sky-800 {
1193
1284
  --tw-text-opacity: 1;
1194
1285
  color: rgb(7 89 133 / var(--tw-text-opacity));
@@ -1221,6 +1312,10 @@
1221
1312
  --tw-text-opacity: 1;
1222
1313
  color: rgb(63 63 70 / var(--tw-text-opacity));
1223
1314
  }
1315
+ .ups-db .text-zinc-900 {
1316
+ --tw-text-opacity: 1;
1317
+ color: rgb(24 24 27 / var(--tw-text-opacity));
1318
+ }
1224
1319
  .ups-db .text-zinc-950 {
1225
1320
  --tw-text-opacity: 1;
1226
1321
  color: rgb(9 9 11 / var(--tw-text-opacity));
@@ -1235,9 +1330,6 @@
1235
1330
  .ups-db .opacity-0 {
1236
1331
  opacity: 0;
1237
1332
  }
1238
- .ups-db .opacity-20 {
1239
- opacity: 0.2;
1240
- }
1241
1333
  .ups-db .opacity-50 {
1242
1334
  opacity: 0.5;
1243
1335
  }
@@ -1281,9 +1373,29 @@
1281
1373
  .ups-db .outline {
1282
1374
  outline-style: solid;
1283
1375
  }
1376
+ .ups-db .\!ring-0 {
1377
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;
1378
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
1379
+ box-shadow:
1380
+ var(--tw-ring-offset-shadow),
1381
+ var(--tw-ring-shadow),
1382
+ var(--tw-shadow, 0 0 #0000) !important;
1383
+ }
1384
+ .ups-db .ring {
1385
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1386
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1387
+ box-shadow:
1388
+ var(--tw-ring-offset-shadow),
1389
+ var(--tw-ring-shadow),
1390
+ var(--tw-shadow, 0 0 #0000);
1391
+ }
1284
1392
  .ups-db .ring-offset-white {
1285
1393
  --tw-ring-offset-color: #fff;
1286
1394
  }
1395
+ .ups-db .blur {
1396
+ --tw-blur: blur(8px);
1397
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1398
+ }
1287
1399
  .ups-db .filter {
1288
1400
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1289
1401
  }
@@ -1391,11 +1503,9 @@
1391
1503
  --tw-bg-opacity: 1;
1392
1504
  background-color: rgb(244 244 245 / var(--tw-bg-opacity));
1393
1505
  }
1394
- .ups-db .hover\:bg-zinc-100\/50:hover {
1395
- background-color: rgb(244 244 245 / 0.5);
1396
- }
1397
- .ups-db .hover\:bg-zinc-300\/20:hover {
1398
- background-color: rgb(212 212 216 / 0.2);
1506
+ .ups-db .hover\:bg-zinc-50:hover {
1507
+ --tw-bg-opacity: 1;
1508
+ background-color: rgb(250 250 250 / var(--tw-bg-opacity));
1399
1509
  }
1400
1510
  .ups-db .hover\:text-gray-900:hover {
1401
1511
  --tw-text-opacity: 1;
@@ -1405,6 +1515,10 @@
1405
1515
  --tw-text-opacity: 1;
1406
1516
  color: rgb(10 10 10 / var(--tw-text-opacity));
1407
1517
  }
1518
+ .ups-db .hover\:text-zinc-500:hover {
1519
+ --tw-text-opacity: 1;
1520
+ color: rgb(113 113 122 / var(--tw-text-opacity));
1521
+ }
1408
1522
  .ups-db .hover\:text-zinc-900:hover {
1409
1523
  --tw-text-opacity: 1;
1410
1524
  color: rgb(24 24 27 / var(--tw-text-opacity));
@@ -1419,14 +1533,18 @@
1419
1533
  --tw-bg-opacity: 1;
1420
1534
  background-color: rgb(245 245 245 / var(--tw-bg-opacity));
1421
1535
  }
1422
- .ups-db .focus\:bg-zinc-100:focus {
1536
+ .ups-db .focus\:bg-red-500:focus {
1423
1537
  --tw-bg-opacity: 1;
1424
- background-color: rgb(244 244 245 / var(--tw-bg-opacity));
1538
+ background-color: rgb(239 68 68 / var(--tw-bg-opacity));
1425
1539
  }
1426
1540
  .ups-db .focus\:text-neutral-900:focus {
1427
1541
  --tw-text-opacity: 1;
1428
1542
  color: rgb(23 23 23 / var(--tw-text-opacity));
1429
1543
  }
1544
+ .ups-db .focus\:text-white:focus {
1545
+ --tw-text-opacity: 1;
1546
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1547
+ }
1430
1548
  .ups-db .focus\:opacity-100:focus {
1431
1549
  opacity: 1;
1432
1550
  }
@@ -1457,21 +1575,17 @@
1457
1575
  .ups-db .focus\:ring-offset-2:focus {
1458
1576
  --tw-ring-offset-width: 2px;
1459
1577
  }
1578
+ .ups-db .focus-visible\:bg-zinc-50:focus-visible {
1579
+ --tw-bg-opacity: 1;
1580
+ background-color: rgb(250 250 250 / var(--tw-bg-opacity));
1581
+ }
1460
1582
  .ups-db .focus-visible\:outline-none:focus-visible {
1461
1583
  outline: 2px solid transparent;
1462
1584
  outline-offset: 2px;
1463
1585
  }
1464
- .ups-db .focus-visible\:ring-1:focus-visible {
1465
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1466
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1467
- box-shadow:
1468
- var(--tw-ring-offset-shadow),
1469
- var(--tw-ring-shadow),
1470
- var(--tw-shadow, 0 0 #0000);
1471
- }
1472
- .ups-db .focus-visible\:ring-2:focus-visible {
1586
+ .ups-db .focus-visible\:ring-0:focus-visible {
1473
1587
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1474
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1588
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1475
1589
  box-shadow:
1476
1590
  var(--tw-ring-offset-shadow),
1477
1591
  var(--tw-ring-shadow),
@@ -1496,6 +1610,10 @@
1496
1610
  .ups-db .group\/editor:hover .group-hover\/editor\:flex {
1497
1611
  display: flex;
1498
1612
  }
1613
+ .ups-db .group:hover .group-hover\:border-zinc-500 {
1614
+ --tw-border-opacity: 1;
1615
+ border-color: rgb(113 113 122 / var(--tw-border-opacity));
1616
+ }
1499
1617
  .ups-db .group:hover .group-hover\:opacity-100 {
1500
1618
  opacity: 1;
1501
1619
  }
@@ -1532,6 +1650,12 @@
1532
1650
  .ups-db .group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus {
1533
1651
  --tw-ring-offset-color: #dc2626;
1534
1652
  }
1653
+ .ups-db .peer:disabled ~ .peer-disabled\:cursor-not-allowed {
1654
+ cursor: not-allowed;
1655
+ }
1656
+ .ups-db .peer:disabled ~ .peer-disabled\:opacity-70 {
1657
+ opacity: 0.7;
1658
+ }
1535
1659
  .ups-db .data-\[disabled\]\:pointer-events-none[data-disabled] {
1536
1660
  pointer-events: none;
1537
1661
  }
@@ -1571,10 +1695,6 @@
1571
1695
  --tw-bg-opacity: 1;
1572
1696
  background-color: rgb(244 244 245 / var(--tw-bg-opacity));
1573
1697
  }
1574
- .ups-db .data-\[state\=selected\]\:bg-zinc-100[data-state=selected] {
1575
- --tw-bg-opacity: 1;
1576
- background-color: rgb(244 244 245 / var(--tw-bg-opacity));
1577
- }
1578
1698
  .ups-db .data-\[state\=open\]\:text-neutral-900[data-state=open] {
1579
1699
  --tw-text-opacity: 1;
1580
1700
  color: rgb(23 23 23 / var(--tw-text-opacity));
@@ -1774,9 +1894,6 @@
1774
1894
  --tw-bg-opacity: 1;
1775
1895
  background-color: rgb(39 39 42 / var(--tw-bg-opacity));
1776
1896
  }
1777
- .ups-db .dark\:hover\:bg-zinc-800\/50:hover:is(.dark *) {
1778
- background-color: rgb(39 39 42 / 0.5);
1779
- }
1780
1897
  .ups-db .dark\:hover\:text-gray-100:hover:is(.dark *) {
1781
1898
  --tw-text-opacity: 1;
1782
1899
  color: rgb(243 244 246 / var(--tw-text-opacity));
@@ -1789,10 +1906,6 @@
1789
1906
  --tw-bg-opacity: 1;
1790
1907
  background-color: rgb(38 38 38 / var(--tw-bg-opacity));
1791
1908
  }
1792
- .ups-db .dark\:focus\:bg-zinc-800:focus:is(.dark *) {
1793
- --tw-bg-opacity: 1;
1794
- background-color: rgb(39 39 42 / var(--tw-bg-opacity));
1795
- }
1796
1909
  .ups-db .dark\:focus\:text-neutral-50:focus:is(.dark *) {
1797
1910
  --tw-text-opacity: 1;
1798
1911
  color: rgb(250 250 250 / var(--tw-text-opacity));
@@ -1835,10 +1948,6 @@
1835
1948
  --tw-bg-opacity: 1;
1836
1949
  background-color: rgb(39 39 42 / var(--tw-bg-opacity));
1837
1950
  }
1838
- .ups-db .dark\:data-\[state\=selected\]\:bg-zinc-800[data-state=selected]:is(.dark *) {
1839
- --tw-bg-opacity: 1;
1840
- background-color: rgb(39 39 42 / var(--tw-bg-opacity));
1841
- }
1842
1951
  .ups-db .dark\:data-\[state\=open\]\:text-neutral-50[data-state=open]:is(.dark *) {
1843
1952
  --tw-text-opacity: 1;
1844
1953
  color: rgb(250 250 250 / var(--tw-text-opacity));
@@ -1887,12 +1996,8 @@
1887
1996
  font-size: 0.75rem;
1888
1997
  line-height: 1rem;
1889
1998
  }
1890
- .ups-db .\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) {
1891
- padding-right: 0px;
1892
- }
1893
- .ups-db .\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\] > [role=checkbox] {
1894
- --tw-translate-y: 2px;
1895
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1999
+ .ups-db .\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar {
2000
+ display: none;
1896
2001
  }
1897
2002
  .ups-db .\[\&\>div\]\:\!block > div {
1898
2003
  display: block !important;
@@ -1904,9 +2009,13 @@
1904
2009
  .ups-db .\[\&\>svg\]\:shrink-0 > svg {
1905
2010
  flex-shrink: 0;
1906
2011
  }
1907
- .ups-db .\[\&_tr\:last-child\]\:border-0 tr:last-child {
1908
- border-width: 0px;
2012
+ .ups-db .\[\&_svg\]\:pointer-events-none svg {
2013
+ pointer-events: none;
1909
2014
  }
1910
- .ups-db .\[\&_tr\]\:border-b tr {
1911
- border-bottom-width: 1px;
2015
+ .ups-db .\[\&_svg\]\:size-4 svg {
2016
+ width: 1rem;
2017
+ height: 1rem;
2018
+ }
2019
+ .ups-db .\[\&_svg\]\:shrink-0 svg {
2020
+ flex-shrink: 0;
1912
2021
  }
package/dist/index.d.mts CHANGED
@@ -5,6 +5,27 @@ type RedisCredentials = {
5
5
  token?: string;
6
6
  };
7
7
 
8
- declare const RedisBrowser: ({ token, url }: RedisCredentials) => react_jsx_runtime.JSX.Element;
8
+ /**
9
+ * Persistence storage interface for the Databrowser.
10
+ */
11
+ type RedisBrowserStorage = {
12
+ set: (value: string) => void;
13
+ get: () => string | null;
14
+ };
15
+ declare const RedisBrowser: ({ token, url, hideTabs, storage, }: RedisCredentials & {
16
+ hideTabs?: boolean;
17
+ /**
18
+ * Persistence storage for the Databrowser.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <RedisBrowser storage={{
23
+ * set: (value: string) => localStorage.setItem("redis-browser-data", value),
24
+ * get: () => localStorage.getItem("redis-browser-data") || "",
25
+ * }} />
26
+ * ```
27
+ */
28
+ storage?: RedisBrowserStorage;
29
+ }) => react_jsx_runtime.JSX.Element;
9
30
 
10
- export { RedisBrowser };
31
+ export { RedisBrowser, type RedisBrowserStorage };
package/dist/index.d.ts CHANGED
@@ -5,6 +5,27 @@ type RedisCredentials = {
5
5
  token?: string;
6
6
  };
7
7
 
8
- declare const RedisBrowser: ({ token, url }: RedisCredentials) => react_jsx_runtime.JSX.Element;
8
+ /**
9
+ * Persistence storage interface for the Databrowser.
10
+ */
11
+ type RedisBrowserStorage = {
12
+ set: (value: string) => void;
13
+ get: () => string | null;
14
+ };
15
+ declare const RedisBrowser: ({ token, url, hideTabs, storage, }: RedisCredentials & {
16
+ hideTabs?: boolean;
17
+ /**
18
+ * Persistence storage for the Databrowser.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <RedisBrowser storage={{
23
+ * set: (value: string) => localStorage.setItem("redis-browser-data", value),
24
+ * get: () => localStorage.getItem("redis-browser-data") || "",
25
+ * }} />
26
+ * ```
27
+ */
28
+ storage?: RedisBrowserStorage;
29
+ }) => react_jsx_runtime.JSX.Element;
9
30
 
10
- export { RedisBrowser };
31
+ export { RedisBrowser, type RedisBrowserStorage };