Add Pezkuwi SDK UI - Polkadot.js Apps clone

- Clone Polkadot.js Apps repository
- Update package.json with Pezkuwi branding
- Add Pezkuwi endpoint to production chains (wss://pezkuwichain.app:9944)
- Create comprehensive README for SDK UI
- Set up project structure with all packages

Next steps:
- Apply Kurdistan colors (Kesk, Sor, Zer, Spi + Black) to UI theme
- Replace logos with Pezkuwi branding
- Test build and deployment
This commit is contained in:
Claude
2025-11-14 00:55:17 +00:00
parent c48ded7ff2
commit c71ddb6e0d
5836 changed files with 324981 additions and 17 deletions
@@ -0,0 +1,41 @@
// Copyright 2017-2025 @polkadot/react-hooks authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { QueryableStorageEntry } from '@polkadot/api/types';
import { useEffect, useRef, useState } from 'react';
import { stringify } from '@polkadot/util';
interface Options <T> {
transform?: (value: any[]) => T[];
}
// FIXME This is generic, we cannot really use createNamedHook
export function useMapKeys <T = any> (entry: QueryableStorageEntry<'promise'> | null | false | undefined, params?: unknown[] | null, { transform }: Options<T> = {}, at?: string | null | false): T[] | undefined {
const [state, setState] = useState<T[] | undefined>();
const checkRef = useRef<string | null>(null);
useEffect((): void => {
if (entry && params) {
const check = stringify({ at, params });
if (check !== checkRef.current) {
checkRef.current = check;
(
at && at !== '0'
// eslint-disable-next-line deprecation/deprecation
? entry.keysAt(at, ...params)
: entry.keys(...params)
).then((keys) => setState(
transform
? transform(keys)
: keys as unknown as T[]
)).catch(console.error);
}
}
}, [at, entry, params, transform]);
return state;
}