@therealtinhtute/baroiplayer 1.0.4 → 1.0.6

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 (55) hide show
  1. package/dist/index.d.ts +38 -1
  2. package/dist/package.json +22 -2
  3. package/dist/src/components/media-player-controls.js +1 -1
  4. package/dist/src/components/media-player-controls.tsx +1 -1
  5. package/dist/src/components/media-player-error.js +2 -2
  6. package/dist/src/components/media-player-error.tsx +2 -2
  7. package/dist/src/components/media-player-fullscreen.js +2 -2
  8. package/dist/src/components/media-player-fullscreen.tsx +2 -2
  9. package/dist/src/components/media-player-play.js +2 -2
  10. package/dist/src/components/media-player-play.tsx +2 -2
  11. package/dist/src/components/media-player-root.js +1 -1
  12. package/dist/src/components/media-player-root.tsx +1 -1
  13. package/dist/src/components/media-player-seek.js +1 -1
  14. package/dist/src/components/media-player-seek.tsx +1 -1
  15. package/dist/src/components/media-player-tooltip.js +1 -1
  16. package/dist/src/components/media-player-tooltip.tsx +1 -1
  17. package/dist/src/components/media-player-volume.js +2 -2
  18. package/dist/src/components/media-player-volume.tsx +3 -3
  19. package/dist/src/components/react-player-wrapper.js +5 -5
  20. package/dist/src/components/react-player-wrapper.tsx +5 -5
  21. package/dist/src/components/ui/button.tsx +49 -0
  22. package/dist/src/components/ui/dropdown-menu.tsx +137 -0
  23. package/dist/src/components/ui/icons.tsx +174 -0
  24. package/dist/src/components/ui/slider.tsx +55 -0
  25. package/dist/src/components/ui/tooltip.tsx +131 -0
  26. package/dist/src/hooks/use-mobile.ts +125 -0
  27. package/dist/src/hooks/use-touch-gestures.js +1 -1
  28. package/dist/src/hooks/use-touch-gestures.ts +1 -1
  29. package/package.json +22 -2
  30. package/src/components/media-player-controls.js +1 -1
  31. package/src/components/media-player-controls.tsx +1 -1
  32. package/src/components/media-player-error.js +2 -2
  33. package/src/components/media-player-error.tsx +2 -2
  34. package/src/components/media-player-fullscreen.js +2 -2
  35. package/src/components/media-player-fullscreen.tsx +2 -2
  36. package/src/components/media-player-play.js +2 -2
  37. package/src/components/media-player-play.tsx +2 -2
  38. package/src/components/media-player-root.js +1 -1
  39. package/src/components/media-player-root.tsx +1 -1
  40. package/src/components/media-player-seek.js +1 -1
  41. package/src/components/media-player-seek.tsx +1 -1
  42. package/src/components/media-player-tooltip.js +1 -1
  43. package/src/components/media-player-tooltip.tsx +1 -1
  44. package/src/components/media-player-volume.js +2 -2
  45. package/src/components/media-player-volume.tsx +3 -3
  46. package/src/components/react-player-wrapper.js +5 -5
  47. package/src/components/react-player-wrapper.tsx +5 -5
  48. package/src/components/ui/button.tsx +49 -0
  49. package/src/components/ui/dropdown-menu.tsx +137 -0
  50. package/src/components/ui/icons.tsx +174 -0
  51. package/src/components/ui/slider.tsx +55 -0
  52. package/src/components/ui/tooltip.tsx +131 -0
  53. package/src/hooks/use-mobile.ts +125 -0
  54. package/src/hooks/use-touch-gestures.js +1 -1
  55. package/src/hooks/use-touch-gestures.ts +1 -1
