diff --git a/apps/dashboard/src/app/nebula-app/(app)/api/chat.ts b/apps/dashboard/src/app/nebula-app/(app)/api/chat.ts
index 78147d23038..b3b7fc6e177 100644
--- a/apps/dashboard/src/app/nebula-app/(app)/api/chat.ts
+++ b/apps/dashboard/src/app/nebula-app/(app)/api/chat.ts
@@ -30,6 +30,7 @@ export async function promptNebula(params: {
body.context_filter = {
chain_ids: params.contextFilters.chainIds || [],
contract_addresses: params.contextFilters.contractAddresses || [],
+ wallet_addresses: params.contextFilters.walletAddresses || [],
};
}
diff --git a/apps/portal/mdx-components.tsx b/apps/portal/mdx-components.tsx
index 6faf4c5f2f7..5a4a1bc2b31 100644
--- a/apps/portal/mdx-components.tsx
+++ b/apps/portal/mdx-components.tsx
@@ -1,4 +1,4 @@
-import { CodeBlock, InlineCode } from "@/components/Document/Code";
+import { CodeBlock } from "@/components/Document/Code";
import { DocLink } from "@/components/Document/DocLink";
import { Heading } from "@/components/Document/Heading";
import { OrderedList, UnorderedList } from "@/components/Document/List";
@@ -8,97 +8,98 @@ import { TBody, Table, Td, Th, Tr } from "@/components/Document/Table";
import GithubSlugger from "github-slugger";
import type { MDXComponents } from "mdx/types";
import type { BuiltinLanguage } from "shiki";
+import { InlineCode } from "./src/components/Document";
export function useMDXComponents(components: MDXComponents): MDXComponents {
- const slugger = new GithubSlugger();
+ const slugger = new GithubSlugger();
- function nameToLink(name: React.ReactNode) {
- if (typeof name !== "string") {
- return undefined;
- }
+ function nameToLink(name: React.ReactNode) {
+ if (typeof name !== "string") {
+ return undefined;
+ }
- return slugger.slug(name);
- }
+ return slugger.slug(name);
+ }
- function getHeading(
- depth: number,
- props: {
- children?: React.ReactNode;
- id?: string;
- },
- ) {
- return (
-
- {props.children}
-
- );
- }
+ function getHeading(
+ depth: number,
+ props: {
+ children?: React.ReactNode;
+ id?: string;
+ },
+ ) {
+ return (
+
+ {props.children}
+
+ );
+ }
- return {
- ...components,
- a(props) {
- const { href, children } = props;
- return {children};
- },
- h1(props) {
- return getHeading(1, props);
- },
- h2(props) {
- return getHeading(2, props);
- },
- h3(props) {
- return getHeading(3, props);
- },
- h4(props) {
- return getHeading(4, props);
- },
- h5(props) {
- return getHeading(5, props);
- },
- h6(props) {
- return getHeading(6, props);
- },
- code(props) {
- const code = props.children;
- const lang = props.className?.replace("language-", "");
+ return {
+ ...components,
+ a(props) {
+ const { href, children } = props;
+ return {children};
+ },
+ h1(props) {
+ return getHeading(1, props);
+ },
+ h2(props) {
+ return getHeading(2, props);
+ },
+ h3(props) {
+ return getHeading(3, props);
+ },
+ h4(props) {
+ return getHeading(4, props);
+ },
+ h5(props) {
+ return getHeading(5, props);
+ },
+ h6(props) {
+ return getHeading(6, props);
+ },
+ code(props) {
+ const code = props.children;
+ const lang = props.className?.replace("language-", "");
- if (!props.className) {
- return ;
- }
+ if (!props.className) {
+ return ;
+ }
- return (
-
- );
- },
- p(props) {
- return {props.children};
- },
- ul(props) {
- return {props.children};
- },
- ol(props) {
- return {props.children};
- },
- hr() {
- return ;
- },
- table(props) {
- return
;
- },
- th(props) {
- return {props.children} | ;
- },
- td(props) {
- return {props.children} | ;
- },
- tr(props) {
- return {props.children}
;
- },
- tbody(props) {
- return {props.children};
- },
- };
+ return (
+
+ );
+ },
+ p(props) {
+ return {props.children};
+ },
+ ul(props) {
+ return {props.children};
+ },
+ ol(props) {
+ return {props.children};
+ },
+ hr() {
+ return ;
+ },
+ table(props) {
+ return ;
+ },
+ th(props) {
+ return {props.children} | ;
+ },
+ td(props) {
+ return {props.children} | ;
+ },
+ tr(props) {
+ return {props.children}
;
+ },
+ tbody(props) {
+ return {props.children};
+ },
+ };
}
diff --git a/apps/portal/package.json b/apps/portal/package.json
index 288f9be0e7d..3b257ffc081 100644
--- a/apps/portal/package.json
+++ b/apps/portal/package.json
@@ -22,6 +22,7 @@
"@next/mdx": "15.1.0",
"@radix-ui/react-dialog": "1.1.4",
"@radix-ui/react-dropdown-menu": "^2.1.3",
+ "@radix-ui/react-select": "^2.1.3",
"@radix-ui/react-slot": "^1.1.1",
"@radix-ui/react-tabs": "^1.1.2",
"@tanstack/react-query": "5.62.16",
diff --git a/apps/portal/src/app/nebula/api-reference/chat/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/chat/EndpointMetadata.tsx
new file mode 100644
index 00000000000..d29b0825188
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/chat/EndpointMetadata.tsx
@@ -0,0 +1,72 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaContextFilterPathParameter,
+ nebulaExecuteConfigPathParameter,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+const response200Example = `\
+{
+ "message": "string",
+ "actions": [
+ {
+ "session_id": "string",
+ "request_id": "string",
+ "type": "init",
+ "source": "string",
+ "data": "string"
+ }
+ ],
+ "session_id": "string",
+ "request_id": "string"
+}`;
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/chat/page.mdx b/apps/portal/src/app/nebula/api-reference/chat/page.mdx
index 1989835c3b6..ba428db248b 100644
--- a/apps/portal/src/app/nebula/api-reference/chat/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/chat/page.mdx
@@ -1,79 +1,6 @@
-### Send Message
+import { EndpointMetadata } from './EndpointMetadata';
-```http
-POST /chat
-```
-
-**Request Body:**
-```json
-{
- "message": "Find the last 5 blocks",
- "session_id": "abc",
- "stream": true,
- "context_filter": {
- "chain_ids": [137],
- "contract_addresses": ["0x..."],
- "wallet_addresses": ["0x..."]
- },
- "execute_config": {
- "mode": "client",
- "signer_wallet_address": "0x..."
- }
-}
-```
-
-**Request Parameters:**
-
-- `message` (required)
- - Type: string
- - Description: The user's input message or command to be processed by Nebula
-
-- `session_id` (optional)
- - Type: string
- - Description: Identifier for maintaining conversation context
- - Default: A new session will be created if omitted
-
-- `stream` (optional)
- - Type: boolean
- - Description: Controls whether the response is streamed or returned as a single response
- - Default: false
-
-- `context_filter` (optional)
- - Type: object
- - Description: Controls which blockchain data sources are used for context
- - Properties:
- - `chain_ids`: Array of numbers representing blockchain network IDs
- - `contract_addresses`: Array of strings containing contract addresses to focus on
-
-- `execute_config` (optional)
- - Type: object
- - Description: Configuration for transaction execution
- - Properties:
- - `mode`: String indicating execution mode (currently only "client" is supported)
- - `signer_wallet_address`: String containing the wallet address that will sign transactions
-
- #### Chat Messages
-
-Chat messages are natural language responses from Nebula. They appear in the `message` field of the response and provide formatted information, explanations, or answers to your queries. Messages can include formatted text, blockchain data, and technical details.
-
-**Example Response with Chat Message:**
-```json
-{
- "message": "The last block on the Arbitrum mainnet is block number **284204124**. Here are the details:\n\n- **Block Hash:** 0xf42e3d624ae1e3fd6b89d4680f39943eb1cd3b8f0606918ef818d3021b7724f1\n- **Parent Hash:** 0x4c45cd0964281833b070b633980d8f530debdd21dfbdbf6eddf96cc93cbaac8e\n- **Timestamp:** 1734063299\n- **Gas Used:** 5,064,851\n- **Gas Limit:** 1,125,899,906,842,624\n- **Base Fee per Gas:** 10,000,000\n- **Transaction Count:** 7\n- **Withdrawals Count:** 0\n\nIf you need any more information about this block or related transactions, feel free to ask!",
- "actions": [],
- "session_id": "5d579903-5a63-434f-8667-788adfae9304",
- "request_id": "d46cfb80-de6a-48a6-9a97-746e1708d066"
-}
-```
-
-Response properties:
-- `message`: A formatted string containing the response, which may include:
- - Markdown formatting for better readability
- - Technical data (hashes, addresses, numbers)
- - Structured information about blockchain state
-- `actions`: Array of actions (empty when no transactions are needed)
-- `session_id`: Unique identifier for the current session
-- `request_id`: Unique identifier for the specific request
+
#### Chat Actions
@@ -117,11 +44,11 @@ When handling actions:
**Example Implementation with thirdweb SDK:**
```javascript
-import {
- createThirdwebClient,
- prepareTransaction,
+import {
+ createThirdwebClient,
+ prepareTransaction,
sendTransaction,
- privateKeyToAccount
+ privateKeyToAccount
} from "thirdweb";
// Example function to handle the API response
@@ -140,7 +67,7 @@ async function handleNebulaResponse(response) {
// Check if we have any actions
if (response.actions && response.actions.length > 0) {
const action = response.actions[0];
-
+
// Parse the transaction data from the action
const txData = JSON.parse(action.data);
@@ -159,7 +86,7 @@ async function handleNebulaResponse(response) {
transaction,
account
});
-
+
return result;
} catch (error) {
console.error("Error processing transaction:", error);
diff --git a/apps/portal/src/app/nebula/api-reference/clear-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/clear-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..c34fc6f7259
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/clear-session/EndpointMetadata.tsx
@@ -0,0 +1,31 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaFullSessionResponse,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/clear-session/page.mdx b/apps/portal/src/app/nebula/api-reference/clear-session/page.mdx
index f337139cde0..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/clear-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/clear-session/page.mdx
@@ -1,13 +1,3 @@
-#### Clear Session
+import { EndpointMetadata } from './EndpointMetadata';
-Clear a session's message history.
-
-```bash
-POST /session/{session_id}/clear
-```
-
-**Example curl:**
-```bash
-curl -X POST https://nebula-api.thirdweb.com/session/abc123/clear \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY"
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/common.ts b/apps/portal/src/app/nebula/api-reference/common.ts
new file mode 100644
index 00000000000..2ea3f409459
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/common.ts
@@ -0,0 +1,124 @@
+import type { APIParameter } from "../../../components/Document/APIEndpointMeta/ApiEndpoint";
+
+export const nebulaFullSessionResponse = `\
+{
+ "result": {
+ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
+ "account_id": "string",
+ "model_name": "string",
+ "is_public": true,
+ "execute_config": {
+ "mode": "client",
+ "signer_wallet_address": "string",
+ "engine_url": "string",
+ "engine_authorization_token": "string",
+ "engine_backend_wallet_address": "string",
+ "smart_account_address": "string",
+ "smart_account_factory_address": "string",
+ "smart_account_session_key": "string"
+ },
+ "title": "string",
+ "memory": [
+ {}
+ ],
+ "history": [
+ {}
+ ],
+ "action": [
+ {}
+ ],
+ "context_filter": {
+ "chain_ids": [
+ "1", "137"
+ ],
+ "contract_addresses": [
+ "0x..."
+ ],
+ "wallet_addresses": [
+ "0x..."
+ ]
+ },
+ "archive_at": "2025-01-08T17:22:45.016Z",
+ "deleted_at": "2025-01-08T17:22:45.016Z",
+ "created_at": "2025-01-08T17:22:45.016Z",
+ "updated_at": "2025-01-08T17:22:45.016Z"
+ }
+}`;
+
+export const nebulaAPI401Response = `\
+{
+ "error": {
+ "message": "401: Authentication failed"
+ }
+}`;
+
+export const nebulaAPI422Response = `\
+{
+ "detail": [
+ {
+ "loc": [
+ "string",
+ 0
+ ],
+ "msg": "string",
+ "type": "string"
+ }
+ ]
+}`;
+
+export const nebulaExecuteConfigType = `\
+{
+ mode: "engine";
+ engine_url: string;
+ engine_authorization_token: string;
+ engine_backend_wallet_address: string;
+} | {
+ mode: "session_key";
+ smart_account_address: string;
+ smart_account_factory_address: string;
+ smart_account_session_key: string;
+} | {
+ mode: "client";
+ signer_wallet_address: string;
+}`;
+
+export const nebulaContextFilterType = `\
+{
+ chainIds: string[] | null;
+ contractAddresses: string[] | null;
+ walletAddresses: string[] | null;
+}`;
+
+export const nebulaSecretKeyHeaderParameter: APIParameter = {
+ name: "x-secret-key",
+ required: true,
+ description: "Your thirdweb secret key for authentication.",
+ type: "string",
+ example: "YOUR_THIRDWEB_SECRET_KEY",
+};
+
+export const nebulaSessionIdPathParameter: APIParameter = {
+ name: "session_id",
+ required: true,
+ description: "The unique ID of the session",
+ type: "string",
+ example: "3fa85f64-5717-4562-b3fc-2c963f66afa6",
+};
+
+export const nebulaExecuteConfigPathParameter: APIParameter = {
+ name: "execute_config",
+ required: false,
+ description: "The configuration for transaction execution",
+ type: nebulaExecuteConfigType,
+ example: {
+ mode: "client",
+ signer_wallet_address: "0xc3F2b2a12Eba0f5989cD75B2964E31D56603a2cE",
+ },
+};
+
+export const nebulaContextFilterPathParameter: APIParameter = {
+ name: "context_filter",
+ required: false,
+ description: "Provide additional context information along with the message",
+ type: nebulaContextFilterType,
+};
diff --git a/apps/portal/src/app/nebula/api-reference/create-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/create-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..6d6309bc1b2
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/create-session/EndpointMetadata.tsx
@@ -0,0 +1,42 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaContextFilterPathParameter,
+ nebulaExecuteConfigPathParameter,
+ nebulaFullSessionResponse,
+ nebulaSecretKeyHeaderParameter,
+} from "../common";
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/create-session/page.mdx b/apps/portal/src/app/nebula/api-reference/create-session/page.mdx
index 1613fb7280a..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/create-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/create-session/page.mdx
@@ -1,32 +1,3 @@
-#### Create Session
+import { EndpointMetadata } from './EndpointMetadata';
-Create a new chat session.
-
-```bash
-POST /session
-```
-**Request Body:**
-```tsx
-{
- "title": "My DeFi Research", // Optional: Custom session title
- "is_public": true, // Optional: Make session publicly accessible
- "context_filter": { // Optional: Filter data sources
- "chain_ids": [1],
- "contract_addresses": ["0x..."]
- }
-}
-```
-
-**Example curl:**
-```bash
-curl -X POST https://nebula-api.thirdweb.com/session \
- -H "Content-Type: application/json" \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY" \
- -d '{
- "title": "My DeFi Research",
- "is_public": true,
- "context_filter": {
- "chain_ids": [1]
- }
- }'
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/delete-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/delete-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..95171c41b34
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/delete-session/EndpointMetadata.tsx
@@ -0,0 +1,39 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+const response200Example = `\
+{
+ "result": {
+ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
+ "deleted_at": "2025-01-08T19:27:37.296Z"
+ }
+}`;
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/delete-session/page.mdx b/apps/portal/src/app/nebula/api-reference/delete-session/page.mdx
index c7734e15150..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/delete-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/delete-session/page.mdx
@@ -1,15 +1,3 @@
-Delete Session
+import { EndpointMetadata } from './EndpointMetadata';
-
-Delete a session.
-
-```bash
-DELETE /session/{session_id}
-```
-
-Example curl:
-
-```bash
-curl -X DELETE https://nebula-api.thirdweb.com/session/abc123 \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY"
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/execute/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/execute/EndpointMetadata.tsx
new file mode 100644
index 00000000000..50e378d25ff
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/execute/EndpointMetadata.tsx
@@ -0,0 +1,78 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaContextFilterPathParameter,
+ nebulaExecuteConfigPathParameter,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+const response200Example = `\
+{
+ "message": "string",
+ "actions": [
+ {
+ "session_id": "string",
+ "request_id": "string",
+ "type": "init",
+ "source": "string",
+ "data": "string"
+ }
+ ],
+ "session_id": "string",
+ "request_id": "string"
+}`;
+
+export function EndpointMetadata() {
+ return (
+
+ Executes a specified action.
It is similar to /chat but it
+ only handles transaction requests. It is designed to be used without
+ history context.
+ >
+ ),
+ path: "/execute",
+ origin: "https://nebula-api.thirdweb.com",
+ method: "POST",
+ request: {
+ pathParameters: [],
+ headers: [nebulaSecretKeyHeaderParameter],
+ bodyParameters: [
+ {
+ name: "message",
+ required: true,
+ description: "The message to be processed.",
+ type: "string",
+ example: "Hello",
+ },
+ {
+ name: "stream",
+ required: false,
+ description: "Whether to stream the response or not",
+ type: "boolean",
+ example: false,
+ },
+ {
+ ...nebulaSessionIdPathParameter,
+ required: false,
+ description:
+ "The session ID to associate with the message. If not provided, a new session will be created.",
+ },
+ nebulaExecuteConfigPathParameter,
+ nebulaContextFilterPathParameter,
+ ],
+ },
+ responseExamples: {
+ 200: response200Example,
+ 401: nebulaAPI401Response,
+ 422: nebulaAPI422Response,
+ },
+ }}
+ />
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/execute/page.mdx b/apps/portal/src/app/nebula/api-reference/execute/page.mdx
index 449879b9cc1..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/execute/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/execute/page.mdx
@@ -1,77 +1,3 @@
-### Execute
+import { EndpointMetadata } from './EndpointMetadata';
-Execute specific blockchain commands or actions. This endpoint is designed for direct command execution without the conversational context of the chat endpoint.
-
-```bash
-POST /execute
-```
-
-**Request Body:**
-```bash
-{
- "message": "send 0.0001 ETH on sepolia to vitalik.eth",
- "user_id": "default-user",
- "stream": false,
- "execute_config": {
- "mode": "client",
- "signer_wallet_address": "0xc3F2b2a12Eba0f5989cD75B2964E31D56603a2cE"
- }
-}
-```
-
-**Request Parameters:**
-- `message` (required): The command to execute
-- `user_id` (optional): Identifier for the user making the request
-- `stream` (optional): Whether to stream the response
-- `execute_config` (optional): Configuration for transaction execution
- - `mode`: Execution mode (currently only "client" is supported)
- - `signer_wallet_address`: Address that will sign the transaction
-
-**Example Response:**
-```json
-{
- "message": "The transaction to transfer 0.0001 ETH to the address resolved from the ENS name `vitalik.eth` (which is `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`) is set up successfully. The simulation indicates that the transaction is likely to succeed.\n\nPlease proceed by signing and confirming the transaction.",
- "actions": [
- {
- "session_id": "437a0df7-d512-4ef4-95b5-6168ccbbe097",
- "request_id": "c2b51ed6-da79-49ac-b411-206a42059509",
- "type": "sign_transaction",
- "source": "executor",
- "data": "{\"chainId\": 11155111, \"to\": \"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045\", \"data\": \"0x\", \"value\": \"0x5af3107a4000\"}"
- }
- ],
- "session_id": "437a0df7-d512-4ef4-95b5-6168ccbbe097",
- "request_id": "c2b51ed6-da79-49ac-b411-206a42059509"
-}
-```
-
-**Example curl:**
-```bash
-curl -X POST https://nebula-api.thirdweb.com/execute \
- -H "Content-Type: application/json" \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY" \
- -d '{
- "message": "send 0.0001 ETH on sepolia to vitalik.eth",
- "user_id": "default-user",
- "stream": false,
- "execute_config": {
- "mode": "client",
- "signer_wallet_address": "0xc3F2b2a12Eba0f5989cD75B2964E31D56603a2cE"
- }
- }'
-```
-
-**Response Properties:**
-- `message`: A human-readable description of the action to be taken
-- `actions`: Array of actions to be executed
- - `session_id`: Unique identifier for the session
- - `request_id`: Unique identifier for this request
- - `type`: The type of action (e.g., "sign_transaction")
- - `source`: Origin of the action
- - `data`: Transaction data in hexadecimal format including:
- - `chainId`: Network identifier
- - `to`: Recipient's address
- - `data`: Transaction data
- - `value`: Amount to send in hex
-- `session_id`: Session identifier for this execution
-- `request_id`: Unique identifier for this request
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/get-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/get-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..fbcdf0a2079
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/get-session/EndpointMetadata.tsx
@@ -0,0 +1,32 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaFullSessionResponse,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/get-session/page.mdx b/apps/portal/src/app/nebula/api-reference/get-session/page.mdx
index 5503eff39e8..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/get-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/get-session/page.mdx
@@ -1,28 +1,3 @@
-#### Get Session
+import { EndpointMetadata } from './EndpointMetadata';
-Get details for a specific session.
-
-```bash
-GET /session/{session_id}
-```
-
-**Example curl:**
-```bash
-curl -X GET https://nebula-api.thirdweb.com/session/abc123 \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY"
-```
-
-**Response:**
-```tsx
-{
- "result": {
- "id": "string",
- "title": "string",
- "model_name": "string",
- "is_public": boolean,
- "created_at": "datetime",
- "updated_at": "datetime",
- "messages": []
- }
-}
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/list-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/list-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..857355c13d5
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/list-session/EndpointMetadata.tsx
@@ -0,0 +1,40 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaSecretKeyHeaderParameter,
+} from "../common";
+
+const response200Example = `\
+{
+ "result": [
+ {
+ "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
+ "title": "string",
+ "created_at": "2025-01-08T10:52:40.293Z",
+ "updated_at": "2025-01-08T10:52:40.293Z"
+ }
+ ]
+}`;
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/list-session/page.mdx b/apps/portal/src/app/nebula/api-reference/list-session/page.mdx
index f34c8a97648..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/list-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/list-session/page.mdx
@@ -1,29 +1,3 @@
-#### List Sessions
+import { EndpointMetadata } from './EndpointMetadata';
-Retrieve available sessions for the authenticated account.
-
-```bash
-GET /session/list
-```
-
-**Example curl:**
-```bash
-curl -X GET https://nebula-api.thirdweb.com/session/list \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY"
-```
-
-**Response:**
-```bash
-{
- "result": [
- {
- "id": "string",
- "title": "string",
- "model_name": "string",
- "is_public": boolean,
- "created_at": "datetime",
- "updated_at": "datetime"
- }
- ]
-}
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/api-reference/update-session/EndpointMetadata.tsx b/apps/portal/src/app/nebula/api-reference/update-session/EndpointMetadata.tsx
new file mode 100644
index 00000000000..2c9c6d72007
--- /dev/null
+++ b/apps/portal/src/app/nebula/api-reference/update-session/EndpointMetadata.tsx
@@ -0,0 +1,44 @@
+import { ApiEndpoint } from "@/components/Document/APIEndpointMeta/ApiEndpoint";
+import {
+ nebulaAPI401Response,
+ nebulaAPI422Response,
+ nebulaContextFilterPathParameter,
+ nebulaExecuteConfigPathParameter,
+ nebulaFullSessionResponse,
+ nebulaSecretKeyHeaderParameter,
+ nebulaSessionIdPathParameter,
+} from "../common";
+
+export function EndpointMetadata() {
+ return (
+
+ );
+}
diff --git a/apps/portal/src/app/nebula/api-reference/update-session/page.mdx b/apps/portal/src/app/nebula/api-reference/update-session/page.mdx
index 1d2baeeb278..c019dd83bd1 100644
--- a/apps/portal/src/app/nebula/api-reference/update-session/page.mdx
+++ b/apps/portal/src/app/nebula/api-reference/update-session/page.mdx
@@ -1,26 +1,3 @@
-#### Update Session
+import { EndpointMetadata } from './EndpointMetadata';
-Update an existing session.
-
-```bash
-PUT /session/{session_id}
-```
-
-**Example curl:**
-```bash
-curl -X PUT https://nebula-api.thirdweb.com/session/abc123 \
- -H "Content-Type: application/json" \
- -H "x-secret-key: YOUR_THIRDWEB_SECRET_KEY" \
- -d '{
- "title": "Updated Title",
- "is_public": true
- }'
-```
-
-**Request Body:**
-```tsx
-{
- "title": "string",
- "is_public": boolean
-}
-```
\ No newline at end of file
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/layout.tsx b/apps/portal/src/app/nebula/layout.tsx
index 2c1a868e190..32388f23025 100644
--- a/apps/portal/src/app/nebula/layout.tsx
+++ b/apps/portal/src/app/nebula/layout.tsx
@@ -4,7 +4,11 @@ import { sidebar } from "./sidebar";
export default async function Layout(props: { children: React.ReactNode }) {
return (
-
+
{props.children}
);
diff --git a/apps/portal/src/app/nebula/plugins/eliza/page.mdx b/apps/portal/src/app/nebula/plugins/eliza/page.mdx
index 8b6ab36470a..8fc624b6b1a 100644
--- a/apps/portal/src/app/nebula/plugins/eliza/page.mdx
+++ b/apps/portal/src/app/nebula/plugins/eliza/page.mdx
@@ -1,5 +1,11 @@
-### Coming Soon
+import { Callout } from '@doc'
-We are actively developing plugins to develop with other frameworks and languages. If you have a specific request, please [contact us](https://thirdweb.com/contact).
+# Eliza
+
+We are actively developing plugins to develop with other frameworks and languages.
+
+If you have a specific request, please [contact us](https://thirdweb.com/contact).
+
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/plugins/page.mdx b/apps/portal/src/app/nebula/plugins/page.mdx
index 31c221768a6..b24e771a43d 100644
--- a/apps/portal/src/app/nebula/plugins/page.mdx
+++ b/apps/portal/src/app/nebula/plugins/page.mdx
@@ -1,3 +1,12 @@
-### Coming Soon
+import { Callout } from '@doc'
-We are actively developing plugins to develop with other frameworks and languages. If you have a specific request, please [contact us](https://thirdweb.com/contact).
\ No newline at end of file
+# Plugins
+
+
+
+
+We are actively developing plugins to develop with other frameworks and languages.
+
+If you have a specific request, please [contact us](https://thirdweb.com/contact).
+
+
\ No newline at end of file
diff --git a/apps/portal/src/app/nebula/sidebar.tsx b/apps/portal/src/app/nebula/sidebar.tsx
index 5c12ff95597..ac9685c27bb 100644
--- a/apps/portal/src/app/nebula/sidebar.tsx
+++ b/apps/portal/src/app/nebula/sidebar.tsx
@@ -3,7 +3,6 @@ import {
BrickIcon,
CodeIcon,
EditIcon,
- GetIcon,
NebulaSideIcon,
PluginIcon,
QuestionIcon,
@@ -45,45 +44,60 @@ export const sidebar: SideBar = {
icon: ,
links: [
{
- name: "Send Message",
- href: "/nebula/api-reference/chat",
- icon: ,
+ name: "GET",
+ expanded: true,
+ links: [
+ {
+ name: "List Sessions",
+ href: "/nebula/api-reference/list-session",
+ },
+ {
+ name: "Get Session",
+ href: "/nebula/api-reference/get-session",
+ },
+ ],
},
{
- name: "Execute Transaction",
- href: "/nebula/api-reference/execute",
- icon: ,
+ name: "POST",
+ expanded: true,
+ links: [
+ {
+ name: "Send Message",
+ href: "/nebula/api-reference/chat",
+ },
+ {
+ name: "Execute Action",
+ href: "/nebula/api-reference/execute",
+ },
+ {
+ name: "Create Session",
+ href: "/nebula/api-reference/create-session",
+ },
+ {
+ name: "Clear Session",
+ href: "/nebula/api-reference/clear-session",
+ },
+ ],
},
{
- name: "List Sessions",
- href: "/nebula/api-reference/list-session",
- icon: ,
+ name: "PUT",
+ expanded: true,
+ links: [
+ {
+ name: "Update Session",
+ href: "/nebula/api-reference/update-session",
+ },
+ ],
},
{
- name: "Get Session",
- href: "/nebula/api-reference/get-session",
- icon: ,
- },
- {
- name: "Create Session",
- href: "/nebula/api-reference/create-session",
- icon: ,
- },
-
- {
- name: "Update Session",
- href: "/nebula/api-reference/update-session",
- icon: ,
- },
- {
- name: "Clear Session",
- href: "/nebula/api-reference/clear-session",
- icon: ,
- },
- {
- name: "Delete Session",
- href: "/nebula/api-reference/delete-session",
- icon: ,
+ name: "DELETE",
+ expanded: true,
+ links: [
+ {
+ name: "Delete Session",
+ href: "/nebula/api-reference/delete-session",
+ },
+ ],
},
],
},
diff --git a/apps/portal/src/app/nebula/use-cases/page.mdx b/apps/portal/src/app/nebula/use-cases/page.mdx
index 25afe3f0cc8..c1791a32943 100644
--- a/apps/portal/src/app/nebula/use-cases/page.mdx
+++ b/apps/portal/src/app/nebula/use-cases/page.mdx
@@ -1,4 +1,4 @@
-## What Can Nebula Do?
+# What Can Nebula Do?
**Smart Contract Intelligence**
- Analyze any smart contract's functionality and features
diff --git a/apps/portal/src/app/references/components/TDoc/Function.tsx b/apps/portal/src/app/references/components/TDoc/Function.tsx
index 93f74035be5..3189959bac5 100644
--- a/apps/portal/src/app/references/components/TDoc/Function.tsx
+++ b/apps/portal/src/app/references/components/TDoc/Function.tsx
@@ -1,4 +1,5 @@
import { DocLink, Paragraph } from "@/components/Document";
+import { InlineCode } from "@/components/Document/InlineCode";
import { sluggerContext } from "@/contexts/slugger";
import invariant from "tiny-invariant";
import {
@@ -11,7 +12,7 @@ import {
getFunctionSignature,
} from "typedoc-better-json";
import { Callout } from "../../../../components/Document/Callout";
-import { CodeBlock, InlineCode } from "../../../../components/Document/Code";
+import { CodeBlock } from "../../../../components/Document/Code";
import { Details } from "../../../../components/Document/Details";
import { Heading } from "../../../../components/Document/Heading";
import { DeprecatedCalloutTDoc } from "./Deprecated";
diff --git a/apps/portal/src/app/references/components/TDoc/Summary.tsx b/apps/portal/src/app/references/components/TDoc/Summary.tsx
index f2912fec59c..d5c4df952a3 100644
--- a/apps/portal/src/app/references/components/TDoc/Summary.tsx
+++ b/apps/portal/src/app/references/components/TDoc/Summary.tsx
@@ -1,9 +1,10 @@
import { sluggerContext } from "@/contexts/slugger";
import invariant from "tiny-invariant";
import type { FunctionSignature } from "typedoc-better-json";
-import { CodeBlock, InlineCode } from "../../../../components/Document/Code";
+import { CodeBlock } from "../../../../components/Document/Code";
import { DocLink } from "../../../../components/Document/DocLink";
import { Heading } from "../../../../components/Document/Heading";
+import { InlineCode } from "../../../../components/Document/InlineCode";
import {
OrderedList,
UnorderedList,
diff --git a/apps/portal/src/components/Document/APIEndpointMeta/ApiEndpoint.tsx b/apps/portal/src/components/Document/APIEndpointMeta/ApiEndpoint.tsx
new file mode 100644
index 00000000000..0567f3fc571
--- /dev/null
+++ b/apps/portal/src/components/Document/APIEndpointMeta/ApiEndpoint.tsx
@@ -0,0 +1,285 @@
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { cn } from "../../../lib/utils";
+import { CodeBlock } from "../Code";
+import { Details } from "../Details";
+import { Heading } from "../Heading";
+import { Paragraph } from "../Paragraph";
+import { RequestExample } from "./RequestExample";
+
+export type APIParameter =
+ | {
+ name: string;
+ required: false;
+ description: string;
+ type?: string;
+ example?: string | boolean | number | object;
+ }
+ | {
+ name: string;
+ required: true;
+ example: string;
+ description: string;
+ type?: string;
+ };
+
+export type ApiEndpointMeta = {
+ title: string;
+ description: React.ReactNode;
+ path: string;
+ origin: string;
+ method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
+ request: {
+ pathParameters: APIParameter[];
+ headers: APIParameter[];
+ bodyParameters: APIParameter[];
+ };
+ responseExamples: Record;
+};
+
+export function ApiEndpoint(props: {
+ metadata: ApiEndpointMeta;
+}) {
+ const { request, responseExamples } = props.metadata;
+
+ const requestExamples: Array<{
+ lang: "javascript" | "bash";
+ code: string;
+ label: string;
+ }> = [
+ {
+ code: createFetchCommand({
+ metadata: props.metadata,
+ }),
+ lang: "javascript",
+ label: "Fetch",
+ },
+ {
+ code: createCurlCommand({
+ metadata: props.metadata,
+ }),
+ lang: "bash",
+ label: "Curl",
+ },
+ ];
+
+ const responseKeys = Object.keys(responseExamples);
+
+ return (
+
+
+
+
+ {props.metadata.title}
+
+
{props.metadata.description}
+
+
+ {/* Headers */}
+ {request.headers.length > 0 && (
+
+ )}
+
+ {/* Path parameters */}
+ {request.pathParameters.length > 0 && (
+
+ )}
+
+ {/* Body */}
+ {request.bodyParameters.length > 0 && (
+
+ )}
+
+
+
+
+ Request
+
+
+ on server and pass it to client
+ codeExamples={requestExamples.map((example) => {
+ return {
+ label: example.label,
+ code: (
+
+ ),
+ };
+ })}
+ method={props.metadata.method}
+ endpointUrl={props.metadata.path}
+ />
+
+
+
+
+
+ Response
+
+
+
+
+ {responseKeys.map((status) => (
+
+
+
+ {status}
+
+
+ ))}
+
+
+ {responseKeys.map((status) => (
+
+
+
+ ))}
+
+
+
+
+ );
+}
+
+function ParameterSection(props: {
+ title: string;
+ parameters: APIParameter[];
+}) {
+ return (
+
+
+ {props.title}
+
+
+ {props.parameters
+ .sort((a, b) => {
+ if (a.required === b.required) {
+ return 0;
+ }
+ return a.required ? -1 : 1;
+ })
+ .map((param) => (
+
+ ))}
+
+
+ );
+}
+
+function ParameterItem({ param }: { param: APIParameter }) {
+ return (
+
+
+
{param.description}
+ {param.type && (
+
+
Type
+
+
+ )}
+
+
+ );
+}
+
+function createCurlCommand(params: {
+ metadata: ApiEndpointMeta;
+}) {
+ const url = `${params.metadata.origin}${params.metadata.path}`;
+ const bodyObj: Record = {};
+
+ const headers = params.metadata.request.headers
+ .filter((h) => h.example !== undefined)
+ .map((h) => {
+ return `-H "${h.name}:${
+ typeof h.example === "object" && h !== null
+ ? JSON.stringify(h.example)
+ : h.example
+ }"`;
+ })
+ .join(" \\\n");
+
+ for (const param of params.metadata.request.bodyParameters) {
+ if (param.example !== undefined) {
+ bodyObj[param.name] = param.example;
+ }
+ }
+
+ const body =
+ Object.keys(bodyObj).length === 0
+ ? ""
+ : `-d '${JSON.stringify(bodyObj, null, 2)}'`;
+
+ const requestData = [url, headers, body].filter((s) => s).join(" \\\n");
+
+ return `curl -X ${params.metadata.method} ${requestData}`;
+}
+
+function createFetchCommand(params: {
+ metadata: ApiEndpointMeta;
+}) {
+ const headersObj: Record = {};
+ const bodyObj: Record = {};
+ const { request } = params.metadata;
+ const url = `${params.metadata.origin}${params.metadata.path}`;
+
+ for (const param of request.headers) {
+ if (param.example !== undefined) {
+ headersObj[param.name] = param.example;
+ }
+ }
+
+ for (const param of request.bodyParameters) {
+ if (param.example !== undefined) {
+ bodyObj[param.name] = param.example;
+ }
+ }
+
+ const fetchOptions: Record = {
+ method: params.metadata.method,
+ };
+
+ if (Object.keys(headersObj).length > 0) {
+ fetchOptions.headers = headersObj;
+ }
+
+ if (Object.keys(bodyObj).length > 0) {
+ fetchOptions.body = bodyObj;
+ }
+
+ return `fetch('${url}', ${JSON.stringify(fetchOptions, null, 2)})`;
+}
diff --git a/apps/portal/src/components/Document/APIEndpointMeta/RequestExample.tsx b/apps/portal/src/components/Document/APIEndpointMeta/RequestExample.tsx
new file mode 100644
index 00000000000..dd46a6e8b75
--- /dev/null
+++ b/apps/portal/src/components/Document/APIEndpointMeta/RequestExample.tsx
@@ -0,0 +1,55 @@
+"use client";
+
+import { Badge } from "@/components/ui/badge";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/ui/select";
+import { useState } from "react";
+
+export function RequestExample(props: {
+ codeExamples: Array<{
+ label: string;
+ code: React.ReactElement;
+ }>;
+ method: string;
+ endpointUrl: string;
+}) {
+ const [selectedExample, setSelectedExample] = useState(props.codeExamples[0]);
+
+ return (
+
+
+
+ {props.method}
+
+ {props.endpointUrl}
+
+
+
+
+
{selectedExample?.code}
+
+ );
+}
diff --git a/apps/portal/src/components/Document/Code.tsx b/apps/portal/src/components/Document/Code.tsx
index 467d2091e6d..39055b87ee8 100644
--- a/apps/portal/src/components/Document/Code.tsx
+++ b/apps/portal/src/components/Document/Code.tsx
@@ -31,6 +31,9 @@ export async function CodeBlock(props: {
code: string;
lang: BuiltinLanguage | SpecialLanguage;
tokenLinks?: Map;
+ className?: string;
+ containerClassName?: string;
+ scrollContainerClassName?: string;
}) {
let code = props.code;
let lang = props.lang;
@@ -40,6 +43,14 @@ export async function CodeBlock(props: {
lang = "bash";
}
+ if (lang === "json") {
+ try {
+ code = JSON.stringify(JSON.parse(code), null, 2);
+ } catch {
+ // ignore
+ }
+ }
+
// format code
if (jsOrTsLangs.has(lang)) {
try {
@@ -54,12 +65,18 @@ export async function CodeBlock(props: {
}
return (
-
+
-
+
@@ -71,23 +88,6 @@ export async function CodeBlock(props: {
);
}
-export function InlineCode(props: { code: string; className?: string }) {
- return (
-
- {props.code}
-
- );
-}
-
async function RenderCode(props: {
code: string;
lang: BuiltinLanguage | SpecialLanguage;
diff --git a/apps/portal/src/components/Document/InlineCode.tsx b/apps/portal/src/components/Document/InlineCode.tsx
new file mode 100644
index 00000000000..d9dd8dd7b60
--- /dev/null
+++ b/apps/portal/src/components/Document/InlineCode.tsx
@@ -0,0 +1,18 @@
+import { cn } from "../../lib/utils";
+
+export function InlineCode(props: { code: string; className?: string }) {
+ return (
+
+ {props.code}
+
+ );
+}
diff --git a/apps/portal/src/components/Document/List.module.css b/apps/portal/src/components/Document/List.module.css
index 42b5f268eca..a649b691b0d 100644
--- a/apps/portal/src/components/Document/List.module.css
+++ b/apps/portal/src/components/Document/List.module.css
@@ -1,14 +1,14 @@
.unorderedList,
.orderedList {
- @apply pl-5 leading-relaxed list-none mb-6 text-f-200;
+ @apply pl-5 leading-7 list-none mb-6 text-f-200;
}
.unorderedList > li {
- @apply pb-0.5 pl-2 list-disc;
+ @apply my-1.5 pl-2 list-disc;
}
.orderedList > li {
- @apply pb-0.5 pl-2 list-decimal;
+ @apply my-1.5 pl-2 list-decimal;
}
.unorderedList > li::marker {
diff --git a/apps/portal/src/components/Document/index.ts b/apps/portal/src/components/Document/index.ts
index efacfd832d0..29e1d6eaead 100644
--- a/apps/portal/src/components/Document/index.ts
+++ b/apps/portal/src/components/Document/index.ts
@@ -1,7 +1,7 @@
export { CustomAccordion } from "../others/CustomAccordion";
export { Breadcrumb } from "./Breadcrumb";
export { Callout } from "./Callout";
-export { CodeBlock, InlineCode } from "./Code";
+export { CodeBlock } from "./Code";
export { Details } from "./Details";
export { DocLink } from "./DocLink";
export { Heading } from "./Heading";
@@ -27,3 +27,5 @@ export { ConnectCard } from "./Cards/ConnectCard";
export { AAChainList } from "./AAChainList";
export { AuthList } from "./AuthList";
export { FeatureCard } from "./FeatureCard";
+export { ApiEndpoint } from "./APIEndpointMeta/ApiEndpoint";
+export { InlineCode } from "./InlineCode";
diff --git a/apps/portal/src/components/Layouts/DocLayout.tsx b/apps/portal/src/components/Layouts/DocLayout.tsx
index 56a24b86d05..3df54299acc 100644
--- a/apps/portal/src/components/Layouts/DocLayout.tsx
+++ b/apps/portal/src/components/Layouts/DocLayout.tsx
@@ -24,7 +24,7 @@ export type DocLayoutProps = {
export function DocLayout(props: DocLayoutProps) {
return (
,
+ VariantProps
{}
+
+function Badge({ className, variant, ...props }: BadgeProps) {
+ return (
+
+ );
+}
+
+export { Badge, badgeVariants };
diff --git a/apps/portal/src/components/ui/select.tsx b/apps/portal/src/components/ui/select.tsx
new file mode 100644
index 00000000000..647b814c2ee
--- /dev/null
+++ b/apps/portal/src/components/ui/select.tsx
@@ -0,0 +1,162 @@
+"use client";
+
+import * as SelectPrimitive from "@radix-ui/react-select";
+import { Check, ChevronDown, ChevronUp } from "lucide-react";
+import * as React from "react";
+
+import { cn } from "@/lib/utils";
+
+const Select = SelectPrimitive.Root;
+
+const SelectGroup = SelectPrimitive.Group;
+
+const SelectValue = SelectPrimitive.Value;
+
+const SelectTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ chevronClassName?: string;
+ }
+>(({ className, children, chevronClassName, ...props }, ref) => (
+ span]:line-clamp-1",
+ className,
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+
+));
+SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
+
+const SelectScrollUpButton = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
+
+const SelectScrollDownButton = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+SelectScrollDownButton.displayName =
+ SelectPrimitive.ScrollDownButton.displayName;
+
+const SelectContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, position = "popper", ...props }, ref) => (
+
+
+ {/* */}
+
+ {children}
+
+ {/* */}
+
+
+));
+SelectContent.displayName = SelectPrimitive.Content.displayName;
+
+const SelectLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+SelectLabel.displayName = SelectPrimitive.Label.displayName;
+
+const SelectItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+
+ {children}
+
+));
+SelectItem.displayName = SelectPrimitive.Item.displayName;
+
+const SelectSeparator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
+
+export {
+ Select,
+ SelectGroup,
+ SelectValue,
+ SelectTrigger,
+ SelectContent,
+ SelectLabel,
+ SelectItem,
+ SelectSeparator,
+ SelectScrollUpButton,
+ SelectScrollDownButton,
+};
diff --git a/apps/portal/tailwind.config.ts b/apps/portal/tailwind.config.ts
index 65f66211536..eb6d51f9234 100644
--- a/apps/portal/tailwind.config.ts
+++ b/apps/portal/tailwind.config.ts
@@ -1,107 +1,108 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
- darkMode: ["class"],
- content: [
- "./components/**/*.{ts,tsx}",
- "./app/**/*.{ts,tsx,mdx}",
- "./src/**/*.{ts,tsx,mdx}",
- ],
+ darkMode: ["class"],
+ content: [
+ "./components/**/*.{ts,tsx}",
+ "./app/**/*.{ts,tsx,mdx}",
+ "./src/**/*.{ts,tsx,mdx}",
+ ],
+ theme: {
+ container: {
+ center: true,
+ padding: "1rem",
+ screens: {
+ "2xl": "1400px",
+ },
+ },
- theme: {
- container: {
- center: true,
- padding: "1rem",
- screens: {
- "2xl": "1400px",
- },
- },
- colors: {
- current: "currentColor",
- border: "var(--border)",
- input: "var(--b-700)",
- ring: "var(--b-700)",
- transparent: "transparent",
- overlay: "var(--overlay)",
- // backgrounds
- b: {
- 900: "var(--b-900)",
- 800: "var(--b-800)",
- 700: "var(--b-700)",
- 600: "var(--b-600)",
- },
- // foregrounds
- f: {
- 100: "var(--f-100)",
- 200: "var(--f-200)",
- 300: "var(--f-300)",
- },
- "code-bg": "var(--code-bg)",
- accent: {
- 500: "var(--accent-500)",
- 700: "var(--accent-700)",
- 800: "var(--accent-800)",
- 900: "var(--accent-900)",
- },
- danger: {
- 500: "var(--danger-500)",
- 800: "var(--danger-800)",
- 900: "var(--danger-900)",
- },
- warning: {
- 500: "var(--warning-500)",
- 900: "var(--warning-900)",
- 800: "var(--warning-800)",
- },
- },
- zIndex: {
- modal: 1400,
- modalOverlay: 1300,
- dropdownMenu: 1200,
- menu: 1100,
- //
- stickyTop: 1000,
- floatingButton: 1000,
- stickyMobileSidebar: 500,
- //
- copyCodeButton: 20,
- //
- codeToken: 5,
- codeTokenHighlight: 1,
- // base
- base: 0,
- },
- borderRadius: {
- lg: "var(--radius)",
- md: "calc(var(--radius) - 2px)",
- sm: "calc(var(--radius) - 4px)",
- },
- fontFamily: {
- sans: ["var(--font-sans)", "sans-serif"],
- mono: ["var(--font-mono)", "monospace"],
- },
- extend: {
- spacing: {
- "sticky-top-height": "var(--sticky-top-height)",
- "sidebar-height": "calc(100vh - var(--sticky-top-height))",
- "offset-top": "calc(var(--sticky-top-height) + 18px)",
- "offset-top-mobile": "calc(var(--sticky-top-height) + 100px)",
- },
- keyframes: {
- "accordion-down": {
- from: { height: 0, opacity: 0 },
- to: { height: "var(--radix-accordion-content-height)", opacity: 1 },
- },
- "accordion-up": {
- from: { height: "var(--radix-accordion-content-height)", opacity: 1 },
- to: { height: 0, opacity: 0 },
- },
- },
- animation: {
- "accordion-down": "accordion-down 0.2s ease-out",
- "accordion-up": "accordion-up 0.2s ease-out",
- "animate-in-slow": "animate-in 0.4s ease",
- },
- },
- },
- plugins: [require("tailwindcss-animate")],
+ zIndex: {
+ modal: 1400,
+ modalOverlay: 1300,
+ dropdownMenu: 1200,
+ menu: 1100,
+ //
+ stickyTop: 1000,
+ floatingButton: 1000,
+ stickyMobileSidebar: 500,
+ //
+ copyCodeButton: 20,
+ //
+ codeToken: 5,
+ codeTokenHighlight: 1,
+ // base
+ base: 0,
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ full: "9999px",
+ },
+ fontFamily: {
+ sans: ["var(--font-sans)", "sans-serif"],
+ mono: ["var(--font-mono)", "monospace"],
+ },
+ extend: {
+ colors: {
+ current: "currentColor",
+ border: "var(--border)",
+ input: "var(--b-700)",
+ ring: "var(--b-700)",
+ transparent: "transparent",
+ overlay: "var(--overlay)",
+ // backgrounds
+ b: {
+ 900: "var(--b-900)",
+ 800: "var(--b-800)",
+ 700: "var(--b-700)",
+ 600: "var(--b-600)",
+ },
+ // foregrounds
+ f: {
+ 100: "var(--f-100)",
+ 200: "var(--f-200)",
+ 300: "var(--f-300)",
+ },
+ "code-bg": "var(--code-bg)",
+ accent: {
+ 500: "var(--accent-500)",
+ 700: "var(--accent-700)",
+ 800: "var(--accent-800)",
+ 900: "var(--accent-900)",
+ },
+ danger: {
+ 500: "var(--danger-500)",
+ 800: "var(--danger-800)",
+ 900: "var(--danger-900)",
+ },
+ warning: {
+ 500: "var(--warning-500)",
+ 900: "var(--warning-900)",
+ 800: "var(--warning-800)",
+ },
+ },
+ spacing: {
+ "sticky-top-height": "var(--sticky-top-height)",
+ "sidebar-height": "calc(100vh - var(--sticky-top-height))",
+ "offset-top": "calc(var(--sticky-top-height) + 18px)",
+ "offset-top-mobile": "calc(var(--sticky-top-height) + 100px)",
+ },
+ keyframes: {
+ "accordion-down": {
+ from: { height: 0, opacity: 0 },
+ to: { height: "var(--radix-accordion-content-height)", opacity: 1 },
+ },
+ "accordion-up": {
+ from: { height: "var(--radix-accordion-content-height)", opacity: 1 },
+ to: { height: 0, opacity: 0 },
+ },
+ },
+ animation: {
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ "animate-in-slow": "animate-in 0.4s ease",
+ },
+ },
+ },
+ plugins: [require("tailwindcss-animate")],
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 391ae438885..e639b09d891 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -135,7 +135,7 @@ importers:
version: 1.1.5(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@sentry/nextjs':
specifier: 8.45.1
- version: 8.45.1(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.24.2))
+ version: 8.45.1(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
'@shazow/whatsabi':
specifier: ^0.18.0
version: 0.18.0(@noble/hashes@1.7.0)(typescript@5.7.2)(zod@3.24.1)
@@ -334,7 +334,7 @@ importers:
version: 8.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))
'@storybook/nextjs':
specifier: 8.4.7
- version: 8.4.7(esbuild@0.24.2)(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(type-fest@4.31.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(esbuild@0.24.2))
+ version: 8.4.7(@swc/core@1.10.1)(esbuild@0.24.2)(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(type-fest@4.31.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
'@storybook/react':
specifier: 8.4.7
version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
@@ -382,7 +382,7 @@ importers:
version: 10.4.20(postcss@8.4.49)
checkly:
specifier: ^4.15.0
- version: 4.15.0(@types/node@22.10.2)(typescript@5.7.2)
+ version: 4.15.0(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
eslint:
specifier: 8.57.0
version: 8.57.0
@@ -561,6 +561,9 @@ importers:
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.3
version: 2.1.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-select':
+ specifier: ^2.1.3
+ version: 2.1.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@radix-ui/react-slot':
specifier: ^1.1.1
version: 1.1.1(@types/react@19.0.2)(react@19.0.0)
@@ -5392,12 +5395,84 @@ packages:
'@swagger-api/apidom-reference@1.0.0-beta.6':
resolution: {integrity: sha512-GdVPd+YAOWdAuJUJ5so63pZ4i0xlBNGClHJfTHirxZbEH9UQjNTKSkQgawUD0UBpg1HeQVzecl1cehoOp/+Uhw==}
+ '@swc/core-darwin-arm64@1.10.1':
+ resolution: {integrity: sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@swc/core-darwin-x64@1.10.1':
+ resolution: {integrity: sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@swc/core-linux-arm-gnueabihf@1.10.1':
+ resolution: {integrity: sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@swc/core-linux-arm64-gnu@1.10.1':
+ resolution: {integrity: sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-arm64-musl@1.10.1':
+ resolution: {integrity: sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@swc/core-linux-x64-gnu@1.10.1':
+ resolution: {integrity: sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-linux-x64-musl@1.10.1':
+ resolution: {integrity: sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@swc/core-win32-arm64-msvc@1.10.1':
+ resolution: {integrity: sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@swc/core-win32-ia32-msvc@1.10.1':
+ resolution: {integrity: sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==}
+ engines: {node: '>=10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@swc/core-win32-x64-msvc@1.10.1':
+ resolution: {integrity: sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@swc/core@1.10.1':
+ resolution: {integrity: sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@swc/helpers': '*'
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ '@swc/types@0.1.17':
+ resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==}
+
'@szmarczak/http-timer@5.0.1':
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
engines: {node: '>=14.16'}
@@ -12709,6 +12784,22 @@ packages:
resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
engines: {node: '>=8'}
+ terser-webpack-plugin@5.3.10:
+ resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
+ engines: {node: '>= 10.13.0'}
+ peerDependencies:
+ '@swc/core': '*'
+ esbuild: '*'
+ uglify-js: '*'
+ webpack: ^5.1.0
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ esbuild:
+ optional: true
+ uglify-js:
+ optional: true
+
terser-webpack-plugin@5.3.11:
resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==}
engines: {node: '>= 10.13.0'}
@@ -14375,24 +14466,6 @@ snapshots:
- aws-crt
optional: true
- '@aws-sdk/credential-provider-ini@3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)':
- dependencies:
- '@aws-sdk/client-sts': 3.592.0
- '@aws-sdk/credential-provider-env': 3.587.0
- '@aws-sdk/credential-provider-http': 3.587.0
- '@aws-sdk/credential-provider-process': 3.587.0
- '@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)
- '@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.592.0)
- '@aws-sdk/types': 3.577.0
- '@smithy/credential-provider-imds': 3.2.8
- '@smithy/property-provider': 3.1.11
- '@smithy/shared-ini-file-loader': 3.1.12
- '@smithy/types': 3.7.2
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@aws-sdk/client-sso-oidc'
- - aws-crt
-
'@aws-sdk/credential-provider-node@3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)':
dependencies:
'@aws-sdk/credential-provider-env': 3.587.0
@@ -14436,7 +14509,7 @@ snapshots:
dependencies:
'@aws-sdk/credential-provider-env': 3.587.0
'@aws-sdk/credential-provider-http': 3.587.0
- '@aws-sdk/credential-provider-ini': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-ini': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/credential-provider-process': 3.587.0
'@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)
'@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.592.0)
@@ -14519,7 +14592,7 @@ snapshots:
'@aws-sdk/credential-provider-cognito-identity': 3.592.0
'@aws-sdk/credential-provider-env': 3.587.0
'@aws-sdk/credential-provider-http': 3.587.0
- '@aws-sdk/credential-provider-ini': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
+ '@aws-sdk/credential-provider-ini': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0(@aws-sdk/client-sts@3.592.0))(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/credential-provider-node': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)(@aws-sdk/client-sts@3.592.0)
'@aws-sdk/credential-provider-process': 3.587.0
'@aws-sdk/credential-provider-sso': 3.592.0(@aws-sdk/client-sso-oidc@3.592.0)
@@ -17509,7 +17582,7 @@ snapshots:
widest-line: 3.1.0
wrap-ansi: 7.0.0
- '@oclif/core@2.8.11(@types/node@22.10.2)(typescript@5.7.2)':
+ '@oclif/core@2.8.11(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)':
dependencies:
'@types/cli-progress': 3.11.6
ansi-escapes: 4.3.2
@@ -17535,7 +17608,7 @@ snapshots:
strip-ansi: 6.0.1
supports-color: 8.1.1
supports-hyperlinks: 2.3.0
- ts-node: 10.9.2(@types/node@22.10.2)(typescript@5.7.2)
+ ts-node: 10.9.2(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
tslib: 2.8.1
widest-line: 3.1.0
wordwrap: 1.0.0
@@ -17573,10 +17646,10 @@ snapshots:
dependencies:
'@oclif/core': 1.26.2
- '@oclif/plugin-not-found@2.3.23(@types/node@22.10.2)(typescript@5.7.2)':
+ '@oclif/plugin-not-found@2.3.23(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)':
dependencies:
'@oclif/color': 1.0.13
- '@oclif/core': 2.8.11(@types/node@22.10.2)(typescript@5.7.2)
+ '@oclif/core': 2.8.11(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
fast-levenshtein: 3.0.0
lodash: 4.17.21
transitivePeerDependencies:
@@ -17601,9 +17674,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@oclif/plugin-warn-if-update-available@2.0.24(@types/node@22.10.2)(typescript@5.7.2)':
+ '@oclif/plugin-warn-if-update-available@2.0.24(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)':
dependencies:
- '@oclif/core': 2.8.11(@types/node@22.10.2)(typescript@5.7.2)
+ '@oclif/core': 2.8.11(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
chalk: 4.1.2
debug: 4.4.0(supports-color@8.1.1)
fs-extra: 9.1.0
@@ -17919,7 +17992,7 @@ snapshots:
dependencies:
playwright: 1.49.1
- '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.31.0)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(esbuild@0.24.2))':
+ '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@4.31.0)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))':
dependencies:
ansi-html: 0.0.9
core-js-pure: 3.39.0
@@ -17929,7 +18002,7 @@ snapshots:
react-refresh: 0.14.2
schema-utils: 4.3.0
source-map: 0.7.4
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
optionalDependencies:
type-fest: 4.31.0
webpack-hot-middleware: 2.26.1
@@ -18897,7 +18970,7 @@ snapshots:
'@sentry/core@8.45.1': {}
- '@sentry/nextjs@8.45.1(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.24.2))':
+ '@sentry/nextjs@8.45.1(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.28.0
@@ -18908,7 +18981,7 @@ snapshots:
'@sentry/opentelemetry': 8.45.1(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)
'@sentry/react': 8.45.1(react@19.0.0)
'@sentry/vercel-edge': 8.45.1
- '@sentry/webpack-plugin': 2.22.7(webpack@5.97.1(esbuild@0.24.2))
+ '@sentry/webpack-plugin': 2.22.7(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
chalk: 3.0.0
next: 15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
resolve: 1.22.8
@@ -18984,12 +19057,12 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@sentry/core': 8.45.1
- '@sentry/webpack-plugin@2.22.7(webpack@5.97.1(esbuild@0.24.2))':
+ '@sentry/webpack-plugin@2.22.7(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))':
dependencies:
'@sentry/bundler-plugin-core': 2.22.7
unplugin: 1.0.1
uuid: 9.0.1
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
transitivePeerDependencies:
- encoding
- supports-color
@@ -19630,7 +19703,7 @@ snapshots:
ts-dedent: 2.2.0
vite: 6.0.3(@types/node@22.10.2)(jiti@2.4.2)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)
- '@storybook/builder-webpack5@8.4.7(esbuild@0.24.2)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)':
+ '@storybook/builder-webpack5@8.4.7(@swc/core@1.10.1)(esbuild@0.24.2)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)':
dependencies:
'@storybook/core-webpack': 8.4.7(storybook@8.4.7(prettier@3.3.3))
'@types/node': 22.10.2
@@ -19639,23 +19712,23 @@ snapshots:
case-sensitive-paths-webpack-plugin: 2.4.0
cjs-module-lexer: 1.4.1
constants-browserify: 1.0.0
- css-loader: 6.11.0(webpack@5.97.1(esbuild@0.24.2))
+ css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
es-module-lexer: 1.6.0
- fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2))
- html-webpack-plugin: 5.6.3(webpack@5.97.1(esbuild@0.24.2))
+ fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
+ html-webpack-plugin: 5.6.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
magic-string: 0.30.17
path-browserify: 1.0.1
process: 0.11.10
semver: 7.6.3
storybook: 8.4.7(prettier@3.3.3)
- style-loader: 3.3.4(webpack@5.97.1(esbuild@0.24.2))
- terser-webpack-plugin: 5.3.11(esbuild@0.24.2)(webpack@5.97.1(esbuild@0.24.2))
+ style-loader: 3.3.4(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
+ terser-webpack-plugin: 5.3.10(@swc/core@1.10.1)(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
ts-dedent: 2.2.0
url: 0.11.4
util: 0.12.5
util-deprecate: 1.0.2
- webpack: 5.97.1(esbuild@0.24.2)
- webpack-dev-middleware: 6.1.3(webpack@5.97.1(esbuild@0.24.2))
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
+ webpack-dev-middleware: 6.1.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
webpack-hot-middleware: 2.26.1
webpack-virtual-modules: 0.6.2
optionalDependencies:
@@ -19728,7 +19801,7 @@ snapshots:
dependencies:
storybook: 8.4.7(prettier@3.3.3)
- '@storybook/nextjs@8.4.7(esbuild@0.24.2)(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(type-fest@4.31.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(esbuild@0.24.2))':
+ '@storybook/nextjs@8.4.7(@swc/core@1.10.1)(esbuild@0.24.2)(next@15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(type-fest@4.31.0)(typescript@5.7.2)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))':
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0)
@@ -19743,31 +19816,31 @@ snapshots:
'@babel/preset-react': 7.26.3(@babel/core@7.26.0)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.0)
'@babel/runtime': 7.26.0
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.31.0)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(esbuild@0.24.2))
- '@storybook/builder-webpack5': 8.4.7(esbuild@0.24.2)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
- '@storybook/preset-react-webpack': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.31.0)(webpack-hot-middleware@2.26.1)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
+ '@storybook/builder-webpack5': 8.4.7(@swc/core@1.10.1)(esbuild@0.24.2)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
+ '@storybook/preset-react-webpack': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(@swc/core@1.10.1)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
'@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
'@storybook/test': 8.4.7(storybook@8.4.7(prettier@3.3.3))
'@types/node': 22.10.2
'@types/semver': 7.5.8
- babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(esbuild@0.24.2))
- css-loader: 6.11.0(webpack@5.97.1(esbuild@0.24.2))
+ babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
+ css-loader: 6.11.0(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
find-up: 5.0.0
image-size: 1.2.0
loader-utils: 3.3.1
next: 15.1.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- node-polyfill-webpack-plugin: 2.0.1(webpack@5.97.1(esbuild@0.24.2))
+ node-polyfill-webpack-plugin: 2.0.1(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
pnp-webpack-plugin: 1.7.0(typescript@5.7.2)
postcss: 8.4.49
- postcss-loader: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2))
+ postcss-loader: 8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
react-refresh: 0.14.2
resolve-url-loader: 5.0.0
- sass-loader: 13.3.3(webpack@5.97.1(esbuild@0.24.2))
+ sass-loader: 13.3.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
semver: 7.6.3
storybook: 8.4.7(prettier@3.3.3)
- style-loader: 3.3.4(webpack@5.97.1(esbuild@0.24.2))
+ style-loader: 3.3.4(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0)
ts-dedent: 2.2.0
tsconfig-paths: 4.2.0
@@ -19775,7 +19848,7 @@ snapshots:
optionalDependencies:
sharp: 0.33.5
typescript: 5.7.2
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
transitivePeerDependencies:
- '@rspack/core'
- '@swc/core'
@@ -19795,11 +19868,11 @@ snapshots:
- webpack-hot-middleware
- webpack-plugin-serve
- '@storybook/preset-react-webpack@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)':
+ '@storybook/preset-react-webpack@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(@swc/core@1.10.1)(esbuild@0.24.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)':
dependencies:
'@storybook/core-webpack': 8.4.7(storybook@8.4.7(prettier@3.3.3))
'@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.3.3)))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.4.7(prettier@3.3.3))(typescript@5.7.2)
- '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2))
+ '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
'@types/node': 22.10.2
'@types/semver': 7.5.8
find-up: 5.0.0
@@ -19811,7 +19884,7 @@ snapshots:
semver: 7.6.3
storybook: 8.4.7(prettier@3.3.3)
tsconfig-paths: 4.2.0
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
optionalDependencies:
typescript: 5.7.2
transitivePeerDependencies:
@@ -19826,7 +19899,7 @@ snapshots:
dependencies:
storybook: 8.4.7(prettier@3.3.3)
- '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2))':
+ '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))':
dependencies:
debug: 4.4.0(supports-color@8.1.1)
endent: 2.1.0
@@ -19836,7 +19909,7 @@ snapshots:
react-docgen-typescript: 2.2.2(typescript@5.7.2)
tslib: 2.8.1
typescript: 5.7.2
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
transitivePeerDependencies:
- supports-color
@@ -20236,12 +20309,64 @@ snapshots:
transitivePeerDependencies:
- debug
+ '@swc/core-darwin-arm64@1.10.1':
+ optional: true
+
+ '@swc/core-darwin-x64@1.10.1':
+ optional: true
+
+ '@swc/core-linux-arm-gnueabihf@1.10.1':
+ optional: true
+
+ '@swc/core-linux-arm64-gnu@1.10.1':
+ optional: true
+
+ '@swc/core-linux-arm64-musl@1.10.1':
+ optional: true
+
+ '@swc/core-linux-x64-gnu@1.10.1':
+ optional: true
+
+ '@swc/core-linux-x64-musl@1.10.1':
+ optional: true
+
+ '@swc/core-win32-arm64-msvc@1.10.1':
+ optional: true
+
+ '@swc/core-win32-ia32-msvc@1.10.1':
+ optional: true
+
+ '@swc/core-win32-x64-msvc@1.10.1':
+ optional: true
+
+ '@swc/core@1.10.1':
+ dependencies:
+ '@swc/counter': 0.1.3
+ '@swc/types': 0.1.17
+ optionalDependencies:
+ '@swc/core-darwin-arm64': 1.10.1
+ '@swc/core-darwin-x64': 1.10.1
+ '@swc/core-linux-arm-gnueabihf': 1.10.1
+ '@swc/core-linux-arm64-gnu': 1.10.1
+ '@swc/core-linux-arm64-musl': 1.10.1
+ '@swc/core-linux-x64-gnu': 1.10.1
+ '@swc/core-linux-x64-musl': 1.10.1
+ '@swc/core-win32-arm64-msvc': 1.10.1
+ '@swc/core-win32-ia32-msvc': 1.10.1
+ '@swc/core-win32-x64-msvc': 1.10.1
+ optional: true
+
'@swc/counter@0.1.3': {}
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
+ '@swc/types@0.1.17':
+ dependencies:
+ '@swc/counter': 0.1.3
+ optional: true
+
'@szmarczak/http-timer@5.0.1':
dependencies:
defer-to-connect: 2.0.1
@@ -21699,12 +21824,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(esbuild@0.24.2)):
+ babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
'@babel/core': 7.26.0
find-cache-dir: 4.0.0
schema-utils: 4.3.0
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
babel-plugin-istanbul@6.1.1:
dependencies:
@@ -22161,13 +22286,13 @@ snapshots:
check-error@2.1.1: {}
- checkly@4.15.0(@types/node@22.10.2)(typescript@5.7.2):
+ checkly@4.15.0(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2):
dependencies:
- '@oclif/core': 2.8.11(@types/node@22.10.2)(typescript@5.7.2)
+ '@oclif/core': 2.8.11(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
'@oclif/plugin-help': 5.1.20
- '@oclif/plugin-not-found': 2.3.23(@types/node@22.10.2)(typescript@5.7.2)
+ '@oclif/plugin-not-found': 2.3.23(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
'@oclif/plugin-plugins': 5.4.4
- '@oclif/plugin-warn-if-update-available': 2.0.24(@types/node@22.10.2)(typescript@5.7.2)
+ '@oclif/plugin-warn-if-update-available': 2.0.24(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
'@typescript-eslint/typescript-estree': 6.19.0(typescript@5.7.2)
acorn: 8.8.1
acorn-walk: 8.2.0
@@ -22596,7 +22721,7 @@ snapshots:
css-gradient-parser@0.0.16: {}
- css-loader@6.11.0(webpack@5.97.1(esbuild@0.24.2)):
+ css-loader@6.11.0(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
@@ -22607,7 +22732,7 @@ snapshots:
postcss-value-parser: 4.2.0
semver: 7.6.3
optionalDependencies:
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
css-select@4.3.0:
dependencies:
@@ -23301,8 +23426,8 @@ snapshots:
'@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.7.2)
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0)
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.0)
eslint-plugin-react: 7.37.3(eslint@8.57.0)
eslint-plugin-react-hooks: 5.1.0(eslint@8.57.0)
@@ -23321,7 +23446,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0):
+ eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0(supports-color@8.1.1)
@@ -23333,7 +23458,7 @@ snapshots:
is-glob: 4.0.3
stable-hash: 0.0.4
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
@@ -23358,18 +23483,18 @@ snapshots:
- bluebird
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.7.2)
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0)
+ eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -23380,7 +23505,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -24163,7 +24288,7 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2)):
+ fork-ts-checker-webpack-plugin@8.0.0(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
'@babel/code-frame': 7.26.2
chalk: 4.1.2
@@ -24178,7 +24303,7 @@ snapshots:
semver: 7.6.3
tapable: 2.2.1
typescript: 5.7.2
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
form-data-encoder@2.1.4: {}
@@ -24649,7 +24774,7 @@ snapshots:
html-void-elements@3.0.0: {}
- html-webpack-plugin@5.6.3(webpack@5.97.1(esbuild@0.24.2)):
+ html-webpack-plugin@5.6.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -24657,7 +24782,7 @@ snapshots:
pretty-error: 4.0.0
tapable: 2.2.1
optionalDependencies:
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
htmlparser2@3.10.1:
dependencies:
@@ -27065,7 +27190,7 @@ snapshots:
node-int64@0.4.0: {}
- node-polyfill-webpack-plugin@2.0.1(webpack@5.97.1(esbuild@0.24.2)):
+ node-polyfill-webpack-plugin@2.0.1(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
assert: 2.1.0
browserify-zlib: 0.2.0
@@ -27092,7 +27217,7 @@ snapshots:
url: 0.11.4
util: 0.12.5
vm-browserify: 1.1.2
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
node-releases@2.0.19: {}
@@ -27713,7 +27838,7 @@ snapshots:
yaml: 2.7.0
optionalDependencies:
postcss: 8.4.49
- ts-node: 10.9.2(@types/node@22.10.2)(typescript@5.7.2)
+ ts-node: 10.9.2(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2)
postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.7.0):
dependencies:
@@ -27724,14 +27849,14 @@ snapshots:
tsx: 4.19.2
yaml: 2.7.0
- postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1(esbuild@0.24.2)):
+ postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
cosmiconfig: 9.0.0(typescript@5.7.2)
jiti: 1.21.7
postcss: 8.4.49
semver: 7.6.3
optionalDependencies:
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
transitivePeerDependencies:
- typescript
@@ -28897,10 +29022,10 @@ snapshots:
safer-buffer@2.1.2: {}
- sass-loader@13.3.3(webpack@5.97.1(esbuild@0.24.2)):
+ sass-loader@13.3.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
neo-async: 2.6.2
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
satori@0.12.0:
dependencies:
@@ -29449,9 +29574,9 @@ snapshots:
structured-headers@0.4.1: {}
- style-loader@3.3.4(webpack@5.97.1(esbuild@0.24.2)):
+ style-loader@3.3.4(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
style-to-object@0.4.4:
dependencies:
@@ -29674,15 +29799,28 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- terser-webpack-plugin@5.3.11(esbuild@0.24.2)(webpack@5.97.1(esbuild@0.24.2)):
+ terser-webpack-plugin@5.3.10(@swc/core@1.10.1)(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ jest-worker: 27.5.1
+ schema-utils: 3.3.0
+ serialize-javascript: 6.0.2
+ terser: 5.37.0
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
+ optionalDependencies:
+ '@swc/core': 1.10.1
+ esbuild: 0.24.2
+
+ terser-webpack-plugin@5.3.11(@swc/core@1.10.1)(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 4.3.0
serialize-javascript: 6.0.2
terser: 5.37.0
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
optionalDependencies:
+ '@swc/core': 1.10.1
esbuild: 0.24.2
terser-webpack-plugin@5.3.11(webpack@5.97.1):
@@ -29826,7 +29964,7 @@ snapshots:
ts-mixer@6.0.4: {}
- ts-node@10.9.2(@types/node@22.10.2)(typescript@5.7.2):
+ ts-node@10.9.2(@swc/core@1.10.1)(@types/node@22.10.2)(typescript@5.7.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@@ -29843,6 +29981,8 @@ snapshots:
typescript: 5.7.2
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
+ optionalDependencies:
+ '@swc/core': 1.10.1
ts-pnp@1.2.0(typescript@5.7.2):
optionalDependencies:
@@ -30580,7 +30720,7 @@ snapshots:
- bufferutil
- utf-8-validate
- webpack-dev-middleware@6.1.3(webpack@5.97.1(esbuild@0.24.2)):
+ webpack-dev-middleware@6.1.3(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)):
dependencies:
colorette: 2.0.20
memfs: 3.5.3
@@ -30588,7 +30728,7 @@ snapshots:
range-parser: 1.2.1
schema-utils: 4.3.0
optionalDependencies:
- webpack: 5.97.1(esbuild@0.24.2)
+ webpack: 5.97.1(@swc/core@1.10.1)(esbuild@0.24.2)
webpack-hot-middleware@2.26.1:
dependencies:
@@ -30632,7 +30772,7 @@ snapshots:
- esbuild
- uglify-js
- webpack@5.97.1(esbuild@0.24.2):
+ webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.6
@@ -30654,7 +30794,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.11(esbuild@0.24.2)(webpack@5.97.1(esbuild@0.24.2))
+ terser-webpack-plugin: 5.3.11(@swc/core@1.10.1)(esbuild@0.24.2)(webpack@5.97.1(@swc/core@1.10.1)(esbuild@0.24.2))
watchpack: 2.4.2
webpack-sources: 3.2.3
transitivePeerDependencies: