"
- unsend/unsend
+ usesend/usesend
```
Replace the placeholders with your actual database and aws details.
-1. Access the Unsend application by visiting the URL you provided in the `NEXTAUTH_URL` environment variable in your web browser.
+1. Access the useSend application by visiting the URL you provided in the `NEXTAUTH_URL` environment variable in your web browser.
## Success
-You have now successfully set up Unsend using Docker. You can start sending emails efficiently. If you encounter any issues or have further questions, please refer to the official Unsend documentation or seek assistance from the community.
+You have now successfully set up useSend using Docker. You can start sending emails efficiently. If you encounter any issues or have further questions, please refer to the official useSend documentation or seek assistance from the community.
diff --git a/docker/prod/compose.yml b/docker/prod/compose.yml
index 3e92525..d660057 100644
--- a/docker/prod/compose.yml
+++ b/docker/prod/compose.yml
@@ -1,9 +1,9 @@
-name: unsend-prod
+name: usesend-prod
services:
postgres:
image: postgres:16
- container_name: unsend-db-prod
+ container_name: usesend-db-prod
restart: always
environment:
- POSTGRES_USER=${POSTGRES_USER:?err}
@@ -21,7 +21,7 @@ services:
redis:
image: redis:7
- container_name: unsend-redis-prod
+ container_name: usesend-redis-prod
restart: always
# ports:
# - "6379:6379"
@@ -31,7 +31,7 @@ services:
minio:
image: minio/minio
- container_name: unsend-storage-prod
+ container_name: usesend-storage-prod
ports:
- 9002:9002
- 9001:9001
@@ -43,9 +43,9 @@ services:
entrypoint: sh
command: -c 'mkdir -p /data/unsend && minio server /data --console-address ":9001" --address ":9002"'
- unsend:
- image: unsend/unsend:latest
- container_name: unsend
+ usesend:
+ image: usesend/usesend:latest
+ container_name: usesend
restart: always
ports:
- ${PORT:-3000}:${PORT:-3000}
@@ -62,8 +62,8 @@ services:
- REDIS_URL=${REDIS_URL:?err}
- NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false}
- API_RATE_LIMIT=${API_RATE_LIMIT:-1}
- - SMTP_HOST=${SMTP_HOST:-smtp.unsend.dev}
- - SMTP_USER=${SMTP_USER:-unsend}
+ - SMTP_HOST=${SMTP_HOST:-smtp.usesend.com}
+ - SMTP_USER=${SMTP_USER:-usesend}
depends_on:
postgres:
condition: service_healthy
diff --git a/package.json b/package.json
index 38d4ed7..d74a25e 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,13 @@
{
- "name": "unsend",
+ "name": "usesend",
"private": true,
"scripts": {
"build": "turbo build",
- "build:editor": "turbo build --filter=@unsend/email-editor",
- "build:web": "turbo build --filter=@unsend/email-editor --filter=web ",
- "build:marketing": "turbo build --filter=@unsend/email-editor --filter=marketing",
+ "build:editor": "turbo build --filter=@usesend/email-editor",
+ "build:web": "turbo build --filter=@usesend/email-editor --filter=web ",
+ "build:marketing": "turbo build --filter=@usesend/email-editor --filter=marketing",
"build:smtp": "turbo build --filter=smtp-server",
- "build:web:local": "pnpm load-env -- turbo build --filter=@unsend/email-editor --filter=web ",
+ "build:web:local": "pnpm load-env -- turbo build --filter=@usesend/email-editor --filter=web ",
"start:web:local": "pnpm load-env -- cd apps/web && pnpm start",
"dev": "pnpm load-env -- turbo dev",
"dev:docs": "cd apps/docs && mintlify dev",
@@ -28,8 +28,8 @@
"dx:down": "docker compose -f docker/dev/compose.yml down"
},
"devDependencies": {
- "@unsend/eslint-config": "workspace:*",
- "@unsend/typescript-config": "workspace:*",
+ "@usesend/eslint-config": "workspace:*",
+ "@usesend/typescript-config": "workspace:*",
"dotenv-cli": "^8.0.0",
"mintlify": "4.0.510",
"prettier": "^3.5.3"
@@ -41,4 +41,4 @@
"dependencies": {
"turbo": "^2.5.2"
}
-}
\ No newline at end of file
+}
diff --git a/packages/email-editor/.eslintrc.cjs b/packages/email-editor/.eslintrc.cjs
index 374c84c..92fa231 100644
--- a/packages/email-editor/.eslintrc.cjs
+++ b/packages/email-editor/.eslintrc.cjs
@@ -1,7 +1,7 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
- extends: ["@unsend/eslint-config/react-internal.js"],
+ extends: ["@usesend/eslint-config/react-internal.js"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.lint.json",
diff --git a/packages/email-editor/package.json b/packages/email-editor/package.json
index 0709d51..96cabe6 100644
--- a/packages/email-editor/package.json
+++ b/packages/email-editor/package.json
@@ -1,5 +1,5 @@
{
- "name": "@unsend/email-editor",
+ "name": "@usesend/email-editor",
"version": "0.0.1",
"description": "Email editor used by unsend",
"main": "./src/index.ts",
@@ -20,10 +20,10 @@
"devDependencies": {
"@types/eslint": "^9.6.1",
"@types/react": "^19.1.2",
- "@unsend/eslint-config": "workspace:*",
- "@unsend/tailwind-config": "workspace:*",
- "@unsend/typescript-config": "workspace:*",
- "@unsend/ui": "workspace:*",
+ "@usesend/eslint-config": "workspace:*",
+ "@usesend/tailwind-config": "workspace:*",
+ "@usesend/typescript-config": "workspace:*",
+ "@usesend/ui": "workspace:*",
"postcss": "^8.5.3",
"prettier": "^3.5.3",
"prettier-plugin-tailwindcss": "^0.6.11",
@@ -53,7 +53,7 @@
"@tiptap/react": "^2.11.7",
"@tiptap/starter-kit": "^2.11.7",
"@tiptap/suggestion": "^2.11.7",
- "eslint": "^9.25.1",
+ "eslint": "^8.57.1",
"jsx-email": "^2.7.1",
"lucide-react": "^0.503.0",
"react-colorful": "^5.6.1",
@@ -64,4 +64,4 @@
"engines": {
"node": ">=18.0.0"
}
-}
\ No newline at end of file
+}
diff --git a/packages/email-editor/src/components/panels/LinkEditorPanel.tsx b/packages/email-editor/src/components/panels/LinkEditorPanel.tsx
index 9a6423d..421d239 100644
--- a/packages/email-editor/src/components/panels/LinkEditorPanel.tsx
+++ b/packages/email-editor/src/components/panels/LinkEditorPanel.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import { CheckIcon } from "lucide-react";
import { useState, useCallback, useMemo } from "react";
diff --git a/packages/email-editor/src/components/panels/LinkPreviewPanel.tsx b/packages/email-editor/src/components/panels/LinkPreviewPanel.tsx
index dd7e5cf..2688636 100644
--- a/packages/email-editor/src/components/panels/LinkPreviewPanel.tsx
+++ b/packages/email-editor/src/components/panels/LinkPreviewPanel.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import { Edit2Icon, EditIcon, Trash2Icon } from "lucide-react";
export type LinkPreviewPanelProps = {
diff --git a/packages/email-editor/src/components/panels/TextEditorPanel.tsx b/packages/email-editor/src/components/panels/TextEditorPanel.tsx
index ba47eb5..7853c15 100644
--- a/packages/email-editor/src/components/panels/TextEditorPanel.tsx
+++ b/packages/email-editor/src/components/panels/TextEditorPanel.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import { CheckIcon } from "lucide-react";
import { useState, useCallback, useMemo } from "react";
diff --git a/packages/email-editor/src/components/ui/ColorPicker.tsx b/packages/email-editor/src/components/ui/ColorPicker.tsx
index af628f0..91c709b 100644
--- a/packages/email-editor/src/components/ui/ColorPicker.tsx
+++ b/packages/email-editor/src/components/ui/ColorPicker.tsx
@@ -1,11 +1,11 @@
"use client";
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@unsend/ui/src/popover";
+} from "@usesend/ui/src/popover";
import { ReactNode, useState } from "react";
import { HexAlphaColorPicker, HexColorInput } from "react-colorful";
diff --git a/packages/email-editor/src/editor.tsx b/packages/email-editor/src/editor.tsx
index eace0bb..9b3a156 100644
--- a/packages/email-editor/src/editor.tsx
+++ b/packages/email-editor/src/editor.tsx
@@ -10,7 +10,7 @@ import {
import StarterKit from "@tiptap/starter-kit";
import React, { useRef } from "react";
import { TextMenu } from "./menus/TextMenu";
-import { cn } from "@unsend/ui/lib/utils";
+import { cn } from "@usesend/ui/lib/utils";
import { extensions } from "./extensions";
import LinkMenu from "./menus/LinkMenu";
@@ -19,7 +19,7 @@ import { UploadFn } from "./extensions/ImageExtension";
const content = `Hello World!
-Unsend is the best open source resend alternative.
+useSend is the best open source resend alternative.
Use markdown (#
, ##
, ###
, \`\`
, * *
, ** **
) to write your email.
You can Bold text.
@@ -27,7 +27,7 @@ You can Italic text.
You can Underline text.
You can Delete text.
You can Code
text.
-you can change color of text. Add link to text
+you can change color of text. Add link to text
You can create ordered list
@@ -49,11 +49,11 @@ You can create unordered list
Add code by typing \`\`\` and enter
-const unsend = new Unsend("us_12345");
+const usesend = new UseSend("us_12345");
-// const unsend = new Unsend("us_12345", "https://my-unsend-instance.com");
+// const usesend = new UseSend("us_12345", "https://app.usesend.com");
-unsend.emails.send({
+usesend.emails.send({
to: "john@doe.com",
from: "john@doe.com",
subject: "Hello World!",
diff --git a/packages/email-editor/src/extensions/ImageExtension.tsx b/packages/email-editor/src/extensions/ImageExtension.tsx
index ecd9663..e369705 100644
--- a/packages/email-editor/src/extensions/ImageExtension.tsx
+++ b/packages/email-editor/src/extensions/ImageExtension.tsx
@@ -2,7 +2,7 @@ import { ReactNodeViewRenderer } from "@tiptap/react";
import TipTapImage from "@tiptap/extension-image";
import { ResizableImageTemplate } from "../nodes/image-resize";
import { PluginKey, Plugin } from "@tiptap/pm/state";
-import { toast } from "@unsend/ui/src/toaster";
+import { toast } from "@usesend/ui/src/toaster";
const uploadKey = new PluginKey("upload-image");
diff --git a/packages/email-editor/src/extensions/SlashCommand.tsx b/packages/email-editor/src/extensions/SlashCommand.tsx
index e0f2a28..07cceac 100644
--- a/packages/email-editor/src/extensions/SlashCommand.tsx
+++ b/packages/email-editor/src/extensions/SlashCommand.tsx
@@ -1,6 +1,6 @@
import { Editor, Extension, Range, ReactRenderer } from "@tiptap/react";
import Suggestion, { SuggestionOptions } from "@tiptap/suggestion";
-import { cn } from "@unsend/ui/lib/utils";
+import { cn } from "@usesend/ui/lib/utils";
import {
CodeIcon,
DivideIcon,
@@ -277,7 +277,7 @@ const DEFAULT_SLASH_COMMANDS = (uploadImage?: UploadFn): SlashCommandItem[] => [
.deleteRange(range)
.setHorizontalRule()
.insertContent(
- `You are receiving this email because you opted in via our site.
Unsubscribe from the list
Company name,
00 street name
City, State 000000
`
+ `You are receiving this email because you opted in via our site.
Unsubscribe from the list
Company name,
00 street name
City, State 000000
`
)
.run();
},
diff --git a/packages/email-editor/src/menus/TextMenu.tsx b/packages/email-editor/src/menus/TextMenu.tsx
index 77fd94d..f7df687 100644
--- a/packages/email-editor/src/menus/TextMenu.tsx
+++ b/packages/email-editor/src/menus/TextMenu.tsx
@@ -21,13 +21,13 @@ import {
UnderlineIcon,
} from "lucide-react";
import { TextMenuButton } from "./TextMenuButton";
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@unsend/ui/src/popover";
-import { Separator } from "@unsend/ui/src/separator";
+} from "@usesend/ui/src/popover";
+import { Separator } from "@usesend/ui/src/separator";
import { useMemo, useState } from "react";
import { LinkEditorPanel } from "../components/panels/LinkEditorPanel";
// import { allowedLogoAlignment } from "../nodes/logo";
diff --git a/packages/email-editor/src/menus/TextMenuButton.tsx b/packages/email-editor/src/menus/TextMenuButton.tsx
index 4f5ac38..f63c7b3 100644
--- a/packages/email-editor/src/menus/TextMenuButton.tsx
+++ b/packages/email-editor/src/menus/TextMenuButton.tsx
@@ -1,5 +1,5 @@
-import { Button } from "@unsend/ui/src/button";
-import { cn } from "@unsend/ui/lib/utils";
+import { Button } from "@usesend/ui/src/button";
+import { cn } from "@usesend/ui/lib/utils";
import { TextMenuItem } from "./TextMenu";
diff --git a/packages/email-editor/src/nodes/button.tsx b/packages/email-editor/src/nodes/button.tsx
index 987ec03..a3404ed 100644
--- a/packages/email-editor/src/nodes/button.tsx
+++ b/packages/email-editor/src/nodes/button.tsx
@@ -11,12 +11,12 @@ import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@unsend/ui/src/popover";
-import { cn } from "@unsend/ui/lib/utils";
-import { Input } from "@unsend/ui/src/input";
-import { Button } from "@unsend/ui/src/button";
+} from "@usesend/ui/src/popover";
+import { cn } from "@usesend/ui/lib/utils";
+import { Input } from "@usesend/ui/src/input";
+import { Button } from "@usesend/ui/src/button";
import { AllowedAlignments, ButtonOptions } from "../types";
-import { Separator } from "@unsend/ui/src/separator";
+import { Separator } from "@usesend/ui/src/separator";
import { BorderWidth } from "../components/ui/icons/BorderWidth";
import { ColorPickerPopup } from "../components/ui/ColorPicker";
import { LinkEditorPanel } from "../components/panels/LinkEditorPanel";
@@ -26,7 +26,7 @@ import {
TooltipProvider,
TooltipContent,
TooltipTrigger,
-} from "@unsend/ui/src/tooltip";
+} from "@usesend/ui/src/tooltip";
const alignments: Array = ["left", "center", "right"];
diff --git a/packages/email-editor/src/nodes/image-resize.tsx b/packages/email-editor/src/nodes/image-resize.tsx
index 6d11edd..9025a1e 100644
--- a/packages/email-editor/src/nodes/image-resize.tsx
+++ b/packages/email-editor/src/nodes/image-resize.tsx
@@ -6,7 +6,7 @@ import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@unsend/ui/src/popover";
+} from "@usesend/ui/src/popover";
import {
ExpandIcon,
ScanIcon,
@@ -14,20 +14,20 @@ import {
ImageIcon,
TypeIcon,
} from "lucide-react";
-import { Input } from "@unsend/ui/src/input";
+import { Input } from "@usesend/ui/src/input";
import { BorderWidth } from "../components/ui/icons/BorderWidth";
import { ColorPickerPopup } from "../components/ui/ColorPicker";
import { AllowedAlignments } from "../types";
-import { Button } from "@unsend/ui/src/button";
+import { Button } from "@usesend/ui/src/button";
import { AlignmentIcon } from "../components/ui/icons/AlignmentIcon";
import {
Tooltip,
TooltipProvider,
TooltipContent,
TooltipTrigger,
-} from "@unsend/ui/src/tooltip";
-import { Separator } from "@unsend/ui/src/separator";
-import Spinner from "@unsend/ui/src/spinner";
+} from "@usesend/ui/src/tooltip";
+import { Separator } from "@usesend/ui/src/separator";
+import Spinner from "@usesend/ui/src/spinner";
import { LinkEditorPanel } from "../components/panels/LinkEditorPanel";
import { TextEditorPanel } from "../components/panels/TextEditorPanel";
diff --git a/packages/email-editor/src/nodes/unsubscribe-footer.tsx b/packages/email-editor/src/nodes/unsubscribe-footer.tsx
index f650abd..9ced213 100644
--- a/packages/email-editor/src/nodes/unsubscribe-footer.tsx
+++ b/packages/email-editor/src/nodes/unsubscribe-footer.tsx
@@ -1,5 +1,5 @@
import { NodeViewProps, NodeViewWrapper, NodeViewContent } from "@tiptap/react";
-import { cn } from "@unsend/ui/lib/utils";
+import { cn } from "@usesend/ui/lib/utils";
export function UnsubscribeFooterComponent(props: NodeViewProps) {
return (
diff --git a/packages/email-editor/src/nodes/variable.tsx b/packages/email-editor/src/nodes/variable.tsx
index 1ae350a..0788da5 100644
--- a/packages/email-editor/src/nodes/variable.tsx
+++ b/packages/email-editor/src/nodes/variable.tsx
@@ -3,10 +3,10 @@ import {
Popover,
PopoverContent,
PopoverTrigger,
-} from "@unsend/ui/src/popover";
-import { cn } from "@unsend/ui/lib/utils";
-import { Input } from "@unsend/ui/src/input";
-import { Button } from "@unsend/ui/src/button";
+} from "@usesend/ui/src/popover";
+import { cn } from "@usesend/ui/lib/utils";
+import { Input } from "@usesend/ui/src/input";
+import { Button } from "@usesend/ui/src/button";
import { forwardRef, useEffect, useImperativeHandle, useState } from "react";
import { SuggestionOptions } from "@tiptap/suggestion";
import tippy, { GetReferenceClientRect } from "tippy.js";
diff --git a/packages/email-editor/tailwind.config.ts b/packages/email-editor/tailwind.config.ts
index d64b1ba..d0eafec 100644
--- a/packages/email-editor/tailwind.config.ts
+++ b/packages/email-editor/tailwind.config.ts
@@ -1,5 +1,5 @@
import { type Config } from "tailwindcss";
-import sharedConfig from "@unsend/tailwind-config/tailwind.config";
+import sharedConfig from "@usesend/tailwind-config/tailwind.config";
export default {
...sharedConfig,
diff --git a/packages/email-editor/tsconfig.json b/packages/email-editor/tsconfig.json
index 7b27cef..c168ce2 100644
--- a/packages/email-editor/tsconfig.json
+++ b/packages/email-editor/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/react-library.json",
+ "extends": "@usesend/typescript-config/react-library.json",
"compilerOptions": {
"outDir": "dist"
},
diff --git a/packages/email-editor/tsconfig.lint.json b/packages/email-editor/tsconfig.lint.json
index 6fc5c5d..08811d5 100644
--- a/packages/email-editor/tsconfig.lint.json
+++ b/packages/email-editor/tsconfig.lint.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/react-library.json",
+ "extends": "@usesend/typescript-config/react-library.json",
"compilerOptions": {
"outDir": "dist"
},
diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json
index a519aa0..5bb1a73 100644
--- a/packages/eslint-config/package.json
+++ b/packages/eslint-config/package.json
@@ -1,5 +1,5 @@
{
- "name": "@unsend/eslint-config",
+ "name": "@usesend/eslint-config",
"version": "0.0.0",
"private": true,
"files": [
diff --git a/packages/sdk/.eslintrc.js b/packages/sdk/.eslintrc.cjs
similarity index 80%
rename from packages/sdk/.eslintrc.js
rename to packages/sdk/.eslintrc.cjs
index 58df54b..d86bd2b 100644
--- a/packages/sdk/.eslintrc.js
+++ b/packages/sdk/.eslintrc.cjs
@@ -1,7 +1,7 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
- extends: ["@unsend/eslint-config/library.js"],
+ extends: ["@usesend/eslint-config/library.js"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.json",
diff --git a/packages/sdk/LICENSE b/packages/sdk/LICENSE
index e72d88d..8ba8109 100644
--- a/packages/sdk/LICENSE
+++ b/packages/sdk/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2024 Unsend
+Copyright (c) 2025 UseSend
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/packages/sdk/README.md b/packages/sdk/README.md
index 7c49b79..dcaf696 100644
--- a/packages/sdk/README.md
+++ b/packages/sdk/README.md
@@ -1,51 +1,51 @@
-# Unsend SDK
+# useSend SDK
## Prerequisites
-- [Unsend API key](https://app.unsend.dev/dev-settings/api-keys)
-- [Verified domain](https://app.unsend.dev/domains)
+- [useSend API key](https://app.usesend.com/dev-settings/api-keys)
+- [Verified domain](https://app.usesend.com/domains)
## Installation
### NPM
```bash
-npm install unsend
+npm install usesend
```
### Yarn
```bash
-yarn add unsend
+yarn add usesend
```
### PNPM
```bash
-pnpm add unsend
+pnpm add usesend
```
### Bun
```bash
-bun add unsend
+bun add usesend
```
## Usage
```javascript
-import { Unsend } from "unsend";
+import { UseSend } from "usesend";
-const unsend = new Unsend("us_12345");
+const usesend = new UseSend("us_12345");
// for self-hosted installations you can pass your base URL
-// const unsend = new Unsend("us_12345", "https://my-unsend-instance.com");
+// const usesend = new UseSend("us_12345", "https://app.usesend.com");
-unsend.emails.send({
+usesend.emails.send({
to: "hello@acme.com",
from: "hello@company.com",
- subject: "Unsend email",
- html: "Unsend is the best open source product to send emails
",
- text: "Unsend is the best open source product to send emails",
+ subject: "useSend email",
+ html: "useSend is the best open source product to send emails
",
+ text: "useSend is the best open source product to send emails",
});
```
diff --git a/packages/sdk/index.ts b/packages/sdk/index.ts
index 04a43b8..5892d5e 100644
--- a/packages/sdk/index.ts
+++ b/packages/sdk/index.ts
@@ -1 +1,2 @@
-export { Unsend } from "./src/unsend";
+export { UseSend } from "./src/usesend";
+export { UseSend as Unsend } from "./src/usesend"; // deprecated alias
diff --git a/packages/sdk/package.json b/packages/sdk/package.json
index e6ff157..aa60c3e 100644
--- a/packages/sdk/package.json
+++ b/packages/sdk/package.json
@@ -1,6 +1,6 @@
{
- "name": "unsend",
- "version": "1.5.1",
+ "name": "usesend-js",
+ "version": "1.5.2",
"description": "",
"main": "./dist/index.js",
"module": "./dist/index.mjs",
@@ -18,8 +18,8 @@
"devDependencies": {
"@types/node": "^22.15.2",
"@types/react": "^19.1.2",
- "@unsend/eslint-config": "workspace:*",
- "@unsend/typescript-config": "workspace:*",
+ "@usesend/eslint-config": "workspace:*",
+ "@usesend/typescript-config": "workspace:*",
"openapi-typescript": "^7.6.1",
"tsup": "^8.4.0",
"typescript": "^5.8.3"
diff --git a/packages/sdk/src/contact.ts b/packages/sdk/src/contact.ts
index 359bbce..de0b7c7 100644
--- a/packages/sdk/src/contact.ts
+++ b/packages/sdk/src/contact.ts
@@ -1,4 +1,4 @@
-import { Unsend } from "./unsend";
+import { UseSend } from "./usesend";
import { paths } from "../types/schema";
import { ErrorResponse } from "../types";
@@ -49,15 +49,15 @@ type DeleteContactResponse = {
};
export class Contacts {
- constructor(private readonly unsend: Unsend) {
- this.unsend = unsend;
+ constructor(private readonly usesend: UseSend) {
+ this.usesend = usesend;
}
async create(
contactBookId: string,
payload: CreateContactPayload
): Promise {
- const data = await this.unsend.post(
+ const data = await this.usesend.post(
`/contactBooks/${contactBookId}/contacts`,
payload
);
@@ -69,7 +69,7 @@ export class Contacts {
contactBookId: string,
contactId: string
): Promise {
- const data = await this.unsend.get(
+ const data = await this.usesend.get(
`/contactBooks/${contactBookId}/contacts/${contactId}`
);
return data;
@@ -80,7 +80,7 @@ export class Contacts {
contactId: string,
payload: UpdateContactPayload
): Promise {
- const data = await this.unsend.patch(
+ const data = await this.usesend.patch(
`/contactBooks/${contactBookId}/contacts/${contactId}`,
payload
);
@@ -93,7 +93,7 @@ export class Contacts {
contactId: string,
payload: UpsertContactPayload
): Promise {
- const data = await this.unsend.put(
+ const data = await this.usesend.put(
`/contactBooks/${contactBookId}/contacts/${contactId}`,
payload
);
@@ -105,7 +105,7 @@ export class Contacts {
contactBookId: string,
contactId: string
): Promise {
- const data = await this.unsend.delete<{ success: boolean }>(
+ const data = await this.usesend.delete<{ success: boolean }>(
`/contactBooks/${contactBookId}/contacts/${contactId}`
);
diff --git a/packages/sdk/src/domain.ts b/packages/sdk/src/domain.ts
index 4a0187f..ab82cb8 100644
--- a/packages/sdk/src/domain.ts
+++ b/packages/sdk/src/domain.ts
@@ -1,6 +1,6 @@
import { paths } from "../types/schema";
import { ErrorResponse } from "../types";
-import { Unsend } from "./unsend";
+import { UseSend } from "./usesend";
type CreateDomainPayload =
paths["/v1/domains"]["post"]["requestBody"]["content"]["application/json"];
@@ -30,17 +30,17 @@ type VerifyDomainResponseSuccess =
paths["/v1/domains/{id}/verify"]["put"]["responses"]["200"]["content"]["application/json"];
export class Domains {
- constructor(private readonly unsend: Unsend) {
- this.unsend = unsend;
+ constructor(private readonly usesend: UseSend) {
+ this.usesend = usesend;
}
async list(): Promise {
- const data = await this.unsend.get("/domains");
+ const data = await this.usesend.get("/domains");
return data;
}
async create(payload: CreateDomainPayload): Promise {
- const data = await this.unsend.post(
+ const data = await this.usesend.post(
"/domains",
payload
);
@@ -48,7 +48,7 @@ export class Domains {
}
async verify(id: number): Promise {
- const data = await this.unsend.put(
+ const data = await this.usesend.put(
`/domains/${id}/verify`,
{}
);
diff --git a/packages/sdk/src/email.ts b/packages/sdk/src/email.ts
index 3f7b301..35be9da 100644
--- a/packages/sdk/src/email.ts
+++ b/packages/sdk/src/email.ts
@@ -1,6 +1,6 @@
import { render } from "@react-email/render";
import * as React from "react";
-import { Unsend } from "./unsend";
+import { UseSend } from "./usesend";
import { paths } from "../types/schema";
import { ErrorResponse } from "../types";
@@ -68,8 +68,8 @@ type BatchEmailResponse = {
};
export class Emails {
- constructor(private readonly unsend: Unsend) {
- this.unsend = unsend;
+ constructor(private readonly usesend: UseSend) {
+ this.usesend = usesend;
}
async send(payload: SendEmailPayload) {
@@ -82,7 +82,7 @@ export class Emails {
delete payload.react;
}
- const data = await this.unsend.post(
+ const data = await this.usesend.post(
"/emails",
payload
);
@@ -98,7 +98,7 @@ export class Emails {
*/
async batch(payload: BatchEmailPayload): Promise {
// Note: React element rendering is not supported in batch mode.
- const response = await this.unsend.post(
+ const response = await this.usesend.post(
"/emails/batch",
payload
);
@@ -109,7 +109,7 @@ export class Emails {
}
async get(id: string): Promise {
- const data = await this.unsend.get(
+ const data = await this.usesend.get(
`/emails/${id}`
);
return data;
@@ -119,7 +119,7 @@ export class Emails {
id: string,
payload: UpdateEmailPayload
): Promise {
- const data = await this.unsend.patch(
+ const data = await this.usesend.patch(
`/emails/${id}`,
payload
);
@@ -127,7 +127,7 @@ export class Emails {
}
async cancel(id: string): Promise {
- const data = await this.unsend.post(
+ const data = await this.usesend.post(
`/emails/${id}/cancel`,
{}
);
diff --git a/packages/sdk/src/unsend.ts b/packages/sdk/src/usesend.ts
similarity index 85%
rename from packages/sdk/src/unsend.ts
rename to packages/sdk/src/usesend.ts
index 0005b0e..629ba4f 100644
--- a/packages/sdk/src/unsend.ts
+++ b/packages/sdk/src/usesend.ts
@@ -2,15 +2,15 @@ import { ErrorResponse } from "../types";
import { Contacts } from "./contact";
import { Emails } from "./email";
-const defaultBaseUrl = "https://app.unsend.dev";
+const defaultBaseUrl = "https://app.usesend.com";
// eslint-disable-next-line turbo/no-undeclared-env-vars
-const baseUrl = `${process?.env?.UNSEND_BASE_URL ?? defaultBaseUrl}/api/v1`;
+const baseUrl = `${process?.env?.USESEND_BASE_URL ?? process?.env?.UNSEND_BASE_URL ?? defaultBaseUrl}/api/v1`;
-function isUNSENDErrorResponse(error: { error: ErrorResponse }) {
+function isUseSendErrorResponse(error: { error: ErrorResponse }) {
return error.error.code !== undefined;
}
-export class Unsend {
+export class UseSend {
private readonly headers: Headers;
// readonly domains = new Domains(this);
@@ -24,12 +24,12 @@ export class Unsend {
) {
if (!key) {
if (typeof process !== "undefined" && process.env) {
- this.key = process.env.UNSEND_API_KEY;
+ this.key = process.env.USESEND_API_KEY ?? process.env.UNSEND_API_KEY;
}
if (!this.key) {
throw new Error(
- 'Missing API key. Pass it to the constructor `new Unsend("us_123")`'
+ 'Missing API key. Pass it to the constructor `new UseSend("us_123")`'
);
}
}
@@ -57,7 +57,7 @@ export class Unsend {
if (!response.ok) {
try {
const resp = await response.json();
- if (isUNSENDErrorResponse(resp)) {
+ if (isUseSendErrorResponse(resp)) {
return { data: null, error: resp };
}
diff --git a/packages/sdk/tsconfig.json b/packages/sdk/tsconfig.json
index 4422044..f23a71f 100644
--- a/packages/sdk/tsconfig.json
+++ b/packages/sdk/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/base.json",
+ "extends": "@usesend/typescript-config/base.json",
"compilerOptions": {
"outDir": "dist"
},
diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json
index 61abd56..60c16a0 100644
--- a/packages/tailwind-config/package.json
+++ b/packages/tailwind-config/package.json
@@ -1,5 +1,5 @@
{
- "name": "@unsend/tailwind-config",
+ "name": "@usesend/tailwind-config",
"version": "1.0.0",
"description": "",
"main": "index.js",
@@ -19,4 +19,4 @@
"postcss": "^8.5.3",
"tailwindcss": "^3.4.1"
}
-}
\ No newline at end of file
+}
diff --git a/packages/tailwind-config/tailwind.config.ts b/packages/tailwind-config/tailwind.config.ts
index da5fe1e..ad2ddc9 100644
--- a/packages/tailwind-config/tailwind.config.ts
+++ b/packages/tailwind-config/tailwind.config.ts
@@ -5,6 +5,30 @@ const config = {
content: ["./src/**/*.{ts,tsx}"],
prefix: "",
theme: {
+ fontFamily: {
+ sans: [
+ "Inter",
+ "ui-sans-serif",
+ "system-ui",
+ "sans-serif",
+ "Apple Color Emoji",
+ "Segoe UI Emoji",
+ "Segoe UI Symbol",
+ "Noto Color Emoji",
+ ],
+ mono: [
+ "JetBrains Mono",
+ "Menlo",
+ "ui-monospace",
+ "SFMono-Regular",
+ "Menlo",
+ "Monaco",
+ "Consolas",
+ "Liberation Mono",
+ "Courier New",
+ "monospace",
+ ],
+ },
container: {
center: true,
padding: "2rem",
@@ -103,10 +127,6 @@ const config = {
"accordion-down": "accordion-down 0.4s ease-out",
"accordion-up": "accordion-up 0.4s ease-out",
},
- // fontFamily: {
- // sans: ["var(--font-geist-sans)"],
- // mono: ["var(--font-geist-mono)"],
- // },
},
},
plugins: [require("tailwindcss-animate")],
diff --git a/packages/tailwind-config/tsconfig.json b/packages/tailwind-config/tsconfig.json
index 0207296..5d23c88 100644
--- a/packages/tailwind-config/tsconfig.json
+++ b/packages/tailwind-config/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/base.json",
+ "extends": "@usesend/typescript-config/base.json",
"compilerOptions": {
"allowJs": true,
"noEmit": true
diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json
index c53feb7..de73bf8 100644
--- a/packages/typescript-config/package.json
+++ b/packages/typescript-config/package.json
@@ -1,9 +1,9 @@
{
- "name": "@unsend/typescript-config",
+ "name": "@usesend/typescript-config",
"version": "0.0.0",
"private": true,
"license": "MIT",
"publishConfig": {
"access": "public"
}
-}
\ No newline at end of file
+}
diff --git a/packages/ui/.eslintrc.cjs b/packages/ui/.eslintrc.cjs
index 374c84c..92fa231 100644
--- a/packages/ui/.eslintrc.cjs
+++ b/packages/ui/.eslintrc.cjs
@@ -1,7 +1,7 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
- extends: ["@unsend/eslint-config/react-internal.js"],
+ extends: ["@usesend/eslint-config/react-internal.js"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.lint.json",
diff --git a/packages/ui/index.ts b/packages/ui/index.ts
index 6af65a9..fb272a4 100644
--- a/packages/ui/index.ts
+++ b/packages/ui/index.ts
@@ -1,4 +1,5 @@
import { cn } from "./lib/utils";
export { cn };
+export { H1, H2, BodyText } from "./src/typography";
export { ThemeProvider, useTheme } from "next-themes";
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 8139aeb..2249466 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,5 +1,5 @@
{
- "name": "@unsend/ui",
+ "name": "@usesend/ui",
"version": "0.0.0",
"private": true,
"main": "./index.ts",
@@ -17,10 +17,10 @@
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@types/react-syntax-highlighter": "^15.5.13",
- "@unsend/eslint-config": "workspace:*",
- "@unsend/tailwind-config": "workspace:*",
- "@unsend/typescript-config": "workspace:*",
- "eslint": "^9.25.1",
+ "@usesend/eslint-config": "workspace:*",
+ "@usesend/tailwind-config": "workspace:*",
+ "@usesend/typescript-config": "workspace:*",
+ "eslint": "^8.57.1",
"postcss": "^8.5.3",
"prettier": "^3.5.3",
"prettier-plugin-tailwindcss": "^0.6.11",
@@ -60,4 +60,4 @@
"tailwindcss-animate": "^1.0.7",
"zod": "^3.24.3"
}
-}
\ No newline at end of file
+}
diff --git a/packages/ui/src/sheet.tsx b/packages/ui/src/sheet.tsx
index 48f57ac..24476a1 100644
--- a/packages/ui/src/sheet.tsx
+++ b/packages/ui/src/sheet.tsx
@@ -39,20 +39,23 @@ const SheetOverlay = React.forwardRef<
SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
-const sheetVariants = cva("fixed z-50 gap-4 bg-background p-6 shadow-lg", {
- variants: {
- side: {
- top: "inset-x-0 top-0 border-b",
- bottom: "inset-x-0 bottom-0 border-t",
- left: "inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
- right:
- "inset-y-0 right-[32px] h-[95%] rounded-2xl my-auto w-3/4 border-l sm:max-w-sm",
+const sheetVariants = cva(
+ "fixed z-50 grid gap-4 rounded-2xl border-2 bg-popover p-6 shadow-lg",
+ {
+ variants: {
+ side: {
+ top: "inset-x-0 top-0",
+ bottom: "inset-x-0 bottom-0",
+ left: "inset-y-0 left-0 h-full w-3/4 sm:max-w-sm",
+ right:
+ "inset-y-0 right-[32px] h-[95%] my-auto w-3/4 sm:max-w-sm",
+ },
},
- },
- defaultVariants: {
- side: "right",
- },
-});
+ defaultVariants: {
+ side: "right",
+ },
+ }
+);
interface SheetContentProps
extends React.ComponentPropsWithoutRef,
diff --git a/packages/ui/src/typography.tsx b/packages/ui/src/typography.tsx
new file mode 100644
index 0000000..e0a96e7
--- /dev/null
+++ b/packages/ui/src/typography.tsx
@@ -0,0 +1,54 @@
+import * as React from "react";
+import { cn } from "../lib/utils";
+
+// Simple typography primitives: H1, H2, BodyText
+// H1/H2 use mono font, slightly bolder and larger per request
+
+export interface TypographyProps extends React.HTMLAttributes {
+ asChild?: boolean;
+}
+
+export const H1 = React.forwardRef(
+ ({ className, ...props }, ref) => (
+
+ )
+);
+H1.displayName = "H1";
+
+export const H2 = React.forwardRef(
+ ({ className, ...props }, ref) => (
+
+ )
+);
+H2.displayName = "H2";
+
+export const BodyText = React.forwardRef(
+ ({ className, ...props }, ref) => (
+
+ )
+);
+BodyText.displayName = "BodyText";
diff --git a/packages/ui/tailwind.config.ts b/packages/ui/tailwind.config.ts
index de550da..6741fdb 100644
--- a/packages/ui/tailwind.config.ts
+++ b/packages/ui/tailwind.config.ts
@@ -1,5 +1,5 @@
import { type Config } from "tailwindcss";
-import sharedConfig from "@unsend/tailwind-config/tailwind.config";
+import sharedConfig from "@usesend/tailwind-config/tailwind.config";
export default {
...sharedConfig,
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
index 7b27cef..c168ce2 100644
--- a/packages/ui/tsconfig.json
+++ b/packages/ui/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/react-library.json",
+ "extends": "@usesend/typescript-config/react-library.json",
"compilerOptions": {
"outDir": "dist"
},
diff --git a/packages/ui/tsconfig.lint.json b/packages/ui/tsconfig.lint.json
index 44b1bfa..f864139 100644
--- a/packages/ui/tsconfig.lint.json
+++ b/packages/ui/tsconfig.lint.json
@@ -1,5 +1,5 @@
{
- "extends": "@unsend/typescript-config/react-library.json",
+ "extends": "@usesend/typescript-config/react-library.json",
"compilerOptions": {
"outDir": "dist"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c51561c..6dea27f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,10 +12,10 @@ importers:
specifier: ^2.5.2
version: 2.5.2
devDependencies:
- '@unsend/eslint-config':
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:packages/eslint-config
- '@unsend/typescript-config':
+ '@usesend/typescript-config':
specifier: workspace:*
version: link:packages/typescript-config
dotenv-cli:
@@ -30,34 +30,28 @@ importers:
apps/marketing:
dependencies:
- '@heroicons/react':
- specifier: ^2.2.0
- version: 2.2.0(react@19.1.0)
- '@unsend/email-editor':
+ '@usesend/email-editor':
specifier: workspace:*
version: link:../../packages/email-editor
- '@unsend/ui':
+ '@usesend/ui':
specifier: workspace:*
version: link:../../packages/ui
- date-fns:
- specifier: ^4.1.0
- version: 4.1.0
- framer-motion:
- specifier: ^12.9.2
- version: 12.9.2(react-dom@19.1.0)(react@19.1.0)
- lucide-react:
- specifier: ^0.503.0
- version: 0.503.0(react@19.1.0)
next:
- specifier: 15.3.1
+ specifier: ^15.3.1
version: 15.3.1(@babel/core@7.26.10)(react-dom@19.1.0)(react@19.1.0)
react:
- specifier: ^19.1.0
+ specifier: 19.1.0
version: 19.1.0
react-dom:
- specifier: ^19.1.0
+ specifier: 19.1.0
version: 19.1.0(react@19.1.0)
devDependencies:
+ '@next/eslint-plugin-next':
+ specifier: ^15.3.1
+ version: 15.3.1
+ '@types/eslint':
+ specifier: ^9.6.1
+ version: 9.6.1
'@types/node':
specifier: ^22.15.2
version: 22.15.2
@@ -67,24 +61,36 @@ importers:
'@types/react-dom':
specifier: ^19.1.2
version: 19.1.2(@types/react@19.1.2)
- '@unsend/eslint-config':
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^8.31.0
+ version: 8.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)(typescript@5.8.3)
+ '@typescript-eslint/parser':
+ specifier: ^8.31.0
+ version: 8.31.0(eslint@8.57.1)(typescript@5.8.3)
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
- '@unsend/tailwind-config':
+ '@usesend/tailwind-config':
specifier: workspace:*
version: link:../../packages/tailwind-config
- autoprefixer:
- specifier: ^10.4.21
- version: 10.4.21(postcss@8.5.3)
+ '@usesend/typescript-config':
+ specifier: workspace:*
+ version: link:../../packages/typescript-config
eslint:
- specifier: ^9.25.1
- version: 9.25.1
+ specifier: ^8.57.1
+ version: 8.57.1
eslint-config-next:
- specifier: 15.3.1
- version: 15.3.1(eslint@9.25.1)(typescript@5.8.3)
+ specifier: ^15.3.1
+ version: 15.3.1(eslint@8.57.1)(typescript@5.8.3)
postcss:
specifier: ^8.5.3
version: 8.5.3
+ prettier:
+ specifier: ^3.5.3
+ version: 3.5.3
+ prettier-plugin-tailwindcss:
+ specifier: ^0.6.11
+ version: 0.6.11(prettier@3.5.3)
tailwindcss:
specifier: ^3.4.1
version: 3.4.15
@@ -179,10 +185,10 @@ importers:
'@trpc/server':
specifier: ^11.1.1
version: 11.1.1(typescript@5.8.3)
- '@unsend/email-editor':
+ '@usesend/email-editor':
specifier: workspace:*
version: link:../../packages/email-editor
- '@unsend/ui':
+ '@usesend/ui':
specifier: workspace:*
version: link:../../packages/ui
bullmq:
@@ -272,12 +278,12 @@ importers:
ua-parser-js:
specifier: ^2.0.3
version: 2.0.3
- unsend:
- specifier: workspace:*
- version: link:../../packages/sdk
use-debounce:
specifier: ^10.0.4
version: 10.0.4(react@19.1.0)
+ usesend:
+ specifier: workspace:*
+ version: link:../../packages/sdk
zod:
specifier: ^3.24.3
version: 3.24.3
@@ -314,25 +320,25 @@ importers:
version: 0.7.39
'@typescript-eslint/eslint-plugin':
specifier: ^8.31.0
- version: 8.31.0(@typescript-eslint/parser@8.31.0)(eslint@9.25.1)(typescript@5.8.3)
+ version: 8.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)(typescript@5.8.3)
'@typescript-eslint/parser':
specifier: ^8.31.0
- version: 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- '@unsend/eslint-config':
+ version: 8.31.0(eslint@8.57.1)(typescript@5.8.3)
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
- '@unsend/tailwind-config':
+ '@usesend/tailwind-config':
specifier: workspace:*
version: link:../../packages/tailwind-config
- '@unsend/typescript-config':
+ '@usesend/typescript-config':
specifier: workspace:*
version: link:../../packages/typescript-config
eslint:
- specifier: ^9.25.1
- version: 9.25.1
+ specifier: ^8.57.1
+ version: 8.57.1
eslint-config-next:
specifier: ^15.3.1
- version: 15.3.1(eslint@9.25.1)(typescript@5.8.3)
+ version: 15.3.1(eslint@8.57.1)(typescript@5.8.3)
postcss:
specifier: ^8.5.3
version: 8.5.3
@@ -403,8 +409,8 @@ importers:
specifier: ^2.11.7
version: 2.11.7(@tiptap/core@2.11.7)(@tiptap/pm@2.11.7)
eslint:
- specifier: ^9.25.1
- version: 9.25.1
+ specifier: ^8.57.1
+ version: 8.57.1
jsx-email:
specifier: ^2.7.1
version: 2.7.1(@jsx-email/plugin-inline@1.0.1)(@jsx-email/plugin-minify@1.0.2)(@jsx-email/plugin-pretty@1.0.0)(@types/node@22.15.2)(@types/react-dom@19.1.2)(@types/react@19.1.2)(react-dom@19.1.0)(react@19.1.0)(typescript@5.8.3)
@@ -430,16 +436,16 @@ importers:
'@types/react':
specifier: ^19.1.2
version: 19.1.2
- '@unsend/eslint-config':
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:../eslint-config
- '@unsend/tailwind-config':
+ '@usesend/tailwind-config':
specifier: workspace:*
version: link:../tailwind-config
- '@unsend/typescript-config':
+ '@usesend/typescript-config':
specifier: workspace:*
version: link:../typescript-config
- '@unsend/ui':
+ '@usesend/ui':
specifier: workspace:*
version: link:../ui
postcss:
@@ -506,10 +512,10 @@ importers:
'@types/react':
specifier: ^19.1.2
version: 19.1.2
- '@unsend/eslint-config':
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:../eslint-config
- '@unsend/typescript-config':
+ '@usesend/typescript-config':
specifier: workspace:*
version: link:../typescript-config
openapi-typescript:
@@ -651,18 +657,18 @@ importers:
'@types/react-syntax-highlighter':
specifier: ^15.5.13
version: 15.5.13
- '@unsend/eslint-config':
+ '@usesend/eslint-config':
specifier: workspace:*
version: link:../eslint-config
- '@unsend/tailwind-config':
+ '@usesend/tailwind-config':
specifier: workspace:*
version: link:../tailwind-config
- '@unsend/typescript-config':
+ '@usesend/typescript-config':
specifier: workspace:*
version: link:../typescript-config
eslint:
- specifier: ^9.25.1
- version: 9.25.1
+ specifier: ^8.57.1
+ version: 8.57.1
postcss:
specifier: ^8.5.3
version: 8.5.3
@@ -2755,41 +2761,11 @@ packages:
dependencies:
eslint: 8.57.1
eslint-visitor-keys: 3.4.3
- dev: true
-
- /@eslint-community/eslint-utils@4.6.1(eslint@9.25.1):
- resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- dependencies:
- eslint: 9.25.1
- eslint-visitor-keys: 3.4.3
/@eslint-community/regexpp@4.12.1:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- /@eslint/config-array@0.20.0:
- resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- '@eslint/object-schema': 2.1.6
- debug: 4.4.0(supports-color@9.4.0)
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- /@eslint/config-helpers@0.2.1:
- resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- /@eslint/core@0.13.0:
- resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- '@types/json-schema': 7.0.15
-
/@eslint/eslintrc@2.1.4:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2805,43 +2781,10 @@ packages:
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
- dev: true
-
- /@eslint/eslintrc@3.3.1:
- resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- ajv: 6.12.6
- debug: 4.4.0(supports-color@9.4.0)
- espree: 10.3.0
- globals: 14.0.0
- ignore: 5.3.2
- import-fresh: 3.3.1
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
/@eslint/js@8.57.1:
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@eslint/js@9.25.1:
- resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- /@eslint/object-schema@2.1.6:
- resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- /@eslint/plugin-kit@0.2.8:
- resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- '@eslint/core': 0.13.0
- levn: 0.4.1
/@floating-ui/core@1.6.9:
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
@@ -2871,14 +2814,6 @@ packages:
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
dev: false
- /@heroicons/react@2.2.0(react@19.1.0):
- resolution: {integrity: sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==}
- peerDependencies:
- react: '>= 16 || ^19.0.0-rc'
- dependencies:
- react: 19.1.0
- dev: false
-
/@hono/swagger-ui@0.5.1(hono@4.7.7):
resolution: {integrity: sha512-XpUCfszLJ9b1rtFdzqOSHfdg9pfBiC2J5piEjuSanYpDDTIwpMz0ciiv5N3WWUaQpz9fEgH8lttQqL41vIFuDA==}
peerDependencies:
@@ -2919,17 +2854,6 @@ packages:
react-hook-form: 7.56.1(react@19.1.0)
dev: false
- /@humanfs/core@0.19.1:
- resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
- engines: {node: '>=18.18.0'}
-
- /@humanfs/node@0.16.6:
- resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
- engines: {node: '>=18.18.0'}
- dependencies:
- '@humanfs/core': 0.19.1
- '@humanwhocodes/retry': 0.3.1
-
/@humanwhocodes/config-array@0.13.0:
resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
engines: {node: '>=10.10.0'}
@@ -2940,7 +2864,6 @@ packages:
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
- dev: true
/@humanwhocodes/module-importer@1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
@@ -2949,15 +2872,6 @@ packages:
/@humanwhocodes/object-schema@2.0.3:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
- dev: true
-
- /@humanwhocodes/retry@0.3.1:
- resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
- engines: {node: '>=18.18'}
-
- /@humanwhocodes/retry@0.4.2:
- resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
- engines: {node: '>=18.18'}
/@img/sharp-darwin-arm64@0.33.5:
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
@@ -7721,6 +7635,7 @@ packages:
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
@@ -7910,30 +7825,6 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0)(eslint@9.25.1)(typescript@5.8.3):
- resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
- dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- '@typescript-eslint/scope-manager': 8.31.0
- '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.31.0
- eslint: 9.25.1
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3):
resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==}
engines: {node: ^18.18.0 || >=20.0.0}
@@ -7973,24 +7864,6 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/parser@8.31.0(eslint@9.25.1)(typescript@5.8.3):
- resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
- dependencies:
- '@typescript-eslint/scope-manager': 8.31.0
- '@typescript-eslint/types': 8.31.0
- '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
- '@typescript-eslint/visitor-keys': 8.31.0
- debug: 4.4.0(supports-color@9.4.0)
- eslint: 9.25.1
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/scope-manager@5.62.0:
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -8052,23 +7925,6 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/type-utils@8.31.0(eslint@9.25.1)(typescript@5.8.3):
- resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
- dependencies:
- '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
- '@typescript-eslint/utils': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- debug: 4.4.0(supports-color@9.4.0)
- eslint: 9.25.1
- ts-api-utils: 2.1.0(typescript@5.8.3)
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/types@5.62.0:
resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -8199,23 +8055,6 @@ packages:
- supports-color
dev: true
- /@typescript-eslint/utils@8.31.0(eslint@9.25.1)(typescript@5.8.3):
- resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.9.0'
- dependencies:
- '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1)
- '@typescript-eslint/scope-manager': 8.31.0
- '@typescript-eslint/types': 8.31.0
- '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.8.3)
- eslint: 9.25.1
- typescript: 5.8.3
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/@typescript-eslint/visitor-keys@5.62.0:
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -8478,7 +8317,7 @@ packages:
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@7.18.0)(eslint@8.57.1)(typescript@5.8.3)
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
eslint-plugin-playwright: 1.8.3(eslint-plugin-jest@27.9.0)(eslint@8.57.1)
@@ -9901,7 +9740,6 @@ packages:
engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
- dev: true
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
@@ -10372,7 +10210,7 @@ packages:
source-map: 0.6.1
dev: true
- /eslint-config-next@15.3.1(eslint@9.25.1)(typescript@5.8.3):
+ /eslint-config-next@15.3.1(eslint@8.57.1)(typescript@5.8.3):
resolution: {integrity: sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
@@ -10383,15 +10221,15 @@ packages:
dependencies:
'@next/eslint-plugin-next': 15.3.1
'@rushstack/eslint-patch': 1.11.0
- '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0)(eslint@9.25.1)(typescript@5.8.3)
- '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- eslint: 9.25.1
+ '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)(typescript@5.8.3)
+ '@typescript-eslint/parser': 8.31.0(eslint@8.57.1)(typescript@5.8.3)
+ eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.25.1)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.25.1)
- eslint-plugin-jsx-a11y: 6.10.2(eslint@9.25.1)
- eslint-plugin-react: 7.37.5(eslint@9.25.1)
- eslint-plugin-react-hooks: 5.2.0(eslint@9.25.1)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
+ eslint-plugin-react: 7.37.5(eslint@8.57.1)
+ eslint-plugin-react-hooks: 5.2.0(eslint@8.57.1)
typescript: 5.8.3
transitivePeerDependencies:
- eslint-import-resolver-webpack
@@ -10434,7 +10272,7 @@ packages:
peerDependencies:
eslint-plugin-import: '>=1.4.0'
dependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
dev: true
/eslint-import-resolver-node@0.3.9:
@@ -10463,7 +10301,7 @@ packages:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0(supports-color@9.4.0)
eslint: 8.57.1
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
get-tsconfig: 4.10.0
is-bun-module: 2.0.0
stable-hash: 0.0.5
@@ -10473,63 +10311,7 @@ packages:
- supports-color
dev: true
- /eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.25.1):
- resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
- dependencies:
- '@nolyfill/is-core-module': 1.0.39
- debug: 4.4.0(supports-color@9.4.0)
- eslint: 9.25.1
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.25.1)
- get-tsconfig: 4.10.0
- is-bun-module: 2.0.0
- stable-hash: 0.0.5
- tinyglobby: 0.2.13
- unrs-resolver: 1.7.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.25.1):
- resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
- dependencies:
- '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- debug: 3.2.7
- eslint: 9.25.1
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.25.1)
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
+ /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
engines: {node: '>=4'}
peerDependencies:
@@ -10554,6 +10336,7 @@ packages:
debug: 3.2.7
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
dev: true
@@ -10569,44 +10352,7 @@ packages:
ignore: 5.3.2
dev: true
- /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@9.25.1):
- resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- dependencies:
- '@rtsao/scc': 1.1.0
- '@typescript-eslint/parser': 8.31.0(eslint@9.25.1)(typescript@5.8.3)
- array-includes: 3.1.8
- array.prototype.findlastindex: 1.2.6
- array.prototype.flat: 1.3.3
- array.prototype.flatmap: 1.3.3
- debug: 3.2.7
- doctrine: 2.1.0
- eslint: 9.25.1
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.25.1)
- hasown: 2.0.2
- is-core-module: 2.16.1
- is-glob: 4.0.3
- minimatch: 3.1.2
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.1
- semver: 6.3.1
- string.prototype.trimend: 1.0.9
- tsconfig-paths: 3.15.0
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
- dev: true
-
- /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0)(eslint@8.57.1):
+ /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
engines: {node: '>=4'}
peerDependencies:
@@ -10626,7 +10372,7 @@ packages:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.31.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -10688,30 +10434,6 @@ packages:
string.prototype.includes: 2.0.1
dev: true
- /eslint-plugin-jsx-a11y@6.10.2(eslint@9.25.1):
- resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- dependencies:
- aria-query: 5.3.2
- array-includes: 3.1.8
- array.prototype.flatmap: 1.3.3
- ast-types-flow: 0.0.8
- axe-core: 4.10.3
- axobject-query: 4.1.0
- damerau-levenshtein: 1.0.8
- emoji-regex: 9.2.2
- eslint: 9.25.1
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- language-tags: 1.0.9
- minimatch: 3.1.2
- object.fromentries: 2.0.8
- safe-regex-test: 1.1.0
- string.prototype.includes: 2.0.1
- dev: true
-
/eslint-plugin-only-warn@1.1.0:
resolution: {integrity: sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA==}
engines: {node: '>=6'}
@@ -10741,13 +10463,13 @@ packages:
eslint: 8.57.1
dev: true
- /eslint-plugin-react-hooks@5.2.0(eslint@9.25.1):
+ /eslint-plugin-react-hooks@5.2.0(eslint@8.57.1):
resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
dependencies:
- eslint: 9.25.1
+ eslint: 8.57.1
dev: true
/eslint-plugin-react@7.37.5(eslint@8.57.1):
@@ -10777,33 +10499,6 @@ packages:
string.prototype.repeat: 1.0.0
dev: true
- /eslint-plugin-react@7.37.5(eslint@9.25.1):
- resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
- dependencies:
- array-includes: 3.1.8
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.3
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.2.1
- eslint: 9.25.1
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.2
- object.entries: 1.1.9
- object.fromentries: 2.0.8
- object.values: 1.2.1
- prop-types: 15.8.1
- resolve: 2.0.0-next.5
- semver: 6.3.1
- string.prototype.matchall: 4.0.12
- string.prototype.repeat: 1.0.0
- dev: true
-
/eslint-plugin-testing-library@6.5.0(eslint@8.57.1)(typescript@5.8.3):
resolution: {integrity: sha512-Ls5TUfLm5/snocMAOlofSOJxNN0aKqwTlco7CrNtMjkTdQlkpSMaeTCDHCuXfzrI97xcx2rSCNeKeJjtpkNC1w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
@@ -10897,14 +10592,6 @@ packages:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
- dev: true
-
- /eslint-scope@8.3.0:
- resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
/eslint-visitor-keys@2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
@@ -10918,6 +10605,7 @@ packages:
/eslint-visitor-keys@4.2.0:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ dev: true
/eslint@8.57.1:
resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
@@ -10965,63 +10653,6 @@ packages:
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
- dev: true
-
- /eslint@9.25.1:
- resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
- dependencies:
- '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1)
- '@eslint-community/regexpp': 4.12.1
- '@eslint/config-array': 0.20.0
- '@eslint/config-helpers': 0.2.1
- '@eslint/core': 0.13.0
- '@eslint/eslintrc': 3.3.1
- '@eslint/js': 9.25.1
- '@eslint/plugin-kit': 0.2.8
- '@humanfs/node': 0.16.6
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.2
- '@types/estree': 1.0.7
- '@types/json-schema': 7.0.15
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.0(supports-color@9.4.0)
- escape-string-regexp: 4.0.0
- eslint-scope: 8.3.0
- eslint-visitor-keys: 4.2.0
- espree: 10.3.0
- esquery: 1.6.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.4
- transitivePeerDependencies:
- - supports-color
-
- /espree@10.3.0:
- resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- dependencies:
- acorn: 8.14.1
- acorn-jsx: 5.3.2(acorn@8.14.1)
- eslint-visitor-keys: 4.2.0
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
@@ -11030,7 +10661,6 @@ packages:
acorn: 8.14.1
acorn-jsx: 5.3.2(acorn@8.14.1)
eslint-visitor-keys: 3.4.3
- dev: true
/esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
@@ -11321,13 +10951,6 @@ packages:
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.2.0
- dev: true
-
- /file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
- dependencies:
- flat-cache: 4.0.1
/fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
@@ -11390,14 +11013,6 @@ packages:
flatted: 3.3.3
keyv: 4.5.4
rimraf: 3.0.2
- dev: true
-
- /flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
- dependencies:
- flatted: 3.3.3
- keyv: 4.5.4
/flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
@@ -11515,7 +11130,6 @@ packages:
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
- dev: true
/fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
@@ -11663,7 +11277,6 @@ packages:
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
- dev: true
/globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
@@ -11674,11 +11287,6 @@ packages:
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
- dev: true
-
- /globals@14.0.0:
- resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
- engines: {node: '>=18'}
/globalthis@1.0.4:
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
@@ -11756,7 +11364,6 @@ packages:
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- dev: true
/gray-matter@4.0.3:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
@@ -12252,11 +11859,9 @@ packages:
dependencies:
once: 1.4.0
wrappy: 1.0.2
- dev: true
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- dev: true
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
@@ -12566,7 +12171,6 @@ packages:
/is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
- dev: true
/is-plain-obj@4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
@@ -14658,7 +14262,6 @@ packages:
/path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
- dev: true
/path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
@@ -16176,7 +15779,6 @@ packages:
hasBin: true
dependencies:
glob: 7.2.3
- dev: true
/rollup@4.40.0:
resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==}
@@ -17080,7 +16682,6 @@ packages:
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- dev: true
/thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
@@ -17349,7 +16950,6 @@ packages:
/type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
- dev: true
/type-fest@0.21.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
diff --git a/tsconfig.json b/tsconfig.json
index ed7c3cf..de05526 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,3 +1,3 @@
{
- "extends": "@unsend/typescript-config/base.json"
+ "extends": "@usesend/typescript-config/base.json"
}
diff --git a/turbo.json b/turbo.json
index 8af75df..a0d6144 100644
--- a/turbo.json
+++ b/turbo.json
@@ -28,6 +28,7 @@
"SKIP_ENV_VALIDATION",
"PORT",
"UNSEND_API_KEY",
+ "USESEND_API_KEY",
"GOOGLE_CLIENT_ID",
"GOOGLE_CLIENT_SECRET",
"NEXT_PUBLIC_IS_CLOUD",