@c-rex/contexts 0.0.6 → 0.1.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@c-rex/contexts",
3
- "version": "0.0.6",
4
- "main": "./src/index.tsx",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
5
  "files": [
6
6
  "src"
7
7
  ],
@@ -9,17 +9,10 @@
9
9
  "access": "public"
10
10
  },
11
11
  "exports": {
12
- ".": {
13
- "types": "./src/index.tsx",
14
- "import": "./src/index.tsx",
15
- "require": "./src/index.tsx",
16
- "default": "./src/index.tsx"
17
- },
18
- "./package.json": "./package.json"
19
- },
20
- "scripts": {
21
- "dev": "echo 'Nothing to build — using raw TypeScript files'",
22
- "build": "echo 'No build needed'"
12
+ "./search": {
13
+ "types": "./src/search.tsx",
14
+ "import": "./src/search.tsx"
15
+ }
23
16
  },
24
17
  "devDependencies": {
25
18
  "@c-rex/eslint-config": "*",
@@ -34,6 +27,8 @@
34
27
  "dependencies": {
35
28
  "next": "^14",
36
29
  "react": "^18",
37
- "react-dom": "^18"
30
+ "react-dom": "^18",
31
+ "@c-rex/core": "*",
32
+ "@c-rex/interfaces": "*"
38
33
  }
39
- }
34
+ }
package/src/search.tsx ADDED
@@ -0,0 +1,56 @@
1
+ import { createContext, useContext, ReactNode, useState } from "react";
2
+
3
+ type SearchContextProps = {
4
+ selectedLanguage: string[];
5
+ availableLanguages: string[];
6
+ selectLanguage: (language: string) => void;
7
+ getSelectedLanguages: () => string[];
8
+ setLanguages: (languages: string[]) => void;
9
+ }
10
+
11
+ const SearchContext = createContext<SearchContextProps | undefined>(undefined);
12
+
13
+ export const SearchProvider = ({
14
+ children,
15
+ }: {
16
+ children: ReactNode;
17
+ }) => {
18
+ const [selectedLanguage, setSelectedLanguage] = useState<string[]>([]);
19
+ const [availableLanguages, setAvailableLanguages] = useState<string[]>([]);
20
+
21
+ const selectLanguage = (language: string) => {
22
+ if (selectedLanguage.includes(language)) {
23
+ setSelectedLanguage(selectedLanguage.filter(l => l !== language));
24
+ } else {
25
+ setSelectedLanguage([...selectedLanguage, language]);
26
+ }
27
+ };
28
+ const getSelectedLanguages = () => {
29
+ return selectedLanguage;
30
+ }
31
+ const setLanguages = (languages: string[]) => {
32
+ setAvailableLanguages(languages);
33
+ }
34
+
35
+ return (
36
+ <SearchContext.Provider value={{
37
+ selectedLanguage,
38
+ availableLanguages,
39
+ selectLanguage,
40
+ getSelectedLanguages,
41
+ setLanguages
42
+ }}>
43
+ <>
44
+ {children}
45
+ </>
46
+ </SearchContext.Provider>
47
+ );
48
+ };
49
+
50
+ export const useSearchContext = () => {
51
+ const context = useContext(SearchContext);
52
+ if (!context) {
53
+ throw new Error("useSearchContext must be used within a SearchProvider");
54
+ }
55
+ return context;
56
+ };
package/src/index.tsx DELETED
@@ -1,32 +0,0 @@
1
- import { createContext, useContext, FC, ReactNode } from "react";
2
-
3
- interface SearchContextProps {
4
- searchValue: string | null;
5
- page: number;
6
- selectedLanguage: string[];
7
- availableLanguages: string[];
8
- }
9
-
10
- const SearchContext = createContext<SearchContextProps | undefined>(undefined);
11
-
12
- export const useSearchContext = () => {
13
- const context = useContext(SearchContext);
14
- if (!context) {
15
- throw new Error("useSearchContext must be used within a SearchProvider");
16
- }
17
- return context;
18
- };
19
-
20
- interface SearchProviderProps {
21
- children: ReactNode;
22
- value: SearchContextProps;
23
- }
24
-
25
- export const SearchProvider: FC<SearchProviderProps> = ({
26
- children,
27
- value,
28
- }) => {
29
- return (
30
- <SearchContext.Provider value={value}>{children}</SearchContext.Provider>
31
- );
32
- };