@vygruppen/spor-react 9.10.1 → 9.11.1
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +12 -0
- package/dist/{CountryCodeSelect-CO6P2KH4.mjs → CountryCodeSelect-KU4HQMG3.mjs} +1 -1
- package/dist/{chunk-QOPSLFKS.mjs → chunk-PA6EOPOZ.mjs} +2815 -2524
- package/dist/index.d.mts +211 -184
- package/dist/index.d.ts +211 -184
- package/dist/index.js +4123 -3792
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/src/index.tsx +1 -0
- package/src/loader/ColorInlineLoader.tsx +10 -1
- package/src/loader/ColorSpinner.tsx +12 -2
- package/src/loader/ContentLoader.tsx +13 -2
- package/src/loader/DarkInlineLoader.tsx +13 -2
- package/src/loader/LightFullScreenLoader.tsx +10 -1
- package/src/loader/LightInlineLoader.tsx +13 -2
- package/src/logo/VyLogo.tsx +11 -90
- package/src/logo/VyLogoDefault.tsx +104 -0
- package/src/logo/VyLogoPride.tsx +164 -0
- package/src/logo/index.tsx +2 -0
- package/src/pride/PrideProvider.tsx +58 -0
- package/src/pride/TogglePride.tsx +23 -0
- package/src/pride/index.tsx +2 -0
- package/src/provider/SporProvider.tsx +7 -4
- package/src/provider/index.tsx +1 -0
- package/types.d.ts +3 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
// PrideContext.tsx
|
2
|
+
import React, { createContext, useContext, useEffect, useState } from "react";
|
3
|
+
|
4
|
+
interface PrideContextProps {
|
5
|
+
isPride: boolean;
|
6
|
+
togglePride: () => void;
|
7
|
+
}
|
8
|
+
|
9
|
+
const PrideContext = createContext<PrideContextProps | undefined>(undefined);
|
10
|
+
|
11
|
+
export const PrideProvider: React.FC<React.PropsWithChildren<{}>> = ({
|
12
|
+
children,
|
13
|
+
}) => {
|
14
|
+
const isBrowser = typeof window !== "undefined";
|
15
|
+
|
16
|
+
const key = "spor__isPride";
|
17
|
+
|
18
|
+
const [isPride, setIsPride] = useState<boolean>(() => {
|
19
|
+
if (isBrowser) {
|
20
|
+
const savedState = localStorage.getItem(key);
|
21
|
+
return savedState ? JSON.parse(savedState) : true;
|
22
|
+
}
|
23
|
+
return true;
|
24
|
+
});
|
25
|
+
|
26
|
+
const togglePride = () => {
|
27
|
+
setIsPride((prev) => {
|
28
|
+
const newState = !prev;
|
29
|
+
if (isBrowser) {
|
30
|
+
localStorage.setItem(key, JSON.stringify(newState));
|
31
|
+
}
|
32
|
+
return newState;
|
33
|
+
});
|
34
|
+
};
|
35
|
+
|
36
|
+
useEffect(() => {
|
37
|
+
if (isBrowser) {
|
38
|
+
const savedState = localStorage.getItem(key);
|
39
|
+
if (savedState) {
|
40
|
+
setIsPride(JSON.parse(savedState));
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}, [isBrowser]);
|
44
|
+
|
45
|
+
return (
|
46
|
+
<PrideContext.Provider value={{ isPride, togglePride }}>
|
47
|
+
{children}
|
48
|
+
</PrideContext.Provider>
|
49
|
+
);
|
50
|
+
};
|
51
|
+
|
52
|
+
export const usePride = (): PrideContextProps => {
|
53
|
+
const context = useContext(PrideContext);
|
54
|
+
if (context === undefined) {
|
55
|
+
throw new Error("usePride must be used within a PrideProvider");
|
56
|
+
}
|
57
|
+
return context;
|
58
|
+
};
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// TogglePride.tsx
|
2
|
+
import React from "react";
|
3
|
+
import { usePride } from "./PrideProvider";
|
4
|
+
import { FormControl, FormLabel, Switch } from "../input";
|
5
|
+
|
6
|
+
type TogglePrideProps = {
|
7
|
+
label: string;
|
8
|
+
};
|
9
|
+
|
10
|
+
export const TogglePride = ({ label }: TogglePrideProps) => {
|
11
|
+
const { isPride, togglePride } = usePride();
|
12
|
+
|
13
|
+
return (
|
14
|
+
<FormControl display="flex" alignItems="center" gap={3}>
|
15
|
+
<FormLabel margin="0">{label}</FormLabel>
|
16
|
+
<Switch
|
17
|
+
size="sm"
|
18
|
+
onChange={() => togglePride()}
|
19
|
+
defaultChecked={isPride}
|
20
|
+
/>
|
21
|
+
</FormControl>
|
22
|
+
);
|
23
|
+
};
|
@@ -4,6 +4,7 @@ import deepmerge from "deepmerge";
|
|
4
4
|
import React from "react";
|
5
5
|
import { Language, LanguageProvider } from "..";
|
6
6
|
import { Brand, brandTheme, theme as defaultSporTheme, fontFaces } from "../";
|
7
|
+
import { PrideProvider } from "../pride/PrideProvider";
|
7
8
|
|
8
9
|
type SporProviderProps = ChakraProviderProps & {
|
9
10
|
language?: Language;
|
@@ -59,10 +60,12 @@ export const SporProvider = ({
|
|
59
60
|
|
60
61
|
return (
|
61
62
|
<LanguageProvider language={language}>
|
62
|
-
<
|
63
|
-
<
|
64
|
-
|
65
|
-
|
63
|
+
<PrideProvider>
|
64
|
+
<ChakraProvider theme={extendedTheme} {...props}>
|
65
|
+
<Global styles={fontFaces} />
|
66
|
+
{children}
|
67
|
+
</ChakraProvider>
|
68
|
+
</PrideProvider>
|
66
69
|
</LanguageProvider>
|
67
70
|
);
|
68
71
|
};
|
package/src/provider/index.tsx
CHANGED
package/types.d.ts
ADDED