"
- 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 3e925250..d6600579 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 38d4ed75..d74a25e5 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 374c84c7..92fa231a 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 0709d513..96cabe60 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 9a6423de..421d239a 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 dd7e5cfc..26886367 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 ba47eb5a..7853c153 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 af628f0a..91c709b1 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 eace0bb9..9b3a1562 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 ecd9663a..e3697053 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 e0f2a28b..07cceac6 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 77fd94d1..f7df6871 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 4f5ac383..f63c7b3b 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 987ec03a..a3404eda 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 6d11edd8..9025a1e9 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 f650abd0..9ced2139 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 1ae350a2..0788da5b 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 d64b1baa..d0eafec8 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 7b27cefd..c168ce28 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 6fc5c5dd..08811d53 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 a519aa08..5bb1a739 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 58df54bc..d86bd2ba 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 e72d88de..8ba81097 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 7c49b79e..dcaf696a 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 04a43b8d..5892d5e4 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 e6ff157e..aa60c3ec 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 359bbcec..de0b7c72 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 4a0187f0..ab82cb82 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 3f7b3011..35be9da4 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 0005b0e9..629ba4fa 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 44220446..f23a71f4 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 61abd56d..60c16a0e 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 da5fe1e4..ad2ddc94 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 02072960..5d23c88c 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 c53feb79..de73bf8d 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 374c84c7..92fa231a 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 6af65a9c..fb272a45 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 8139aeb4..2249466d 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 48f57acd..24476a11 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 00000000..e0a96e73
--- /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 de550dab..6741fdbe 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 7b27cefd..c168ce28 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 44b1bfab..f8641399 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 c51561c5..6dea27fc 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 ed7c3cf7..de05526e 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 8af75df4..a0d6144b 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",