diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..26be9e8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+node_modules
+.next
+out
+emails-export
+.DS_Store
+*.log
+.env
+.env.local
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..4098d2a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,25 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [0.1.0] - 2026-08-07
+
+### Added
+
+- React Email + Next.js preview app for Gishen Pharmacy
+- Brand tokens and logo aligned with Gishen-B2B / Gishen-Admin
+- English and Amharic copy for all templates
+- Auth templates: welcome, password-reset, email-verify, user-invite
+- Order templates: confirmation, packing, out-for-delivery, delivered, cancelled
+- B2B templates: org-invite, join-code, approval-needed, statement-ready, credit-alert, organisation-verified
+- Prescription templates: submitted, decision, ready
+- Admin ops templates: low-stock, dispatch-assigned, procurement-alert
+- Marketing: promotional
+- Analytics: shop-summary (`daily` | `weekly` | `monthly` | `quarterly` | `yearly`)
+- HTML render API at `/api/email/[template]`
+- Design and implementation docs under `docs/superpowers/`
+
+[0.1.0]: https://gitea.yaltopia.com/Gishen/Gishen-Email-Templates/releases/tag/v0.1.0
diff --git a/README.md b/README.md
index e69de29..7e4b3b2 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,89 @@
+# Gishen Email Templates
+
+React Email templates and a Next.js preview app for **Gishen Pharmacy** — shared across Ecom, Admin, and B2B.
+
+Brand colors and logo are taken from `Gishen-B2B` / `Gishen-Admin` (`#A8C73A`, `#141414`, `#E28A1A`, cream `#F6F7F2`).
+
+## Features
+
+- 23 templates (auth, orders, B2B, prescriptions, admin ops, marketing, shop analytics)
+- English + Amharic (`locale=en|am`)
+- Preview UI with category navigation, locale toggle, HTML download
+- Render API for demos / consumer apps
+- `shop-summary` with `period=daily|weekly|monthly|quarterly|yearly`
+
+## Getting started
+
+```bash
+npm install
+npm run preview
+```
+
+Open [http://localhost:3000](http://localhost:3000).
+
+### React Email CLI
+
+```bash
+npm run email
+```
+
+### Export HTML
+
+```bash
+npm run build
+```
+
+## Render API
+
+```
+GET /api/email/[template]?locale=en|am
+GET /api/email/shop-summary?locale=en&period=weekly
+```
+
+Returns `text/html`.
+
+## Templates
+
+| ID | Category |
+|----|----------|
+| `welcome` | Auth |
+| `password-reset` | Auth |
+| `email-verify` | Auth |
+| `user-invite` | Auth |
+| `order-confirmation` | Orders |
+| `order-packing` | Orders |
+| `order-out-for-delivery` | Orders |
+| `order-delivered` | Orders |
+| `order-cancelled` | Orders |
+| `org-invite` | B2B |
+| `join-code` | B2B |
+| `approval-needed` | B2B |
+| `statement-ready` | B2B |
+| `credit-alert` | B2B |
+| `organisation-verified` | B2B |
+| `prescription-submitted` | Prescriptions |
+| `prescription-decision` | Prescriptions |
+| `prescription-ready` | Prescriptions |
+| `low-stock` | Admin ops |
+| `dispatch-assigned` | Admin ops |
+| `procurement-alert` | Admin ops |
+| `promotional` | Marketing |
+| `shop-summary` | Analytics |
+
+## Consuming from Gishen apps
+
+1. **Demo / staging:** call the render API and send the HTML through your ESP.
+2. **Production (later):** import templates from this package or copy exported HTML into your notification worker.
+
+Do not hardcode brand colours in Ecom/Admin/B2B mailers — keep them here.
+
+## Related repos
+
+- [Gishen-Ecom](https://gitea.yaltopia.com/Gishen/Gishen-Ecom)
+- [Gishen-Admin](https://gitea.yaltopia.com/Gishen/Gishen-Admin)
+- [Gishen-B2B](https://gitea.yaltopia.com/Gishen/Gishen-B2B)
+- Structure inspired by Amba-Emails / Yaltopia Ticket Email
+
+## License
+
+Proprietary — Yaltopia / Gishen.
diff --git a/app/api/email/[template]/route.ts b/app/api/email/[template]/route.ts
new file mode 100644
index 0000000..ff6bfe0
--- /dev/null
+++ b/app/api/email/[template]/route.ts
@@ -0,0 +1,38 @@
+import React from 'react';
+import { render } from '@react-email/render';
+import { NextResponse } from 'next/server';
+import { templateMap } from '../../../../emails/registry';
+import { resolveLocale } from '../../../../emails/i18n/types';
+import type { ShopSummaryPeriod } from '../../../../emails/shop-summary';
+
+export async function GET(
+ request: Request,
+ context: { params: Promise<{ template: string }> }
+) {
+ const { template } = await context.params;
+ const entry = templateMap[template];
+
+ if (!entry) {
+ return NextResponse.json({ error: 'Template not found' }, { status: 404 });
+ }
+
+ const { searchParams } = new URL(request.url);
+ const locale = resolveLocale(searchParams.get('locale') || undefined);
+ const period = (searchParams.get('period') ||
+ entry.defaultProps?.period ||
+ 'weekly') as ShopSummaryPeriod;
+
+ const html = await render(
+ React.createElement(entry.component, {
+ locale,
+ ...(entry.id === 'shop-summary' ? { period } : {}),
+ ...entry.defaultProps,
+ })
+ );
+
+ return new NextResponse(html, {
+ headers: {
+ 'Content-Type': 'text/html; charset=utf-8',
+ },
+ });
+}
diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..c1a3e54
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,24 @@
+import type { ReactNode } from 'react';
+import { theme } from '../emails/theme';
+
+export const metadata = {
+ title: 'Gishen Email Templates',
+ description: 'Preview transactional emails for Gishen Pharmacy',
+};
+
+export default function RootLayout({ children }: { children: ReactNode }) {
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/app/page.tsx b/app/page.tsx
new file mode 100644
index 0000000..90ecbff
--- /dev/null
+++ b/app/page.tsx
@@ -0,0 +1,315 @@
+'use client';
+
+import { useEffect, useMemo, useState } from 'react';
+import { templateCatalog, type TemplateCategory } from '../emails/registry';
+import { theme } from '../emails/theme';
+import type { Locale } from '../emails/i18n/types';
+import type { ShopSummaryPeriod } from '../emails/shop-summary';
+
+const periods: ShopSummaryPeriod[] = [
+ 'daily',
+ 'weekly',
+ 'monthly',
+ 'quarterly',
+ 'yearly',
+];
+
+export default function Home() {
+ const [selectedId, setSelectedId] = useState(templateCatalog[0].id);
+ const [locale, setLocale] = useState('en');
+ const [period, setPeriod] = useState('weekly');
+ const [htmlContent, setHtmlContent] = useState('');
+ const [loading, setLoading] = useState(true);
+
+ const selected = useMemo(
+ () => templateCatalog.find((t) => t.id === selectedId) || templateCatalog[0],
+ [selectedId]
+ );
+
+ const grouped = useMemo(() => {
+ return templateCatalog.reduce>(
+ (acc, item) => {
+ if (!acc[item.category]) acc[item.category] = [];
+ acc[item.category].push(item);
+ return acc;
+ },
+ {} as Record
+ );
+ }, []);
+
+ const loadTemplate = async (id: string, nextLocale: Locale, nextPeriod: ShopSummaryPeriod) => {
+ setLoading(true);
+ try {
+ const params = new URLSearchParams({ locale: nextLocale });
+ if (id === 'shop-summary') params.set('period', nextPeriod);
+ const response = await fetch(`/api/email/${id}?${params.toString()}`);
+ const html = await response.text();
+ setHtmlContent(html);
+ } catch (error) {
+ console.error(error);
+ setHtmlContent('Failed to render template.
');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => {
+ loadTemplate(selectedId, locale, period);
+ }, [selectedId, locale, period]);
+
+ const handleDownload = () => {
+ const blob = new Blob([htmlContent], { type: 'text/html' });
+ const url = URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.href = url;
+ a.download = `${selectedId}-${locale}.html`;
+ a.click();
+ URL.revokeObjectURL(url);
+ };
+
+ return (
+
+
+
+
Gishen Pharmacy
+
Email Templates
+
+ Shared previews for Ecom, Admin, and B2B · brand colors & logo from Gishen apps
+
+
+
+
+ {selectedId === 'shop-summary' && (
+
+ )}
+
+
+
+
+
+
+
+
+
+ {selected.name}
+
+ /api/email/{selected.id}?locale={locale}
+ {selectedId === 'shop-summary' ? `&period=${period}` : ''}
+
+
+ {loading ? (
+ Rendering…
+ ) : (
+
+ )}
+
+
+
+ );
+}
+
+const page = {
+ minHeight: '100vh',
+ background: `linear-gradient(180deg, ${theme.colors.cream} 0%, #E8EDD8 100%)`,
+};
+
+const header = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ gap: '24px',
+ alignItems: 'flex-end',
+ padding: '28px 32px 20px',
+ borderBottom: `1px solid ${theme.colors.line}`,
+ background: theme.colors.surface,
+ flexWrap: 'wrap' as const,
+};
+
+const eyebrow = {
+ margin: 0,
+ color: theme.colors.brandDeep,
+ fontWeight: 700,
+ letterSpacing: '0.04em',
+ textTransform: 'uppercase' as const,
+ fontSize: '12px',
+};
+
+const title = {
+ margin: '6px 0 8px',
+ fontSize: '32px',
+ color: theme.colors.forest,
+};
+
+const subtitle = {
+ margin: 0,
+ color: theme.colors.muted,
+ maxWidth: '520px',
+};
+
+const controls = {
+ display: 'flex',
+ gap: '12px',
+ alignItems: 'flex-end',
+ flexWrap: 'wrap' as const,
+};
+
+const controlLabel = {
+ display: 'flex',
+ flexDirection: 'column' as const,
+ gap: '6px',
+ fontSize: '12px',
+ fontWeight: 600,
+ color: theme.colors.muted,
+};
+
+const select = {
+ minWidth: '140px',
+ padding: '10px 12px',
+ borderRadius: '8px',
+ border: `1px solid ${theme.colors.line}`,
+ background: theme.colors.surface,
+ color: theme.colors.forest,
+};
+
+const downloadBtn = {
+ padding: '11px 16px',
+ borderRadius: '8px',
+ border: 'none',
+ background: theme.colors.forest,
+ color: theme.colors.brand,
+ fontWeight: 600,
+ cursor: 'pointer',
+};
+
+const layout = {
+ display: 'grid',
+ gridTemplateColumns: '280px 1fr',
+ minHeight: 'calc(100vh - 140px)',
+};
+
+const sidebar = {
+ padding: '20px 16px 40px',
+ borderRight: `1px solid ${theme.colors.line}`,
+ background: 'rgba(255,255,255,0.7)',
+ overflowY: 'auto' as const,
+ maxHeight: 'calc(100vh - 140px)',
+};
+
+const categoryBlock = {
+ marginBottom: '18px',
+};
+
+const categoryTitle = {
+ margin: '0 0 8px',
+ fontSize: '12px',
+ textTransform: 'uppercase' as const,
+ letterSpacing: '0.06em',
+ color: theme.colors.muted,
+};
+
+const nav = {
+ display: 'flex',
+ flexDirection: 'column' as const,
+ gap: '4px',
+};
+
+const navButton = {
+ textAlign: 'left' as const,
+ padding: '10px 12px',
+ borderRadius: '8px',
+ border: 'none',
+ background: 'transparent',
+ color: theme.colors.forest,
+ cursor: 'pointer',
+ fontSize: '14px',
+};
+
+const activeNavButton = {
+ background: theme.colors.brand,
+ color: theme.colors.forest,
+ fontWeight: 700,
+};
+
+const previewPane = {
+ padding: '20px',
+};
+
+const previewHeader = {
+ display: 'flex',
+ justifyContent: 'space-between',
+ gap: '12px',
+ alignItems: 'center',
+ marginBottom: '12px',
+ flexWrap: 'wrap' as const,
+};
+
+const meta = {
+ fontSize: '12px',
+ color: theme.colors.muted,
+ fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',
+};
+
+const iframe = {
+ width: '100%',
+ height: 'calc(100vh - 220px)',
+ border: `1px solid ${theme.colors.line}`,
+ borderRadius: '12px',
+ background: theme.colors.surface,
+};
+
+const loadingState = {
+ height: 'calc(100vh - 220px)',
+ display: 'grid',
+ placeItems: 'center',
+ border: `1px dashed ${theme.colors.line}`,
+ borderRadius: '12px',
+ color: theme.colors.muted,
+};
diff --git a/docs/superpowers/plans/2026-08-07-gishen-email-templates.md b/docs/superpowers/plans/2026-08-07-gishen-email-templates.md
new file mode 100644
index 0000000..d35dfe3
--- /dev/null
+++ b/docs/superpowers/plans/2026-08-07-gishen-email-templates.md
@@ -0,0 +1,141 @@
+# Gishen Email Templates Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Ship a React Email + Next.js demo app with 23 Gishen Pharmacy email templates (en/am), brand assets from Gishen-B2B/Admin, HTML render API, CHANGELOG, and Gitea remote setup.
+
+**Architecture:** Mirror Amba-Emails: templates under `emails/`, shared theme/layout/components/i18n, Next preview page + `/api/email/[template]?locale=`, static logo in `public/brand/`.
+
+**Tech Stack:** Next.js 14, React 18, `@react-email/components`, `@react-email/render`, `react-email`, TypeScript.
+
+## Global Constraints
+
+- Brand colors exactly: brand `#A8C73A`, brandDeep `#8FAD2F`, forest `#141414`, accent `#E28A1A`, cream `#F6F7F2`, surface `#FFFFFF`, line `#E2E5D8`, muted `#5C5F56`
+- Product name: Gishen Pharmacy; footer email `info@gishenpharmacy.org`; site `https://gishenpharmacy.org`
+- Every template accepts `locale: 'en' | 'am'` (default `en`)
+- `shop-summary` is one template with `period: 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly'`
+- No SMTP/ESP sending in v1
+- CHANGELOG Keep a Changelog; version `0.1.0`
+
+---
+
+## File map
+
+```
+Gishen-Email-Templates/
+ package.json
+ tsconfig.json
+ next.config.js
+ next-env.d.ts
+ .gitignore
+ README.md
+ CHANGELOG.md
+ public/brand/gishen-logo.png
+ emails/
+ theme.ts
+ registry.ts
+ utils/logoDataUri.ts
+ i18n/types.ts
+ i18n/common.ts
+ i18n/templates/*.ts # string tables per template id
+ components/{EmailLayout,Button,Card,StatusBanner,OrderSummary,MetricGrid}.tsx
+ welcome.tsx … shop-summary.tsx
+ app/
+ layout.tsx
+ page.tsx
+ api/email/[template]/route.ts
+```
+
+---
+
+### Task 1: Scaffold project + brand foundation
+
+**Files:**
+- Create: `package.json`, `tsconfig.json`, `next.config.js`, `next-env.d.ts`, `.gitignore`
+- Create: `emails/theme.ts`, `emails/utils/logoDataUri.ts`
+- Create: `emails/components/EmailLayout.tsx`, `Button.tsx`, `Card.tsx`, `StatusBanner.tsx`, `OrderSummary.tsx`, `MetricGrid.tsx`
+- Create: `emails/i18n/types.ts`, `emails/i18n/common.ts`
+- Copy: `public/brand/gishen-logo.png` from Gishen-B2B
+
+**Interfaces:**
+- Produces: `theme`, `Locale`, `tCommon(locale)`, `EmailLayout`, `Button`, `Card`, `StatusBanner`, `OrderSummary`, `MetricGrid`, `logoDataUri`
+
+- [ ] **Step 1: Create package.json and configs** (same deps as Amba-Emails)
+
+- [ ] **Step 2: Copy logo and write theme + logoDataUri (node base64)**
+
+- [ ] **Step 3: Implement layout + shared components using Gishen colors**
+
+- [ ] **Step 4: `npm install` and confirm no errors**
+
+- [ ] **Step 5: Commit** `chore: scaffold Gishen email project and brand tokens`
+
+---
+
+### Task 2: i18n tables + all 23 templates + registry
+
+**Files:**
+- Create: `emails/i18n/templates/*.ts` (one module or grouped modules)
+- Create: 23 template files listed in the design spec
+- Create: `emails/registry.ts` mapping id → component + default demo props
+
+**Interfaces:**
+- Consumes: layout/components/theme/`Locale`
+- Produces: `templates` registry `Record`
+- Each email: `export function XEmail(props: { locale?: Locale; ... })`
+- `shop-summary` props include `period: 'daily'|'weekly'|'monthly'|'quarterly'|'yearly'`
+
+- [ ] **Step 1: Write i18n string tables for en/am for all templates**
+
+- [ ] **Step 2: Implement each template using shared components (Ethiopian pharmacy sample data)**
+
+- [ ] **Step 3: Export registry of all template ids**
+
+- [ ] **Step 4: Commit** `feat: add Gishen email templates with en/am copy`
+
+---
+
+### Task 3: Next preview app + render API
+
+**Files:**
+- Create: `app/layout.tsx`, `app/page.tsx`, `app/api/email/[template]/route.ts`
+
+**Interfaces:**
+- `GET /api/email/[template]?locale=en|am` → `text/html`
+- Preview: category sidebar, locale toggle, download HTML
+
+- [ ] **Step 1: Implement API route using registry + `@react-email/render`**
+
+- [ ] **Step 2: Implement preview page with locale toggle**
+
+- [ ] **Step 3: Run `npm run preview`, hit `/` and one API URL, confirm HTML**
+
+- [ ] **Step 4: Commit** `feat: add preview UI and HTML render API`
+
+---
+
+### Task 4: Docs, changelog, remote
+
+**Files:**
+- Modify: `README.md`
+- Create: `CHANGELOG.md`
+
+- [ ] **Step 1: Document templates, props, scripts, consumer notes**
+
+- [ ] **Step 2: CHANGELOG 0.1.0 entry listing template set**
+
+- [ ] **Step 3: Commit** `docs: add README and CHANGELOG for 0.1.0`
+
+- [ ] **Step 4: `git remote add origin …` and `git push -u origin main` if credentials allow**
+
+---
+
+## Spec coverage checklist
+
+- [x] Amba-Emails stack
+- [x] Brand colors + logo
+- [x] en + am
+- [x] All template categories + organisation-verified + shop-summary period prop
+- [x] Preview + API
+- [x] CHANGELOG + README
+- [x] Git remote/push
diff --git a/emails/approval-needed.tsx b/emails/approval-needed.tsx
new file mode 100644
index 0000000..e0e1416
--- /dev/null
+++ b/emails/approval-needed.tsx
@@ -0,0 +1,46 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface ApprovalNeededEmailProps {
+ locale?: Locale;
+ approverName?: string;
+ requesterName?: string;
+ requestType?: string;
+ orgName?: string;
+ ctaUrl?: string;
+}
+
+export const ApprovalNeededEmail = ({
+ locale,
+ approverName = 'Finance Lead',
+ requesterName = 'Meron Hailu',
+ requestType = 'credit top-up',
+ orgName = 'Yaltopia Tech',
+ ctaUrl = `${theme.brand.website}/b2b/finance/approvals`,
+}: ApprovalNeededEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('approval-needed', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { approverName, requesterName, requestType, orgName })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+ApprovalNeededEmail.PreviewProps = { locale: 'en' } as ApprovalNeededEmailProps;
+export default ApprovalNeededEmail;
diff --git a/emails/components/Button.tsx b/emails/components/Button.tsx
new file mode 100644
index 0000000..f5d99b4
--- /dev/null
+++ b/emails/components/Button.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Button as ReactEmailButton } from '@react-email/components';
+import { theme } from '../theme';
+
+interface ButtonProps {
+ href: string;
+ children: React.ReactNode;
+ variant?: 'primary' | 'accent';
+}
+
+export const Button = ({ href, children, variant = 'primary' }: ButtonProps) => {
+ const backgroundColor =
+ variant === 'accent' ? theme.colors.accent : theme.colors.brand;
+ const color = variant === 'accent' ? theme.colors.surface : theme.colors.forest;
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/emails/components/Card.tsx b/emails/components/Card.tsx
new file mode 100644
index 0000000..6730994
--- /dev/null
+++ b/emails/components/Card.tsx
@@ -0,0 +1,19 @@
+import React from 'react';
+import { Section } from '@react-email/components';
+import { theme } from '../theme';
+
+interface CardProps {
+ children: React.ReactNode;
+}
+
+export const Card = ({ children }: CardProps) => (
+
+);
+
+const card = {
+ backgroundColor: theme.colors.cream,
+ border: `1px solid ${theme.colors.line}`,
+ borderRadius: '10px',
+ padding: '16px 18px',
+ margin: '0 0 20px',
+};
diff --git a/emails/components/EmailLayout.tsx b/emails/components/EmailLayout.tsx
new file mode 100644
index 0000000..a30f1da
--- /dev/null
+++ b/emails/components/EmailLayout.tsx
@@ -0,0 +1,128 @@
+import React from 'react';
+import {
+ Body,
+ Container,
+ Head,
+ Html,
+ Img,
+ Link,
+ Preview,
+ Section,
+ Text,
+} from '@react-email/components';
+import { theme } from '../theme';
+import { logoDataUri } from '../utils/logoDataUri';
+import { tCommon } from '../i18n/common';
+import type { Locale } from '../i18n/types';
+
+interface EmailLayoutProps {
+ preview: string;
+ children: React.ReactNode;
+ locale?: Locale;
+ logoUrl?: string;
+}
+
+export const EmailLayout = ({
+ preview,
+ children,
+ locale = 'en',
+ logoUrl = logoDataUri,
+}: EmailLayoutProps) => {
+ const common = tCommon(locale);
+
+ return (
+
+
+
+
+ {preview}
+
+
+
+
+
+
+
+
+ © {new Date().getFullYear()} {theme.brand.name}. {common.allRights}
+
+
+ {theme.brand.address} · {theme.brand.phone}
+
+
+
+ {common.privacy}
+
+ {' · '}
+
+ {common.terms}
+
+ {' · '}
+
+ {theme.brand.email}
+
+
+
+
+
+
+ );
+};
+
+const main = {
+ backgroundColor: theme.colors.cream,
+ fontFamily: theme.fonts.sans,
+};
+
+const container = {
+ margin: '0 auto',
+ padding: '24px 0 48px',
+ maxWidth: '600px',
+};
+
+const header = {
+ padding: '28px 24px',
+ textAlign: 'center' as const,
+ backgroundColor: theme.colors.surface,
+ borderTop: `4px solid ${theme.colors.brand}`,
+ borderRadius: '12px 12px 0 0',
+};
+
+const logo = {
+ margin: '0 auto',
+};
+
+const content = {
+ backgroundColor: theme.colors.surface,
+ padding: '8px 28px 32px',
+ borderLeft: `1px solid ${theme.colors.line}`,
+ borderRight: `1px solid ${theme.colors.line}`,
+};
+
+const footer = {
+ backgroundColor: theme.colors.forest,
+ padding: '24px 28px',
+ borderRadius: '0 0 12px 12px',
+ textAlign: 'center' as const,
+};
+
+const footerText = {
+ color: '#C5C9B8',
+ fontSize: '12px',
+ lineHeight: '18px',
+ margin: '0 0 8px',
+};
+
+const footerLink = {
+ color: theme.colors.brand,
+ textDecoration: 'none',
+};
diff --git a/emails/components/MetricGrid.tsx b/emails/components/MetricGrid.tsx
new file mode 100644
index 0000000..c4c9d2c
--- /dev/null
+++ b/emails/components/MetricGrid.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { Column, Row, Text } from '@react-email/components';
+import { theme } from '../theme';
+import { Card } from './Card';
+
+export interface Metric {
+ label: string;
+ value: string;
+}
+
+interface MetricGridProps {
+ metrics: Metric[];
+}
+
+export const MetricGrid = ({ metrics }: MetricGridProps) => (
+
+
+ {metrics.map((metric) => (
+
+ {metric.value}
+ {metric.label}
+
+ ))}
+
+
+);
+
+const col = {
+ padding: '8px',
+ textAlign: 'center' as const,
+};
+
+const value = {
+ color: theme.colors.forest,
+ fontSize: '20px',
+ fontWeight: 700,
+ margin: '0 0 4px',
+};
+
+const label = {
+ color: theme.colors.muted,
+ fontSize: '12px',
+ margin: 0,
+};
diff --git a/emails/components/OrderSummary.tsx b/emails/components/OrderSummary.tsx
new file mode 100644
index 0000000..d9546f7
--- /dev/null
+++ b/emails/components/OrderSummary.tsx
@@ -0,0 +1,78 @@
+import React from 'react';
+import { Column, Row, Section, Text } from '@react-email/components';
+import { theme } from '../theme';
+import { Card } from './Card';
+
+export interface OrderLineItem {
+ name: string;
+ qty: number;
+ price: string;
+}
+
+interface OrderSummaryProps {
+ orderId: string;
+ items: OrderLineItem[];
+ total: string;
+ orderLabel: string;
+ totalLabel: string;
+}
+
+export const OrderSummary = ({
+ orderId,
+ items,
+ total,
+ orderLabel,
+ totalLabel,
+}: OrderSummaryProps) => (
+
+
+ {orderLabel}: {orderId}
+
+ {items.map((item) => (
+
+
+
+ {item.name} × {item.qty}
+
+
+
+ {item.price}
+
+
+ ))}
+
+
+ {totalLabel}: {total}
+
+
+
+);
+
+const label = {
+ color: theme.colors.muted,
+ fontSize: '13px',
+ margin: '0 0 12px',
+};
+
+const row = {
+ marginBottom: '6px',
+};
+
+const itemText = {
+ color: theme.colors.forest,
+ fontSize: '14px',
+ margin: 0,
+};
+
+const totalRow = {
+ borderTop: `1px solid ${theme.colors.line}`,
+ marginTop: '12px',
+ paddingTop: '12px',
+};
+
+const totalText = {
+ color: theme.colors.forest,
+ fontSize: '16px',
+ fontWeight: 700,
+ margin: 0,
+};
diff --git a/emails/components/StatusBanner.tsx b/emails/components/StatusBanner.tsx
new file mode 100644
index 0000000..5250efe
--- /dev/null
+++ b/emails/components/StatusBanner.tsx
@@ -0,0 +1,65 @@
+import React from 'react';
+import { Section, Text } from '@react-email/components';
+import { theme } from '../theme';
+
+type Tone = 'success' | 'warning' | 'danger' | 'info' | 'brand';
+
+interface StatusBannerProps {
+ tone?: Tone;
+ children: React.ReactNode;
+}
+
+const tones: Record = {
+ success: {
+ bg: '#EEF6E8',
+ fg: theme.colors.success,
+ border: theme.colors.brand,
+ },
+ warning: {
+ bg: '#FFF4E8',
+ fg: theme.colors.accent,
+ border: theme.colors.accent,
+ },
+ danger: {
+ bg: '#FDECEA',
+ fg: theme.colors.danger,
+ border: theme.colors.danger,
+ },
+ info: {
+ bg: '#EAF1F8',
+ fg: theme.colors.info,
+ border: theme.colors.info,
+ },
+ brand: {
+ bg: '#F4F8E4',
+ fg: theme.colors.forest,
+ border: theme.colors.brand,
+ },
+};
+
+export const StatusBanner = ({ tone = 'brand', children }: StatusBannerProps) => {
+ const t = tones[tone];
+ return (
+
+ );
+};
diff --git a/emails/components/styles.ts b/emails/components/styles.ts
new file mode 100644
index 0000000..9e3045e
--- /dev/null
+++ b/emails/components/styles.ts
@@ -0,0 +1,27 @@
+import { theme } from '../theme';
+
+export const styles = {
+ heading: {
+ color: theme.colors.forest,
+ fontSize: '26px',
+ fontWeight: '700' as const,
+ margin: '0 0 16px',
+ lineHeight: '32px',
+ },
+ text: {
+ color: theme.colors.forest,
+ fontSize: '16px',
+ lineHeight: '24px',
+ margin: '0 0 16px',
+ },
+ muted: {
+ color: theme.colors.muted,
+ fontSize: '14px',
+ lineHeight: '22px',
+ margin: '0 0 12px',
+ },
+ buttonSection: {
+ textAlign: 'center' as const,
+ margin: '28px 0',
+ },
+};
diff --git a/emails/credit-alert.tsx b/emails/credit-alert.tsx
new file mode 100644
index 0000000..7320f01
--- /dev/null
+++ b/emails/credit-alert.tsx
@@ -0,0 +1,47 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface CreditAlertEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orgName?: string;
+ usedPercent?: string;
+ availableCredit?: string;
+ ctaUrl?: string;
+}
+
+export const CreditAlertEmail = ({
+ locale,
+ userName = 'Helen Tadesse',
+ orgName = 'Yaltopia Tech',
+ usedPercent = '82',
+ availableCredit = 'ETB 90,000',
+ ctaUrl = `${theme.brand.website}/b2b/finance`,
+}: CreditAlertEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('credit-alert', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.banner, { availableCredit })}
+ {t.heading}
+ {interpolate(t.body1, { userName, orgName, usedPercent })}
+
+ {t.body2}
+ {common.regards}
{common.team}
+
+ );
+};
+
+CreditAlertEmail.PreviewProps = { locale: 'en' } as CreditAlertEmailProps;
+export default CreditAlertEmail;
diff --git a/emails/dispatch-assigned.tsx b/emails/dispatch-assigned.tsx
new file mode 100644
index 0000000..fbd86fd
--- /dev/null
+++ b/emails/dispatch-assigned.tsx
@@ -0,0 +1,46 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface DispatchAssignedEmailProps {
+ locale?: Locale;
+ orderId?: string;
+ riderName?: string;
+ branchName?: string;
+ pickupWindow?: string;
+ ctaUrl?: string;
+}
+
+export const DispatchAssignedEmail = ({
+ locale,
+ orderId = 'GS-10482',
+ riderName = 'Dawit Lemma',
+ branchName = 'Bole Branch',
+ pickupWindow = '16:00–16:30',
+ ctaUrl = `${theme.brand.website}/admin/dispatch`,
+}: DispatchAssignedEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('dispatch-assigned', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.banner, { pickupWindow })}
+ {t.heading}
+ {interpolate(t.body1, { orderId, riderName, branchName })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+DispatchAssignedEmail.PreviewProps = { locale: 'en' } as DispatchAssignedEmailProps;
+export default DispatchAssignedEmail;
diff --git a/emails/email-verify.tsx b/emails/email-verify.tsx
new file mode 100644
index 0000000..19f9907
--- /dev/null
+++ b/emails/email-verify.tsx
@@ -0,0 +1,41 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface EmailVerifyEmailProps {
+ locale?: Locale;
+ userName?: string;
+ email?: string;
+ verifyUrl?: string;
+}
+
+export const EmailVerifyEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ email = 'abebe@yaltopia.com',
+ verifyUrl = `${theme.brand.website}/verify`,
+}: EmailVerifyEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('email-verify', l);
+ const common = tCommon(l);
+ return (
+
+ {t.heading}
+ {interpolate(t.body1, { userName, email })}
+
+ {t.body2}
+ {common.regards}
{common.team}
+
+ );
+};
+
+EmailVerifyEmail.PreviewProps = { locale: 'en' } as EmailVerifyEmailProps;
+export default EmailVerifyEmail;
diff --git a/emails/i18n/common.ts b/emails/i18n/common.ts
new file mode 100644
index 0000000..1a6385e
--- /dev/null
+++ b/emails/i18n/common.ts
@@ -0,0 +1,29 @@
+import type { Locale } from './types';
+import { theme } from '../theme';
+
+const common = {
+ en: {
+ privacy: 'Privacy Policy',
+ terms: 'Terms of Service',
+ support: 'Need help?',
+ contactSupport: 'Contact support',
+ regards: 'Best regards,',
+ team: `The ${theme.brand.name} Team`,
+ viewInBrowser: 'View in browser',
+ allRights: 'All rights reserved.',
+ },
+ am: {
+ privacy: 'የግላዊነት ፖሊሲ',
+ terms: 'የአገልግሎት ውሎች',
+ support: 'እገዛ ይፈልጋሉ?',
+ contactSupport: 'ድጋፍ ያግኙ',
+ regards: 'ከሰላምታ ጋር፣',
+ team: `የ${theme.brand.name} ቡድን`,
+ viewInBrowser: 'በአሳሽ ውስጥ ይመልከቱ',
+ allRights: 'መብቱ በህግ የተጠበቀ ነው።',
+ },
+} as const;
+
+export function tCommon(locale: Locale) {
+ return common[locale];
+}
diff --git a/emails/i18n/templates/index.ts b/emails/i18n/templates/index.ts
new file mode 100644
index 0000000..5fe51a6
--- /dev/null
+++ b/emails/i18n/templates/index.ts
@@ -0,0 +1,412 @@
+import type { Locale } from '../types';
+
+export const templateCopy = {
+ "welcome": {
+ "en": {
+ "preview": "Welcome to Gishen Pharmacy",
+ "heading": "Welcome, {userName}",
+ "body1": "Your Gishen Pharmacy account is ready. Order medicines, manage prescriptions, and track deliveries from one place.",
+ "body2": "Start by browsing the shop or linking your organisation benefits if your employer covers pharmacy care.",
+ "cta": "Open Gishen",
+ "closing": "We’re glad you’re here."
+ },
+ "am": {
+ "preview": "እንኳን ወደ ጊሼን ፋርማሲ በደህና መጡ",
+ "heading": "እንኳን ደህና መጡ፣ {userName}",
+ "body1": "የጊሼን ፋርማሲ መለያዎ ዝግጁ ነው። መድሃኒት ይዘዙ፣ የመድሃኒት ማዘዣዎችን ያስተዳድሩ እና ማድረሶችን ከአንድ ቦታ ይከታተሉ።",
+ "body2": "ሱቁን በመድረስ ወይም አሰሪዎ የፋርማሲ ጥቅማጥቅሞች ካሉ መገልገያዎችን በማገናኘት ይጀምሩ።",
+ "cta": "ጊሼንን ክፈት",
+ "closing": "እዚህ ስላሉ ደስ ብሎናል።"
+ }
+ },
+ "password-reset": {
+ "en": {
+ "preview": "Reset your Gishen password",
+ "heading": "Reset your password",
+ "body1": "We received a request to reset the password for {userName}. This link expires in 60 minutes.",
+ "cta": "Choose a new password",
+ "body2": "If you did not request this, you can ignore this email. Your password will stay the same.",
+ "banner": "Security notice"
+ },
+ "am": {
+ "preview": "የጊሼን የይለፍ ቃልዎን ያደሱ",
+ "heading": "የይለፍ ቃልዎን ያድሱ",
+ "body1": "ለ{userName} የይለፍ ቃል ማደስ ጥያቄ ደርሶናል። ይህ አገናኝ በ60 ደቂቃ ውስጥ ጊዜው ያልፍበታል።",
+ "cta": "አዲስ የይለፍ ቃል ይምረጡ",
+ "body2": "ይህን ካልጠየቁ ይህን ኢሜይል ችላ ማለት ይችላሉ። የይለፍ ቃልዎ አይለወጥም።",
+ "banner": "የደህንነት ማስታወቂያ"
+ }
+ },
+ "email-verify": {
+ "en": {
+ "preview": "Verify your email for Gishen",
+ "heading": "Confirm your email",
+ "body1": "Hi {userName}, please verify {email} to activate your Gishen Pharmacy account.",
+ "cta": "Verify email",
+ "body2": "This helps us keep prescriptions and order updates secure."
+ },
+ "am": {
+ "preview": "ለጊሼን ኢሜይልዎን ያረጋግጡ",
+ "heading": "ኢሜይልዎን ያረጋግጡ",
+ "body1": "ሰላም {userName}፣ የጊሼን ፋርማሲ መለያዎን ለማንቃት {email}ን እባክዎ ያረጋግጡ።",
+ "cta": "ኢሜይል አረጋግጥ",
+ "body2": "ይህ የመድሃኒት ማዘዣዎችን እና የትዕዛዝ ዝመናዎችን ደህንነቱ የተጠበቀ ያደርገዋል።"
+ }
+ },
+ "user-invite": {
+ "en": {
+ "preview": "You’re invited to Gishen",
+ "heading": "Join {orgName} on Gishen",
+ "body1": "{inviterName} invited you to access Gishen Pharmacy as {role}.",
+ "cta": "Accept invitation",
+ "body2": "The invite expires in 7 days."
+ },
+ "am": {
+ "preview": "ወደ ጊሼን ተጋብዘዋል",
+ "heading": "በጊሼን ላይ {orgName}ን ይቀላቀሉ",
+ "body1": "{inviterName} እንደ {role} ወደ ጊሼን ፋርማሲ እንዲገቡ ጋብዘዎታል።",
+ "cta": "ግብዣ ተቀበል",
+ "body2": "ግብዣው በ7 ቀናት ውስጥ ጊዜው ያልፍበታል።"
+ }
+ },
+ "order-confirmation": {
+ "en": {
+ "preview": "Order {orderId} confirmed",
+ "heading": "Order confirmed",
+ "body1": "Thanks {userName}. We received order {orderId} and the pharmacy team is reviewing it.",
+ "orderLabel": "Order",
+ "totalLabel": "Total",
+ "cta": "Track order",
+ "banner": "We’ll email you when packing starts."
+ },
+ "am": {
+ "preview": "ትዕዛዝ {orderId} ተረጋግጧል",
+ "heading": "ትዕዛዝ ተረጋግጧል",
+ "body1": "አመሰግናለን {userName}። ትዕዛዝ {orderId}ን ተቀብለናል እና የፋርማሲ ቡድኑ እየገመገመው ነው።",
+ "orderLabel": "ትዕዛዝ",
+ "totalLabel": "ድምር",
+ "cta": "ትዕዛዝን ተከታተል",
+ "banner": "ማሸግ ሲጀምር በኢሜይል እናሳውቅዎታለን።"
+ }
+ },
+ "order-packing": {
+ "en": {
+ "preview": "Order {orderId} is being packed",
+ "heading": "Packing your order",
+ "body1": "Hi {userName}, pharmacists at {branchName} are preparing order {orderId}.",
+ "orderLabel": "Order",
+ "totalLabel": "Total",
+ "cta": "View status",
+ "banner": "Status: Packing"
+ },
+ "am": {
+ "preview": "ትዕዛዝ {orderId} እየታሸገ ነው",
+ "heading": "ትዕዛዝዎን እያሸግን ነው",
+ "body1": "ሰላም {userName}፣ በ{branchName} ያሉ ፋርማሲስቶች ትዕዛዝ {orderId}ን እያዘጋጁ ነው።",
+ "orderLabel": "ትዕዛዝ",
+ "totalLabel": "ድምር",
+ "cta": "ሁኔታ ይመልከቱ",
+ "banner": "ሁኔታ፡ እየታሸገ"
+ }
+ },
+ "order-out-for-delivery": {
+ "en": {
+ "preview": "Order {orderId} is out for delivery",
+ "heading": "Out for delivery",
+ "body1": "Good news {userName}: order {orderId} left {branchName} with rider {riderName}.",
+ "orderLabel": "Order",
+ "totalLabel": "Total",
+ "cta": "Track delivery",
+ "banner": "Estimated arrival: {eta}"
+ },
+ "am": {
+ "preview": "ትዕዛዝ {orderId} ለማድረስ በመንገድ ላይ ነው",
+ "heading": "ለማድረስ በመንገድ ላይ",
+ "body1": "ደስ የሚል ዜና {userName}፡ ትዕዛዝ {orderId} ከ{branchName} ከአድራሽ {riderName} ጋር ወጥቷል።",
+ "orderLabel": "ትዕዛዝ",
+ "totalLabel": "ድምር",
+ "cta": "ማድረስን ተከታተል",
+ "banner": "የሚገመት መድረሻ፡ {eta}"
+ }
+ },
+ "order-delivered": {
+ "en": {
+ "preview": "Order {orderId} delivered",
+ "heading": "Delivered",
+ "body1": "Order {orderId} was delivered to {userName}. Thank you for choosing Gishen Pharmacy.",
+ "orderLabel": "Order",
+ "totalLabel": "Total",
+ "cta": "Reorder",
+ "banner": "Delivered successfully"
+ },
+ "am": {
+ "preview": "ትዕዛዝ {orderId} ተደርሷል",
+ "heading": "ተደርሷል",
+ "body1": "ትዕዛዝ {orderId} ለ{userName} ተደርሷል። ጊሼን ፋርማሲን ስለመረጡ እናመሰግናለን።",
+ "orderLabel": "ትዕዛዝ",
+ "totalLabel": "ድምር",
+ "cta": "ድጋሚ እዘዝ",
+ "banner": "በተሳካ ሁኔታ ተደርሷል"
+ }
+ },
+ "order-cancelled": {
+ "en": {
+ "preview": "Order {orderId} cancelled",
+ "heading": "Order cancelled",
+ "body1": "Hi {userName}, order {orderId} was cancelled. Reason: {reason}.",
+ "orderLabel": "Order",
+ "totalLabel": "Total",
+ "cta": "Browse shop",
+ "banner": "No payment was captured for this order."
+ },
+ "am": {
+ "preview": "ትዕዛዝ {orderId} ተሰርዟል",
+ "heading": "ትዕዛዝ ተሰርዟል",
+ "body1": "ሰላም {userName}፣ ትዕዛዝ {orderId} ተሰርዟል። ምክንያት፡ {reason}።",
+ "orderLabel": "ትዕዛዝ",
+ "totalLabel": "ድምር",
+ "cta": "ሱቁን ይመልከቱ",
+ "banner": "ለዚህ ትዕዛዝ ክፍያ አልተያዘም።"
+ }
+ },
+ "org-invite": {
+ "en": {
+ "preview": "Invite to {orgName} on Gishen B2B",
+ "heading": "Organisation invitation",
+ "body1": "{inviterName} invited you to join {orgName} on the Gishen B2B portal as {role}.",
+ "cta": "Join organisation",
+ "body2": "You’ll be able to manage members, packages, and covered pharmacy spend."
+ },
+ "am": {
+ "preview": "በጊሼን B2B ላይ ወደ {orgName} ግብዣ",
+ "heading": "የድርጅት ግብዣ",
+ "body1": "{inviterName} እንደ {role} በጊሼን B2B ፖርታል ላይ {orgName}ን እንዲቀላቀሉ ጋብዘዎታል።",
+ "cta": "ድርጅትን ይቀላቀሉ",
+ "body2": "አባላትን፣ ጥቅሎችን እና የተሸፈነ የፋርማሲ ወጪን ማስተዳደር ይችላሉ።"
+ }
+ },
+ "join-code": {
+ "en": {
+ "preview": "Your Gishen join code",
+ "heading": "Join with this code",
+ "body1": "Hi {userName}, use this code to join {orgName} on Gishen B2B.",
+ "cta": "Enter join code",
+ "banner": "Code: {joinCode}"
+ },
+ "am": {
+ "preview": "የጊሼን የመቀላቀያ ኮድዎ",
+ "heading": "በዚህ ኮድ ይቀላቀሉ",
+ "body1": "ሰላም {userName}፣ በጊሼን B2B ላይ {orgName}ን ለመቀላቀል ይህን ኮድ ይጠቀሙ።",
+ "cta": "የመቀላቀያ ኮድ አስገባ",
+ "banner": "ኮድ፡ {joinCode}"
+ }
+ },
+ "approval-needed": {
+ "en": {
+ "preview": "Approval needed for {requestType}",
+ "heading": "Action required",
+ "body1": "Hi {approverName}, {requesterName} submitted a {requestType} that needs your approval for {orgName}.",
+ "cta": "Review request",
+ "banner": "Pending finance / HR approval"
+ },
+ "am": {
+ "preview": "ለ{requestType} ማጽደቅ ያስፈልጋል",
+ "heading": "እርምጃ ያስፈልጋል",
+ "body1": "ሰላም {approverName}፣ {requesterName} ለ{orgName} ማጽደቅ የሚያስፈልገውን {requestType} አስገብቷል።",
+ "cta": "ጥያቄን ይገምግሙ",
+ "banner": "የፋይናንስ / HR ማጽደቅ በመጠባበቅ ላይ"
+ }
+ },
+ "statement-ready": {
+ "en": {
+ "preview": "Statement ready for {periodLabel}",
+ "heading": "Statement ready",
+ "body1": "Hi {userName}, the pharmacy benefits statement for {orgName} ({periodLabel}) is ready.",
+ "cta": "Download statement",
+ "banner": "Amount due: {amountDue}"
+ },
+ "am": {
+ "preview": "ለ{periodLabel} መግለጫ ዝግጁ ነው",
+ "heading": "መግለጫ ዝግጁ ነው",
+ "body1": "ሰላም {userName}፣ የ{orgName} የፋርማሲ ጥቅማጥቅም መግለጫ ({periodLabel}) ዝግጁ ነው።",
+ "cta": "መግለጫ አውርድ",
+ "banner": "የሚከፈል መጠን፡ {amountDue}"
+ }
+ },
+ "credit-alert": {
+ "en": {
+ "preview": "Credit alert for {orgName}",
+ "heading": "Credit utilisation alert",
+ "body1": "Hi {userName}, {orgName} has used {usedPercent}% of its pharmacy credit limit.",
+ "banner": "Available credit: {availableCredit}",
+ "cta": "View finance dashboard",
+ "body2": "Contact your Gishen account manager if you need a limit review."
+ },
+ "am": {
+ "preview": "ለ{orgName} የክሬዲት ማስጠንቀቂያ",
+ "heading": "የክሬዲት አጠቃቀም ማስጠንቀቂያ",
+ "body1": "ሰላም {userName}፣ {orgName} የፋርማሲ ክሬዲት ገደቡን {usedPercent}% ተጠቅሟል።",
+ "banner": "ያለ ክሬዲት፡ {availableCredit}",
+ "cta": "የፋይናንስ ዳሽቦርድ ይመልከቱ",
+ "body2": "የገደብ ግምገማ ካስፈለገዎት የጊሼን አካውንት ማኔጀርዎን ያግኙ።"
+ }
+ },
+ "organisation-verified": {
+ "en": {
+ "preview": "{orgName} is verified",
+ "heading": "Organisation verified",
+ "body1": "Great news {userName}: {orgName} passed Gishen verification and can now use B2B benefits features.",
+ "cta": "Open B2B portal",
+ "banner": "Verification complete"
+ },
+ "am": {
+ "preview": "{orgName} ተረጋግጧል",
+ "heading": "ድርጅት ተረጋግጧል",
+ "body1": "ደስ የሚል ዜና {userName}፡ {orgName} የጊሼን ማረጋገጫ አልፏል እና አሁን የB2B ጥቅማጥቅም ባህሪያትን መጠቀም ይችላል።",
+ "cta": "B2B ፖርታል ክፈት",
+ "banner": "ማረጋገጫ ተጠናቋል"
+ }
+ },
+ "prescription-submitted": {
+ "en": {
+ "preview": "Prescription {rxId} received",
+ "heading": "Prescription submitted",
+ "body1": "Hi {userName}, we received prescription {rxId}. A pharmacist will review it shortly.",
+ "cta": "View prescription",
+ "banner": "Under clinical review"
+ },
+ "am": {
+ "preview": "የመድሃኒት ማዘዣ {rxId} ደርሷል",
+ "heading": "የመድሃኒት ማዘዣ ገብቷል",
+ "body1": "ሰላም {userName}፣ የመድሃኒት ማዘዣ {rxId}ን ተቀብለናል። ፋርማሲስት በቅርቡ ይገመግመዋል።",
+ "cta": "ማዘዣ ይመልከቱ",
+ "banner": "በክሊኒካል ግምገማ ላይ"
+ }
+ },
+ "prescription-decision": {
+ "en": {
+ "preview": "Prescription {rxId} {decision}",
+ "heading": "Prescription {decision}",
+ "body1": "Hi {userName}, prescription {rxId} was {decision}. {note}",
+ "cta": "Open prescription",
+ "approvedBanner": "Approved — you can proceed to order",
+ "rejectedBanner": "Rejected — see pharmacist note"
+ },
+ "am": {
+ "preview": "የመድሃኒት ማዘዣ {rxId} {decision}",
+ "heading": "የመድሃኒት ማዘዣ {decision}",
+ "body1": "ሰላም {userName}፣ የመድሃኒት ማዘዣ {rxId} {decision} ሆኗል። {note}",
+ "cta": "ማዘዣ ክፈት",
+ "approvedBanner": "ጸድቋል — ለመግዛት መቀጠል ይችላሉ",
+ "rejectedBanner": "ተቀባይነት አላገኘም — የፋርማሲስት ማስታወሻን ይመልከቱ"
+ }
+ },
+ "prescription-ready": {
+ "en": {
+ "preview": "Prescription {rxId} ready for pickup",
+ "heading": "Ready for pickup",
+ "body1": "Hi {userName}, prescription {rxId} is ready at {branchName}.",
+ "cta": "Get directions",
+ "banner": "Bring a valid ID when you collect."
+ },
+ "am": {
+ "preview": "የመድሃኒት ማዘዣ {rxId} ለመውሰድ ዝግጁ ነው",
+ "heading": "ለመውሰድ ዝግጁ",
+ "body1": "ሰላም {userName}፣ የመድሃኒት ማዘዣ {rxId} በ{branchName} ዝግጁ ነው።",
+ "cta": "አቅጣጫ ያግኙ",
+ "banner": "ሲወስዱ የሚሰራ መታወቂያ ይዘው ይምጡ።"
+ }
+ },
+ "low-stock": {
+ "en": {
+ "preview": "Low stock: {skuName}",
+ "heading": "Low stock alert",
+ "body1": "SKU {skuCode} ({skuName}) at {branchName} is down to {quantity} units (threshold {threshold}).",
+ "cta": "Open stock",
+ "banner": "Action needed in Admin"
+ },
+ "am": {
+ "preview": "አነስተኛ ክምችት፡ {skuName}",
+ "heading": "የአነስተኛ ክምችት ማስጠንቀቂያ",
+ "body1": "SKU {skuCode} ({skuName}) በ{branchName} ወደ {quantity} አሃዶች ዝቅ ብሏል (ገደብ {threshold})።",
+ "cta": "ክምችት ክፈት",
+ "banner": "በአስተዳደር ውስጥ እርምጃ ያስፈልጋል"
+ }
+ },
+ "dispatch-assigned": {
+ "en": {
+ "preview": "Dispatch assigned for {orderId}",
+ "heading": "Dispatch assigned",
+ "body1": "Order {orderId} was assigned to rider {riderName} from {branchName}.",
+ "cta": "Open dispatch",
+ "banner": "Pickup window: {pickupWindow}"
+ },
+ "am": {
+ "preview": "ለ{orderId} ማጓጓዝ ተመድቧል",
+ "heading": "ማጓጓዝ ተመድቧል",
+ "body1": "ትዕዛዝ {orderId} ከ{branchName} ለአድራሽ {riderName} ተመድቧል።",
+ "cta": "ማጓጓዝ ክፈት",
+ "banner": "የመውሰጃ ጊዜ፡ {pickupWindow}"
+ }
+ },
+ "procurement-alert": {
+ "en": {
+ "preview": "Procurement alert: {title}",
+ "heading": "Procurement alert",
+ "body1": "Hi {userName}, {title}. Supplier: {supplierName}. Priority: {priority}.",
+ "cta": "Review procurement",
+ "banner": "Ops notification"
+ },
+ "am": {
+ "preview": "የግዥ ማስጠንቀቂያ፡ {title}",
+ "heading": "የግዥ ማስጠንቀቂያ",
+ "body1": "ሰላም {userName}፣ {title}። አቅራቢ፡ {supplierName}። ቅድሚያ፡ {priority}።",
+ "cta": "ግዥን ይገምግሙ",
+ "banner": "የኦፕስ ማሳወቂያ"
+ }
+ },
+ "promotional": {
+ "en": {
+ "preview": "{headline}",
+ "heading": "{headline}",
+ "body1": "{body}",
+ "cta": "{cta}",
+ "banner": "From Gishen Pharmacy"
+ },
+ "am": {
+ "preview": "{headline}",
+ "heading": "{headline}",
+ "body1": "{body}",
+ "cta": "{cta}",
+ "banner": "ከጊሼን ፋርማሲ"
+ }
+ },
+ "shop-summary": {
+ "en": {
+ "preview": "{periodLabel} shop summary",
+ "heading": "{periodLabel} e‑commerce summary",
+ "body1": "Hi {userName}, here is the Gishen shop performance for {periodLabel} ({dateRange}).",
+ "cta": "Open analytics",
+ "orders": "Orders",
+ "revenue": "Revenue",
+ "aov": "Avg order",
+ "topSku": "Top SKU"
+ },
+ "am": {
+ "preview": "የ{periodLabel} የሱቅ ማጠቃለያ",
+ "heading": "የ{periodLabel} ኢ-ኮሜርስ ማጠቃለያ",
+ "body1": "ሰላም {userName}፣ ለ{periodLabel} ({dateRange}) የጊሼን ሱቅ አፈጻጸም ይኸውና።",
+ "cta": "ትንታኔ ክፈት",
+ "orders": "ትዕዛዞች",
+ "revenue": "ገቢ",
+ "aov": "አማካይ ትዕዛዝ",
+ "topSku": "ከፍተኛ SKU"
+ }
+ }
+} as const;
+
+export type TemplateId = keyof typeof templateCopy;
+
+export function tTemplate(id: T, locale: Locale) {
+ return templateCopy[id][locale];
+}
diff --git a/emails/i18n/types.ts b/emails/i18n/types.ts
new file mode 100644
index 0000000..b23529e
--- /dev/null
+++ b/emails/i18n/types.ts
@@ -0,0 +1,5 @@
+export type Locale = 'en' | 'am';
+
+export function resolveLocale(locale?: string): Locale {
+ return locale === 'am' ? 'am' : 'en';
+}
diff --git a/emails/join-code.tsx b/emails/join-code.tsx
new file mode 100644
index 0000000..389d6b6
--- /dev/null
+++ b/emails/join-code.tsx
@@ -0,0 +1,44 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface JoinCodeEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orgName?: string;
+ joinCode?: string;
+ ctaUrl?: string;
+}
+
+export const JoinCodeEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orgName = 'Yaltopia Tech',
+ joinCode = 'GISHEN-YT-7942',
+ ctaUrl = `${theme.brand.website}/b2b/join`,
+}: JoinCodeEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('join-code', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.banner, { joinCode })}
+ {t.heading}
+ {interpolate(t.body1, { userName, orgName })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+JoinCodeEmail.PreviewProps = { locale: 'en' } as JoinCodeEmailProps;
+export default JoinCodeEmail;
diff --git a/emails/low-stock.tsx b/emails/low-stock.tsx
new file mode 100644
index 0000000..c978f39
--- /dev/null
+++ b/emails/low-stock.tsx
@@ -0,0 +1,48 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface LowStockEmailProps {
+ locale?: Locale;
+ skuCode?: string;
+ skuName?: string;
+ branchName?: string;
+ quantity?: string;
+ threshold?: string;
+ ctaUrl?: string;
+}
+
+export const LowStockEmail = ({
+ locale,
+ skuCode = 'MED-AMOX-500',
+ skuName = 'Amoxicillin 500mg',
+ branchName = 'Bole Branch',
+ quantity = '8',
+ threshold = '25',
+ ctaUrl = `${theme.brand.website}/admin/stock`,
+}: LowStockEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('low-stock', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { skuCode, skuName, branchName, quantity, threshold })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+LowStockEmail.PreviewProps = { locale: 'en' } as LowStockEmailProps;
+export default LowStockEmail;
diff --git a/emails/order-cancelled.tsx b/emails/order-cancelled.tsx
new file mode 100644
index 0000000..330fa1e
--- /dev/null
+++ b/emails/order-cancelled.tsx
@@ -0,0 +1,59 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { OrderSummary, type OrderLineItem } from './components/OrderSummary';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrderCancelledEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orderId?: string;
+ items?: OrderLineItem[];
+ total?: string;
+ ctaUrl?: string;
+ reason?: string;
+}
+
+export const OrderCancelledEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orderId = 'GS-10482',
+ items = [
+ { name: 'Amoxicillin 500mg', qty: 2, price: 'ETB 240' },
+ { name: 'ORS sachets', qty: 5, price: 'ETB 125' },
+ ],
+ total = 'ETB 365',
+ ctaUrl = `${theme.brand.website}/orders/${orderId}`,
+ reason = 'Item out of stock',
+}: OrderCancelledEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('order-cancelled', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, orderId, reason })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrderCancelledEmail.PreviewProps = { locale: 'en' } as OrderCancelledEmailProps;
+export default OrderCancelledEmail;
diff --git a/emails/order-confirmation.tsx b/emails/order-confirmation.tsx
new file mode 100644
index 0000000..bf7ea8c
--- /dev/null
+++ b/emails/order-confirmation.tsx
@@ -0,0 +1,59 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { OrderSummary, type OrderLineItem } from './components/OrderSummary';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrderConfirmationEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orderId?: string;
+ items?: OrderLineItem[];
+ total?: string;
+ ctaUrl?: string;
+
+}
+
+export const OrderConfirmationEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orderId = 'GS-10482',
+ items = [
+ { name: 'Amoxicillin 500mg', qty: 2, price: 'ETB 240' },
+ { name: 'ORS sachets', qty: 5, price: 'ETB 125' },
+ ],
+ total = 'ETB 365',
+ ctaUrl = `${theme.brand.website}/orders/${orderId}`,
+
+}: OrderConfirmationEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('order-confirmation', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, orderId })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrderConfirmationEmail.PreviewProps = { locale: 'en' } as OrderConfirmationEmailProps;
+export default OrderConfirmationEmail;
diff --git a/emails/order-delivered.tsx b/emails/order-delivered.tsx
new file mode 100644
index 0000000..137b143
--- /dev/null
+++ b/emails/order-delivered.tsx
@@ -0,0 +1,59 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { OrderSummary, type OrderLineItem } from './components/OrderSummary';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrderDeliveredEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orderId?: string;
+ items?: OrderLineItem[];
+ total?: string;
+ ctaUrl?: string;
+
+}
+
+export const OrderDeliveredEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orderId = 'GS-10482',
+ items = [
+ { name: 'Amoxicillin 500mg', qty: 2, price: 'ETB 240' },
+ { name: 'ORS sachets', qty: 5, price: 'ETB 125' },
+ ],
+ total = 'ETB 365',
+ ctaUrl = `${theme.brand.website}/orders/${orderId}`,
+
+}: OrderDeliveredEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('order-delivered', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, orderId })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrderDeliveredEmail.PreviewProps = { locale: 'en' } as OrderDeliveredEmailProps;
+export default OrderDeliveredEmail;
diff --git a/emails/order-out-for-delivery.tsx b/emails/order-out-for-delivery.tsx
new file mode 100644
index 0000000..843a76e
--- /dev/null
+++ b/emails/order-out-for-delivery.tsx
@@ -0,0 +1,63 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { OrderSummary, type OrderLineItem } from './components/OrderSummary';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrderOutForDeliveryEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orderId?: string;
+ items?: OrderLineItem[];
+ total?: string;
+ ctaUrl?: string;
+ branchName?: string;
+ riderName?: string;
+ eta?: string;
+}
+
+export const OrderOutForDeliveryEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orderId = 'GS-10482',
+ items = [
+ { name: 'Amoxicillin 500mg', qty: 2, price: 'ETB 240' },
+ { name: 'ORS sachets', qty: 5, price: 'ETB 125' },
+ ],
+ total = 'ETB 365',
+ ctaUrl = `${theme.brand.website}/orders/${orderId}`,
+ branchName = 'Bole Branch',
+ riderName = 'Dawit Lemma',
+ eta = '45 min',
+}: OrderOutForDeliveryEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('order-out-for-delivery', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.banner, { eta })}
+ {t.heading}
+ {interpolate(t.body1, { userName, branchName, riderName, orderId })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrderOutForDeliveryEmail.PreviewProps = { locale: 'en' } as OrderOutForDeliveryEmailProps;
+export default OrderOutForDeliveryEmail;
diff --git a/emails/order-packing.tsx b/emails/order-packing.tsx
new file mode 100644
index 0000000..756f226
--- /dev/null
+++ b/emails/order-packing.tsx
@@ -0,0 +1,59 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { OrderSummary, type OrderLineItem } from './components/OrderSummary';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrderPackingEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orderId?: string;
+ items?: OrderLineItem[];
+ total?: string;
+ ctaUrl?: string;
+ branchName?: string;
+}
+
+export const OrderPackingEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ orderId = 'GS-10482',
+ items = [
+ { name: 'Amoxicillin 500mg', qty: 2, price: 'ETB 240' },
+ { name: 'ORS sachets', qty: 5, price: 'ETB 125' },
+ ],
+ total = 'ETB 365',
+ ctaUrl = `${theme.brand.website}/orders/${orderId}`,
+ branchName = 'Bole Branch',
+}: OrderPackingEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('order-packing', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, branchName, orderId })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrderPackingEmail.PreviewProps = { locale: 'en' } as OrderPackingEmailProps;
+export default OrderPackingEmail;
diff --git a/emails/org-invite.tsx b/emails/org-invite.tsx
new file mode 100644
index 0000000..9337822
--- /dev/null
+++ b/emails/org-invite.tsx
@@ -0,0 +1,43 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrgInviteEmailProps {
+ locale?: Locale;
+ orgName?: string;
+ inviterName?: string;
+ role?: string;
+ inviteUrl?: string;
+}
+
+export const OrgInviteEmail = ({
+ locale,
+ orgName = 'Yaltopia Tech',
+ inviterName = 'Helen Tadesse',
+ role = 'HR Admin',
+ inviteUrl = `${theme.brand.website}/b2b/invite`,
+}: OrgInviteEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('org-invite', l);
+ const common = tCommon(l);
+ return (
+
+ {t.heading}
+ {interpolate(t.body1, { inviterName, orgName, role })}
+
+ {t.body2}
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrgInviteEmail.PreviewProps = { locale: 'en' } as OrgInviteEmailProps;
+export default OrgInviteEmail;
diff --git a/emails/organisation-verified.tsx b/emails/organisation-verified.tsx
new file mode 100644
index 0000000..fcf658a
--- /dev/null
+++ b/emails/organisation-verified.tsx
@@ -0,0 +1,42 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface OrganisationVerifiedEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orgName?: string;
+ ctaUrl?: string;
+}
+
+export const OrganisationVerifiedEmail = ({
+ locale,
+ userName = 'Helen Tadesse',
+ orgName = 'Yaltopia Tech',
+ ctaUrl = `${theme.brand.website}/b2b`,
+}: OrganisationVerifiedEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('organisation-verified', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, orgName })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+OrganisationVerifiedEmail.PreviewProps = { locale: 'en' } as OrganisationVerifiedEmailProps;
+export default OrganisationVerifiedEmail;
diff --git a/emails/password-reset.tsx b/emails/password-reset.tsx
new file mode 100644
index 0000000..e77ae9b
--- /dev/null
+++ b/emails/password-reset.tsx
@@ -0,0 +1,41 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface PasswordResetEmailProps {
+ locale?: Locale;
+ userName?: string;
+ resetUrl?: string;
+}
+
+export const PasswordResetEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ resetUrl = `${theme.brand.website}/reset-password`,
+}: PasswordResetEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('password-reset', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName })}
+
+ {t.body2}
+ {common.regards}
{common.team}
+
+ );
+};
+
+PasswordResetEmail.PreviewProps = { userName: 'Abebe Kebede', locale: 'en' } as PasswordResetEmailProps;
+export default PasswordResetEmail;
diff --git a/emails/prescription-decision.tsx b/emails/prescription-decision.tsx
new file mode 100644
index 0000000..9412672
--- /dev/null
+++ b/emails/prescription-decision.tsx
@@ -0,0 +1,50 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface PrescriptionDecisionEmailProps {
+ locale?: Locale;
+ userName?: string;
+ rxId?: string;
+ decision?: 'approved' | 'rejected';
+ note?: string;
+ ctaUrl?: string;
+}
+
+export const PrescriptionDecisionEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ rxId = 'RX-5521',
+ decision = 'approved',
+ note = 'All items are available at Bole Branch.',
+ ctaUrl = `${theme.brand.website}/prescriptions/${rxId}`,
+}: PrescriptionDecisionEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('prescription-decision', l);
+ const common = tCommon(l);
+ const decisionLabel = decision === 'approved'
+ ? (l === 'am' ? 'ጸድቋል' : 'approved')
+ : (l === 'am' ? 'ተቀባይነት አላገኘም' : 'rejected');
+ const banner = decision === 'approved' ? t.approvedBanner : t.rejectedBanner;
+ return (
+
+ {banner}
+ {interpolate(t.heading, { decision: decisionLabel })}
+ {interpolate(t.body1, { userName, rxId, decision: decisionLabel, note })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+PrescriptionDecisionEmail.PreviewProps = { locale: 'en', decision: 'approved' } as PrescriptionDecisionEmailProps;
+export default PrescriptionDecisionEmail;
diff --git a/emails/prescription-ready.tsx b/emails/prescription-ready.tsx
new file mode 100644
index 0000000..6a1b357
--- /dev/null
+++ b/emails/prescription-ready.tsx
@@ -0,0 +1,44 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface PrescriptionReadyEmailProps {
+ locale?: Locale;
+ userName?: string;
+ rxId?: string;
+ branchName?: string;
+ ctaUrl?: string;
+}
+
+export const PrescriptionReadyEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ rxId = 'RX-5521',
+ branchName = 'Bole Branch',
+ ctaUrl = `${theme.brand.website}/branches/bole`,
+}: PrescriptionReadyEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('prescription-ready', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, rxId, branchName })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+PrescriptionReadyEmail.PreviewProps = { locale: 'en' } as PrescriptionReadyEmailProps;
+export default PrescriptionReadyEmail;
diff --git a/emails/prescription-submitted.tsx b/emails/prescription-submitted.tsx
new file mode 100644
index 0000000..e05c2fa
--- /dev/null
+++ b/emails/prescription-submitted.tsx
@@ -0,0 +1,42 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface PrescriptionSubmittedEmailProps {
+ locale?: Locale;
+ userName?: string;
+ rxId?: string;
+ ctaUrl?: string;
+}
+
+export const PrescriptionSubmittedEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ rxId = 'RX-5521',
+ ctaUrl = `${theme.brand.website}/prescriptions/${rxId}`,
+}: PrescriptionSubmittedEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('prescription-submitted', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, rxId })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+PrescriptionSubmittedEmail.PreviewProps = { locale: 'en' } as PrescriptionSubmittedEmailProps;
+export default PrescriptionSubmittedEmail;
diff --git a/emails/procurement-alert.tsx b/emails/procurement-alert.tsx
new file mode 100644
index 0000000..683a9b2
--- /dev/null
+++ b/emails/procurement-alert.tsx
@@ -0,0 +1,46 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface ProcurementAlertEmailProps {
+ locale?: Locale;
+ userName?: string;
+ title?: string;
+ supplierName?: string;
+ priority?: string;
+ ctaUrl?: string;
+}
+
+export const ProcurementAlertEmail = ({
+ locale,
+ userName = 'Stock Manager',
+ title = 'PO-883 awaiting supplier confirmation',
+ supplierName = 'Addis Med Wholesale',
+ priority = 'High',
+ ctaUrl = `${theme.brand.website}/admin/procurement`,
+}: ProcurementAlertEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('procurement-alert', l);
+ const common = tCommon(l);
+ return (
+
+ {t.banner}
+ {t.heading}
+ {interpolate(t.body1, { userName, title, supplierName, priority })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+ProcurementAlertEmail.PreviewProps = { locale: 'en' } as ProcurementAlertEmailProps;
+export default ProcurementAlertEmail;
diff --git a/emails/promotional.tsx b/emails/promotional.tsx
new file mode 100644
index 0000000..4838e17
--- /dev/null
+++ b/emails/promotional.tsx
@@ -0,0 +1,47 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface PromotionalEmailProps {
+ locale?: Locale;
+ headline?: string;
+ body?: string;
+ cta?: string;
+ ctaUrl?: string;
+}
+
+export const PromotionalEmail = ({
+ locale,
+ headline = 'Seasonal wellness essentials',
+ body = 'Restock vitamins and cold-care products with free delivery on orders over ETB 1,000 this week.',
+ cta = 'Shop the promotion',
+ ctaUrl = `${theme.brand.website}/shop`,
+}: PromotionalEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('promotional', l);
+ const common = tCommon(l);
+ const amHeadline = l === 'am' ? 'የወቅቱ የጤና እቃዎች' : headline;
+ const amBody = l === 'am' ? 'በዚህ ሳምንት ከETB 1,000 በላይ ትዕዛዞች ነፃ ማድረስ ጋር ቫይታሚኖችን እና የቅዝቃዜ እንክብካቤ ምርቶችን እንደገና ያስቀምጡ።' : body;
+ const amCta = l === 'am' ? 'ማስተዋወቂያውን ይግዙ' : cta;
+ return (
+
+ {t.banner}
+ {interpolate(t.heading, { headline: amHeadline })}
+ {interpolate(t.body1, { body: amBody })}
+
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+PromotionalEmail.PreviewProps = { locale: 'en' } as PromotionalEmailProps;
+export default PromotionalEmail;
diff --git a/emails/registry.ts b/emails/registry.ts
new file mode 100644
index 0000000..270be98
--- /dev/null
+++ b/emails/registry.ts
@@ -0,0 +1,79 @@
+import type { ComponentType } from 'react';
+import type { Locale } from './i18n/types';
+import type { ShopSummaryPeriod } from './shop-summary';
+import { WelcomeEmail } from './welcome';
+import { PasswordResetEmail } from './password-reset';
+import { EmailVerifyEmail } from './email-verify';
+import { UserInviteEmail } from './user-invite';
+import { OrderConfirmationEmail } from './order-confirmation';
+import { OrderPackingEmail } from './order-packing';
+import { OrderOutForDeliveryEmail } from './order-out-for-delivery';
+import { OrderDeliveredEmail } from './order-delivered';
+import { OrderCancelledEmail } from './order-cancelled';
+import { OrgInviteEmail } from './org-invite';
+import { JoinCodeEmail } from './join-code';
+import { ApprovalNeededEmail } from './approval-needed';
+import { StatementReadyEmail } from './statement-ready';
+import { CreditAlertEmail } from './credit-alert';
+import { OrganisationVerifiedEmail } from './organisation-verified';
+import { PrescriptionSubmittedEmail } from './prescription-submitted';
+import { PrescriptionDecisionEmail } from './prescription-decision';
+import { PrescriptionReadyEmail } from './prescription-ready';
+import { LowStockEmail } from './low-stock';
+import { DispatchAssignedEmail } from './dispatch-assigned';
+import { ProcurementAlertEmail } from './procurement-alert';
+import { PromotionalEmail } from './promotional';
+import { ShopSummaryEmail } from './shop-summary';
+
+export type TemplateCategory =
+ | 'Auth'
+ | 'Orders'
+ | 'B2B'
+ | 'Prescriptions'
+ | 'Admin ops'
+ | 'Marketing'
+ | 'Analytics';
+
+export interface TemplateMeta {
+ id: string;
+ name: string;
+ category: TemplateCategory;
+ component: ComponentType<{ locale?: Locale; period?: ShopSummaryPeriod }>;
+ defaultProps?: Record;
+}
+
+export const templateCatalog: TemplateMeta[] = [
+ { id: 'welcome', name: 'Welcome', category: 'Auth', component: WelcomeEmail },
+ { id: 'password-reset', name: 'Password reset', category: 'Auth', component: PasswordResetEmail },
+ { id: 'email-verify', name: 'Email verify', category: 'Auth', component: EmailVerifyEmail },
+ { id: 'user-invite', name: 'User invite', category: 'Auth', component: UserInviteEmail },
+ { id: 'order-confirmation', name: 'Order confirmation', category: 'Orders', component: OrderConfirmationEmail },
+ { id: 'order-packing', name: 'Order packing', category: 'Orders', component: OrderPackingEmail },
+ { id: 'order-out-for-delivery', name: 'Out for delivery', category: 'Orders', component: OrderOutForDeliveryEmail },
+ { id: 'order-delivered', name: 'Order delivered', category: 'Orders', component: OrderDeliveredEmail },
+ { id: 'order-cancelled', name: 'Order cancelled', category: 'Orders', component: OrderCancelledEmail },
+ { id: 'org-invite', name: 'Organisation invite', category: 'B2B', component: OrgInviteEmail },
+ { id: 'join-code', name: 'Join code', category: 'B2B', component: JoinCodeEmail },
+ { id: 'approval-needed', name: 'Approval needed', category: 'B2B', component: ApprovalNeededEmail },
+ { id: 'statement-ready', name: 'Statement ready', category: 'B2B', component: StatementReadyEmail },
+ { id: 'credit-alert', name: 'Credit alert', category: 'B2B', component: CreditAlertEmail },
+ { id: 'organisation-verified', name: 'Organisation verified', category: 'B2B', component: OrganisationVerifiedEmail },
+ { id: 'prescription-submitted', name: 'Prescription submitted', category: 'Prescriptions', component: PrescriptionSubmittedEmail },
+ { id: 'prescription-decision', name: 'Prescription decision', category: 'Prescriptions', component: PrescriptionDecisionEmail },
+ { id: 'prescription-ready', name: 'Prescription ready', category: 'Prescriptions', component: PrescriptionReadyEmail },
+ { id: 'low-stock', name: 'Low stock', category: 'Admin ops', component: LowStockEmail },
+ { id: 'dispatch-assigned', name: 'Dispatch assigned', category: 'Admin ops', component: DispatchAssignedEmail },
+ { id: 'procurement-alert', name: 'Procurement alert', category: 'Admin ops', component: ProcurementAlertEmail },
+ { id: 'promotional', name: 'Promotional', category: 'Marketing', component: PromotionalEmail },
+ {
+ id: 'shop-summary',
+ name: 'Shop summary',
+ category: 'Analytics',
+ component: ShopSummaryEmail,
+ defaultProps: { period: 'weekly' as ShopSummaryPeriod },
+ },
+];
+
+export const templateMap = Object.fromEntries(
+ templateCatalog.map((t) => [t.id, t])
+) as Record;
diff --git a/emails/shop-summary.tsx b/emails/shop-summary.tsx
new file mode 100644
index 0000000..fe7dd67
--- /dev/null
+++ b/emails/shop-summary.tsx
@@ -0,0 +1,70 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { MetricGrid } from './components/MetricGrid';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export type ShopSummaryPeriod = 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'yearly';
+
+const periodLabels: Record = {
+ daily: { en: 'Daily', am: 'ዕለታዊ' },
+ weekly: { en: 'Weekly', am: 'ሳምንታዊ' },
+ monthly: { en: 'Monthly', am: 'ወርሃዊ' },
+ quarterly: { en: 'Quarterly', am: 'ሩብ ዓመታዊ' },
+ yearly: { en: 'Yearly', am: 'ዓመታዊ' },
+};
+
+export interface ShopSummaryEmailProps {
+ locale?: Locale;
+ period?: ShopSummaryPeriod;
+ userName?: string;
+ dateRange?: string;
+ ordersCount?: string;
+ revenue?: string;
+ averageOrderValue?: string;
+ topSku?: string;
+ ctaUrl?: string;
+}
+
+export const ShopSummaryEmail = ({
+ locale,
+ period = 'weekly',
+ userName = 'Marketing Lead',
+ dateRange = '28 Jul – 3 Aug 2026',
+ ordersCount = '486',
+ revenue = 'ETB 1.24M',
+ averageOrderValue = 'ETB 2,551',
+ topSku = 'Paracetamol 500mg',
+ ctaUrl = `${theme.brand.website}/admin/analytics`,
+}: ShopSummaryEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('shop-summary', l);
+ const common = tCommon(l);
+ const periodLabel = periodLabels[period][l];
+ return (
+
+ {interpolate(t.heading, { periodLabel })}
+ {interpolate(t.body1, { userName, periodLabel, dateRange })}
+
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+ShopSummaryEmail.PreviewProps = { locale: 'en', period: 'weekly' } as ShopSummaryEmailProps;
+export default ShopSummaryEmail;
diff --git a/emails/statement-ready.tsx b/emails/statement-ready.tsx
new file mode 100644
index 0000000..d975034
--- /dev/null
+++ b/emails/statement-ready.tsx
@@ -0,0 +1,46 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { StatusBanner } from './components/StatusBanner';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface StatementReadyEmailProps {
+ locale?: Locale;
+ userName?: string;
+ orgName?: string;
+ periodLabel?: string;
+ amountDue?: string;
+ ctaUrl?: string;
+}
+
+export const StatementReadyEmail = ({
+ locale,
+ userName = 'Helen Tadesse',
+ orgName = 'Yaltopia Tech',
+ periodLabel = 'July 2026',
+ amountDue = 'ETB 184,200',
+ ctaUrl = `${theme.brand.website}/b2b/statements`,
+}: StatementReadyEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('statement-ready', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.banner, { amountDue })}
+ {t.heading}
+ {interpolate(t.body1, { userName, orgName, periodLabel })}
+
+ {common.regards}
{common.team}
+
+ );
+};
+
+StatementReadyEmail.PreviewProps = { locale: 'en' } as StatementReadyEmailProps;
+export default StatementReadyEmail;
diff --git a/emails/theme.ts b/emails/theme.ts
new file mode 100644
index 0000000..bd55472
--- /dev/null
+++ b/emails/theme.ts
@@ -0,0 +1,36 @@
+export const theme = {
+ colors: {
+ brand: '#A8C73A',
+ brandDeep: '#8FAD2F',
+ forest: '#141414',
+ accent: '#E28A1A',
+ cream: '#F6F7F2',
+ surface: '#FFFFFF',
+ line: '#E2E5D8',
+ muted: '#5C5F56',
+ danger: '#C0392B',
+ success: '#3D7A1F',
+ info: '#2F5D8C',
+ },
+ fonts: {
+ sans: '"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
+ },
+ spacing: {
+ xs: '8px',
+ sm: '16px',
+ md: '24px',
+ lg: '32px',
+ xl: '48px',
+ },
+ brand: {
+ name: 'Gishen Pharmacy',
+ shortName: 'Gishen',
+ email: 'info@gishenpharmacy.org',
+ b2bEmail: 'b2b@gishenpharmacy.org',
+ website: 'https://gishenpharmacy.org',
+ address: 'Addis Ababa, Ethiopia',
+ phone: '+251 930 099 850',
+ },
+} as const;
+
+export type Theme = typeof theme;
diff --git a/emails/user-invite.tsx b/emails/user-invite.tsx
new file mode 100644
index 0000000..095ae16
--- /dev/null
+++ b/emails/user-invite.tsx
@@ -0,0 +1,43 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface UserInviteEmailProps {
+ locale?: Locale;
+ orgName?: string;
+ inviterName?: string;
+ role?: string;
+ inviteUrl?: string;
+}
+
+export const UserInviteEmail = ({
+ locale,
+ orgName = 'Yaltopia Tech',
+ inviterName = 'Meron Hailu',
+ role = 'Member',
+ inviteUrl = `${theme.brand.website}/invite`,
+}: UserInviteEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('user-invite', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.heading, { orgName })}
+ {interpolate(t.body1, { inviterName, role })}
+
+ {t.body2}
+ {common.regards}
{common.team}
+
+ );
+};
+
+UserInviteEmail.PreviewProps = { locale: 'en' } as UserInviteEmailProps;
+export default UserInviteEmail;
diff --git a/emails/utils/interpolate.ts b/emails/utils/interpolate.ts
new file mode 100644
index 0000000..3e2f54b
--- /dev/null
+++ b/emails/utils/interpolate.ts
@@ -0,0 +1,3 @@
+export function interpolate(template: string, vars: Record) {
+ return template.replace(/\{(\w+)\}/g, (_, key: string) => String(vars[key] ?? ''));
+}
diff --git a/emails/utils/logoDataUri.ts b/emails/utils/logoDataUri.ts
new file mode 100644
index 0000000..d85253b
--- /dev/null
+++ b/emails/utils/logoDataUri.ts
@@ -0,0 +1 @@
+export const logoDataUri = 'data:image/png;base64,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';
diff --git a/emails/welcome.tsx b/emails/welcome.tsx
new file mode 100644
index 0000000..cc6c2c7
--- /dev/null
+++ b/emails/welcome.tsx
@@ -0,0 +1,40 @@
+import { Heading, Section, Text } from '@react-email/components';
+import { EmailLayout } from './components/EmailLayout';
+import { Button } from './components/Button';
+import { styles } from './components/styles';
+import { tCommon } from './i18n/common';
+import { tTemplate } from './i18n/templates';
+import { resolveLocale, type Locale } from './i18n/types';
+import { interpolate } from './utils/interpolate';
+import { theme } from './theme';
+
+export interface WelcomeEmailProps {
+ locale?: Locale;
+ userName?: string;
+ ctaUrl?: string;
+}
+
+export const WelcomeEmail = ({
+ locale,
+ userName = 'Abebe Kebede',
+ ctaUrl = theme.brand.website,
+}: WelcomeEmailProps) => {
+ const l = resolveLocale(locale);
+ const t = tTemplate('welcome', l);
+ const common = tCommon(l);
+ return (
+
+ {interpolate(t.heading, { userName })}
+ {t.body1}
+ {t.body2}
+
+ {t.closing}
+ {common.regards}
{common.team}
+
+ );
+};
+
+WelcomeEmail.PreviewProps = { userName: 'Abebe Kebede', locale: 'en' } as WelcomeEmailProps;
+export default WelcomeEmail;
diff --git a/next-env.d.ts b/next-env.d.ts
new file mode 100644
index 0000000..40c3d68
--- /dev/null
+++ b/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 0000000..91ef62f
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,6 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: true,
+};
+
+module.exports = nextConfig;
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..49e1e84
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,7547 @@
+{
+ "name": "gishen-email-templates",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "gishen-email-templates",
+ "version": "0.1.0",
+ "dependencies": {
+ "@react-email/components": "^0.0.25",
+ "@react-email/render": "^1.0.4",
+ "next": "^14.2.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
+ },
+ "devDependencies": {
+ "@types/node": "^22.0.0",
+ "@types/react": "^18.3.0",
+ "@types/react-dom": "^18.3.0",
+ "react-email": "^2.0.0",
+ "typescript": "^5.6.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz",
+ "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.24.5",
+ "@babel/helpers": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
+ "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.8",
+ "@babel/types": "^7.29.8",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.8"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
+ "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template/node_modules/@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.8"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
+ "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.8",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.8",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.8",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.8"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz",
+ "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz",
+ "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz",
+ "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz",
+ "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz",
+ "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz",
+ "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz",
+ "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz",
+ "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz",
+ "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz",
+ "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz",
+ "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz",
+ "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz",
+ "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz",
+ "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz",
+ "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz",
+ "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz",
+ "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz",
+ "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz",
+ "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz",
+ "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz",
+ "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz",
+ "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz",
+ "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.23.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
+ "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@eslint/object-schema": "^3.0.5",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz",
+ "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@eslint/core": "^1.2.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
+ "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz",
+ "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@eslint/core": "^1.2.1",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.12"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz",
+ "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.8.0",
+ "@floating-ui/utils": "^0.2.12"
+ }
+ },
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.9.tgz",
+ "integrity": "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/dom": "^1.8.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz",
+ "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@next/env": {
+ "version": "14.2.35",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.35.tgz",
+ "integrity": "sha512-DuhvCtj4t9Gwrx80dmz2F4t/zKQ4ktN8WrMwOuVzkJfBilwAwGr6v16M5eI8yCuZ63H9TTuEU09Iu2HqkzFPVQ==",
+ "license": "MIT"
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.33.tgz",
+ "integrity": "sha512-HqYnb6pxlsshoSTubdXKu15g3iivcbsMXg4bYpjL2iS/V6aQot+iyF4BUc2qA/J/n55YtvE4PHMKWBKGCF/+wA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.33.tgz",
+ "integrity": "sha512-8HGBeAE5rX3jzKvF593XTTFg3gxeU4f+UWnswa6JPhzaR6+zblO5+fjltJWIZc4aUalqTclvN2QtTC37LxvZAA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.33.tgz",
+ "integrity": "sha512-JXMBka6lNNmqbkvcTtaX8Gu5by9547bukHQvPoLe9VRBx1gHwzf5tdt4AaezW85HAB3pikcvyqBToRTDA4DeLw==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.33.tgz",
+ "integrity": "sha512-Bm+QulsAItD/x6Ih8wGIMfRJy4G73tu1HJsrccPW6AfqdZd0Sfm5Imhgkgq2+kly065rYMnCOxTBvmvFY1BKfg==",
+ "cpu": [
+ "arm64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.33.tgz",
+ "integrity": "sha512-FnFn+ZBgsVMbGDsTqo8zsnRzydvsGV8vfiWwUo1LD8FTmPTdV+otGSWKc4LJec0oSexFnCYVO4hX8P8qQKaSlg==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.33.tgz",
+ "integrity": "sha512-345tsIWMzoXaQndUTDv1qypDRiebFxGYx9pYkhwY4hBRaOLt8UGfiWKr9FSSHs25dFIf8ZqIFaPdy5MljdoawA==",
+ "cpu": [
+ "x64"
+ ],
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.33.tgz",
+ "integrity": "sha512-nscpt0G6UCTkrT2ppnJnFsYbPDQwmum4GNXYTeoTIdsmMydSKFz9Iny2jpaRupTb+Wl298+Rh82WKzt9LCcqSQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz",
+ "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.2.33",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.33.tgz",
+ "integrity": "sha512-nOjfZMy8B94MdisuzZo9/57xuFVLHJaDj5e/xrduJp9CV2/HrfxTRH2fbyLe+K9QT41WBLUd4iXX3R7jBp0EUg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@one-ini/wasm": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
+ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==",
+ "license": "MIT"
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@radix-ui/colors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-1.0.1.tgz",
+ "integrity": "sha512-xySw8f0ZVsAEP+e7iLl3EvcBXX7gsIlC1Zso/sPBW9gIWerBTgz6axrjU+MZ39wD+WFi5h5zdWpsg3+hwt2Qsg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz",
+ "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz",
+ "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-collapsible": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.0.tgz",
+ "integrity": "sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz",
+ "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz",
+ "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz",
+ "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-direction": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz",
+ "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz",
+ "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-escape-keydown": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz",
+ "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz",
+ "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-id": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz",
+ "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popover": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz",
+ "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.0",
+ "@radix-ui/react-focus-guards": "1.1.0",
+ "@radix-ui/react-focus-scope": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.0",
+ "@radix-ui/react-portal": "1.1.1",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "aria-hidden": "^1.1.1",
+ "react-remove-scroll": "2.5.7"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz",
+ "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0",
+ "@radix-ui/react-use-rect": "1.1.0",
+ "@radix-ui/react-use-size": "1.1.0",
+ "@radix-ui/rect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz",
+ "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz",
+ "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz",
+ "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz",
+ "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-collection": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-callback-ref": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz",
+ "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-toggle": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz",
+ "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-toggle-group": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz",
+ "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-direction": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-roving-focus": "1.1.0",
+ "@radix-ui/react-toggle": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.1.tgz",
+ "integrity": "sha512-LLE8nzNE4MzPMw3O2zlVlkLFid3y9hMUs7uCbSHyKSo+tCN4yMCf+ZCCcfrYgsOC0TiHBPQ1mtpJ2liY3ZT3SQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.0",
+ "@radix-ui/react-compose-refs": "1.1.0",
+ "@radix-ui/react-context": "1.1.0",
+ "@radix-ui/react-dismissable-layer": "1.1.0",
+ "@radix-ui/react-id": "1.1.0",
+ "@radix-ui/react-popper": "1.2.0",
+ "@radix-ui/react-portal": "1.1.1",
+ "@radix-ui/react-presence": "1.1.0",
+ "@radix-ui/react-primitive": "2.0.0",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-use-controllable-state": "1.1.0",
+ "@radix-ui/react-visually-hidden": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz",
+ "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz",
+ "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz",
+ "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-callback-ref": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz",
+ "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz",
+ "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/rect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz",
+ "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz",
+ "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/rect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz",
+ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@react-email/body": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/body/-/body-0.0.10.tgz",
+ "integrity": "sha512-dMJyL9aU25ieatdPtVjCyQ/WHZYHwNc+Hy/XpF8Cc18gu21cUynVEeYQzFSeigDRMeBQ3PGAyjVDPIob7YlGwA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/button": {
+ "version": "0.0.17",
+ "resolved": "https://registry.npmjs.org/@react-email/button/-/button-0.0.17.tgz",
+ "integrity": "sha512-ioHdsk+BpGS/PqjU6JS7tUrVy9yvbUx92Z+Cem2+MbYp55oEwQ9VHf7u4f5NoM0gdhfKSehBwRdYlHt/frEMcg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/code-block": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/@react-email/code-block/-/code-block-0.0.9.tgz",
+ "integrity": "sha512-Zrhc71VYrSC1fVXJuaViKoB/dBjxLw6nbE53Bm/eUuZPdnnZ1+ZUIh8jfaRKC5MzMjgnLGQTweGXVnfIrhyxtQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "dependencies": {
+ "prismjs": "1.29.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/code-inline": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/@react-email/code-inline/-/code-inline-0.0.4.tgz",
+ "integrity": "sha512-zj3oMQiiUCZbddSNt3k0zNfIBFK0ZNDIzzDyBaJKy6ZASTtWfB+1WFX0cpTX8q0gUiYK+A94rk5Qp68L6YXjXQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/column": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/column/-/column-0.0.12.tgz",
+ "integrity": "sha512-Rsl7iSdDaeHZO938xb+0wR5ud0Z3MVfdtPbNKJNojZi2hApwLAQXmDrnn/AcPDM5Lpl331ZljJS8vHTWxxkvKw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/components": {
+ "version": "0.0.25",
+ "resolved": "https://registry.npmjs.org/@react-email/components/-/components-0.0.25.tgz",
+ "integrity": "sha512-lnfVVrThEcET5NPoeaXvrz9UxtWpGRcut2a07dLbyKgNbP7vj/cXTI5TuHtanCvhCddFpMDnElNRghDOfPzwUg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "dependencies": {
+ "@react-email/body": "0.0.10",
+ "@react-email/button": "0.0.17",
+ "@react-email/code-block": "0.0.9",
+ "@react-email/code-inline": "0.0.4",
+ "@react-email/column": "0.0.12",
+ "@react-email/container": "0.0.14",
+ "@react-email/font": "0.0.8",
+ "@react-email/head": "0.0.11",
+ "@react-email/heading": "0.0.14",
+ "@react-email/hr": "0.0.10",
+ "@react-email/html": "0.0.10",
+ "@react-email/img": "0.0.10",
+ "@react-email/link": "0.0.10",
+ "@react-email/markdown": "0.0.12",
+ "@react-email/preview": "0.0.11",
+ "@react-email/render": "1.0.1",
+ "@react-email/row": "0.0.10",
+ "@react-email/section": "0.0.14",
+ "@react-email/tailwind": "0.1.0",
+ "@react-email/text": "0.0.10"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/components/node_modules/@react-email/render": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@react-email/render/-/render-1.0.1.tgz",
+ "integrity": "sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA==",
+ "license": "MIT",
+ "dependencies": {
+ "html-to-text": "9.0.5",
+ "js-beautify": "^1.14.11",
+ "react-promise-suspense": "0.3.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/container": {
+ "version": "0.0.14",
+ "resolved": "https://registry.npmjs.org/@react-email/container/-/container-0.0.14.tgz",
+ "integrity": "sha512-NgoaJJd9tTtsrveL86Ocr/AYLkGyN3prdXKd/zm5fQpfDhy/NXezyT3iF6VlwAOEUIu64ErHpAJd+P6ygR+vjg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/font": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@react-email/font/-/font-0.0.8.tgz",
+ "integrity": "sha512-fSBEqYyVPAyyACBBHcs3wEYzNknpHMuwcSAAKE8fOoDfGqURr/vSxKPdh4tOa9z7G4hlcEfgGrCYEa2iPT22cw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/head": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/head/-/head-0.0.11.tgz",
+ "integrity": "sha512-skw5FUgyamIMK+LN+fZQ5WIKQYf0dPiRAvsUAUR2eYoZp9oRsfkIpFHr0GWPkKAYjFEj+uJjaxQ/0VzQH7svVg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/heading": {
+ "version": "0.0.14",
+ "resolved": "https://registry.npmjs.org/@react-email/heading/-/heading-0.0.14.tgz",
+ "integrity": "sha512-jZM7IVuZOXa0G110ES8OkxajPTypIKlzlO1K1RIe1auk76ukQRiCg1IRV4HZlWk1GGUbec5hNxsvZa2kU8cb9w==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/hr": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/hr/-/hr-0.0.10.tgz",
+ "integrity": "sha512-3AA4Yjgl3zEid/KVx6uf6TuLJHVZvUc2cG9Wm9ZpWeAX4ODA+8g9HyuC0tfnjbRsVMhMcCGiECuWWXINi+60vA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/html": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/html/-/html-0.0.10.tgz",
+ "integrity": "sha512-06uiuSKJBWQJfhCKv4MPupELei4Lepyz9Sth7Yq7Fq29CAeB1ejLgKkGqn1I+FZ72hQxPLdYF4iq4yloKv3JCg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/img": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/img/-/img-0.0.10.tgz",
+ "integrity": "sha512-pJ8glJjDNaJ53qoM95pvX9SK05yh0bNQY/oyBKmxlBDdUII6ixuMc3SCwYXPMl+tgkQUyDgwEBpSTrLAnjL3hA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/link": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/link/-/link-0.0.10.tgz",
+ "integrity": "sha512-tva3wvAWSR10lMJa9fVA09yRn7pbEki0ZZpHE6GD1jKbFhmzt38VgLO9B797/prqoDZdAr4rVK7LJFcdPx3GwA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/markdown": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/@react-email/markdown/-/markdown-0.0.12.tgz",
+ "integrity": "sha512-wsuvj1XAb6O63aizCLNEeqVgKR3oFjAwt9vjfg2y2oh4G1dZeo8zonZM2x1fmkEkBZhzwSHraNi70jSXhA3A9w==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "dependencies": {
+ "md-to-react-email": "5.0.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/preview": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/@react-email/preview/-/preview-0.0.11.tgz",
+ "integrity": "sha512-7O/CT4b16YlSGrj18htTPx3Vbhu2suCGv/cSe5c+fuSrIM/nMiBSZ3Js16Vj0XJbAmmmlVmYFZw9L20wXJ+LjQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@react-email/render/-/render-1.4.0.tgz",
+ "integrity": "sha512-ZtJ3noggIvW1ZAryoui95KJENKdCzLmN5F7hyZY1F/17B1vwzuxHB7YkuCg0QqHjDivc5axqYEYdIOw4JIQdUw==",
+ "license": "MIT",
+ "dependencies": {
+ "html-to-text": "^9.0.5",
+ "prettier": "^3.5.3",
+ "react-promise-suspense": "^0.3.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/row": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/row/-/row-0.0.10.tgz",
+ "integrity": "sha512-jPyEhG3gsLX+Eb9U+A30fh0gK6hXJwF4ghJ+ZtFQtlKAKqHX+eCpWlqB3Xschd/ARJLod8WAswg0FB+JD9d0/A==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/section": {
+ "version": "0.0.14",
+ "resolved": "https://registry.npmjs.org/@react-email/section/-/section-0.0.14.tgz",
+ "integrity": "sha512-+fYWLb4tPU1A/+GE5J1+SEMA7/wR3V30lQ+OR9t2kAJqNrARDbMx0bLnYnR1QL5TiFRz0pCF05SQUobk6gHEDQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/tailwind": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@react-email/tailwind/-/tailwind-0.1.0.tgz",
+ "integrity": "sha512-qysVUEY+M3SKUvu35XDpzn7yokhqFOT3tPU6Mj/pgc62TL5tQFj6msEbBtwoKs2qO3WZvai0DIHdLhaOxBQSow==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@react-email/text": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@react-email/text/-/text-0.0.10.tgz",
+ "integrity": "sha512-wNAnxeEAiFs6N+SxS0y6wTJWfewEzUETuyS2aZmT00xk50VijwyFRuhm4sYSjusMyshevomFwz5jNISCxRsGWw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0 || ^19.0 || ^19.0.0-rc"
+ }
+ },
+ "node_modules/@selderee/plugin-htmlparser2": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz",
+ "integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==",
+ "license": "MIT",
+ "dependencies": {
+ "domhandler": "^5.0.3",
+ "selderee": "^0.11.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@swc/core": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.101.tgz",
+ "integrity": "sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/counter": "^0.1.1",
+ "@swc/types": "^0.1.5"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/swc"
+ },
+ "optionalDependencies": {
+ "@swc/core-darwin-arm64": "1.3.101",
+ "@swc/core-darwin-x64": "1.3.101",
+ "@swc/core-linux-arm-gnueabihf": "1.3.101",
+ "@swc/core-linux-arm64-gnu": "1.3.101",
+ "@swc/core-linux-arm64-musl": "1.3.101",
+ "@swc/core-linux-x64-gnu": "1.3.101",
+ "@swc/core-linux-x64-musl": "1.3.101",
+ "@swc/core-win32-arm64-msvc": "1.3.101",
+ "@swc/core-win32-ia32-msvc": "1.3.101",
+ "@swc/core-win32-x64-msvc": "1.3.101"
+ },
+ "peerDependencies": {
+ "@swc/helpers": "^0.5.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/helpers": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@swc/core-darwin-arm64": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.101.tgz",
+ "integrity": "sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-darwin-x64": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.101.tgz",
+ "integrity": "sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm-gnueabihf": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.101.tgz",
+ "integrity": "sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-gnu": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.101.tgz",
+ "integrity": "sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-arm64-musl": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.101.tgz",
+ "integrity": "sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-gnu": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.101.tgz",
+ "integrity": "sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-linux-x64-musl": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.101.tgz",
+ "integrity": "sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-arm64-msvc": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.101.tgz",
+ "integrity": "sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-ia32-msvc": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.101.tgz",
+ "integrity": "sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/core-win32-x64-msvc": {
+ "version": "1.3.101",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.101.tgz",
+ "integrity": "sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
+ "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/counter": "^0.1.3",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@swc/types": {
+ "version": "0.1.28",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz",
+ "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@swc/counter": "^0.1.3"
+ }
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.19",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
+ "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/esrecurse": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+ "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.20.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz",
+ "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/prismjs": {
+ "version": "1.26.6",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz",
+ "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.15",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
+ "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.31",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz",
+ "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.2.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.7",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
+ "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^18.0.0"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.26.0.tgz",
+ "integrity": "sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/webpack": {
+ "version": "5.28.5",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.5.tgz",
+ "integrity": "sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "tapable": "^2.2.0",
+ "webpack": "^5"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
+ "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
+ "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
+ "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
+ "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
+ "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.13.2",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
+ "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
+ "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/wasm-gen": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
+ "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
+ "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
+ "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
+ "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/helper-wasm-section": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-opt": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1",
+ "@webassemblyjs/wast-printer": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
+ "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
+ "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-buffer": "1.14.1",
+ "@webassemblyjs/wasm-gen": "1.14.1",
+ "@webassemblyjs/wasm-parser": "1.14.1"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
+ "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@webassemblyjs/helper-api-error": "1.13.2",
+ "@webassemblyjs/helper-wasm-bytecode": "1.13.2",
+ "@webassemblyjs/ieee754": "1.13.2",
+ "@webassemblyjs/leb128": "1.13.2",
+ "@webassemblyjs/utf8": "1.13.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
+ "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@webassemblyjs/ast": "1.14.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/abbrev": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz",
+ "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==",
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/aria-hidden": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz",
+ "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.14",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
+ "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.5",
+ "caniuse-lite": "^1.0.30001464",
+ "fraction.js": "^4.2.0",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.11.12",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz",
+ "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
+ "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.44",
+ "caniuse-lite": "^1.0.30001806",
+ "electron-to-chromium": "^1.5.393",
+ "node-releases": "^2.0.51",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001809",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz",
+ "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
+ "license": "MIT"
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
+ "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
+ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debounce": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.0.0.tgz",
+ "integrity": "sha512-xRetU6gL1VJbs85Mc4FoEGSjQxzpdxRyFhe3lmWFyy2EzydIcD4xzUvRJMD+NPDfMwKNhxa3PvsIOU32luIWeA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.0.3",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
+ "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "license": "MIT"
+ },
+ "node_modules/editorconfig": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz",
+ "integrity": "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==",
+ "license": "MIT",
+ "dependencies": {
+ "@one-ini/wasm": "0.1.1",
+ "commander": "^10.0.0",
+ "minimatch": "^9.0.1",
+ "semver": "^7.5.3"
+ },
+ "bin": {
+ "editorconfig": "bin/editorconfig"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/editorconfig/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/editorconfig/node_modules/brace-expansion": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/editorconfig/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/editorconfig/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/editorconfig/node_modules/semver": {
+ "version": "7.8.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.402",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.402.tgz",
+ "integrity": "sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "license": "MIT"
+ },
+ "node_modules/engine.io": {
+ "version": "6.5.5",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+ "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.4.1",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/engine.io-client": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
+ "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.0.0"
+ }
+ },
+ "node_modules/engine.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.24.5",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
+ "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
+ "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.19.11",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz",
+ "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.19.11",
+ "@esbuild/android-arm": "0.19.11",
+ "@esbuild/android-arm64": "0.19.11",
+ "@esbuild/android-x64": "0.19.11",
+ "@esbuild/darwin-arm64": "0.19.11",
+ "@esbuild/darwin-x64": "0.19.11",
+ "@esbuild/freebsd-arm64": "0.19.11",
+ "@esbuild/freebsd-x64": "0.19.11",
+ "@esbuild/linux-arm": "0.19.11",
+ "@esbuild/linux-arm64": "0.19.11",
+ "@esbuild/linux-ia32": "0.19.11",
+ "@esbuild/linux-loong64": "0.19.11",
+ "@esbuild/linux-mips64el": "0.19.11",
+ "@esbuild/linux-ppc64": "0.19.11",
+ "@esbuild/linux-riscv64": "0.19.11",
+ "@esbuild/linux-s390x": "0.19.11",
+ "@esbuild/linux-x64": "0.19.11",
+ "@esbuild/netbsd-x64": "0.19.11",
+ "@esbuild/openbsd-x64": "0.19.11",
+ "@esbuild/sunos-x64": "0.19.11",
+ "@esbuild/win32-arm64": "0.19.11",
+ "@esbuild/win32-ia32": "0.19.11",
+ "@esbuild/win32-x64": "0.19.11"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "10.8.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.8.0.tgz",
+ "integrity": "sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "workspaces": [
+ "packages/*"
+ ],
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@eslint/config-array": "^0.23.5",
+ "@eslint/config-helpers": "^0.7.0",
+ "@eslint/core": "^1.2.1",
+ "@eslint/plugin-kit": "^0.7.2",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.14.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^9.1.2",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.2.0",
+ "esquery": "^1.7.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "minimatch": "^10.2.5",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+ "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-config-turbo": {
+ "version": "1.10.12",
+ "resolved": "https://registry.npmjs.org/eslint-config-turbo/-/eslint-config-turbo-1.10.12.tgz",
+ "integrity": "sha512-z3jfh+D7UGYlzMWGh+Kqz++hf8LOE96q3o5R8X4HTjmxaBWlLAWG+0Ounr38h+JLR2TJno0hU9zfzoPNkR9BdA==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "eslint-plugin-turbo": "1.10.12"
+ },
+ "peerDependencies": {
+ "eslint": ">6.6.0"
+ }
+ },
+ "node_modules/eslint-plugin-turbo": {
+ "version": "1.10.12",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-turbo/-/eslint-plugin-turbo-1.10.12.tgz",
+ "integrity": "sha512-uNbdj+ohZaYo4tFJ6dStRXu2FZigwulR1b3URPXe0Q8YaE7thuekKNP+54CHtZPH9Zey9dmDx5btAQl9mfzGOw==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "dotenv": "16.0.3"
+ },
+ "peerDependencies": {
+ "eslint": ">6.6.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+ "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "@types/esrecurse": "^4.3.1",
+ "@types/estree": "^1.0.8",
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/espree": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+ "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "acorn": "^8.16.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^5.0.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz",
+ "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==",
+ "dev": true,
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "10.17.4",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.17.4.tgz",
+ "integrity": "sha512-CYBSs6cWfzcasAX8aofgKFZootmkQtR4qxbfTOksBLny/lbUfkGbQAFOS3qnl6Uau1N9y8tUpI7mVIrHgkFjLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.3.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz",
+ "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/html-to-text": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz",
+ "integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==",
+ "license": "MIT",
+ "dependencies": {
+ "@selderee/plugin-htmlparser2": "^0.11.0",
+ "deepmerge": "^4.3.1",
+ "dom-serializer": "^2.0.0",
+ "htmlparser2": "^8.0.2",
+ "selderee": "^0.11.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz",
+ "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.7",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-beautify": {
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz",
+ "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==",
+ "license": "MIT",
+ "dependencies": {
+ "config-chain": "^1.1.13",
+ "editorconfig": "^1.0.4",
+ "glob": "^10.4.2",
+ "js-cookie": "^3.0.5",
+ "nopt": "^7.2.1"
+ },
+ "bin": {
+ "css-beautify": "js/bin/css-beautify.js",
+ "html-beautify": "js/bin/html-beautify.js",
+ "js-beautify": "js/bin/js-beautify.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/js-beautify/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "license": "MIT"
+ },
+ "node_modules/js-beautify/node_modules/brace-expansion": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/js-beautify/node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/js-beautify/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/js-beautify/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/js-cookie": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.8.tgz",
+ "integrity": "sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==",
+ "license": "MIT"
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/leac": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz",
+ "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/marked": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-7.0.4.tgz",
+ "integrity": "sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ==",
+ "license": "MIT",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/md-to-react-email": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/md-to-react-email/-/md-to-react-email-5.0.2.tgz",
+ "integrity": "sha512-x6kkpdzIzUhecda/yahltfEl53mH26QdWu4abUF9+S0Jgam8P//Ciro8cdhyMHnT5MQUJYrIbO6ORM2UxPiNNA==",
+ "license": "MIT",
+ "dependencies": {
+ "marked": "7.0.4"
+ },
+ "peerDependencies": {
+ "react": "18.x"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimizer-webpack-plugin": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
+ "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^4.3.0",
+ "terser": "^5.31.1"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@minify-html/node": {
+ "optional": true
+ },
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/css": {
+ "optional": true
+ },
+ "@swc/html": {
+ "optional": true
+ },
+ "clean-css": {
+ "optional": true
+ },
+ "cssnano": {
+ "optional": true
+ },
+ "csso": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "html-minifier-terser": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
+ "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/next": {
+ "version": "14.2.35",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz",
+ "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==",
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.2.35",
+ "@swc/helpers": "0.5.5",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.2.33",
+ "@next/swc-darwin-x64": "14.2.33",
+ "@next/swc-linux-arm64-gnu": "14.2.33",
+ "@next/swc-linux-arm64-musl": "14.2.33",
+ "@next/swc-linux-x64-gnu": "14.2.33",
+ "@next/swc-linux-x64-musl": "14.2.33",
+ "@next/swc-win32-arm64-msvc": "14.2.33",
+ "@next/swc-win32-ia32-msvc": "14.2.33",
+ "@next/swc-win32-x64-msvc": "14.2.33"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@playwright/test": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.53",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz",
+ "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/nopt": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz",
+ "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==",
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^2.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/parseley": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz",
+ "integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==",
+ "license": "MIT",
+ "dependencies": {
+ "leac": "^0.6.0",
+ "peberminta": "^0.9.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/peberminta": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz",
+ "integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
+ "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "postcss-selector-parser": "^6.1.1"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
+ "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.9.6",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz",
+ "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==",
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prism-react-renderer": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.1.0.tgz",
+ "integrity": "sha512-I5cvXHjA1PVGbGm1MsWCpvBCRrYyxEri0MC7/JbfIfYfcXAxHyO5PaUjs3A8H5GW6kJcLhTHxxMaOZZpRZD2iQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prismjs": "^1.26.0",
+ "clsx": "^1.2.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.0.0"
+ }
+ },
+ "node_modules/prism-react-renderer/node_modules/clsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz",
+ "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "license": "ISC"
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
+ "node_modules/react-email": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/react-email/-/react-email-2.1.6.tgz",
+ "integrity": "sha512-BtR9VI1CMq4953wfiBmzupKlWcRThaWG2dDgl1vWAllK3tNNmJNerwY4VlmASRDQZE3LpLXU3+lf8N/VAKdbZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "7.24.5",
+ "@babel/parser": "7.24.5",
+ "@radix-ui/colors": "1.0.1",
+ "@radix-ui/react-collapsible": "1.1.0",
+ "@radix-ui/react-popover": "1.1.1",
+ "@radix-ui/react-slot": "1.1.0",
+ "@radix-ui/react-toggle-group": "1.1.0",
+ "@radix-ui/react-tooltip": "1.1.1",
+ "@swc/core": "1.3.101",
+ "@types/react": "18.2.47",
+ "@types/react-dom": "^18.2.0",
+ "@types/webpack": "5.28.5",
+ "autoprefixer": "10.4.14",
+ "chalk": "4.1.2",
+ "chokidar": "3.5.3",
+ "clsx": "2.1.0",
+ "commander": "11.1.0",
+ "debounce": "2.0.0",
+ "esbuild": "0.19.11",
+ "eslint-config-prettier": "9.0.0",
+ "eslint-config-turbo": "1.10.12",
+ "framer-motion": "10.17.4",
+ "glob": "10.3.4",
+ "log-symbols": "4.1.0",
+ "mime-types": "2.1.35",
+ "next": "14.1.4",
+ "normalize-path": "3.0.0",
+ "ora": "5.4.1",
+ "postcss": "8.4.38",
+ "prism-react-renderer": "2.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "socket.io": "4.7.3",
+ "socket.io-client": "4.7.3",
+ "sonner": "1.3.1",
+ "source-map-js": "1.0.2",
+ "stacktrace-parser": "0.1.10",
+ "tailwind-merge": "2.2.0",
+ "tailwindcss": "3.4.0",
+ "typescript": "5.1.6"
+ },
+ "bin": {
+ "email": "cli/index.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/env": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.4.tgz",
+ "integrity": "sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/react-email/node_modules/@next/swc-darwin-arm64": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz",
+ "integrity": "sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-darwin-x64": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz",
+ "integrity": "sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz",
+ "integrity": "sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz",
+ "integrity": "sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz",
+ "integrity": "sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz",
+ "integrity": "sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz",
+ "integrity": "sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz",
+ "integrity": "sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz",
+ "integrity": "sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/react-email/node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
+ "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/react-email/node_modules/@types/react": {
+ "version": "18.2.47",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz",
+ "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/react-email/node_modules/next": {
+ "version": "14.1.4",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.1.4.tgz",
+ "integrity": "sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==",
+ "deprecated": "This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details.",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@next/env": "14.1.4",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001579",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.1.4",
+ "@next/swc-darwin-x64": "14.1.4",
+ "@next/swc-linux-arm64-gnu": "14.1.4",
+ "@next/swc-linux-arm64-musl": "14.1.4",
+ "@next/swc-linux-x64-gnu": "14.1.4",
+ "@next/swc-linux-x64-musl": "14.1.4",
+ "@next/swc-win32-arm64-msvc": "14.1.4",
+ "@next/swc-win32-ia32-msvc": "14.1.4",
+ "@next/swc-win32-x64-msvc": "14.1.4"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-email/node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/react-email/node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/react-email/node_modules/postcss/node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-email/node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-email/node_modules/typescript": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
+ "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/react-promise-suspense": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/react-promise-suspense/-/react-promise-suspense-0.3.4.tgz",
+ "integrity": "sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^2.0.1"
+ }
+ },
+ "node_modules/react-promise-suspense/node_modules/fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==",
+ "license": "MIT"
+ },
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
+ "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "react-remove-scroll-bar": "^2.3.4",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz",
+ "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "react-style-singleton": "^2.2.2",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-style-singleton": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
+ "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-nonce": "^1.0.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/restore-cursor/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/schema-utils/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/selderee": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz",
+ "integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==",
+ "license": "MIT",
+ "dependencies": {
+ "parseley": "^0.12.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/killymxi"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.3.tgz",
+ "integrity": "sha512-SE+UIQXBQE+GPG2oszWMlsEmWtHVqw/h1VrYJGK5/MC7CH5p58N448HwIrtREcvR4jfdOJAY4ieQfxMr55qbbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.5.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.8.tgz",
+ "integrity": "sha512-6Oy52pbg+kvdCVvjcN+FnY7BvxZ7cIHNScbvztT/It5d0vbwoJoVZmF2gjJmnV0/4WlXRfG15zc45ySk9Ah8bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.4.1",
+ "ws": "~8.21.0"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.21.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz",
+ "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-client": {
+ "version": "4.7.3",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz",
+ "integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.7",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.7.tgz",
+ "integrity": "sha512-IH/iSeO9T6gz1KkFleGDWkG9N3dl4jXVYUtMhIqH10Md0ttMer8nUNWiP1DKuNrybD2xBrixLJdCC9J6ECoYkg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.4.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sonner": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.3.1.tgz",
+ "integrity": "sha512-+rOAO56b2eI3q5BtgljERSn2umRk63KFIvgb2ohbZ5X+Eb5u+a/7/0ZgswYqgBMg8dyl7n6OXd9KasA8QF9ToA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz",
+ "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.7.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.1",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
+ "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "tinyglobby": "^0.2.11",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tailwind-merge": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.0.tgz",
+ "integrity": "sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.5"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
+ "integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tailwindcss/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.49.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz",
+ "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.15.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.0.tgz",
+ "integrity": "sha512-x/M6q3w4Ybp91CNaS4S69UnliqR3BzRpOT6LWbksjth0S/+jhfaPJsWjt/TewpT8j9eLIojUf5jr29WextHroA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/use-callback-ref": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
+ "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-sidecar": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz",
+ "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
+ "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.109.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz",
+ "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.8",
+ "@types/json-schema": "^7.0.15",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.16.0",
+ "browserslist": "^4.28.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.24.4",
+ "es-module-lexer": "^2.1.0",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "graceful-fs": "^4.2.11",
+ "mime-db": "^1.54.0",
+ "minimizer-webpack-plugin": "^5.6.1",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^4.3.3",
+ "tapable": "^2.3.0",
+ "watchpack": "^2.5.2",
+ "webpack-sources": "^3.5.1"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz",
+ "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/webpack/node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xmlhttprequest-ssl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
+ "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..9466ec6
--- /dev/null
+++ b/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "gishen-email-templates",
+ "version": "0.1.0",
+ "description": "Email templates for Gishen Pharmacy (Ecom, Admin, B2B)",
+ "scripts": {
+ "email": "email dev",
+ "build": "email export",
+ "preview": "next dev",
+ "dev": "next dev"
+ },
+ "dependencies": {
+ "@react-email/components": "^0.0.25",
+ "@react-email/render": "^1.0.4",
+ "next": "^14.2.0",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
+ },
+ "devDependencies": {
+ "@types/node": "^22.0.0",
+ "@types/react": "^18.3.0",
+ "@types/react-dom": "^18.3.0",
+ "react-email": "^2.0.0",
+ "typescript": "^5.6.0"
+ }
+}
diff --git a/public/brand/gishen-logo.png b/public/brand/gishen-logo.png
new file mode 100644
index 0000000..0c99d0d
Binary files /dev/null and b/public/brand/gishen-logo.png differ
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..eaabef4
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "jsx": "preserve",
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "incremental": true,
+ "plugins": [{ "name": "next" }],
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}