update recipe format

This commit is contained in:
Jake Runyan 2026-02-13 12:14:16 -08:00
parent b95f5c1aeb
commit 27a1afe6d3
47 changed files with 44 additions and 553 deletions

View File

@ -21,7 +21,7 @@ app/ # Next.js App Router pages
recipes/ recipes/
page.tsx # Recipe listing (server, passes data to RecipesClient) page.tsx # Recipe listing (server, passes data to RecipesClient)
[category]/[slug]/ [category]/[slug]/
page.tsx # Recipe detail (server, passes data to RecipePageClient) page.tsx # Recipe detail (server, compiles MDX and renders via RecipePageLayout)
components/ components/
Header.tsx / Footer.tsx # Site chrome Header.tsx / Footer.tsx # Site chrome
@ -31,8 +31,8 @@ components/
SelectedTags.tsx # Active tag chips SelectedTags.tsx # Active tag chips
TagSelector.tsx # Tag dropdown picker TagSelector.tsx # Tag dropdown picker
RecipeGridCard.tsx # Recipe grid card for listing page RecipeGridCard.tsx # Recipe grid card for listing page
RecipeCard.tsx # MDX component — splits h2 children into tab sections RecipeCard.tsx # MDX component — splits h2 children into tab sections (client)
RecipePageClient.tsx # Recipe detail page wrapper (server component) RecipePageLayout.tsx # Recipe detail page layout (server component)
lib/ lib/
recipes.ts # Recipe file loader with in-memory cache; reads from public/recipes/ recipes.ts # Recipe file loader with in-memory cache; reads from public/recipes/

View File

@ -28,6 +28,7 @@ Content after frontmatter is compiled as MDX using `next-mdx-remote/rsc`. The `<
- Markdown **before** `<RecipeCard>` renders as intro prose above the recipe card - Markdown **before** `<RecipeCard>` renders as intro prose above the recipe card
- Markdown **after** `</RecipeCard>` renders as outro prose below the recipe card - Markdown **after** `</RecipeCard>` renders as outro prose below the recipe card
- **Important**: a blank line after `<RecipeCard>` is required for MDX to parse the content inside as markdown - **Important**: a blank line after `<RecipeCard>` is required for MDX to parse the content inside as markdown
- Blank lines after `## ` headings and before `</RecipeCard>` are optional — the compact form (no extra blank lines) is preferred
### `<RecipeCard>` Sections ### `<RecipeCard>` Sections
@ -70,7 +71,6 @@ This recipe uses brown lentils (whole Masoor Dal)...
## References ## References
- Reference Recipe **[HERE](https://example.com)** - Reference Recipe **[HERE](https://example.com)**
</RecipeCard> </RecipeCard>
``` ```

View File

@ -17,7 +17,13 @@
"Bash(powershell.exe -Command \"Test-Path ''c:\\\\Users\\\\runya\\\\Documents\\\\repositories\\\\cooking\\\\.next\\\\standalone\\\\server.js''\")", "Bash(powershell.exe -Command \"Test-Path ''c:\\\\Users\\\\runya\\\\Documents\\\\repositories\\\\cooking\\\\.next\\\\standalone\\\\server.js''\")",
"Bash(powershell.exe -Command:*)", "Bash(powershell.exe -Command:*)",
"Bash(node migrate-mdx.mjs:*)", "Bash(node migrate-mdx.mjs:*)",
"Bash(node migrate-mdx.js:*)" "Bash(node migrate-mdx.js:*)",
"Bash(curl:*)",
"Bash(node -e:*)",
"Bash(npm ls:*)",
"Bash(npm uninstall:*)",
"Bash(node:*)",
"Bash(del \"c:\\\\Users\\\\runya\\\\Documents\\\\repositories\\\\cooking\\\\compact-cards.js\")"
] ]
} }
} }

View File

@ -24,16 +24,4 @@ body {
.text-balance { .text-balance {
text-wrap: balance; text-wrap: balance;
} }
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
} }

View File

@ -4,7 +4,7 @@ import { compileMDX } from 'next-mdx-remote/rsc';
import remarkGfm from 'remark-gfm'; import remarkGfm from 'remark-gfm';
import { getRecipeByCategoryAndSlug, getAllRecipePaths } from '@/lib/recipes'; import { getRecipeByCategoryAndSlug, getAllRecipePaths } from '@/lib/recipes';
import RecipeCard from '@/components/RecipeCard'; import RecipeCard from '@/components/RecipeCard';
import RecipePageClient from '@/components/RecipePageClient'; import RecipePageLayout from '@/components/RecipePageLayout';
interface RecipePageProps { interface RecipePageProps {
params: Promise<{ params: Promise<{
@ -91,8 +91,8 @@ export default async function RecipePage({ params }: RecipePageProps) {
}); });
return ( return (
<RecipePageClient recipe={recipe}> <RecipePageLayout recipe={recipe}>
{content} {content}
</RecipePageClient> </RecipePageLayout>
); );
} }

View File

@ -1,99 +0,0 @@
import Link from 'next/link';
import type { Recipe } from '@/lib/recipes';
interface RecipePageClientProps {
recipe: Recipe;
children: React.ReactNode;
}
export default function RecipePageClient({ recipe, children }: RecipePageClientProps) {
return (
<div>
<article className="max-w-4xl mx-auto">
{/* Back navigation */}
<nav aria-label="Breadcrumb">
<Link
href="/recipes"
className="inline-flex items-center gap-2 mb-6 text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white transition-colors"
aria-label="Back to recipes list"
>
<span aria-hidden="true"></span>
<span>Back to Recipes</span>
</Link>
</nav>
<header className="mb-8 space-y-4">
<div className="flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400">
<Link
href={`/recipes?category=${encodeURIComponent(recipe.category)}`}
className="capitalize hover:text-gray-900 dark:hover:text-white transition-colors"
>
{recipe.category}
</Link>
<span></span>
<time dateTime={recipe.date}>
Published {new Date(recipe.date).toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
})}
</time>
{recipe.lastUpdated !== recipe.date && (
<>
<span></span>
<time dateTime={recipe.lastUpdated}>
Updated {new Date(recipe.lastUpdated).toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
})}
</time>
</>
)}
</div>
<h1 className="text-4xl md:text-5xl font-bold text-gray-900 dark:text-white">
{recipe.title}
</h1>
<p className="text-xl text-gray-600 dark:text-gray-400">
{recipe.description}
</p>
<div className="flex flex-wrap gap-4 text-sm text-gray-600 dark:text-gray-400" role="list" aria-label="Recipe timing and details">
<div className="flex items-center gap-2" role="listitem">
<span className="font-medium">Prep:</span>
<span>{recipe.prepTime} min</span>
</div>
<div className="flex items-center gap-2" role="listitem">
<span className="font-medium">Cook:</span>
<span>{recipe.cookTime} min</span>
</div>
<div className="flex items-center gap-2" role="listitem">
<span className="font-medium">Servings:</span>
<span>{recipe.servings}</span>
</div>
</div>
<div className="flex flex-wrap gap-2" role="list" aria-label="Recipe tags">
{recipe.tags.map((tag) => (
<Link
key={tag}
href={`/recipes?tags=${encodeURIComponent(tag)}`}
role="listitem"
className="px-3 py-1 text-sm bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors"
>
{tag}
</Link>
))}
</div>
</header>
{/* MDX content: intro prose + RecipeCard + outro prose */}
<div className="prose prose-lg dark:prose-invert max-w-none prose-p:text-gray-700 dark:prose-p:text-gray-300">
{children}
</div>
</article>
</div>
);
}

View File

