Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 57 additions & 51 deletions docs.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://mintlify.com/docs.json",
"theme": "maple",
"theme": "mint",
"name": "NEAR Intents",
"colors": {
"primary": "#fb4d01",
Expand All @@ -11,60 +11,15 @@
"navigation": {
"tabs": [
{
"tab": "Swaps",
"tab": "Overview",
"groups": [
{
"group": "Welcome",
"pages": [
"/index"
]
},
{
"group": "Intents",
"group": "Introduction",
"pages": [
"/getting-started/what-are-intents",
"/resources/chain-support"
]
},
{
"group": "Swap API",
"openapi": "/api-reference/openapi.json",
"pages": [
"integration/distribution-channels/1click-api/quickstart",
"integration/distribution-channels/1click-api/about-1click-api",
"integration/distribution-channels/1click-api/authentication",
"integration/distribution-channels/1click-api/fee-config",
{
"group": "API Reference",
"icon": "code",
"pages": [
"GET /v0/tokens",
"POST /v0/quote",
"GET /v0/status",
"GET /v0/any-input/withdrawals",
"POST /v0/deposit/submit"
]
},
{
"group": "Explorer API",
"icon": "magnifying-glass",
"openapi": "/api-reference/explorer-openapi.yaml",
"pages": [
"api-reference/explorer/introduction",
"GET /api/v0/transactions",
"GET /api/v0/transactions-pages"
]
}
]
},
{
"group": "Developer ToolKit",
"pages": [
"integration/devkit/react-widget",
"integration/devkit/sdk",
"integration/devkit/skills"
]
},
{
"group": "Resources",
"pages": [
Expand All @@ -84,6 +39,53 @@
}
]
},
{
"tab": "API Reference",
"groups": [
{
"group": " ",
"pages": [
"integration/distribution-channels/1click-api/about-1click-api",
"integration/distribution-channels/1click-api/quickstart",
"integration/distribution-channels/1click-api/authentication",
"integration/distribution-channels/1click-api/fee-config"
]
},
Comment on lines +45 to +53
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Use named nested groups with icons instead of blank group placeholders.

Using "group": " " and icon-less groups in new sections diverges from the navigation standard and makes sidebar structure less clear.

As per coding guidelines, "Use nested groups with Font Awesome icons for navigation in docs.json."

Also applies to: 79-87

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs.json` around lines 45 - 53, Replace the blank group placeholders in the
docs JSON (the "group": " " objects) with named nested group entries that
include a Font Awesome icon and explicit label; e.g., change the object
containing pages like
"integration/distribution-channels/1click-api/about-1click-api" to have "group":
"1Click API", add an "icon": "fas fa-something" (choose an appropriate FA icon),
and if desired wrap pages under a nested "items" or "pages" array according to
existing nav schema; repeat the same refactor for the other occurrence
referenced (the block around lines 79-87) so all group objects use named groups
and include "icon" keys to conform to the navigation standard.

{
"group": "API Reference",
"openapi": "/api-reference/openapi.json",
"pages": [
"GET /v0/tokens",
"POST /v0/quote",
"GET /v0/status",
"GET /v0/any-input/withdrawals",
"POST /v0/deposit/submit"
]
},
{
"group": "Explorer API",
"openapi": "/api-reference/explorer-openapi.yaml",
"pages": [
"api-reference/explorer/introduction",
"GET /api/v0/transactions",
"GET /api/v0/transactions-pages"
]
}
]
},
{
"tab": "Toolkit",
"groups": [
{
"group": " ",
"pages": [
"integration/devkit/react-widget",
"integration/devkit/sdk",
"integration/devkit/skills"
]
}
]
},
{
"tab": "Market Makers",
"groups": [
Expand Down Expand Up @@ -157,7 +159,7 @@
"navbar": {
"links": [
{
"label": "System Status",
"label": "Status",
"href": "https://status.near-intents.org/posts/dashboard"
},
{
Expand All @@ -167,12 +169,16 @@
{
"label": "Support",
"href": "https://t.me/near_intents"
},
{
"label": "Partners",
"href": "https://partners.near-intents.org/"
}
],
"primary": {
"type": "button",
"label": "Partners",
"href": "https://partners.near-intents.org/"
"label": "App",
"href": "https://near.com/"
}
},
"contextual": {
Expand Down
183 changes: 32 additions & 151 deletions index.mdx
Original file line number Diff line number Diff line change
@@ -1,167 +1,48 @@
---
hidden: true
mode: "wide"
mode: "custom"
---
Comment on lines 1 to 3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add required title and description frontmatter fields.

This page currently has only mode, which breaks the MDX metadata requirement.

Suggested fix
 ---
 mode: "custom"
+title: "NEAR Intents"
+description: "Learn how you can integrate NEAR Intents across API, SDK, and contract workflows."
 ---

As per coding guidelines, "Every MDX file must include frontmatter with title and description fields; optional fields include icon and sidebarTitle; API pages must include an openapi field referencing the endpoint."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
---
hidden: true
mode: "wide"
mode: "custom"
---
---
mode: "custom"
title: "NEAR Intents"
description: "Learn how you can integrate NEAR Intents across API, SDK, and contract workflows."
---
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@index.mdx` around lines 1 - 3, The MDX frontmatter only contains mode and is
missing required fields; update the top frontmatter block (the leading ---
section) to include at minimum title and description keys (e.g., title: "Your
Title" and description: "Short page description"), and optionally add icon,
sidebarTitle, or openapi if this is an API page, ensuring the frontmatter
remains valid YAML inside the existing --- delimiters.


<div class="landing-page">
<div class="my-auto w-full">

<h1 class="text-center mt-0 mb-1"> NEAR Intents </h1>
<div class="mb-8 text-lg text-center prose prose-gray dark:prose-invert"><p>Welcome to the NEAR Intents Docs</p></div>
<h1 className="text-center text-4xl font-semibold tracking-tight text-gray-800 dark:text-white">
NEAR Intents
</h1>

<div class="landing pt-8 max-w-6xl mx-auto space-y-8">
<Columns cols={2}>
<div class="mr-4">
<h2 class="mb-2"> 1-Click Swap API </h2>
<p >Request quotes, execute cross-chain swaps, and track their status. </p>
<p><a href="/integration/distribution-channels/1click-api/quickstart"> Quickstart -> </a></p>
<p><a href="/integration/distribution-channels/1click-api/about-1click-api"> Learn More -> </a></p>
</div>
<CodeGroup>
```bash cURL
# Query supported tokens
curl https://1click.chaindefuser.com/v0/tokens
<div class="text-lg text-center"><p>Welcome to the NEAR Intents Docs</p></div>

# Request a quote
curl -X POST https://1click.chaindefuser.com/v0/quote \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"swapType": "EXACT_INPUT",
"originAsset": "nep141:wrap.near",
"depositType": "ORIGIN_CHAIN",
"destinationAsset": "nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near",
"amount": "100000000000000000000000",
...
}'
```
<div class="landing pt-5 max-w-6xl mx-auto space-y-2">

```typescript TypeScript
// Query supported tokens
const tokensResponse = await fetch('https://1click.chaindefuser.com/v0/tokens');
const tokens = await tokensResponse.json();
<Columns cols={4}>
<Card title="API Quickstart" icon="rocket" href="/integration/distribution-channels/1click-api/quickstart" cta="Integrate" arrow>
Execute your first cross-chain swap in minutes.
</Card>

// Request a quote
const quote = await fetch('https://1click.chaindefuser.com/v0/quote', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_JWT_TOKEN'
},
body: JSON.stringify({
swapType: 'EXACT_INPUT',
originAsset: 'nep141:wrap.near',
depositType: 'ORIGIN_CHAIN',
destinationAsset: 'nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near',
amount: '100000000000000000000000',
// ...
})
});
const result = await quote.json();
```
<Card title="React Widget" icon="palette" href="/integration/devkit/react-widget" cta="Integrate" arrow>
Embed a customizable swap UI with a ready-to-use React component.
</Card>

```python Python
import requests
<Card title="SDK Libraries" icon="window-restore" href="/integration/devkit/sdk" cta="Explore" arrow>
Build with TypeScript, Go, and Rust SDKs for typed API integration.
</Card>

# Query supported tokens
tokens_response = requests.get('https://1click.chaindefuser.com/v0/tokens')
tokens = tokens_response.json()
<Card title="What are intents?" icon="lightbulb" href="/getting-started/what-are-intents" cta="Read docs" arrow>
Learn how the protocol works and core concepts.
</Card>
</Columns>
<Columns cols={2}>
<Card title="Market Makers" icon="users" href="/integration/market-makers/introduction" cta="Learn how" arrow>
Provide liquidity by fulfilling cross-chain swap intents.
</Card>

# Request a quote
quote = requests.post(
'https://1click.chaindefuser.com/v0/quote',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_JWT_TOKEN'
},
json={
'swapType': 'EXACT_INPUT',
'originAsset': 'nep141:wrap.near',
'depositType': 'ORIGIN_CHAIN',
'destinationAsset': 'nep141:arb-0x912ce59144191c1204e64559fe8253a0e49e6548.omft.near',
'amount': '100000000000000000000000',
# ...
}
)
result = quote.json()
```
</CodeGroup>
</Columns>
<Card title="Verifier Contract" icon="credit-card" href="/integration/verifier-contract/introduction" cta="Read docs" arrow>
Interact with the smart contract for custom integrations.
Comment on lines +17 to +39
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Switch internal card links to relative paths.

These links are root-absolute (/...) instead of relative.

As per coding guidelines, "Use relative paths for all internal links in MDX documentation files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@index.mdx` around lines 17 - 39, The Card components use root-absolute hrefs
(e.g., href="/integration/...") which violate the guideline to use relative
paths; update each Card's href prop to a relative path (remove the leading
slash) for internal links in this MDX file—locate the Card elements (e.g., the
Card instances titled "API Quickstart", "React Widget", "SDK Libraries", "What
are intents?", "Market Makers", "Verifier Contract") and change their href
attributes from "/..." to "./integration/..." or the correct relative path from
the current document location.

</Card>

<Columns cols={2}>
<img src="/images/widget/swap-widget.png" alt="Swap Widget UI" class="rounded-lg border border-gray-950/10 dark:border-white/10 swap-widget-preview" />
<div>
<h2 class="mb-2"> React Widget </h2>
<p>Integrate a customizable, cross-chain swap interface into your app with just a few lines of code.</p>
<p><a href="/integration/devkit/react-widget"> Learn More -> </a></p>
</div>
</Columns>

Comment on lines +16 to 43
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Use <CardGroup> for this introduction page navigation grid.

The current Columns-based layout conflicts with the repository’s introduction-page pattern.

As per coding guidelines, "Introduction pages should use <CardGroup> component to guide readers to subtopics."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@index.mdx` around lines 16 - 43, Replace the Two <Columns> blocks with the
repository's introduction page pattern by using <CardGroup> instead: remove the
<Columns cols={4}> and <Columns cols={2}> wrappers and wrap all six <Card>
components inside a single <CardGroup> (or two <CardGroup> blocks if layout
needs grouping), keeping each <Card>'s title, icon, href, cta and body
unchanged; update imports to include CardGroup (remove Columns import if no
longer used) and ensure JSX remains valid with matching opening/closing
<CardGroup> tags.

</Columns>

<Columns cols={2}>
<div class="mr-4">
<h2 class="mb-2"> SDK Libraries </h2>
<p>Use SDKs for TypeScript, Go, and Rust to request quotes, submit deposits, and monitor execution status.</p>
<p><a href="/integration/devkit/sdk"> Learn More -> </a></p>
</div>
<CodeGroup>
```typescript TypeScript
import { OpenAPI, OneClickService } from '@defuse-protocol/one-click-sdk-typescript';

OpenAPI.TOKEN = 'YOUR_JWT_TOKEN';

const tokens = await OneClickService.getTokens();
console.log(tokens.length);
```

```go Go
configuration := openapiclient.NewConfiguration()
apiClient := openapiclient.NewAPIClient(configuration)

tokens, _, err := apiClient.OneClickAPI.GetTokens(context.Background()).Execute()
if err != nil {
panic(err)
}
```

```rust Rust
use one_click_sdk_rs::apis::one_click_api;
use one_click_sdk_rs::apis::configuration::Configuration;

let config = Configuration::default();
let tokens = one_click_api::get_tokens(&config).await?;
println!("{}", tokens.len());
```
</CodeGroup>
</Columns>

<h2 class="ps-0"> Browse By Topic </h2>

<Columns cols={4}>
<Card title="API Quickstart" icon="rocket" href="/integration/distribution-channels/1click-api/quickstart" cta="Integrate" arrow>
Execute your first cross-chain swap in minutes.
</Card>

<Card title="React Widget" icon="palette" href="/integration/devkit/react-widget" cta="Integrate" arrow>
Embed a customizable swap UI with a ready-to-use React component.
</Card>

<Card title="SDK Libraries" icon="window-restore" href="/integration/devkit/sdk" cta="Explore" arrow>
Build with TypeScript, Go, and Rust SDKs for typed API integration.
</Card>

<Card title="What are intents?" icon="lightbulb" href="/getting-started/what-are-intents" cta="Read docs" arrow>
Learn how the protocol works and core concepts.
</Card>
</Columns>
<Columns cols={2}>
<Card title="Market Makers" icon="users" href="/integration/market-makers/introduction" cta="Learn how" arrow>
Provide liquidity by fulfilling cross-chain swap intents.
</Card>

<Card title="Verifier Contract" icon="credit-card" href="/integration/verifier-contract/introduction" cta="Read docs" arrow>
Interact with the smart contract for custom integrations.
</Card>

</Columns>

</div>

</div>
</div>
23 changes: 23 additions & 0 deletions style.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
overflow: auto;
}

.landing-page {
min-height: calc(100vh - 7rem);
min-height: calc(100dvh - 7rem);
display: flex;
align-items: center;
}

body:has(.landing) .nav-tabs-item[href="/getting-started/what-are-intents"] {
color: rgb(75 85 99) !important;
/* text-gray-600 */
text-shadow: none !important;
}

.dark body:has(.landing) .nav-tabs-item[href="/getting-started/what-are-intents"],
body.dark:has(.landing) .nav-tabs-item[href="/getting-started/what-are-intents"] {
color: rgb(156 163 175) !important;
/* dark:text-gray-400 */
}

body:has(.landing) .nav-tabs-item[href="/getting-started/what-are-intents"]>div {
background: transparent !important;
}

.primary {
color: rgb(var(--primary));
}
Expand Down