Skip to content

Instantly share code, notes, and snippets.

View sethdavis512's full-sized avatar
🤖

Seth Davis sethdavis512

🤖
View GitHub Profile
// Define an enum with some color keys and their corresponding values
enum Colors {
Red = "#FF0000",
Green = "#00FF00",
Blue = "#0000FF",
}
// Function to get the value of a color by its key
function getColorValue(colorKey: keyof typeof Colors): string {
return Colors[colorKey];
@sethdavis512
sethdavis512 / vite.config.ts
Created April 8, 2025 14:12
Config to publish component library
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { resolve } from 'path';
import dts from 'vite-plugin-dts';
// https://vite.dev/config/
export default defineConfig({
plugins: [react(), dts({
include: ['src/components'],
rollupTypes: true,
function getSafe(fn) {
try {
return fn();
} catch (e) {
return undefined;
}
}
/**
* Safely retrieves a value from an object at the specified path.
async function encryptData(data, key) {
const encodedData = new TextEncoder().encode(data);
const iv = crypto.getRandomValues(new Uint8Array(12)); // Initialization vector
const encryptedData = await crypto.subtle.encrypt(
{
name: "AES-GCM",
iv: iv
},
key,
encodedData
function getEnvVariable(key: string): string {
if (key === undefined) {
throw Error(`"${key}" is undefined`);
}
const value = process.env[key];
if (!value) {
throw Error(
`Environment variable "${key}" does not exist on process.env`
@sethdavis512
sethdavis512 / global.code-snippets
Created September 24, 2024 14:25
VS Code snippets
{
"Component": {
"prefix": "mkComponent",
"body": [
"import React, { type ReactNode } from 'react';",
"",
"interface ${TM_FILENAME_BASE/(.*)\\..+$/$1/}Props {",
" children: ReactNode;",
"}",
"",
import { ButtonHTMLAttributes, ReactNode } from "react";
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
children: ReactNode;
}
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
<span>
{new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
signDisplay: "never",
}).format(option.price - selectedOption.price)}
</span>
@sethdavis512
sethdavis512 / as-child.tsx
Last active May 24, 2024 17:43
asChild example
import { Slot, type AsChildProps } from "./slot.tsx"
type ButtonProps = AsChildProps<
React.ButtonHTMLAttributes<HTMLButtonElement>
> & {
style?: React.CSSProperties
className?: string
}
function Button({ asChild, ...props }: ButtonProps) {