@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.
Files changed (40) hide show
  1. package/README.md +138 -136
  2. package/dist/components/client-only/client-only.d.ts +11 -0
  3. package/dist/components/client-only/client-only.d.ts.map +1 -0
  4. package/dist/components/client-only/client-only.js +17 -0
  5. package/dist/components/client-only/index.d.ts +2 -0
  6. package/dist/components/client-only/index.d.ts.map +1 -0
  7. package/dist/components/client-only/index.js +1 -0
  8. package/dist/components/dev-panel/dev-panel-features.d.ts +10 -0
  9. package/dist/components/dev-panel/dev-panel-features.d.ts.map +1 -0
  10. package/dist/components/dev-panel/dev-panel-features.js +29 -0
  11. package/dist/components/dev-panel/dev-panel.d.ts +15 -17
  12. package/dist/components/dev-panel/dev-panel.d.ts.map +1 -1
  13. package/dist/components/dev-panel/dev-panel.js +619 -99
  14. package/dist/components/dev-panel/index.d.ts +1 -1
  15. package/dist/components/dev-panel/index.d.ts.map +1 -1
  16. package/dist/components/dev-panel/index.js +1 -1
  17. package/dist/components/dev-panel/use-dev-panel-diagnostics.d.ts +39 -0
  18. package/dist/components/dev-panel/use-dev-panel-diagnostics.d.ts.map +1 -0
  19. package/dist/components/dev-panel/use-dev-panel-diagnostics.js +384 -0
  20. package/dist/components/index.d.ts +1 -0
  21. package/dist/components/index.d.ts.map +1 -1
  22. package/dist/components/index.js +1 -0
  23. package/dist/components/separator/separator.d.ts +4 -4
  24. package/dist/components/separator/separator.d.ts.map +1 -1
  25. package/dist/components/separator/separator.js +18 -6
  26. package/dist/components/skeleton/skeleton.d.ts +1 -1
  27. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  28. package/dist/components/skeleton/skeleton.js +19 -4
  29. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  30. package/dist/components/skip-link/skip-link.js +8 -5
  31. package/dist/hooks/index.d.ts +1 -0
  32. package/dist/hooks/index.d.ts.map +1 -1
  33. package/dist/hooks/index.js +1 -0
  34. package/dist/hooks/use-breakpoint.d.ts +9 -0
  35. package/dist/hooks/use-breakpoint.d.ts.map +1 -0
  36. package/dist/hooks/use-breakpoint.js +47 -0
  37. package/dist/index.d.ts +2 -7
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +2 -7
  40. 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
- * Shared React hooks, utilities, and test helpers for the teo-garcia template portfolio.
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
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
- * Shared React hooks, utilities, and test helpers for the teo-garcia template portfolio.
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.2.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",