@usefy/screen-recorder 0.2.2 → 0.2.3

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/dist/index.js CHANGED
@@ -2122,7 +2122,7 @@ ScreenRecorder.displayName = "ScreenRecorder";
2122
2122
  if (document.getElementById(id)) return;
2123
2123
  var style = document.createElement('style');
2124
2124
  style.id = id;
2125
- style.textContent = `/* components/Trigger/Trigger.module.scss */
2125
+ style.textContent = `/* components/Countdown/Countdown.module.scss */
2126
2126
  @keyframes pulse {
2127
2127
  0%, 100% {
2128
2128
  opacity: 1;
@@ -2179,7 +2179,46 @@ ScreenRecorder.displayName = "ScreenRecorder";
2179
2179
  opacity: 1;
2180
2180
  }
2181
2181
  }
2182
- .Trigger_trigger__dtqfb {
2182
+ .Countdown_overlay__cif1q {
2183
+ position: fixed;
2184
+ top: 0;
2185
+ right: 0;
2186
+ bottom: 0;
2187
+ left: 0;
2188
+ display: flex;
2189
+ flex-direction: column;
2190
+ align-items: center;
2191
+ justify-content: center;
2192
+ background-color: rgba(0, 0, 0, 0.5);
2193
+ backdrop-filter: blur(4px);
2194
+ -webkit-backdrop-filter: blur(4px);
2195
+ animation: fade-in 200ms ease-out;
2196
+ }
2197
+
2198
+ .Countdown_countdownCircle__cif1q {
2199
+ display: flex;
2200
+ align-items: center;
2201
+ justify-content: center;
2202
+ width: 8rem;
2203
+ height: 8rem;
2204
+ border-radius: 9999px;
2205
+ background-color: rgba(255, 255, 255, 0.1);
2206
+ border: 4px solid rgba(255, 255, 255, 0.3);
2207
+ color: white;
2208
+ font-size: 4.5rem;
2209
+ font-weight: 700;
2210
+ animation: countdown-scale 500ms ease-out;
2211
+ }
2212
+
2213
+ .Countdown_message__cif1q {
2214
+ margin-top: 1.5rem;
2215
+ color: rgba(255, 255, 255, 0.8);
2216
+ font-size: 1.125rem;
2217
+ line-height: 1.25;
2218
+ font-weight: 500;
2219
+ }
2220
+
2221
+ .Countdown_cancelButton__cif1q {
2183
2222
  -webkit-appearance: none;
2184
2223
  -moz-appearance: none;
2185
2224
  appearance: none;
@@ -2191,71 +2230,28 @@ ScreenRecorder.displayName = "ScreenRecorder";
2191
2230
  color: inherit;
2192
2231
  cursor: pointer;
2193
2232
  }
2194
- .Trigger_trigger__dtqfb:disabled {
2233
+ .Countdown_cancelButton__cif1q:disabled {
2195
2234
  cursor: not-allowed;
2196
2235
  }
2197
- .Trigger_trigger__dtqfb {
2198
- position: fixed;
2199
- display: flex;
2200
- align-items: center;
2201
- justify-content: center;
2202
- gap: 0.5rem;
2203
- padding: 0.625rem 1rem;
2236
+ .Countdown_cancelButton__cif1q {
2237
+ margin-top: 2rem;
2238
+ padding: 0.5rem 1.5rem;
2204
2239
  border-radius: 9999px;
2205
- font-weight: 500;
2240
+ background-color: rgba(255, 255, 255, 0.1);
2241
+ color: white;
2206
2242
  font-size: 0.875rem;
2207
2243
  line-height: 1.5;
2208
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
2209
- background-color: #dc2626;
2210
- color: white;
2211
- transition-property: all;
2244
+ font-weight: 500;
2245
+ transition-property: color, background-color, border-color;
2212
2246
  transition-duration: 200ms;
2213
2247
  transition-timing-function: ease-out;
2214
2248
  }
2215
- .Trigger_trigger__dtqfb:hover:not(:disabled) {
2216
- background-color: #b91c1c;
2217
- transform: scale(1.05);
2218
- }
2219
- .Trigger_trigger__dtqfb:active:not(:disabled) {
2220
- background-color: #991b1b;
2221
- transform: scale(0.95);
2249
+ .Countdown_cancelButton__cif1q:hover {
2250
+ background-color: rgba(255, 255, 255, 0.2);
2222
2251
  }
2223
- .Trigger_trigger__dtqfb:focus {
2252
+ .Countdown_cancelButton__cif1q:focus {
2224
2253
  outline: none;
2225
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1), 0 0 0 2px white, 0 0 0 4px #ef4444;
2226
- }
2227
- .Trigger_trigger__dtqfb:disabled {
2228
- opacity: 0.5;
2229
- cursor: not-allowed;
2230
- }
2231
- .Trigger_trigger__dtqfb:disabled:hover {
2232
- background-color: #dc2626;
2233
- transform: none;
2234
- }
2235
-
2236
- .Trigger_topLeft__dtqfb {
2237
- top: 1rem;
2238
- left: 1rem;
2239
- }
2240
-
2241
- .Trigger_topRight__dtqfb {
2242
- top: 1rem;
2243
- right: 1rem;
2244
- }
2245
-
2246
- .Trigger_bottomLeft__dtqfb {
2247
- bottom: 1rem;
2248
- left: 1rem;
2249
- }
2250
-
2251
- .Trigger_bottomRight__dtqfb {
2252
- bottom: 1rem;
2253
- right: 1rem;
2254
- }
2255
-
2256
- .Trigger_icon__dtqfb {
2257
- width: 1.25rem;
2258
- height: 1.25rem;
2254
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);
2259
2255
  }
2260
2256
 
2261
2257
  /* components/Status/StatusBadge.module.scss */
@@ -2465,138 +2461,6 @@ ScreenRecorder.displayName = "ScreenRecorder";
2465
2461
  color: #9ca3af;
2466
2462
  }
2467
2463
 
2468
- /* components/Countdown/Countdown.module.scss */
2469
- @keyframes pulse {
2470
- 0%, 100% {
2471
- opacity: 1;
2472
- }
2473
- 50% {
2474
- opacity: 0.5;
2475
- }
2476
- }
2477
- @keyframes pulse-record {
2478
- 0%, 100% {
2479
- opacity: 1;
2480
- }
2481
- 50% {
2482
- opacity: 0.5;
2483
- }
2484
- }
2485
- @keyframes spin {
2486
- from {
2487
- transform: rotate(0deg);
2488
- }
2489
- to {
2490
- transform: rotate(360deg);
2491
- }
2492
- }
2493
- @keyframes fade-in {
2494
- 0% {
2495
- opacity: 0;
2496
- }
2497
- 100% {
2498
- opacity: 1;
2499
- }
2500
- }
2501
- @keyframes slide-up {
2502
- 0% {
2503
- transform: translateY(10px);
2504
- opacity: 0;
2505
- }
2506
- 100% {
2507
- transform: translateY(0);
2508
- opacity: 1;
2509
- }
2510
- }
2511
- @keyframes countdown-scale {
2512
- 0% {
2513
- transform: scale(0.5);
2514
- opacity: 0;
2515
- }
2516
- 50% {
2517
- transform: scale(1.2);
2518
- opacity: 1;
2519
- }
2520
- 100% {
2521
- transform: scale(1);
2522
- opacity: 1;
2523
- }
2524
- }
2525
- .Countdown_overlay__cif1q {
2526
- position: fixed;
2527
- top: 0;
2528
- right: 0;
2529
- bottom: 0;
2530
- left: 0;
2531
- display: flex;
2532
- flex-direction: column;
2533
- align-items: center;
2534
- justify-content: center;
2535
- background-color: rgba(0, 0, 0, 0.5);
2536
- backdrop-filter: blur(4px);
2537
- -webkit-backdrop-filter: blur(4px);
2538
- animation: fade-in 200ms ease-out;
2539
- }
2540
-
2541
- .Countdown_countdownCircle__cif1q {
2542
- display: flex;
2543
- align-items: center;
2544
- justify-content: center;
2545
- width: 8rem;
2546
- height: 8rem;
2547
- border-radius: 9999px;
2548
- background-color: rgba(255, 255, 255, 0.1);
2549
- border: 4px solid rgba(255, 255, 255, 0.3);
2550
- color: white;
2551
- font-size: 4.5rem;
2552
- font-weight: 700;
2553
- animation: countdown-scale 500ms ease-out;
2554
- }
2555
-
2556
- .Countdown_message__cif1q {
2557
- margin-top: 1.5rem;
2558
- color: rgba(255, 255, 255, 0.8);
2559
- font-size: 1.125rem;
2560
- line-height: 1.25;
2561
- font-weight: 500;
2562
- }
2563
-
2564
- .Countdown_cancelButton__cif1q {
2565
- -webkit-appearance: none;
2566
- -moz-appearance: none;
2567
- appearance: none;
2568
- background: none;
2569
- border: none;
2570
- padding: 0;
2571
- margin: 0;
2572
- font: inherit;
2573
- color: inherit;
2574
- cursor: pointer;
2575
- }
2576
- .Countdown_cancelButton__cif1q:disabled {
2577
- cursor: not-allowed;
2578
- }
2579
- .Countdown_cancelButton__cif1q {
2580
- margin-top: 2rem;
2581
- padding: 0.5rem 1.5rem;
2582
- border-radius: 9999px;
2583
- background-color: rgba(255, 255, 255, 0.1);
2584
- color: white;
2585
- font-size: 0.875rem;
2586
- line-height: 1.5;
2587
- font-weight: 500;
2588
- transition-property: color, background-color, border-color;
2589
- transition-duration: 200ms;
2590
- transition-timing-function: ease-out;
2591
- }
2592
- .Countdown_cancelButton__cif1q:hover {
2593
- background-color: rgba(255, 255, 255, 0.2);
2594
- }
2595
- .Countdown_cancelButton__cif1q:focus {
2596
- outline: none;
2597
- box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);
2598
- }
2599
-
2600
2464
  /* components/Status/ErrorMessage.module.scss */
2601
2465
  @keyframes pulse {
2602
2466
  0%, 100% {
@@ -2917,7 +2781,7 @@ ScreenRecorder.displayName = "ScreenRecorder";
2917
2781
  color: #6b7280;
2918
2782
  }
2919
2783
 
2920
- /* components/Controls/RecordingControls.module.scss */
2784
+ /* components/Preview/VideoPlayer.module.scss */
2921
2785
  @keyframes pulse {
2922
2786
  0%, 100% {
2923
2787
  opacity: 1;
@@ -2974,126 +2838,75 @@ ScreenRecorder.displayName = "ScreenRecorder";
2974
2838
  opacity: 1;
2975
2839
  }
2976
2840
  }
2977
- .RecordingControls_controls__aqrrv {
2978
- position: fixed;
2979
- display: flex;
2980
- align-items: center;
2981
- justify-content: center;
2982
- gap: 0.75rem;
2983
- padding: 0.625rem 1rem;
2984
- border-radius: 9999px;
2985
- background-color: white;
2986
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
2987
- border: 1px solid #e5e7eb;
2988
- animation: slide-up 300ms ease-out;
2989
- }
2990
- .dark .RecordingControls_controls__aqrrv {
2991
- background-color: #1f2937;
2992
- border-color: #374151;
2993
- }
2994
-
2995
- .RecordingControls_topLeft__aqrrv {
2996
- top: 1rem;
2997
- left: 1rem;
2998
- }
2999
-
3000
- .RecordingControls_topRight__aqrrv {
3001
- top: 1rem;
3002
- right: 1rem;
2841
+ .VideoPlayer_container__4wok5 {
2842
+ position: relative;
2843
+ background-color: black;
2844
+ border-radius: 0.5rem;
2845
+ overflow: hidden;
3003
2846
  }
3004
2847
 
3005
- .RecordingControls_bottomLeft__aqrrv {
3006
- bottom: 1rem;
3007
- left: 1rem;
2848
+ .VideoPlayer_video__4wok5 {
2849
+ width: 100%;
2850
+ height: auto;
3008
2851
  }
3009
2852
 
3010
- .RecordingControls_bottomRight__aqrrv {
3011
- bottom: 1rem;
3012
- right: 1rem;
2853
+ .VideoPlayer_controlsOverlay__4wok5 {
2854
+ position: absolute;
2855
+ bottom: 0;
2856
+ left: 0;
2857
+ right: 0;
2858
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
2859
+ padding: 0.75rem;
3013
2860
  }
3014
2861
 
3015
- .RecordingControls_statusSection__aqrrv {
2862
+ .VideoPlayer_progressWrapper__4wok5 {
3016
2863
  display: flex;
3017
2864
  align-items: center;
3018
2865
  justify-content: center;
3019
2866
  gap: 0.5rem;
2867
+ margin-bottom: 0.5rem;
3020
2868
  }
3021
2869
 
3022
- .RecordingControls_statusIndicator__aqrrv {
3023
- display: flex;
3024
- align-items: center;
3025
- justify-content: center;
3026
- gap: 0.375rem;
3027
- }
3028
-
3029
- .RecordingControls_statusRecording__aqrrv {
3030
- color: #ef4444;
3031
- }
3032
-
3033
- .RecordingControls_statusPaused__aqrrv {
3034
- color: #f59e0b;
2870
+ .VideoPlayer_progressSlider__4wok5 {
2871
+ flex: 1;
2872
+ height: 0.25rem;
2873
+ border-radius: 9999px;
2874
+ -webkit-appearance: none;
2875
+ -moz-appearance: none;
2876
+ appearance: none;
2877
+ cursor: pointer;
2878
+ background-color: rgba(255, 255, 255, 0.3);
3035
2879
  }
3036
-
3037
- .RecordingControls_recordingIcon__aqrrv {
2880
+ .VideoPlayer_progressSlider__4wok5::-webkit-slider-thumb {
2881
+ -webkit-appearance: none;
2882
+ appearance: none;
3038
2883
  width: 0.75rem;
3039
2884
  height: 0.75rem;
3040
- animation: pulse-record 1s ease-in-out infinite;
2885
+ border-radius: 9999px;
2886
+ background-color: white;
3041
2887
  }
3042
-
3043
- .RecordingControls_pauseIconSmall__aqrrv {
2888
+ .VideoPlayer_progressSlider__4wok5::-moz-range-thumb {
3044
2889
  width: 0.75rem;
3045
2890
  height: 0.75rem;
2891
+ border-radius: 9999px;
2892
+ background-color: white;
2893
+ border: none;
3046
2894
  }
3047
2895
 
3048
- .RecordingControls_statusLabel__aqrrv {
3049
- font-size: 0.75rem;
3050
- line-height: 1.5;
3051
- font-weight: 600;
3052
- text-transform: uppercase;
2896
+ .VideoPlayer_bottomControls__4wok5 {
2897
+ display: flex;
2898
+ align-items: center;
2899
+ justify-content: space-between;
3053
2900
  }
3054
2901
 
3055
- .RecordingControls_buttonGroup__aqrrv {
2902
+ .VideoPlayer_leftControls__4wok5 {
3056
2903
  display: flex;
3057
2904
  align-items: center;
3058
2905
  justify-content: center;
3059
- gap: 0.25rem;
3060
- margin-left: 0.5rem;
3061
- }
3062
-
3063
- .RecordingControls_controlButton__aqrrv {
3064
- -webkit-appearance: none;
3065
- -moz-appearance: none;
3066
- appearance: none;
3067
- background: none;
3068
- border: none;
3069
- padding: 0;
3070
- margin: 0;
3071
- font: inherit;
3072
- color: inherit;
3073
- cursor: pointer;
3074
- }
3075
- .RecordingControls_controlButton__aqrrv:disabled {
3076
- cursor: not-allowed;
3077
- }
3078
- .RecordingControls_controlButton__aqrrv {
3079
- padding: 0.5rem;
3080
- border-radius: 9999px;
3081
- transition-property: color, background-color, border-color;
3082
- transition-duration: 200ms;
3083
- transition-timing-function: ease-out;
3084
- }
3085
- .RecordingControls_controlButton__aqrrv:hover:not(:disabled) {
3086
- background-color: #f3f4f6;
3087
- }
3088
- .RecordingControls_controlButton__aqrrv:focus {
3089
- outline: none;
3090
- box-shadow: 0 0 0 2px white, 0 0 0 4px #3b82f6;
3091
- }
3092
- .dark .RecordingControls_controlButton__aqrrv:hover:not(:disabled) {
3093
- background-color: #374151;
2906
+ gap: 0.5rem;
3094
2907
  }
3095
2908
 
3096
- .RecordingControls_stopButton__aqrrv {
2909
+ .VideoPlayer_playButton__4wok5 {
3097
2910
  -webkit-appearance: none;
3098
2911
  -moz-appearance: none;
3099
2912
  appearance: none;
@@ -3105,43 +2918,36 @@ ScreenRecorder.displayName = "ScreenRecorder";
3105
2918
  color: inherit;
3106
2919
  cursor: pointer;
3107
2920
  }
3108
- .RecordingControls_stopButton__aqrrv:disabled {
2921
+ .VideoPlayer_playButton__4wok5:disabled {
3109
2922
  cursor: not-allowed;
3110
2923
  }
3111
- .RecordingControls_stopButton__aqrrv {
3112
- padding: 0.5rem;
2924
+ .VideoPlayer_playButton__4wok5 {
2925
+ padding: 0.375rem;
3113
2926
  border-radius: 9999px;
3114
2927
  transition-property: color, background-color, border-color;
3115
2928
  transition-duration: 200ms;
3116
2929
  transition-timing-function: ease-out;
3117
2930
  }
3118
- .RecordingControls_stopButton__aqrrv:hover:not(:disabled) {
3119
- background-color: #fee2e2;
2931
+ .VideoPlayer_playButton__4wok5:hover {
2932
+ background-color: rgba(255, 255, 255, 0.2);
3120
2933
  }
3121
- .RecordingControls_stopButton__aqrrv:focus {
2934
+ .VideoPlayer_playButton__4wok5:focus {
3122
2935
  outline: none;
3123
- box-shadow: 0 0 0 2px white, 0 0 0 4px #ef4444;
3124
- }
3125
- .dark .RecordingControls_stopButton__aqrrv:hover:not(:disabled) {
3126
- background-color: rgba(127, 29, 29, 0.3);
2936
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);
3127
2937
  }
3128
2938
 
3129
- .RecordingControls_buttonIcon__aqrrv {
2939
+ .VideoPlayer_playIcon__4wok5 {
3130
2940
  width: 1rem;
3131
2941
  height: 1rem;
3132
- color: #4b5563;
3133
- }
3134
- .dark .RecordingControls_buttonIcon__aqrrv {
3135
- color: #d1d5db;
2942
+ color: white;
3136
2943
  }
3137
2944
 
3138
- .RecordingControls_stopIcon__aqrrv {
3139
- width: 1rem;
3140
- height: 1rem;
3141
- color: #dc2626;
3142
- }
3143
- .dark .RecordingControls_stopIcon__aqrrv {
3144
- color: #f87171;
2945
+ .VideoPlayer_timeDisplay__4wok5 {
2946
+ color: rgba(255, 255, 255, 0.8);
2947
+ font-size: 0.75rem;
2948
+ line-height: 1.5;
2949
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
2950
+ font-variant-numeric: tabular-nums;
3145
2951
  }
3146
2952
 
3147
2953
  /* ScreenRecorder.module.scss */
@@ -3226,7 +3032,7 @@ ScreenRecorder.displayName = "ScreenRecorder";
3226
3032
  opacity: 0.75;
3227
3033
  }
3228
3034
 
3229
- /* components/Preview/VideoPlayer.module.scss */
3035
+ /* components/Trigger/Trigger.module.scss */
3230
3036
  @keyframes pulse {
3231
3037
  0%, 100% {
3232
3038
  opacity: 1;
@@ -3283,75 +3089,229 @@ ScreenRecorder.displayName = "ScreenRecorder";
3283
3089
  opacity: 1;
3284
3090
  }
3285
3091
  }
3286
- .VideoPlayer_container__4wok5 {
3287
- position: relative;
3288
- background-color: black;
3289
- border-radius: 0.5rem;
3290
- overflow: hidden;
3092
+ .Trigger_trigger__dtqfb {
3093
+ -webkit-appearance: none;
3094
+ -moz-appearance: none;
3095
+ appearance: none;
3096
+ background: none;
3097
+ border: none;
3098
+ padding: 0;
3099
+ margin: 0;
3100
+ font: inherit;
3101
+ color: inherit;
3102
+ cursor: pointer;
3103
+ }
3104
+ .Trigger_trigger__dtqfb:disabled {
3105
+ cursor: not-allowed;
3106
+ }
3107
+ .Trigger_trigger__dtqfb {
3108
+ position: fixed;
3109
+ display: flex;
3110
+ align-items: center;
3111
+ justify-content: center;
3112
+ gap: 0.5rem;
3113
+ padding: 0.625rem 1rem;
3114
+ border-radius: 9999px;
3115
+ font-weight: 500;
3116
+ font-size: 0.875rem;
3117
+ line-height: 1.5;
3118
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
3119
+ background-color: #dc2626;
3120
+ color: white;
3121
+ transition-property: all;
3122
+ transition-duration: 200ms;
3123
+ transition-timing-function: ease-out;
3124
+ }
3125
+ .Trigger_trigger__dtqfb:hover:not(:disabled) {
3126
+ background-color: #b91c1c;
3127
+ transform: scale(1.05);
3128
+ }
3129
+ .Trigger_trigger__dtqfb:active:not(:disabled) {
3130
+ background-color: #991b1b;
3131
+ transform: scale(0.95);
3132
+ }
3133
+ .Trigger_trigger__dtqfb:focus {
3134
+ outline: none;
3135
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1), 0 0 0 2px white, 0 0 0 4px #ef4444;
3136
+ }
3137
+ .Trigger_trigger__dtqfb:disabled {
3138
+ opacity: 0.5;
3139
+ cursor: not-allowed;
3140
+ }
3141
+ .Trigger_trigger__dtqfb:disabled:hover {
3142
+ background-color: #dc2626;
3143
+ transform: none;
3291
3144
  }
3292
3145
 
3293
- .VideoPlayer_video__4wok5 {
3294
- width: 100%;
3295
- height: auto;
3146
+ .Trigger_topLeft__dtqfb {
3147
+ top: 1rem;
3148
+ left: 1rem;
3296
3149
  }
3297
3150
 
3298
- .VideoPlayer_controlsOverlay__4wok5 {
3299
- position: absolute;
3300
- bottom: 0;
3301
- left: 0;
3302
- right: 0;
3303
- background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
3304
- padding: 0.75rem;
3151
+ .Trigger_topRight__dtqfb {
3152
+ top: 1rem;
3153
+ right: 1rem;
3305
3154
  }
3306
3155
 
3307
- .VideoPlayer_progressWrapper__4wok5 {
3156
+ .Trigger_bottomLeft__dtqfb {
3157
+ bottom: 1rem;
3158
+ left: 1rem;
3159
+ }
3160
+
3161
+ .Trigger_bottomRight__dtqfb {
3162
+ bottom: 1rem;
3163
+ right: 1rem;
3164
+ }
3165
+
3166
+ .Trigger_icon__dtqfb {
3167
+ width: 1.25rem;
3168
+ height: 1.25rem;
3169
+ }
3170
+
3171
+ /* components/Controls/RecordingControls.module.scss */
3172
+ @keyframes pulse {
3173
+ 0%, 100% {
3174
+ opacity: 1;
3175
+ }
3176
+ 50% {
3177
+ opacity: 0.5;
3178
+ }
3179
+ }
3180
+ @keyframes pulse-record {
3181
+ 0%, 100% {
3182
+ opacity: 1;
3183
+ }
3184
+ 50% {
3185
+ opacity: 0.5;
3186
+ }
3187
+ }
3188
+ @keyframes spin {
3189
+ from {
3190
+ transform: rotate(0deg);
3191
+ }
3192
+ to {
3193
+ transform: rotate(360deg);
3194
+ }
3195
+ }
3196
+ @keyframes fade-in {
3197
+ 0% {
3198
+ opacity: 0;
3199
+ }
3200
+ 100% {
3201
+ opacity: 1;
3202
+ }
3203
+ }
3204
+ @keyframes slide-up {
3205
+ 0% {
3206
+ transform: translateY(10px);
3207
+ opacity: 0;
3208
+ }
3209
+ 100% {
3210
+ transform: translateY(0);
3211
+ opacity: 1;
3212
+ }
3213
+ }
3214
+ @keyframes countdown-scale {
3215
+ 0% {
3216
+ transform: scale(0.5);
3217
+ opacity: 0;
3218
+ }
3219
+ 50% {
3220
+ transform: scale(1.2);
3221
+ opacity: 1;
3222
+ }
3223
+ 100% {
3224
+ transform: scale(1);
3225
+ opacity: 1;
3226
+ }
3227
+ }
3228
+ .RecordingControls_controls__aqrrv {
3229
+ position: fixed;
3230
+ display: flex;
3231
+ align-items: center;
3232
+ justify-content: center;
3233
+ gap: 0.75rem;
3234
+ padding: 0.625rem 1rem;
3235
+ border-radius: 9999px;
3236
+ background-color: white;
3237
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
3238
+ border: 1px solid #e5e7eb;
3239
+ animation: slide-up 300ms ease-out;
3240
+ }
3241
+ .dark .RecordingControls_controls__aqrrv {
3242
+ background-color: #1f2937;
3243
+ border-color: #374151;
3244
+ }
3245
+
3246
+ .RecordingControls_topLeft__aqrrv {
3247
+ top: 1rem;
3248
+ left: 1rem;
3249
+ }
3250
+
3251
+ .RecordingControls_topRight__aqrrv {
3252
+ top: 1rem;
3253
+ right: 1rem;
3254
+ }
3255
+
3256
+ .RecordingControls_bottomLeft__aqrrv {
3257
+ bottom: 1rem;
3258
+ left: 1rem;
3259
+ }
3260
+
3261
+ .RecordingControls_bottomRight__aqrrv {
3262
+ bottom: 1rem;
3263
+ right: 1rem;
3264
+ }
3265
+
3266
+ .RecordingControls_statusSection__aqrrv {
3308
3267
  display: flex;
3309
3268
  align-items: center;
3310
3269
  justify-content: center;
3311
3270
  gap: 0.5rem;
3312
- margin-bottom: 0.5rem;
3313
3271
  }
3314
3272
 
3315
- .VideoPlayer_progressSlider__4wok5 {
3316
- flex: 1;
3317
- height: 0.25rem;
3318
- border-radius: 9999px;
3319
- -webkit-appearance: none;
3320
- -moz-appearance: none;
3321
- appearance: none;
3322
- cursor: pointer;
3323
- background-color: rgba(255, 255, 255, 0.3);
3273
+ .RecordingControls_statusIndicator__aqrrv {
3274
+ display: flex;
3275
+ align-items: center;
3276
+ justify-content: center;
3277
+ gap: 0.375rem;
3324
3278
  }
3325
- .VideoPlayer_progressSlider__4wok5::-webkit-slider-thumb {
3326
- -webkit-appearance: none;
3327
- appearance: none;
3279
+
3280
+ .RecordingControls_statusRecording__aqrrv {
3281
+ color: #ef4444;
3282
+ }
3283
+
3284
+ .RecordingControls_statusPaused__aqrrv {
3285
+ color: #f59e0b;
3286
+ }
3287
+
3288
+ .RecordingControls_recordingIcon__aqrrv {
3328
3289
  width: 0.75rem;
3329
3290
  height: 0.75rem;
3330
- border-radius: 9999px;
3331
- background-color: white;
3291
+ animation: pulse-record 1s ease-in-out infinite;
3332
3292
  }
3333
- .VideoPlayer_progressSlider__4wok5::-moz-range-thumb {
3293
+
3294
+ .RecordingControls_pauseIconSmall__aqrrv {
3334
3295
  width: 0.75rem;
3335
3296
  height: 0.75rem;
3336
- border-radius: 9999px;
3337
- background-color: white;
3338
- border: none;
3339
3297
  }
3340
3298
 
3341
- .VideoPlayer_bottomControls__4wok5 {
3342
- display: flex;
3343
- align-items: center;
3344
- justify-content: space-between;
3299
+ .RecordingControls_statusLabel__aqrrv {
3300
+ font-size: 0.75rem;
3301
+ line-height: 1.5;
3302
+ font-weight: 600;
3303
+ text-transform: uppercase;
3345
3304
  }
3346
3305
 
3347
- .VideoPlayer_leftControls__4wok5 {
3306
+ .RecordingControls_buttonGroup__aqrrv {
3348
3307
  display: flex;
3349
3308
  align-items: center;
3350
3309
  justify-content: center;
3351
- gap: 0.5rem;
3310
+ gap: 0.25rem;
3311
+ margin-left: 0.5rem;
3352
3312
  }
3353
3313
 
3354
- .VideoPlayer_playButton__4wok5 {
3314
+ .RecordingControls_controlButton__aqrrv {
3355
3315
  -webkit-appearance: none;
3356
3316
  -moz-appearance: none;
3357
3317
  appearance: none;
@@ -3363,36 +3323,76 @@ ScreenRecorder.displayName = "ScreenRecorder";
3363
3323
  color: inherit;
3364
3324
  cursor: pointer;
3365
3325
  }
3366
- .VideoPlayer_playButton__4wok5:disabled {
3326
+ .RecordingControls_controlButton__aqrrv:disabled {
3367
3327
  cursor: not-allowed;
3368
3328
  }
3369
- .VideoPlayer_playButton__4wok5 {
3370
- padding: 0.375rem;
3329
+ .RecordingControls_controlButton__aqrrv {
3330
+ padding: 0.5rem;
3371
3331
  border-radius: 9999px;
3372
3332
  transition-property: color, background-color, border-color;
3373
3333
  transition-duration: 200ms;
3374
3334
  transition-timing-function: ease-out;
3375
3335
  }
3376
- .VideoPlayer_playButton__4wok5:hover {
3377
- background-color: rgba(255, 255, 255, 0.2);
3336
+ .RecordingControls_controlButton__aqrrv:hover:not(:disabled) {
3337
+ background-color: #f3f4f6;
3378
3338
  }
3379
- .VideoPlayer_playButton__4wok5:focus {
3339
+ .RecordingControls_controlButton__aqrrv:focus {
3380
3340
  outline: none;
3381
- box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5);
3341
+ box-shadow: 0 0 0 2px white, 0 0 0 4px #3b82f6;
3342
+ }
3343
+ .dark .RecordingControls_controlButton__aqrrv:hover:not(:disabled) {
3344
+ background-color: #374151;
3382
3345
  }
3383
3346
 
3384
- .VideoPlayer_playIcon__4wok5 {
3347
+ .RecordingControls_stopButton__aqrrv {
3348
+ -webkit-appearance: none;
3349
+ -moz-appearance: none;
3350
+ appearance: none;
3351
+ background: none;
3352
+ border: none;
3353
+ padding: 0;
3354
+ margin: 0;
3355
+ font: inherit;
3356
+ color: inherit;
3357
+ cursor: pointer;
3358
+ }
3359
+ .RecordingControls_stopButton__aqrrv:disabled {
3360
+ cursor: not-allowed;
3361
+ }
3362
+ .RecordingControls_stopButton__aqrrv {
3363
+ padding: 0.5rem;
3364
+ border-radius: 9999px;
3365
+ transition-property: color, background-color, border-color;
3366
+ transition-duration: 200ms;
3367
+ transition-timing-function: ease-out;
3368
+ }
3369
+ .RecordingControls_stopButton__aqrrv:hover:not(:disabled) {
3370
+ background-color: #fee2e2;
3371
+ }
3372
+ .RecordingControls_stopButton__aqrrv:focus {
3373
+ outline: none;
3374
+ box-shadow: 0 0 0 2px white, 0 0 0 4px #ef4444;
3375
+ }
3376
+ .dark .RecordingControls_stopButton__aqrrv:hover:not(:disabled) {
3377
+ background-color: rgba(127, 29, 29, 0.3);
3378
+ }
3379
+
3380
+ .RecordingControls_buttonIcon__aqrrv {
3385
3381
  width: 1rem;
3386
3382
  height: 1rem;
3387
- color: white;
3383
+ color: #4b5563;
3384
+ }
3385
+ .dark .RecordingControls_buttonIcon__aqrrv {
3386
+ color: #d1d5db;
3388
3387
  }
3389
3388
 
3390
- .VideoPlayer_timeDisplay__4wok5 {
3391
- color: rgba(255, 255, 255, 0.8);
3392
- font-size: 0.75rem;
3393
- line-height: 1.5;
3394
- font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
3395
- font-variant-numeric: tabular-nums;
3389
+ .RecordingControls_stopIcon__aqrrv {
3390
+ width: 1rem;
3391
+ height: 1rem;
3392
+ color: #dc2626;
3393
+ }
3394
+ .dark .RecordingControls_stopIcon__aqrrv {
3395
+ color: #f87171;
3396
3396
  }
3397
3397
 
3398
3398
  /* components/Preview/PreviewModal.module.scss */