@ -81,21 +81,6 @@ export function getAllRecipes(): Recipe[] {
return getOrPopulateRecipes(); return getOrPopulateRecipes();
} }
export function getRecipesByCategory(category: string): Recipe[] {
const allRecipes = getOrPopulateRecipes();
return allRecipes.filter((recipe) => recipe.category === category);
}
export function getRecipesByTag(tag: string): Recipe[] {
const allRecipes = getOrPopulateRecipes();
return allRecipes.filter((recipe) => recipe.tags.includes(tag));
}
export function getFeaturedRecipes(): Recipe[] {
const allRecipes = getOrPopulateRecipes();
return allRecipes.filter((recipe) => recipe.featured);
}
export function getAllCategories(): string[] { export function getAllCategories(): string[] {
const allRecipes = getOrPopulateRecipes(); const allRecipes = getOrPopulateRecipes();
const categories = new Set(allRecipes.map((recipe) => recipe.category)); const categories = new Set(allRecipes.map((recipe) => recipe.category));
@ -108,29 +93,11 @@ export function getAllTags(): string[] {
return Array.from(tags).sort(); return Array.from(tags).sort();
} }
export function getRecipeBySlug(slug: string): Recipe | undefined {
const allRecipes = getOrPopulateRecipes();
return allRecipes.find((recipe) => recipe.slug === slug);
}
export function getRecipeByCategoryAndSlug(category: string, slug: string): Recipe | undefined { export function getRecipeByCategoryAndSlug(category: string, slug: string): Recipe | undefined {
const allRecipes = getOrPopulateRecipes(); const allRecipes = getOrPopulateRecipes();
return allRecipes.find((recipe) => recipe.category === category && recipe.slug === slug); return allRecipes.find((recipe) => recipe.category === category && recipe.slug === slug);
} }
export function searchRecipes(query: string): Recipe[] {
const allRecipes = getOrPopulateRecipes();
const lowerQuery = query.toLowerCase();
return allRecipes.filter((recipe) => {
return (
recipe.title.toLowerCase().includes(lowerQuery) ||
recipe.description.toLowerCase().includes(lowerQuery) ||
recipe.tags.some((tag) => tag.toLowerCase().includes(lowerQuery))
);
});
}
export function getAllRecipePaths(): Array<{ category: string; slug: string }> { export function getAllRecipePaths(): Array<{ category: string; slug: string }> {
const allRecipes = getOrPopulateRecipes(); const allRecipes = getOrPopulateRecipes();
return allRecipes.map((recipe) => ({ return allRecipes.map((recipe) => ({

View File

@ -1,18 +1,8 @@
import type { NextConfig } from "next"; import type { NextConfig } from "next";
import createMDX from '@next/mdx';
const nextConfig: NextConfig = { const nextConfig: NextConfig = {
output: 'standalone', output: 'standalone',
reactStrictMode: true, reactStrictMode: true,
pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'],
}; };
const withMDX = createMDX({ export default nextConfig;
extension: /\.mdx?$/,
options: {
remarkPlugins: [],
rehypePlugins: [],
},
});
export default withMDX(nextConfig);

184
package-lock.json generated
View File

@ -8,16 +8,12 @@
"name": "cooking", "name": "cooking",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@mdx-js/loader": "^3.1.1", "@tailwindcss/typography": "^0.5.19",
"@mdx-js/react": "^3.1.1",
"@next/mdx": "^16.1.6",
"@types/mdx": "^2.0.13",
"gray-matter": "^4.0.3", "gray-matter": "^4.0.3",
"next": "^15.1.6", "next": "^15.1.6",
"next-mdx-remote": "^6.0.0", "next-mdx-remote": "^6.0.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1" "remark-gfm": "^4.0.1"
}, },
"devDependencies": { "devDependencies": {
@ -36,7 +32,6 @@
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
@ -672,7 +667,6 @@
"version": "0.3.13", "version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/sourcemap-codec": "^1.5.0",
@ -683,7 +677,6 @@
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=6.0.0" "node": ">=6.0.0"
@ -693,43 +686,18 @@
"version": "1.5.5", "version": "1.5.5",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@jridgewell/trace-mapping": { "node_modules/@jridgewell/trace-mapping": {
"version": "0.3.31", "version": "0.3.31",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14" "@jridgewell/sourcemap-codec": "^1.4.14"
} }
}, },
"node_modules/@mdx-js/loader": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz",
"integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@mdx-js/mdx": "^3.0.0",
"source-map": "^0.7.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
},
"peerDependencies": {
"webpack": ">=5"
},
"peerDependenciesMeta": {
"webpack": {
"optional": true
}
}
},
"node_modules/@mdx-js/mdx": { "node_modules/@mdx-js/mdx": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz",
@ -772,7 +740,6 @@
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz",
"integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/mdx": "^2.0.0" "@types/mdx": "^2.0.0"
}, },
@ -814,27 +781,6 @@
"fast-glob": "3.3.1" "fast-glob": "3.3.1"
} }
}, },
"node_modules/@next/mdx": {
"version": "16.1.6",
"resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-16.1.6.tgz",
"integrity": "sha512-PT5JR4WPPYOls7WD6xEqUVVI9HDY8kY7XLQsNYB2lSZk5eJSXWu3ECtIYmfR0hZpx8Sg7BKZYKi2+u5OTSEx0w==",
"license": "MIT",
"dependencies": {
"source-map": "^0.7.0"
},
"peerDependencies": {
"@mdx-js/loader": ">=0.15.0",
"@mdx-js/react": ">=0.15.0"
},
"peerDependenciesMeta": {
"@mdx-js/loader": {
"optional": true
},
"@mdx-js/react": {
"optional": true
}
}
},
"node_modules/@next/swc-darwin-arm64": { "node_modules/@next/swc-darwin-arm64": {
"version": "15.5.12", "version": "15.5.12",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.12.tgz", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.12.tgz",
@ -967,7 +913,6 @@
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@nodelib/fs.stat": "2.0.5", "@nodelib/fs.stat": "2.0.5",
@ -981,7 +926,6 @@
"version": "2.0.5", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
@ -991,7 +935,6 @@
"version": "1.2.8", "version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@nodelib/fs.scandir": "2.1.5", "@nodelib/fs.scandir": "2.1.5",
@ -1034,6 +977,31 @@
"tslib": "^2.8.0" "tslib": "^2.8.0"
} }
}, },
"node_modules/@tailwindcss/typography": {
"version": "0.5.19",
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz",
"integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==",
"license": "MIT",
"dependencies": {
"postcss-selector-parser": "6.0.10"
},
"peerDependencies": {
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
}
},
"node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
"version": "6.0.10",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
},
"engines": {
"node": ">=4"
}
},
"node_modules/@tybys/wasm-util": { "node_modules/@tybys/wasm-util": {
"version": "0.10.1", "version": "0.10.1",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
@ -1756,14 +1724,12 @@
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/anymatch": { "node_modules/anymatch": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
@ -1777,7 +1743,6 @@
"version": "5.0.2", "version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/argparse": { "node_modules/argparse": {
@ -2087,7 +2052,6 @@
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=8" "node": ">=8"
@ -2111,7 +2075,6 @@
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"fill-range": "^7.1.1" "fill-range": "^7.1.1"
@ -2219,7 +2182,6 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
@ -2316,7 +2278,6 @@
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"anymatch": "~3.1.2", "anymatch": "~3.1.2",
@ -2341,7 +2302,6 @@
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"is-glob": "^4.0.1" "is-glob": "^4.0.1"
@ -2400,7 +2360,6 @@
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
@ -2432,7 +2391,6 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
"license": "MIT", "license": "MIT",
"bin": { "bin": {
"cssesc": "bin/cssesc" "cssesc": "bin/cssesc"
@ -2617,14 +2575,12 @@
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"dev": true,
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/dlv": { "node_modules/dlv": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/doctrine": { "node_modules/doctrine": {
@ -3528,7 +3484,6 @@
"version": "1.20.1", "version": "1.20.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"reusify": "^1.0.4" "reusify": "^1.0.4"
@ -3551,7 +3506,6 @@
"version": "7.1.1", "version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"to-regex-range": "^5.0.1" "to-regex-range": "^5.0.1"
@ -3640,7 +3594,6 @@
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
@ -3655,7 +3608,6 @@
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
"license": "MIT", "license": "MIT",
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@ -3798,7 +3750,6 @@
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"is-glob": "^4.0.3" "is-glob": "^4.0.3"
@ -3982,7 +3933,6 @@
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"function-bind": "^1.1.2" "function-bind": "^1.1.2"
@ -4059,16 +4009,6 @@
"url": "https://opencollective.com/unified" "url": "https://opencollective.com/unified"
} }
}, },
"node_modules/html-url-attributes": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
"integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
}
},
"node_modules/ignore": { "node_modules/ignore": {
"version": "5.3.2", "version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@ -4228,7 +4168,6 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"binary-extensions": "^2.0.0" "binary-extensions": "^2.0.0"
@ -4281,7 +4220,6 @@
"version": "2.16.1", "version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"hasown": "^2.0.2" "hasown": "^2.0.2"
@ -4351,7 +4289,6 @@
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -4397,7 +4334,6 @@
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"is-extglob": "^2.1.1" "is-extglob": "^2.1.1"
@ -4446,7 +4382,6 @@
"version": "7.0.0", "version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=0.12.0" "node": ">=0.12.0"
@ -4672,7 +4607,6 @@
"version": "1.21.7", "version": "1.21.7",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"dev": true,
"license": "MIT", "license": "MIT",
"peer": true, "peer": true,
"bin": { "bin": {
@ -4805,7 +4739,6 @@
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=14" "node": ">=14"
@ -4818,7 +4751,6 @@
"version": "1.2.4", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/locate-path": { "node_modules/locate-path": {
@ -5202,7 +5134,6 @@
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
@ -5929,7 +5860,6 @@
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"braces": "^3.0.3", "braces": "^3.0.3",
@ -5972,7 +5902,6 @@
"version": "2.7.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"any-promise": "^1.0.0", "any-promise": "^1.0.0",
@ -6134,7 +6063,6 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -6144,7 +6072,6 @@
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -6154,7 +6081,6 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
@ -6423,7 +6349,6 @@
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/picocolors": { "node_modules/picocolors": {
@ -6436,7 +6361,6 @@
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=8.6" "node": ">=8.6"
@ -6449,7 +6373,6 @@
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@ -6459,7 +6382,6 @@
"version": "4.0.7", "version": "4.0.7",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
"integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
@ -6479,7 +6401,6 @@
"version": "8.5.6", "version": "8.5.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -6509,7 +6430,6 @@
"version": "15.1.0", "version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"postcss-value-parser": "^4.0.0", "postcss-value-parser": "^4.0.0",
@ -6527,7 +6447,6 @@
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
"integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -6553,7 +6472,6 @@
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz",
"integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -6596,7 +6514,6 @@
"version": "6.2.0", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
"integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@ -6622,7 +6539,6 @@
"version": "6.1.2", "version": "6.1.2",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
"integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
@ -6636,7 +6552,6 @@
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/prelude-ls": { "node_modules/prelude-ls": {
@ -6685,7 +6600,6 @@
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@ -6732,38 +6646,10 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/react-markdown": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz",
"integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"@types/mdast": "^4.0.0",
"devlop": "^1.0.0",
"hast-util-to-jsx-runtime": "^2.0.0",
"html-url-attributes": "^3.0.0",
"mdast-util-to-hast": "^13.0.0",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.0.0",
"unified": "^11.0.0",
"unist-util-visit": "^5.0.0",
"vfile": "^6.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
},
"peerDependencies": {
"@types/react": ">=18",
"react": ">=18"
}
},
"node_modules/read-cache": { "node_modules/read-cache": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"pify": "^2.3.0" "pify": "^2.3.0"
@ -6773,7 +6659,6 @@
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"picomatch": "^2.2.1" "picomatch": "^2.2.1"
@ -6992,7 +6877,6 @@
"version": "1.22.11", "version": "1.22.11",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"is-core-module": "^2.16.1", "is-core-module": "^2.16.1",
@ -7033,7 +6917,6 @@
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"iojs": ">=1.0.0", "iojs": ">=1.0.0",
@ -7061,7 +6944,6 @@
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@ -7633,7 +7515,6 @@
"version": "3.35.1", "version": "3.35.1",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
"integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/gen-mapping": "^0.3.2",
@ -7669,7 +7550,6 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@ -7682,8 +7562,8 @@
"version": "3.4.19", "version": "3.4.19",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz",
"integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@alloc/quick-lru": "^5.2.0", "@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2", "arg": "^5.0.2",
@ -7720,7 +7600,6 @@
"version": "3.3.3", "version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.stat": "^2.0.2",
@ -7737,7 +7616,6 @@
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"is-glob": "^4.0.1" "is-glob": "^4.0.1"
@ -7757,7 +7635,6 @@
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"any-promise": "^1.0.0" "any-promise": "^1.0.0"
@ -7767,7 +7644,6 @@
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"thenify": ">= 3.1.0 < 4" "thenify": ">= 3.1.0 < 4"
@ -7780,7 +7656,6 @@
"version": "0.2.15", "version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"fdir": "^6.5.0", "fdir": "^6.5.0",
@ -7797,7 +7672,6 @@
"version": "6.5.0", "version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"
@ -7815,7 +7689,6 @@
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT", "license": "MIT",
"peer": true, "peer": true,
"engines": { "engines": {
@ -7829,7 +7702,6 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"is-number": "^7.0.0" "is-number": "^7.0.0"
@ -7875,7 +7747,6 @@
"version": "0.1.13", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
"dev": true,
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/tsconfig-paths": { "node_modules/tsconfig-paths": {
@ -8237,7 +8108,6 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/vfile": { "node_modules/vfile": {

View File

@ -9,16 +9,12 @@
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@mdx-js/loader": "^3.1.1", "@tailwindcss/typography": "^0.5.19",
"@mdx-js/react": "^3.1.1",
"@next/mdx": "^16.1.6",
"@types/mdx": "^2.0.13",
"gray-matter": "^4.0.3", "gray-matter": "^4.0.3",
"next": "^15.1.6", "next": "^15.1.6",
"next-mdx-remote": "^6.0.0", "next-mdx-remote": "^6.0.0",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1" "remark-gfm": "^4.0.1"
}, },
"devDependencies": { "devDependencies": {

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Egg Wash ### Egg Wash
- 1 large egg, beaten with 1 tablespoon milk - 1 large egg, beaten with 1 tablespoon milk
### Apple Pie ### Apple Pie
@ -38,7 +36,6 @@ displayPhoto: ""
- Coarse sugar for sprinkling on crust (optional) - Coarse sugar for sprinkling on crust (optional)
## Instructions ## Instructions
1. Prep **pie crust** if making from scrath. Keep prepared or store-bought pie crust chilled untill using. 1. Prep **pie crust** if making from scrath. Keep prepared or store-bought pie crust chilled untill using.
2. Stir the **apple slices**, **sugar**, **flour**, **lemon juice**, **cinnamon**, **allspice**, and **nutmeg** together until thoroughly combined. 2. Stir the **apple slices**, **sugar**, **flour**, **lemon juice**, **cinnamon**, **allspice**, and **nutmeg** together until thoroughly combined.
3. (Optional) Pre-cook the apples by pouring into a very large skillet/dutch oven, and place over medium-low heat. Stir and cook for 5 minutes until the apples begin to soften. Remove from heat and set aside. 3. (Optional) Pre-cook the apples by pouring into a very large skillet/dutch oven, and place over medium-low heat. Stir and cook for 5 minutes until the apples begin to soften. Remove from heat and set aside.
@ -54,7 +51,6 @@ displayPhoto: ""
13. Cover and store leftover pie at room temperature for up to 1 day or in the refrigerator for up to 5 days. 13. Cover and store leftover pie at room temperature for up to 1 day or in the refrigerator for up to 5 days.
## Notes ## Notes
### Hat on a Hat ### Hat on a Hat
- A frozen pie shell stacked on top will melt into a good covering if you don't want to make a nice top for the pie. - A frozen pie shell stacked on top will melt into a good covering if you don't want to make a nice top for the pie.
@ -62,7 +58,5 @@ displayPhoto: ""
- Don't forget the egg wash! - Don't forget the egg wash!
## References ## References
- Reference Recipe **[HERE](https://sallysbakingaddiction.com/apple-pie-recipe/)** - Reference Recipe **[HERE](https://sallysbakingaddiction.com/apple-pie-recipe/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 cup all-purpose flour - 1 cup all-purpose flour
- 1 cup vegetable oil (plus 1 tablespoon) - 1 cup vegetable oil (plus 1 tablespoon)
- 3 ribs celery, diced small - 3 ribs celery, diced small
@ -44,7 +42,6 @@ displayPhoto: ""
- cooked white rice, sliced green onion, and hot sauce for serving - cooked white rice, sliced green onion, and hot sauce for serving
## Instructions ## Instructions
1. In a large dutch oven, heat **vegetable oil** over low heat. Add **flour** and stir essentially constantly until the roux becomes dark brown. This can take between 30-60 mins depending on the stove. 1. In a large dutch oven, heat **vegetable oil** over low heat. Add **flour** and stir essentially constantly until the roux becomes dark brown. This can take between 30-60 mins depending on the stove.
2. Place the dutch oven with the finished roux over medium heat and add **celery**, **onion**, and **bell pepper**. Cook for 8 to 10 minutes, stirring frequently, until the vegetables have softened and the **onions** are translucent. 2. Place the dutch oven with the finished roux over medium heat and add **celery**, **onion**, and **bell pepper**. Cook for 8 to 10 minutes, stirring frequently, until the vegetables have softened and the **onions** are translucent.
3. Add the **garlic** and **creole seasoning** and cook for about 1 minute or until the **garlic** is fragrant. 3. Add the **garlic** and **creole seasoning** and cook for about 1 minute or until the **garlic** is fragrant.
@ -59,7 +56,6 @@ If bits get stuck to the bottom, they will burn and the roux will be ruined; you
The roux should be a dark brown color and have a nutty aroma. The roux should be a dark brown color and have a nutty aroma.
## Notes ## Notes
### About the Roux ### About the Roux
- A dark roux adds deep flavor but can burn easily. Stir constantly over low heat. - A dark roux adds deep flavor but can burn easily. Stir constantly over low heat.
@ -71,7 +67,5 @@ The roux should be a dark brown color and have a nutty aroma.
The roux should be a dark brown color and have a nutty aroma. The roux should be a dark brown color and have a nutty aroma.
## References ## References
- Reference Recipe **[HERE](https://southernbite.com/chicken-sausage-and-shrimp-gumbo/)** - Reference Recipe **[HERE](https://southernbite.com/chicken-sausage-and-shrimp-gumbo/)**
</RecipeCard> </RecipeCard>

View File

@ -20,12 +20,10 @@ lasdfkjlkejflwkejflwkejflk
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Marinade ### Marinade
- Kosher salt and freshly ground pepper - Kosher salt and freshly ground pepper
- 1/2 teaspoon granulated sugar - 1/2 teaspoon granulated sugar
@ -40,7 +38,6 @@ lasdfkjlkejflwkejflwkejflk
- 5 tablespoons water - 5 tablespoons water
## Instructions ## Instructions
1. Chop the **beef** into thin, long, bite-sized strips. Place in a bowl that can hold the beef and the rest of the marinade. 1. Chop the **beef** into thin, long, bite-sized strips. Place in a bowl that can hold the beef and the rest of the marinade.
2. Add a pinch of **salt**, **sugar**, **vegetable oil**, **sodium bicarbonate**, **corn starch**, **rice wine**, and **ginger** to the bowl with the beef. 2. Add a pinch of **salt**, **sugar**, **vegetable oil**, **sodium bicarbonate**, **corn starch**, **rice wine**, and **ginger** to the bowl with the beef.
3. Give the marinade a good mix and leave in the fridge for at least 60 minutes. 3. Give the marinade a good mix and leave in the fridge for at least 60 minutes.
@ -54,7 +51,6 @@ lasdfkjlkejflwkejflwkejflk
11. Mix the **cornflour slurry ingredients** and add it to the wok. Gradually turn the heat back to medium as you stir fry. Continue until the sauce thickens and becomes translucent. 11. Mix the **cornflour slurry ingredients** and add it to the wok. Gradually turn the heat back to medium as you stir fry. Continue until the sauce thickens and becomes translucent.
## Notes ## Notes
### Substitute ### Substitute
- Replace rice wine with dry sherry if not available. - Replace rice wine with dry sherry if not available.
@ -62,7 +58,5 @@ lasdfkjlkejflwkejflwkejflk
- Use more broccoli than you think you need! - Use more broccoli than you think you need!
## References ## References
- Reference Recipe **[HERE](https://www.youtube.com/watch?v=fSO83XlKcPI)** - Reference Recipe **[HERE](https://www.youtube.com/watch?v=fSO83XlKcPI)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 4 cups chicken stock - 4 cups chicken stock
- 1/2 teaspoon sesame oil - 1/2 teaspoon sesame oil
- 3/4 teaspoon salt - 3/4 teaspoon salt
@ -38,7 +36,6 @@ displayPhoto: ""
- 1/2 teaspoon turmeric (optional) - 1/2 teaspoon turmeric (optional)
## Instructions ## Instructions
1. Bring the **chicken stock** to a simmer in a pot. 1. Bring the **chicken stock** to a simmer in a pot.
2. Stir in **sesame oil**, **salt**, **sugar**, **white pepper**. Adjust to taste at this point. 2. Stir in **sesame oil**, **salt**, **sugar**, **white pepper**. Adjust to taste at this point.
3. If using, also stir in the **msg**, **cooking wine**, and **turmeric**. 3. If using, also stir in the **msg**, **cooking wine**, and **turmeric**.
@ -51,7 +48,6 @@ Stir SLOWLY when adding in the egg for the best results. Stirring quickly yields
Also give the cooking wine addition a try (thanks, mom) Also give the cooking wine addition a try (thanks, mom)
## Notes ## Notes
### Eyeball It ### Eyeball It
- It's pretty good regardless of the exact ratios. Also I'm a fan of excess pepper when sick. - It's pretty good regardless of the exact ratios. Also I'm a fan of excess pepper when sick.
@ -60,7 +56,5 @@ Also give the cooking wine addition a try (thanks, mom)
Also give the cooking wine addition a try (thanks, mom) Also give the cooking wine addition a try (thanks, mom)
## References ## References
- Reference Recipe [HERE](https://thewoksoflife.com/egg-drop-soup/) - Reference Recipe [HERE](https://thewoksoflife.com/egg-drop-soup/)
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 package bean thread noodles - 1 package bean thread noodles
- 1 lb ground pork - 1 lb ground pork
- 2 tbsp dark soy sauce - 2 tbsp dark soy sauce
@ -38,7 +36,6 @@ displayPhoto: ""
- Oil for frying - Oil for frying
## Instructions ## Instructions
1. Soak the **bean thread noodles** in hot water until soft, then chop into small pieces. 1. Soak the **bean thread noodles** in hot water until soft, then chop into small pieces.
2. In a large mixing bowl, combine the **ground pork**, **noodles**, **soy sauce**, **green onion**, **wood ear mushroom**, **fish sauce**, **carrot**, **ginger**, **garlic**, and **egg**. 2. In a large mixing bowl, combine the **ground pork**, **noodles**, **soy sauce**, **green onion**, **wood ear mushroom**, **fish sauce**, **carrot**, **ginger**, **garlic**, and **egg**.
3. Mix thoroughly until well combined. 3. Mix thoroughly until well combined.
@ -55,7 +52,6 @@ Instead of frying, boil in water or broth for 3-4 minutes until the wrapper beco
These make excellent additions to soup! These make excellent additions to soup!
## Notes ## Notes
### Wrapper Options ### Wrapper Options
- Lumpia wrappers are thinner than traditional eggroll wrappers, but either will work. For wontons, use wonton wrappers instead. - Lumpia wrappers are thinner than traditional eggroll wrappers, but either will work. For wontons, use wonton wrappers instead.
@ -70,7 +66,5 @@ These make excellent additions to soup!
These make excellent additions to soup! These make excellent additions to soup!
## References ## References
- Thanks to my sister for providing the recipe! - Thanks to my sister for providing the recipe!
</RecipeCard> </RecipeCard>

View File

@ -18,19 +18,16 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 cup peaches (about 2 medium), fresh or frozen, chopped - 1 cup peaches (about 2 medium), fresh or frozen, chopped
- 1 cup sugar (unrefined cane, granulated, or brown) - 1 cup sugar (unrefined cane, granulated, or brown)
- 1 cup water - 1 cup water
- 1/2 tsp vanilla extract (optional) - 1/2 tsp vanilla extract (optional)
## Instructions ## Instructions
1. Wash and chop the **peaches** into small pieces. There's no need to peel them. 1. Wash and chop the **peaches** into small pieces. There's no need to peel them.
2. In a medium saucepan, combine the chopped **peaches**, **sugar**, and **water**. 2. In a medium saucepan, combine the chopped **peaches**, **sugar**, and **water**.
3. Bring the mixture to a simmer over medium heat, stirring until the **sugar** is fully dissolved. 3. Bring the mixture to a simmer over medium heat, stirring until the **sugar** is fully dissolved.
@ -42,7 +39,6 @@ displayPhoto: ""
This peach syrup is perfect for cocktails (like a Peach Mojito or Bellini), mocktails, sweetening iced tea or lemonade, drizzling over pancakes, or adding to sparkling water for a refreshing peach soda. This peach syrup is perfect for cocktails (like a Peach Mojito or Bellini), mocktails, sweetening iced tea or lemonade, drizzling over pancakes, or adding to sparkling water for a refreshing peach soda.
## Notes ## Notes
### Sugar Choice ### Sugar Choice
- Unrefined cane sugar is a great choice, but regular granulated white sugar or even brown sugar will also work well. Brown sugar will result in a slightly darker syrup with a hint of caramel flavor. - Unrefined cane sugar is a great choice, but regular granulated white sugar or even brown sugar will also work well. Brown sugar will result in a slightly darker syrup with a hint of caramel flavor.
@ -50,7 +46,5 @@ This peach syrup is perfect for cocktails (like a Peach Mojito or Bellini), mock
- This peach syrup is perfect for cocktails (like a Peach Mojito or Bellini), mocktails, sweetening iced tea or lemonade, drizzling over pancakes, or adding to sparkling water for a refreshing peach soda. - This peach syrup is perfect for cocktails (like a Peach Mojito or Bellini), mocktails, sweetening iced tea or lemonade, drizzling over pancakes, or adding to sparkling water for a refreshing peach soda.
## References ## References
- Reference Recipe **[HERE](https://www.alphafoodie.com/how-to-make-peach-simple-syrup/)** - Reference Recipe **[HERE](https://www.alphafoodie.com/how-to-make-peach-simple-syrup/)**
</RecipeCard> </RecipeCard>

View File

@ -20,7 +20,6 @@ A beloved Italian-American comfort food that combines crispy breaded chicken cut
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Finished chicken parmesan on a white plate](./assets/not-found.svg) ![Finished chicken parmesan on a white plate](./assets/not-found.svg)
*Golden-brown chicken topped with bubbling cheese* *Golden-brown chicken topped with bubbling cheese*
@ -31,7 +30,6 @@ A beloved Italian-American comfort food that combines crispy breaded chicken cut
*Served alongside spaghetti with fresh basil* *Served alongside spaghetti with fresh basil*
## Ingredients ## Ingredients
### For the Chicken ### For the Chicken
- 4 boneless, skinless chicken breasts (about 6-8 oz each) - 4 boneless, skinless chicken breasts (about 6-8 oz each)
- 1 cup all-purpose flour - 1 cup all-purpose flour
@ -50,7 +48,6 @@ A beloved Italian-American comfort food that combines crispy breaded chicken cut
- Extra Parmesan for serving - Extra Parmesan for serving
## Instructions ## Instructions
### Prep the Chicken ### Prep the Chicken
1. Place **chicken breasts** between two sheets of **plastic wrap** and pound to an even 1/2-inch thickness using a meat mallet. 1. Place **chicken breasts** between two sheets of **plastic wrap** and pound to an even 1/2-inch thickness using a meat mallet.
2. Season both sides generously with **salt** and **pepper**. 2. Season both sides generously with **salt** and **pepper**.
@ -73,7 +70,6 @@ A beloved Italian-American comfort food that combines crispy breaded chicken cut
10. Top with fresh torn **basil** and serve immediately with **pasta** or a side salad. 10. Top with fresh torn **basil** and serve immediately with **pasta** or a side salad.
## Notes ## Notes
### Tips for Success ### Tips for Success
- **Even thickness**: Pounding the chicken ensures even cooking - **Even thickness**: Pounding the chicken ensures even cooking
- **Don't overcrowd**: Fry in batches to maintain oil temperature - **Don't overcrowd**: Fry in batches to maintain oil temperature
@ -92,9 +88,7 @@ A beloved Italian-American comfort food that combines crispy breaded chicken cut
- **Extra crispy**: Use panko breadcrumbs instead of Italian breadcrumbs - **Extra crispy**: Use panko breadcrumbs instead of Italian breadcrumbs
## References ## References
- Adapted from traditional Italian-American recipes - Adapted from traditional Italian-American recipes
- Inspired by *The Silver Spoon* Italian cookbook - Inspired by *The Silver Spoon* Italian cookbook
- Reference Recipe **[HERE](https://www.example.com)** - Reference Recipe **[HERE](https://www.example.com)**
</RecipeCard> </RecipeCard>

View File

@ -20,7 +20,6 @@ The ultimate chocolate chip cookie recipe that delivers crispy edges, chewy cent
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Stack of chocolate chip cookies](./assets/not-found.svg) ![Stack of chocolate chip cookies](./assets/not-found.svg)
*A stack of golden-brown cookies showing the perfect texture* *A stack of golden-brown cookies showing the perfect texture*
@ -34,7 +33,6 @@ The ultimate chocolate chip cookie recipe that delivers crispy edges, chewy cent
*The perfect cookie and milk pairing* *The perfect cookie and milk pairing*
## Ingredients ## Ingredients
### Dry Ingredients ### Dry Ingredients
- 2 1/4 cups (280g) all-purpose flour - 2 1/4 cups (280g) all-purpose flour
- 1 teaspoon baking soda - 1 teaspoon baking soda
@ -53,7 +51,6 @@ The ultimate chocolate chip cookie recipe that delivers crispy edges, chewy cent
- Flaky sea salt for topping (optional) - Flaky sea salt for topping (optional)
## Instructions ## Instructions
### Prepare ### Prepare
1. Preheat oven to 375°F (190°C). Line two baking sheets with **parchment paper**. 1. Preheat oven to 375°F (190°C). Line two baking sheets with **parchment paper**.
2. In a medium bowl, whisk together **flour**, **baking soda**, and **salt**. Set aside. 2. In a medium bowl, whisk together **flour**, **baking soda**, and **salt**. Set aside.
@ -77,7 +74,6 @@ The ultimate chocolate chip cookie recipe that delivers crispy edges, chewy cent
12. Serve warm or at room temperature. Best enjoyed with cold **milk**! 12. Serve warm or at room temperature. Best enjoyed with cold **milk**!
## Notes ## Notes
### Tips for Success ### Tips for Success
- **Room temperature ingredients**: Softened butter and eggs create the best texture - **Room temperature ingredients**: Softened butter and eggs create the best texture
- **Don't skip chilling**: Cold dough prevents spreading and creates thicker cookies - **Don't skip chilling**: Cold dough prevents spreading and creates thicker cookies
@ -106,8 +102,6 @@ The ultimate chocolate chip cookie recipe that delivers crispy edges, chewy cent
- **Underbaking**: Keeps centers soft and gooey - **Underbaking**: Keeps centers soft and gooey
## References ## References
- Based on the classic Nestlé Toll House recipe - Based on the classic Nestlé Toll House recipe
- Reference Recipe **[HERE](https://www.example.com)** - Reference Recipe **[HERE](https://www.example.com)**
</RecipeCard> </RecipeCard>

View File

@ -22,12 +22,10 @@ The whole dal retain their consistency, and the hulled and split dal thicken the
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Brown & Red Lentils ### Brown & Red Lentils
- 1 cup whole masoor dal (brown lentils) - 1 cup whole masoor dal (brown lentils)
- 1 cup split masoor dal (hulled and split brown lentils aka red lentils) - 1 cup split masoor dal (hulled and split brown lentils aka red lentils)
@ -51,7 +49,6 @@ The whole dal retain their consistency, and the hulled and split dal thicken the
- 1 tbsp dried fenugreek leaves (kasuri methi) - 1 tbsp dried fenugreek leaves (kasuri methi)
## Instructions ## Instructions
**Lentil Preparation** **Lentil Preparation**
1. Add each type of **lentil** individually to a large bowl and rinse well at least 3x. 1. Add each type of **lentil** individually to a large bowl and rinse well at least 3x.
2. Add to a pot with 4 cups **water** if using both types of lentils, 3 cups if not using split lentils. 2. Add to a pot with 4 cups **water** if using both types of lentils, 3 cups if not using split lentils.
@ -70,12 +67,9 @@ The whole dal retain their consistency, and the hulled and split dal thicken the
10. Stir in **amchur powder** and **fenugreek leaves**. 10. Stir in **amchur powder** and **fenugreek leaves**.
## Notes ## Notes
### Mix & Match ### Mix & Match
- Try with all types of lentils! - Try with all types of lentils!
## References ## References
- Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/brown-lentils/)** - Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/brown-lentils/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Chana ### Chana
- 1 cup dry chana (raw chickpeas) or 3 cups soaked/2 15 oz cans - 1 cup dry chana (raw chickpeas) or 3 cups soaked/2 15 oz cans
- 1 1/2 cups water, more for gravy - 1 1/2 cups water, more for gravy
@ -48,7 +46,6 @@ displayPhoto: ""
- 2 tbsp finely chopped coriander leaves/cilantro - 2 tbsp finely chopped coriander leaves/cilantro
## Instructions ## Instructions
**Chana Preparation** **Chana Preparation**
1. Rinse dried **chickpeas** at least 3 times to remove loose skin. Soak in 3 1/2 to 4 cups water overnight for at least 8 hours. Additionally you can add a small amount of baking soda to loosen the chana skins. 1. Rinse dried **chickpeas** at least 3 times to remove loose skin. Soak in 3 1/2 to 4 cups water overnight for at least 8 hours. Additionally you can add a small amount of baking soda to loosen the chana skins.
2. Drain water and rinse well. Optionally seperate skins from chana (but keep them later to thicken sauce). Pour the recipe water in and pressure cook for 5 to 6 minutes on a stovetop or 18 minutes on high pressure in an instant pot. 2. Drain water and rinse well. Optionally seperate skins from chana (but keep them later to thicken sauce). Pour the recipe water in and pressure cook for 5 to 6 minutes on a stovetop or 18 minutes on high pressure in an instant pot.
@ -72,7 +69,6 @@ displayPhoto: ""
- Serve with kasuri methi and amchur. - Serve with kasuri methi and amchur.
## Notes ## Notes
### Don't Eyeball It ### Don't Eyeball It
- Match the chana amount correctly, or the gravy gets very thin. - Match the chana amount correctly, or the gravy gets very thin.
@ -80,7 +76,5 @@ displayPhoto: ""
- Recipe usually heavy on the chana, adjust how you like it. - Recipe usually heavy on the chana, adjust how you like it.
## References ## References
- Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/chana-masala/)** - Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/chana-masala/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: "./assets/chicken-tikka-masala.jpg"
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Chicken Tikka Masala](./assets/chicken-tikka-masala.jpg) ![Chicken Tikka Masala](./assets/chicken-tikka-masala.jpg)
*Chicken Tikka Masala* *Chicken Tikka Masala*
## Ingredients ## Ingredients
### Chicken Marinade ### Chicken Marinade
- 28 oz (800g) boneless and skinless chicken thighs (cut into bite-sized pieces) - 28 oz (800g) boneless and skinless chicken thighs (cut into bite-sized pieces)
- 1 cup plain yogurt - 1 cup plain yogurt
@ -54,7 +52,6 @@ displayPhoto: "./assets/chicken-tikka-masala.jpg"
- 4 tablespoons fresh cilantro or coriander to garnish - 4 tablespoons fresh cilantro or coriander to garnish
## Instructions ## Instructions
1. In a bowl, combine **chicken** with all of the ingredients for the **chicken marinade**; let marinate for 10 minutes to an hour (or overnight if time allows). 1. In a bowl, combine **chicken** with all of the ingredients for the **chicken marinade**; let marinate for 10 minutes to an hour (or overnight if time allows).
2. Heat **oil** in a large skillet or pot over medium-high heat. When sizzling, add **marinated chicken pieces** in batches of two or three, making sure not to crowd the pan. Fry until browned for only 3 minutes on each side. Set aside and keep warm. (You will finish cooking the chicken in the sauce.) 2. Heat **oil** in a large skillet or pot over medium-high heat. When sizzling, add **marinated chicken pieces** in batches of two or three, making sure not to crowd the pan. Fry until browned for only 3 minutes on each side. Set aside and keep warm. (You will finish cooking the chicken in the sauce.)
3. Melt the **butter** in the same pan. Fry the **onions** until soft (about 3 minutes) while scraping up any browned bits stuck on the bottom of the pan. 3. Melt the **butter** in the same pan. Fry the **onions** until soft (about 3 minutes) while scraping up any browned bits stuck on the bottom of the pan.
@ -64,7 +61,6 @@ displayPhoto: "./assets/chicken-tikka-masala.jpg"
7. Garnish with cilantro (coriander) and serve. 7. Garnish with cilantro (coriander) and serve.
## Notes ## Notes
### Diet ### Diet
- Switch cream for low fat milk to make this a bit healthier. - Switch cream for low fat milk to make this a bit healthier.
@ -72,7 +68,5 @@ displayPhoto: "./assets/chicken-tikka-masala.jpg"
- Let chicken marinate for overnight if possible. - Let chicken marinate for overnight if possible.
## References ## References
- Reference Recipe **[HERE](https://cafedelites.com/chicken-tikka-masala/)** - Reference Recipe **[HERE](https://cafedelites.com/chicken-tikka-masala/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: "./assets/palak-paneer.jpg"
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Palak Paneer](./assets/palak-paneer.jpg) ![Palak Paneer](./assets/palak-paneer.jpg)
*Palak Paneer* *Palak Paneer*
## Ingredients ## Ingredients
- 1 1/4 cups paneer - 1 1/4 cups paneer
- 4 cups palak/spinach - 4 cups palak/spinach
- 2 tbsp oil (can use half oil half butter) - 2 tbsp oil (can use half oil half butter)
@ -44,7 +42,6 @@ displayPhoto: "./assets/palak-paneer.jpg"
- 2 cloves (optional) - 2 cloves (optional)
## Instructions ## Instructions
**Palak/Spinach Preparation** **Palak/Spinach Preparation**
1. For best results separate stems as they may leave a bitter taste, or use baby spinach. 1. For best results separate stems as they may leave a bitter taste, or use baby spinach.
2. Rinse and drain **spinach**. Leave as little water as possible as spinach will be cooked in oil. 2. Rinse and drain **spinach**. Leave as little water as possible as spinach will be cooked in oil.
@ -62,7 +59,6 @@ displayPhoto: "./assets/palak-paneer.jpg"
9. Add **paneer** and mix well. Optionally garnish with cream. 9. Add **paneer** and mix well. Optionally garnish with cream.
## Notes ## Notes
### Meal Prep ### Meal Prep
- If using canned tomatoes, you'll typically have enough to double the recipe which is a good amount to have some leftovers. - If using canned tomatoes, you'll typically have enough to double the recipe which is a good amount to have some leftovers.
@ -70,7 +66,5 @@ displayPhoto: "./assets/palak-paneer.jpg"
- It really doesn't need it, but you can add heavy whipping cream to thicken the gravy. However it should be relatively thick as is. - It really doesn't need it, but you can add heavy whipping cream to thicken the gravy. However it should be relatively thick as is.
## References ## References
- Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/palak-paneer-recipe-easy-paneer-recipes-step-by-step-pics/)** - Reference Recipe **[HERE](https://www.indianhealthyrecipes.com/palak-paneer-recipe-easy-paneer-recipes-step-by-step-pics/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Chicken & Breading ### Chicken & Breading
- 6 boneless skinless chicken breasts - 6 boneless skinless chicken breasts
- 1 cup flour - 1 cup flour
@ -41,7 +39,6 @@ displayPhoto: ""
- Remaining ¼ cup minced flat leaf parsley (for garnish) - Remaining ¼ cup minced flat leaf parsley (for garnish)
## Instructions ## Instructions
**Preparation** **Preparation**
1. Pre-heat oven to **350°F**. 1. Pre-heat oven to **350°F**.
2. Place one **chicken breast** inside a gallon size ziplock bag. Using a kitchen mallet, pound the chicken breast to an even size, approximately **½ inch** thick. Repeat for the remaining breasts. 2. Place one **chicken breast** inside a gallon size ziplock bag. Using a kitchen mallet, pound the chicken breast to an even size, approximately **½ inch** thick. Repeat for the remaining breasts.
@ -63,7 +60,6 @@ displayPhoto: ""
6. Serve immediately. 6. Serve immediately.
## Notes ## Notes
### Chicken Substitute ### Chicken Substitute
- Chicken thigh is an appropriate substitution for chicken breast in my experience. - Chicken thigh is an appropriate substitution for chicken breast in my experience.
@ -71,7 +67,5 @@ displayPhoto: ""
- It's difficult to sub cheese in this recipe but using a low fat mozzarella cheese makes it a slight bit healthier. - It's difficult to sub cheese in this recipe but using a low fat mozzarella cheese makes it a slight bit healthier.
## References ## References
- Reference Recipe **[HERE](https://www.homemadeitaliancooking.com/chicken-parmesan/)** - Reference Recipe **[HERE](https://www.homemadeitaliancooking.com/chicken-parmesan/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- ¼ cup olive oil - ¼ cup olive oil
- ½ shallot, finely chopped - ½ shallot, finely chopped
- 1 small garlic clove, finely grated - 1 small garlic clove, finely grated
@ -38,7 +36,6 @@ displayPhoto: ""
- ¼ cup chopped fresh basil" - ¼ cup chopped fresh basil"
## Instructions ## Instructions
1. Heat **oil** in a large skillet over medium. 1. Heat **oil** in a large skillet over medium.
2. Add **shallot** and **garlic** and cook, stirring occasionally, until softened, about 5 minutes. 2. Add **shallot** and **garlic** and cook, stirring occasionally, until softened, about 5 minutes.
3. Begin cooking **pasta** in salted water until al dente. This can be done while working on the next few steps for the pasta in parallel. 3. Begin cooking **pasta** in salted water until al dente. This can be done while working on the next few steps for the pasta in parallel.
@ -52,7 +49,6 @@ displayPhoto: ""
11. Season with salt and pepper and add 1 oz. **Parmesan**, tossing to coat. Divide pasta among bowls, then top with basil and more Parmesan. 11. Season with salt and pepper and add 1 oz. **Parmesan**, tossing to coat. Divide pasta among bowls, then top with basil and more Parmesan.
## Notes ## Notes
### Family Sized ### Family Sized
- Recipe makes about a pound of pasta, in my experience that ends up being about 8 large servings. - Recipe makes about a pound of pasta, in my experience that ends up being about 8 large servings.
@ -60,7 +56,5 @@ displayPhoto: ""
- Lasts quite a while, but reheat quality is not super presentable because of the heavy cream. - Lasts quite a while, but reheat quality is not super presentable because of the heavy cream.
## References ## References
- Reference Recipe **[HERE](https://www.bonappetit.com/recipe/fusilli-alla-vodka-basil-parmesan)** - Reference Recipe **[HERE](https://www.bonappetit.com/recipe/fusilli-alla-vodka-basil-parmesan)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 cup warm water (temperature depends on type of yeast, usually 100-110 degrees Fahrenheit) - 1 cup warm water (temperature depends on type of yeast, usually 100-110 degrees Fahrenheit)
- 2 ¼ teaspoons dry active yeast (1 normal sized packet) - 2 ¼ teaspoons dry active yeast (1 normal sized packet)
- ½ teaspoon granulated sugar - ½ teaspoon granulated sugar
@ -32,14 +30,12 @@ displayPhoto: ""
- 3 cups all-purpose flour (approximate) - 3 cups all-purpose flour (approximate)
## Instructions ## Instructions
1. Measure **warm water** (between 100°-110°F) in a measuring cup, then add the **yeast** and **sugar**. Stir gently, then let sit around 5 minutes until its active and foamy. This will happen within 5 minutes. Use a thermometer to measure water temp. 1. Measure **warm water** (between 100°-110°F) in a measuring cup, then add the **yeast** and **sugar**. Stir gently, then let sit around 5 minutes until its active and foamy. This will happen within 5 minutes. Use a thermometer to measure water temp.
2. Stir **salt**, **oil**, and 2 cups **flour** in a large mixing bowl, stirring in the yeast mixture as you go, using a wooden spoon. 2. Stir **salt**, **oil**, and 2 cups **flour** in a large mixing bowl, stirring in the yeast mixture as you go, using a wooden spoon.
3. Add the third cup of **flour** and then stir until you cant anymore. Remove the spoon and then use your hands to work the dough into a ball that is slightly sticky. 3. Add the third cup of **flour** and then stir until you cant anymore. Remove the spoon and then use your hands to work the dough into a ball that is slightly sticky.
4. Spray a second large bowl with nonstick cooking spray, add your pizza dough ball, then spray the top lightly with cooking spray and cover tightly with plastic wrap. Place in a warm area of the kitchen and let rise until doubled in size, about 1-2 hours. 4. Spray a second large bowl with nonstick cooking spray, add your pizza dough ball, then spray the top lightly with cooking spray and cover tightly with plastic wrap. Place in a warm area of the kitchen and let rise until doubled in size, about 1-2 hours.
## Notes ## Notes
### Family Sized ### Family Sized
- Recipe makes about 4 medium sized pizza doughs. Each would cover most of a pizza spatula as a thinner crust. - Recipe makes about 4 medium sized pizza doughs. Each would cover most of a pizza spatula as a thinner crust.
@ -47,7 +43,5 @@ displayPhoto: ""
- Good yeast is the secret here. From a packet is better than keeping bulk usually. Either way, the more bubbles the better. - Good yeast is the secret here. From a packet is better than keeping bulk usually. Either way, the more bubbles the better.
## References ## References
- Reference Recipe **[HERE](https://www.crazyforcrust.com/the-ultimate-pizza-crust-recipe/)** - Reference Recipe **[HERE](https://www.crazyforcrust.com/the-ultimate-pizza-crust-recipe/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 15 oz tomato sauce - 15 oz tomato sauce
- OR cut 6 oz tomato paste with water - OR cut 6 oz tomato paste with water
- 1-2 tablespoons dried oregano to taste - 1-2 tablespoons dried oregano to taste
@ -35,13 +33,11 @@ displayPhoto: ""
- 1 teaspoon sugar - 1 teaspoon sugar
## Instructions ## Instructions
1. Mix **tomato paste** and **sauce** together in a medium size bowl until smooth. 1. Mix **tomato paste** and **sauce** together in a medium size bowl until smooth.
2. Add the rest of the ingredients **oregano**, **Italian seasoning**, **garlic powder**, **onion powder**, **garlic salt**, **pepper** and **sugar** and stir until evenly distributed throughout the sauce. 2. Add the rest of the ingredients **oregano**, **Italian seasoning**, **garlic powder**, **onion powder**, **garlic salt**, **pepper** and **sugar** and stir until evenly distributed throughout the sauce.
3. Taste and adjust seasonings to your liking. 3. Taste and adjust seasonings to your liking.
## Notes ## Notes
### Low Sodium ### Low Sodium
- Avoid excess salt as this doesn't really need it. - Avoid excess salt as this doesn't really need it.
@ -49,7 +45,5 @@ displayPhoto: ""
- If you're adding meat a sweet sauce usually breaks up all the salt you'll be adding. - If you're adding meat a sweet sauce usually breaks up all the salt you'll be adding.
## References ## References
- Reference Recipe **[HERE](https://joyfoodsunshine.com/easy-homemade-pizza-sauce-recipe/)** - Reference Recipe **[HERE](https://joyfoodsunshine.com/easy-homemade-pizza-sauce-recipe/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- Eggs - Eggs
- 2 tablespoons white vinegar - 2 tablespoons white vinegar
- ¼ cup soy sauce - ¼ cup soy sauce
@ -31,7 +29,6 @@ displayPhoto: ""
- 1 teaspoon brown sugar - 1 teaspoon brown sugar
## Instructions ## Instructions
1. Bring a pot of enough water to cover the eggs to a boil once added. 1. Bring a pot of enough water to cover the eggs to a boil once added.
2. Place saucepan over high heat and add **vinegar** to help with peeling. Bring to a boil. 2. Place saucepan over high heat and add **vinegar** to help with peeling. Bring to a boil.
3. Prick a hole in the wide end of each egg (helps with shape and peeling). 3. Prick a hole in the wide end of each egg (helps with shape and peeling).
@ -43,7 +40,6 @@ displayPhoto: ""
9. When serving, remove from marinade and cut in half. 9. When serving, remove from marinade and cut in half.
## Notes ## Notes
### Tight Fit ### Tight Fit
- Make sure to find a bowl that can just barely fit all the eggs together, the sauce has to cover all of them. - Make sure to find a bowl that can just barely fit all the eggs together, the sauce has to cover all of them.
@ -51,7 +47,5 @@ displayPhoto: ""
- Depending on how long you age these, they'll get really salty. A few days is a good middle ground, after that you can take the eggs out and store seperately. - Depending on how long you age these, they'll get really salty. A few days is a good middle ground, after that you can take the eggs out and store seperately.
## References ## References
- Reference Recipe **[HERE](https://www.aspicyperspective.com/easy-ramen-egg-recipe-ajitsuke-tamago/)** - Reference Recipe **[HERE](https://www.aspicyperspective.com/easy-ramen-egg-recipe-ajitsuke-tamago/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 lbs beef (chuck or brisket), cut into bite-sized pieces - 2 lbs beef (chuck or brisket), cut into bite-sized pieces
- 4 cups water, 1 additional as needed - 4 cups water, 1 additional as needed
- 1 large onion, chopped - 1 large onion, chopped
@ -33,7 +31,6 @@ displayPhoto: ""
- 1 carton S&B Golden Curry Mix - 1 carton S&B Golden Curry Mix
## Instructions ## Instructions
1. In a large saucepan, heat **vegetable oil** over medium heat. Add **beef** and cook until browned. Remove and set aside. 1. In a large saucepan, heat **vegetable oil** over medium heat. Add **beef** and cook until browned. Remove and set aside.
2. Add **onion**, **carrots**, and **potatoes**. Stir-fry until fragrant. 2. Add **onion**, **carrots**, and **potatoes**. Stir-fry until fragrant.
3. Add **water**, **beef**, and **S&B Golden Curry Mix**. 3. Add **water**, **beef**, and **S&B Golden Curry Mix**.
@ -43,7 +40,6 @@ If the sauce is too thick, make a slurry with water and cornstarch. Note this wi
Macaroni salad goes great alongside the rice and curry stew. Macaroni salad goes great alongside the rice and curry stew.
## Notes ## Notes
### Let me elaborate on bite sized ### Let me elaborate on bite sized
- Cut it smaller than you think necessary and against grain. - Cut it smaller than you think necessary and against grain.
@ -54,7 +50,5 @@ Macaroni salad goes great alongside the rice and curry stew.
- Macaroni salad goes great alongside the rice and curry stew. - Macaroni salad goes great alongside the rice and curry stew.
## References ## References
- Reference Recipe **[HERE](https://www.waiyeehong.com/food-ingredients/sauces-oils/curry-sauces-and-pastes/golden-curry-mild)** - Reference Recipe **[HERE](https://www.waiyeehong.com/food-ingredients/sauces-oils/curry-sauces-and-pastes/golden-curry-mild)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 lbs chicken thigh fillets, cut into bite-sized pieces - 2 lbs chicken thigh fillets, cut into bite-sized pieces
- 4 cups chicken stock, 1 additional as needed, or water - 4 cups chicken stock, 1 additional as needed, or water
- 1 large onion, chopped - 1 large onion, chopped
@ -35,7 +33,6 @@ displayPhoto: ""
- 1 carton S&B Golden Curry Mix - 1 carton S&B Golden Curry Mix
## Instructions ## Instructions
1. In a large saucepan, heat **vegetable oil** over medium heat. Add **chicken** and cook until browned. 1. In a large saucepan, heat **vegetable oil** over medium heat. Add **chicken** and cook until browned.
2. Add **onion**, **carrots**, **bell pepper**, and **potatoes**. Stir-fry for about 5 minutes until fragrant. 2. Add **onion**, **carrots**, **bell pepper**, and **potatoes**. Stir-fry for about 5 minutes until fragrant.
3. Add **chicken stock** and the **golden curry mix**. Bring to a boil. 3. Add **chicken stock** and the **golden curry mix**. Bring to a boil.
@ -45,7 +42,6 @@ displayPhoto: ""
The coconut cream settles to the bottom of the can, make sure to re-mix it before using. The coconut cream settles to the bottom of the can, make sure to re-mix it before using.
## Notes ## Notes
### A different take on Golden Curry ### A different take on Golden Curry
- The sweetness of the coconut cream makes this a very different dish than the normal way we make Curry Stew. - The sweetness of the coconut cream makes this a very different dish than the normal way we make Curry Stew.
@ -53,7 +49,5 @@ The coconut cream settles to the bottom of the can, make sure to re-mix it befor
- The coconut cream settles to the bottom of the can, make sure to re-mix it before using. - The coconut cream settles to the bottom of the can, make sure to re-mix it before using.
## References ## References
- Reference Recipe **[HERE](https://www.recipetineats.com/golden-coconut-chicken-curry/)** - Reference Recipe **[HERE](https://www.recipetineats.com/golden-coconut-chicken-curry/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 pounds beef chuck, cut into 1-inch cubes - 2 pounds beef chuck, cut into 1-inch cubes
- 1 bottle (750 ml) red wine (preferably Burgundy) - 1 bottle (750 ml) red wine (preferably Burgundy)
- 2 cups beef stock - 2 cups beef stock
@ -41,7 +39,6 @@ displayPhoto: ""
- Fresh parsley for garnish - Fresh parsley for garnish
## Instructions ## Instructions
1. Preheat the oven to 325°F (160°C). 1. Preheat the oven to 325°F (160°C).
2. In a large Dutch oven, cook the **bacon** over medium heat until crispy. Optionally add a small bit of water while cooking to ensure a better crisp. Remove and set aside, leaving the fat in the pot. 2. In a large Dutch oven, cook the **bacon** over medium heat until crispy. Optionally add a small bit of water while cooking to ensure a better crisp. Remove and set aside, leaving the fat in the pot.
3. Season the **beef** with **salt** and **pepper**, then dust with **flour**. In the same pot, brown the **beef** in batches until browned on all sides. Remove and set aside. 3. Season the **beef** with **salt** and **pepper**, then dust with **flour**. In the same pot, brown the **beef** in batches until browned on all sides. Remove and set aside.
@ -54,7 +51,6 @@ displayPhoto: ""
Serve with crusty bread or over mashed potatoes for a hearty meal. Serve with crusty bread or over mashed potatoes for a hearty meal.
## Notes ## Notes
### Wine Selection ### Wine Selection
- Use a good quality red wine for the best flavor. Burgundy is traditional, but any full-bodied red will work. - Use a good quality red wine for the best flavor. Burgundy is traditional, but any full-bodied red will work.
@ -62,7 +58,5 @@ Serve with crusty bread or over mashed potatoes for a hearty meal.
- Serve with crusty bread or over mashed potatoes for a hearty meal. - Serve with crusty bread or over mashed potatoes for a hearty meal.
## References ## References
- Reference Recipe **[HERE](https://cafedelites.com/beef-bourguignon/)** - Reference Recipe **[HERE](https://cafedelites.com/beef-bourguignon/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Herb Butter ### Herb Butter
- 4 ounces unsalted butter - 4 ounces unsalted butter
- 1 teaspoon chopped fresh thyme leaves - 1 teaspoon chopped fresh thyme leaves
@ -38,7 +36,6 @@ displayPhoto: ""
- 1/2 cup olive oil - 1/2 cup olive oil
## Instructions ## Instructions
1. Preheat oven to 425°F. Lower oven shelf to the lowest part of your oven. 1. Preheat oven to 425°F. Lower oven shelf to the lowest part of your oven.
2. Combine the **Herb Butter ingredients** in a bowl and mix well. Reserve half of the herb butter in the refrigerator for later. 2. Combine the **Herb Butter ingredients** in a bowl and mix well. Reserve half of the herb butter in the refrigerator for later.
3. Line a large roasting pan with foil or parchment paper. Arrange the 4 halves of **garlic** cut-side down on the bottom of the pan with 4 sprigs each of **thyme** and **rosemary**, half of the **olive oil** and 1 slice of **lemon**. 3. Line a large roasting pan with foil or parchment paper. Arrange the 4 halves of **garlic** cut-side down on the bottom of the pan with 4 sprigs each of **thyme** and **rosemary**, half of the **olive oil** and 1 slice of **lemon**.
@ -54,7 +51,6 @@ displayPhoto: ""
13. Remove 2 1/2 cups of the liquid from the **pan juices** (top up with stock if you need too), strain and reserve for your gravy (see below). 13. Remove 2 1/2 cups of the liquid from the **pan juices** (top up with stock if you need too), strain and reserve for your gravy (see below).
## Notes ## Notes
### Scaling! ### Scaling!
- The recipe suggests using a 12 lb turkey, I have tried it with a 16 lb turkey with slightly scaled up measurements. - The recipe suggests using a 12 lb turkey, I have tried it with a 16 lb turkey with slightly scaled up measurements.
@ -62,7 +58,5 @@ displayPhoto: ""
- It's hard to get perfect cuts on the garlic. I found success by lightly sawing with a sharpened knife. When squeezing the garlic out try not to burn yourself. - It's hard to get perfect cuts on the garlic. I found success by lightly sawing with a sharpened knife. When squeezing the garlic out try not to burn yourself.
## References ## References
- Reference Recipe **[HERE](https://cafedelites.com/roast-turkey/)** - Reference Recipe **[HERE](https://cafedelites.com/roast-turkey/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 Salmon fillet - 1 Salmon fillet
- 2 tbsp mayonnaise - 2 tbsp mayonnaise
- 1 tbsp lemon pepper seasoning (to taste) - 1 tbsp lemon pepper seasoning (to taste)
@ -31,7 +29,6 @@ displayPhoto: ""
- 1 lemon (to taste) - 1 lemon (to taste)
## Instructions ## Instructions
1. Find a metal grill tray, or grill basket. 1. Find a metal grill tray, or grill basket.
2. Place salmon skin-side down in the grill tray/basket. 2. Place salmon skin-side down in the grill tray/basket.
3. Mix **mayonnaise** and **lemon pepper seasoning** in a bowl to taste. 3. Mix **mayonnaise** and **lemon pepper seasoning** in a bowl to taste.
@ -40,12 +37,9 @@ displayPhoto: ""
6. Serve with rice, and top with pepper and the juice of a lemon for best results. 6. Serve with rice, and top with pepper and the juice of a lemon for best results.
## Notes ## Notes
### More Lemon Pepper ### More Lemon Pepper
- Use a good amount of lemon pepper, but be careful of making it too lemony. Extra pepper is usually fine. - Use a good amount of lemon pepper, but be careful of making it too lemony. Extra pepper is usually fine.
## References ## References
- Idk talk to my mom... - Idk talk to my mom...
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 medium onion, coarsely chopped - 1 medium onion, coarsely chopped
- 3 medium scallions, chopped - 3 medium scallions, chopped
- 2 Scotch bonnet chiles, chopped - 2 Scotch bonnet chiles, chopped
@ -39,7 +37,6 @@ displayPhoto: ""
- 2 (3 1/2 to 4-pound) chickens, quartered - 2 (3 1/2 to 4-pound) chickens, quartered
## Instructions ## Instructions
1. In a food processor, combine the **onion**, **scallions**, **chiles**, **garlic**, **five-spice powder**, **allspice**, **pepper**, **thyme**, **nutmeg**, and **salt**; process to a coarse paste. 1. In a food processor, combine the **onion**, **scallions**, **chiles**, **garlic**, **five-spice powder**, **allspice**, **pepper**, **thyme**, **nutmeg**, and **salt**; process to a coarse paste.
2. With the machine on, add the **soy sauce** and **oil** in a steady stream. 2. With the machine on, add the **soy sauce** and **oil** in a steady stream.
3. Pour the marinade into a large, shallow dish, add the **chicken**, and turn to coat. 3. Pour the marinade into a large, shallow dish, add the **chicken**, and turn to coat.
@ -49,9 +46,6 @@ displayPhoto: ""
7. Transfer the chicken to a platter and serve. 7. Transfer the chicken to a platter and serve.
## Notes ## Notes
## References ## References
- Reference Recipe **[HERE](https://www.foodandwine.com/recipes/jamaican-jerk-chicken)** - Reference Recipe **[HERE](https://www.foodandwine.com/recipes/jamaican-jerk-chicken)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Ribs ### Ribs
- 1 rack baby back ribs or spare ribs (about 1 1/2 to 2 pounds) - 1 rack baby back ribs or spare ribs (about 1 1/2 to 2 pounds)
- 1 cup water - 1 cup water
@ -41,7 +39,6 @@ displayPhoto: ""
- 1/4 teaspoon cayenne pepper - 1/4 teaspoon cayenne pepper
## Instructions ## Instructions
1. Rinse the ribs and pat them dry. If your ribs still have the thin, shiny membrane on the back, remove it. 1. Rinse the ribs and pat them dry. If your ribs still have the thin, shiny membrane on the back, remove it.
2. In a small bowl, stir together the **brown sugar**, **paprika**, **black pepper**, **salt**, **chili powder**, **garlic powder**, **onion powder**, and **cayenne**. 2. In a small bowl, stir together the **brown sugar**, **paprika**, **black pepper**, **salt**, **chili powder**, **garlic powder**, **onion powder**, and **cayenne**.
3. Rub it all over the ribs, generously coating all of the sides. 3. Rub it all over the ribs, generously coating all of the sides.
@ -54,12 +51,9 @@ displayPhoto: ""
10. Place under the broiler just until the sauce begins to caramelize, about 2 minutes. 10. Place under the broiler just until the sauce begins to caramelize, about 2 minutes.
## Notes ## Notes
### Homemade is Best ### Homemade is Best
- Always worth it to make your own barbecue sauce & rub! - Always worth it to make your own barbecue sauce & rub!
## References ## References
- Reference Recipe **[HERE](https://www.wellplated.com/instant-pot-ribs/)** - Reference Recipe **[HERE](https://www.wellplated.com/instant-pot-ribs/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 1/4 - 2 1/2 cups pan juices (top up with chicken stock if needed) - 2 1/4 - 2 1/2 cups pan juices (top up with chicken stock if needed)
- 1/4 cup butter - 1/4 cup butter
- 1/4 cup flour - 1/4 cup flour
@ -31,18 +29,14 @@ displayPhoto: ""
- Kosher salt and freshly ground pepper (if needed) - Kosher salt and freshly ground pepper (if needed)
## Instructions ## Instructions
1. Melt the **butter** in a small pot over low-medium heat. Whisk in the **flour** and allow to cook for about a minute or two, while whisking. 1. Melt the **butter** in a small pot over low-medium heat. Whisk in the **flour** and allow to cook for about a minute or two, while whisking.
2. Pour in 1/2 cup of the **pan juices** and whisk until it forms a paste. Add remaining liquid in 1/2 cup increments, whisking in between, until the gravy is smooth. 2. Pour in 1/2 cup of the **pan juices** and whisk until it forms a paste. Add remaining liquid in 1/2 cup increments, whisking in between, until the gravy is smooth.
3. Allow to simmer over medium heat until thickened. Take off heat, stir in **worcestershire sauce** and season with **salt** and **pepper** (if needed). The gravy will continue to thicken as it cools. 3. Allow to simmer over medium heat until thickened. Take off heat, stir in **worcestershire sauce** and season with **salt** and **pepper** (if needed). The gravy will continue to thicken as it cools.
## Notes ## Notes
### Use it All ### Use it All
- Make sure to scoop up both drippings and fat when gathering the pan juices. All are important! - Make sure to scoop up both drippings and fat when gathering the pan juices. All are important!
## References ## References
- Reference Recipe **[HERE](https://cafedelites.com/turkey-gravy/)** - Reference Recipe **[HERE](https://cafedelites.com/turkey-gravy/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Meat Prep ### Meat Prep
- 4 to 5 pounds pork, cut into large chunks (Can substitute beef or lamb) - 4 to 5 pounds pork, cut into large chunks (Can substitute beef or lamb)
- ½ tablespoon kosher salt - ½ tablespoon kosher salt
@ -47,7 +45,6 @@ displayPhoto: ""
- ½ teaspoon ground cloves - ½ teaspoon ground cloves
## Instructions ## Instructions
1. Season the meat with **salt** and **pepper**. Heat **olive oil** in a large pot over medium-high heat and sear the meat on all sides until browned. 1. Season the meat with **salt** and **pepper**. Heat **olive oil** in a large pot over medium-high heat and sear the meat on all sides until browned.
2. In a separate pot, combine **guajillo**, **ancho**, and **árbol chiles**, **tomatoes**, **onion**, **cinnamon stick**, **bay leaves**, and **peppercorns**. Cover with water and boil for 10 minutes. 2. In a separate pot, combine **guajillo**, **ancho**, and **árbol chiles**, **tomatoes**, **onion**, **cinnamon stick**, **bay leaves**, and **peppercorns**. Cover with water and boil for 10 minutes.
3. Transfer the softened ingredients to a blender, add 1 cup of the cooking water, **beef broth**, **vinegar**, **garlic**, **cumin**, **oregano**, and **cloves**. Blend until smooth. 3. Transfer the softened ingredients to a blender, add 1 cup of the cooking water, **beef broth**, **vinegar**, **garlic**, **cumin**, **oregano**, and **cloves**. Blend until smooth.
@ -56,7 +53,6 @@ displayPhoto: ""
Straining after blending is important for a smooth texture in the consumé. However, leaving it lightly chunky is not a bad thing. Straining after blending is important for a smooth texture in the consumé. However, leaving it lightly chunky is not a bad thing.
## Notes ## Notes
### Ingredient Sourcing ### Ingredient Sourcing
- My local produce store carries bags of dried chilies - whole dried are the best. Purchasing online is a decent alternative for high quality chilies. - My local produce store carries bags of dried chilies - whole dried are the best. Purchasing online is a decent alternative for high quality chilies.
- Also, finding a decently fatty chuck roast is key for a quality consumé. - Also, finding a decently fatty chuck roast is key for a quality consumé.
@ -65,7 +61,5 @@ Straining after blending is important for a smooth texture in the consumé. Howe
- Straining after blending is important for a smooth texture in the consumé. However, leaving it lightly chunky is not a bad thing. - Straining after blending is important for a smooth texture in the consumé. However, leaving it lightly chunky is not a bad thing.
## References ## References
- Reference Recipe **[HERE](https://www.isabeleats.com/authentic-birria/)** - Reference Recipe **[HERE](https://www.isabeleats.com/authentic-birria/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 6-8 medium ears of corn, husks removed - 6-8 medium ears of corn, husks removed
- 1/2 cup mayonnaise - 1/2 cup mayonnaise
- 1/2 cup Mexican crema or sour cream - 1/2 cup Mexican crema or sour cream
@ -34,7 +32,6 @@ displayPhoto: ""
- 1 lime, cut into wedges - 1 lime, cut into wedges
## Instructions ## Instructions
1. Preheat a grill to medium-high heat. 1. Preheat a grill to medium-high heat.
2. While the grill heats, prepare the sauce. In a medium bowl, combine the **mayonnaise**, **crema** (or sour cream), 1/2 cup of **cotija cheese**, minced **cilantro**, **garlic**, and 1/2 teaspoon of **chili powder**. Mix well until combined. 2. While the grill heats, prepare the sauce. In a medium bowl, combine the **mayonnaise**, **crema** (or sour cream), 1/2 cup of **cotija cheese**, minced **cilantro**, **garlic**, and 1/2 teaspoon of **chili powder**. Mix well until combined.
3. Grill the **corn**, turning occasionally, until it's cooked through and charred in spots, which should take about 10 minutes. 3. Grill the **corn**, turning occasionally, until it's cooked through and charred in spots, which should take about 10 minutes.
@ -44,7 +41,6 @@ displayPhoto: ""
You can achieve a similar result by broiling the corn in your oven or carefully charring it over a gas stove flame. Be sure to turn it frequently for even cooking and char. You can achieve a similar result by broiling the corn in your oven or carefully charring it over a gas stove flame. Be sure to turn it frequently for even cooking and char.
## Notes ## Notes
### Cheese Selection ### Cheese Selection
- Cotija is a salty, crumbly Mexican cheese. If you can't find it, a dry feta or even grated Parmesan can be used as a substitute, though the flavor will be slightly different. - Cotija is a salty, crumbly Mexican cheese. If you can't find it, a dry feta or even grated Parmesan can be used as a substitute, though the flavor will be slightly different.
@ -52,7 +48,5 @@ You can achieve a similar result by broiling the corn in your oven or carefully
- You can achieve a similar result by broiling the corn in your oven or carefully charring it over a gas stove flame. Be sure to turn it frequently for even cooking and char. - You can achieve a similar result by broiling the corn in your oven or carefully charring it over a gas stove flame. Be sure to turn it frequently for even cooking and char.
## References ## References
- Reference Recipe **[HERE](https://www.seriouseats.com/mexican-street-corn-elotes-recipe)** - Reference Recipe **[HERE](https://www.seriouseats.com/mexican-street-corn-elotes-recipe)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 cup uncooked white rice - 1 cup uncooked white rice
- 2 cinnamon sticks - 2 cinnamon sticks
- 12 oz can evaporated milk - 12 oz can evaporated milk
@ -34,7 +32,6 @@ displayPhoto: ""
- 1/2 teaspoon vanilla extract (optional) - 1/2 teaspoon vanilla extract (optional)
## Instructions ## Instructions
1. Rinse the **rice** under cold water. In a bowl, combine **rice**, **cinnamon sticks**, and 4 cups of **warm water**. Cover and refrigerate at least 4 hours or overnight. 1. Rinse the **rice** under cold water. In a bowl, combine **rice**, **cinnamon sticks**, and 4 cups of **warm water**. Cover and refrigerate at least 4 hours or overnight.
2. Remove most of the **cinnamon sticks**, leaving a few small pieces. 2. Remove most of the **cinnamon sticks**, leaving a few small pieces.
3. Blend the soaked mixture in two batches until very smooth, about 34 minutes per batch. 3. Blend the soaked mixture in two batches until very smooth, about 34 minutes per batch.
@ -44,7 +41,6 @@ displayPhoto: ""
Heed the instructions and blend in batches. Water easily escapes from the blender or food processor and this stuff gets everywhere. Heed the instructions and blend in batches. Water easily escapes from the blender or food processor and this stuff gets everywhere.
## Notes ## Notes
### Soaking ### Soaking
- It is worth the time to soak the cinnamon and rice, helping you pull out more flavor and end with a product that is less lightly flavored water and more of a thicker drink. - It is worth the time to soak the cinnamon and rice, helping you pull out more flavor and end with a product that is less lightly flavored water and more of a thicker drink.
@ -52,7 +48,5 @@ Heed the instructions and blend in batches. Water easily escapes from the blende
- Heed the instructions and blend in batches. Water easily escapes from the blender or food processor and this stuff gets everywhere. - Heed the instructions and blend in batches. Water easily escapes from the blender or food processor and this stuff gets everywhere.
## References ## References
- Reference Recipe **[HERE](https://www.muydelish.com/traditional-mexican-horchata/)** - Reference Recipe **[HERE](https://www.muydelish.com/traditional-mexican-horchata/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 tablespoons vegetable oil - 2 tablespoons vegetable oil
- 1 cup uncooked long-grain white rice - 1 cup uncooked long-grain white rice
- 1 (8 ounce) can tomato sauce - 1 (8 ounce) can tomato sauce
@ -34,7 +32,6 @@ displayPhoto: ""
- 1/4 teaspoon chili powder - 1/4 teaspoon chili powder
## Instructions ## Instructions
1. Heat the **vegetable oil** in a large saucepan or skillet with a lid over medium heat. 1. Heat the **vegetable oil** in a large saucepan or skillet with a lid over medium heat.
2. Add the **rice** and cook, stirring constantly, until the grains are lightly golden brown. This toasting step is key for flavor and texture. 2. Add the **rice** and cook, stirring constantly, until the grains are lightly golden brown. This toasting step is key for flavor and texture.
3. Carefully stir in the **tomato sauce**, **chicken broth**, **salt**, **cumin**, **garlic powder**, and **chili powder**. 3. Carefully stir in the **tomato sauce**, **chicken broth**, **salt**, **cumin**, **garlic powder**, and **chili powder**.
@ -44,7 +41,6 @@ displayPhoto: ""
This rice is the perfect accompaniment to tacos, burritos, enchiladas, or any grilled meat. Garnish with fresh cilantro for extra flavor and color. This rice is the perfect accompaniment to tacos, burritos, enchiladas, or any grilled meat. Garnish with fresh cilantro for extra flavor and color.
## Notes ## Notes
### Vegetarian Option ### Vegetarian Option
- For a vegetarian version, simply substitute the chicken broth with vegetable broth. The result will be just as delicious. - For a vegetarian version, simply substitute the chicken broth with vegetable broth. The result will be just as delicious.
@ -52,7 +48,5 @@ This rice is the perfect accompaniment to tacos, burritos, enchiladas, or any gr
- This rice is the perfect accompaniment to tacos, burritos, enchiladas, or any grilled meat. Garnish with fresh cilantro for extra flavor and color. - This rice is the perfect accompaniment to tacos, burritos, enchiladas, or any grilled meat. Garnish with fresh cilantro for extra flavor and color.
## References ## References
- Reference Recipe **[HERE](https://www.allrecipes.com/recipe/27072/mexican-rice-ii/)** - Reference Recipe **[HERE](https://www.allrecipes.com/recipe/27072/mexican-rice-ii/)**
</RecipeCard> </RecipeCard>

View File

@ -15,17 +15,13 @@ display: true
displayPhoto: "" displayPhoto: ""
--- ---
Pinto beans that are great in a burrito on on their own.
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 cups uncooked pinto beans - 2 cups uncooked pinto beans
- 8 cups water - 8 cups water
- 1 small yellow onion, diced - 1 small yellow onion, diced
@ -34,26 +30,14 @@ Pinto beans that are great in a burrito on on their own.
- 1 bay leaf (optional) - 1 bay leaf (optional)
## Instructions ## Instructions
1. Rinse the **pinto beans**. 1. Rinse the **pinto beans**.
2. Add the rinsed **pinto beans**, **water**, diced **onions**, **salt**, **pepper**, and **bay leaf** to an instant pot. 2. Add the rinsed **pinto beans**, **water**, diced **onions**, **salt**, **pepper**, and **bay leaf** to an instant pot.
3. Set the instant pot to **Beans/Stew** setting, and cook for 32 minutes on high pressure. If cooking conventually simmer on a medium-low heat until the beans are the desired consistency. 3. Set the instant pot to **Beans/Stew** setting, and cook for 32 minutes on high pressure. If cooking conventually simmer on a medium-low heat until the beans are the desired consistency.
## Notes ## Notes
### Ratios ### Ratios
- In general, 1 cup of beans needs 4 cups of water to avoid the cooked beans drying out. - In general, 1 cup of beans needs 4 cups of water to avoid the cooked beans drying out.
## References ## References
- Reference Recipe **[HERE](https://www.rachelcooks.com/instant-pot-pinto-beans/)** - Reference Recipe **[HERE](https://www.rachelcooks.com/instant-pot-pinto-beans/)**
</RecipeCard> </RecipeCard>
Stuff after recipe RecipeCard
# Another H1
is this renered
## another h2
is this h2 rendered
![Image asdf Soon](./assets/not-found.svg)
*Image Comasdfing Soon*asdf

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 2 small garlic cloves, minced - 2 small garlic cloves, minced
- 1 tsp anchovy paste or 2 fillets - 1 tsp anchovy paste or 2 fillets
- 1 tsp dijon mustard - 1 tsp dijon mustard
@ -34,13 +32,11 @@ displayPhoto: ""
- 1/4 tsp freshly ground black pepper - 1/4 tsp freshly ground black pepper
## Instructions ## Instructions
1. In a medium bowl, whisk together the **garlic**, **anchovies**, **lemon juice**, **dijon mustard**, and **worcestershire sauce**. 1. In a medium bowl, whisk together the **garlic**, **anchovies**, **lemon juice**, **dijon mustard**, and **worcestershire sauce**.
2. Add the **mayonnaise**, **parmigiano-reggiano**, **salt**, and **pepper**, and whisk until well combined. 2. Add the **mayonnaise**, **parmigiano-reggiano**, **salt**, and **pepper**, and whisk until well combined.
3. Taste and adjust to your liking. 3. Taste and adjust to your liking.
## Notes ## Notes
### Anchovy Prep ### Anchovy Prep
- If using anchovy fillets, it's a good idea to smear them into a paste using the side of a knife to break down any bones. - If using anchovy fillets, it's a good idea to smear them into a paste using the side of a knife to break down any bones.
@ -48,7 +44,5 @@ displayPhoto: ""
- Using less mayonnaise makes for a thinner dressing, and in my opinion less mayo flavor is better. - Using less mayonnaise makes for a thinner dressing, and in my opinion less mayo flavor is better.
## References ## References
- Reference Recipe **[HERE](https://www.onceuponachef.com/recipes/caesar-salad-dressing.html)** - Reference Recipe **[HERE](https://www.onceuponachef.com/recipes/caesar-salad-dressing.html)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 large head cauliflower, cut into florets (about 2 to 2.5 lb) - 1 large head cauliflower, cut into florets (about 2 to 2.5 lb)
- 2 tablespoons unsalted butter (or olive oil) - 2 tablespoons unsalted butter (or olive oil)
- 2 cloves garlic, minced (or 1 teaspoon garlic powder) - 2 cloves garlic, minced (or 1 teaspoon garlic powder)
@ -34,7 +32,6 @@ displayPhoto: ""
- Chives or parsley, finely chopped (optional, for garnish) - Chives or parsley, finely chopped (optional, for garnish)
## Instructions ## Instructions
1. Trim and cut the **cauliflower** into medium florets. 1. Trim and cut the **cauliflower** into medium florets.
2. Cook until very tender: steam 1012 minutes (preferred) or boil 810 minutes. The florets should crush easily with tongs. 2. Cook until very tender: steam 1012 minutes (preferred) or boil 810 minutes. The florets should crush easily with tongs.
3. Drain thoroughly in a colander and let steamdry 35 minutes. For extra dryness, return to the empty pot over low heat for 12 minutes, stirring. 3. Drain thoroughly in a colander and let steamdry 35 minutes. For extra dryness, return to the empty pot over low heat for 12 minutes, stirring.
@ -44,7 +41,6 @@ displayPhoto: ""
7. Transfer to a bowl, garnish with **chives/parsley**, and serve hot. 7. Transfer to a bowl, garnish with **chives/parsley**, and serve hot.
## Notes ## Notes
### Drain Well ### Drain Well
- Waterlogged cauliflower makes a loose mash. After cooking, let the florets steamdry and drive off moisture for a fluffier, creamier texture. - Waterlogged cauliflower makes a loose mash. After cooking, let the florets steamdry and drive off moisture for a fluffier, creamier texture.
@ -52,7 +48,5 @@ displayPhoto: ""
- For ultrasmooth mash, strain through a fine sieve. For dairyfree, use olive oil and unsweetened almond milk. Addins: roasted garlic, horseradish, or a spoon of sour cream for tang. - For ultrasmooth mash, strain through a fine sieve. For dairyfree, use olive oil and unsweetened almond milk. Addins: roasted garlic, horseradish, or a spoon of sour cream for tang.
## References ## References
- Reference Recipe **[HERE](https://www.seriouseats.com/cauliflower-puree-recipe)** - Reference Recipe **[HERE](https://www.seriouseats.com/cauliflower-puree-recipe)**
</RecipeCard> </RecipeCard>

View File

@ -20,12 +20,10 @@ These are a great topping for ramen, sandwiches, charcuterie, salads, or anythin
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 large red onion, peeled and very thinly sliced - 1 large red onion, peeled and very thinly sliced
- 3/4 cup apple cider vinegar - 3/4 cup apple cider vinegar
- 1/4 cup water - 1/4 cup water
@ -33,14 +31,12 @@ These are a great topping for ramen, sandwiches, charcuterie, salads, or anythin
- 1-2 tablespoons sweetener (maple syrup, honey, or sugar) - 1-2 tablespoons sweetener (maple syrup, honey, or sugar)
## Instructions ## Instructions
1. Mix the **vinegar**, **water**, **salt**, and **sweetener** in a heated saucepan. Cook over medium-high heat until simmering. Microwave works as well. 1. Mix the **vinegar**, **water**, **salt**, and **sweetener** in a heated saucepan. Cook over medium-high heat until simmering. Microwave works as well.
2. Stuff thinly-sliced **onions** into a jar or container with a lid. You can get way more in there than you think if you really stuff them. 2. Stuff thinly-sliced **onions** into a jar or container with a lid. You can get way more in there than you think if you really stuff them.
3. Pour the hot vinegar mixture over the onions and seal. Shake briefly to ensure full coverage. You can additionally shake periodically if you want. 3. Pour the hot vinegar mixture over the onions and seal. Shake briefly to ensure full coverage. You can additionally shake periodically if you want.
4. Marinate for as little as 30 minutes and up to 2 weeks before consuming. You can press onions down with a spoon to submerge after a while if they stick out of the liquid. 4. Marinate for as little as 30 minutes and up to 2 weeks before consuming. You can press onions down with a spoon to submerge after a while if they stick out of the liquid.
## Notes ## Notes
### As Thin as Possible ### As Thin as Possible
- The onions will pack a lot better, and ferment more if they are sliced super thin. Use a mandoline if one is available. - The onions will pack a lot better, and ferment more if they are sliced super thin. Use a mandoline if one is available.
@ -51,7 +47,5 @@ These are a great topping for ramen, sandwiches, charcuterie, salads, or anythin
- Mix additionally after bottling to ensure proper coverage. - Mix additionally after bottling to ensure proper coverage.
## References ## References
- Reference Recipe **[HERE](https://www.gimmesomeoven.com/quick-pickled-red-onions/)** - Reference Recipe **[HERE](https://www.gimmesomeoven.com/quick-pickled-red-onions/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
- 1 lbs Yukon Gold potatoes (enough cubed to fill 2/3 of a gallon ziploc bag) - 1 lbs Yukon Gold potatoes (enough cubed to fill 2/3 of a gallon ziploc bag)
- 2 tbsp / 1/2 oz unsalted butter - 2 tbsp / 1/2 oz unsalted butter
- 1/4 cup cream cheese (alternate: sour cream) - 1/4 cup cream cheese (alternate: sour cream)
@ -33,7 +31,6 @@ displayPhoto: ""
- salt and pepper to taste - salt and pepper to taste
## Instructions ## Instructions
1. Cube the **potatoes**, optionally leaving the skin on. Optionally soak in water to get the starch out. 1. Cube the **potatoes**, optionally leaving the skin on. Optionally soak in water to get the starch out.
2. Load the potatoes into a sous vide bag. Fill it up no more than 3/4 of the way full, ideally closer to 1/2. 2. Load the potatoes into a sous vide bag. Fill it up no more than 3/4 of the way full, ideally closer to 1/2.
3. Add the **butter**, **cream cheese**/**sour cream**, **garlic powder**, **salt**, **pepper**, **rosemary**, and **milk** to the bag. 3. Add the **butter**, **cream cheese**/**sour cream**, **garlic powder**, **salt**, **pepper**, **rosemary**, and **milk** to the bag.
@ -45,7 +42,6 @@ displayPhoto: ""
9. Pour/plate into bowl. Sprinkle with garnish if available. 9. Pour/plate into bowl. Sprinkle with garnish if available.
## Notes ## Notes
### No Pressure! ### No Pressure!
- Adjust to what you know you like! Measurements can be adjusted after cooking if needed. - Adjust to what you know you like! Measurements can be adjusted after cooking if needed.
@ -53,7 +49,5 @@ displayPhoto: ""
- The only way to mess up is to create a hole in the bag. This happens when the rosemary branches poke the bag. Make sure to chop up the rosemary before putting in the bag. - The only way to mess up is to create a hole in the bag. This happens when the rosemary branches poke the bag. Make sure to chop up the rosemary before putting in the bag.
## References ## References
- Reference Recipe **[HERE](https://www.youtube.com/watch?app=desktop&v=WRrtw9NwcIU&t=72s)** - Reference Recipe **[HERE](https://www.youtube.com/watch?app=desktop&v=WRrtw9NwcIU&t=72s)**
</RecipeCard> </RecipeCard>

View File

@ -20,12 +20,10 @@ A comforting chicken noodle soup perfect for rainy or sick days. Made easy in th
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Main Ingredients ### Main Ingredients
- 2 tablespoons unsalted butter - 2 tablespoons unsalted butter
- 1 large onion, chopped - 1 large onion, chopped
@ -42,7 +40,6 @@ A comforting chicken noodle soup perfect for rainy or sick days. Made easy in th
- 2 cups uncooked egg noodles - 2 cups uncooked egg noodles
## Instructions ## Instructions
1. Turn your Instant Pot to the saute setting. 1. Turn your Instant Pot to the saute setting.
2. Add the **butter** and cook until melted. Add the **onion**, **carrots**, and **celery** and saute for 3 minutes until the **onion** softens and becomes translucent. 2. Add the **butter** and cook until melted. Add the **onion**, **carrots**, and **celery** and saute for 3 minutes until the **onion** softens and becomes translucent.
3. Season with **salt** and **pepper**, then add the **thyme**, **parsley**, **oregano**, and **chicken bouillon**. Stir to combine. 3. Season with **salt** and **pepper**, then add the **thyme**, **parsley**, **oregano**, and **chicken bouillon**. Stir to combine.
@ -54,7 +51,6 @@ A comforting chicken noodle soup perfect for rainy or sick days. Made easy in th
9. Turn off the Instant Pot. Add the shredded **chicken** back to the pot, taste for seasoning and adjust as necessary. Garnish with additional **parsley** if preferred. 9. Turn off the Instant Pot. Add the shredded **chicken** back to the pot, taste for seasoning and adjust as necessary. Garnish with additional **parsley** if preferred.
## Notes ## Notes
### Meal Prep Tips ### Meal Prep Tips
- **Make it last**: This recipe can make nearly a whole week of soup. Double it if you're feeling dangerous. - **Make it last**: This recipe can make nearly a whole week of soup. Double it if you're feeling dangerous.
- **Noodle absorption**: If doing meal prep with lots of noodles or macaroni, they tend to soak up the broth. Double the water and broth amounts if you want it to keep in the fridge and retain liquid, versus becoming more of a soup-casserole. - **Noodle absorption**: If doing meal prep with lots of noodles or macaroni, they tend to soak up the broth. Double the water and broth amounts if you want it to keep in the fridge and retain liquid, versus becoming more of a soup-casserole.
@ -66,7 +62,5 @@ A comforting chicken noodle soup perfect for rainy or sick days. Made easy in th
This recipe can be made on the stovetop by simmering the ingredients in a large pot for about 30-40 minutes until the chicken is cooked through, then following the same steps for shredding and adding noodles. This recipe can be made on the stovetop by simmering the ingredients in a large pot for about 30-40 minutes until the chicken is cooked through, then following the same steps for shredding and adding noodles.
## References ## References
- Reference Recipe **[HERE](https://www.jocooks.com/recipes/instant-pot-chicken-noodle-soup/)** - Reference Recipe **[HERE](https://www.jocooks.com/recipes/instant-pot-chicken-noodle-soup/)**
</RecipeCard> </RecipeCard>

View File

@ -18,12 +18,10 @@ displayPhoto: ""
<RecipeCard> <RecipeCard>
## Photos ## Photos
![Image Coming Soon](./assets/not-found.svg) ![Image Coming Soon](./assets/not-found.svg)
*Image Coming Soon* *Image Coming Soon*
## Ingredients ## Ingredients
### Broth ### Broth
- 2 lbs beef bones (knuckle, marrow, or oxtail) - 2 lbs beef bones (knuckle, marrow, or oxtail)
- 1 lb beef brisket (chuck as substitute) - 1 lb beef brisket (chuck as substitute)
@ -51,7 +49,6 @@ displayPhoto: ""
- Hoisin sauce and Sriracha for serving - Hoisin sauce and Sriracha for serving
## Instructions ## Instructions
1. In a large pot, add **beef bones** and **brisket**. Make sure to cut the brisket in half prior to this. Cover with water and bring to a boil and boil for **5 minutes**. Skim any scum off the top. 1. In a large pot, add **beef bones** and **brisket**. Make sure to cut the brisket in half prior to this. Cover with water and bring to a boil and boil for **5 minutes**. Skim any scum off the top.
2. Simultaneously, char the **onion** and **ginger** over medium flame. Rinse away the blackened skin. 2. Simultaneously, char the **onion** and **ginger** over medium flame. Rinse away the blackened skin.
3. Also, toast **star anise**, **cinnamon stick**, **cloves**, **cardimom pods**, **coriander seeds**, and **fennel seeds** over medium heat in a saucepan for **3 minutes**. 3. Also, toast **star anise**, **cinnamon stick**, **cloves**, **cardimom pods**, **coriander seeds**, and **fennel seeds** over medium heat in a saucepan for **3 minutes**.
@ -62,7 +59,6 @@ displayPhoto: ""
Pho is traditionally served piping hot with plenty of fresh herbs and condiments. The key is the balance of rich broth, tender meat, and fresh garnishes. Pho is traditionally served piping hot with plenty of fresh herbs and condiments. The key is the balance of rich broth, tender meat, and fresh garnishes.
## Notes ## Notes
### Cooking Instructions ### Cooking Instructions
- Getting beef bones with cartilage is very important as well as getting a stew meat. Also do not forget to skim after boiling. - Getting beef bones with cartilage is very important as well as getting a stew meat. Also do not forget to skim after boiling.
@ -70,7 +66,5 @@ Pho is traditionally served piping hot with plenty of fresh herbs and condiments
- Pho is traditionally served piping hot with plenty of fresh herbs and condiments. The key is the balance of rich broth, tender meat, and fresh garnishes. - Pho is traditionally served piping hot with plenty of fresh herbs and condiments. The key is the balance of rich broth, tender meat, and fresh garnishes.
## References ## References
- Reference Recipe **[HERE](https://thewoksoflife.com/pho-vietnamese-noodle-soup/)** - Reference Recipe **[HERE](https://thewoksoflife.com/pho-vietnamese-noodle-soup/)**
</RecipeCard> </RecipeCard>

View File

@ -2,7 +2,6 @@ import type { Config } from "tailwindcss";
export default { export default {
content: [ content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}", "./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}", "./app/**/*.{js,ts,jsx,tsx,mdx}",
], ],
@ -14,5 +13,5 @@ export default {
}, },
}, },
}, },
plugins: [], plugins: [require("@tailwindcss/typography")],
} satisfies Config; } satisfies Config;