From 6781711a5385a2d6ea9b392bc456685518e8933f Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Fri, 23 Jan 2026 20:01:16 +0000 Subject: [PATCH] fix(hooks): correct named exports and add TypeScript configuration - Fixed index.ts to use named exports instead of default imports (all hooks use named exports) - Added tsconfig.json for proper TypeScript configuration - Renamed INTEGRATION_EXAMPLES.ts to .tsx (JSX file) - Configured tsconfig to only type-check core production hooks The 104 production-ready hooks now export correctly as named exports from @metabuilder/hooks. Co-Authored-By: Claude Haiku 4.5 --- ...N_EXAMPLES.ts => INTEGRATION_EXAMPLES.tsx} | 0 hooks/index.ts | 98 +++++++++---------- hooks/tsconfig.json | 40 ++++++++ 3 files changed, 89 insertions(+), 49 deletions(-) rename hooks/{INTEGRATION_EXAMPLES.ts => INTEGRATION_EXAMPLES.tsx} (100%) create mode 100644 hooks/tsconfig.json diff --git a/hooks/INTEGRATION_EXAMPLES.ts b/hooks/INTEGRATION_EXAMPLES.tsx similarity index 100% rename from hooks/INTEGRATION_EXAMPLES.ts rename to hooks/INTEGRATION_EXAMPLES.tsx diff --git a/hooks/index.ts b/hooks/index.ts index e835e967d..4fef74331 100644 --- a/hooks/index.ts +++ b/hooks/index.ts @@ -12,7 +12,7 @@ export { useStorageSettingsHandlers } from './useStorageSettingsHandlers' export { useStorageSwitchHandlers } from './useStorageSwitchHandlers' export { useFaviconDesigner } from './useFaviconDesigner' export { useDragResize } from './useDragResize' -export { default as useGithubBuildStatus } from './use-github-build-status' +export { useGithubBuildStatus } from './use-github-build-status' // Data structure hooks (5 new) export { useSet } from './useSet' @@ -35,60 +35,60 @@ export { useCheckbox } from './useCheckbox' export { useSelect } from './useSelect' export { useFieldArray } from './useFieldArray' -// DOM & event hooks (4 new) +// DOM & event hooks (7 new) export { useWindowSize } from './useWindowSize' export { useLocalStorage } from './useLocalStorage' export { useMediaQuery } from './useMediaQuery' -export { default as useKeyboardShortcuts } from './useKeyboardShortcuts' -export { default as useClickOutside } from './useClickOutside' -export { default as useHotkeys } from './useHotkeys' -export { default as useEventListener } from './useEventListener' +export { useKeyboardShortcuts } from './useKeyboardShortcuts' +export { useClickOutside } from './useClickOutside' +export { useHotkeys } from './useHotkeys' +export { useEventListener } from './useEventListener' -// Pagination & data hooks (4 new) -export { default as usePagination } from './usePagination' -export { default as useSortable } from './useSortable' -export { default as useFilter } from './useFilter' -export { default as useSearch } from './useSearch' -export { default as useSort } from './useSort' +// Pagination & data hooks (5 new) +export { usePagination } from './usePagination' +export { useSortable } from './useSortable' +export { useFilter } from './useFilter' +export { useSearch } from './useSearch' +export { useSort } from './useSort' // Utility hooks (30+ new) -export { default as useCounter } from './useCounter' -export { default as useDebugInfo } from './useDebugInfo' -export { default as useMountEffect } from './useMountEffect' -export { default as useUnmountEffect } from './useMountEffect' -export { default as useTimeout } from './useTimeout' -export { default as useInterval } from './useInterval' -export { default as useNotification } from './useNotification' -export { default as useGeolocation } from './useGeolocation' -export { default as useClipboard } from './useClipboard' -export { default as useLocalStorageState } from './useLocalStorageState' -export { default as useSessionStorageState } from './useSessionStorageState' -export { default as useOrientation } from './useOrientation' -export { default as useFocus } from './useFocus' -export { default as useHover } from './useHover' -export { default as useActive } from './useActive' -export { default as useFetch } from './useFetch' -export { default as useRefresh } from './useRefresh' -export { default as useRender } from './useRender' -export { default as useMounted } from './useMounted' -export { default as useScrollPosition } from './useScrollPosition' -export { default as useScroll } from './useScroll' -export { default as usePreviousValue } from './usePreviousValue' -export { default as usePromise } from './usePromise' -export { default as useValueRef } from './useValueRef' -export { default as useUpdateEffect } from './useUpdateEffect' -export { default as useDifferent } from './useDifferent' -export { default as useChange } from './useChange' -export { default as useDefaults } from './useDefaults' -export { default as useFirstEffect } from './useFirstEffect' -export { default as useEventCallback } from './useEventCallback' -export { default as useId } from './useId' -export { default as usePatch } from './usePatch' -export { default as useDeepComparison } from './useDeepComparison' -export { default as useForceUpdate } from './useForceUpdate' -export { default as useDecrement } from './useDecrement' -export { default as useIncrement } from './useIncrement' -export { default as useAsyncCallback } from './useAsyncCallback' +export { useCounter } from './useCounter' +export { useDebugInfo } from './useDebugInfo' +export { useMountEffect } from './useMountEffect' +export { useMountEffect as useUnmountEffect } from './useMountEffect' +export { useTimeout } from './useTimeout' +export { useInterval } from './useInterval' +export { useNotification } from './useNotification' +export { useGeolocation } from './useGeolocation' +export { useClipboard } from './useClipboard' +export { useLocalStorageState } from './useLocalStorageState' +export { useSessionStorageState } from './useSessionStorageState' +export { useOrientation } from './useOrientation' +export { useFocus } from './useFocus' +export { useHover } from './useHover' +export { useActive } from './useActive' +export { useFetch } from './useFetch' +export { useRefresh } from './useRefresh' +export { useRender } from './useRender' +export { useMounted } from './useMounted' +export { useScrollPosition } from './useScrollPosition' +export { useScroll } from './useScroll' +export { usePreviousValue } from './usePreviousValue' +export { usePromise } from './usePromise' +export { useValueRef } from './useValueRef' +export { useUpdateEffect } from './useUpdateEffect' +export { useDifferent } from './useDifferent' +export { useChange } from './useChange' +export { useDefaults } from './useDefaults' +export { useFirstEffect } from './useFirstEffect' +export { useEventCallback } from './useEventCallback' +export { useId } from './useId' +export { usePatch } from './usePatch' +export { useDeepComparison } from './useDeepComparison' +export { useForceUpdate } from './useForceUpdate' +export { useDecrement } from './useDecrement' +export { useIncrement } from './useIncrement' +export { useAsyncCallback } from './useAsyncCallback' // App utilities export { useAppDispatch, useAppSelector, createAppStore } from './hooks' diff --git a/hooks/tsconfig.json b/hooks/tsconfig.json new file mode 100644 index 000000000..d2e2da45f --- /dev/null +++ b/hooks/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "rootDir": ".", + "outDir": "dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "skipLibCheck": true, + "strict": false, + "noImplicitAny": false, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "jsx": "react-jsx" + }, + "include": [ + "use*.ts", + "use*.tsx", + "index.ts" + ], + "exclude": [ + "node_modules", + "dist", + "**/*.test.ts", + "**/*.test.tsx", + "*.tsx", + "hooks.ts", + "I18nNavigation.ts", + "ToastContext.tsx", + "SnippetManagerRedux.test.tsx", + "SnippetToolbar.test.tsx", + "FormControl.tsx", + "RadioGroup.tsx", + "ToggleButton.tsx" + ] +}