├── .gitignore ├── .papi ├── descriptors │ ├── .gitignore │ └── package.json ├── metadata │ └── polkadot_people.scale └── polkadot-api.json ├── LICENSE ├── README.md ├── components.json ├── eslint.config.js ├── index.html ├── package.json ├── patches └── react18-json-view.patch ├── pnpm-lock.yaml ├── public ├── .well-known │ └── walletconnect.txt ├── papi_logo-dark.svg ├── papi_logo-light.svg └── vite.svg ├── src ├── App.tsx ├── ThemeProvider.tsx ├── chopsticks │ └── chopsticks.ts ├── codec-components │ ├── BinaryViewCodec │ │ ├── CEnum.tsx │ │ ├── CStruct.tsx │ │ ├── ListComponents.tsx │ │ ├── codec-components.tsx │ │ ├── components.ts │ │ └── index.ts │ ├── EditCodec │ │ ├── CAccountId.tsx │ │ ├── CBytes.tsx │ │ ├── CEnum.tsx │ │ ├── CEthAccount.tsx │ │ ├── CSequence.tsx │ │ ├── CStr.tsx │ │ ├── CStruct.tsx │ │ ├── CTuple.tsx │ │ ├── EditNumber.tsx │ │ ├── Tree │ │ │ ├── CEnum.tsx │ │ │ ├── CStruct.tsx │ │ │ ├── ListComponents.tsx │ │ │ ├── codec-components.tsx │ │ │ ├── components.ts │ │ │ └── index.ts │ │ ├── codec-components.tsx │ │ ├── components.ts │ │ └── index.tsx │ ├── LookupTypeEdit │ │ ├── BinaryDisplay.tsx │ │ ├── FocusPath.tsx │ │ ├── LookupTypeEdit.tsx │ │ ├── binaryDisplay.css │ │ └── index.ts │ ├── ViewCodec │ │ ├── CAccountId.tsx │ │ ├── CBytes.tsx │ │ ├── CEnum.tsx │ │ ├── CStruct.tsx │ │ ├── CopyBinary.tsx │ │ ├── ListComponents.tsx │ │ ├── TitleContext.tsx │ │ ├── codec-components.tsx │ │ ├── components.ts │ │ ├── index.tsx │ │ └── utils.ts │ └── common │ │ ├── ListItem.tsx │ │ ├── Markers.tsx │ │ ├── SubtreeFocus.ts │ │ ├── paths.state.ts │ │ └── scroll.ts ├── components │ ├── AccountIdDisplay.tsx │ ├── ActionButton.tsx │ ├── BinaryEditButton.tsx │ ├── BinaryInput.tsx │ ├── ButtonGroup.tsx │ ├── CircularProgress.tsx │ ├── CommandPopover.tsx │ ├── Copy.tsx │ ├── DocsRenderer.tsx │ ├── EthAccountDisplay.tsx │ ├── EthIdenticon.tsx │ ├── Expand.tsx │ ├── Icons.tsx │ ├── JsonDisplay.tsx │ ├── Loading.tsx │ ├── Modal.tsx │ ├── PolkadotIdenticon.tsx │ ├── Popover.tsx │ ├── Select.tsx │ ├── TextInputField.tsx │ ├── Toggle.tsx │ ├── icons │ │ ├── binary.svg │ │ ├── chopsticks_dark.svg │ │ ├── chopsticks_light.svg │ │ ├── enum.svg │ │ ├── focus.svg │ │ ├── switch_binary.svg │ │ └── walletConnect.svg │ ├── jsonDisplay.css │ ├── modal.css │ ├── ui │ │ ├── accordion.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── command.tsx │ │ ├── dialog.tsx │ │ ├── label.tsx │ │ ├── popover.tsx │ │ ├── radio-group.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── sheet.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ └── tooltip.tsx │ ├── useHeightObserver.ts │ ├── useRefEffect.ts │ ├── useSynchroniseInput.ts │ └── withSuspense.tsx ├── hashParams.tsx ├── index.css ├── lib │ ├── contextState.ts │ ├── externalState.ts │ ├── groupBy.ts │ └── utils.ts ├── main.tsx ├── pages │ ├── Constants.tsx │ ├── Explorer │ │ ├── BlockPopover.tsx │ │ ├── BlockTable.tsx │ │ ├── BlockTime.tsx │ │ ├── Detail │ │ │ ├── BlockBody.tsx │ │ │ ├── BlockDetail.tsx │ │ │ ├── BlockEvents.tsx │ │ │ ├── BlockInfo.tsx │ │ │ ├── BlockState.tsx │ │ │ ├── BlockStorageDiff.tsx │ │ │ ├── Extrinsic.tsx │ │ │ └── index.ts │ │ ├── EpochTime.tsx │ │ ├── EventPopover.tsx │ │ ├── Events.tsx │ │ ├── Explorer.tsx │ │ ├── FinalizingTable.tsx │ │ ├── Summary.tsx │ │ ├── block.state.ts │ │ ├── blockTime.state.ts │ │ ├── events.state.ts │ │ └── index.ts │ ├── Extrinsics │ │ ├── EditMode.tsx │ │ ├── Extrinsics.tsx │ │ ├── JsonMode.tsx │ │ ├── SubmitTx │ │ │ ├── AccountProvider.tsx │ │ │ ├── ExtensionProvider.tsx │ │ │ ├── SubmitTx.tsx │ │ │ └── SubmitTxForm.tsx │ │ ├── index.ts │ │ └── jsonView.css │ ├── Header.tsx │ ├── Metadata │ │ ├── Editor.tsx │ │ ├── Extrinsic.tsx │ │ ├── Lookup.tsx │ │ ├── Metadata.tsx │ │ ├── Pallets.tsx │ │ ├── RuntimeApis.tsx │ │ ├── V15Fields.tsx │ │ └── index.ts │ ├── Network │ │ ├── Network.tsx │ │ └── index.ts │ ├── RpcCalls │ │ ├── RpcCallResults.tsx │ │ ├── RpcCalls.tsx │ │ ├── index.ts │ │ └── rpcCalls.state.ts │ ├── RuntimeCalls │ │ ├── RuntimeCallQuery.tsx │ │ ├── RuntimeCallResults.tsx │ │ ├── RuntimeCalls.tsx │ │ ├── index.ts │ │ └── runtimeCalls.state.ts │ ├── Storage │ │ ├── Storage.tsx │ │ ├── StorageDecode.tsx │ │ ├── StorageQuery.tsx │ │ ├── StorageSet.tsx │ │ ├── StorageSubscriptions.tsx │ │ ├── index.ts │ │ └── storage.state.ts │ └── Transactions │ │ ├── Transaction.tsx │ │ ├── Transactions.tsx │ │ ├── index.ts │ │ └── transactions.state.ts ├── smoldot.ts ├── state │ ├── chains │ │ ├── chain.state.ts │ │ ├── chainspecs │ │ │ ├── acala.ts │ │ │ ├── ajuna.ts │ │ │ ├── astar.ts │ │ │ ├── hydradx.ts │ │ │ ├── invarch.ts │ │ │ ├── kusama.ts │ │ │ ├── kusama_asset_hub.ts │ │ │ ├── kusama_coretime.ts │ │ │ ├── kusama_encointer.ts │ │ │ ├── kusama_people.ts │ │ │ ├── paseo.ts │ │ │ ├── paseo_asset_hub.ts │ │ │ ├── polkadot.ts │ │ │ ├── polkadot_asset_hub.ts │ │ │ ├── polkadot_bridge_hub.ts │ │ │ ├── polkadot_collectives.ts │ │ │ ├── polkadot_coretime.ts │ │ │ ├── polkadot_people.ts │ │ │ ├── westend.ts │ │ │ ├── westend_asset_hub.ts │ │ │ ├── westend_collectives.ts │ │ │ └── westend_people.ts │ │ ├── networks │ │ │ ├── index.ts │ │ │ ├── kusama.json │ │ │ ├── paseo.json │ │ │ ├── polkadot.json │ │ │ └── westend.json │ │ ├── smoldot.ts │ │ └── websocket.ts │ ├── extension-accounts.state.ts │ ├── identity.state.ts │ └── walletconnect.state.ts ├── utils │ ├── byteArray.ts │ ├── cn.ts │ ├── default.tsx │ ├── index.ts │ ├── localStorageSubject.ts │ ├── shape.ts │ ├── short-str.ts │ └── withLogs.ts └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── vercel.json ├── vite.config.ts └── whitelist.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | *.tsbuildinfo 10 | 11 | node_modules 12 | dist 13 | dist-ssr 14 | *.local 15 | 16 | # Editor directories and files 17 | .vscode/* 18 | !.vscode/extensions.json 19 | .idea 20 | .DS_Store 21 | *.suo 22 | *.ntvs* 23 | *.njsproj 24 | *.sln 25 | *.sw? 26 | -------------------------------------------------------------------------------- /.papi/descriptors/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | !package.json -------------------------------------------------------------------------------- /.papi/descriptors/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0-autogenerated.1071370278631255394", 3 | "name": "@polkadot-api/descriptors", 4 | "files": [ 5 | "dist" 6 | ], 7 | "exports": { 8 | ".": { 9 | "types": "./dist/index.d.ts", 10 | "module": "./dist/index.mjs", 11 | "import": "./dist/index.mjs", 12 | "require": "./dist/index.js" 13 | }, 14 | "./package.json": "./package.json" 15 | }, 16 | "main": "./dist/index.js", 17 | "module": "./dist/index.mjs", 18 | "browser": "./dist/index.mjs", 19 | "types": "./dist/index.d.ts", 20 | "sideEffects": false, 21 | "peerDependencies": { 22 | "polkadot-api": ">=1.11.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.papi/metadata/polkadot_people.scale: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/polkadot-api/papi-console/884c1727550dd7a73b24ccb30b75a0e4da13b90b/.papi/metadata/polkadot_people.scale -------------------------------------------------------------------------------- /.papi/polkadot-api.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 0, 3 | "descriptorPath": ".papi/descriptors", 4 | "entries": { 5 | "polkadot_people": { 6 | "chain": "polkadot_people", 7 | "metadata": ".papi/metadata/polkadot_people.scale", 8 | "genesis": "0x67fa177a097bfa18f77ea95ab56e9bcdfeb0e5b8a40e46298bb93e16b6fc5008", 9 | "codeHash": "0x5ad90a21b395a16a6d720983bb9fdd096577710beea33c7882bb61a7518dbb79" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # https://dev.papi.how 2 | 3 | Docs coming soon(ish) 4 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.js", 8 | "css": "src/index.css", 9 | "baseColor": "neutral", 10 | "cssVariables": false, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | } 20 | } -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js" 2 | import globals from "globals" 3 | import reactHooks from "eslint-plugin-react-hooks" 4 | import reactRefresh from "eslint-plugin-react-refresh" 5 | import tseslint from "typescript-eslint" 6 | 7 | export default tseslint.config( 8 | { ignores: ["dist"] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ["**/*.{ts,tsx}"], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | "react-hooks": reactHooks, 18 | "react-refresh": reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | "react-refresh/only-export-components": [ 23 | "warn", 24 | { allowConstantExport: true }, 25 | ], 26 | "@typescript-eslint/no-explicit-any": "off", 27 | "@typescript-eslint/no-unnecessary-type-constraint": "off", 28 | "@typescript-eslint/no-empty-object-type": "off", 29 | "@typescript-eslint/no-unused-vars": [ 30 | "warn", 31 | { 32 | args: "all", 33 | argsIgnorePattern: "^_", 34 | caughtErrors: "all", 35 | caughtErrorsIgnorePattern: "^_", 36 | destructuredArrayIgnorePattern: "^_", 37 | varsIgnorePattern: "^_", 38 | ignoreRestSiblings: true, 39 | }, 40 | ], 41 | "react-refresh/only-export-components": "off", 42 | "prefer-const": "warn", 43 | }, 44 | }, 45 | ) 46 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |{docs[0]}
13 |{d}
29 | ))} 30 |
22 | Status:
23 |
28 | Block: {event.hash.slice(0, 18)}…
29 |
{`${event.event.type}.${event.event.value.type}`}
32 |13 | Version{extrinsic.version.length > 1 ? "s" : ""}:{" "} 14 | {extrinsic.version.join(", ")} 15 |
16 | {"type" in extrinsic && ( 17 |
71 | {shortStr(txHash, 14)}
89 | {getStatus()} 90 |
91 |