@teo-garcia/react-shared 1.2.1 → 1.3.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 +138 -136
- package/dist/components/client-only/client-only.d.ts +11 -0
- package/dist/components/client-only/client-only.d.ts.map +1 -0
- package/dist/components/client-only/client-only.js +17 -0
- package/dist/components/client-only/index.d.ts +2 -0
- package/dist/components/client-only/index.d.ts.map +1 -0
- package/dist/components/client-only/index.js +1 -0
- package/dist/components/dev-panel/dev-panel-features.d.ts +10 -0
- package/dist/components/dev-panel/dev-panel-features.d.ts.map +1 -0
- package/dist/components/dev-panel/dev-panel-features.js +29 -0
- package/dist/components/dev-panel/dev-panel.d.ts +15 -17
- package/dist/components/dev-panel/dev-panel.d.ts.map +1 -1
- package/dist/components/dev-panel/dev-panel.js +619 -99
- package/dist/components/dev-panel/index.d.ts +1 -1
- package/dist/components/dev-panel/index.d.ts.map +1 -1
- package/dist/components/dev-panel/index.js +1 -1
- package/dist/components/dev-panel/use-dev-panel-diagnostics.d.ts +39 -0
- package/dist/components/dev-panel/use-dev-panel-diagnostics.d.ts.map +1 -0
- package/dist/components/dev-panel/use-dev-panel-diagnostics.js +384 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/separator/separator.d.ts +4 -4
- package/dist/components/separator/separator.d.ts.map +1 -1
- package/dist/components/separator/separator.js +18 -6
- package/dist/components/skeleton/skeleton.d.ts +1 -1
- package/dist/components/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton/skeleton.js +19 -4
- package/dist/components/skip-link/skip-link.d.ts.map +1 -1
- package/dist/components/skip-link/skip-link.js +8 -5
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/use-breakpoint.d.ts +9 -0
- package/dist/hooks/use-breakpoint.d.ts.map +1 -0
- package/dist/hooks/use-breakpoint.js +47 -0
- package/dist/index.d.ts +2 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -7
- package/package.json +11 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export const DEFAULT_BREAKPOINTS = {
|
|
3
|
+
sm: 640,
|
|
4
|
+
md: 768,
|
|
5
|
+
lg: 1024,
|
|
6
|
+
xl: 1280,
|
|
7
|
+
'2xl': 1536,
|
|
8
|
+
};
|
|
9
|
+
export function resolveBreakpoint(width, breakpoints) {
|
|
10
|
+
const sorted = Object.entries(breakpoints).sort(([, a], [, b]) => b - a);
|
|
11
|
+
for (const [name, minWidth] of sorted) {
|
|
12
|
+
if (width >= minWidth)
|
|
13
|
+
return name;
|
|
14
|
+
}
|
|
15
|
+
return 'xs';
|
|
16
|
+
}
|
|
17
|
+
export function useBreakpoint(breakpoints = DEFAULT_BREAKPOINTS) {
|
|
18
|
+
const [viewport, setViewport] = useState(() => {
|
|
19
|
+
if (typeof window === 'undefined') {
|
|
20
|
+
return { width: 0, height: 0 };
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
width: window.innerWidth,
|
|
24
|
+
height: window.innerHeight,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (typeof window === 'undefined')
|
|
29
|
+
return;
|
|
30
|
+
function updateViewport() {
|
|
31
|
+
setViewport({
|
|
32
|
+
width: window.innerWidth,
|
|
33
|
+
height: window.innerHeight,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
updateViewport();
|
|
37
|
+
window.addEventListener('resize', updateViewport);
|
|
38
|
+
return () => {
|
|
39
|
+
window.removeEventListener('resize', updateViewport);
|
|
40
|
+
};
|
|
41
|
+
}, []);
|
|
42
|
+
return {
|
|
43
|
+
breakpoint: resolveBreakpoint(viewport.width, breakpoints),
|
|
44
|
+
height: viewport.height,
|
|
45
|
+
width: viewport.width,
|
|
46
|
+
};
|
|
47
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @teo-garcia/react-shared
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Exports:
|
|
7
|
-
* - Hooks: useDebounce, useIsomorphicLayoutEffect, useLocalStorage, useMediaQuery, useOnClickOutside, usePrevious
|
|
8
|
-
* - Components: ErrorBoundary
|
|
9
|
-
* - Utils: cn (clsx + tailwind-merge)
|
|
10
|
-
* - Test utilities: createWrapper, renderWithProviders (import from react-shared/test-utils)
|
|
4
|
+
* Self-contained React hooks, utilities, components, and test helpers for the
|
|
5
|
+
* teo-garcia template portfolio.
|
|
11
6
|
*
|
|
12
7
|
* @packageDocumentation
|
|
13
8
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @teo-garcia/react-shared
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Exports:
|
|
7
|
-
* - Hooks: useDebounce, useIsomorphicLayoutEffect, useLocalStorage, useMediaQuery, useOnClickOutside, usePrevious
|
|
8
|
-
* - Components: ErrorBoundary
|
|
9
|
-
* - Utils: cn (clsx + tailwind-merge)
|
|
10
|
-
* - Test utilities: createWrapper, renderWithProviders (import from react-shared/test-utils)
|
|
4
|
+
* Self-contained React hooks, utilities, components, and test helpers for the
|
|
5
|
+
* teo-garcia template portfolio.
|
|
11
6
|
*
|
|
12
7
|
* @packageDocumentation
|
|
13
8
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teo-garcia/react-shared",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Shared React hooks, utilities, and test helpers for the teo-garcia template portfolio",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,6 +46,11 @@
|
|
|
46
46
|
"default": "./dist/components/aspect-ratio/index.js",
|
|
47
47
|
"types": "./dist/components/aspect-ratio/index.d.ts"
|
|
48
48
|
},
|
|
49
|
+
"./components/client-only": {
|
|
50
|
+
"import": "./dist/components/client-only/index.js",
|
|
51
|
+
"default": "./dist/components/client-only/index.js",
|
|
52
|
+
"types": "./dist/components/client-only/index.d.ts"
|
|
53
|
+
},
|
|
49
54
|
"./components/debug-json": {
|
|
50
55
|
"import": "./dist/components/debug-json/index.js",
|
|
51
56
|
"default": "./dist/components/debug-json/index.js",
|
|
@@ -106,6 +111,11 @@
|
|
|
106
111
|
"default": "./dist/hooks/use-copy-to-clipboard.js",
|
|
107
112
|
"types": "./dist/hooks/use-copy-to-clipboard.d.ts"
|
|
108
113
|
},
|
|
114
|
+
"./hooks/use-breakpoint": {
|
|
115
|
+
"import": "./dist/hooks/use-breakpoint.js",
|
|
116
|
+
"default": "./dist/hooks/use-breakpoint.js",
|
|
117
|
+
"types": "./dist/hooks/use-breakpoint.d.ts"
|
|
118
|
+
},
|
|
109
119
|
"./hooks/use-event-listener": {
|
|
110
120
|
"import": "./dist/hooks/use-event-listener.js",
|
|
111
121
|
"default": "./dist/hooks/use-event-listener.js",
|