mirror of
				https://github.com/Xahau/xahau-web.git
				synced 2025-11-04 12:15:49 +00:00 
			
		
		
		
	Merge pull request #7 from tequdev/add-formatter
Add formatter and workflow
This commit is contained in:
		
							
								
								
									
										39
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
name: CI
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches: [ "main" ]
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches: [ "main" ]
 | 
			
		||||
 | 
			
		||||
concurrency:
 | 
			
		||||
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
			
		||||
  cancel-in-progress: true
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout code
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
    - name: Setup Node.js
 | 
			
		||||
      uses: actions/setup-node@v4
 | 
			
		||||
      with:
 | 
			
		||||
        node-version: '18'
 | 
			
		||||
        cache: 'npm'
 | 
			
		||||
 | 
			
		||||
    - name: Setup Biome
 | 
			
		||||
      uses: biomejs/setup-biome@v2
 | 
			
		||||
      with:
 | 
			
		||||
        version: latest
 | 
			
		||||
 | 
			
		||||
    - name: Install dependencies
 | 
			
		||||
      run: npm ci
 | 
			
		||||
 | 
			
		||||
    - name: Check
 | 
			
		||||
      run: biome ci
 | 
			
		||||
 | 
			
		||||
    - name: Build Astro project
 | 
			
		||||
      run: npm run build
 | 
			
		||||
							
								
								
									
										2
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
{
 | 
			
		||||
  "recommendations": ["astro-build.astro-vscode"],
 | 
			
		||||
  "recommendations": ["astro-build.astro-vscode", "biomejs.biome"],
 | 
			
		||||
  "unwantedRecommendations": []
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
{
 | 
			
		||||
  "editor.formatOnSave": true,
 | 
			
		||||
  "editor.defaultFormatter": "biomejs.biome",
 | 
			
		||||
  "editor.codeActionsOnSave": {
 | 
			
		||||
    "quickfix.biome": "explicit",
 | 
			
		||||
    "source.organizeImports.biome": "explicit"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										132
									
								
								astro.config.mjs
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								astro.config.mjs
									
									
									
									
									
								
							@@ -1,15 +1,16 @@
 | 
			
		||||
// @ts-check
 | 
			
		||||
import { defineConfig } from 'astro/config';
 | 
			
		||||
import react from '@astrojs/react';
 | 
			
		||||
import mdx from '@astrojs/mdx';
 | 
			
		||||
import tailwindcss from '@tailwindcss/vite';
 | 
			
		||||
import starlight from '@astrojs/starlight';
 | 
			
		||||
 | 
			
		||||
import mdx from '@astrojs/mdx'
 | 
			
		||||
import react from '@astrojs/react'
 | 
			
		||||
import starlight from '@astrojs/starlight'
 | 
			
		||||
import tailwindcss from '@tailwindcss/vite'
 | 
			
		||||
import { defineConfig } from 'astro/config'
 | 
			
		||||
import starlightOpenAPI, { openAPISidebarGroups } from 'starlight-openapi'
 | 
			
		||||
 | 
			
		||||
// https://astro.build/config
 | 
			
		||||
export default defineConfig({
 | 
			
		||||
  integrations: [
 | 
			
		||||
    react(), 
 | 
			
		||||
    react(),
 | 
			
		||||
    starlight({
 | 
			
		||||
      title: 'Xahau Docs',
 | 
			
		||||
      description: 'Documentation for the Xahau blockchain',
 | 
			
		||||
@@ -31,21 +32,18 @@ export default defineConfig({
 | 
			
		||||
      plugins: [
 | 
			
		||||
        starlightOpenAPI([
 | 
			
		||||
          {
 | 
			
		||||
           base: 'docs/data-apis/data-api',
 | 
			
		||||
           schema: './src/schemas/dataapi.json',
 | 
			
		||||
           sidebar: {
 | 
			
		||||
            label: 'Xahau Data API'
 | 
			
		||||
           }
 | 
			
		||||
            base: 'docs/data-apis/data-api',
 | 
			
		||||
            schema: './src/schemas/dataapi.json',
 | 
			
		||||
            sidebar: {
 | 
			
		||||
              label: 'Xahau Data API',
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        ]),
 | 
			
		||||
      ],
 | 
			
		||||
      sidebar: [
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Get started', 
 | 
			
		||||
          items: [
 | 
			
		||||
            'docs',
 | 
			
		||||
            'docs/what-is-different'
 | 
			
		||||
          ],
 | 
			
		||||
          label: 'Get started',
 | 
			
		||||
          items: ['docs', 'docs/what-is-different'],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Features',
 | 
			
		||||
@@ -55,29 +53,29 @@ export default defineConfig({
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Transaction Signing',
 | 
			
		||||
              autogenerate: { directory: 'docs/features/transaction-signing' },
 | 
			
		||||
              collapsed: true
 | 
			
		||||
              collapsed: true,
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Developer Tooling',
 | 
			
		||||
              autogenerate: { directory: 'docs/features/developer-tooling' },
 | 
			
		||||
              collapsed: true
 | 
			
		||||
              collapsed: true,
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'HTTP / WebSocket APIs',
 | 
			
		||||
              autogenerate: { directory: 'docs/features/http-websocket-apis' },
 | 
			
		||||
              collapsed: true
 | 
			
		||||
              collapsed: true,
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Network Features',
 | 
			
		||||
              autogenerate: { directory: 'docs/features/network-features' },
 | 
			
		||||
              collapsed: true
 | 
			
		||||
              collapsed: true,
 | 
			
		||||
            },
 | 
			
		||||
            'docs/features/faucet-and-explorer',
 | 
			
		||||
            'docs/features/balance-adjustments',
 | 
			
		||||
            'docs/features/governance-game',
 | 
			
		||||
            'docs/features/burn-2-mint',
 | 
			
		||||
            'docs/features/versioning-process',
 | 
			
		||||
          ]
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Protocol Reference',
 | 
			
		||||
@@ -89,22 +87,31 @@ export default defineConfig({
 | 
			
		||||
                'docs/protocol-reference/transactions',
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Transaction Types',
 | 
			
		||||
                  autogenerate: { directory: 'docs/protocol-reference/transactions/transaction-types' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory:
 | 
			
		||||
                      'docs/protocol-reference/transactions/transaction-types',
 | 
			
		||||
                  },
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Pseudo Transaction Types',
 | 
			
		||||
                  autogenerate: { directory: 'docs/protocol-reference/transactions/pseudo-transaction-types' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory:
 | 
			
		||||
                      'docs/protocol-reference/transactions/pseudo-transaction-types',
 | 
			
		||||
                  },
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Transaction Results',
 | 
			
		||||
                  autogenerate: { directory: 'docs/protocol-reference/transactions/transaction-results' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory:
 | 
			
		||||
                      'docs/protocol-reference/transactions/transaction-results',
 | 
			
		||||
                  },
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                },
 | 
			
		||||
                'docs/protocol-reference/transactions/transaction-common-fields',
 | 
			
		||||
                'docs/protocol-reference/transactions/transaction-metadata',
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Ledger Data',
 | 
			
		||||
@@ -113,12 +120,15 @@ export default defineConfig({
 | 
			
		||||
                'docs/protocol-reference/ledger-data',
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Ledger Objects Types',
 | 
			
		||||
                  autogenerate: { directory: 'docs/protocol-reference/ledger-data/ledger-objects-types' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory:
 | 
			
		||||
                      'docs/protocol-reference/ledger-data/ledger-objects-types',
 | 
			
		||||
                  },
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                },
 | 
			
		||||
                'docs/protocol-reference/ledger-data/ledger-header',
 | 
			
		||||
                'docs/protocol-reference/ledger-data/ledger-object-ids',
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Data Types',
 | 
			
		||||
@@ -127,10 +137,10 @@ export default defineConfig({
 | 
			
		||||
                'docs/protocol-reference/data-types',
 | 
			
		||||
                'docs/protocol-reference/data-types/currency-formats',
 | 
			
		||||
                'docs/protocol-reference/data-types/base-58-encodings',
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
            'docs/protocol-reference/binary-format',
 | 
			
		||||
          ]
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Hooks',
 | 
			
		||||
@@ -161,7 +171,7 @@ export default defineConfig({
 | 
			
		||||
                'docs/hooks/concepts/floating-point-numbers-xfl',
 | 
			
		||||
                'docs/hooks/concepts/emitted-transactions',
 | 
			
		||||
                'docs/hooks/concepts/serialized-objects',
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Functions',
 | 
			
		||||
@@ -175,7 +185,9 @@ export default defineConfig({
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Developer Defined',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/developer-defined' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/developer-defined',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Control',
 | 
			
		||||
@@ -190,12 +202,16 @@ export default defineConfig({
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Serialization',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/serialization' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/serialization',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Emitted Transaction',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/emitted-transaction' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/emitted-transaction',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Float',
 | 
			
		||||
@@ -210,7 +226,9 @@ export default defineConfig({
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Hook Context',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/hook-context' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/hook-context',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Slot',
 | 
			
		||||
@@ -223,37 +241,40 @@ export default defineConfig({
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/state' },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Trace (Debug)', 
 | 
			
		||||
                  label: 'Trace (Debug)',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/trace-debug' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/trace-debug',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'Originating Transaction',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/originating-transaction' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/originating-transaction',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  label: 'WebSocket APIs',
 | 
			
		||||
                  collapsed: true,
 | 
			
		||||
                  autogenerate: { directory: 'docs/hooks/functions/websocket-apis' },
 | 
			
		||||
                  autogenerate: {
 | 
			
		||||
                    directory: 'docs/hooks/functions/websocket-apis',
 | 
			
		||||
                  },
 | 
			
		||||
                },
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          ]
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Data APIs',
 | 
			
		||||
          items: [
 | 
			
		||||
            'docs/data-apis',
 | 
			
		||||
            ...openAPISidebarGroups
 | 
			
		||||
          ]
 | 
			
		||||
          items: ['docs/data-apis', ...openAPISidebarGroups],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Compliance',
 | 
			
		||||
          items: [
 | 
			
		||||
            'docs/compliance/security-audit',
 | 
			
		||||
            'docs/compliance/responsible-disclosure',
 | 
			
		||||
          ]
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Infrastructure',
 | 
			
		||||
@@ -265,7 +286,7 @@ export default defineConfig({
 | 
			
		||||
              items: [
 | 
			
		||||
                'docs/infrastructure/running-a-node/running-a-mainnet-node',
 | 
			
		||||
                'docs/infrastructure/running-a-node/running-a-testnet-node',
 | 
			
		||||
              ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              label: 'Building Xahau (Dev)',
 | 
			
		||||
@@ -274,16 +295,13 @@ export default defineConfig({
 | 
			
		||||
                'docs/infrastructure/building-xahau',
 | 
			
		||||
                'docs/infrastructure/building-xahau/ubuntu-22-04',
 | 
			
		||||
                'docs/infrastructure/building-xahau/mac-os-13-5-2',
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          ]
 | 
			
		||||
              ],
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Resources', 
 | 
			
		||||
          items: [
 | 
			
		||||
            'docs/resources/whitepaper',
 | 
			
		||||
            'docs/resources/media-kit',
 | 
			
		||||
          ],
 | 
			
		||||
          label: 'Resources',
 | 
			
		||||
          items: ['docs/resources/whitepaper', 'docs/resources/media-kit'],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'Support',
 | 
			
		||||
@@ -291,10 +309,10 @@ export default defineConfig({
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    }),
 | 
			
		||||
    mdx()
 | 
			
		||||
    mdx(),
 | 
			
		||||
  ],
 | 
			
		||||
  vite: {
 | 
			
		||||
    plugins: [tailwindcss()],
 | 
			
		||||
  },
 | 
			
		||||
    site: 'https://xahau.network/'
 | 
			
		||||
});
 | 
			
		||||
  site: 'https://xahau.network/',
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								biome.jsonc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								biome.jsonc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
{
 | 
			
		||||
  "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json",
 | 
			
		||||
  "vcs": {
 | 
			
		||||
    "enabled": false,
 | 
			
		||||
    "clientKind": "git",
 | 
			
		||||
    "useIgnoreFile": false
 | 
			
		||||
  },
 | 
			
		||||
  "files": {
 | 
			
		||||
    "includes": ["**", "!*/**/*.astro", "!.astro", "!dist"],
 | 
			
		||||
    "ignoreUnknown": false
 | 
			
		||||
  },
 | 
			
		||||
  "formatter": {
 | 
			
		||||
    "enabled": true,
 | 
			
		||||
    "indentStyle": "space",
 | 
			
		||||
    "indentWidth": 2
 | 
			
		||||
  },
 | 
			
		||||
  "linter": {
 | 
			
		||||
    "enabled": true,
 | 
			
		||||
    "rules": {
 | 
			
		||||
      "recommended": true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "javascript": {
 | 
			
		||||
    "formatter": {
 | 
			
		||||
      "quoteStyle": "single",
 | 
			
		||||
      "semicolons": "asNeeded"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "assist": {
 | 
			
		||||
    "enabled": true,
 | 
			
		||||
    "actions": {
 | 
			
		||||
      "source": {
 | 
			
		||||
        "organizeImports": "on"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										166
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										166
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -21,6 +21,9 @@
 | 
			
		||||
        "starlight-openapi": "^0.19.1",
 | 
			
		||||
        "tailwindcss": "^4.1.11",
 | 
			
		||||
        "vanilla-cookieconsent": "^3.1.0"
 | 
			
		||||
      },
 | 
			
		||||
      "devDependencies": {
 | 
			
		||||
        "@biomejs/biome": "^2.0.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@ampproject/remapping": {
 | 
			
		||||
@@ -452,6 +455,169 @@
 | 
			
		||||
        "node": ">=6.9.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/biome": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==",
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "biome": "bin/biome"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      },
 | 
			
		||||
      "funding": {
 | 
			
		||||
        "type": "opencollective",
 | 
			
		||||
        "url": "https://opencollective.com/biome"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
        "@biomejs/cli-darwin-arm64": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-darwin-x64": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-linux-arm64": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-linux-arm64-musl": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-linux-x64": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-linux-x64-musl": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-win32-arm64": "2.0.6",
 | 
			
		||||
        "@biomejs/cli-win32-x64": "2.0.6"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-darwin-arm64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-darwin-x64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-linux-arm64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-linux-arm64-musl": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-linux-x64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-linux-x64-musl": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-win32-arm64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@biomejs/cli-win32-x64": {
 | 
			
		||||
      "version": "2.0.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.0.6.tgz",
 | 
			
		||||
      "integrity": "sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "dev": true,
 | 
			
		||||
      "license": "MIT OR Apache-2.0",
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.21.3"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@capsizecss/unpack": {
 | 
			
		||||
      "version": "2.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,9 @@
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "dev": "astro dev",
 | 
			
		||||
    "build": "astro build",
 | 
			
		||||
    "preview": "astro preview"
 | 
			
		||||
    "preview": "astro preview",
 | 
			
		||||
    "check": "biome check --write",
 | 
			
		||||
    "ci": "biome ci"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@astrojs/mdx": "^4.3.0",
 | 
			
		||||
@@ -21,5 +23,8 @@
 | 
			
		||||
    "starlight-openapi": "^0.19.1",
 | 
			
		||||
    "tailwindcss": "^4.1.11",
 | 
			
		||||
    "vanilla-cookieconsent": "^3.1.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@biomejs/biome": "^2.0.6"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,73 +1,79 @@
 | 
			
		||||
import type { CookieConsentConfig } from 'vanilla-cookieconsent';
 | 
			
		||||
import type { CookieConsentConfig } from 'vanilla-cookieconsent'
 | 
			
		||||
 | 
			
		||||
export const config: CookieConsentConfig = {
 | 
			
		||||
  guiOptions: {
 | 
			
		||||
      consentModal: {
 | 
			
		||||
          layout: "box",
 | 
			
		||||
          position: "bottom left",
 | 
			
		||||
          equalWeightButtons: true,
 | 
			
		||||
          flipButtons: false
 | 
			
		||||
      },
 | 
			
		||||
      preferencesModal: {
 | 
			
		||||
          layout: "box",
 | 
			
		||||
          position: "right",
 | 
			
		||||
          equalWeightButtons: true,
 | 
			
		||||
          flipButtons: false
 | 
			
		||||
      }
 | 
			
		||||
    consentModal: {
 | 
			
		||||
      layout: 'box',
 | 
			
		||||
      position: 'bottom left',
 | 
			
		||||
      equalWeightButtons: true,
 | 
			
		||||
      flipButtons: false,
 | 
			
		||||
    },
 | 
			
		||||
    preferencesModal: {
 | 
			
		||||
      layout: 'box',
 | 
			
		||||
      position: 'right',
 | 
			
		||||
      equalWeightButtons: true,
 | 
			
		||||
      flipButtons: false,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  categories: {
 | 
			
		||||
      necessary: {
 | 
			
		||||
          readOnly: true
 | 
			
		||||
      },
 | 
			
		||||
      functionality: {
 | 
			
		||||
          enabled: true
 | 
			
		||||
      },
 | 
			
		||||
      analytics: {
 | 
			
		||||
        enabled: true
 | 
			
		||||
      }
 | 
			
		||||
    necessary: {
 | 
			
		||||
      readOnly: true,
 | 
			
		||||
    },
 | 
			
		||||
    functionality: {
 | 
			
		||||
      enabled: true,
 | 
			
		||||
    },
 | 
			
		||||
    analytics: {
 | 
			
		||||
      enabled: true,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  language: {
 | 
			
		||||
      default: "en",
 | 
			
		||||
      translations: {
 | 
			
		||||
          en: {
 | 
			
		||||
              consentModal: {
 | 
			
		||||
                  title: "Select your cookie preferences",
 | 
			
		||||
                  description: "We use cookies to ensure you get the best experience on our website.",
 | 
			
		||||
                  acceptAllBtn: "Accept all",
 | 
			
		||||
                  acceptNecessaryBtn: "Reject all",
 | 
			
		||||
                  showPreferencesBtn: "Manage preferences",
 | 
			
		||||
                  footer: "<a href=\"/privacy-policy\">Privacy Policy</a>"
 | 
			
		||||
              },
 | 
			
		||||
              preferencesModal: {
 | 
			
		||||
                  title: "Consent Preferences Center",
 | 
			
		||||
                  acceptAllBtn: "Accept all",
 | 
			
		||||
                  acceptNecessaryBtn: "Reject all",
 | 
			
		||||
                  savePreferencesBtn: "Save preferences",
 | 
			
		||||
                  closeIconLabel: "Close modal",
 | 
			
		||||
                  serviceCounterLabel: "Service|Services",
 | 
			
		||||
                  sections: [
 | 
			
		||||
                      {
 | 
			
		||||
                          title: "Strictly Necessary Cookies <span class=\"pm__badge\">Always Enabled</span>",
 | 
			
		||||
                          description: "Some cookies are essential in order to use the website and use some of its features.",
 | 
			
		||||
                          linkedCategory: "necessary"
 | 
			
		||||
                      },
 | 
			
		||||
                      {
 | 
			
		||||
                          title: "Functionality Cookies",
 | 
			
		||||
                          description: "These cookies are used to enhance the performance and functionality of the website but are non-essential to their use. However, without these cookies, certain functionality (like videos) may become unavailable.",
 | 
			
		||||
                          linkedCategory: "functionality"
 | 
			
		||||
                      },
 | 
			
		||||
                      {
 | 
			
		||||
                          title: "Analytics Cookies",
 | 
			
		||||
                          description: "We use analytics cookies to understand how you use our website so we can improve it.",
 | 
			
		||||
                          linkedCategory: "analytics"
 | 
			
		||||
                      },
 | 
			
		||||
                      {
 | 
			
		||||
                          title: "More information",
 | 
			
		||||
                          description: "For any query in relation to the policy on cookies and your choices, please refer to the <a class=\"cc__link\" href=\"/privacy-policy\">Privacy Policy</a>."
 | 
			
		||||
                      }
 | 
			
		||||
                  ]
 | 
			
		||||
              }
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
    default: 'en',
 | 
			
		||||
    translations: {
 | 
			
		||||
      en: {
 | 
			
		||||
        consentModal: {
 | 
			
		||||
          title: 'Select your cookie preferences',
 | 
			
		||||
          description:
 | 
			
		||||
            'We use cookies to ensure you get the best experience on our website.',
 | 
			
		||||
          acceptAllBtn: 'Accept all',
 | 
			
		||||
          acceptNecessaryBtn: 'Reject all',
 | 
			
		||||
          showPreferencesBtn: 'Manage preferences',
 | 
			
		||||
          footer: '<a href="/privacy-policy">Privacy Policy</a>',
 | 
			
		||||
        },
 | 
			
		||||
        preferencesModal: {
 | 
			
		||||
          title: 'Consent Preferences Center',
 | 
			
		||||
          acceptAllBtn: 'Accept all',
 | 
			
		||||
          acceptNecessaryBtn: 'Reject all',
 | 
			
		||||
          savePreferencesBtn: 'Save preferences',
 | 
			
		||||
          closeIconLabel: 'Close modal',
 | 
			
		||||
          serviceCounterLabel: 'Service|Services',
 | 
			
		||||
          sections: [
 | 
			
		||||
            {
 | 
			
		||||
              title:
 | 
			
		||||
                'Strictly Necessary Cookies <span class="pm__badge">Always Enabled</span>',
 | 
			
		||||
              description:
 | 
			
		||||
                'Some cookies are essential in order to use the website and use some of its features.',
 | 
			
		||||
              linkedCategory: 'necessary',
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              title: 'Functionality Cookies',
 | 
			
		||||
              description:
 | 
			
		||||
                'These cookies are used to enhance the performance and functionality of the website but are non-essential to their use. However, without these cookies, certain functionality (like videos) may become unavailable.',
 | 
			
		||||
              linkedCategory: 'functionality',
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              title: 'Analytics Cookies',
 | 
			
		||||
              description:
 | 
			
		||||
                'We use analytics cookies to understand how you use our website so we can improve it.',
 | 
			
		||||
              linkedCategory: 'analytics',
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              title: 'More information',
 | 
			
		||||
              description:
 | 
			
		||||
                'For any query in relation to the policy on cookies and your choices, please refer to the <a class="cc__link" href="/privacy-policy">Privacy Policy</a>.',
 | 
			
		||||
            },
 | 
			
		||||
          ],
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
import 'vanilla-cookieconsent/dist/cookieconsent.css';
 | 
			
		||||
import 'vanilla-cookieconsent/dist/cookieconsent.css'
 | 
			
		||||
---
 | 
			
		||||
<script>
 | 
			
		||||
    import { run } from 'vanilla-cookieconsent';
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,9 @@
 | 
			
		||||
---
 | 
			
		||||
import { ChevronDownIcon, Bars3Icon, XMarkIcon } from '@heroicons/react/20/solid'
 | 
			
		||||
import {
 | 
			
		||||
  Bars3Icon,
 | 
			
		||||
  ChevronDownIcon,
 | 
			
		||||
  XMarkIcon,
 | 
			
		||||
} from '@heroicons/react/20/solid'
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<starlight-menu-button class="print:hidden">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
import TableOfContents from '@astrojs/starlight/components/TableOfContents.astro';
 | 
			
		||||
import TableOfContents from '@astrojs/starlight/components/TableOfContents.astro'
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
import SidebarPersister from '@astrojs/starlight/components/SidebarPersister.astro';
 | 
			
		||||
import SidebarSublist from '@astrojs/starlight/components/SidebarSublist.astro';
 | 
			
		||||
import SidebarPersister from '@astrojs/starlight/components/SidebarPersister.astro'
 | 
			
		||||
import SidebarSublist from '@astrojs/starlight/components/SidebarSublist.astro'
 | 
			
		||||
 | 
			
		||||
const { sidebar } = Astro.locals.starlightRoute;
 | 
			
		||||
const { sidebar } = Astro.locals.starlightRoute
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<SidebarPersister>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
const { class: className, ...rest } = Astro.props
 | 
			
		||||
import { Image } from 'astro:assets';
 | 
			
		||||
 | 
			
		||||
import { Image } from 'astro:assets'
 | 
			
		||||
---
 | 
			
		||||
<a href={Astro.props.href} target="_blank" class:list={["flex hover:border-xahau-green hover:bg-gray-50 !text-black !no-underline items-center justify-center p-4 text-center bg-white font-bold border-black border-2",className]}>
 | 
			
		||||
  {Astro.props.imageSrc ? <Image src={Astro.props.imageSrc} alt={Astro.props.title} class="w-auto h-auto max-h-2/5" /> : Astro.props.title}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
import { Image } from 'astro:assets'
 | 
			
		||||
import logo from '../assets/xahau-logo.svg'
 | 
			
		||||
import { Image } from 'astro:assets';
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<footer class="bg-white text-base font-regular text-black **:text-black **:no-underline">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
'use client'
 | 
			
		||||
 | 
			
		||||
import { useState } from 'react'
 | 
			
		||||
import {
 | 
			
		||||
  Dialog,
 | 
			
		||||
  DialogPanel,
 | 
			
		||||
@@ -12,7 +11,12 @@ import {
 | 
			
		||||
  PopoverGroup,
 | 
			
		||||
  PopoverPanel,
 | 
			
		||||
} from '@headlessui/react'
 | 
			
		||||
import { ChevronDownIcon, Bars3Icon, XMarkIcon } from '@heroicons/react/20/solid'
 | 
			
		||||
import {
 | 
			
		||||
  Bars3Icon,
 | 
			
		||||
  ChevronDownIcon,
 | 
			
		||||
  XMarkIcon,
 | 
			
		||||
} from '@heroicons/react/20/solid'
 | 
			
		||||
import { useState } from 'react'
 | 
			
		||||
 | 
			
		||||
const socials = [
 | 
			
		||||
  { name: 'X', href: 'https://x.com/XahauNetwork' },
 | 
			
		||||
@@ -43,34 +47,76 @@ export default function Header(props) {
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <header className="header bg-xahau-background z-20">
 | 
			
		||||
      <nav aria-label="Global" className="mx-auto flex max-w-7xl items-center justify-between p-6">
 | 
			
		||||
      <nav
 | 
			
		||||
        aria-label="Global"
 | 
			
		||||
        className="mx-auto flex max-w-7xl items-center justify-between p-6"
 | 
			
		||||
      >
 | 
			
		||||
        <div className="flex lg:flex-1">
 | 
			
		||||
          <a href="/" className="-m-1.5 p-1.5">
 | 
			
		||||
            <span className="sr-only">Xahau</span>
 | 
			
		||||
            <img src={logo.src} width="222" height="40" />
 | 
			
		||||
            <img src={logo.src} width="222" height="40" alt="Xahau Logo" />
 | 
			
		||||
          </a>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div className="flex lg:hidden">
 | 
			
		||||
          <button type="button" onClick={() => setMobileMenuOpen(true)} className="border-none bg-transparent -m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700">
 | 
			
		||||
          <button
 | 
			
		||||
            type="button"
 | 
			
		||||
            onClick={() => setMobileMenuOpen(true)}
 | 
			
		||||
            className="border-none bg-transparent -m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700"
 | 
			
		||||
          >
 | 
			
		||||
            <span className="sr-only">Open main menu</span>
 | 
			
		||||
            <Bars3Icon aria-hidden="true" className="size-6" />
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
        <PopoverGroup className="hidden lg:flex lg:gap-x-12">
 | 
			
		||||
          <a href="/about" className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] == 'about' ? 'font-bold' : 'font-regular'}`}>About</a>
 | 
			
		||||
          <a href="/features" className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] == 'features' ? 'font-bold' : 'font-regular'}`}>Features</a>
 | 
			
		||||
          <a href="/ecosystem" className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] == 'ecosystem' ? 'font-bold' : 'font-regular'}`}>Ecosystem</a>
 | 
			
		||||
          <a href="/roadmap" className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] == 'roadmap' ? 'font-bold' : 'font-regular'}`}>Roadmap</a>
 | 
			
		||||
          <a
 | 
			
		||||
            href="/about"
 | 
			
		||||
            className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] === 'about' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
          >
 | 
			
		||||
            About
 | 
			
		||||
          </a>
 | 
			
		||||
          <a
 | 
			
		||||
            href="/features"
 | 
			
		||||
            className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] === 'features' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
          >
 | 
			
		||||
            Features
 | 
			
		||||
          </a>
 | 
			
		||||
          <a
 | 
			
		||||
            href="/ecosystem"
 | 
			
		||||
            className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] === 'ecosystem' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
          >
 | 
			
		||||
            Ecosystem
 | 
			
		||||
          </a>
 | 
			
		||||
          <a
 | 
			
		||||
            href="/roadmap"
 | 
			
		||||
            className={`selected:no-underline no-underline text-base text-black ${props.url.pathname.slice(1).split('/')[0] === 'roadmap' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
          >
 | 
			
		||||
            Roadmap
 | 
			
		||||
          </a>
 | 
			
		||||
          <Popover className="relative">
 | 
			
		||||
            <PopoverButton className={`selected:no-underline no-underline p-0 border-none text-base text-black flex items-center gap-x-1 bg-transparent hover:cursor-pointer ${props.url.pathname.slice(1).split('/')[0] == 'docs' ? 'font-bold' : 'font-regular'}`}>
 | 
			
		||||
            <PopoverButton
 | 
			
		||||
              className={`selected:no-underline no-underline p-0 border-none text-base text-black flex items-center gap-x-1 bg-transparent hover:cursor-pointer ${props.url.pathname.slice(1).split('/')[0] === 'docs' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
            >
 | 
			
		||||
              Documentation
 | 
			
		||||
              <ChevronDownIcon aria-hidden="true" className="size-5 flex-none text-black" />
 | 
			
		||||
              <ChevronDownIcon
 | 
			
		||||
                aria-hidden="true"
 | 
			
		||||
                className="size-5 flex-none text-black"
 | 
			
		||||
              />
 | 
			
		||||
            </PopoverButton>
 | 
			
		||||
            <PopoverPanel transition className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in">
 | 
			
		||||
            <PopoverPanel
 | 
			
		||||
              transition
 | 
			
		||||
              className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in"
 | 
			
		||||
            >
 | 
			
		||||
              <div className="p-4">
 | 
			
		||||
                {docs.map((item) => (
 | 
			
		||||
                  <a href={item.href} className="no-underline block font-regular text-white">
 | 
			
		||||
                    <div key={item.name} className="group relative flex items-center gap-x-6 p-2 text-sm/6">
 | 
			
		||||
                  <a
 | 
			
		||||
                    key={item.name}
 | 
			
		||||
                    href={item.href}
 | 
			
		||||
                    className="no-underline block font-regular text-white"
 | 
			
		||||
                  >
 | 
			
		||||
                    <div
 | 
			
		||||
                      key={item.name}
 | 
			
		||||
                      className="group relative flex items-center gap-x-6 p-2 text-sm/6"
 | 
			
		||||
                    >
 | 
			
		||||
                      {item.name}
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </a>
 | 
			
		||||
@@ -81,13 +127,27 @@ export default function Header(props) {
 | 
			
		||||
          <Popover className="relative">
 | 
			
		||||
            <PopoverButton className="flex p-0 border-none items-center gap-x-1 text-base font-regular text-black bg-transparent hover:cursor-pointer ">
 | 
			
		||||
              Connect
 | 
			
		||||
              <ChevronDownIcon aria-hidden="true" className="size-5 flex-none text-black" />
 | 
			
		||||
              <ChevronDownIcon
 | 
			
		||||
                aria-hidden="true"
 | 
			
		||||
                className="size-5 flex-none text-black"
 | 
			
		||||
              />
 | 
			
		||||
            </PopoverButton>
 | 
			
		||||
            <PopoverPanel transition className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in">
 | 
			
		||||
            <PopoverPanel
 | 
			
		||||
              transition
 | 
			
		||||
              className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in"
 | 
			
		||||
            >
 | 
			
		||||
              <div className="p-4">
 | 
			
		||||
                {socials.map((item) => (
 | 
			
		||||
                  <a href={item.href} target="_blank" className="no-underline block font-regular text-white">
 | 
			
		||||
                    <div key={item.name} className="group relative flex items-center gap-x-6 p-2 text-sm/6">
 | 
			
		||||
                  <a
 | 
			
		||||
                    key={item.name}
 | 
			
		||||
                    href={item.href}
 | 
			
		||||
                    target="_blank"
 | 
			
		||||
                    className="no-underline block font-regular text-white"
 | 
			
		||||
                  >
 | 
			
		||||
                    <div
 | 
			
		||||
                      key={item.name}
 | 
			
		||||
                      className="group relative flex items-center gap-x-6 p-2 text-sm/6"
 | 
			
		||||
                    >
 | 
			
		||||
                      {item.name}
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </a>
 | 
			
		||||
@@ -98,13 +158,27 @@ export default function Header(props) {
 | 
			
		||||
          <Popover className="relative">
 | 
			
		||||
            <PopoverButton className="flex p-0 border-none items-center gap-x-1 text-base font-regular text-black bg-transparent hover:cursor-pointer">
 | 
			
		||||
              Explorers
 | 
			
		||||
              <ChevronDownIcon aria-hidden="true" className="size-5 flex-none text-black" />
 | 
			
		||||
              <ChevronDownIcon
 | 
			
		||||
                aria-hidden="true"
 | 
			
		||||
                className="size-5 flex-none text-black"
 | 
			
		||||
              />
 | 
			
		||||
            </PopoverButton>
 | 
			
		||||
            <PopoverPanel transition className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in">
 | 
			
		||||
            <PopoverPanel
 | 
			
		||||
              transition
 | 
			
		||||
              className="absolute left-1/2 z-10 mt-3 w-screen max-w-max -translate-x-1/2 overflow-hidden bg-xahau-gray shadow-lg ring-1 ring-gray-900/5 transition data-closed:translate-y-1 data-closed:opacity-0 data-enter:duration-200 data-enter:ease-out data-leave:duration-150 data-leave:ease-in"
 | 
			
		||||
            >
 | 
			
		||||
              <div className="p-4">
 | 
			
		||||
                {explorers.map((item) => (
 | 
			
		||||
                  <a href={item.href} target="_blank" className="no-underline block font-regular text-white">
 | 
			
		||||
                    <div key={item.name} className="group relative flex items-center gap-x-6 p-2 text-sm/6">
 | 
			
		||||
                  <a
 | 
			
		||||
                    key={item.name}
 | 
			
		||||
                    href={item.href}
 | 
			
		||||
                    target="_blank"
 | 
			
		||||
                    className="no-underline block font-regular text-white"
 | 
			
		||||
                  >
 | 
			
		||||
                    <div
 | 
			
		||||
                      key={item.name}
 | 
			
		||||
                      className="group relative flex items-center gap-x-6 p-2 text-sm/6"
 | 
			
		||||
                    >
 | 
			
		||||
                      {item.name}
 | 
			
		||||
                    </div>
 | 
			
		||||
                  </a>
 | 
			
		||||
@@ -114,15 +188,33 @@ export default function Header(props) {
 | 
			
		||||
          </Popover>
 | 
			
		||||
        </PopoverGroup>
 | 
			
		||||
      </nav>
 | 
			
		||||
      <Dialog open={mobileMenuOpen} onClose={setMobileMenuOpen} className="lg:hidden">
 | 
			
		||||
      <Dialog
 | 
			
		||||
        open={mobileMenuOpen}
 | 
			
		||||
        onClose={setMobileMenuOpen}
 | 
			
		||||
        className="lg:hidden"
 | 
			
		||||
      >
 | 
			
		||||
        <div className="fixed inset-0 z-50" />
 | 
			
		||||
        <DialogPanel className="fixed inset-y-0 right-0 z-50 w-full overflow-y-auto bg-white p-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10">
 | 
			
		||||
          <div className="flex items-center justify-between">
 | 
			
		||||
            <a href="#" className="-m-1.5 p-1.5">
 | 
			
		||||
              <span className="sr-only">Your Company</span>
 | 
			
		||||
              <svg width="222" height="40" viewBox="0 0 222 40" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
			
		||||
                <path d="M196.582 22.9795C196.582 26.6118 195.814 29.7198 194.279 32.3037C192.744 34.8502 190.648 36.7791 187.989 38.0898C185.368 39.3631 182.448 40 179.228 40C176.008 40 173.124 39.3631 170.578 38.0898C168.07 36.7791 166.085 34.8502 164.625 32.3037C163.202 29.7573 162.491 26.6492 162.491 22.9795V22.5312L173.442 21.5986V22.9795C173.442 25.1139 173.93 26.762 174.903 27.9229C175.914 29.0835 177.431 29.664 179.452 29.6641C181.474 29.6641 182.991 29.0838 184.002 27.9229C185.05 26.7245 185.574 25.0765 185.574 22.9795V20.5645L196.582 19.627V22.9795ZM20.4434 10.9014L26.8457 0.00390625H39.3701L26.6777 19.9453L31.6494 27.168L19.6064 28.4375L19.5811 28.4795L19.5449 28.4277L12.9736 39.6064H0.449219L13.3105 19.3281L0 0.00390625H12.9736L20.4434 10.9014ZM40.2129 39.6064H27.2393L23.7236 34.499L35.9688 33.4414L40.2129 39.6064ZM52.8643 39.6064H41.2949L43.7871 32.7656L55.458 31.7578L52.8643 39.6064ZM82.7988 39.6064H71.1738L68.2148 30.6553L79.2041 29.7061L82.7988 39.6064ZM95.71 39.6064H84.7021V29.2314L95.71 28.2803V39.6064ZM95.71 20.374L109.133 18.9795V0.00390625H120.142V39.6064H109.133V27.1367L95.7178 28.2773V20.416L84.7021 21.5762V0.00390625H95.71V20.374ZM133.624 39.6035H122.055L127.171 25.5625L138.591 24.5762L133.624 39.6035ZM163.56 39.6035H151.934L146.733 23.873L146.777 23.8701L143.93 15.3359L143.912 15.3369L142.779 11.9092L141.563 15.585L130.378 16.7637L136.488 0H149.182L163.56 39.6035ZM76.5645 22.4336L65.8691 23.5615L62.0186 11.9121L57.8896 24.4023L46.3936 25.6143L55.7285 0.00390625H68.4219L76.5645 22.4336ZM173.442 12.249L162.491 13.3936V0.00390625H173.442V12.249ZM196.582 9.8291L185.574 10.9805V0.00390625H196.582V9.8291Z" fill="black" />
 | 
			
		||||
                <path d="M220.158 11.4972C220.966 11.8662 221.06 12.946 220.327 13.441L208.951 21.1231C208.218 21.618 207.208 21.1569 207.133 20.293L205.97 6.88506C205.895 6.02116 206.811 5.40245 207.619 5.77138L220.158 11.4972Z" fill="black" />
 | 
			
		||||
            <a href="/" className="-m-1.5 p-1.5">
 | 
			
		||||
              <span className="sr-only">Xahau</span>
 | 
			
		||||
              <svg
 | 
			
		||||
                role="img"
 | 
			
		||||
                aria-label="Xahau Logo"
 | 
			
		||||
                width="222"
 | 
			
		||||
                height="40"
 | 
			
		||||
                viewBox="0 0 222 40"
 | 
			
		||||
                fill="none"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
              >
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M196.582 22.9795C196.582 26.6118 195.814 29.7198 194.279 32.3037C192.744 34.8502 190.648 36.7791 187.989 38.0898C185.368 39.3631 182.448 40 179.228 40C176.008 40 173.124 39.3631 170.578 38.0898C168.07 36.7791 166.085 34.8502 164.625 32.3037C163.202 29.7573 162.491 26.6492 162.491 22.9795V22.5312L173.442 21.5986V22.9795C173.442 25.1139 173.93 26.762 174.903 27.9229C175.914 29.0835 177.431 29.664 179.452 29.6641C181.474 29.6641 182.991 29.0838 184.002 27.9229C185.05 26.7245 185.574 25.0765 185.574 22.9795V20.5645L196.582 19.627V22.9795ZM20.4434 10.9014L26.8457 0.00390625H39.3701L26.6777 19.9453L31.6494 27.168L19.6064 28.4375L19.5811 28.4795L19.5449 28.4277L12.9736 39.6064H0.449219L13.3105 19.3281L0 0.00390625H12.9736L20.4434 10.9014ZM40.2129 39.6064H27.2393L23.7236 34.499L35.9688 33.4414L40.2129 39.6064ZM52.8643 39.6064H41.2949L43.7871 32.7656L55.458 31.7578L52.8643 39.6064ZM82.7988 39.6064H71.1738L68.2148 30.6553L79.2041 29.7061L82.7988 39.6064ZM95.71 39.6064H84.7021V29.2314L95.71 28.2803V39.6064ZM95.71 20.374L109.133 18.9795V0.00390625H120.142V39.6064H109.133V27.1367L95.7178 28.2773V20.416L84.7021 21.5762V0.00390625H95.71V20.374ZM133.624 39.6035H122.055L127.171 25.5625L138.591 24.5762L133.624 39.6035ZM163.56 39.6035H151.934L146.733 23.873L146.777 23.8701L143.93 15.3359L143.912 15.3369L142.779 11.9092L141.563 15.585L130.378 16.7637L136.488 0H149.182L163.56 39.6035ZM76.5645 22.4336L65.8691 23.5615L62.0186 11.9121L57.8896 24.4023L46.3936 25.6143L55.7285 0.00390625H68.4219L76.5645 22.4336ZM173.442 12.249L162.491 13.3936V0.00390625H173.442V12.249ZM196.582 9.8291L185.574 10.9805V0.00390625H196.582V9.8291Z"
 | 
			
		||||
                  fill="black"
 | 
			
		||||
                />
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M220.158 11.4972C220.966 11.8662 221.06 12.946 220.327 13.441L208.951 21.1231C208.218 21.618 207.208 21.1569 207.133 20.293L205.97 6.88506C205.895 6.02116 206.811 5.40245 207.619 5.77138L220.158 11.4972Z"
 | 
			
		||||
                  fill="black"
 | 
			
		||||
                />
 | 
			
		||||
              </svg>
 | 
			
		||||
            </a>
 | 
			
		||||
            <button
 | 
			
		||||
@@ -137,15 +229,45 @@ export default function Header(props) {
 | 
			
		||||
          <div className="mt-6 flow-root">
 | 
			
		||||
            <div className="-my-6 divide-y divide-gray-500/10">
 | 
			
		||||
              <div className="space-y-2 py-6">
 | 
			
		||||
                <a href="/about" className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] == 'about' ? 'font-bold' : 'font-regular'}`}>About</a>
 | 
			
		||||
                <a href="/features" className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] == 'features' ? 'font-bold' : 'font-regular'}`}>Features</a>
 | 
			
		||||
                <a href="/resources/whitepaper" className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] == 'whitepaper' ? 'font-bold' : 'font-regular'}`}>Whitepaper</a>
 | 
			
		||||
                <a href="/ecosystem" className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] == 'ecosystem' ? 'font-bold' : 'font-regular'}`}>Ecosystem</a>
 | 
			
		||||
                <a href="/roadmap" className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] == 'roadmap' ? 'font-bold' : 'font-regular'}`}>Roadmap</a>
 | 
			
		||||
                <a
 | 
			
		||||
                  href="/about"
 | 
			
		||||
                  className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] === 'about' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                >
 | 
			
		||||
                  About
 | 
			
		||||
                </a>
 | 
			
		||||
                <a
 | 
			
		||||
                  href="/features"
 | 
			
		||||
                  className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] === 'features' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                >
 | 
			
		||||
                  Features
 | 
			
		||||
                </a>
 | 
			
		||||
                <a
 | 
			
		||||
                  href="/resources/whitepaper"
 | 
			
		||||
                  className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] === 'whitepaper' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                >
 | 
			
		||||
                  Whitepaper
 | 
			
		||||
                </a>
 | 
			
		||||
                <a
 | 
			
		||||
                  href="/ecosystem"
 | 
			
		||||
                  className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] === 'ecosystem' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                >
 | 
			
		||||
                  Ecosystem
 | 
			
		||||
                </a>
 | 
			
		||||
                <a
 | 
			
		||||
                  href="/roadmap"
 | 
			
		||||
                  className={`selected:no-underline no-underline -mx-3 block rounded-lg px-3 py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black ${props.url.pathname.slice(1).split('/')[0] === 'roadmap' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                >
 | 
			
		||||
                  Roadmap
 | 
			
		||||
                </a>
 | 
			
		||||
                <Disclosure as="div" className="-mx-3">
 | 
			
		||||
                  <DisclosureButton className={`selected:no-underline no-underline border-none block rounded-lg py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black bg-transparent group flex w-full items-center justify-between pr-3.5 pl-3 hover:bg-gray-50 ${props.url.pathname.slice(1).split('/')[0] == 'docs' ? 'font-bold' : 'font-regular'}`}>
 | 
			
		||||
                  <DisclosureButton
 | 
			
		||||
                    className={`selected:no-underline no-underline border-none block rounded-lg py-2 text-base/7 text-base/7 hover:bg-gray-50 text-black bg-transparent group flex w-full items-center justify-between pr-3.5 pl-3 hover:bg-gray-50 ${props.url.pathname.slice(1).split('/')[0] === 'docs' ? 'font-bold' : 'font-regular'}`}
 | 
			
		||||
                  >
 | 
			
		||||
                    Documentation
 | 
			
		||||
                    <ChevronDownIcon aria-hidden="true" className="size-5 flex-none group-data-open:rotate-180" />
 | 
			
		||||
                    <ChevronDownIcon
 | 
			
		||||
                      aria-hidden="true"
 | 
			
		||||
                      className="size-5 flex-none group-data-open:rotate-180"
 | 
			
		||||
                    />
 | 
			
		||||
                  </DisclosureButton>
 | 
			
		||||
                  <DisclosurePanel className="mt-2 space-y-2">
 | 
			
		||||
                    {[...docs].map((item) => (
 | 
			
		||||
@@ -163,7 +285,10 @@ export default function Header(props) {
 | 
			
		||||
                <Disclosure as="div" className="-mx-3">
 | 
			
		||||
                  <DisclosureButton className="border-none bg-transparent group flex w-full items-center justify-between rounded-lg py-2 pr-3.5 pl-3 text-base/7 font-regular text-black hover:bg-gray-50">
 | 
			
		||||
                    Connect
 | 
			
		||||
                    <ChevronDownIcon aria-hidden="true" className="size-5 flex-none group-data-open:rotate-180" />
 | 
			
		||||
                    <ChevronDownIcon
 | 
			
		||||
                      aria-hidden="true"
 | 
			
		||||
                      className="size-5 flex-none group-data-open:rotate-180"
 | 
			
		||||
                    />
 | 
			
		||||
                  </DisclosureButton>
 | 
			
		||||
                  <DisclosurePanel className="mt-2 space-y-2">
 | 
			
		||||
                    {[...socials].map((item) => (
 | 
			
		||||
@@ -182,7 +307,10 @@ export default function Header(props) {
 | 
			
		||||
                <Disclosure as="div" className="-mx-3">
 | 
			
		||||
                  <DisclosureButton className="border-none bg-transparent group flex w-full items-center justify-between rounded-lg py-2 pr-3.5 pl-3 text-base/7 font-regular text-black hover:bg-gray-50">
 | 
			
		||||
                    Explorers
 | 
			
		||||
                    <ChevronDownIcon aria-hidden="true" className="size-5 flex-none group-data-open:rotate-180" />
 | 
			
		||||
                    <ChevronDownIcon
 | 
			
		||||
                      aria-hidden="true"
 | 
			
		||||
                      className="size-5 flex-none group-data-open:rotate-180"
 | 
			
		||||
                    />
 | 
			
		||||
                  </DisclosureButton>
 | 
			
		||||
                  <DisclosurePanel className="mt-2 space-y-2">
 | 
			
		||||
                    {[...explorers].map((item) => (
 | 
			
		||||
 
 | 
			
		||||
@@ -1,49 +1,50 @@
 | 
			
		||||
---
 | 
			
		||||
const { class: className, ...rest } = Astro.props
 | 
			
		||||
import { Image } from 'astro:assets';
 | 
			
		||||
import gem1 from '../assets/gems/1.png';
 | 
			
		||||
import gem2 from '../assets/gems/2.png';
 | 
			
		||||
import gem3 from '../assets/gems/3.png';
 | 
			
		||||
import gem4 from '../assets/gems/4.png';
 | 
			
		||||
import gem5 from '../assets/gems/5.png';
 | 
			
		||||
import gem6 from '../assets/gems/6.png';
 | 
			
		||||
import gem7 from '../assets/gems/7.png';
 | 
			
		||||
import gem8 from '../assets/gems/8.png';
 | 
			
		||||
import gem9 from '../assets/gems/9.png';
 | 
			
		||||
import gem10 from '../assets/gems/10.png';
 | 
			
		||||
import gem11 from '../assets/gems/11.png';
 | 
			
		||||
import gem12 from '../assets/gems/12.png';
 | 
			
		||||
import gem13 from '../assets/gems/13.png';
 | 
			
		||||
import gem14 from '../assets/gems/14.png';
 | 
			
		||||
import gem15 from '../assets/gems/15.png';
 | 
			
		||||
import gem16 from '../assets/gems/16.png';
 | 
			
		||||
import gem17 from '../assets/gems/17.png';
 | 
			
		||||
 | 
			
		||||
import { Image } from 'astro:assets'
 | 
			
		||||
import gem1 from '../assets/gems/1.png'
 | 
			
		||||
import gem2 from '../assets/gems/2.png'
 | 
			
		||||
import gem3 from '../assets/gems/3.png'
 | 
			
		||||
import gem4 from '../assets/gems/4.png'
 | 
			
		||||
import gem5 from '../assets/gems/5.png'
 | 
			
		||||
import gem6 from '../assets/gems/6.png'
 | 
			
		||||
import gem7 from '../assets/gems/7.png'
 | 
			
		||||
import gem8 from '../assets/gems/8.png'
 | 
			
		||||
import gem9 from '../assets/gems/9.png'
 | 
			
		||||
import gem10 from '../assets/gems/10.png'
 | 
			
		||||
import gem11 from '../assets/gems/11.png'
 | 
			
		||||
import gem12 from '../assets/gems/12.png'
 | 
			
		||||
import gem13 from '../assets/gems/13.png'
 | 
			
		||||
import gem14 from '../assets/gems/14.png'
 | 
			
		||||
import gem15 from '../assets/gems/15.png'
 | 
			
		||||
import gem16 from '../assets/gems/16.png'
 | 
			
		||||
import gem17 from '../assets/gems/17.png'
 | 
			
		||||
 | 
			
		||||
const gemMap = {
 | 
			
		||||
  "1": gem1,
 | 
			
		||||
  "2": gem2,
 | 
			
		||||
  "3": gem3,
 | 
			
		||||
  "4": gem4,
 | 
			
		||||
  "5": gem5,
 | 
			
		||||
  "6": gem6,
 | 
			
		||||
  "7": gem7,
 | 
			
		||||
  "8": gem8,
 | 
			
		||||
  "9": gem9,
 | 
			
		||||
  "10": gem10,
 | 
			
		||||
  "11": gem11,
 | 
			
		||||
  "12": gem12,
 | 
			
		||||
  "13": gem13,
 | 
			
		||||
  "14": gem14,
 | 
			
		||||
  "15": gem15,
 | 
			
		||||
  "16": gem16,
 | 
			
		||||
  "17": gem17,
 | 
			
		||||
};
 | 
			
		||||
  '1': gem1,
 | 
			
		||||
  '2': gem2,
 | 
			
		||||
  '3': gem3,
 | 
			
		||||
  '4': gem4,
 | 
			
		||||
  '5': gem5,
 | 
			
		||||
  '6': gem6,
 | 
			
		||||
  '7': gem7,
 | 
			
		||||
  '8': gem8,
 | 
			
		||||
  '9': gem9,
 | 
			
		||||
  '10': gem10,
 | 
			
		||||
  '11': gem11,
 | 
			
		||||
  '12': gem12,
 | 
			
		||||
  '13': gem13,
 | 
			
		||||
  '14': gem14,
 | 
			
		||||
  '15': gem15,
 | 
			
		||||
  '16': gem16,
 | 
			
		||||
  '17': gem17,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const gem = gemMap[Astro.props.gem as keyof typeof gemMap] || gem1;
 | 
			
		||||
const gem = gemMap[Astro.props.gem as keyof typeof gemMap] || gem1
 | 
			
		||||
 | 
			
		||||
var gemSize = "size-80";
 | 
			
		||||
if (Astro.props.gemSize && Astro.props.gemSize === "large") {
 | 
			
		||||
    gemSize = "size-120 -top-40";
 | 
			
		||||
var gemSize = 'size-80'
 | 
			
		||||
if (Astro.props.gemSize && Astro.props.gemSize === 'large') {
 | 
			
		||||
  gemSize = 'size-120 -top-40'
 | 
			
		||||
}
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
import { defineCollection } from 'astro:content';
 | 
			
		||||
import { docsLoader } from '@astrojs/starlight/loaders';
 | 
			
		||||
import { docsSchema } from '@astrojs/starlight/schema';
 | 
			
		||||
import { defineCollection } from 'astro:content'
 | 
			
		||||
import { docsLoader } from '@astrojs/starlight/loaders'
 | 
			
		||||
import { docsSchema } from '@astrojs/starlight/schema'
 | 
			
		||||
 | 
			
		||||
export const collections = {
 | 
			
		||||
  docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,16 @@
 | 
			
		||||
---
 | 
			
		||||
import Header from '../components/Header.jsx';
 | 
			
		||||
import Footer from '../components/Footer.astro';
 | 
			
		||||
import CookieConsent from '../components/CookieConsent.astro';
 | 
			
		||||
import CookieConsent from '../components/CookieConsent.astro'
 | 
			
		||||
import Footer from '../components/Footer.astro'
 | 
			
		||||
import Header from '../components/Header.jsx'
 | 
			
		||||
 | 
			
		||||
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
 | 
			
		||||
const socialImageURL = new URL('/xahau-logo.png', Astro.site);
 | 
			
		||||
const title = Astro.props.frontmatter?.title ? `Xahau: ${Astro.props.frontmatter?.title}` : 'Xahau';
 | 
			
		||||
const description = Astro.props.frontmatter?.description ? Astro.props.frontmatter?.description : 'Xahau is a blockchain for the real world. It is a smart blockchain with account-based programmability. It is cheap and fast by design. It is built for the real world.';
 | 
			
		||||
const canonicalURL = new URL(Astro.url.pathname, Astro.site)
 | 
			
		||||
const socialImageURL = new URL('/xahau-logo.png', Astro.site)
 | 
			
		||||
const title = Astro.props.frontmatter?.title
 | 
			
		||||
  ? `Xahau: ${Astro.props.frontmatter?.title}`
 | 
			
		||||
  : 'Xahau'
 | 
			
		||||
const description = Astro.props.frontmatter?.description
 | 
			
		||||
  ? Astro.props.frontmatter?.description
 | 
			
		||||
  : 'Xahau is a blockchain for the real world. It is a smart blockchain with account-based programmability. It is cheap and fast by design. It is built for the real world.'
 | 
			
		||||
---
 | 
			
		||||
<html lang="en">
 | 
			
		||||
  <head>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
import '../styles/docs.css';
 | 
			
		||||
import Header from '../components/Header.jsx';
 | 
			
		||||
import Footer from '../components/Footer.astro';
 | 
			
		||||
import CookieConsent from '../components/CookieConsent.astro';
 | 
			
		||||
import DocsMobileMenuToggle from '../components/DocsMobileMenuToggle.astro';
 | 
			
		||||
import '../styles/docs.css'
 | 
			
		||||
import CookieConsent from '../components/CookieConsent.astro'
 | 
			
		||||
import DocsMobileMenuToggle from '../components/DocsMobileMenuToggle.astro'
 | 
			
		||||
import Footer from '../components/Footer.astro'
 | 
			
		||||
import Header from '../components/Header.jsx'
 | 
			
		||||
 | 
			
		||||
const { hasSidebar } = Astro.locals.starlightRoute;
 | 
			
		||||
const { hasSidebar } = Astro.locals.starlightRoute
 | 
			
		||||
---
 | 
			
		||||
<link href="https://fonts.googleapis.com/css2?family=Onest:wght@400;700&display=swap" rel="stylesheet" />
 | 
			
		||||
<div class="font-[Onest] bg-xahau-background min-h-screen flex flex-col">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,9 @@
 | 
			
		||||
---
 | 
			
		||||
import '../styles/main.css';
 | 
			
		||||
import BaseLayout from '../layouts/BaseLayout.astro';
 | 
			
		||||
import worldmap from '../assets/worldmap.svg';
 | 
			
		||||
const { frontmatter } = Astro.props;
 | 
			
		||||
import '../styles/main.css'
 | 
			
		||||
import worldmap from '../assets/worldmap.svg'
 | 
			
		||||
import BaseLayout from '../layouts/BaseLayout.astro'
 | 
			
		||||
 | 
			
		||||
const { frontmatter } = Astro.props
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<BaseLayout frontmatter={frontmatter}>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
import '../styles/main.css';
 | 
			
		||||
import BaseLayout from '../layouts/BaseLayout.astro';
 | 
			
		||||
const { frontmatter } = Astro.props;
 | 
			
		||||
import '../styles/main.css'
 | 
			
		||||
import BaseLayout from '../layouts/BaseLayout.astro'
 | 
			
		||||
 | 
			
		||||
const { frontmatter } = Astro.props
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
<BaseLayout frontmatter={frontmatter}>
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,30 +1,30 @@
 | 
			
		||||
@layer base, starlight, theme, components, utilities;
 | 
			
		||||
 | 
			
		||||
@import 'tailwindcss/theme.css' layer(theme);
 | 
			
		||||
@import 'tailwindcss/utilities.css' layer(utilities);
 | 
			
		||||
@import '../styles/global.css';
 | 
			
		||||
@import "tailwindcss/theme.css" layer(theme);
 | 
			
		||||
@import "tailwindcss/utilities.css" layer(utilities);
 | 
			
		||||
@import "../styles/global.css";
 | 
			
		||||
 | 
			
		||||
header * {
 | 
			
		||||
	line-height: 1.5;
 | 
			
		||||
  line-height: 1.5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
header img {
 | 
			
		||||
	display: block;
 | 
			
		||||
	vertical-align: middle;
 | 
			
		||||
  display: block;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Light mode colors. */
 | 
			
		||||
:root {
 | 
			
		||||
	--sl-color-accent-low: #c3e0c9;
 | 
			
		||||
	--sl-color-accent: #007b3d;
 | 
			
		||||
	--sl-color-accent-high: #003e1b;
 | 
			
		||||
	--sl-color-white: #121a1c;
 | 
			
		||||
	--sl-color-gray-1: #182a2f;
 | 
			
		||||
	--sl-color-gray-2: #2a3b41;
 | 
			
		||||
	--sl-color-gray-3: #495c62;
 | 
			
		||||
	--sl-color-gray-4: #7b8f96;
 | 
			
		||||
	--sl-color-gray-5: #bac4c8;
 | 
			
		||||
	--sl-color-gray-6: #e7eff2;
 | 
			
		||||
	--sl-color-gray-7: #f3f7f9;
 | 
			
		||||
	--sl-color-black: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
  --sl-color-accent-low: #c3e0c9;
 | 
			
		||||
  --sl-color-accent: #007b3d;
 | 
			
		||||
  --sl-color-accent-high: #003e1b;
 | 
			
		||||
  --sl-color-white: #121a1c;
 | 
			
		||||
  --sl-color-gray-1: #182a2f;
 | 
			
		||||
  --sl-color-gray-2: #2a3b41;
 | 
			
		||||
  --sl-color-gray-3: #495c62;
 | 
			
		||||
  --sl-color-gray-4: #7b8f96;
 | 
			
		||||
  --sl-color-gray-5: #bac4c8;
 | 
			
		||||
  --sl-color-gray-6: #e7eff2;
 | 
			
		||||
  --sl-color-gray-7: #f3f7f9;
 | 
			
		||||
  --sl-color-black: #ffffff;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,19 @@
 | 
			
		||||
@theme {
 | 
			
		||||
    --color-xahau-green: #5DE48C;
 | 
			
		||||
    --color-xahau-green-dark: #007b3d;
 | 
			
		||||
    --color-xahau-background: #F7F7F7;
 | 
			
		||||
    --color-xahau-gray: #0F2328;
 | 
			
		||||
    --color-xahau-secondary: #FAD7AE;
 | 
			
		||||
  --color-xahau-green: #5de48c;
 | 
			
		||||
  --color-xahau-green-dark: #007b3d;
 | 
			
		||||
  --color-xahau-background: #f7f7f7;
 | 
			
		||||
  --color-xahau-gray: #0f2328;
 | 
			
		||||
  --color-xahau-secondary: #fad7ae;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
footer a:hover {
 | 
			
		||||
    @apply !underline;
 | 
			
		||||
  @apply !underline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
footer {
 | 
			
		||||
    z-index: 100;
 | 
			
		||||
  z-index: 100;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
* {
 | 
			
		||||
	-webkit-font-smoothing: antialiased;
 | 
			
		||||
}
 | 
			
		||||
  -webkit-font-smoothing: antialiased;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +1,26 @@
 | 
			
		||||
@import "tailwindcss";
 | 
			
		||||
@import '../styles/global.css';
 | 
			
		||||
@import "../styles/global.css";
 | 
			
		||||
 | 
			
		||||
.page-content h1 {
 | 
			
		||||
    @apply text-3xl font-bold mb-2 mt-24;
 | 
			
		||||
  @apply text-3xl font-bold mb-2 mt-24;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-content h2 {
 | 
			
		||||
    @apply text-2xl font-bold mb-2 mt-12;
 | 
			
		||||
  @apply text-2xl font-bold mb-2 mt-12;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-content h3 {
 | 
			
		||||
    @apply text-xl font-bold mb-2 mt-6;
 | 
			
		||||
  @apply text-xl font-bold mb-2 mt-6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-content p {
 | 
			
		||||
    @apply text-base pb-2;
 | 
			
		||||
  @apply text-base pb-2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-content a {
 | 
			
		||||
    @apply text-xahau-green-dark underline;
 | 
			
		||||
  @apply text-xahau-green-dark underline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    .page-content a:hover {
 | 
			
		||||
        @apply text-black
 | 
			
		||||
    }
 | 
			
		||||
.page-content a:hover {
 | 
			
		||||
  @apply text-black;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user