feat: monorepo

This commit is contained in:
Henry
2024-12-12 14:34:10 +00:00
parent b8eed7a90c
commit 0c8d17dce5
370 changed files with 10280 additions and 39805 deletions

View File

@@ -0,0 +1,26 @@
export type As<
DefaultTag extends React.ElementType,
T1 extends React.ElementType,
T2 extends React.ElementType = T1,
T3 extends React.ElementType = T1,
T4 extends React.ElementType = T1,
T5 extends React.ElementType = T1,
> =
| (React.ComponentPropsWithRef<DefaultTag> & {
as?: DefaultTag;
})
| (React.ComponentPropsWithRef<T1> & {
as: T1;
})
| (React.ComponentPropsWithRef<T2> & {
as: T2;
})
| (React.ComponentPropsWithRef<T3> & {
as: T3;
})
| (React.ComponentPropsWithRef<T4> & {
as: T4;
})
| (React.ComponentPropsWithRef<T5> & {
as: T5;
});

View File

@@ -0,0 +1,7 @@
export const copyTextToClipboard = async (text: string) => {
try {
await navigator.clipboard.writeText(text);
} catch {
throw new Error('Not able to copy');
}
};

View File

@@ -0,0 +1,13 @@
import { promises as fs } from 'fs';
import path from 'path';
export const CONTENT_DIR = 'emails';
export const getEmails = async () => {
const emailsDirectory = path.join(process.cwd(), CONTENT_DIR);
const filenames = await fs.readdir(emailsDirectory);
const emails = filenames
.map((file) => file.replace(/\.(jsx|tsx)$/g, ''))
.filter((file) => file !== 'components');
return { emails, filenames };
};

View File

@@ -0,0 +1,3 @@
export * from './as';
export * from './copy-text-to-clipboard';
export * from './unreachable';

View File

@@ -0,0 +1,7 @@
const languageMap = {
jsx: 'React',
markup: 'HTML',
markdown: 'Plain Text',
};
export default languageMap;

View File

@@ -0,0 +1,6 @@
export const unreachable = (
condition: never,
message = `Entered unreachable code. Received '${condition}'.`,
): never => {
throw new TypeError(message);
};