├── .changeset ├── README.md ├── config.json ├── famous-cobras-wash.md ├── funny-cooks-burn.md ├── grumpy-walls-deny.md ├── lovely-dancers-tie.md ├── selfish-cobras-tap.md └── shy-garlics-breathe.md ├── .editorconfig ├── .github └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .husky └── pre-commit ├── .node-version ├── .npmignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── Jenkinsfile ├── LICENSE.md ├── README.md ├── apps ├── api │ ├── .editorconfig │ ├── .env │ ├── .gitignore │ ├── .node-version │ ├── .npmignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc │ ├── env.d.ts │ ├── eslint.config.mjs │ ├── next-env.d.ts │ ├── next.config.mjs │ ├── package.json │ ├── src │ │ ├── app │ │ │ └── api │ │ │ │ └── trpc │ │ │ │ └── [trpc] │ │ │ │ └── route.ts │ │ └── config │ │ │ ├── env.base.mjs │ │ │ └── env.server.mjs │ ├── tsconfig.json │ └── vercel.json ├── connector │ ├── .gitignore │ ├── .prettierrc │ ├── .prettierrc.mjs │ ├── CHANGELOG.md │ ├── LICENSE.md │ ├── README.md │ ├── assets │ │ ├── fonts │ │ │ └── Inter.woff2 │ │ ├── icon-connected.png │ │ ├── icon-disconnected.png │ │ ├── icon.png │ │ ├── logo.png │ │ ├── network │ │ │ ├── arbitrum.webp │ │ │ ├── mainnet.webp │ │ │ └── optimism.webp │ │ └── unable-to-connect.png │ ├── eslint.config.mjs │ ├── global.d.ts │ ├── package.json │ ├── postcss.config.js │ ├── shell.nix │ ├── src │ │ ├── _encoded │ │ │ ├── icon-as-metamask.ts │ │ │ └── icon-as-status.ts │ │ ├── background.ts │ │ ├── components │ │ │ ├── connected.tsx │ │ │ ├── download-button.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ ├── mac-os-picker.tsx │ │ │ ├── network.tsx │ │ │ ├── not-connected.tsx │ │ │ ├── pin-instructions.tsx │ │ │ ├── status-tag.tsx │ │ │ └── switch.tsx │ │ ├── config │ │ │ └── index.ts │ │ ├── contents │ │ │ ├── font.css │ │ │ ├── main.ts │ │ │ ├── popup.tsx │ │ │ ├── provider.ts │ │ │ └── proxy.ts │ │ ├── hooks │ │ │ ├── use-desktop-os.ts │ │ │ ├── use-local-storage.tsx │ │ │ └── use-outside-click.ts │ │ ├── lib │ │ │ ├── desktop-client.ts │ │ │ ├── get-favicon-url.ts │ │ │ ├── logger.ts │ │ │ ├── provider-rpc-error.ts │ │ │ └── request-arguments.ts │ │ ├── messages │ │ │ ├── main-message.ts │ │ │ ├── provider-message.ts │ │ │ ├── proxy-message.ts │ │ │ └── service-worker-message.ts │ │ └── style.css │ ├── tailwind.config.ts │ └── tsconfig.json ├── portfolio │ ├── .editorconfig │ ├── .env │ ├── .gitignore │ ├── .node-version │ ├── .npmignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc │ ├── CHANGELOG.md │ ├── README.md │ ├── content │ │ └── legal │ │ │ ├── privacy-policy.md │ │ │ └── terms-of-use.md │ ├── env.d.ts │ ├── eslint.config.mjs │ ├── global.d.ts │ ├── middleware.ts │ ├── next-env.d.ts │ ├── next.config.mjs │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── images │ │ │ ├── providers │ │ │ │ ├── mercuryo.png │ │ │ │ ├── moonpay.png │ │ │ │ └── ramp.png │ │ │ └── tokens │ │ │ │ └── eth.png │ │ └── noise.png │ ├── src │ │ ├── app │ │ │ ├── [address] │ │ │ │ ├── @detail │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── [ticker] │ │ │ │ │ │ │ ├── _components │ │ │ │ │ │ │ │ ├── network-breakdown.tsx │ │ │ │ │ │ │ │ └── token-logo.tsx │ │ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ │ │ ├── not-found.tsx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── _components │ │ │ │ │ │ │ └── chart │ │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ │ ├── content.tsx │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ │ │ │ ├── marker.tsx │ │ │ │ │ │ │ │ └── tooltip.tsx │ │ │ │ │ │ ├── error.tsx │ │ │ │ │ │ ├── hooks │ │ │ │ │ │ │ └── use-token-chart-tooltip.ts │ │ │ │ │ │ ├── not-found.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── collectibles │ │ │ │ │ │ ├── [network] │ │ │ │ │ │ └── [contract] │ │ │ │ │ │ │ └── [id] │ │ │ │ │ │ │ ├── _components │ │ │ │ │ │ │ ├── image-lightbox.tsx │ │ │ │ │ │ │ └── info-card.tsx │ │ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ │ │ ├── not-found.tsx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── error.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ ├── @list │ │ │ │ │ ├── @balance │ │ │ │ │ │ └── default.tsx │ │ │ │ │ ├── @summary │ │ │ │ │ │ └── default.tsx │ │ │ │ │ ├── assets │ │ │ │ │ │ ├── _components │ │ │ │ │ │ │ └── assets-table.tsx │ │ │ │ │ │ ├── default.tsx │ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── collectibles │ │ │ │ │ │ ├── _actions.ts │ │ │ │ │ │ ├── _components │ │ │ │ │ │ │ └── collectibles-table.tsx │ │ │ │ │ │ ├── default.tsx │ │ │ │ │ │ ├── error.tsx │ │ │ │ │ │ ├── loading.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── default.tsx │ │ │ │ │ └── layout.tsx │ │ │ │ ├── @nav │ │ │ │ │ ├── default.tsx │ │ │ │ │ └── loading.tsx │ │ │ │ ├── error.tsx │ │ │ │ └── layout.tsx │ │ │ ├── _actions.ts │ │ │ ├── _components │ │ │ │ ├── _drawer.tsx │ │ │ │ ├── account-emoji-trigger.tsx │ │ │ │ ├── account-menu.tsx │ │ │ │ ├── account-sidenav.tsx │ │ │ │ ├── action-bar.tsx │ │ │ │ ├── action-buttons.tsx │ │ │ │ ├── add-address.tsx │ │ │ │ ├── address-drawer.tsx │ │ │ │ ├── address-section.tsx │ │ │ │ ├── address.tsx │ │ │ │ ├── anchor-link.tsx │ │ │ │ ├── assets │ │ │ │ │ ├── icon.tsx │ │ │ │ │ ├── image.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── loader.ts │ │ │ │ │ ├── screen.tsx │ │ │ │ │ ├── types.ts │ │ │ │ │ └── video.tsx │ │ │ │ ├── balance.tsx │ │ │ │ ├── buy-crypto-drawer.tsx │ │ │ │ ├── charts │ │ │ │ │ ├── utils │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── x-axis.tsx │ │ │ │ ├── color-picker.tsx │ │ │ │ ├── connect-button.tsx │ │ │ │ ├── content │ │ │ │ │ ├── code-block.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── currency-amount.tsx │ │ │ │ ├── delete-address-alert.tsx │ │ │ │ ├── detail-drawer.tsx │ │ │ │ ├── drawer.tsx │ │ │ │ ├── dropdown-sort.tsx │ │ │ │ ├── emoji-picker-input.tsx │ │ │ │ ├── emoji-picker │ │ │ │ │ ├── emoji-button.tsx │ │ │ │ │ ├── emoji-trigger.tsx │ │ │ │ │ ├── emoji-twitter.tsx │ │ │ │ │ ├── hooks │ │ │ │ │ │ └── use-emoji-picker.ts │ │ │ │ │ └── index.tsx │ │ │ │ ├── feature-enabled.tsx │ │ │ │ ├── forms │ │ │ │ │ ├── checkbox.tsx │ │ │ │ │ ├── field.tsx │ │ │ │ │ ├── file-input.tsx │ │ │ │ │ ├── form.tsx │ │ │ │ │ ├── select.tsx │ │ │ │ │ ├── text-area.tsx │ │ │ │ │ └── text-input.tsx │ │ │ │ ├── link.tsx │ │ │ │ ├── navbar.tsx │ │ │ │ ├── network-explorer-logo.tsx │ │ │ │ ├── network-filter.tsx │ │ │ │ ├── network-logo.tsx │ │ │ │ ├── not-allowed.tsx │ │ │ │ ├── onboarding-footer.tsx │ │ │ │ ├── receive-crypto-drawer.tsx │ │ │ │ ├── sidenav.tsx │ │ │ │ ├── tab-link.tsx │ │ │ │ ├── table │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── table.tsx │ │ │ │ ├── tag.tsx │ │ │ │ ├── token-amount.tsx │ │ │ │ └── tooltip.tsx │ │ │ ├── _config.ts │ │ │ ├── _constants.ts │ │ │ ├── _hooks │ │ │ │ ├── use-copy-to-clipboard.ts │ │ │ │ ├── use-current-account.ts │ │ │ │ ├── use-debounce.ts │ │ │ │ ├── use-infinite-loading.ts │ │ │ │ ├── use-intersection-observer.ts │ │ │ │ ├── use-local-storage.ts │ │ │ │ ├── use-media-query.ts │ │ │ │ ├── use-query-state.ts │ │ │ │ ├── use-search-and-sort.ts │ │ │ │ └── use-wallet-accounts.tsx │ │ │ ├── _lib │ │ │ │ ├── feature-flags.ts │ │ │ │ └── plugins │ │ │ │ │ └── remark-raw-document-data.ts │ │ │ ├── _providers │ │ │ │ ├── accounts-context.tsx │ │ │ │ ├── connectkit-provider.tsx │ │ │ │ ├── query-client-provider.tsx │ │ │ │ ├── status-provider.tsx │ │ │ │ └── wagmi-provider.tsx │ │ │ ├── _styles │ │ │ │ └── global.css │ │ │ ├── _utils │ │ │ │ ├── get-color-with-opacity.ts │ │ │ │ ├── get-default-values.ts │ │ │ │ ├── get-legal-document-content.ts │ │ │ │ ├── group-by.ts │ │ │ │ ├── match-search-filter.ts │ │ │ │ ├── read-file.ts │ │ │ │ └── render-text.tsx │ │ │ ├── error.tsx │ │ │ ├── icon.png │ │ │ ├── layout.tsx │ │ │ ├── not-found.tsx │ │ │ └── page.tsx │ │ ├── config │ │ │ ├── env.base.mjs │ │ │ ├── env.client.mjs │ │ │ └── env.server.mjs │ │ └── data │ │ │ └── api.ts │ ├── tailwind.config.ts │ ├── tsconfig.json │ └── vercel.json └── wallet │ ├── .env │ ├── .gitignore │ ├── .prettierrc │ ├── README.md │ ├── env.d.ts │ ├── eslint.config.mjs │ ├── global.d.ts │ ├── package.json │ ├── postcss.config.mjs │ ├── shell.nix │ ├── src │ ├── data │ │ ├── api.test.ts │ │ ├── api.ts │ │ ├── bitcoin │ │ │ ├── bitcoin.ts │ │ │ ├── getblock.ts │ │ │ └── mempool.ts │ │ ├── encoder.ts │ │ ├── ethereum │ │ │ ├── ethereum.ts │ │ │ └── etherscan.ts │ │ ├── keystore.ts │ │ ├── solana │ │ │ └── solana.ts │ │ ├── storage.ts │ │ └── wallet.ts │ ├── entrypoints │ │ ├── background.ts │ │ ├── page │ │ │ └── index.html │ │ ├── popup │ │ │ └── index.html │ │ └── sidepanel │ │ │ └── index.html │ ├── hooks │ │ ├── use-create-wallet.tsx │ │ └── use-import-wallet.tsx │ ├── main.tsx │ ├── modules │ │ └── wallet-core-wasm.ts │ ├── providers │ │ ├── api-client.tsx │ │ ├── query-client.tsx │ │ ├── router.tsx │ │ └── status.tsx │ ├── routeTree.gen.ts │ ├── router.gen.ts │ ├── routes │ │ ├── __root.tsx │ │ ├── index.tsx │ │ ├── onboarding │ │ │ ├── _layout.tsx │ │ │ ├── import.tsx │ │ │ ├── index.tsx │ │ │ └── new.tsx │ │ └── portfolio │ │ │ └── index.tsx │ └── styles │ │ └── global.css │ ├── tailwind.config.ts │ ├── tsconfig.json │ ├── tsr.config.json │ ├── vite.config.ts │ └── wxt.config.ts ├── eslint.config.mjs ├── package.json ├── packages ├── colors │ ├── CHANGELOG.md │ ├── eslint.config.mjs │ ├── package.json │ ├── scripts │ │ └── sync.ts │ ├── src │ │ ├── blur.ts │ │ ├── customisation.ts │ │ ├── danger.ts │ │ ├── index.ts │ │ ├── networks.ts │ │ ├── neutral.ts │ │ ├── security.ts │ │ ├── social.ts │ │ ├── success.ts │ │ └── white.ts │ ├── tsconfig.json │ └── vite.config.ts ├── components │ ├── .env │ ├── .env.development │ ├── .env.production │ ├── .gitignore │ ├── .prettierrc │ ├── .storybook │ │ ├── main.ts │ │ ├── preview-head.html │ │ ├── preview.tsx │ │ └── reset.css │ ├── CHANGELOG.md │ ├── eslint.config.mjs │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ └── assets │ │ │ └── background-blur.png │ ├── scripts │ │ └── storybook.js │ ├── src │ │ ├── avatar │ │ │ ├── avatar.stories.tsx │ │ │ ├── avatar.tsx │ │ │ ├── index.tsx │ │ │ └── utils.tsx │ │ ├── button │ │ │ ├── button.stories.tsx │ │ │ ├── button.tsx │ │ │ └── index.tsx │ │ ├── checkbox │ │ │ ├── checkbox.stories.tsx │ │ │ ├── checkbox.tsx │ │ │ └── index.tsx │ │ ├── colors │ │ │ └── colors.stories.tsx │ │ ├── context-tag │ │ │ ├── context-tag.stories.tsx │ │ │ ├── context-tag.tsx │ │ │ └── index.tsx │ │ ├── counter │ │ │ ├── counter.stories.tsx │ │ │ ├── counter.tsx │ │ │ └── index.tsx │ │ ├── dropdown-button │ │ │ ├── dropdown-button.stories.tsx │ │ │ ├── dropdown-button.tsx │ │ │ └── index.tsx │ │ ├── dropdown-menu │ │ │ ├── dropdown-menu.stories.tsx │ │ │ ├── dropdown-menu.tsx │ │ │ └── index.tsx │ │ ├── icon-button │ │ │ ├── icon-button.stories.tsx │ │ │ ├── icon-button.tsx │ │ │ └── index.tsx │ │ ├── icons │ │ │ └── icons.stories.tsx │ │ ├── index.tsx │ │ ├── input │ │ │ ├── index.tsx │ │ │ ├── input.stories.tsx │ │ │ └── input.tsx │ │ ├── popover │ │ │ ├── index.tsx │ │ │ ├── popover.stories.tsx │ │ │ └── popover.tsx │ │ ├── provider │ │ │ ├── index.tsx │ │ │ └── provider.tsx │ │ ├── segmented-control │ │ │ ├── index.tsx │ │ │ ├── segmented-control.stories.tsx │ │ │ └── segmented-control.tsx │ │ ├── shortcut │ │ │ ├── index.tsx │ │ │ ├── shortcut.stories.tsx │ │ │ └── shortcut.tsx │ │ ├── skeleton │ │ │ ├── index.tsx │ │ │ └── skeleton.tsx │ │ ├── step │ │ │ ├── index.tsx │ │ │ ├── step.stories.tsx │ │ │ └── step.tsx │ │ ├── switch │ │ │ ├── index.tsx │ │ │ ├── switch.stories.tsx │ │ │ └── switch.tsx │ │ ├── tabs │ │ │ ├── index.tsx │ │ │ ├── tabs.stories.tsx │ │ │ └── tabs.tsx │ │ ├── tag │ │ │ ├── index.tsx │ │ │ ├── tag.stories.tsx │ │ │ └── tag.tsx │ │ ├── text │ │ │ ├── index.tsx │ │ │ ├── text.stories.tsx │ │ │ └── text.tsx │ │ ├── toast │ │ │ ├── index.tsx │ │ │ ├── toast-container.tsx │ │ │ ├── toast.stories.tsx │ │ │ └── toast.tsx │ │ ├── tooltip │ │ │ ├── index.tsx │ │ │ ├── tooltip.stories.tsx │ │ │ └── tooltip.tsx │ │ ├── types.ts │ │ └── utils │ │ │ ├── color-tokens.ts │ │ │ └── variants.ts │ ├── tailwind.config.ts │ ├── tsconfig.json │ ├── vercel.json │ └── vite.config.ts ├── eslint-config │ ├── CHANGELOG.md │ ├── eslint.config.mjs │ ├── index.js │ └── package.json ├── icons │ ├── CHANGELOG.md │ ├── eslint.config.mjs │ ├── index.es.js │ ├── index.js │ ├── package.json │ ├── scripts │ │ └── sync.ts │ ├── src │ │ ├── 12 │ │ │ ├── active-icon.tsx │ │ │ ├── active-members-icon.tsx │ │ │ ├── add-circle-icon.tsx │ │ │ ├── add-icon.tsx │ │ │ ├── add-reaction-icon.tsx │ │ │ ├── add-user-icon.tsx │ │ │ ├── advanced-icon.tsx │ │ │ ├── alert-icon.tsx │ │ │ ├── arrow-down-icon.tsx │ │ │ ├── arrow-left-icon.tsx │ │ │ ├── arrow-left-right-icon.tsx │ │ │ ├── arrow-right-icon.tsx │ │ │ ├── arrow-top-icon.tsx │ │ │ ├── block-icon.tsx │ │ │ ├── bold-icon.tsx │ │ │ ├── bullet-list-icon.tsx │ │ │ ├── calendar-icon.tsx │ │ │ ├── camera-icon.tsx │ │ │ ├── cards-icon.tsx │ │ │ ├── check-circle-icon.tsx │ │ │ ├── check-icon.tsx │ │ │ ├── check-large-icon.tsx │ │ │ ├── chevron-down-icon.tsx │ │ │ ├── chevron-left-icon.tsx │ │ │ ├── chevron-right-icon.tsx │ │ │ ├── chevron-top-icon.tsx │ │ │ ├── close-icon.tsx │ │ │ ├── colour-icon.tsx │ │ │ ├── colour-preview-icon.tsx │ │ │ ├── communities-icon.tsx │ │ │ ├── connect-icon.tsx │ │ │ ├── connected-icon.tsx │ │ │ ├── contact-icon.tsx │ │ │ ├── copy-icon.tsx │ │ │ ├── crown-icon.tsx │ │ │ ├── customize-icon.tsx │ │ │ ├── decline-icon.tsx │ │ │ ├── delete-icon.tsx │ │ │ ├── delivered-icon.tsx │ │ │ ├── desktop-icon.tsx │ │ │ ├── diamond-icon.tsx │ │ │ ├── disconnected-icon.tsx │ │ │ ├── done-icon.tsx │ │ │ ├── download-icon.tsx │ │ │ ├── dropdown-icon.tsx │ │ │ ├── edit-icon.tsx │ │ │ ├── external-icon.tsx │ │ │ ├── face-id-icon.tsx │ │ │ ├── fees-icon.tsx │ │ │ ├── flag-icon.tsx │ │ │ ├── flashlight-icon.tsx │ │ │ ├── folder-icon.tsx │ │ │ ├── friend-icon.tsx │ │ │ ├── gas-icon.tsx │ │ │ ├── gavel-icon.tsx │ │ │ ├── git-icon.tsx │ │ │ ├── hide-icon.tsx │ │ │ ├── hold-icon.tsx │ │ │ ├── image-icon.tsx │ │ │ ├── inactive-icon.tsx │ │ │ ├── index.ts │ │ │ ├── info-grey-icon.tsx │ │ │ ├── info-icon.tsx │ │ │ ├── issue-icon.tsx │ │ │ ├── italic-icon.tsx │ │ │ ├── jump-to-icon.tsx │ │ │ ├── key-command-icon.tsx │ │ │ ├── key-control-icon.tsx │ │ │ ├── key-enter-icon.tsx │ │ │ ├── key-icon.tsx │ │ │ ├── key-option-icon.tsx │ │ │ ├── key-shift-icon.tsx │ │ │ ├── key-space-icon.tsx │ │ │ ├── key-tab-icon.tsx │ │ │ ├── keycard-icon.tsx │ │ │ ├── less-icon.tsx │ │ │ ├── link-icon.tsx │ │ │ ├── list-icon.tsx │ │ │ ├── loading-icon.tsx │ │ │ ├── locked-icon.tsx │ │ │ ├── members-icon.tsx │ │ │ ├── mention-icon.tsx │ │ │ ├── milestones-icon.tsx │ │ │ ├── mobile-icon.tsx │ │ │ ├── mutual-contact-icon.tsx │ │ │ ├── negative-icon.tsx │ │ │ ├── negative-state-icon.tsx │ │ │ ├── neutral-icon.tsx │ │ │ ├── notification-badge-icon.tsx │ │ │ ├── numbered-list-icon.tsx │ │ │ ├── off-icon.tsx │ │ │ ├── on-icon.tsx │ │ │ ├── open-state-icon.tsx │ │ │ ├── options-icon.tsx │ │ │ ├── password-icon.tsx │ │ │ ├── pause-icon.tsx │ │ │ ├── pending-icon.tsx │ │ │ ├── pending-state-icon.tsx │ │ │ ├── pick-icon.tsx │ │ │ ├── pin-icon.tsx │ │ │ ├── placeholder-icon.tsx │ │ │ ├── play-icon.tsx │ │ │ ├── positive-icon.tsx │ │ │ ├── positive-state-icon.tsx │ │ │ ├── progress-100-icon.tsx │ │ │ ├── progress-25-icon.tsx │ │ │ ├── progress-50-icon.tsx │ │ │ ├── progress-75-icon.tsx │ │ │ ├── progress-icon.tsx │ │ │ ├── pullup-icon.tsx │ │ │ ├── redo-icon.tsx │ │ │ ├── refresh-icon.tsx │ │ │ ├── remove-icon.tsx │ │ │ ├── remove-user-icon.tsx │ │ │ ├── reveal-icon.tsx │ │ │ ├── revoke-all-icon.tsx │ │ │ ├── scan-icon.tsx │ │ │ ├── search-icon.tsx │ │ │ ├── seed-phrase-icon.tsx │ │ │ ├── sent-icon.tsx │ │ │ ├── share-icon.tsx │ │ │ ├── star-icon.tsx │ │ │ ├── stop-icon.tsx │ │ │ ├── strikethrough-icon.tsx │ │ │ ├── time-icon.tsx │ │ │ ├── time-off-icon.tsx │ │ │ ├── timeout-icon.tsx │ │ │ ├── token-master-icon.tsx │ │ │ ├── touch-id-icon.tsx │ │ │ ├── underline-icon.tsx │ │ │ ├── undo-icon.tsx │ │ │ ├── unlocked-icon.tsx │ │ │ ├── unpin-icon.tsx │ │ │ ├── untrustworthy-icon.tsx │ │ │ ├── verified-icon.tsx │ │ │ ├── volume-icon.tsx │ │ │ ├── volume-max-icon.tsx │ │ │ ├── volume-min-icon.tsx │ │ │ ├── wallet-icon.tsx │ │ │ ├── warning-icon.tsx │ │ │ └── web-icon.tsx │ │ ├── 16 │ │ │ ├── active-icon.tsx │ │ │ ├── active-members-icon.tsx │ │ │ ├── add-icon.tsx │ │ │ ├── add-reaction-icon.tsx │ │ │ ├── add-user-icon.tsx │ │ │ ├── alert-icon.tsx │ │ │ ├── arrow-down-icon.tsx │ │ │ ├── arrow-left-icon.tsx │ │ │ ├── arrow-right-icon.tsx │ │ │ ├── arrow-top-icon.tsx │ │ │ ├── attach-icon.tsx │ │ │ ├── bar-chart-icon.tsx │ │ │ ├── block-icon.tsx │ │ │ ├── bridge-icon.tsx │ │ │ ├── browser-icon.tsx │ │ │ ├── calendar-icon.tsx │ │ │ ├── chart-line-icon.tsx │ │ │ ├── check-circle-icon.tsx │ │ │ ├── check-green-icon.tsx │ │ │ ├── check-icon.tsx │ │ │ ├── chevron-down-icon.tsx │ │ │ ├── chevron-left-icon.tsx │ │ │ ├── chevron-right-icon.tsx │ │ │ ├── chevron-top-icon.tsx │ │ │ ├── chevrons-left-icon.tsx │ │ │ ├── chevrons-right-icon.tsx │ │ │ ├── close-circle-icon.tsx │ │ │ ├── close-icon.tsx │ │ │ ├── collapse-icon.tsx │ │ │ ├── collapse-ls-icon.tsx │ │ │ ├── collapse-rs-icon.tsx │ │ │ ├── communities-icon.tsx │ │ │ ├── connection-icon.tsx │ │ │ ├── contact-book-icon.tsx │ │ │ ├── cover-icon.tsx │ │ │ ├── customize-icon.tsx │ │ │ ├── dark-icon.tsx │ │ │ ├── decline-icon.tsx │ │ │ ├── delete-icon.tsx │ │ │ ├── desktop-icon.tsx │ │ │ ├── done-icon.tsx │ │ │ ├── dropdown-icon.tsx │ │ │ ├── email-icon.tsx │ │ │ ├── expand-ls-icon.tsx │ │ │ ├── expand-rs-icon.tsx │ │ │ ├── external-icon.tsx │ │ │ ├── firmware-icon.tsx │ │ │ ├── focal-point-icon.tsx │ │ │ ├── folder-icon.tsx │ │ │ ├── forward-icon.tsx │ │ │ ├── friend-icon.tsx │ │ │ ├── fullscreen-icon.tsx │ │ │ ├── gif-icon.tsx │ │ │ ├── git-icon.tsx │ │ │ ├── hashtag-icon.tsx │ │ │ ├── history-icon.tsx │ │ │ ├── import-icon.tsx │ │ │ ├── inactive-icon.tsx │ │ │ ├── index.ts │ │ │ ├── info-icon.tsx │ │ │ ├── keycard-icon.tsx │ │ │ ├── light-icon.tsx │ │ │ ├── line-chart-icon.tsx │ │ │ ├── link-icon.tsx │ │ │ ├── locked-icon.tsx │ │ │ ├── logout-icon.tsx │ │ │ ├── members-icon.tsx │ │ │ ├── mention-icon.tsx │ │ │ ├── messages-icon.tsx │ │ │ ├── milestones-icon.tsx │ │ │ ├── mobile-icon.tsx │ │ │ ├── more-icon.tsx │ │ │ ├── mute-icon.tsx │ │ │ ├── negative-icon.tsx │ │ │ ├── negative-state-icon.tsx │ │ │ ├── nft-icon.tsx │ │ │ ├── node-icon.tsx │ │ │ ├── not-started-icon.tsx │ │ │ ├── notification-badge-icon.tsx │ │ │ ├── notifications-unread-icon.tsx │ │ │ ├── offline-icon.tsx │ │ │ ├── offline-left-icon.tsx │ │ │ ├── online-icon.tsx │ │ │ ├── online-left-icon.tsx │ │ │ ├── open-icon.tsx │ │ │ ├── options-icon.tsx │ │ │ ├── pending-state-icon.tsx │ │ │ ├── pending-user-icon.tsx │ │ │ ├── pin-icon.tsx │ │ │ ├── placeholder-icon.tsx │ │ │ ├── positive-icon.tsx │ │ │ ├── positive-state-icon.tsx │ │ │ ├── privacy-icon.tsx │ │ │ ├── profile-icon.tsx │ │ │ ├── progress-icon.tsx │ │ │ ├── pullup-icon.tsx │ │ │ ├── puzzle-icon.tsx │ │ │ ├── reaction-icon.tsx │ │ │ ├── receive-icon.tsx │ │ │ ├── refresh-icon.tsx │ │ │ ├── remove-icon.tsx │ │ │ ├── remove-user-icon.tsx │ │ │ ├── reply-icon.tsx │ │ │ ├── reveal-icon.tsx │ │ │ ├── sad-icon.tsx │ │ │ ├── save-icon.tsx │ │ │ ├── scanning-icon.tsx │ │ │ ├── search-icon.tsx │ │ │ ├── send-icon.tsx │ │ │ ├── share-icon.tsx │ │ │ ├── shell-icon.tsx │ │ │ ├── sort-icon.tsx │ │ │ ├── status-icon-icon.tsx │ │ │ ├── stickers-icon.tsx │ │ │ ├── swap-icon.tsx │ │ │ ├── threads-icon.tsx │ │ │ ├── time-icon.tsx │ │ │ ├── time-off-icon.tsx │ │ │ ├── token-icon.tsx │ │ │ ├── unblock-icon.tsx │ │ │ ├── unlocked-icon.tsx │ │ │ ├── unmute-icon.tsx │ │ │ ├── unpin-icon.tsx │ │ │ ├── unread-icon.tsx │ │ │ ├── volume-icon.tsx │ │ │ ├── volume-max-icon.tsx │ │ │ ├── volume-min-icon.tsx │ │ │ ├── wallet-icon.tsx │ │ │ ├── warning-icon.tsx │ │ │ ├── warning-red-icon.tsx │ │ │ ├── web-icon.tsx │ │ │ └── world-icon.tsx │ │ ├── 20 │ │ │ ├── account-number-icon.tsx │ │ │ ├── active-icon.tsx │ │ │ ├── active-members-icon.tsx │ │ │ ├── activity-center-icon.tsx │ │ │ ├── activity-icon.tsx │ │ │ ├── add-icon.tsx │ │ │ ├── add-reaction-icon.tsx │ │ │ ├── add-sm-icon.tsx │ │ │ ├── add-small-icon.tsx │ │ │ ├── add-time-off-icon.tsx │ │ │ ├── add-token-icon.tsx │ │ │ ├── add-user-icon.tsx │ │ │ ├── advanced-icon.tsx │ │ │ ├── afghanistan-icon.tsx │ │ │ ├── airdrop-icon.tsx │ │ │ ├── alert-icon.tsx │ │ │ ├── alphabetically-icon.tsx │ │ │ ├── android-icon.tsx │ │ │ ├── anonymous-icon.tsx │ │ │ ├── apple-icon.tsx │ │ │ ├── argentina-icon.tsx │ │ │ ├── arrow-down-icon.tsx │ │ │ ├── arrow-left-icon.tsx │ │ │ ├── arrow-right-icon.tsx │ │ │ ├── arrow-top-icon.tsx │ │ │ ├── attach-icon.tsx │ │ │ ├── audio-icon.tsx │ │ │ ├── australia-icon.tsx │ │ │ ├── automatic-icon.tsx │ │ │ ├── backspace-icon.tsx │ │ │ ├── ban-user-icon.tsx │ │ │ ├── block-icon.tsx │ │ │ ├── bold-icon.tsx │ │ │ ├── book-icon.tsx │ │ │ ├── brazil-icon.tsx │ │ │ ├── bridge-blur-icon.tsx │ │ │ ├── bridge-icon.tsx │ │ │ ├── browser-icon.tsx │ │ │ ├── bullet-icon.tsx │ │ │ ├── bullet-list-icon.tsx │ │ │ ├── buy-icon.tsx │ │ │ ├── calendar-icon.tsx │ │ │ ├── camera-icon.tsx │ │ │ ├── card-view-icon.tsx │ │ │ ├── centre-align-icon.tsx │ │ │ ├── chart-icon.tsx │ │ │ ├── chatkey-icon.tsx │ │ │ ├── check-circle-icon.tsx │ │ │ ├── check-icon.tsx │ │ │ ├── checktoken-icon.tsx │ │ │ ├── chevron-down-icon.tsx │ │ │ ├── chevron-left-icon.tsx │ │ │ ├── chevron-right-icon.tsx │ │ │ ├── chevron-top-icon.tsx │ │ │ ├── chevrons-left-icon.tsx │ │ │ ├── chevrons-right-icon.tsx │ │ │ ├── chile-icon.tsx │ │ │ ├── china-icon.tsx │ │ │ ├── chrome-icon.tsx │ │ │ ├── circle-icon.tsx │ │ │ ├── clear-big-icon.tsx │ │ │ ├── clear-icon.tsx │ │ │ ├── close-circle-icon.tsx │ │ │ ├── close-icon.tsx │ │ │ ├── close-mac-os-icon.tsx │ │ │ ├── close-windows-icon.tsx │ │ │ ├── code-block-icon.tsx │ │ │ ├── code-data-icon.tsx │ │ │ ├── code-icon.tsx │ │ │ ├── collapse-icon.tsx │ │ │ ├── collapse-ls-icon.tsx │ │ │ ├── collapse-rs-icon.tsx │ │ │ ├── collapse-topbar-icon.tsx │ │ │ ├── colombia-icon.tsx │ │ │ ├── colour-pick-icon.tsx │ │ │ ├── command-icon.tsx │ │ │ ├── communities-icon.tsx │ │ │ ├── compact-icon.tsx │ │ │ ├── complete-id-icon.tsx │ │ │ ├── confetti-colorful-icon.tsx │ │ │ ├── confetti-icon.tsx │ │ │ ├── connect-icon.tsx │ │ │ ├── connection-icon.tsx │ │ │ ├── contact-book-icon.tsx │ │ │ ├── contact-icon.tsx │ │ │ ├── copy-icon.tsx │ │ │ ├── correct-icon.tsx │ │ │ ├── cross-circle-icon.tsx │ │ │ ├── crown-icon.tsx │ │ │ ├── currency-icon.tsx │ │ │ ├── customize-icon.tsx │ │ │ ├── dapps-icon.tsx │ │ │ ├── dark-icon.tsx │ │ │ ├── dashboard-icon.tsx │ │ │ ├── data-usage-icon.tsx │ │ │ ├── databases-icon.tsx │ │ │ ├── decline-icon.tsx │ │ │ ├── decrease-windows-icon.tsx │ │ │ ├── delete-icon.tsx │ │ │ ├── derivated-path-big-icon.tsx │ │ │ ├── derivated-path-icon.tsx │ │ │ ├── desktop-icon.tsx │ │ │ ├── destroy-icon.tsx │ │ │ ├── disconnect-icon.tsx │ │ │ ├── dock-icon.tsx │ │ │ ├── dominican-icon.tsx │ │ │ ├── done-icon.tsx │ │ │ ├── download-icon.tsx │ │ │ ├── drag-icon.tsx │ │ │ ├── dropdown-icon.tsx │ │ │ ├── duration-icon.tsx │ │ │ ├── edit-icon.tsx │ │ │ ├── email-icon.tsx │ │ │ ├── england-icon.tsx │ │ │ ├── epic-icon.tsx │ │ │ ├── epics-icon.tsx │ │ │ ├── european-union-icon.tsx │ │ │ ├── expand-icon.tsx │ │ │ ├── expand-ls-icon.tsx │ │ │ ├── expand-rs-icon.tsx │ │ │ ├── expand-topbar-icon.tsx │ │ │ ├── external-icon.tsx │ │ │ ├── face-id-icon.tsx │ │ │ ├── faceid-big-icon.tsx │ │ │ ├── faces-icon.tsx │ │ │ ├── favourite-icon.tsx │ │ │ ├── feed-icon.tsx │ │ │ ├── file-icon.tsx │ │ │ ├── firmware-icon.tsx │ │ │ ├── flag-icon.tsx │ │ │ ├── flags-icon.tsx │ │ │ ├── flash-icon.tsx │ │ │ ├── flash-off-icon.tsx │ │ │ ├── flashlight-off-icon.tsx │ │ │ ├── flashlight-on-icon.tsx │ │ │ ├── flip-icon.tsx │ │ │ ├── focus-icon.tsx │ │ │ ├── folder-icon.tsx │ │ │ ├── food-icon.tsx │ │ │ ├── format-icon.tsx │ │ │ ├── forward-icon.tsx │ │ │ ├── france-icon.tsx │ │ │ ├── friend-icon.tsx │ │ │ ├── fullscreen-mac-os-icon.tsx │ │ │ ├── gas-icon.tsx │ │ │ ├── gavel-icon.tsx │ │ │ ├── gif-icon.tsx │ │ │ ├── gift-icon.tsx │ │ │ ├── globe-icon.tsx │ │ │ ├── hashtag-icon.tsx │ │ │ ├── hashtag-square-icon.tsx │ │ │ ├── heart-break-icon.tsx │ │ │ ├── heart-icon.tsx │ │ │ ├── help-icon.tsx │ │ │ ├── hide-icon.tsx │ │ │ ├── hide-password-icon.tsx │ │ │ ├── history-icon.tsx │ │ │ ├── hold-icon.tsx │ │ │ ├── hourglass-icon.tsx │ │ │ ├── hypen-icon.tsx │ │ │ ├── image-icon.tsx │ │ │ ├── import-icon.tsx │ │ │ ├── inactive-icon.tsx │ │ │ ├── incorrect-icon.tsx │ │ │ ├── index.ts │ │ │ ├── info-badge-icon.tsx │ │ │ ├── info-icon.tsx │ │ │ ├── insights-icon.tsx │ │ │ ├── intermediate-circle-icon.tsx │ │ │ ├── italic-icon.tsx │ │ │ ├── italy-icon.tsx │ │ │ ├── justify-icon.tsx │ │ │ ├── key-icon.tsx │ │ │ ├── keyboard-icon.tsx │ │ │ ├── keycard-card-icon.tsx │ │ │ ├── keycard-icon.tsx │ │ │ ├── keycard-logo-icon.tsx │ │ │ ├── keycard-pro-icon.tsx │ │ │ ├── kick-user-icon.tsx │ │ │ ├── labels-icon.tsx │ │ │ ├── language-icon.tsx │ │ │ ├── laptop-icon.tsx │ │ │ ├── left-align-icon.tsx │ │ │ ├── light-icon.tsx │ │ │ ├── link-icon.tsx │ │ │ ├── linux-icon.tsx │ │ │ ├── list-view-collapsed-icon.tsx │ │ │ ├── list-view-icon.tsx │ │ │ ├── loading-icon.tsx │ │ │ ├── locked-icon.tsx │ │ │ ├── log-out-icon.tsx │ │ │ ├── mark-as-read-icon.tsx │ │ │ ├── maximize-windows-icon.tsx │ │ │ ├── media-icon.tsx │ │ │ ├── members-icon.tsx │ │ │ ├── mention-icon.tsx │ │ │ ├── menu-icon.tsx │ │ │ ├── messages-icon.tsx │ │ │ ├── messenger-icon.tsx │ │ │ ├── mexico-icon.tsx │ │ │ ├── milestones-icon.tsx │ │ │ ├── minimize-mac-os-icon.tsx │ │ │ ├── minimize-windows-icon.tsx │ │ │ ├── mint-icon.tsx │ │ │ ├── mobile-icon.tsx │ │ │ ├── move-bottom-icon.tsx │ │ │ ├── move-down-icon.tsx │ │ │ ├── move-top-icon.tsx │ │ │ ├── move-up-icon.tsx │ │ │ ├── multi-profile-icon.tsx │ │ │ ├── muted-icon.tsx │ │ │ ├── mutual-contact-icon.tsx │ │ │ ├── nature-icon.tsx │ │ │ ├── negative-state-icon.tsx │ │ │ ├── netherlands-icon.tsx │ │ │ ├── neutral-icon.tsx │ │ │ ├── new-message-icon.tsx │ │ │ ├── new-window-icon.tsx │ │ │ ├── nft-icon.tsx │ │ │ ├── node-icon.tsx │ │ │ ├── not-started-icon.tsx │ │ │ ├── notification-badge-icon.tsx │ │ │ ├── notifications-icon.tsx │ │ │ ├── notifications-unread-icon.tsx │ │ │ ├── numbered-list-icon.tsx │ │ │ ├── objects-icon.tsx │ │ │ ├── offline-icon.tsx │ │ │ ├── offline-left-icon.tsx │ │ │ ├── online-icon.tsx │ │ │ ├── online-left-icon.tsx │ │ │ ├── open-icon.tsx │ │ │ ├── options-circle-icon.tsx │ │ │ ├── options-icon.tsx │ │ │ ├── org-icon.tsx │ │ │ ├── pallete-icon.tsx │ │ │ ├── password-icon.tsx │ │ │ ├── pause-icon.tsx │ │ │ ├── pause-media-icon.tsx │ │ │ ├── pending-icon.tsx │ │ │ ├── pending-state-icon.tsx │ │ │ ├── pending-user-icon.tsx │ │ │ ├── people-icon.tsx │ │ │ ├── percentage-icon.tsx │ │ │ ├── piggy-bank-icon.tsx │ │ │ ├── pin-icon.tsx │ │ │ ├── placeholder-icon.tsx │ │ │ ├── play-media-icon.tsx │ │ │ ├── plug-icon.tsx │ │ │ ├── popup-icon.tsx │ │ │ ├── portugal-icon.tsx │ │ │ ├── positive-state-icon.tsx │ │ │ ├── privacy-icon.tsx │ │ │ ├── profile-icon.tsx │ │ │ ├── pullup-icon.tsx │ │ │ ├── puzzle-icon.tsx │ │ │ ├── qr-code-icon.tsx │ │ │ ├── quill-pen-icon.tsx │ │ │ ├── reaction-icon.tsx │ │ │ ├── receive-blur-icon.tsx │ │ │ ├── receive-icon.tsx │ │ │ ├── recent-icon.tsx │ │ │ ├── refresh-icon.tsx │ │ │ ├── relaxed-icon.tsx │ │ │ ├── remove-icon.tsx │ │ │ ├── remove-user-icon.tsx │ │ │ ├── reorder-icon.tsx │ │ │ ├── reply-icon.tsx │ │ │ ├── reporting-icon.tsx │ │ │ ├── reveal-icon.tsx │ │ │ ├── reveal-whitelist-icon.tsx │ │ │ ├── revert-icon.tsx │ │ │ ├── review-id-icon.tsx │ │ │ ├── review-request-icon.tsx │ │ │ ├── right-align-icon.tsx │ │ │ ├── rotate-icon.tsx │ │ │ ├── russia-icon.tsx │ │ │ ├── sad-icon.tsx │ │ │ ├── save-icon.tsx │ │ │ ├── scan-big-icon.tsx │ │ │ ├── scan-icon.tsx │ │ │ ├── search-icon.tsx │ │ │ ├── seed-icon.tsx │ │ │ ├── sell-icon.tsx │ │ │ ├── send-audio-icon.tsx │ │ │ ├── send-blur-icon.tsx │ │ │ ├── send-icon.tsx │ │ │ ├── settings-icon.tsx │ │ │ ├── share-icon.tsx │ │ │ ├── shell-icon.tsx │ │ │ ├── shop-icon.tsx │ │ │ ├── signature-icon.tsx │ │ │ ├── sort-icon.tsx │ │ │ ├── south-korea-icon.tsx │ │ │ ├── spain-icon.tsx │ │ │ ├── speed-icon.tsx │ │ │ ├── status-icon-icon.tsx │ │ │ ├── status-icon.tsx │ │ │ ├── status-logo-icon.tsx │ │ │ ├── stickers-icon.tsx │ │ │ ├── stop-media-icon.tsx │ │ │ ├── strikethrough-icon.tsx │ │ │ ├── subscript-icon.tsx │ │ │ ├── superscript-icon.tsx │ │ │ ├── swap-blur-icon.tsx │ │ │ ├── swap-icon.tsx │ │ │ ├── switch-icon.tsx │ │ │ ├── symbols-icon.tsx │ │ │ ├── syncing-icon.tsx │ │ │ ├── table-icon.tsx │ │ │ ├── tablet-icon.tsx │ │ │ ├── tabs-icon.tsx │ │ │ ├── taiwan-icon.tsx │ │ │ ├── teams-icon.tsx │ │ │ ├── threads-icon.tsx │ │ │ ├── time-off-icon.tsx │ │ │ ├── toggle-icon.tsx │ │ │ ├── token-icon.tsx │ │ │ ├── token-master-icon.tsx │ │ │ ├── token-sales-icon.tsx │ │ │ ├── topbar-dock-icon.tsx │ │ │ ├── topbar-icon.tsx │ │ │ ├── touch-id-big-icon.tsx │ │ │ ├── transaction-blur-icon.tsx │ │ │ ├── transaction-icon.tsx │ │ │ ├── translations-icon.tsx │ │ │ ├── travel-icon.tsx │ │ │ ├── ublock-user-icon.tsx │ │ │ ├── unblock-icon.tsx │ │ │ ├── underline-icon.tsx │ │ │ ├── united-arab-emirates-icon.tsx │ │ │ ├── united-kingdom-icon.tsx │ │ │ ├── united-states-icon.tsx │ │ │ ├── unlocked-icon.tsx │ │ │ ├── unpin-icon.tsx │ │ │ ├── unread-icon.tsx │ │ │ ├── untrustworthy-icon.tsx │ │ │ ├── up-to-date-icon.tsx │ │ │ ├── upvote-icon.tsx │ │ │ ├── usb-icon.tsx │ │ │ ├── verified-icon.tsx │ │ │ ├── video-icon.tsx │ │ │ ├── waffle-icon.tsx │ │ │ ├── wallet-icon.tsx │ │ │ ├── warning-icon.tsx │ │ │ ├── web-icon.tsx │ │ │ ├── windows-icon.tsx │ │ │ ├── workstreams-icon.tsx │ │ │ ├── world-icon.tsx │ │ │ ├── zoom-in-icon.tsx │ │ │ └── zoom-out-icon.tsx │ │ ├── reactions │ │ │ ├── angry-icon.tsx │ │ │ ├── index.ts │ │ │ ├── laugh-icon.tsx │ │ │ ├── love-icon.tsx │ │ │ ├── sad-icon.tsx │ │ │ ├── thumbs-down-icon.tsx │ │ │ └── thumbs-up-icon.tsx │ │ └── social │ │ │ ├── arbiscan-icon.tsx │ │ │ ├── discord-icon.tsx │ │ │ ├── etherscan-icon.tsx │ │ │ ├── facebook-icon.tsx │ │ │ ├── flickr-icon.tsx │ │ │ ├── github-icon.tsx │ │ │ ├── index.ts │ │ │ ├── intagram-icon.tsx │ │ │ ├── lens-icon.tsx │ │ │ ├── linkedin-icon.tsx │ │ │ ├── mirror-icon.tsx │ │ │ ├── opensea-icon.tsx │ │ │ ├── pinterest-icon.tsx │ │ │ ├── rarible-icon.tsx │ │ │ ├── reddit-icon.tsx │ │ │ ├── snapchat-icon.tsx │ │ │ ├── spotify-icon.tsx │ │ │ ├── status-icon.tsx │ │ │ ├── superare-icon.tsx │ │ │ ├── tumblr-icon.tsx │ │ │ ├── twitch-icon.tsx │ │ │ ├── twitter-icon.tsx │ │ │ └── youtube-icon.tsx │ ├── svg │ │ ├── 12 │ │ │ ├── active-icon.svg │ │ │ ├── active-members-icon.svg │ │ │ ├── add-circle-icon.svg │ │ │ ├── add-icon.svg │ │ │ ├── add-reaction-icon.svg │ │ │ ├── add-user-icon.svg │ │ │ ├── advanced-icon.svg │ │ │ ├── alert-icon.svg │ │ │ ├── arrow-down-icon.svg │ │ │ ├── arrow-left&right-icon.svg │ │ │ ├── arrow-left-icon.svg │ │ │ ├── arrow-right-icon.svg │ │ │ ├── arrow-top-icon.svg │ │ │ ├── block-icon.svg │ │ │ ├── bold-icon.svg │ │ │ ├── bullet-list-icon.svg │ │ │ ├── calendar-icon.svg │ │ │ ├── camera-icon.svg │ │ │ ├── cards-icon.svg │ │ │ ├── check-circle-icon.svg │ │ │ ├── check-icon.svg │ │ │ ├── check-large-icon.svg │ │ │ ├── chevron-down-icon.svg │ │ │ ├── chevron-left-icon.svg │ │ │ ├── chevron-right-icon.svg │ │ │ ├── chevron-top-icon.svg │ │ │ ├── close-icon.svg │ │ │ ├── colour-icon.svg │ │ │ ├── colour-preview-icon.svg │ │ │ ├── communities-icon.svg │ │ │ ├── connect-icon.svg │ │ │ ├── connected-icon.svg │ │ │ ├── contact-icon.svg │ │ │ ├── copy-icon.svg │ │ │ ├── crown-icon.svg │ │ │ ├── customize-icon.svg │ │ │ ├── decline-icon.svg │ │ │ ├── delete-icon.svg │ │ │ ├── delivered-icon.svg │ │ │ ├── desktop-icon.svg │ │ │ ├── diamond-icon.svg │ │ │ ├── disconnected-icon.svg │ │ │ ├── done-icon.svg │ │ │ ├── download-icon.svg │ │ │ ├── dropdown-icon.svg │ │ │ ├── edit-icon.svg │ │ │ ├── external-icon.svg │ │ │ ├── face-id-icon.svg │ │ │ ├── fees-icon.svg │ │ │ ├── flag-icon.svg │ │ │ ├── flashlight-icon.svg │ │ │ ├── folder-icon.svg │ │ │ ├── friend-icon.svg │ │ │ ├── gas-icon.svg │ │ │ ├── gavel-icon.svg │ │ │ ├── git-icon.svg │ │ │ ├── hide-icon.svg │ │ │ ├── hold-icon.svg │ │ │ ├── image-icon.svg │ │ │ ├── inactive-icon.svg │ │ │ ├── info-grey-icon.svg │ │ │ ├── info-icon.svg │ │ │ ├── issue-icon.svg │ │ │ ├── italic-icon.svg │ │ │ ├── jump-to-icon.svg │ │ │ ├── key-command-icon.svg │ │ │ ├── key-control-icon.svg │ │ │ ├── key-enter-icon.svg │ │ │ ├── key-icon.svg │ │ │ ├── key-option-icon.svg │ │ │ ├── key-shift-icon.svg │ │ │ ├── key-space-icon.svg │ │ │ ├── key-tab-icon.svg │ │ │ ├── keycard-icon.svg │ │ │ ├── less-icon.svg │ │ │ ├── link-icon.svg │ │ │ ├── list-icon.svg │ │ │ ├── loading-icon.svg │ │ │ ├── locked-icon.svg │ │ │ ├── members-icon.svg │ │ │ ├── mention-icon.svg │ │ │ ├── milestones-icon.svg │ │ │ ├── mobile-icon.svg │ │ │ ├── mutual-contact-icon.svg │ │ │ ├── negative-icon.svg │ │ │ ├── negative-state-icon.svg │ │ │ ├── neutral-icon.svg │ │ │ ├── notification-badge-icon.svg │ │ │ ├── numbered-list-icon.svg │ │ │ ├── off-icon.svg │ │ │ ├── on-icon.svg │ │ │ ├── open-state-icon.svg │ │ │ ├── options-icon.svg │ │ │ ├── password-icon.svg │ │ │ ├── pause-icon.svg │ │ │ ├── pending-icon.svg │ │ │ ├── pending-state-icon.svg │ │ │ ├── pick-icon.svg │ │ │ ├── pin-icon.svg │ │ │ ├── placeholder-icon.svg │ │ │ ├── play-icon.svg │ │ │ ├── positive-icon.svg │ │ │ ├── positive-state-icon.svg │ │ │ ├── progress-100-icon.svg │ │ │ ├── progress-25-icon.svg │ │ │ ├── progress-50-icon.svg │ │ │ ├── progress-75-icon.svg │ │ │ ├── progress-icon.svg │ │ │ ├── pullup-icon.svg │ │ │ ├── redo-icon.svg │ │ │ ├── refresh-icon.svg │ │ │ ├── remove-icon.svg │ │ │ ├── remove-user-icon.svg │ │ │ ├── reveal-icon.svg │ │ │ ├── revoke-all-icon.svg │ │ │ ├── scan-icon.svg │ │ │ ├── search-icon.svg │ │ │ ├── seed-phrase-icon.svg │ │ │ ├── sent-icon.svg │ │ │ ├── share-icon.svg │ │ │ ├── star-icon.svg │ │ │ ├── stop-icon.svg │ │ │ ├── strikethrough-icon.svg │ │ │ ├── time-icon.svg │ │ │ ├── time-off-icon.svg │ │ │ ├── timeout-icon.svg │ │ │ ├── token-master-icon.svg │ │ │ ├── touch-id-icon.svg │ │ │ ├── underline-icon.svg │ │ │ ├── undo-icon.svg │ │ │ ├── unlocked-icon.svg │ │ │ ├── unpin-icon.svg │ │ │ ├── untrustworthy-icon.svg │ │ │ ├── verified-icon.svg │ │ │ ├── volume-icon.svg │ │ │ ├── volume-max-icon.svg │ │ │ ├── volume-min-icon.svg │ │ │ ├── wallet-icon.svg │ │ │ ├── warning-icon.svg │ │ │ └── web-icon.svg │ │ ├── 16 │ │ │ ├── active-icon.svg │ │ │ ├── active-members-icon.svg │ │ │ ├── add-icon.svg │ │ │ ├── add-reaction-icon.svg │ │ │ ├── add-user-icon.svg │ │ │ ├── alert-icon.svg │ │ │ ├── arrow-down-icon.svg │ │ │ ├── arrow-left-icon.svg │ │ │ ├── arrow-right-icon.svg │ │ │ ├── arrow-top-icon.svg │ │ │ ├── attach-icon.svg │ │ │ ├── bar-chart-icon.svg │ │ │ ├── block-icon.svg │ │ │ ├── bridge-icon.svg │ │ │ ├── browser-icon.svg │ │ │ ├── calendar-icon.svg │ │ │ ├── chart-line-icon.svg │ │ │ ├── check-circle-icon.svg │ │ │ ├── check-green-icon.svg │ │ │ ├── check-icon.svg │ │ │ ├── chevron-down-icon.svg │ │ │ ├── chevron-left-icon.svg │ │ │ ├── chevron-right-icon.svg │ │ │ ├── chevron-top-icon.svg │ │ │ ├── chevrons-left-icon.svg │ │ │ ├── chevrons-right-icon.svg │ │ │ ├── close-circle-icon.svg │ │ │ ├── close-icon.svg │ │ │ ├── collapse-icon.svg │ │ │ ├── collapse-ls-icon.svg │ │ │ ├── collapse-rs-icon.svg │ │ │ ├── communities-icon.svg │ │ │ ├── connection-icon.svg │ │ │ ├── contact-book-icon.svg │ │ │ ├── cover-icon.svg │ │ │ ├── customize-icon.svg │ │ │ ├── dark-icon.svg │ │ │ ├── decline-icon.svg │ │ │ ├── delete-icon.svg │ │ │ ├── desktop-icon.svg │ │ │ ├── done-icon.svg │ │ │ ├── dropdown-icon.svg │ │ │ ├── email-icon.svg │ │ │ ├── expand-ls-icon.svg │ │ │ ├── expand-rs-icon.svg │ │ │ ├── external-icon.svg │ │ │ ├── firmware-icon.svg │ │ │ ├── focal-point-icon.svg │ │ │ ├── folder-icon.svg │ │ │ ├── forward-icon.svg │ │ │ ├── friend-icon.svg │ │ │ ├── fullscreen-icon.svg │ │ │ ├── gif-icon.svg │ │ │ ├── git-icon.svg │ │ │ ├── hashtag-icon.svg │ │ │ ├── history-icon.svg │ │ │ ├── import-icon.svg │ │ │ ├── inactive-icon.svg │ │ │ ├── info-icon.svg │ │ │ ├── keycard-icon.svg │ │ │ ├── light-icon.svg │ │ │ ├── line-chart-icon.svg │ │ │ ├── link-icon.svg │ │ │ ├── locked-icon.svg │ │ │ ├── logout-icon.svg │ │ │ ├── members-icon.svg │ │ │ ├── mention-icon.svg │ │ │ ├── messages-icon.svg │ │ │ ├── milestones-icon.svg │ │ │ ├── mobile-icon.svg │ │ │ ├── more-icon.svg │ │ │ ├── mute-icon.svg │ │ │ ├── negative-icon.svg │ │ │ ├── negative-state-icon.svg │ │ │ ├── nft-icon.svg │ │ │ ├── node-icon.svg │ │ │ ├── not-started-icon.svg │ │ │ ├── notification-badge-icon.svg │ │ │ ├── notifications-unread-icon.svg │ │ │ ├── offline-icon.svg │ │ │ ├── offline-left-icon.svg │ │ │ ├── online-icon.svg │ │ │ ├── online-left-icon.svg │ │ │ ├── open-icon.svg │ │ │ ├── options-icon.svg │ │ │ ├── pending-state-icon.svg │ │ │ ├── pending-user-icon.svg │ │ │ ├── pin-icon.svg │ │ │ ├── placeholder-icon.svg │ │ │ ├── positive-icon.svg │ │ │ ├── positive-state-icon.svg │ │ │ ├── privacy-icon.svg │ │ │ ├── profile-icon.svg │ │ │ ├── progress-icon.svg │ │ │ ├── pullup-icon.svg │ │ │ ├── puzzle-icon.svg │ │ │ ├── reaction-icon.svg │ │ │ ├── receive-icon.svg │ │ │ ├── refresh-icon.svg │ │ │ ├── remove-icon.svg │ │ │ ├── remove-user-icon.svg │ │ │ ├── reply-icon.svg │ │ │ ├── reveal-icon.svg │ │ │ ├── sad-icon.svg │ │ │ ├── save-icon.svg │ │ │ ├── scanning-icon.svg │ │ │ ├── search-icon.svg │ │ │ ├── send-icon.svg │ │ │ ├── share-icon.svg │ │ │ ├── shell-icon.svg │ │ │ ├── sort-icon.svg │ │ │ ├── status-icon-icon.svg │ │ │ ├── stickers-icon.svg │ │ │ ├── swap-icon.svg │ │ │ ├── threads-icon.svg │ │ │ ├── time-icon.svg │ │ │ ├── time-off-icon.svg │ │ │ ├── token-icon.svg │ │ │ ├── unblock-icon.svg │ │ │ ├── unlocked-icon.svg │ │ │ ├── unmute-icon.svg │ │ │ ├── unpin-icon.svg │ │ │ ├── unread-icon.svg │ │ │ ├── volume-icon.svg │ │ │ ├── volume-max-icon.svg │ │ │ ├── volume-min-icon.svg │ │ │ ├── wallet-icon.svg │ │ │ ├── warning-icon.svg │ │ │ ├── warning-red-icon.svg │ │ │ ├── web-icon.svg │ │ │ └── world-icon.svg │ │ ├── 20 │ │ │ ├── account-number-icon.svg │ │ │ ├── active-icon.svg │ │ │ ├── active-members-icon.svg │ │ │ ├── activity-center-icon.svg │ │ │ ├── activity-icon.svg │ │ │ ├── add-icon.svg │ │ │ ├── add-reaction-icon.svg │ │ │ ├── add-sm-icon.svg │ │ │ ├── add-small-icon.svg │ │ │ ├── add-time-off-icon.svg │ │ │ ├── add-token-icon.svg │ │ │ ├── add-user-icon.svg │ │ │ ├── advanced-icon.svg │ │ │ ├── afghanistan-icon.svg │ │ │ ├── airdrop-icon.svg │ │ │ ├── alert-icon.svg │ │ │ ├── alphabetically-icon.svg │ │ │ ├── android-icon.svg │ │ │ ├── anonymous-icon.svg │ │ │ ├── apple-icon.svg │ │ │ ├── argentina-icon.svg │ │ │ ├── arrow-down-icon.svg │ │ │ ├── arrow-left-icon.svg │ │ │ ├── arrow-right-icon.svg │ │ │ ├── arrow-top-icon.svg │ │ │ ├── attach-icon.svg │ │ │ ├── audio-icon.svg │ │ │ ├── australia-icon.svg │ │ │ ├── automatic-icon.svg │ │ │ ├── backspace-icon.svg │ │ │ ├── ban-user-icon.svg │ │ │ ├── block-icon.svg │ │ │ ├── bold-icon.svg │ │ │ ├── book-icon.svg │ │ │ ├── brazil-icon.svg │ │ │ ├── bridge-blur-icon.svg │ │ │ ├── bridge-icon.svg │ │ │ ├── browser-icon.svg │ │ │ ├── bullet-icon.svg │ │ │ ├── bullet-list-icon.svg │ │ │ ├── buy-icon.svg │ │ │ ├── calendar-icon.svg │ │ │ ├── camera-icon.svg │ │ │ ├── card-view-icon.svg │ │ │ ├── centre-align-icon.svg │ │ │ ├── chart-icon.svg │ │ │ ├── chatkey-icon.svg │ │ │ ├── check-circle-icon.svg │ │ │ ├── check-icon.svg │ │ │ ├── checktoken-icon.svg │ │ │ ├── chevron-down-icon.svg │ │ │ ├── chevron-left-icon.svg │ │ │ ├── chevron-right-icon.svg │ │ │ ├── chevron-top-icon.svg │ │ │ ├── chevrons-left-icon.svg │ │ │ ├── chevrons-right-icon.svg │ │ │ ├── chile-icon.svg │ │ │ ├── china-icon.svg │ │ │ ├── chrome-icon.svg │ │ │ ├── circle-icon.svg │ │ │ ├── clear-big-icon.svg │ │ │ ├── clear-icon.svg │ │ │ ├── close-circle-icon.svg │ │ │ ├── close-icon.svg │ │ │ ├── close-mac-os-icon.svg │ │ │ ├── close-windows-icon.svg │ │ │ ├── code-block-icon.svg │ │ │ ├── code-data-icon.svg │ │ │ ├── code-icon.svg │ │ │ ├── collapse-icon.svg │ │ │ ├── collapse-ls-icon.svg │ │ │ ├── collapse-rs-icon.svg │ │ │ ├── collapse-topbar-icon.svg │ │ │ ├── colombia-icon.svg │ │ │ ├── colour-pick-icon.svg │ │ │ ├── command-icon.svg │ │ │ ├── communities-icon.svg │ │ │ ├── compact-icon.svg │ │ │ ├── complete-id-icon.svg │ │ │ ├── confetti-colorful-icon.svg │ │ │ ├── confetti-icon.svg │ │ │ ├── connect-icon.svg │ │ │ ├── connection-icon.svg │ │ │ ├── contact-book-icon.svg │ │ │ ├── contact-icon.svg │ │ │ ├── copy-icon.svg │ │ │ ├── correct-icon.svg │ │ │ ├── cross-circle-icon.svg │ │ │ ├── crown-icon.svg │ │ │ ├── currency-icon.svg │ │ │ ├── customize-icon.svg │ │ │ ├── dapps-icon.svg │ │ │ ├── dark-icon.svg │ │ │ ├── dashboard-icon.svg │ │ │ ├── data-usage-icon.svg │ │ │ ├── databases-icon.svg │ │ │ ├── decline-icon.svg │ │ │ ├── decrease-windows-icon.svg │ │ │ ├── delete-icon.svg │ │ │ ├── derivated-path-big-icon.svg │ │ │ ├── derivated-path-icon.svg │ │ │ ├── desktop-icon.svg │ │ │ ├── destroy-icon.svg │ │ │ ├── disconnect-icon.svg │ │ │ ├── dock-icon.svg │ │ │ ├── dominican-icon.svg │ │ │ ├── done-icon.svg │ │ │ ├── download-icon.svg │ │ │ ├── drag-icon.svg │ │ │ ├── dropdown-icon.svg │ │ │ ├── duration-icon.svg │ │ │ ├── edit-icon.svg │ │ │ ├── email-icon.svg │ │ │ ├── england-icon.svg │ │ │ ├── epic-icon.svg │ │ │ ├── epics-icon.svg │ │ │ ├── european-union-icon.svg │ │ │ ├── expand-icon.svg │ │ │ ├── expand-ls-icon.svg │ │ │ ├── expand-rs-icon.svg │ │ │ ├── expand-topbar-icon.svg │ │ │ ├── external-icon.svg │ │ │ ├── face-id-icon.svg │ │ │ ├── faceid-big-icon.svg │ │ │ ├── faces-icon.svg │ │ │ ├── favourite-icon.svg │ │ │ ├── feed-icon.svg │ │ │ ├── file-icon.svg │ │ │ ├── firmware-icon.svg │ │ │ ├── flag-icon.svg │ │ │ ├── flags-icon.svg │ │ │ ├── flash-icon.svg │ │ │ ├── flash-off-icon.svg │ │ │ ├── flashlight-off-icon.svg │ │ │ ├── flashlight-on-icon.svg │ │ │ ├── flip-icon.svg │ │ │ ├── focus-icon.svg │ │ │ ├── folder-icon.svg │ │ │ ├── food-icon.svg │ │ │ ├── format-icon.svg │ │ │ ├── forward-icon.svg │ │ │ ├── france-icon.svg │ │ │ ├── friend-icon.svg │ │ │ ├── fullscreen-mac-os-icon.svg │ │ │ ├── gas-icon.svg │ │ │ ├── gavel-icon.svg │ │ │ ├── gif-icon.svg │ │ │ ├── gift-icon.svg │ │ │ ├── globe-icon.svg │ │ │ ├── hashtag-icon.svg │ │ │ ├── hashtag-square-icon.svg │ │ │ ├── heart-break-icon.svg │ │ │ ├── heart-icon.svg │ │ │ ├── help-icon.svg │ │ │ ├── hide-icon.svg │ │ │ ├── hide-password-icon.svg │ │ │ ├── history-icon.svg │ │ │ ├── hold-icon.svg │ │ │ ├── hourglass-icon.svg │ │ │ ├── hypen-icon.svg │ │ │ ├── image-icon.svg │ │ │ ├── import-icon.svg │ │ │ ├── inactive-icon.svg │ │ │ ├── incorrect-icon.svg │ │ │ ├── info-badge-icon.svg │ │ │ ├── info-icon.svg │ │ │ ├── insights-icon.svg │ │ │ ├── intermediate-circle-icon.svg │ │ │ ├── italic-icon.svg │ │ │ ├── italy-icon.svg │ │ │ ├── justify-icon.svg │ │ │ ├── key-icon.svg │ │ │ ├── keyboard-icon.svg │ │ │ ├── keycard-card-icon.svg │ │ │ ├── keycard-icon.svg │ │ │ ├── keycard-logo-icon.svg │ │ │ ├── keycard-pro-icon.svg │ │ │ ├── kick-user-icon.svg │ │ │ ├── labels-icon.svg │ │ │ ├── language-icon.svg │ │ │ ├── laptop-icon.svg │ │ │ ├── left-align-icon.svg │ │ │ ├── light-icon.svg │ │ │ ├── link-icon.svg │ │ │ ├── linux-icon.svg │ │ │ ├── list-view-collapsed-icon.svg │ │ │ ├── list-view-icon.svg │ │ │ ├── loading-icon.svg │ │ │ ├── locked-icon.svg │ │ │ ├── log-out-icon.svg │ │ │ ├── mark-as-read-icon.svg │ │ │ ├── maximize-windows-icon.svg │ │ │ ├── media-icon.svg │ │ │ ├── members-icon.svg │ │ │ ├── mention-icon.svg │ │ │ ├── menu-icon.svg │ │ │ ├── messages-icon.svg │ │ │ ├── messenger-icon.svg │ │ │ ├── mexico-icon.svg │ │ │ ├── milestones-icon.svg │ │ │ ├── minimize-mac-os-icon.svg │ │ │ ├── minimize-windows-icon.svg │ │ │ ├── mint-icon.svg │ │ │ ├── mobile-icon.svg │ │ │ ├── move-bottom-icon.svg │ │ │ ├── move-down-icon.svg │ │ │ ├── move-top-icon.svg │ │ │ ├── move-up-icon.svg │ │ │ ├── multi-profile-icon.svg │ │ │ ├── muted-icon.svg │ │ │ ├── mutual-contact-icon.svg │ │ │ ├── nature-icon.svg │ │ │ ├── negative-state-icon.svg │ │ │ ├── netherlands-icon.svg │ │ │ ├── neutral-icon.svg │ │ │ ├── new-message-icon.svg │ │ │ ├── new-window-icon.svg │ │ │ ├── nft-icon.svg │ │ │ ├── node-icon.svg │ │ │ ├── not-started-icon.svg │ │ │ ├── notification-badge-icon.svg │ │ │ ├── notifications-icon.svg │ │ │ ├── notifications-unread-icon.svg │ │ │ ├── numbered-list-icon.svg │ │ │ ├── objects-icon.svg │ │ │ ├── offline-icon.svg │ │ │ ├── offline-left-icon.svg │ │ │ ├── online-icon.svg │ │ │ ├── online-left-icon.svg │ │ │ ├── open-icon.svg │ │ │ ├── options-circle-icon.svg │ │ │ ├── options-icon.svg │ │ │ ├── org-icon.svg │ │ │ ├── pallete-icon.svg │ │ │ ├── password-icon.svg │ │ │ ├── pause-icon.svg │ │ │ ├── pause-media-icon.svg │ │ │ ├── pending-icon.svg │ │ │ ├── pending-state-icon.svg │ │ │ ├── pending-user-icon.svg │ │ │ ├── people-icon.svg │ │ │ ├── percentage-icon.svg │ │ │ ├── piggy-bank-icon.svg │ │ │ ├── pin-icon.svg │ │ │ ├── placeholder-icon.svg │ │ │ ├── play-media-icon.svg │ │ │ ├── plug-icon.svg │ │ │ ├── popup-icon.svg │ │ │ ├── portugal-icon.svg │ │ │ ├── positive-state-icon.svg │ │ │ ├── privacy-icon.svg │ │ │ ├── profile-icon.svg │ │ │ ├── pullup-icon.svg │ │ │ ├── puzzle-icon.svg │ │ │ ├── qr-code-icon.svg │ │ │ ├── quill-pen-icon.svg │ │ │ ├── reaction-icon.svg │ │ │ ├── receive-blur-icon.svg │ │ │ ├── receive-icon.svg │ │ │ ├── recent-icon.svg │ │ │ ├── refresh-icon.svg │ │ │ ├── relaxed-icon.svg │ │ │ ├── remove-icon.svg │ │ │ ├── remove-user-icon.svg │ │ │ ├── reorder-icon.svg │ │ │ ├── reply-icon.svg │ │ │ ├── reporting-icon.svg │ │ │ ├── reveal-icon.svg │ │ │ ├── reveal-whitelist-icon.svg │ │ │ ├── revert-icon.svg │ │ │ ├── review-id-icon.svg │ │ │ ├── review-request-icon.svg │ │ │ ├── right-align-icon.svg │ │ │ ├── rotate-icon.svg │ │ │ ├── russia-icon.svg │ │ │ ├── sad-icon.svg │ │ │ ├── save-icon.svg │ │ │ ├── scan-big-icon.svg │ │ │ ├── scan-icon.svg │ │ │ ├── search-icon.svg │ │ │ ├── seed-icon.svg │ │ │ ├── sell-icon.svg │ │ │ ├── send-audio-icon.svg │ │ │ ├── send-blur-icon.svg │ │ │ ├── send-icon.svg │ │ │ ├── settings-icon.svg │ │ │ ├── share-icon.svg │ │ │ ├── shell-icon.svg │ │ │ ├── shop-icon.svg │ │ │ ├── signature-icon.svg │ │ │ ├── sort-icon.svg │ │ │ ├── south-korea-icon.svg │ │ │ ├── spain-icon.svg │ │ │ ├── speed-icon.svg │ │ │ ├── status-icon-icon.svg │ │ │ ├── status-icon.svg │ │ │ ├── status-logo-icon.svg │ │ │ ├── stickers-icon.svg │ │ │ ├── stop-media-icon.svg │ │ │ ├── strikethrough-icon.svg │ │ │ ├── subscript-icon.svg │ │ │ ├── superscript-icon.svg │ │ │ ├── swap-blur-icon.svg │ │ │ ├── swap-icon.svg │ │ │ ├── switch-icon.svg │ │ │ ├── symbols-icon.svg │ │ │ ├── syncing-icon.svg │ │ │ ├── table-icon.svg │ │ │ ├── tablet-icon.svg │ │ │ ├── tabs-icon.svg │ │ │ ├── taiwan-icon.svg │ │ │ ├── teams-icon.svg │ │ │ ├── threads-icon.svg │ │ │ ├── time-off-icon.svg │ │ │ ├── toggle-icon.svg │ │ │ ├── token-icon.svg │ │ │ ├── token-master-icon.svg │ │ │ ├── token-sales-icon.svg │ │ │ ├── topbar&dock-icon.svg │ │ │ ├── topbar-icon.svg │ │ │ ├── touch-id-big-icon.svg │ │ │ ├── transaction-blur-icon.svg │ │ │ ├── transaction-icon.svg │ │ │ ├── translations-icon.svg │ │ │ ├── travel-icon.svg │ │ │ ├── ublock-user-icon.svg │ │ │ ├── unblock-icon.svg │ │ │ ├── underline-icon.svg │ │ │ ├── united-arab-emirates-icon.svg │ │ │ ├── united-kingdom-icon.svg │ │ │ ├── united-states-icon.svg │ │ │ ├── unlocked-icon.svg │ │ │ ├── unpin-icon.svg │ │ │ ├── unread-icon.svg │ │ │ ├── untrustworthy-icon.svg │ │ │ ├── up-to-date-icon.svg │ │ │ ├── upvote-icon.svg │ │ │ ├── usb-icon.svg │ │ │ ├── verified-icon.svg │ │ │ ├── video-icon.svg │ │ │ ├── waffle-icon.svg │ │ │ ├── wallet-icon.svg │ │ │ ├── warning-icon.svg │ │ │ ├── web-icon.svg │ │ │ ├── windows-icon.svg │ │ │ ├── workstreams-icon.svg │ │ │ ├── world-icon.svg │ │ │ ├── zoom-in-icon.svg │ │ │ └── zoom-out-icon.svg │ │ ├── reactions │ │ │ ├── angry-icon.svg │ │ │ ├── laugh-icon.svg │ │ │ ├── love-icon.svg │ │ │ ├── sad-icon.svg │ │ │ ├── thumbs-down-icon.svg │ │ │ └── thumbs-up-icon.svg │ │ └── social │ │ │ ├── arbiscan-icon.svg │ │ │ ├── discord-icon.svg │ │ │ ├── etherscan-icon.svg │ │ │ ├── facebook-icon.svg │ │ │ ├── flickr-icon.svg │ │ │ ├── github-icon.svg │ │ │ ├── intagram-icon.svg │ │ │ ├── lens-icon.svg │ │ │ ├── linkedin-icon.svg │ │ │ ├── mirror-icon.svg │ │ │ ├── opensea-icon.svg │ │ │ ├── pinterest-icon.svg │ │ │ ├── rarible-icon.svg │ │ │ ├── reddit-icon.svg │ │ │ ├── snapchat-icon.svg │ │ │ ├── spotify-icon.svg │ │ │ ├── status-icon.svg │ │ │ ├── superare-icon.svg │ │ │ ├── tumblr-icon.svg │ │ │ ├── twitch-icon.svg │ │ │ ├── twitter-icon.svg │ │ │ └── youtube-icon.svg │ ├── svgr.config.js │ ├── tsconfig.json │ └── vite.config.ts ├── status-js │ ├── CHANGELOG.md │ ├── buf.gen.yaml │ ├── eslint.config.mjs │ ├── package.json │ ├── src │ │ ├── client │ │ │ ├── account.test.ts │ │ │ ├── account.ts │ │ │ ├── activityCenter.ts │ │ │ ├── chat.ts │ │ │ ├── client.ts │ │ │ ├── community │ │ │ │ ├── community.ts │ │ │ │ ├── get-chat-uuid.ts │ │ │ │ ├── get-reactions.ts │ │ │ │ ├── handle-waku-message.ts │ │ │ │ ├── is-encrypted.ts │ │ │ │ └── map-chat-message.ts │ │ │ ├── member.ts │ │ │ └── storage.ts │ │ ├── consts │ │ │ ├── contracts.ts │ │ │ ├── emojis.ts │ │ │ ├── peers.ts │ │ │ └── providers.ts │ │ ├── crypto │ │ │ └── pbkdf2.browser.ts │ │ ├── ethereum-client │ │ │ └── ethereum-client.ts │ │ ├── helpers │ │ │ ├── contains-only-emoji.test.ts │ │ │ ├── contains-only-emoji.ts │ │ │ ├── get-difference-by-keys.ts │ │ │ ├── get-objects-difference.test.ts │ │ │ └── get-objects-difference.ts │ │ ├── index.ts │ │ ├── protos │ │ │ ├── application-metadata-message.proto │ │ │ ├── application-metadata-message_pb.ts │ │ │ ├── buf.yaml │ │ │ ├── chat-identity.proto │ │ │ ├── chat-identity_pb.ts │ │ │ ├── chat-message.proto │ │ │ ├── chat-message_pb.ts │ │ │ ├── communities.proto │ │ │ ├── communities_pb.ts │ │ │ ├── contact.proto │ │ │ ├── contact_pb.ts │ │ │ ├── emoji-reaction.proto │ │ │ ├── emoji-reaction_pb.ts │ │ │ ├── enums.proto │ │ │ ├── enums_pb.ts │ │ │ ├── membership-update-message.proto │ │ │ ├── membership-update-message_pb.ts │ │ │ ├── pin-message.proto │ │ │ ├── pin-message_pb.ts │ │ │ ├── profile-showcase.proto │ │ │ ├── profile-showcase_pb.ts │ │ │ ├── protocol-message.proto │ │ │ ├── protocol-message_pb.ts │ │ │ ├── push-notifications.proto │ │ │ ├── push-notifications_pb.ts │ │ │ ├── segment-message.proto │ │ │ ├── segment-message_pb.ts │ │ │ ├── shard.proto │ │ │ ├── shard_pb.ts │ │ │ ├── status-update.proto │ │ │ ├── status-update_pb.ts │ │ │ ├── url.proto │ │ │ └── url_pb.ts │ │ ├── request-client │ │ │ ├── indices-to-tags.test.ts │ │ │ ├── indices-to-tags.ts │ │ │ ├── map-channel.ts │ │ │ ├── map-community.ts │ │ │ ├── map-user.ts │ │ │ ├── request-client.ts │ │ │ ├── tags-to-indices.test.ts │ │ │ ├── tags-to-indices.ts │ │ │ └── tags.ts │ │ └── utils │ │ │ ├── compress-public-key.test.ts │ │ │ ├── compress-public-key.ts │ │ │ ├── create-url.test.ts │ │ │ ├── create-url.ts │ │ │ ├── decompress-public-key.test.ts │ │ │ ├── decompress-public-key.ts │ │ │ ├── deserialize-public-key.test.ts │ │ │ ├── deserialize-public-key.ts │ │ │ ├── encode-url-data.test.ts │ │ │ ├── encode-url-data.ts │ │ │ ├── generate-key-from-password.test.ts │ │ │ ├── generate-key-from-password.ts │ │ │ ├── generate-username.test.ts │ │ │ ├── generate-username.ts │ │ │ ├── get-next-clock.ts │ │ │ ├── id-to-content-topic.test.ts │ │ │ ├── id-to-content-topic.ts │ │ │ ├── is-clock-valid.ts │ │ │ ├── payload-to-id.ts │ │ │ ├── public-key-to-color-hash.test.ts │ │ │ ├── public-key-to-color-hash.ts │ │ │ ├── public-key-to-emoji-hash.test.ts │ │ │ ├── public-key-to-emoji-hash.ts │ │ │ ├── public-key-to-eth-address.test.ts │ │ │ ├── public-key-to-eth-address.ts │ │ │ ├── recover-public-key.test.ts │ │ │ ├── recover-public-key.ts │ │ │ ├── serialize-public-key.test.ts │ │ │ ├── serialize-public-key.ts │ │ │ ├── sign-data.ts │ │ │ └── validate-message.ts │ ├── tsconfig.json │ └── vite.config.ts └── wallet │ ├── .env │ ├── .gitignore │ ├── .prettierrc │ ├── eslint.config.mjs │ ├── next-env.d.ts │ ├── package.json │ ├── postcss.config.js │ ├── scripts │ ├── generate-cloudinary-type.mjs │ └── generate-erc20-token-list.mjs │ ├── src │ ├── components │ │ ├── account-menu │ │ │ └── index.tsx │ │ ├── address │ │ │ └── index.tsx │ │ ├── assets-list │ │ │ └── index.tsx │ │ ├── currency-amount │ │ │ └── index.tsx │ │ ├── delete-address-alert │ │ │ └── index.tsx │ │ ├── drawer │ │ │ └── index.tsx │ │ ├── image │ │ │ ├── image.tsx │ │ │ ├── index.ts │ │ │ ├── loader.ts │ │ │ └── types.ts │ │ ├── index.tsx │ │ ├── logo │ │ │ └── index.tsx │ │ ├── nav-bar │ │ │ └── index.tsx │ │ ├── network-explorer-logo │ │ │ └── index.tsx │ │ ├── network-logo │ │ │ └── index.tsx │ │ ├── percentage-change │ │ │ └── index.tsx │ │ ├── receive-crypto-drawer │ │ │ └── index.tsx │ │ ├── settings-popover │ │ │ └── index.tsx │ │ ├── shorten-address │ │ │ └── index.tsx │ │ ├── slider │ │ │ └── index.tsx │ │ ├── sticky-header-container │ │ │ └── index.tsx │ │ ├── table │ │ │ └── index.tsx │ │ ├── token-amount │ │ │ └── index.tsx │ │ └── tooltip │ │ │ └── index.tsx │ ├── config │ │ ├── env.base.mjs │ │ └── env.server.mjs │ ├── constants │ │ ├── erc20.json │ │ └── native.json │ ├── data │ │ ├── api │ │ │ ├── index.ts │ │ │ ├── lib │ │ │ │ └── trpc.ts │ │ │ ├── routers │ │ │ │ ├── assets.ts │ │ │ │ └── collectibles.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── services │ │ │ ├── alchemy │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── coingecko.ts │ │ │ ├── coingecko │ │ │ │ └── index.ts │ │ │ └── cryptocompare │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ └── trpc │ │ │ └── api.ts │ ├── styles │ │ └── global.css │ ├── types.ts │ └── utils │ │ ├── color-tokens.ts │ │ └── variants.ts │ ├── tailwind.config.ts │ ├── tsconfig.json │ ├── vercel.json │ └── vite.config.ts ├── patches ├── @achingbrain__ssdp@4.0.1.patch ├── @libp2p__bootstrap@9.0.10.patch └── it-length-prefixed@9.0.3.patch ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── tsconfig.base.json ├── turbo.json └── vercel.json /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "origin/main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.changeset/famous-cobras-wash.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'portfolio': patch 3 | --- 4 | 5 | update deployment build command 6 | -------------------------------------------------------------------------------- /.changeset/funny-cooks-burn.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'api': minor 3 | --- 4 | 5 | update deployment build command 6 | -------------------------------------------------------------------------------- /.changeset/grumpy-walls-deny.md: -------------------------------------------------------------------------------- 1 | --- 2 | '@status-im/wallet': patch 3 | --- 4 | 5 | update .env 6 | -------------------------------------------------------------------------------- /.changeset/lovely-dancers-tie.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'wallet': patch 3 | --- 4 | 5 | add build steps 6 | -------------------------------------------------------------------------------- /.changeset/selfish-cobras-tap.md: -------------------------------------------------------------------------------- 1 | --- 2 | '@status-im/js': patch 3 | --- 4 | 5 | update test snapshots 6 | -------------------------------------------------------------------------------- /.changeset/shy-garlics-breathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'connector': patch 3 | --- 4 | 5 | update build step 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = false 11 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | pnpm lint-staged 5 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 20.18.0 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | !.npmrc 2 | #!pnpm-lock.yaml 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | ; https://pnpm.io/cli/run#enable-pre-post-scripts 2 | enable-pre-post-scripts=true 3 | ; https://pnpm.io/npmrc#node-linker 4 | ; node-linker=hoisted 5 | ; https://pnpm.io/npmrc#shamefully-hoist 6 | ;shamefully-hoist=true 7 | ;auto-install-peers=true 8 | ; https://pnpm.io/npmrc#node-version 9 | node-version=20.18.0 10 | ; https://pnpm.io/npmrc#engine-strict 11 | engine-strict=true 12 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "plugins": ["prettier-plugin-tailwindcss"], 6 | "tailwindFunctions": ["cx", "cva"] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "esbenp.prettier-vscode", 4 | "dbaeumer.vscode-eslint", 5 | "zxh404.vscode-proto3", 6 | "ms-vscode.hexeditor", 7 | "mikestead.dotenv", 8 | "bradlc.vscode-tailwindcss", 9 | "vitest.explorer", 10 | "github.vscode-github-actions" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apps/api/.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = false 11 | -------------------------------------------------------------------------------- /apps/api/.node-version: -------------------------------------------------------------------------------- 1 | 20.18.0 2 | -------------------------------------------------------------------------------- /apps/api/.npmignore: -------------------------------------------------------------------------------- 1 | !.npmrc 2 | #!pnpm-lock.yaml 3 | -------------------------------------------------------------------------------- /apps/api/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | .contentlayer/ 4 | .husky 5 | .next/ 6 | .vercel/ 7 | 8 | coverage/ 9 | public/ 10 | 11 | *.md 12 | *.mdx 13 | 14 | .data/ 15 | 16 | pnpm-lock.yaml 17 | -------------------------------------------------------------------------------- /apps/api/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "endOfLine": "auto", 6 | "trailingComma": "es5" 7 | } 8 | -------------------------------------------------------------------------------- /apps/api/env.d.ts: -------------------------------------------------------------------------------- 1 | import type { serverEnv } from './src/config/env.server.mjs' 2 | 3 | type Env = typeof serverEnv 4 | 5 | declare global { 6 | namespace NodeJS { 7 | /* eslint-disable @typescript-eslint/no-empty-object-type */ 8 | interface ProcessEnv extends Env {} 9 | /* eslint-enable @typescript-eslint/no-empty-object-type */ 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apps/api/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/api/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/wallet ./", 4 | "installCommand": "pnpm install --dir ../../ --frozen-lockfile", 5 | "buildCommand": "turbo run build --cwd ../../ --filter=api..." 6 | } 7 | -------------------------------------------------------------------------------- /apps/connector/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "tailwindConfig": "./tailwind.config.ts", 6 | "endOfLine": "auto" 7 | } 8 | -------------------------------------------------------------------------------- /apps/connector/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # connector 2 | 3 | ## 0.0.4 4 | 5 | ### Patch Changes 6 | 7 | - e9ba45a: Gather feedback from survey when uninstalling connector extension 8 | 9 | ## 0.0.3 10 | 11 | ### Patch Changes 12 | 13 | - 67066de: bind `Provider` methods 14 | - 67066de: add logger 15 | - 67066de: extend default wallet setting 16 | - c2d4183: config for localhost dapps 17 | 18 | ## 0.0.2 19 | 20 | ### Patch Changes 21 | 22 | - 3c71b8c: update ESLint 23 | - Updated dependencies [3c71b8c] 24 | - @status-im/colors@1.0.2 25 | -------------------------------------------------------------------------------- /apps/connector/assets/fonts/Inter.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/fonts/Inter.woff2 -------------------------------------------------------------------------------- /apps/connector/assets/icon-connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/icon-connected.png -------------------------------------------------------------------------------- /apps/connector/assets/icon-disconnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/icon-disconnected.png -------------------------------------------------------------------------------- /apps/connector/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/icon.png -------------------------------------------------------------------------------- /apps/connector/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/logo.png -------------------------------------------------------------------------------- /apps/connector/assets/network/arbitrum.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/network/arbitrum.webp -------------------------------------------------------------------------------- /apps/connector/assets/network/mainnet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/network/mainnet.webp -------------------------------------------------------------------------------- /apps/connector/assets/network/optimism.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/network/optimism.webp -------------------------------------------------------------------------------- /apps/connector/assets/unable-to-connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/connector/assets/unable-to-connect.png -------------------------------------------------------------------------------- /apps/connector/global.d.ts: -------------------------------------------------------------------------------- 1 | import type { Provider } from './src/contents/provider' 2 | 3 | declare global { 4 | interface Window { 5 | ethereum: Provider 6 | registration?: ServiceWorkerRegistration 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apps/connector/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | 'tailwindcss/nesting': {}, 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /apps/connector/shell.nix: -------------------------------------------------------------------------------- 1 | { 2 | source ? builtins.fetchTarball { 3 | url = "https://github.com/NixOS/nixpkgs/archive/df27247e6f3e636c119e2610bf12d38b5e98cc79.tar.gz"; 4 | sha256 = "sha256:0bbvimk7xb7akrx106mmsiwf9nzxnssisqmqffla03zz51d0kz2n"; 5 | }, 6 | pkgs ? import (source) {} 7 | }: 8 | 9 | pkgs.mkShell { 10 | name = "connector-shell"; 11 | 12 | buildInputs = with pkgs; [ 13 | nodejs_20 14 | pnpm 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /apps/connector/src/contents/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Inter'; 3 | src: url(data-base64:../../assets/fonts/Inter.woff2) format('woff2'); 4 | } 5 | -------------------------------------------------------------------------------- /apps/connector/src/lib/get-favicon-url.ts: -------------------------------------------------------------------------------- 1 | export function getFaviconUrl() { 2 | const faviconElement = 3 | document.querySelector('link[rel="icon"]') 4 | 5 | if (faviconElement) { 6 | return faviconElement.href 7 | } 8 | 9 | const iconElements = 10 | document.querySelectorAll('link[rel*="icon"]') 11 | 12 | if (iconElements.length === 0) { 13 | return null 14 | } 15 | 16 | return iconElements[0].href 17 | } 18 | -------------------------------------------------------------------------------- /apps/connector/src/lib/provider-rpc-error.ts: -------------------------------------------------------------------------------- 1 | export class ProviderRpcError extends Error { 2 | public code: number 3 | public data: unknown 4 | 5 | constructor(args: { code: number; message: string; data?: unknown }) { 6 | super(args.message) 7 | this.code = args.code 8 | this.data = args.data 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/connector/src/lib/request-arguments.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | /** 4 | * @see https://eips.ethereum.org/EIPS/eip-1193#request-1 5 | * @see https://www.jsonrpc.org/specification#request_object 6 | */ 7 | export const RequestArguments = z.object({ 8 | method: z.string(), 9 | params: z 10 | .union([z.array(z.unknown()).readonly(), z.record(z.unknown()).optional()]) 11 | .optional(), 12 | }) 13 | 14 | export type RequestArguments = z.infer 15 | -------------------------------------------------------------------------------- /apps/connector/src/messages/main-message.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | import { RequestArguments } from '~lib/request-arguments' 4 | 5 | export const MainMessage = z.discriminatedUnion('type', [ 6 | z.object({ 7 | type: z.literal('status:main'), 8 | data: RequestArguments, 9 | }), 10 | ]) 11 | 12 | export type MainMessage = z.infer 13 | -------------------------------------------------------------------------------- /apps/connector/src/messages/provider-message.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | import { RequestArguments } from '~lib/request-arguments' 4 | 5 | export const ProviderMessage = z.discriminatedUnion('type', [ 6 | z.object({ 7 | type: z.literal('status:provider'), 8 | data: RequestArguments, 9 | }), 10 | z.object({ 11 | type: z.literal('status:provider:disconnect'), 12 | }), 13 | z.object({ 14 | type: z.literal('status:provider:data'), 15 | }), 16 | ]) 17 | 18 | export type ProviderMessage = z.infer 19 | -------------------------------------------------------------------------------- /apps/connector/src/messages/proxy-message.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | export const ProxyMessage = z.discriminatedUnion('type', [ 4 | z.object({ 5 | type: z.literal('status:proxy:success'), 6 | data: z.unknown(), 7 | }), 8 | z.object({ 9 | type: z.literal('status:proxy:error'), 10 | error: z.object({ 11 | code: z.number(), 12 | message: z.string(), 13 | }), 14 | }), 15 | ]) 16 | 17 | export type ProxyMessage = z.infer 18 | -------------------------------------------------------------------------------- /apps/connector/src/messages/service-worker-message.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod' 2 | 3 | export const ServiceWorkerMessage = z.discriminatedUnion('type', [ 4 | z.object({ 5 | type: z.literal('status:icon:clicked'), 6 | }), 7 | ]) 8 | 9 | export type ServiceWorkerMessage = z.infer 10 | -------------------------------------------------------------------------------- /apps/connector/src/style.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | *, 6 | ::before, 7 | ::after { 8 | font-family: theme(fontFamily.sans); 9 | color: theme(colors.neutral.100); 10 | } 11 | 12 | * { 13 | font-family: theme(fontFamily.sans) !important; 14 | font-size: initial !important; 15 | } 16 | -------------------------------------------------------------------------------- /apps/connector/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "plasmo/templates/tsconfig.base", 3 | "exclude": ["node_modules"], 4 | "include": [".plasmo/index.d.ts", "./**/*.ts", "./**/*.tsx", "global.d.ts"], 5 | "compilerOptions": { 6 | "paths": { 7 | "~*": ["./src/*"], 8 | }, 9 | "baseUrl": ".", 10 | "lib": ["WebWorker", "dom", "WebWorker.ImportScripts"], 11 | "strictNullChecks": true, 12 | "strict": true, 13 | "target": "ESNext", 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /apps/portfolio/.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = false 11 | -------------------------------------------------------------------------------- /apps/portfolio/.node-version: -------------------------------------------------------------------------------- 1 | 20.18.0 2 | -------------------------------------------------------------------------------- /apps/portfolio/.npmignore: -------------------------------------------------------------------------------- 1 | !.npmrc 2 | #!pnpm-lock.yaml 3 | -------------------------------------------------------------------------------- /apps/portfolio/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | .contentlayer/ 4 | .husky 5 | .next/ 6 | .vercel/ 7 | 8 | coverage/ 9 | public/ 10 | 11 | *.md 12 | *.mdx 13 | 14 | .data/ 15 | 16 | pnpm-lock.yaml 17 | -------------------------------------------------------------------------------- /apps/portfolio/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "endOfLine": "auto", 6 | "trailingComma": "es5", 7 | "plugins": ["prettier-plugin-tailwindcss"], 8 | "tailwindFunctions": ["cx", "cva"], 9 | "tailwindConfig": "./tailwind.config.ts" 10 | } 11 | -------------------------------------------------------------------------------- /apps/portfolio/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # portfolio 2 | 3 | ## 0.1.1 4 | 5 | ### Patch Changes 6 | 7 | - Updated dependencies [48e47cf] 8 | - @status-im/js@1.1.0 9 | -------------------------------------------------------------------------------- /apps/portfolio/README.md: -------------------------------------------------------------------------------- 1 | # A portfolio dApp by Status 2 | 3 | ## Development 4 | 5 | Follow [Getting Started](../../README.md#getting-started) 6 | 7 | ### Develop 8 | 9 | ```bash 10 | pnpm dev 11 | ``` 12 | -------------------------------------------------------------------------------- /apps/portfolio/env.d.ts: -------------------------------------------------------------------------------- 1 | import type { clientEnv } from './src/config/env.client.mjs' 2 | import type { serverEnv } from './src/config/env.server.mjs' 3 | 4 | type Env = typeof clientEnv & typeof serverEnv 5 | 6 | declare global { 7 | namespace NodeJS { 8 | /* eslint-disable @typescript-eslint/no-empty-object-type */ 9 | interface ProcessEnv extends Env {} 10 | /* eslint-enable @typescript-eslint/no-empty-object-type */ 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apps/portfolio/middleware.ts: -------------------------------------------------------------------------------- 1 | import { NextResponse } from 'next/server' 2 | 3 | import type { NextRequest } from 'next/server' 4 | 5 | export function middleware(request: NextRequest) { 6 | const response = NextResponse.next() 7 | response.headers.set('x-current-path', request.nextUrl.pathname) 8 | return response 9 | } 10 | 11 | export const config = { 12 | matcher: ['/:address/assets/:slug*', '/:address/collectibles/:rest*'], 13 | } 14 | -------------------------------------------------------------------------------- /apps/portfolio/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/portfolio/postcss.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-undef */ 2 | module.exports = { 3 | plugins: { 4 | 'tailwindcss/nesting': {}, 5 | tailwindcss: {}, 6 | autoprefixer: {}, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /apps/portfolio/public/images/providers/mercuryo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/public/images/providers/mercuryo.png -------------------------------------------------------------------------------- /apps/portfolio/public/images/providers/moonpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/public/images/providers/moonpay.png -------------------------------------------------------------------------------- /apps/portfolio/public/images/providers/ramp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/public/images/providers/ramp.png -------------------------------------------------------------------------------- /apps/portfolio/public/images/tokens/eth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/public/images/tokens/eth.png -------------------------------------------------------------------------------- /apps/portfolio/public/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/public/noise.png -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/assets/[ticker]/not-found.tsx: -------------------------------------------------------------------------------- 1 | export default function NotFound() { 2 | return
@asset ticker not found
3 | } 4 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/assets/_components/chart/constants.ts: -------------------------------------------------------------------------------- 1 | import { customisation, white } from '@status-im/colors' 2 | 3 | export const colors = { 4 | line: customisation.blue[50], 5 | background: white[100], 6 | marker: customisation.blue['50/30'], 7 | fill: customisation.blue['50/5'], 8 | white: white[100], 9 | } as const 10 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/assets/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | export default function Error() { 4 | return
@asset error
5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/assets/not-found.tsx: -------------------------------------------------------------------------------- 1 | export default function NotFound() { 2 | return
@asset not found
3 | } 4 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/assets/page.tsx: -------------------------------------------------------------------------------- 1 | export default async function CollectiblesDefaultPage() { 2 | return ( 3 | <> 4 |
5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/collectibles/[network]/[contract]/[id]/not-found.tsx: -------------------------------------------------------------------------------- 1 | export default function NotFound() { 2 | return
@collectible id not found
3 | } 4 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/collectibles/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | export default function Error() { 4 | return
@collectible error
5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@detail/collectibles/page.tsx: -------------------------------------------------------------------------------- 1 | export default async function CollectiblesDefaultPage() { 2 | return ( 3 | <> 4 |
5 | 6 | ) 7 | } 8 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@list/assets/default.tsx: -------------------------------------------------------------------------------- 1 | export { default } from './page' 2 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@list/collectibles/default.tsx: -------------------------------------------------------------------------------- 1 | export { default } from './page' 2 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@list/collectibles/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | export default function Error() { 4 | return
@list/collectibles error
5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/@nav/default.tsx: -------------------------------------------------------------------------------- 1 | import { AccountSideNav } from '../../_components/account-sidenav' 2 | 3 | export default async function Nav() { 4 | return 5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/[address]/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | export default function Error() { 4 | return
[address] error
5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_components/anchor-link.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from '../_components/link' 2 | 3 | export const AnchorLink = ({ 4 | id, 5 | children, 6 | }: { 7 | id: string 8 | children: React.ReactNode 9 | }) => ( 10 | <> 11 | 12 | # 13 | 14 | 15 | {children} 16 | 17 | 18 | ) 19 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_components/assets/index.tsx: -------------------------------------------------------------------------------- 1 | export type { IconProps } from './icon' 2 | export { Icon } from './icon' 3 | export type { ImageProps } from './image' 4 | export { Image } from './image' 5 | export { ScreenImage, ScreenVideo } from './screen' 6 | export type * from './types' 7 | export type { VideoProps } from './video' 8 | export { Video } from './video' 9 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_components/feature-enabled.tsx: -------------------------------------------------------------------------------- 1 | import { FEATURE_FLAGS, type FeatureFlag } from '../_lib/feature-flags' 2 | 3 | export const FeatureEnabled = ({ 4 | featureFlag, 5 | children, 6 | }: { 7 | featureFlag: FeatureFlag 8 | children: React.ReactNode 9 | }) => { 10 | if (!isFeatureEnabled(featureFlag)) { 11 | return null 12 | } 13 | 14 | return children 15 | } 16 | 17 | export function isFeatureEnabled(featureFlag: FeatureFlag) { 18 | return FEATURE_FLAGS[featureFlag] 19 | } 20 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_components/navbar.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { Navbar as NavbarBase } from '@status-im/wallet/components' 4 | import { usePathname } from 'next/navigation' 5 | 6 | const Navbar = () => { 7 | const pathname = usePathname() 8 | 9 | return 10 | } 11 | 12 | export { Navbar } 13 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_components/table/index.tsx: -------------------------------------------------------------------------------- 1 | export * as Table from './table' 2 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_config.ts: -------------------------------------------------------------------------------- 1 | import { createConfig, http } from 'wagmi' 2 | import { arbitrum, mainnet, optimism } from 'wagmi/chains' 3 | 4 | export const config = createConfig({ 5 | chains: [mainnet, optimism, arbitrum], 6 | ssr: false, 7 | transports: { 8 | // todo: replace public clients 9 | [mainnet.id]: http(), 10 | [optimism.id]: http(), 11 | [arbitrum.id]: http(), 12 | }, 13 | }) 14 | 15 | declare module 'wagmi' { 16 | interface Register { 17 | config: typeof config 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_hooks/use-debounce.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react' 2 | 3 | export function useDebounce(value: T, delay?: number): T { 4 | const [debouncedValue, setDebouncedValue] = useState(value) 5 | 6 | useEffect(() => { 7 | const timer = setTimeout(() => setDebouncedValue(value), delay || 300) 8 | 9 | return () => { 10 | clearTimeout(timer) 11 | } 12 | }, [value, delay]) 13 | 14 | return debouncedValue 15 | } 16 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_lib/feature-flags.ts: -------------------------------------------------------------------------------- 1 | import { clientEnv } from '../../config/env.client.mjs' 2 | 3 | export type FeatureFlag = keyof typeof FEATURE_FLAGS 4 | 5 | export const FEATURE_FLAGS = { 6 | WATCHED_ADDRESSES: 7 | clientEnv.NEXT_PUBLIC_FEATURE_FLAG_WATCHED_ADDRESSES === 'true', 8 | } as const 9 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_providers/query-client-provider.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { QueryClient, QueryClientProvider } from '@tanstack/react-query' 4 | 5 | const queryClient = new QueryClient() 6 | 7 | type Props = { 8 | children: React.ReactNode 9 | } 10 | 11 | function _QueryClientProvider(props: Props) { 12 | const { children } = props 13 | 14 | return ( 15 | {children} 16 | ) 17 | } 18 | 19 | export { _QueryClientProvider as QueryClientProvider } 20 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_providers/wagmi-provider.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | import { WagmiProvider } from 'wagmi' 4 | 5 | import { config } from '../_config' 6 | 7 | type Props = { 8 | children: React.ReactNode 9 | } 10 | 11 | function _WagmiProvider(props: Props) { 12 | const { children } = props 13 | 14 | return {children} 15 | } 16 | 17 | export { _WagmiProvider as WagmiProvider } 18 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_utils/group-by.ts: -------------------------------------------------------------------------------- 1 | export function groupBy( 2 | list: T[], 3 | getter: (input: T) => K, 4 | initialValue: Record 5 | ): Record { 6 | const grouped: Record = initialValue 7 | 8 | for (const item of list) { 9 | const key = getter(item) 10 | grouped[key] ??= [] 11 | grouped[key].push(item) 12 | } 13 | 14 | return grouped 15 | } 16 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/_utils/match-search-filter.ts: -------------------------------------------------------------------------------- 1 | export const matchesSearchFilter = (word: string, searchFilter: string) => { 2 | return word.toLowerCase().includes(searchFilter.toLowerCase()) 3 | } 4 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/error.tsx: -------------------------------------------------------------------------------- 1 | 'use client' 2 | 3 | export default function Error() { 4 | return
app error
5 | } 6 | -------------------------------------------------------------------------------- /apps/portfolio/src/app/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/apps/portfolio/src/app/icon.png -------------------------------------------------------------------------------- /apps/portfolio/src/app/not-found.tsx: -------------------------------------------------------------------------------- 1 | export default function NotFound() { 2 | return
app not-found
3 | } 4 | -------------------------------------------------------------------------------- /apps/portfolio/src/data/api.ts: -------------------------------------------------------------------------------- 1 | import 'server-only' 2 | 3 | import { createAPI } from '@status-im/wallet/data' 4 | 5 | let apiClient: Awaited> | undefined 6 | 7 | export async function getAPIClient() { 8 | if (!apiClient) { 9 | apiClient = await createAPI() 10 | } 11 | 12 | return apiClient 13 | } 14 | -------------------------------------------------------------------------------- /apps/portfolio/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import config from '@status-im/wallet/tailwind.config' 2 | 3 | export default config 4 | // import type { Config } from 'tailwindcss' 5 | 6 | // export default { 7 | // presets: [config], 8 | 9 | // content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'], 10 | // } satisfies Config 11 | -------------------------------------------------------------------------------- /apps/portfolio/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/{colors,icons,components,wallet} ./", 4 | "installCommand": "pnpm install --dir ../../ --frozen-lockfile", 5 | "buildCommand": "turbo run build --cwd ../../ --filter=portfolio..." 6 | } 7 | -------------------------------------------------------------------------------- /apps/wallet/.env: -------------------------------------------------------------------------------- 1 | WXT_STATUS_API_URL="http://localhost:3030" 2 | -------------------------------------------------------------------------------- /apps/wallet/.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 | 10 | node_modules 11 | .output 12 | stats.html 13 | stats-*.json 14 | .wxt 15 | web-ext.config.ts 16 | 17 | # Editor directories and files 18 | .vscode/* 19 | !.vscode/extensions.json 20 | .idea 21 | .DS_Store 22 | *.suo 23 | *.ntvs* 24 | *.njsproj 25 | *.sln 26 | *.sw? 27 | 28 | # local env files 29 | !.env.* 30 | .env*.local 31 | -------------------------------------------------------------------------------- /apps/wallet/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "plugins": ["prettier-plugin-tailwindcss"], 6 | "tailwindFunctions": ["cx", "cva"], 7 | "tailwindConfig": "./tailwind.config.ts" 8 | } 9 | -------------------------------------------------------------------------------- /apps/wallet/env.d.ts: -------------------------------------------------------------------------------- 1 | // /// 2 | 3 | // // import 'vite/client' 4 | 5 | interface ImportMeta { 6 | readonly env: { 7 | readonly WXT_STATUS_API_URL: string 8 | readonly WXT_GETBLOCK_API_KEY: string 9 | readonly WXT_ETHERSCAN_API_KEY: string 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apps/wallet/global.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-var */ 2 | 3 | import type { createAPI } from './src/data/api' 4 | import type { encoder } from './src/data/encoder' 5 | import type { getKeystore } from './src/data/keystore' 6 | import type { getWalletCore } from './src/data/wallet' 7 | 8 | declare global { 9 | // todo?: limit to background script 10 | var api: Awaited> 11 | var storage: Awaited> 12 | var wallet: Awaited> 13 | var encoder: encoder 14 | } 15 | 16 | export {} 17 | -------------------------------------------------------------------------------- /apps/wallet/postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | export default { 3 | plugins: { 4 | 'tailwindcss/nesting': {}, 5 | tailwindcss: {}, 6 | autoprefixer: {}, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /apps/wallet/shell.nix: -------------------------------------------------------------------------------- 1 | { 2 | source ? builtins.fetchTarball { 3 | url = "https://github.com/NixOS/nixpkgs/archive/df27247e6f3e636c119e2610bf12d38b5e98cc79.tar.gz"; 4 | sha256 = "sha256:0bbvimk7xb7akrx106mmsiwf9nzxnssisqmqffla03zz51d0kz2n"; 5 | }, 6 | pkgs ? import (source) {} 7 | }: 8 | 9 | pkgs.mkShell { 10 | name = "wallet-shell"; 11 | 12 | buildInputs = with pkgs; [ 13 | nodejs_20 14 | pnpm 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /apps/wallet/src/data/encoder.ts: -------------------------------------------------------------------------------- 1 | export { TW as encoder } from '@trustwallet/wallet-core' 2 | -------------------------------------------------------------------------------- /apps/wallet/src/modules/wallet-core-wasm.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from 'node:path' 2 | import { defineWxtModule } from 'wxt/modules' 3 | 4 | export default defineWxtModule({ 5 | setup(wxt) { 6 | wxt.hook('build:publicAssets', (_, assets) => { 7 | assets.push({ 8 | absoluteSrc: resolve( 9 | 'node_modules/@trustwallet/wallet-core/dist/lib/wallet-core.wasm', 10 | ), 11 | relativeDest: 'wallet-core.wasm', 12 | }) 13 | }) 14 | }, 15 | }) 16 | -------------------------------------------------------------------------------- /apps/wallet/src/providers/status.tsx: -------------------------------------------------------------------------------- 1 | import { StatusProvider } from '@status-im/components' 2 | import { Link } from '@tanstack/react-router' 3 | 4 | type Props = { 5 | children: React.ReactNode 6 | } 7 | 8 | function _StatusProvider(props: Props) { 9 | const { children } = props 10 | 11 | return {children} 12 | } 13 | 14 | export { _StatusProvider as StatusProvider } 15 | -------------------------------------------------------------------------------- /apps/wallet/src/routes/index.tsx: -------------------------------------------------------------------------------- 1 | import { createFileRoute } from '@tanstack/react-router' 2 | 3 | export const Route = createFileRoute('/')({ 4 | component: RouteComponent, 5 | head: () => ({ 6 | meta: [ 7 | { 8 | title: 'Extension | Wallet | Index', 9 | }, 10 | ], 11 | }), 12 | }) 13 | 14 | function RouteComponent() { 15 | return <>Index 16 | } 17 | -------------------------------------------------------------------------------- /apps/wallet/src/routes/onboarding/_layout.tsx: -------------------------------------------------------------------------------- 1 | import { createFileRoute, Outlet } from '@tanstack/react-router' 2 | 3 | export const Route = createFileRoute('/onboarding')({ 4 | component: RouteComponent, 5 | beforeLoad: () => { 6 | // TODO: check if user is already onboarded 7 | // throw redirect({ to: '/' }) 8 | }, 9 | }) 10 | 11 | function RouteComponent() { 12 | return 13 | } 14 | -------------------------------------------------------------------------------- /apps/wallet/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["./.wxt/tsconfig.json"], 3 | "compilerOptions": { 4 | "allowImportingTsExtensions": true, 5 | "jsx": "react-jsx", 6 | "target": "ESNext", 7 | "module": "ESNext", 8 | "moduleResolution": "Bundler", 9 | // "paths": { 10 | // "@portfolio/*": ["../portfolio/src/*"], 11 | // // "@/*": ["../portfolio/src/*"], 12 | // }, 13 | // "types": ["vite/client"], 14 | }, 15 | "include": ["./**/*", "./.wxt/wxt.d.ts", "global.d.ts", "env.d.ts"], 16 | "exclude": ["node_modules", ".output"], 17 | } 18 | -------------------------------------------------------------------------------- /apps/wallet/tsr.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "routesDirectory": "./src/routes", 3 | "generatedRouteTree": "./src/router.gen.ts", 4 | "routeFileIgnorePrefix": "-", 5 | "quoteStyle": "single" 6 | } 7 | -------------------------------------------------------------------------------- /apps/wallet/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { WxtVitest } from 'wxt/testing' 3 | 4 | export default defineConfig(() => { 5 | return { 6 | plugins: [WxtVitest()], 7 | test: { 8 | // environment: 'happy-dom', 9 | }, 10 | } 11 | }) 12 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('eslint').Linter.Config[]} */ 2 | export default [ 3 | { 4 | ignores: [ 5 | '**/dist', 6 | '**/node_modules', 7 | '**/protos', 8 | '**/proto', 9 | '**/coverage', 10 | '**/storybook-static', 11 | ], 12 | }, 13 | ] 14 | -------------------------------------------------------------------------------- /packages/colors/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import configs from '@status-im/eslint-config' 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [...configs] 5 | -------------------------------------------------------------------------------- /packages/colors/src/blur.ts: -------------------------------------------------------------------------------- 1 | export const blur = { 2 | 'neutral-100/70': 'rgba(9 16 28 / 70%)', 3 | 'neutral-5/70': 'rgba(245 246 248 / 70%)', 4 | 'neutral-80/1': 'rgba(25 36 56 / 1%)', 5 | 'neutral-80/80': 'rgba(25 36 56 / 80%)', 6 | 'neutral-90/70': 'rgba(19 29 47 / 70%)', 7 | 'neutral-95/70': 'rgba(13 22 37 / 70%)', 8 | 'white/70': 'rgba(255 255 255 / 70%)', 9 | } 10 | -------------------------------------------------------------------------------- /packages/colors/src/danger.ts: -------------------------------------------------------------------------------- 1 | export const danger = { 2 | '50': 'rgba(233 84 96 / 100%)', 3 | '50/5': 'rgba(233 84 96 / 5%)', 4 | '50/10': 'rgba(233 84 96 / 10%)', 5 | '50/20': 'rgba(233 84 96 / 20%)', 6 | '50/30': 'rgba(233 84 96 / 30%)', 7 | '50/40': 'rgba(233 84 96 / 40%)', 8 | '60': 'rgba(186 67 77 / 100%)', 9 | } 10 | -------------------------------------------------------------------------------- /packages/colors/src/index.ts: -------------------------------------------------------------------------------- 1 | export { blur } from './blur' 2 | export { customisation } from './customisation' 3 | export { danger } from './danger' 4 | export { networks } from './networks' 5 | export { neutral } from './neutral' 6 | export { security } from './security' 7 | export { social } from './social' 8 | export { success } from './success' 9 | export { white } from './white' 10 | -------------------------------------------------------------------------------- /packages/colors/src/networks.ts: -------------------------------------------------------------------------------- 1 | export const networks = { 2 | arbitrum: 'rgba(107 213 240 / 100%)', 3 | ethereum: 'rgba(117 142 235 / 100%)', 4 | hermez: 'rgba(235 132 98 / 100%)', 5 | optimism: 'rgba(231 110 110 / 100%)', 6 | polygon: 'rgba(173 113 243 / 100%)', 7 | unknown: 'rgba(238 242 245 / 100%)', 8 | 'x-dai': 'rgba(63 192 189 / 100%)', 9 | 'zk-sync': 'rgba(159 160 254 / 100%)', 10 | } 11 | -------------------------------------------------------------------------------- /packages/colors/src/success.ts: -------------------------------------------------------------------------------- 1 | export const success = { 2 | '50': 'rgba(35 173 160 / 100%)', 3 | '50/5': 'rgba(35 173 160 / 5%)', 4 | '50/10': 'rgba(35 173 160 / 10%)', 5 | '50/20': 'rgba(35 173 160 / 20%)', 6 | '50/30': 'rgba(35 173 160 / 30%)', 7 | '50/40': 'rgba(35 173 160 / 40%)', 8 | '60': 'rgba(28 138 128 / 100%)', 9 | } 10 | -------------------------------------------------------------------------------- /packages/colors/src/white.ts: -------------------------------------------------------------------------------- 1 | export const white = { 2 | '5': 'rgba(255 255 255 / 5%)', 3 | '10': 'rgba(255 255 255 / 10%)', 4 | '20': 'rgba(255 255 255 / 20%)', 5 | '30': 'rgba(255 255 255 / 30%)', 6 | '40': 'rgba(255 255 255 / 40%)', 7 | '50': 'rgba(255 255 255 / 50%)', 8 | '60': 'rgba(255 255 255 / 60%)', 9 | '80': 'rgba(255 255 255 / 80%)', 10 | '90': 'rgba(255 255 255 / 90%)', 11 | '100': 'rgba(255 255 255 / 100%)', 12 | } 13 | -------------------------------------------------------------------------------- /packages/colors/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "include": ["./src"], 4 | 5 | "compilerOptions": { 6 | "outDir": "./dist" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/colors/vite.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { defineConfig } from 'vite' 4 | 5 | export default defineConfig(({ mode }) => { 6 | return { 7 | build: { 8 | target: 'es2020', 9 | lib: { 10 | entry: 'src/index.ts', 11 | formats: ['es', 'cjs'], 12 | fileName: format => `index.${format}.js`, 13 | }, 14 | sourcemap: true, 15 | emptyOutDir: mode === 'production', 16 | }, 17 | } 18 | }) 19 | -------------------------------------------------------------------------------- /packages/components/.env: -------------------------------------------------------------------------------- 1 | TAMAGUI_TARGET=web 2 | STORYBOOK_DISABLE_TELEMETRY=1 3 | STORYBOOK_ENABLE_CRASH_REPORTS=0 4 | -------------------------------------------------------------------------------- /packages/components/.env.development: -------------------------------------------------------------------------------- 1 | STORYBOOK_DISABLE_TELEMETRY=1 2 | STORYBOOK_ENABLE_CRASH_REPORTS=0 3 | -------------------------------------------------------------------------------- /packages/components/.env.production: -------------------------------------------------------------------------------- 1 | STORYBOOK_DISABLE_TELEMETRY=1 2 | STORYBOOK_ENABLE_CRASH_REPORTS=0 3 | -------------------------------------------------------------------------------- /packages/components/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | .DS_Store 3 | THUMBS_DB 4 | node_modules/ 5 | types/ 6 | 7 | # local env files 8 | !.env.* 9 | .env*.local 10 | -------------------------------------------------------------------------------- /packages/components/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "plugins": ["prettier-plugin-tailwindcss"], 6 | "tailwindFunctions": ["cx", "cva"], 7 | "tailwindConfig": "./tailwind.config.ts" 8 | } 9 | -------------------------------------------------------------------------------- /packages/components/.storybook/preview-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /packages/components/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import configs, { tailwindcssConfigs } from '@status-im/eslint-config' 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [...configs, ...tailwindcssConfigs] 5 | -------------------------------------------------------------------------------- /packages/components/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /packages/components/public/assets/background-blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/status-im/status-web/aca00b0758ea8bd3b33a1e53bac432dc626afbfe/packages/components/public/assets/background-blur.png -------------------------------------------------------------------------------- /packages/components/src/avatar/index.tsx: -------------------------------------------------------------------------------- 1 | export * from './avatar' 2 | -------------------------------------------------------------------------------- /packages/components/src/button/index.tsx: -------------------------------------------------------------------------------- 1 | export { Button } from './button' 2 | -------------------------------------------------------------------------------- /packages/components/src/checkbox/index.tsx: -------------------------------------------------------------------------------- 1 | export type { CheckboxProps } from './checkbox' 2 | export { Checkbox } from './checkbox' 3 | -------------------------------------------------------------------------------- /packages/components/src/context-tag/index.tsx: -------------------------------------------------------------------------------- 1 | export { ContextTag, type ContextTagProps } from './context-tag' 2 | -------------------------------------------------------------------------------- /packages/components/src/counter/index.tsx: -------------------------------------------------------------------------------- 1 | export type { CounterProps } from './counter' 2 | export { Counter } from './counter' 3 | -------------------------------------------------------------------------------- /packages/components/src/dropdown-button/index.tsx: -------------------------------------------------------------------------------- 1 | export type { DropdownButtonProps } from './dropdown-button' 2 | export { DropdownButton } from './dropdown-button' 3 | -------------------------------------------------------------------------------- /packages/components/src/dropdown-menu/index.tsx: -------------------------------------------------------------------------------- 1 | export * as DropdownMenu from './dropdown-menu' 2 | -------------------------------------------------------------------------------- /packages/components/src/icon-button/index.tsx: -------------------------------------------------------------------------------- 1 | export { IconButton, type IconButtonProps } from './icon-button' 2 | -------------------------------------------------------------------------------- /packages/components/src/input/index.tsx: -------------------------------------------------------------------------------- 1 | export { Input, type InputProps } from './input' 2 | -------------------------------------------------------------------------------- /packages/components/src/popover/index.tsx: -------------------------------------------------------------------------------- 1 | export * as Popover from './popover' 2 | -------------------------------------------------------------------------------- /packages/components/src/provider/index.tsx: -------------------------------------------------------------------------------- 1 | export { StatusProvider, useConfig } from './provider' 2 | -------------------------------------------------------------------------------- /packages/components/src/segmented-control/index.tsx: -------------------------------------------------------------------------------- 1 | export * as SegmentedControl from './segmented-control' 2 | -------------------------------------------------------------------------------- /packages/components/src/shortcut/index.tsx: -------------------------------------------------------------------------------- 1 | export * from './shortcut' 2 | -------------------------------------------------------------------------------- /packages/components/src/skeleton/index.tsx: -------------------------------------------------------------------------------- 1 | export { Skeleton } from './skeleton' 2 | -------------------------------------------------------------------------------- /packages/components/src/step/index.tsx: -------------------------------------------------------------------------------- 1 | export { Step } from './step' 2 | -------------------------------------------------------------------------------- /packages/components/src/switch/index.tsx: -------------------------------------------------------------------------------- 1 | export type { SwitchProps } from './switch' 2 | export { Switch } from './switch' 3 | -------------------------------------------------------------------------------- /packages/components/src/tabs/index.tsx: -------------------------------------------------------------------------------- 1 | export * as Tabs from './tabs' 2 | -------------------------------------------------------------------------------- /packages/components/src/tag/index.tsx: -------------------------------------------------------------------------------- 1 | export { Tag } from './tag' 2 | -------------------------------------------------------------------------------- /packages/components/src/text/index.tsx: -------------------------------------------------------------------------------- 1 | export { Text, type TextProps } from './text' 2 | -------------------------------------------------------------------------------- /packages/components/src/toast/index.tsx: -------------------------------------------------------------------------------- 1 | export type { ToastProps } from './toast' 2 | export { Toast } from './toast' 3 | export { ToastContainer, useToast } from './toast-container' 4 | -------------------------------------------------------------------------------- /packages/components/src/tooltip/index.tsx: -------------------------------------------------------------------------------- 1 | export type { TooltipProps } from './tooltip' 2 | export { Tooltip } from './tooltip' 3 | -------------------------------------------------------------------------------- /packages/components/src/types.ts: -------------------------------------------------------------------------------- 1 | import type { customisation } from '@status-im/colors' 2 | 3 | export type IconElement = React.ReactElement< 4 | React.ComponentPropsWithoutRef<'svg'> 5 | > 6 | 7 | export type CustomisationColorType = keyof typeof customisation 8 | 9 | export type Prettify = { 10 | [K in keyof T]: T[K] 11 | } & {} 12 | -------------------------------------------------------------------------------- /packages/components/src/utils/variants.ts: -------------------------------------------------------------------------------- 1 | export { cva as cva, type VariantProps } from 'cva' 2 | -------------------------------------------------------------------------------- /packages/components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base", 3 | "include": ["src", "tailwind.config.ts", ".storybook"], 4 | "compilerOptions": { 5 | "jsx": "preserve", 6 | "outDir": "./dist" 7 | }, 8 | "references": [] 9 | } 10 | -------------------------------------------------------------------------------- /packages/components/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/{colors,icons} ./", 4 | "installCommand": "pnpm install --dir ../../ --frozen-lockfile", 5 | "buildCommand": "turbo run build --cwd ../../ --filter=components... && pnpm storybook:build" 6 | } 7 | -------------------------------------------------------------------------------- /packages/eslint-config/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @status-im/eslint-config 2 | 3 | ## 1.0.2 4 | 5 | ### Patch Changes 6 | 7 | - 3c71b8c: update ESLint 8 | 9 | ## 1.0.1 10 | 11 | ### Patch Changes 12 | 13 | - 2fad122: use pnpm and update node 14 | 15 | ## 1.0.0 16 | 17 | ### Major Changes 18 | 19 | - edfdfd6: switch to tailwind 20 | 21 | ## 0.3.0 22 | 23 | ### Minor Changes 24 | 25 | - 08791fc: include build step 26 | 27 | ## 0.2.0 28 | 29 | ### Minor Changes 30 | 31 | - 181faba: prepare packages for release 32 | -------------------------------------------------------------------------------- /packages/eslint-config/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [ 5 | { 6 | ...js.configs.recommended, 7 | files: ['**/*.js', '**/*.mjs', '**/*.cjs'], 8 | }, 9 | ] 10 | -------------------------------------------------------------------------------- /packages/icons/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import configs from '@status-im/eslint-config' 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [ 5 | ...configs, 6 | { 7 | ignores: ['dist', 'index.js', 'index.es.js'], 8 | }, 9 | ] 10 | -------------------------------------------------------------------------------- /packages/icons/src/12/check-large-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgCheckLargeIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgCheckLargeIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/chevron-down-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronDownIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronDownIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/chevron-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronLeftIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronLeftIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/chevron-right-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronRightIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronRightIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/chevron-top-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronTopIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronTopIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/colour-preview-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgColourPreviewIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgColourPreviewIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/less-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgLessIcon = (props: SVGProps) => ( 4 | 14 | 20 | 21 | ) 22 | export default SvgLessIcon 23 | -------------------------------------------------------------------------------- /packages/icons/src/12/notification-badge-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgNotificationBadgeIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgNotificationBadgeIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/on-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOnIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgOnIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/12/play-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgPlayIcon = (props: SVGProps) => ( 4 | 14 | 18 | 19 | ) 20 | export default SvgPlayIcon 21 | -------------------------------------------------------------------------------- /packages/icons/src/12/sent-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgSentIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgSentIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/12/stop-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgStopIcon = (props: SVGProps) => ( 4 | 14 | 18 | 19 | ) 20 | export default SvgStopIcon 21 | -------------------------------------------------------------------------------- /packages/icons/src/12/volume-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgVolumeIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgVolumeIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/16/chart-line-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChartLineIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgChartLineIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/16/check-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgCheckIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgCheckIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/chevron-down-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronDownIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronDownIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/chevron-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronLeftIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgChevronLeftIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/16/chevron-right-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronRightIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgChevronRightIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/16/chevron-top-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronTopIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronTopIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/cover-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgCoverIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgCoverIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/16/notification-badge-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgNotificationBadgeIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgNotificationBadgeIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/offline-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOfflineIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOfflineIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/offline-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOfflineLeftIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOfflineLeftIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/online-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOnlineIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOnlineIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/online-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOnlineLeftIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOnlineLeftIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/16/remove-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgRemoveIcon = (props: SVGProps) => ( 4 | 14 | 20 | 21 | ) 22 | export default SvgRemoveIcon 23 | -------------------------------------------------------------------------------- /packages/icons/src/16/volume-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgVolumeIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgVolumeIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/20/bullet-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgBulletIcon = (props: SVGProps) => ( 4 | 14 | 18 | 19 | ) 20 | export default SvgBulletIcon 21 | -------------------------------------------------------------------------------- /packages/icons/src/20/check-circle-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgCheckCircleIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | 17 | ) 18 | export default SvgCheckCircleIcon 19 | -------------------------------------------------------------------------------- /packages/icons/src/20/check-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgCheckIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgCheckIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/chevron-down-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronDownIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronDownIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/chevron-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronLeftIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgChevronLeftIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/20/chevron-right-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronRightIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgChevronRightIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/20/chevron-top-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgChevronTopIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgChevronTopIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/flash-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgFlashIcon = (props: SVGProps) => ( 4 | 14 | 19 | 20 | ) 21 | export default SvgFlashIcon 22 | -------------------------------------------------------------------------------- /packages/icons/src/20/hold-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgHoldIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | 17 | ) 18 | export default SvgHoldIcon 19 | -------------------------------------------------------------------------------- /packages/icons/src/20/hypen-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgHypenIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgHypenIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/minimize-windows-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgMinimizeWindowsIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgMinimizeWindowsIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/neutral-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgNeutralIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | 17 | ) 18 | export default SvgNeutralIcon 19 | -------------------------------------------------------------------------------- /packages/icons/src/20/notification-badge-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgNotificationBadgeIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgNotificationBadgeIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/offline-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOfflineIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOfflineIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/offline-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOfflineLeftIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOfflineLeftIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/online-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOnlineIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOnlineIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/online-left-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgOnlineLeftIcon = (props: SVGProps) => ( 4 | 14 | 15 | 16 | ) 17 | export default SvgOnlineLeftIcon 18 | -------------------------------------------------------------------------------- /packages/icons/src/20/play-media-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgPlayMediaIcon = (props: SVGProps) => ( 4 | 14 | 18 | 19 | ) 20 | export default SvgPlayMediaIcon 21 | -------------------------------------------------------------------------------- /packages/icons/src/20/remove-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgRemoveIcon = (props: SVGProps) => ( 4 | 14 | 20 | 21 | ) 22 | export default SvgRemoveIcon 23 | -------------------------------------------------------------------------------- /packages/icons/src/20/stop-media-icon.tsx: -------------------------------------------------------------------------------- 1 | import type { SVGProps } from 'react' 2 | 3 | const SvgStopMediaIcon = (props: SVGProps) => ( 4 | 14 | 18 | 19 | ) 20 | export default SvgStopMediaIcon 21 | -------------------------------------------------------------------------------- /packages/icons/src/reactions/index.ts: -------------------------------------------------------------------------------- 1 | export { default as AngryIcon } from './angry-icon' 2 | export { default as LaughIcon } from './laugh-icon' 3 | export { default as LoveIcon } from './love-icon' 4 | export { default as SadIcon } from './sad-icon' 5 | export { default as ThumbsDownIcon } from './thumbs-down-icon' 6 | export { default as ThumbsUpIcon } from './thumbs-up-icon' 7 | -------------------------------------------------------------------------------- /packages/icons/svg/12/active-members-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/12/add-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/arrow-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/arrow-left&right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/arrow-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/arrow-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/check-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/check-large-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/chevron-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/chevron-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/chevron-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/chevron-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/close-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/colour-preview-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/delivered-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/download-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/dropdown-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/external-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/flashlight-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /packages/icons/svg/12/hold-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/italic-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/key-control-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/key-option-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/key-space-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/key-tab-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/less-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/mutual-contact-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/icons/svg/12/neutral-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/notification-badge-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/off-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/on-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/12/options-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/pending-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/icons/svg/12/pending-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /packages/icons/svg/12/play-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/positive-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /packages/icons/svg/12/progress-100-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/icons/svg/12/progress-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/pullup-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/12/seed-phrase-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/12/sent-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/12/share-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/12/stop-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/12/timeout-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/icons/svg/12/volume-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/active-members-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/add-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/arrow-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/arrow-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/arrow-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chart-line-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/check-green-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/16/check-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevron-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevron-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevron-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevron-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevrons-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/chevrons-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/close-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/close-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/cover-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/decline-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/done-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/dropdown-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/16/external-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/focal-point-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/forward-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/git-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/hashtag-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/history-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/line-chart-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/messages-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/more-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/negative-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /packages/icons/svg/16/node-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/notification-badge-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/offline-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/offline-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/online-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/online-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/16/options-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/pending-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/16/positive-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/16/progress-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/16/pullup-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/16/refresh-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/remove-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/reply-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/save-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/search-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/sort-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/threads-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/unread-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/16/volume-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/16/warning-red-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /packages/icons/svg/20/active-members-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/add-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/add-sm-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/add-small-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/add-token-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /packages/icons/svg/20/alert-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/arrow-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/arrow-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/arrow-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/automatic-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/block-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/bullet-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/20/check-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/icons/svg/20/check-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevron-down-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevron-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevron-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevron-top-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevrons-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/chevrons-right-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/clear-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /packages/icons/svg/20/close-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/close-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/close-mac-os-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/close-windows-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/code-data-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/code-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/colombia-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/correct-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/icons/svg/20/cross-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/decline-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 19 | 20 | -------------------------------------------------------------------------------- /packages/icons/svg/20/destroy-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/done-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/download-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/drag-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/dropdown-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/duration-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/england-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /packages/icons/svg/20/external-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/favourite-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/feed-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/flag-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/flags-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/flash-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/flash-off-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/flashlight-off-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/focus-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/forward-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/france-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/fullscreen-mac-os-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/hashtag-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/history-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/hold-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/icons/svg/20/hypen-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/incorrect-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/info-badge-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/info-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/intermediate-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/italic-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/italy-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/keycard-logo-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/maximize-windows-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/mention-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/menu-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/messages-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/messenger-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/minimize-mac-os-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/minimize-windows-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/mutual-contact-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /packages/icons/svg/20/negative-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 16 | 22 | 23 | -------------------------------------------------------------------------------- /packages/icons/svg/20/netherlands-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/neutral-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/icons/svg/20/new-message-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/node-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/notification-badge-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/objects-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/offline-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/offline-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/online-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/online-left-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/icons/svg/20/options-circle-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/options-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/pause-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/pause-media-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/pending-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/pending-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/play-media-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/20/positive-state-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/pullup-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/icons/svg/20/recent-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/refresh-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/remove-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/reorder-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/reply-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/russia-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /packages/icons/svg/20/search-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/seed-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/sort-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/stop-media-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/20/switch-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/tablet-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/icons/svg/20/unblock-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/unread-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/untrustworthy-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /packages/icons/svg/20/windows-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/20/zoom-in-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/20/zoom-out-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/social/flickr-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /packages/icons/svg/social/twitch-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /packages/icons/svg/social/twitter-icon.svg: -------------------------------------------------------------------------------- 1 | 8 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /packages/icons/svgr.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@svgr/core').Config} */ 2 | module.exports = { 3 | typescript: true, 4 | jsxRuntime: 'automatic', 5 | expandProps: 'end', 6 | filenameCase: 'kebab', 7 | svgProps: { 8 | 'aria-hidden': true, 9 | focusable: false, 10 | }, 11 | // note: SVGO transformation is handled in the sync script 12 | svgo: false, 13 | } 14 | -------------------------------------------------------------------------------- /packages/icons/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "include": ["./src"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/status-js/buf.gen.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | plugins: 3 | - name: es 4 | path: ./node_modules/.bin/protoc-gen-es 5 | opt: target=ts 6 | out: ./src/protos 7 | -------------------------------------------------------------------------------- /packages/status-js/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import configs from '@status-im/eslint-config' 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [ 5 | ...configs, 6 | { 7 | files: ['./src/protos/**/*_pb.ts'], 8 | rules: { 9 | 'eslint-comments/disable-enable-pair': 'off', 10 | 'eslint-comments/no-unlimited-disable': 'off', 11 | }, 12 | }, 13 | ] 14 | -------------------------------------------------------------------------------- /packages/status-js/src/client/community/get-chat-uuid.ts: -------------------------------------------------------------------------------- 1 | export function getChatUuid(chatId: string) { 2 | return chatId.slice(68) 3 | } 4 | -------------------------------------------------------------------------------- /packages/status-js/src/client/community/is-encrypted.ts: -------------------------------------------------------------------------------- 1 | import { 2 | type CommunityDescription, 3 | CommunityTokenPermission_Type, 4 | } from '../../protos/communities_pb' 5 | 6 | export function isEncrypted( 7 | tokenPermissions: CommunityDescription['tokenPermissions'], 8 | ): boolean { 9 | return Object.values(tokenPermissions).some( 10 | permission => 11 | permission.type === CommunityTokenPermission_Type.BECOME_MEMBER, 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /packages/status-js/src/helpers/contains-only-emoji.ts: -------------------------------------------------------------------------------- 1 | // todo?: should ignore whitespaces with replace(/\s+/g, '').trim() 2 | /** 3 | * https://www.unicode.org/reports/tr51/#def_emoji_presentation 4 | */ 5 | export function containsOnlyEmoji(text: string): boolean { 6 | return /^\p{Emoji_Presentation}+$/gu.test(text) 7 | } 8 | -------------------------------------------------------------------------------- /packages/status-js/src/helpers/get-difference-by-keys.ts: -------------------------------------------------------------------------------- 1 | export function getDifferenceByKeys>( 2 | a: T, 3 | b: T, 4 | ): T { 5 | const initialValue: Record = {} 6 | 7 | const result = Object.entries(a).reduce((result, [key, value]) => { 8 | if (!b[key]) { 9 | result[key] = value 10 | } 11 | 12 | return result 13 | }, initialValue) 14 | 15 | return result as T 16 | } 17 | -------------------------------------------------------------------------------- /packages/status-js/src/protos/buf.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | breaking: 3 | use: 4 | - FILE 5 | lint: 6 | use: 7 | - DEFAULT 8 | except: 9 | - ENUM_ZERO_VALUE_SUFFIX 10 | - ENUM_VALUE_PREFIX 11 | -------------------------------------------------------------------------------- /packages/status-js/src/protos/pin-message.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "enums.proto"; 4 | 5 | message PinMessage { 6 | uint64 clock = 1; 7 | string message_id = 2; 8 | string chat_id = 3; 9 | bool pinned = 4; 10 | // The type of message (public/one-to-one/private-group-chat) 11 | MessageType message_type = 5; 12 | } 13 | -------------------------------------------------------------------------------- /packages/status-js/src/protos/segment-message.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | message SegmentMessage { 4 | // hash of the entire original message 5 | bytes entire_message_hash = 1; 6 | // Index of this segment within the entire original message 7 | uint32 index = 2; 8 | // Total number of segments the entire original message is divided into 9 | uint32 segments_count = 3; 10 | // The payload data for this particular segment 11 | bytes payload = 4; 12 | } 13 | -------------------------------------------------------------------------------- /packages/status-js/src/request-client/indices-to-tags.ts: -------------------------------------------------------------------------------- 1 | import { tags as tagsMap } from './tags' 2 | 3 | import type { Tag } from './map-community' 4 | 5 | export const indicesToTags = (indices: number[]) => { 6 | const tagsMapByIndex = Object.entries(tagsMap) 7 | 8 | return indices.reduce((tags, index) => { 9 | const tag = tagsMapByIndex[index] 10 | 11 | if (!tag) { 12 | return tags 13 | } 14 | 15 | tags.push({ text: tag[0], emoji: tag[1] }) 16 | 17 | return tags 18 | }, []) 19 | } 20 | -------------------------------------------------------------------------------- /packages/status-js/src/request-client/tags-to-indices.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest' 2 | 3 | import { tagsToIndices } from './tags-to-indices' 4 | 5 | test('should return tags for indices', () => { 6 | expect(tagsToIndices(['Art', 'Blockchain', 'Books & blogs'])).toEqual([ 7 | 1, 2, 3, 8 | ]) 9 | }) 10 | 11 | test('should not return tags for no indices', () => { 12 | expect(tagsToIndices([])).toEqual([]) 13 | }) 14 | 15 | test('should not return tags for unknown indices', () => { 16 | expect(tagsToIndices(['foo', 'bar'])).toEqual([]) 17 | }) 18 | -------------------------------------------------------------------------------- /packages/status-js/src/request-client/tags-to-indices.ts: -------------------------------------------------------------------------------- 1 | import { tags as tagsMap } from './tags' 2 | 3 | export const tagsToIndices = (tags: string[]): number[] => { 4 | const tagsMapByIndex = Object.entries(tagsMap) 5 | 6 | return tags.reduce((indices, tag) => { 7 | const index = tagsMapByIndex.findIndex(([text]) => text === tag) 8 | 9 | if (index !== -1) { 10 | indices.push(index) 11 | } 12 | 13 | return indices 14 | }, []) 15 | } 16 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/compress-public-key.ts: -------------------------------------------------------------------------------- 1 | import * as secp from 'ethereum-cryptography/secp256k1' 2 | 3 | export function compressPublicKey(publicKey: string): string { 4 | try { 5 | const pk = publicKey.replace(/^0[xX]/, '') // ensures hexadecimal digits without "base prefix" 6 | return secp.Point.fromHex(pk).toHex(true) 7 | } catch { 8 | throw new Error('Invalid public key') 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/decompress-public-key.ts: -------------------------------------------------------------------------------- 1 | import * as secp from 'ethereum-cryptography/secp256k1' 2 | 3 | export function decompressPublicKey(publicKey: string): string { 4 | try { 5 | const pk = publicKey.replace(/^0[xX]/, '') // ensures hexadecimal digits without "base prefix" 6 | return secp.Point.fromHex(pk).toHex() 7 | } catch { 8 | throw new Error('Invalid public key') 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/get-next-clock.ts: -------------------------------------------------------------------------------- 1 | export const getNextClock = (currentClock = 0n): bigint => { 2 | const now = BigInt(Date.now()) // timestamp 3 | const nextClock = currentClock < now ? now : currentClock + 1n 4 | 5 | return nextClock 6 | } 7 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/id-to-content-topic.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest' 2 | 3 | import { idToContentTopic } from './id-to-content-topic' 4 | 5 | test('should return content topic', () => { 6 | expect(idToContentTopic).toBeDefined() 7 | }) 8 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/is-clock-valid.ts: -------------------------------------------------------------------------------- 1 | const MAX_OFFSET = BigInt(120 * 1000) 2 | 3 | export function isClockValid( 4 | messageClock: bigint, 5 | messageTimestamp: Date, 6 | ): boolean { 7 | if (messageClock <= 0) { 8 | return false 9 | } 10 | 11 | if (messageClock > BigInt(messageTimestamp.getTime()) + MAX_OFFSET) { 12 | return false 13 | } 14 | 15 | return true 16 | } 17 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/payload-to-id.ts: -------------------------------------------------------------------------------- 1 | import { keccak256 } from 'ethereum-cryptography/keccak' 2 | import { bytesToHex, concatBytes } from 'ethereum-cryptography/utils' 3 | 4 | export function payloadToId( 5 | payload: Uint8Array, 6 | publicKey: Uint8Array, 7 | ): string { 8 | const hash = keccak256(concatBytes(publicKey, payload)) // order matters 9 | const hex = bytesToHex(hash) 10 | 11 | return `0x${hex}` 12 | } 13 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/public-key-to-eth-address.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest' 2 | 3 | import { publicKeyToETHAddress } from './public-key-to-eth-address' 4 | 5 | test('should return ETH address from public key', () => { 6 | expect( 7 | publicKeyToETHAddress( 8 | '0x02bcbe39785b55a22383f82ac631ea7500e204627369c4ea01d9296af0ea573f57', 9 | ), 10 | ).toEqual('0x0A1ec0002dDB927B03049F1aD8D589aBEA4Ba4b3') 11 | }) 12 | -------------------------------------------------------------------------------- /packages/status-js/src/utils/public-key-to-eth-address.ts: -------------------------------------------------------------------------------- 1 | import { ethers } from 'ethers' 2 | 3 | import { deserializePublicKey } from './deserialize-public-key' 4 | 5 | export function publicKeyToETHAddress(publicKey: string): string { 6 | const key = deserializePublicKey(publicKey, { 7 | compress: false, 8 | }) 9 | const address = ethers.computeAddress(key) 10 | 11 | return address 12 | } 13 | -------------------------------------------------------------------------------- /packages/status-js/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "include": ["src"], 4 | "compilerOptions": { 5 | "outDir": "./dist", 6 | "declarationDir": "./dist/types", 7 | 8 | // todo: turn on? 9 | "noImplicitReturns": false, 10 | "noPropertyAccessFromIndexSignature": false 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/wallet/.env: -------------------------------------------------------------------------------- 1 | INFURA_API_KEY="" 2 | ALCHEMY_API_KEY="" 3 | COINGECKO_API_KEY="" 4 | CRYPTOCOMPARE_API_KEY="" 5 | MERCURYO_SECRET_KEY="" 6 | -------------------------------------------------------------------------------- /packages/wallet/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | .DS_Store 3 | THUMBS_DB 4 | node_modules/ 5 | types/ 6 | 7 | # local env files 8 | !.env.* 9 | .env*.local 10 | -------------------------------------------------------------------------------- /packages/wallet/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid", 5 | "plugins": ["prettier-plugin-tailwindcss"], 6 | "tailwindFunctions": ["cx", "cva"], 7 | "tailwindConfig": "./tailwind.config.ts" 8 | } 9 | -------------------------------------------------------------------------------- /packages/wallet/eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import configs, { tailwindcssConfigs } from '@status-im/eslint-config' 2 | import globals from 'globals' 3 | 4 | /** @type {import('eslint').Linter.Config[]} */ 5 | export default [ 6 | ...configs, 7 | ...tailwindcssConfigs, 8 | { 9 | files: ['**/*.ts', '**/*.mts', '**/*.mjs', '**/*.tsx'], 10 | languageOptions: { 11 | globals: { 12 | ...globals.browser, 13 | ...globals.node, 14 | }, 15 | }, 16 | }, 17 | ] 18 | -------------------------------------------------------------------------------- /packages/wallet/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. 6 | -------------------------------------------------------------------------------- /packages/wallet/postcss.config.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable-next-line no-undef */ 2 | module.exports = { 3 | plugins: { 4 | tailwindcss: {}, 5 | autoprefixer: {}, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /packages/wallet/src/components/image/index.ts: -------------------------------------------------------------------------------- 1 | export type { ImageProps } from './image' 2 | export { Image } from './image' 3 | export type * from './types' 4 | -------------------------------------------------------------------------------- /packages/wallet/src/components/shorten-address/index.tsx: -------------------------------------------------------------------------------- 1 | type Props = { 2 | address: string 3 | } 4 | 5 | export const shortenAddress = (address: string) => { 6 | const prefix = address.slice(0, 5) 7 | const suffix = address.slice(-4) 8 | 9 | return `${prefix}...${suffix}` 10 | } 11 | 12 | const ShortenAddress = ({ address }: Props) => { 13 | const shortenedAddress = shortenAddress(address) 14 | 15 | return shortenedAddress 16 | } 17 | 18 | export { ShortenAddress } 19 | export type { Props as ShortenAddressProps } 20 | -------------------------------------------------------------------------------- /packages/wallet/src/data/api/index.ts: -------------------------------------------------------------------------------- 1 | import { createCallerFactory, router } from './lib/trpc' 2 | import { assetsRouter as assets } from './routers/assets' 3 | import { collectiblesRouter as collectibles } from './routers/collectibles' 4 | 5 | export const apiRouter = router({ 6 | assets, 7 | collectibles, 8 | }) 9 | 10 | export type ApiRouter = typeof apiRouter 11 | 12 | export const createCaller: ReturnType> = 13 | createCallerFactory(apiRouter) 14 | -------------------------------------------------------------------------------- /packages/wallet/src/data/api/types.ts: -------------------------------------------------------------------------------- 1 | import type { ApiRouter } from '.' 2 | import type { Collectible } from './routers/collectibles' 3 | import type { inferRouterInputs, inferRouterOutputs } from '@trpc/server' 4 | 5 | type ApiInput = inferRouterInputs 6 | type ApiOutput = inferRouterOutputs 7 | 8 | export type { ApiInput, ApiOutput, ApiRouter } 9 | 10 | export type NetworkType = 11 | | 'ethereum' 12 | | 'optimism' 13 | | 'arbitrum' 14 | | 'base' 15 | | 'polygon' 16 | | 'bsc' 17 | 18 | export type { Collectible } 19 | -------------------------------------------------------------------------------- /packages/wallet/src/data/index.ts: -------------------------------------------------------------------------------- 1 | export { type ApiRouter, apiRouter } from './api' 2 | export type { ApiInput, ApiOutput, Collectible, NetworkType } from './api/types' 3 | export { createAPI } from './trpc/api' 4 | -------------------------------------------------------------------------------- /packages/wallet/src/data/trpc/api.ts: -------------------------------------------------------------------------------- 1 | // import 'server-only' 2 | 3 | import { cache } from 'react' 4 | 5 | import { headers as nextHeaders } from 'next/headers' 6 | 7 | import { createCaller } from '../api' 8 | 9 | const createContext = cache(async () => { 10 | const headers = new Headers(await nextHeaders()) 11 | 12 | return { 13 | headers, 14 | } 15 | }) 16 | 17 | export async function createAPI() { 18 | const ctx = await createContext() 19 | const api = createCaller(ctx) 20 | 21 | return api 22 | } 23 | -------------------------------------------------------------------------------- /packages/wallet/src/types.ts: -------------------------------------------------------------------------------- 1 | import type { customisation } from '@status-im/colors' 2 | 3 | export type IconElement = React.ReactElement< 4 | React.ComponentPropsWithoutRef<'svg'> 5 | > 6 | 7 | export type CustomisationColorType = keyof typeof customisation 8 | 9 | export type Prettify = { 10 | [K in keyof T]: T[K] 11 | } & {} 12 | -------------------------------------------------------------------------------- /packages/wallet/src/utils/variants.ts: -------------------------------------------------------------------------------- 1 | export { cva as cva, type VariantProps } from 'cva' 2 | -------------------------------------------------------------------------------- /packages/wallet/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base", 3 | "include": [ 4 | "src", 5 | "tailwind.config.ts", 6 | ".storybook", 7 | "next-env.d.ts", 8 | "**/*.json" 9 | ], 10 | "compilerOptions": { 11 | "jsx": "preserve", 12 | "outDir": "./dist", 13 | "allowJs": true, 14 | "plugins": [{ "name": "next" }] 15 | }, 16 | "references": [] 17 | } 18 | -------------------------------------------------------------------------------- /packages/wallet/vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "ignoreCommand": "git diff --quiet HEAD^ HEAD ../../{patches,package.json,turbo.json} ../../packages/{colors,icons} ./", 4 | "installCommand": "pnpm install --dir ../../ --frozen-lockfile", 5 | "buildCommand": "turbo run build --cwd ../../ --filter=components... && pnpm storybook:build" 6 | } 7 | -------------------------------------------------------------------------------- /patches/@libp2p__bootstrap@9.0.10.patch: -------------------------------------------------------------------------------- 1 | diff --git a/package.json b/package.json 2 | index 11a2f4140081ebc25b840e544b2d005124d27e0e..d8ae3f86d2bee2e8838979e04c76e1f37256da3f 100644 3 | --- a/package.json 4 | +++ b/package.json 5 | @@ -24,7 +24,7 @@ 6 | ], 7 | "exports": { 8 | ".": { 9 | - "types": "./src/index.d.ts", 10 | + "types": "./dist/src/index.d.ts", 11 | "import": "./dist/src/index.js" 12 | } 13 | }, 14 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/eslint-config' 3 | - 'packages/status-js' 4 | - 'packages/colors' 5 | - 'packages/icons' 6 | - 'packages/components' 7 | - 'packages/wallet' 8 | - 'apps/connector' 9 | - 'apps/portfolio' 10 | - 'apps/wallet' 11 | - 'apps/api' 12 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "git": { 4 | "deploymentEnabled": { 5 | "main": false 6 | } 7 | } 8 | } 9 | --------------------------------------------------------------------------------