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 {props.children}
; - }, - 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 {props.children}
; + }, + 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: