@rozenite/network-activity-plugin 1.0.0-alpha.8 → 1.0.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.
Files changed (160) hide show
  1. package/README.md +2 -0
  2. package/dist/App.html +2 -2
  3. package/dist/assets/{App-R2ZMH9wJ.css → App-BrSkOkws.css} +269 -2
  4. package/dist/assets/{App-lNMijPJ4.js → App-C6wCDVkW.js} +17485 -10814
  5. package/dist/event-source.cjs +22 -0
  6. package/dist/event-source.js +23 -0
  7. package/dist/react-native.cjs +4 -1
  8. package/dist/react-native.js +4 -1
  9. package/dist/rozenite.json +1 -1
  10. package/dist/src/react-native/config.d.ts +20 -0
  11. package/dist/src/react-native/{network-inspector.d.ts → http/network-inspector.d.ts} +1 -1
  12. package/dist/src/react-native/http/overrides-registry.d.ts +6 -0
  13. package/dist/src/react-native/{xhr-interceptor.d.ts → http/xhr-interceptor.d.ts} +7 -1
  14. package/dist/src/react-native/sse/event-source.d.ts +2 -0
  15. package/dist/src/react-native/sse/sse-inspector.d.ts +9 -0
  16. package/dist/src/react-native/sse/sse-interceptor.d.ts +36 -0
  17. package/dist/src/react-native/sse/types.d.ts +6 -0
  18. package/dist/src/react-native/useNetworkActivityDevTools.d.ts +2 -1
  19. package/dist/src/react-native/utils/getBlobName.d.ts +35 -0
  20. package/dist/src/react-native/utils/getFormDataEntries.d.ts +18 -0
  21. package/dist/src/react-native/utils.d.ts +6 -0
  22. package/dist/src/react-native/websocket/websocket-inspector.d.ts +9 -0
  23. package/dist/src/react-native/websocket/websocket-interceptor.d.ts +74 -0
  24. package/dist/src/shared/client.d.ts +53 -6
  25. package/dist/src/shared/sse-events.d.ts +38 -0
  26. package/dist/src/shared/websocket-events.d.ts +60 -0
  27. package/dist/src/ui/components/Badge.d.ts +1 -1
  28. package/dist/src/ui/components/Button.d.ts +2 -2
  29. package/dist/src/ui/components/CodeBlock.d.ts +3 -0
  30. package/dist/src/ui/components/CodeEditor.d.ts +5 -0
  31. package/dist/src/ui/components/CookieCard.d.ts +7 -0
  32. package/dist/src/ui/components/CopyRequestDropdown.d.ts +7 -0
  33. package/dist/src/ui/components/DropdownMenu.d.ts +27 -0
  34. package/dist/src/ui/components/FilterBar.d.ts +10 -0
  35. package/dist/src/ui/components/JsonTreeCopyableItem.d.ts +7 -0
  36. package/dist/src/ui/components/KeyValueGrid.d.ts +13 -0
  37. package/dist/src/ui/components/OverrideResponse.d.ts +8 -0
  38. package/dist/src/ui/components/RequestBody.d.ts +6 -0
  39. package/dist/src/ui/components/RequestList.d.ts +13 -28
  40. package/dist/src/ui/components/ScrollArea.d.ts +3 -2
  41. package/dist/src/ui/components/Section.d.ts +8 -0
  42. package/dist/src/ui/components/Separator.d.ts +2 -1
  43. package/dist/src/ui/components/SidePanel.d.ts +1 -0
  44. package/dist/src/ui/components/Tabs.d.ts +7 -0
  45. package/dist/src/ui/components/Toolbar.d.ts +1 -0
  46. package/dist/src/ui/hooks/useCopyToClipboard.d.ts +4 -0
  47. package/dist/src/ui/state/derived.d.ts +5 -0
  48. package/dist/src/ui/state/hooks.d.ts +21 -0
  49. package/dist/src/ui/state/model.d.ts +103 -0
  50. package/dist/src/ui/state/store.d.ts +48 -0
  51. package/dist/src/ui/tabs/CookiesTab.d.ts +3 -6
  52. package/dist/src/ui/tabs/HeadersTab.d.ts +3 -15
  53. package/dist/src/ui/tabs/MessagesTab.d.ts +5 -0
  54. package/dist/src/ui/tabs/RequestTab.d.ts +2 -7
  55. package/dist/src/ui/tabs/ResponseTab.d.ts +2 -8
  56. package/dist/src/ui/tabs/SSEMessagesTab.d.ts +5 -0
  57. package/dist/src/ui/tabs/TimingTab.d.ts +3 -5
  58. package/dist/src/ui/types.d.ts +4 -1
  59. package/dist/src/ui/utils/assert.d.ts +1 -0
  60. package/dist/src/ui/utils/checkRequestBodyBinary.d.ts +2 -0
  61. package/dist/src/ui/utils/copyToClipboard.d.ts +1 -0
  62. package/dist/src/ui/utils/escapeShellArg.d.ts +1 -0
  63. package/dist/src/ui/utils/generateCurlCommand.d.ts +2 -0
  64. package/dist/src/ui/utils/generateFetchCall.d.ts +2 -0
  65. package/dist/src/ui/utils/generateMultipartBody.d.ts +4 -0
  66. package/dist/src/ui/utils/getId.d.ts +1 -0
  67. package/dist/src/ui/utils/getStatusColor.d.ts +1 -0
  68. package/dist/src/utils/applyReactNativeRequestHeadersLogic.d.ts +7 -0
  69. package/dist/src/utils/applyReactNativeResponseHeadersLogic.d.ts +9 -0
  70. package/dist/src/utils/cookieParser.d.ts +6 -0
  71. package/dist/src/utils/getContentTypeMimeType.d.ts +2 -0
  72. package/dist/src/utils/getHttpHeader.d.ts +5 -0
  73. package/dist/src/utils/getHttpHeaderValueAsString.d.ts +11 -0
  74. package/dist/src/utils/getStringSizeInBytes.d.ts +1 -0
  75. package/dist/src/utils/inferContentTypeFromPostData.d.ts +2 -0
  76. package/dist/src/utils/safeStringify.d.ts +1 -0
  77. package/dist/src/utils/typeChecks.d.ts +9 -0
  78. package/dist/useNetworkActivityDevTools.cjs +724 -40
  79. package/dist/useNetworkActivityDevTools.js +723 -41
  80. package/package.json +22 -8
  81. package/react-native.ts +6 -1
  82. package/src/react-native/config.ts +43 -0
  83. package/src/react-native/http/network-inspector.ts +388 -0
  84. package/src/react-native/http/overrides-registry.ts +32 -0
  85. package/src/react-native/{xhr-interceptor.ts → http/xhr-interceptor.ts} +19 -2
  86. package/src/react-native/{xml-request.d.ts → http/xml-request.d.ts} +1 -0
  87. package/src/react-native/sse/event-source.ts +25 -0
  88. package/src/react-native/sse/sse-inspector.ts +139 -0
  89. package/src/react-native/sse/sse-interceptor.ts +180 -0
  90. package/src/react-native/sse/types.ts +9 -0
  91. package/src/react-native/useNetworkActivityDevTools.ts +156 -4
  92. package/src/react-native/utils/getBlobName.ts +45 -0
  93. package/src/react-native/utils/getFormDataEntries.ts +32 -0
  94. package/src/react-native/utils.ts +43 -0
  95. package/src/react-native/websocket/websocket-inspector.ts +180 -0
  96. package/src/react-native/websocket/websocket-interceptor.d.ts +4 -0
  97. package/src/react-native/websocket/websocket-interceptor.ts +166 -0
  98. package/src/shared/client.ts +79 -6
  99. package/src/shared/sse-events.ts +47 -0
  100. package/src/shared/websocket-events.ts +79 -0
  101. package/src/ui/components/Button.tsx +1 -0
  102. package/src/ui/components/CodeBlock.tsx +19 -0
  103. package/src/ui/components/CodeEditor.tsx +26 -0
  104. package/src/ui/components/CookieCard.tsx +64 -0
  105. package/src/ui/components/CopyRequestDropdown.tsx +95 -0
  106. package/src/ui/components/DropdownMenu.tsx +206 -0
  107. package/src/ui/components/FilterBar.tsx +117 -0
  108. package/src/ui/components/Input.tsx +1 -1
  109. package/src/ui/components/JsonTree.tsx +20 -0
  110. package/src/ui/components/JsonTreeCopyableItem.tsx +37 -0
  111. package/src/ui/components/KeyValueGrid.tsx +51 -0
  112. package/src/ui/components/OverrideResponse.tsx +132 -0
  113. package/src/ui/components/RequestBody.tsx +86 -0
  114. package/src/ui/components/RequestList.tsx +101 -131
  115. package/src/ui/components/ScrollArea.tsx +1 -0
  116. package/src/ui/components/Section.tsx +46 -0
  117. package/src/ui/components/SidePanel.tsx +333 -0
  118. package/src/ui/components/Tabs.tsx +1 -1
  119. package/src/ui/components/Toolbar.tsx +45 -0
  120. package/src/ui/globals.css +4 -0
  121. package/src/ui/hooks/useCopyToClipboard.ts +28 -0
  122. package/src/ui/state/derived.ts +112 -0
  123. package/src/ui/state/hooks.ts +52 -0
  124. package/src/ui/state/model.ts +140 -0
  125. package/src/ui/state/store.ts +669 -0
  126. package/src/ui/tabs/CookiesTab.tsx +61 -278
  127. package/src/ui/tabs/HeadersTab.tsx +85 -103
  128. package/src/ui/tabs/MessagesTab.tsx +276 -0
  129. package/src/ui/tabs/RequestTab.tsx +58 -51
  130. package/src/ui/tabs/ResponseTab.tsx +101 -74
  131. package/src/ui/tabs/SSEMessagesTab.tsx +224 -0
  132. package/src/ui/tabs/TimingTab.tsx +30 -43
  133. package/src/ui/types.ts +4 -1
  134. package/src/ui/utils/assert.ts +5 -0
  135. package/src/ui/utils/checkRequestBodyBinary.ts +7 -0
  136. package/src/ui/utils/copyToClipboard.ts +3 -0
  137. package/src/ui/utils/escapeShellArg.ts +12 -0
  138. package/src/ui/utils/generateCurlCommand.ts +83 -0
  139. package/src/ui/utils/generateFetchCall.ts +64 -0
  140. package/src/ui/utils/generateMultipartBody.ts +19 -0
  141. package/src/ui/utils/getId.ts +10 -0
  142. package/src/ui/utils/getStatusColor.ts +15 -0
  143. package/src/ui/views/InspectorView.tsx +35 -319
  144. package/src/utils/applyReactNativeRequestHeadersLogic.ts +30 -0
  145. package/src/utils/applyReactNativeResponseHeadersLogic.ts +28 -0
  146. package/src/utils/cookieParser.ts +126 -0
  147. package/src/utils/getContentTypeMimeType.ts +17 -0
  148. package/src/utils/getHttpHeader.ts +17 -0
  149. package/src/utils/getHttpHeaderValueAsString.ts +13 -0
  150. package/src/utils/getStringSizeInBytes.ts +3 -0
  151. package/src/utils/inferContentTypeFromPostData.ts +9 -0
  152. package/src/utils/safeStringify.ts +7 -0
  153. package/src/utils/typeChecks.ts +27 -0
  154. package/tailwind.config.ts +3 -0
  155. package/vite.config.ts +12 -0
  156. package/dist/src/ui/utils/getHttpHeaderValue.d.ts +0 -2
  157. package/src/react-native/network-inspector.ts +0 -247
  158. package/src/ui/utils/getHttpHeaderValue.ts +0 -14
  159. /package/dist/src/react-native/{network-requests-registry.d.ts → http/network-requests-registry.d.ts} +0 -0
  160. /package/src/react-native/{network-requests-registry.ts → http/network-requests-registry.ts} +0 -0
package/README.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  The Rozenite Network Activity Plugin provides real-time network request monitoring, detailed request/response inspection within your React Native DevTools environment. It offers comprehensive network debugging capabilities similar to browser DevTools Network panel.
8
8
 
9
+ ![Network Activity Plugin](https://rozenite.dev/network-activity-plugin.png)
10
+
9
11
  ## Features
10
12
 
11
13
  - **Real-time Network Monitoring**: Track all HTTP/HTTPS requests in real-time
package/dist/App.html CHANGED
@@ -22,8 +22,8 @@
22
22
  <script>
23
23
  var __ROZENITE_PANEL__ = true;
24
24
  </script>
25
- <script type="module" crossorigin src="./assets/App-lNMijPJ4.js"></script>
26
- <link rel="stylesheet" crossorigin href="./assets/App-R2ZMH9wJ.css">
25
+ <script type="module" crossorigin src="./assets/App-C6wCDVkW.js"></script>
26
+ <link rel="stylesheet" crossorigin href="./assets/App-BrSkOkws.css">
27
27
  </head>
28
28
  <body>
29
29
  <div id="root"></div>
@@ -541,30 +541,83 @@ video {
541
541
  background-color: hsl(var(--background));
542
542
  color: hsl(var(--foreground));
543
543
  }
544
+ .absolute {
545
+ position: absolute;
546
+ }
544
547
  .relative {
545
548
  position: relative;
546
549
  }
547
550
  .sticky {
548
551
  position: sticky;
549
552
  }
553
+ .left-2 {
554
+ left: 0.5rem;
555
+ }
550
556
  .top-0 {
551
557
  top: 0px;
552
558
  }
553
559
  .z-10 {
554
560
  z-index: 10;
555
561
  }
562
+ .z-50 {
563
+ z-index: 50;
564
+ }
565
+ .col-span-2 {
566
+ grid-column: span 2 / span 2;
567
+ }
568
+ .-m-2 {
569
+ margin: -0.5rem;
570
+ }
556
571
  .m-0 {
557
572
  margin: 0px;
558
573
  }
574
+ .-mx-1 {
575
+ margin-left: -0.25rem;
576
+ margin-right: -0.25rem;
577
+ }
578
+ .my-1 {
579
+ margin-top: 0.25rem;
580
+ margin-bottom: 0.25rem;
581
+ }
559
582
  .mb-2 {
560
583
  margin-bottom: 0.5rem;
561
584
  }
562
585
  .mb-3 {
563
586
  margin-bottom: 0.75rem;
564
587
  }
588
+ .me-auto {
589
+ margin-inline-end: auto;
590
+ }
591
+ .ml-0 {
592
+ margin-left: 0px;
593
+ }
594
+ .ml-1 {
595
+ margin-left: 0.25rem;
596
+ }
597
+ .ml-2 {
598
+ margin-left: 0.5rem;
599
+ }
600
+ .ml-auto {
601
+ margin-left: auto;
602
+ }
603
+ .mr-1 {
604
+ margin-right: 0.25rem;
605
+ }
606
+ .mr-2 {
607
+ margin-right: 0.5rem;
608
+ }
609
+ .ms-2 {
610
+ margin-inline-start: 0.5rem;
611
+ }
612
+ .mt-1 {
613
+ margin-top: 0.25rem;
614
+ }
565
615
  .mt-2 {
566
616
  margin-top: 0.5rem;
567
617
  }
618
+ .inline-block {
619
+ display: inline-block;
620
+ }
568
621
  .flex {
569
622
  display: flex;
570
623
  }
@@ -586,18 +639,27 @@ video {
586
639
  .h-12 {
587
640
  height: 3rem;
588
641
  }
642
+ .h-2 {
643
+ height: 0.5rem;
644
+ }
589
645
  .h-2\.5 {
590
646
  height: 0.625rem;
591
647
  }
592
648
  .h-3 {
593
649
  height: 0.75rem;
594
650
  }
651
+ .h-3\.5 {
652
+ height: 0.875rem;
653
+ }
595
654
  .h-4 {
596
655
  height: 1rem;
597
656
  }
598
657
  .h-6 {
599
658
  height: 1.5rem;
600
659
  }
660
+ .h-7 {
661
+ height: 1.75rem;
662
+ }
601
663
  .h-8 {
602
664
  height: 2rem;
603
665
  }
@@ -610,9 +672,18 @@ video {
610
672
  .h-full {
611
673
  height: 100%;
612
674
  }
675
+ .h-px {
676
+ height: 1px;
677
+ }
613
678
  .h-screen {
614
679
  height: 100vh;
615
680
  }
681
+ .max-h-96 {
682
+ max-height: 24rem;
683
+ }
684
+ .min-h-0 {
685
+ min-height: 0px;
686
+ }
616
687
  .w-1\/2 {
617
688
  width: 50%;
618
689
  }
@@ -622,14 +693,17 @@ video {
622
693
  .w-12 {
623
694
  width: 3rem;
624
695
  }
696
+ .w-2 {
697
+ width: 0.5rem;
698
+ }
625
699
  .w-2\.5 {
626
700
  width: 0.625rem;
627
701
  }
628
702
  .w-3 {
629
703
  width: 0.75rem;
630
704
  }
631
- .w-32 {
632
- width: 8rem;
705
+ .w-3\.5 {
706
+ width: 0.875rem;
633
707
  }
634
708
  .w-4 {
635
709
  width: 1rem;
@@ -649,12 +723,32 @@ video {
649
723
  .min-w-0 {
650
724
  min-width: 0px;
651
725
  }
726
+ .min-w-\[8rem\] {
727
+ min-width: 8rem;
728
+ }
729
+ .max-w-24 {
730
+ max-width: 6rem;
731
+ }
732
+ .max-w-xs {
733
+ max-width: 20rem;
734
+ }
652
735
  .flex-1 {
653
736
  flex: 1 1 0%;
654
737
  }
738
+ .flex-shrink-0 {
739
+ flex-shrink: 0;
740
+ }
655
741
  .shrink-0 {
656
742
  flex-shrink: 0;
657
743
  }
744
+ .translate-y-0\.75 {
745
+ --tw-translate-y: 0.1875rem;
746
+ 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));
747
+ }
748
+ .rotate-90 {
749
+ --tw-rotate: 90deg;
750
+ 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));
751
+ }
658
752
  @keyframes spin {
659
753
 
660
754
  to {
@@ -664,6 +758,9 @@ video {
664
758
  .animate-spin {
665
759
  animation: spin 1s linear infinite;
666
760
  }
761
+ .cursor-default {
762
+ cursor: default;
763
+ }
667
764
  .cursor-pointer {
668
765
  cursor: pointer;
669
766
  }
@@ -681,6 +778,9 @@ video {
681
778
  .grid-cols-5 {
682
779
  grid-template-columns: repeat(5, minmax(0, 1fr));
683
780
  }
781
+ .grid-cols-\[minmax\(7rem\2c 25\%\)_minmax\(3rem\2c 1fr\)\] {
782
+ grid-template-columns: minmax(7rem,25%) minmax(3rem,1fr);
783
+ }
684
784
  .flex-col {
685
785
  flex-direction: column;
686
786
  }
@@ -702,6 +802,13 @@ video {
702
802
  .gap-4 {
703
803
  gap: 1rem;
704
804
  }
805
+ .gap-x-2 {
806
+ -moz-column-gap: 0.5rem;
807
+ column-gap: 0.5rem;
808
+ }
809
+ .gap-y-2 {
810
+ row-gap: 0.5rem;
811
+ }
705
812
  .space-y-1 > :not([hidden]) ~ :not([hidden]) {
706
813
  --tw-space-y-reverse: 0;
707
814
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
@@ -712,6 +819,11 @@ video {
712
819
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
713
820
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
714
821
  }
822
+ .space-y-3 > :not([hidden]) ~ :not([hidden]) {
823
+ --tw-space-y-reverse: 0;
824
+ margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
825
+ margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
826
+ }
715
827
  .space-y-4 > :not([hidden]) ~ :not([hidden]) {
716
828
  --tw-space-y-reverse: 0;
717
829
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
@@ -731,6 +843,9 @@ video {
731
843
  .overflow-x-auto {
732
844
  overflow-x: auto;
733
845
  }
846
+ .overflow-y-auto {
847
+ overflow-y: auto;
848
+ }
734
849
  .truncate {
735
850
  overflow: hidden;
736
851
  text-overflow: ellipsis;
@@ -739,6 +854,9 @@ video {
739
854
  .whitespace-nowrap {
740
855
  white-space: nowrap;
741
856
  }
857
+ .whitespace-pre {
858
+ white-space: pre;
859
+ }
742
860
  .whitespace-pre-wrap {
743
861
  white-space: pre-wrap;
744
862
  }
@@ -778,9 +896,16 @@ video {
778
896
  .border-t {
779
897
  border-top-width: 1px;
780
898
  }
899
+ .border-blue-500\/50 {
900
+ border-color: rgb(59 130 246 / 0.5);
901
+ }
781
902
  .border-current {
782
903
  border-color: currentColor;
783
904
  }
905
+ .border-gray-600 {
906
+ --tw-border-opacity: 1;
907
+ border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));
908
+ }
784
909
  .border-gray-700 {
785
910
  --tw-border-opacity: 1;
786
911
  border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));
@@ -816,6 +941,9 @@ video {
816
941
  --tw-bg-opacity: 1;
817
942
  background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));
818
943
  }
944
+ .bg-blue-600\/20 {
945
+ background-color: rgb(37 99 235 / 0.2);
946
+ }
819
947
  .bg-blue-900\/30 {
820
948
  background-color: rgb(30 58 138 / 0.3);
821
949
  }
@@ -866,6 +994,10 @@ video {
866
994
  .bg-secondary {
867
995
  background-color: hsl(var(--secondary));
868
996
  }
997
+ .bg-violet-300 {
998
+ --tw-bg-opacity: 1;
999
+ background-color: rgb(196 181 253 / var(--tw-bg-opacity, 1));
1000
+ }
869
1001
  .bg-yellow-600 {
870
1002
  --tw-bg-opacity: 1;
871
1003
  background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));
@@ -927,6 +1059,12 @@ video {
927
1059
  padding-top: 0.5rem;
928
1060
  padding-bottom: 0.5rem;
929
1061
  }
1062
+ .pl-8 {
1063
+ padding-left: 2rem;
1064
+ }
1065
+ .pr-2 {
1066
+ padding-right: 0.5rem;
1067
+ }
930
1068
  .pt-4 {
931
1069
  padding-top: 1rem;
932
1070
  }
@@ -961,9 +1099,19 @@ video {
961
1099
  .font-semibold {
962
1100
  font-weight: 600;
963
1101
  }
1102
+ .capitalize {
1103
+ text-transform: capitalize;
1104
+ }
964
1105
  .italic {
965
1106
  font-style: italic;
966
1107
  }
1108
+ .tracking-widest {
1109
+ letter-spacing: 0.1em;
1110
+ }
1111
+ .text-blue-300 {
1112
+ --tw-text-opacity: 1;
1113
+ color: rgb(147 197 253 / var(--tw-text-opacity, 1));
1114
+ }
967
1115
  .text-blue-400 {
968
1116
  --tw-text-opacity: 1;
969
1117
  color: rgb(96 165 250 / var(--tw-text-opacity, 1));
@@ -1046,6 +1194,14 @@ video {
1046
1194
  .text-secondary-foreground {
1047
1195
  color: hsl(var(--secondary-foreground));
1048
1196
  }
1197
+ .text-violet-300 {
1198
+ --tw-text-opacity: 1;
1199
+ color: rgb(196 181 253 / var(--tw-text-opacity, 1));
1200
+ }
1201
+ .text-white {
1202
+ --tw-text-opacity: 1;
1203
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
1204
+ }
1049
1205
  .text-yellow-400 {
1050
1206
  --tw-text-opacity: 1;
1051
1207
  color: rgb(250 204 21 / var(--tw-text-opacity, 1));
@@ -1057,12 +1213,30 @@ video {
1057
1213
  .underline-offset-4 {
1058
1214
  text-underline-offset: 4px;
1059
1215
  }
1216
+ .opacity-0 {
1217
+ opacity: 0;
1218
+ }
1219
+ .shadow-lg {
1220
+ --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
1221
+ --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
1222
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1223
+ }
1224
+ .outline-none {
1225
+ outline: 2px solid transparent;
1226
+ outline-offset: 2px;
1227
+ }
1060
1228
  .outline {
1061
1229
  outline-style: solid;
1062
1230
  }
1063
1231
  .ring-offset-background {
1064
1232
  --tw-ring-offset-color: hsl(var(--background));
1065
1233
  }
1234
+ .ring-offset-blue-500 {
1235
+ --tw-ring-offset-color: #3b82f6;
1236
+ }
1237
+ .\!filter {
1238
+ 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) !important;
1239
+ }
1066
1240
  .filter {
1067
1241
  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);
1068
1242
  }
@@ -1090,6 +1264,9 @@ video {
1090
1264
  transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
1091
1265
  }
1092
1266
  }
1267
+ .wrap-anywhere {
1268
+ overflow-wrap: anywhere;
1269
+ }
1093
1270
  .file\:border-0::file-selector-button {
1094
1271
  border-width: 0px;
1095
1272
  }
@@ -1106,6 +1283,14 @@ video {
1106
1283
  .file\:text-foreground::file-selector-button {
1107
1284
  color: hsl(var(--foreground));
1108
1285
  }
1286
+ .placeholder\:text-gray-400::-moz-placeholder {
1287
+ --tw-text-opacity: 1;
1288
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1289
+ }
1290
+ .placeholder\:text-gray-400::placeholder {
1291
+ --tw-text-opacity: 1;
1292
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1293
+ }
1109
1294
  .placeholder\:text-muted-foreground::-moz-placeholder {
1110
1295
  color: hsl(var(--muted-foreground));
1111
1296
  }
@@ -1115,6 +1300,9 @@ video {
1115
1300
  .hover\:bg-accent:hover {
1116
1301
  background-color: hsl(var(--accent));
1117
1302
  }
1303
+ .hover\:bg-blue-600\/30:hover {
1304
+ background-color: rgb(37 99 235 / 0.3);
1305
+ }
1118
1306
  .hover\:bg-destructive\/80:hover {
1119
1307
  background-color: hsl(var(--destructive) / 0.8);
1120
1308
  }
@@ -1149,13 +1337,33 @@ video {
1149
1337
  --tw-text-opacity: 1;
1150
1338
  color: rgb(243 244 246 / var(--tw-text-opacity, 1));
1151
1339
  }
1340
+ .hover\:text-gray-300:hover {
1341
+ --tw-text-opacity: 1;
1342
+ color: rgb(209 213 219 / var(--tw-text-opacity, 1));
1343
+ }
1152
1344
  .hover\:text-red-300:hover {
1153
1345
  --tw-text-opacity: 1;
1154
1346
  color: rgb(252 165 165 / var(--tw-text-opacity, 1));
1155
1347
  }
1348
+ .hover\:text-violet-300:hover {
1349
+ --tw-text-opacity: 1;
1350
+ color: rgb(196 181 253 / var(--tw-text-opacity, 1));
1351
+ }
1352
+ .hover\:text-white:hover {
1353
+ --tw-text-opacity: 1;
1354
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
1355
+ }
1156
1356
  .hover\:underline:hover {
1157
1357
  text-decoration-line: underline;
1158
1358
  }
1359
+ .focus\:bg-gray-700:focus {
1360
+ --tw-bg-opacity: 1;
1361
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
1362
+ }
1363
+ .focus\:text-gray-100:focus {
1364
+ --tw-text-opacity: 1;
1365
+ color: rgb(243 244 246 / var(--tw-text-opacity, 1));
1366
+ }
1159
1367
  .focus\:outline-none:focus {
1160
1368
  outline: 2px solid transparent;
1161
1369
  outline-offset: 2px;
@@ -1195,6 +1403,12 @@ video {
1195
1403
  .disabled\:opacity-50:disabled {
1196
1404
  opacity: 0.5;
1197
1405
  }
1406
+ .group:hover .group-hover\:opacity-100 {
1407
+ opacity: 1;
1408
+ }
1409
+ .data-\[disabled\]\:pointer-events-none[data-disabled] {
1410
+ pointer-events: none;
1411
+ }
1198
1412
  .data-\[state\=active\]\:bg-background[data-state="active"] {
1199
1413
  background-color: hsl(var(--background));
1200
1414
  }
@@ -1202,15 +1416,68 @@ video {
1202
1416
  --tw-bg-opacity: 1;
1203
1417
  background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
1204
1418
  }
1419
+ .data-\[state\=open\]\:bg-gray-700[data-state="open"] {
1420
+ --tw-bg-opacity: 1;
1421
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
1422
+ }
1205
1423
  .data-\[state\=active\]\:text-gray-100[data-state="active"] {
1206
1424
  --tw-text-opacity: 1;
1207
1425
  color: rgb(243 244 246 / var(--tw-text-opacity, 1));
1208
1426
  }
1427
+ .data-\[state\=open\]\:text-gray-100[data-state="open"] {
1428
+ --tw-text-opacity: 1;
1429
+ color: rgb(243 244 246 / var(--tw-text-opacity, 1));
1430
+ }
1431
+ .data-\[disabled\]\:opacity-50[data-disabled] {
1432
+ opacity: 0.5;
1433
+ }
1209
1434
  .data-\[state\=active\]\:shadow-sm[data-state="active"] {
1210
1435
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
1211
1436
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
1212
1437
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1213
1438
  }
1439
+ .data-\[state\=open\]\:animate-in[data-state="open"] {
1440
+ animation-name: enter;
1441
+ animation-duration: 150ms;
1442
+ --tw-enter-opacity: initial;
1443
+ --tw-enter-scale: initial;
1444
+ --tw-enter-rotate: initial;
1445
+ --tw-enter-translate-x: initial;
1446
+ --tw-enter-translate-y: initial;
1447
+ }
1448
+ .data-\[state\=closed\]\:animate-out[data-state="closed"] {
1449
+ animation-name: exit;
1450
+ animation-duration: 150ms;
1451
+ --tw-exit-opacity: initial;
1452
+ --tw-exit-scale: initial;
1453
+ --tw-exit-rotate: initial;
1454
+ --tw-exit-translate-x: initial;
1455
+ --tw-exit-translate-y: initial;
1456
+ }
1457
+ .data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
1458
+ --tw-exit-opacity: 0;
1459
+ }
1460
+ .data-\[state\=open\]\:fade-in-0[data-state="open"] {
1461
+ --tw-enter-opacity: 0;
1462
+ }
1463
+ .data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
1464
+ --tw-exit-scale: .95;
1465
+ }
1466
+ .data-\[state\=open\]\:zoom-in-95[data-state="open"] {
1467
+ --tw-enter-scale: .95;
1468
+ }
1469
+ .data-\[side\=bottom\]\:slide-in-from-top-2[data-side="bottom"] {
1470
+ --tw-enter-translate-y: -0.5rem;
1471
+ }
1472
+ .data-\[side\=left\]\:slide-in-from-right-2[data-side="left"] {
1473
+ --tw-enter-translate-x: 0.5rem;
1474
+ }
1475
+ .data-\[side\=right\]\:slide-in-from-left-2[data-side="right"] {
1476
+ --tw-enter-translate-x: -0.5rem;
1477
+ }
1478
+ .data-\[side\=top\]\:slide-in-from-bottom-2[data-side="top"] {
1479
+ --tw-enter-translate-y: 0.5rem;
1480
+ }
1214
1481
  @media (min-width: 768px) {
1215
1482
 
1216
1483
  .md\:text-sm {