aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/card/card-provider.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/molecules/card/card-provider.tsx')
-rw-r--r--src/components/molecules/card/card-provider.tsx43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/components/molecules/card/card-provider.tsx b/src/components/molecules/card/card-provider.tsx
new file mode 100644
index 0000000..5bcdb49
--- /dev/null
+++ b/src/components/molecules/card/card-provider.tsx
@@ -0,0 +1,43 @@
+import {
+ createContext,
+ type FC,
+ type ReactElement,
+ type ReactNode,
+ useContext,
+} from 'react';
+
+export type CardCoverProviderProps = {
+ children: ReactNode;
+ cover?: ReactElement;
+};
+
+export const CardCoverContext = createContext<ReactElement | null>(null);
+
+export const useCardCover = () => useContext(CardCoverContext);
+
+export const CardCoverProvider: FC<CardCoverProviderProps> = ({
+ children,
+ cover,
+}) => (
+ <CardCoverContext.Provider value={cover ?? null}>
+ {children}
+ </CardCoverContext.Provider>
+);
+
+export type CardFooterMetaProviderProps = {
+ children: ReactNode;
+ meta?: ReactElement;
+};
+
+export const CardFooterMetaContext = createContext<ReactElement | null>(null);
+
+export const useCardFooterMeta = () => useContext(CardFooterMetaContext);
+
+export const CardFooterMetaProvider: FC<CardFooterMetaProviderProps> = ({
+ children,
+ meta,
+}) => (
+ <CardFooterMetaContext.Provider value={meta ?? null}>
+ {children}
+ </CardFooterMetaContext.Provider>
+);