@@ -0,0 +1,125 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ interface DeviceInfo {
4
+ isMobile: boolean;
5
+ isTablet: boolean;
6
+ isDesktop: boolean;
7
+ userAgent: string;
8
+ screenWidth: number;
9
+ screenHeight: number;
10
+ }
11
+
12
+ export function useDeviceInfo(): DeviceInfo {
13
+ const [deviceInfo, setDeviceInfo] = useState<DeviceInfo>(() => {
14
+ if (typeof window === 'undefined') {
15
+ return {
16
+ isMobile: false,
17
+ isTablet: false,
18
+ isDesktop: true,
19
+ userAgent: '',
20
+ screenWidth: 1920,
21
+ screenHeight: 1080
22
+ };
23
+ }
24
+
25
+ const userAgent = navigator.userAgent;
26
+ const screenWidth = window.innerWidth;
27
+ const screenHeight = window.innerHeight;
28
+
29
+ const isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) && screenWidth < 768;
30
+ const isTablet = /iPad|Android/i.test(userAgent) && screenWidth >= 768 && screenWidth < 1024;
31
+ const isDesktop = !isMobile && !isTablet;
32
+
33
+ return {
34
+ isMobile,
35
+ isTablet,
36
+ isDesktop,
37
+ userAgent,
38
+ screenWidth,
39
+ screenHeight
40
+ };
41
+ });
42
+
43
+ useEffect(() => {
44
+ if (typeof window === 'undefined') return;
45
+
46
+ const handleResize = () => {
47
+ const userAgent = navigator.userAgent;
48
+ const screenWidth = window.innerWidth;
49
+ const screenHeight = window.innerHeight;
50
+
51
+ const isMobile = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent) && screenWidth < 768;
52
+ const isTablet = /iPad|Android/i.test(userAgent) && screenWidth >= 768 && screenWidth < 1024;
53
+ const isDesktop = !isMobile && !isTablet;
54
+
55
+ setDeviceInfo({
56
+ isMobile,
57
+ isTablet,
58
+ isDesktop,
59
+ userAgent,
60
+ screenWidth,
61
+ screenHeight
62
+ });
63
+ };
64
+
65
+ window.addEventListener('resize', handleResize);
66
+ return () => window.removeEventListener('resize', handleResize);
67
+ }, []);
68
+
69
+ return deviceInfo;
70
+ }
71
+
72
+ export function useContainerQuery(): boolean {
73
+ const [isSmall, setIsSmall] = useState(false);
74
+
75
+ useEffect(() => {
76
+ if (typeof window === 'undefined') return;
77
+
78
+ const checkSize = () => {
79
+ setIsSmall(window.innerWidth < 640);
80
+ };
81
+
82
+ checkSize();
83
+ window.addEventListener('resize', checkSize);
84
+ return () => window.removeEventListener('resize', checkSize);
85
+ }, []);
86
+
87
+ return isSmall;
88
+ }
89
+
90
+ export function useMobileOptimizations() {
91
+ const deviceInfo = useDeviceInfo();
92
+ const [isTouch, setIsTouch] = useState(false);
93
+
94
+ useEffect(() => {
95
+ setIsTouch('ontouchstart' in window || navigator.maxTouchPoints > 0);
96
+ }, []);
97
+
98
+ return {
99
+ ...deviceInfo,
100
+ isTouch,
101
+ preferReducedMotion: window.matchMedia('(prefers-reduced-motion: reduce)').matches,
102
+ prefersDarkScheme: window.matchMedia('(prefers-color-scheme: dark)').matches
103
+ };
104
+ }
105
+
106
+ export function useHapticFeedback() {
107
+ const deviceInfo = useDeviceInfo();
108
+
109
+ const triggerHaptic = (type: 'light' | 'medium' | 'heavy' = 'light') => {
110
+ if (!deviceInfo.isMobile || !('vibrate' in navigator)) return;
111
+
112
+ const patterns = {
113
+ light: [10],
114
+ medium: [20],
115
+ heavy: [50]
116
+ };
117
+
118
+ navigator.vibrate(patterns[type]);
119
+ };
120
+
121
+ return {
122
+ triggerHaptic,
123
+ supported: deviceInfo.isMobile && 'vibrate' in navigator
124
+ };
125
+ }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React from "react";
3
- import { useDeviceInfo, useHapticFeedback } from "@rp/ui/hooks/use-mobile";
3
+ import { useDeviceInfo, useHapticFeedback } from "./use-mobile";
4
4
  // Default configuration
5
5
  const defaultConfig = {
6
6
  enabledGestures: ['tap', 'double-tap', 'long-press', 'swipe-left', 'swipe-right', 'swipe-up', 'swipe-down', 'pinch-in', 'pinch-out'],
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
 
3
3
  import * as React from "react"
4
- import { useDeviceInfo, useHapticFeedback } from "@rp/ui/hooks/use-mobile"
4
+ import { useDeviceInfo, useHapticFeedback } from "./use-mobile"
5
5
 
6
6
  // Gesture types
7
7
  export type GestureType =