diff --git a/.vscode/launch.json b/.vscode/launch.json index ec0bc584..8d758622 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -59,48 +59,6 @@ "smartStep": true, "console": "integratedTerminal", "sourceMaps": true - }, - { - "name": "Launch Website via Next.js (server-side)", - "type": "node-terminal", - "request": "launch", - "cwd": "${workspaceFolder}/apps/website", - "command": "yarn dev" - }, - { - "name": "Attach to Website via Next.js (client-side)", - "type": "chrome", - "request": "launch", - "webRoot": "${workspaceFolder}/apps/website", - "url": "http://localhost:3000", - "skipFiles": [ - ".next/**", - "${workspaceFolder}/node_modules/**", - "/**", - "**/webpack-internal://**" - ], - "runtimeArgs": ["--auto-open-devtools-for-tabs"] - }, - // todo: consider https://code.visualstudio.com/docs/editor/debugging#_compound-launch-configurations instead - // todo: consider client+prelaunch as full stack - // todo: consider workspaces https://code.visualstudio.com/docs/editor/multi-root-workspaces#_debugging - { - "name": "Launch Website via Next.js (full stack)", - "type": "node-terminal", - "request": "launch", - "cwd": "${workspaceFolder}/apps/website", - "command": "yarn dev -p 3000", - "serverReadyAction": { - "pattern": "started server on .+, url: (https?://.+)", - "action": "startDebugging", - "name": "Attach to Website via Next.js (client-side)", - "killOnServerStop": false - }, - "skipFiles": [ - ".next/**", - "${workspaceFolder}/node_modules/**", - "/**" - ] } ] } diff --git a/apps/website/.env b/apps/website/.env deleted file mode 100644 index 10aaef1f..00000000 --- a/apps/website/.env +++ /dev/null @@ -1,15 +0,0 @@ -# .env, .env.development, and .env.production files should be included in your repository as they define defaults. -# .env*.local should be added to .gitignore, as those files are intended to be ignored. -# .env.local is where secrets can be stored. -# -# – https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables#default-environment-variables - -# The vercel env pull sub-command will export development environment variables to a local .env file or a different file of your choice. -# -# `vercel env pull ./apps/website/.env.development.local` -# -# – https://vercel.com/docs/cli/env#exporting-development-environment-variables - -IGNORE_TS_CONFIG_PATHS=true -TAMAGUI_TARGET=web -TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD=1 diff --git a/apps/website/.env.development b/apps/website/.env.development deleted file mode 100644 index 8b4b877e..00000000 --- a/apps/website/.env.development +++ /dev/null @@ -1,14 +0,0 @@ -# .env, .env.development, and .env.production files should be included in your repository as they define defaults. -# .env*.local should be added to .gitignore, as those files are intended to be ignored. -# .env.local is where secrets can be stored. -# -# – https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables#default-environment-variables - -# The vercel env pull sub-command will export development environment variables to a local .env file or a different file of your choice. -# -# `vercel env pull ./apps/website/.env.development.local` -# -# – https://vercel.com/docs/cli/env#exporting-development-environment-variables - -NEXT_PUBLIC_GHOST_API_URL=https://demo.ghost.io -NEXT_PUBLIC_GHOST_API_KEY=22444f78447824223cefc48062 diff --git a/apps/website/.eslintrc b/apps/website/.eslintrc deleted file mode 100644 index 51442486..00000000 --- a/apps/website/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "root": true, - "extends": [ - "@status-im/eslint-config", - "plugin:tailwindcss/recommended", - "next", - "next/core-web-vitals" - ] -} diff --git a/apps/website/.gitignore b/apps/website/.gitignore deleted file mode 100644 index 13120e9a..00000000 --- a/apps/website/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* -.pnpm-debug.log* - -# local env files -!.env.* -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo - -# Tamagui -.tamagui - -# Contentlayer -.contentlayer diff --git a/apps/website/.prettierrc b/apps/website/.prettierrc deleted file mode 100644 index 2ec5b2fc..00000000 --- a/apps/website/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "semi": false, - "singleQuote": true, - "arrowParens": "avoid", - "tailwindConfig": "./tailwind.config.cjs" -} diff --git a/apps/website/@types/custom.d.ts b/apps/website/@types/custom.d.ts deleted file mode 100644 index 13847028..00000000 --- a/apps/website/@types/custom.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -type ApiError = { - extensions: { code?: string; [key: string]: string } - locations: { column: number; line: number }[] - message: string - path: string[] -} - -declare interface GraphqlApiError { - response?: { - errors?: ApiError[] - } -} diff --git a/apps/website/codegen.yml b/apps/website/codegen.yml deleted file mode 100644 index 74c100ad..00000000 --- a/apps/website/codegen.yml +++ /dev/null @@ -1,36 +0,0 @@ -schema: - - https://hasura.infra.status.im/v1/graphql - -documents: - - ./src/**/*.tsx - - ./src/**/*.ts - -overwrite: true - -hooks: - afterAllFileWrite: - - prettier --write - - eslint --fix - -generates: - ./src/lib/graphql/generated/schemas.ts: - plugins: - - typescript - - ./src/lib/graphql/generated/operations.ts: - preset: import-types - presetConfig: - typesPath: ./schemas - plugins: - - typescript-operations - - ./src/lib/graphql/generated/hooks.ts: - preset: import-types - presetConfig: - typesPath: ./operations - plugins: - - typescript-react-query - config: - fetcher: '../api#createFetcher' - exposeQueryKeys: true - errorType: GraphqlApiError diff --git a/apps/website/config.json b/apps/website/config.json deleted file mode 100644 index cfaa7320..00000000 --- a/apps/website/config.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "nav": [ - { - "Getting started": [ - { "Intro to Status": "/getting-started" }, - { "Getting started for new users": "/getting-started" }, - { "Getting started with your community": "/getting-started" }, - { "Download Status": "/getting-started" } - ] - }, - { - "Messaging": [ - { "Direct messages": "/messaging-and-web3-browser" }, - { "Group chats": "/messaging-and-web3-browser" }, - { "Message features and tools": "/messaging-and-web3-browser" }, - { "Share files and conversations": "/messaging-and-web3-browser" } - ] - }, - { - "Communities": [ - { "Status Communities": "/status-communities" }, - { "Channels": "/status-communities" }, - { "Create your community": "/status-communities" }, - { "Administer your community": "/status-communities" }, - { "Administer channels": "/status-communities" }, - { "Use tokens and set community permissions": "/status-communities" }, - { "Status Web Communities": "/status-communities" } - ] - }, - { - "Wallet": [ - { "Getting started": "/status-wallet" }, - { "Send and receive crypto": "/status-wallet" }, - { "Privacy and security": "/status-wallet" }, - { "Understand crypto assets": "/status-wallet" }, - { "Handle your crypto": "/status-wallet" } - ] - }, - { - "Your profile": [ - { "Manage your profile": "/your-profile-and-preferences" }, - { - "Change your settings and preferences": "/your-profile-and-preferences" - }, - { "Adjust your notifications": "/your-profile-and-preferences" }, - { - "Your profile security and privacy": "/your-profile-and-preferences" - }, - { "Troubleshooting": "/your-profile-and-preferences" }, - { "Use your Keycard": "/your-profile-and-preferences" }, - { - "Handle your contact list and user verification": "/your-profile-and-preferences" - } - ] - }, - { - "Network nodes": ["network-nodes-and-statistics"] - } - ] -} diff --git a/apps/website/contentlayer.config.ts b/apps/website/contentlayer.config.ts deleted file mode 100644 index 0e51336b..00000000 --- a/apps/website/contentlayer.config.ts +++ /dev/null @@ -1,261 +0,0 @@ -import { - defineDocumentType, - defineNestedType, - makeSource, -} from '@contentlayer/source-files' -import remarkHeadings from '@vcarl/remark-headings' -import { slug as slugify } from 'github-slugger' -import { toString } from 'mdast-util-to-string' -import * as fs from 'node:fs/promises' -import path from 'node:path' -import rehypePrettyCode from 'rehype-pretty-code' -import rehypeSlug from 'rehype-slug' -import { remark } from 'remark' -import remarkDirective from 'remark-directive' -import remarkGfm from 'remark-gfm' -// import remarkMessageControl from 'remark-message-control' -// import remarkAdmonitions from 'remark-github-beta-blockquote-admonitions' -// import remarkBreaks from 'remark-breaks' -import strip from 'strip-markdown' -import { visit } from 'unist-util-visit' - -import type { Plugin } from 'unified' -import type { Node } from 'unist' - -const CONTENT_DIR_PATH = 'docs' - -export type DocHeading = { - level: 1 | 2 - value: string -} - -export type DocIndex = { - path: string - title: string - content: { - [key in string]: string[] - } -} - -const HeroImage = defineNestedType(() => ({ - name: 'HeroImage', - fields: { - src: { type: 'string', required: true }, - alt: { type: 'string', required: true }, - }, -})) - -export const Doc = defineDocumentType(() => ({ - name: 'Doc', - filePathPattern: '**/*.md{,x}', - contentType: 'mdx', - - fields: { - id: { type: 'number', required: false }, - revision: { type: 'string', required: false }, - language: { type: 'string', required: false }, - title: { type: 'string', required: true }, - author: { type: 'string', required: false }, - image: { type: 'nested', of: HeroImage, required: false }, - }, - - computedFields: { - slug: { - // @ts-expect-error TODO - type: 'string[]', - resolve: doc => doc._raw.flattenedPath.split('/'), - // resolve: doc => { - // return getPathSegments(doc._raw.flattenedPath).map( - // ({ pathName }) => pathName - // ) - // }, - }, - url: { - type: 'string', - resolve: doc => `/help/${doc._raw.flattenedPath}`, - - // resolve: doc => { - // const slug = getPathSegments(doc._raw.flattenedPath).map( - // ({ pathName }) => pathName - // ) - - // return `/help/${slug.join('/')}` - // }, - }, - pathSegments: { - // @ts-expect-error TODO - type: '{ order: number; pathName: string }[]', - resolve: doc => getPathSegments(doc._raw.flattenedPath), - }, - - titleSlug: { - type: 'string', - resolve: doc => slugify(doc.title), - }, - - headings: { - // @ts-expect-error TODO - type: '{ level: 1 | 2; value: string, slug: string }[]', - resolve: async doc => { - const result = await remark().use(remarkHeadings).process(doc.body.raw) - - return (result.data.headings as { depth: number; value: string }[]) - .filter(({ depth }) => [1, 2].includes(depth)) - .map(({ depth, value }) => ({ - level: depth as 1 | 2, - value, - slug: slugify(value), - })) - }, - }, - last_edited: { - type: 'date', - resolve: async (doc): Promise => { - const stats = await fs.stat( - path.join(CONTENT_DIR_PATH, doc._raw.sourceFilePath) - ) - return stats.mtime - }, - }, - }, -})) - -function getPathSegments(filePath: string) { - return ( - filePath - .split('/') - // .slice(1) // skip content dir path – `/docs` - .map(fileName => { - const re = /^((\d+)-)?(.*)$/ - const [, , orderStr, pathName] = fileName.match(re) ?? [] - const order = orderStr ? parseInt(orderStr) : 0 - return { order, pathName } - }) - ) -} - -const remarkAdmonition: Plugin = () => { - return tree => { - visit(tree, node => { - if ( - node.type === 'textDirective' || - node.type === 'leafDirective' || - node.type === 'containerDirective' - ) { - // @ts-expect-error TODO - if (!['info', 'tip', 'warn'].includes(node.name)) { - return - } - - // Store node.name before overwritten with "Alert". - // @ts-expect-error TODO - const type = node.name - - // const data = node.data || (node.data = {}) - // const tagName = node.type === 'textDirective' ? 'span' : 'div' - - node.type = 'mdxJsxFlowElement' - // @ts-expect-error TODO - node.name = 'Admonition' - // @ts-expect-error TODO - node.attributes = [ - { type: 'mdxJsxAttribute', name: 'type', value: type }, - // @ts-expect-error TODO - { type: 'mdxJsxAttribute', name: 'title', value: node.label }, - ] - } - }) - } -} - -const remarkIndexer: Plugin = () => (root, file) => { - file.data.index = indexer(root) -} - -function indexer(root: Node) { - const index: DocIndex['content'] = {} - - let parentHeading = '' - visit(root, ['paragraph', 'heading'], node => { - if (node.type === 'heading') { - const text = toString(node, { includeImageAlt: false }) - parentHeading = text - return - } - - const text = toString(node, { includeImageAlt: false }) - index[parentHeading] ??= [] - index[parentHeading].push(text) - }) - - return index -} - -export default makeSource({ - contentDirPath: CONTENT_DIR_PATH, - documentTypes: [Doc], - mdx: { - remarkPlugins: [ - remarkGfm, - remarkDirective, - remarkAdmonition, - // [remarkMessageControl, { name: 'hello' }], - ], - rehypePlugins: [ - rehypeSlug, - - [ - rehypePrettyCode, - { - // Use one of Shiki's packaged themes - theme: 'github-light', - // Keep the background or use a custom background color? - // keepBackground: true, - // Callback hooks to add custom logic to nodes when visiting - // them. - onVisitLine(node: any) { - // Prevent lines from collapsing in `display: grid` mode, and - // allow empty lines to be copy/pasted - if (node.children.length === 0) { - node.children = [{ type: 'text', value: ' ' }] - } - }, - onVisitHighlightedLine(node: any) { - // Each line node by default has `class="line"`. - node.properties.className.push('highlighted') - }, - onVisitHighlightedWord(node: any) { - // Each word node has no className by default. - node.properties.className = ['word'] - }, - }, - ], - ], - }, - onSuccess: async importData => { - const { allDocs } = await importData() - - const basePath = '/docs' - const index: DocIndex[] = [] - - for (const doc of allDocs) { - const result = await remark() - .use(strip, { - keep: ['heading'], - }) - .use(remarkGfm) - .use(remarkIndexer, { path: basePath + '/' + doc._raw.flattenedPath }) - .process(doc.body.raw) - - index.push({ - title: doc.title, - path: basePath + '/' + doc._raw.flattenedPath, - content: result.data.index as DocIndex['content'], - }) - } - - const filePath = path.resolve('./.contentlayer/en.json') - - fs.writeFile(filePath, JSON.stringify(index)) - }, -}) diff --git a/apps/website/docs/getting-started/about-the-ethereum-blockchain.md b/apps/website/docs/getting-started/about-the-ethereum-blockchain.md deleted file mode 100644 index 1b2bdd1c..00000000 --- a/apps/website/docs/getting-started/about-the-ethereum-blockchain.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 438 -revision: '0' -language: en -title: About the Ethereum blockchain ---- diff --git a/apps/website/docs/getting-started/add-a-contact-in-status.md b/apps/website/docs/getting-started/add-a-contact-in-status.md deleted file mode 100644 index 202bb40c..00000000 --- a/apps/website/docs/getting-started/add-a-contact-in-status.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -id: 382 -revision: '0' -language: en -title: Add a contact in Status ---- - -To start a chat with someone, you first need to add them to your contacts. - -After sending a contact request, wait for the other person to accept it. Once they do that, both you and them can send each other [direct messages](../messaging-and-web3-browser/send-direct-messages-to-your-contacts.md) and invite each other to [group chats](../messaging-and-web3-browser/add-members-to-a-group-chat.md). - -If the person you want to chat with doesn't have a Status profile yet, you can [invite them to join Status](./invite-friends-to-status.md). - -To add someone to your contact list, you need their [chat key](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md), which represents their public Status profile. They can share it with you, so ask them to [Share their Status profile with you](../your-profile-and-preferences/share-your-status-profile.md). You can also use their QR code to add them to contacts. - -:::tip -To add someone you know from a group chat or community, simply right-click their name and select :desktop-add-user: **Send a contact request**. -::: - -:::tip -To respond to contact requests, check out [Respond to a contact request](../your-profile-and-preferences/respond-to-a-contact-request.md). -::: - -## Add a contact - -=== "Mobile" - - 1. Ask the person you want to add to your contacts to share their profile. - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap :mobile-add: **Plus** and select :mobile-add-user: **Add a contact**. - 1. Paste the link to that person's profile into the field or tap :mobile-qr-code: to scan the QR code. - 1. Tap :mobile-profile: **View profile** > :mobile-profile: **Send contact request**. - 1. In your introductory message, briefly explain who you are and why you want to add them to your contacts. This is the first message your contact sees from you. Once you're done, tap **Send contact request**. - -:::tip -To see someone's QR code, ask them to go to **Messages** > :mobile-qr-code: **Share**. Follow the steps below to add them to contacts using this code. -::: - -=== "Desktop" - - 1. Ask the person you want to add to your contacts to share their profile. - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 1. Click :desktop-start-chat: **Start chat**. - 1. Paste the link to that person's profile into the **To** field. - 1. In your introductory message, briefly explain who you are and why you want to add them to your contacts. This is the first message your contact sees from you. Once you're done, click **Send contact request**. diff --git a/apps/website/docs/getting-started/add-a-new-device-to-your-status-profile.md b/apps/website/docs/getting-started/add-a-new-device-to-your-status-profile.md deleted file mode 100644 index 5f8ea6ea..00000000 --- a/apps/website/docs/getting-started/add-a-new-device-to-your-status-profile.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 345 -revision: '0' -language: en -title: Add a new device to your Status profile ---- diff --git a/apps/website/docs/getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md b/apps/website/docs/getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md deleted file mode 100644 index 75cd76a1..00000000 --- a/apps/website/docs/getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -id: 374 -revision: '0' -language: en -title: Create or restore your Status profile using a recovery phrase ---- - -You can link your existing Ethereum address to a new Status profile. For instance, if you already have a [non-custodial Ethereum wallet](../status-wallet/status-wallet-your-quick-start-guide.md) such as Metamask or Trust Wallet, you already have an Ethereum address and a [recovery phrase](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md). - -If you already have a Status account and used your profile in the past 30 days, you can restore it with the profile's recovery phrase. - -:::tip -If you already use Status on one device and want to add your profile and funds to a new device, you don't need your recovery phrase. [Sync your new device](./add-a-new-device-to-your-status-profile.md) for the best experience. -::: - -## What to expect - -- Your wallet funds are safe and recoverable as long as you know your recovery phrase and [keep it safe](../your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md). -- When you import an existing Ethereum address from a wallet, you can operate with your funds using [Status Wallet](../how-to-use-wallet-your-quick-start-guide.md). -- If you already use Status but don't have access to your previous device, you can restore your Status profile on a new device if you have used the app within the past 30 days. -- If you don't have access to your previous device and haven't used Status in the past 30 days, your funds are safe, but your profile is unrecoverable. You can still use your recovery phrase to create a new profile, but your previous profile configuration (contacts, profile settings and community membership) is lost. - -This table summarizes your options when you have a recovery phrase: - -| You have | Next step | Your Status profile | Your wallet funds | -| :---------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | :------------------ | :---------------- | -| :material-check: Recovery phrase :octicons-x-24:Status profile | [Create profile using a recovery phrase](#create-or-restore-your-profile-using-a-recovery-phrase) | New profile | :material-check: | -| :material-check: Recovery phrase :material-check: Used your Status profile in the past 30 days | [Restore profile using a recovery phrase](#create-or-restore-your-profile-using-a-recovery-phrase) | :material-check: | :material-check: | -| :material-check: Recovery phrase :octicons-x-24: Used your Status profile in the past 30 days :octicons-x-24: Access to your device | [Create profile using a recovery phrase](#create-or-restore-your-profile-using-a-recovery-phrase) | :octicons-x-24: | :material-check: | - -(:material-check: available, :octicons-x-24: not available ) - -:::tip -Creating or restoring a profile using a recovery phrase follows the same procedure. -::: - -## Create or restore your profile using a recovery phrase - -When you restore your Status profile using a recovery phrase, Status tries to pull your information from the [decentralized Waku network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md). Status doesn't use centralized servers and doesn't store your profile information. - -=== "Mobile" - - ### Step 1: Enter your recovery phrase words - - 1. Open the Status app and tap **I'm new to Status**. - 1. On the following screen, select **Use recovery phrase**. - 1. Enter the 12, 18 or 24 words in your recovery phrase, separated by a space. - 1. Status suggests matching words as you type. To speed up the recovery phrase entry, tap the right suggestion. - 1. Tap **Continue**. - 1. [Customize your Status profile](#customize-your-profile) with your preferred name, profile picture, and colour, and press **Continue**. - - ### Step 2: Create your password - - 1. Enter and confirm your password and tap **Confirm password**. - 1. Configure your device's biometrics (fingerprint, face or other) to fill in your password. If you want to enable biometrics later, tap **Maybe later**. - 1. On the **profile identifiers** screen, you can learn more about your Status profile or tap **Skip** to finish the profile setup. - 1. Tap **Start using Status**. - - If Status finds an existing profile in the [Waku network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md), you can use your existing profile or the one you have just created. When you choose your existing profile, [synchronize this profile](./add-a-new-device-to-your-status-profile.md) with your device. - -=== "Desktop" - - ### Step 1: Enter your recovery phrase words - - 1. Open the Status app. Your operating system may ask you to set your notification preferences for Status. In the **Allow notifications** screen, click **OK, got it**. - 1. Check the box to accept the Status **Terms of Use and Privacy Policy** and click **Get Started**. You can find and read this information on the [Status website :octicons-tab-external-16:](https://status.im). - 1. On the welcome screen, click **I am new to Status**. - 1. Click **Import a recovery phrase** and, on the next screen, click **Import a recovery phrase** again. - 1. Enter the 12, 18 or 24 words in your recovery phrase, separated by a space. - 1. Status auto-fills and suggests matching words as you type. To speed up the recovery phrase entry, click the right suggestion. - 1. Tap **Import**. - - ### Step 2: Create your password and customize other settings - - 1. On the **Your profile** screen, [customize your Status profile](#customize-your-profile) with your preferred name, profile picture, and colour, and click **Continue**. - 1. On the **Your emojihash and identicon ring** screen, you can learn more about your Status profile. Click **Next**. - 1. Enter and confirm your password and click **Create password**. - 1. Confirm your password again and click **Finalize Status Password Creation**. - 1. Enable your device's biometrics (fingerprint, face or other) to fill in your password. Alternatively, click **I prefer to use my password**. - -:::warn -Status doesn't know your password and can't reset it for you. If you forget your password, you may lose access to your Status profile and wallet funds. Remember your Status password, keep it in a safe place and don't share it with anyone. -::: - -## Customize your profile - -Here you only fill out basic information. You can customize your Status profile further at any time in the [Status settings](../edit-your-status-profile.md). - -=== "Mobile" - - 1. On the **Create profile** screen, set your profile name. Don't use special characters or emojis. - 1. Tap the :mobile-camera: **Camera** in your avatar and set a profile picture. To add your profile picture, you must authorize the Status app to access your camera or photo gallery. - 1. Choose a profile colour. - 1. Tap **Continue** to complete your profile customization. - -=== "Desktop" - - 1. On the **Your profile** screen, set your profile name. Don't use special characters or emojis. - 1. Click :desktop-plus: **Plus** in your avatar and set a profile picture. Adjust your picture size and click **Make this my profile picture**. - 1. Click **Next** to complete your profile customization. diff --git a/apps/website/docs/getting-started/download-status-for-linux.md b/apps/website/docs/getting-started/download-status-for-linux.md deleted file mode 100644 index 810cffa6..00000000 --- a/apps/website/docs/getting-started/download-status-for-linux.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: 32 -title: Download Status for Linux ---- - -The Status desktop app is the best way to use Status on Linux. Take a look at the steps below to get started. - -## Step 1: Download the Linux app - -1. Visit [status.im/get :octicons-tab-external-16:](https://status.im/get) -1. Under the **Desktop** section, click the **Linux** button. -1. Locate the file in your Downloads folder (the download file name begins with StatusIm-Desktop). -1. Open Terminal and change the directory to your Downloads folder. Example: - - ```shell - cd ~/Downloads - ``` - -1. Run the following command in your terminal to extract the tarball file: - - ```shell - tar xvf StatusIm-Desktop-*.tar.gz - ``` - -:::info -Replace the \* with the Status app version number. For example: `StatusIm-Desktop-v1.2.tar.gz` -::: - -1. Optionally, [verify the Status app GPG signature](#verify-the-status-app-gpg-signature). -1. To launch Status, go to the directory where you have the Status app and double click the AppImage file. - -## Step 2: Run the Status app for the first time - -If this is the first time you run Status on your computer, check [Run the Status app for the first time](./run-the-status-app-for-the-first-time.md). - -## Verify the Status app GPG signature - -When you verify the GPG signature of the Status app, you confirm that the app has not been altered. To verify the GPG signature on Linux, you use Status app public key and the [GNU Privacy Guard (or GPG) :octicons-tab-external-16:](https://gnupg.org/) software that comes with most Linux distributions. - -1. Open Terminal and change to the directory with the Status AppImage file. -1. Download and import the Status release public key: - - ```sh - curl -s 'https:///status.im/gpg/release.asc' | gpg --import - - ``` - -1. Update the GPG trust database to include the Status' public key: - - ```sh - echo '1DD92FFA442D4B5C85C039231A151FD0883555FE:6:' | gpg --import-ownertrust - - ``` - -1. Validate the Status app GPG signature. For example, if you downloaded the Status app version 1.2, run this command: - - ```shell - gpg --verify 'StatusIm-Desktop-v1.2.AppImage.asc' - ``` - -1. The GPG signature verification is sucessful when you can see the `Good signature` message. Example: - - ```shell - gpg: Good signature from "Status.im Release Signing (GPG key for signing Status.im release builds.) " [ultimate] - ``` diff --git a/apps/website/docs/getting-started/download-status-for-mac.md b/apps/website/docs/getting-started/download-status-for-mac.md deleted file mode 100644 index 895b43eb..00000000 --- a/apps/website/docs/getting-started/download-status-for-mac.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: 104 -revision: 1#357 -language: en -title: Download Status for Mac ---- - -The Status desktop app is the best way to experience Status on the Mac operating system (macOS). The app works on Mac computers using either the Apple silicon processor or the Intel processor. - -## Download the Status app - -1. Visit [status.im/get :octicons-tab-external-16:](https://status.im/get). -1. Under the **Desktop** section, click the **Mac** button. -1. Once the download is complete, open a Finder window and select your Downloads folder. -1. Double click the Status .dmg file. -1. In the new window that opens, drag and drop the Status icon to the Applications folder. -1. To launch the Status app, open the Applications folder and double-click the Status icon. - -## Common questions - -### I have downloaded the Status app from a different website - -To protect yourself from malware, viruses or scams, always download the Status app from a trusted source. For the Mac version, use the [Status website :octicons-tab-external-16:](https:///status.im/get). - -### Nothing happens on my Mac when I try to open the Status app - -Make sure that your Mac has the minimum software required to run the Status app. - -### My Mac shows a security message when I try to install the Status app - -Download the Status app for Mac from the [Status website :octicons-tab-external-16:](https:///status.im/get/). If your Mac still shows a security message and you can't install the Status app, check the [Safely open apps on your Mac :octicons-tab-external-16:](https:///support.apple.com/en-us/HT202491) Apple Support article for more information. diff --git a/apps/website/docs/getting-started/download-status-for-windows.md b/apps/website/docs/getting-started/download-status-for-windows.md deleted file mode 100644 index f56ac14a..00000000 --- a/apps/website/docs/getting-started/download-status-for-windows.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -# id: '' -revision: '0' -title: Download Status for Windows ---- diff --git a/apps/website/docs/getting-started/download-the-status-mobile-app.md b/apps/website/docs/getting-started/download-the-status-mobile-app.md deleted file mode 100644 index 449e2202..00000000 --- a/apps/website/docs/getting-started/download-the-status-mobile-app.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 106 -revision: '0' -language: en -title: Download the Status mobile app ---- diff --git a/apps/website/docs/getting-started/how-to-use-status-your-quick-start-guide.md b/apps/website/docs/getting-started/how-to-use-status-your-quick-start-guide.md deleted file mode 100644 index a4289796..00000000 --- a/apps/website/docs/getting-started/how-to-use-status-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 98 -revision: '0' -language: en -title: 'How to use Status: your quick start guide' ---- diff --git a/apps/website/docs/getting-started/if-you-upgrade-from-the-old-status-app.md b/apps/website/docs/getting-started/if-you-upgrade-from-the-old-status-app.md deleted file mode 100644 index 400fbd99..00000000 --- a/apps/website/docs/getting-started/if-you-upgrade-from-the-old-status-app.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 615 -revision: '0' -language: en -title: 'If you upgrade from the old Status app' ---- diff --git a/apps/website/docs/getting-started/index.md b/apps/website/docs/getting-started/index.md deleted file mode 100644 index 5a328848..00000000 --- a/apps/website/docs/getting-started/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Getting started ---- - -Find out what makes Status unique, run Status for the first time and discover essential app features. - -## Intro to Status - -- [What is **Status**](./what-is-status.md) -- [How to use Status: your **quick start guide**](./how-to-use-status-your-quick-start-guide.md) -- [Understand **your actions** in Status](./understand-your-actions-in-status.md) -- [About the **Ethereum blockchain**](./about-the-ethereum-blockchain.md) -- [**Layer-2 scaling** solutions for Ethereum](./layer-2-scaling-solutions-for-ethereum.md) - -## Getting started for new users - -- [**Run** the Status app for the **first time**](./run-the-status-app-for-the-first-time.md) -- [**Create or restore** your Status profile using a **recovery phrase**](./create-or-restore-your-status-profile-using-a-recovery-phrase.md) -- [**Sign into** your Status profile on a new device](../your-profile-and-preferences/sign-into-your-status-profile-on-a-new-device.md) -- [**Add a contact** in Status](../your-profile-and-preferences/add-a-contact-in-status.md) -- [**Join** a Status Community](../status-communities/join-a-status-community.md) -- [**Invite friends** to Status](./invite-friends-to-status.md) -- [**Status Wallet**: your quick start guide](../status-wallet/status-wallet-your-quick-start-guide.md) -- [Secure your **information and funds**](../your-profile-and-preferences/secure-your-information-and-funds.md) - -## Getting started with your community - -- [**Create** a Status Community](../status-communities/create-a-status-community.md) -- [Getting started for **community owners**](../status-communities/getting-started-for-community-owners.md) -- [About Status **Web Communities**](../status-communities/about-status-web-communities.md) - -## Download Status - -- [Download Status for **Windows**](./download-status-for-windows.md) -- [Download Status for **Mac**](./download-status-for-mac.md) -- [Download Status for **Linux**](./download-status-for-linux.md) -- [Download the Status **mobile app**](./download-the-status-mobile-app.md) -- [If you **upgrade** from the old Status app](./if-you-upgrade-from-the-old-status-app.md) diff --git a/apps/website/docs/getting-started/invite-friends-to-status.md b/apps/website/docs/getting-started/invite-friends-to-status.md deleted file mode 100644 index da054718..00000000 --- a/apps/website/docs/getting-started/invite-friends-to-status.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -id: 407 -revision: '0' -language: en -title: Invite friends to Status ---- - -If some of your friends don't have Status profiles yet, you can invite them and help them find you in the app. Once they [download](./#download-status.md) and install Status, [share your profile with them](../your-profile-and-preferences/share-your-status-profile.md) and ask them to [add you to their contacts](../your-profile-and-preferences/add-a-contact-in-status.md). diff --git a/apps/website/docs/getting-started/join-a-status-community.md b/apps/website/docs/getting-started/join-a-status-community.md deleted file mode 100644 index 97e0f810..00000000 --- a/apps/website/docs/getting-started/join-a-status-community.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 103 -revision: '0' -language: en -title: Join a Status Community ---- diff --git a/apps/website/docs/getting-started/layer-2-scaling-solutions-for-ethereum.md b/apps/website/docs/getting-started/layer-2-scaling-solutions-for-ethereum.md deleted file mode 100644 index 133b254c..00000000 --- a/apps/website/docs/getting-started/layer-2-scaling-solutions-for-ethereum.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 594 -revision: '0' -language: en -title: Layer-2 scaling solutions for Ethereum ---- diff --git a/apps/website/docs/getting-started/run-the-status-app-for-the-first-time.md b/apps/website/docs/getting-started/run-the-status-app-for-the-first-time.md deleted file mode 100644 index bf751694..00000000 --- a/apps/website/docs/getting-started/run-the-status-app-for-the-first-time.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: 41 -revision: '0' -language: en -title: Run the Status app for the first time ---- - -When you run Status for the first time, the app creates a pair of [cryptographic keys] [understand-your-status-keys-and-recovery-phrase] representing your Status identity. Unlike centralized apps, Status doesn't rely on your username or email address to identify your profile. Instead, it uses your private and public keys. - -These keys are securely stored on your device and protected by your Status password. To understand how these keys work and how they protect your data and privacy, check out [Understand your Status keys and recovery phrase](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md). - -## Create a new Status profile - -If you want to create your profile from an existing recovery phrase, check out [Create or restore your Status profile using a recovery phrase](./create-or-restore-your-status-profile-using-a-recovery-phrase.md). If you're going to use a Keycard to create your profile, check out [Create or restore your Status profile using Keycard](../your-profile-and-preferences/create-or-restore-your-status-profile-using-keycard.md). - -=== "Mobile" - - 1. Open the Status app and tap **I'm new to Status**. - 1. On the following screen, select **Generate keys**. - 1. [Customize your Status profile](#customize-your-profile) with your preferred name, profile picture and colour, and tap **Continue**. - 1. Enter and confirm your password and tap **Confirm password**. - 1. Configure your device's biometrics (fingerprint, face or other) to fill in your password. If you want to enable biometrics later, tap **Maybe later**. - 1. On the **profile identifiers** screen, you can learn more about your Status profile or tap **Skip** to finish the profile setup. - 1. Tap **Start using Status**. - -=== "Desktop" - - ### Step 1: Generate new keys - - 1. Open the Status app. Your operating system may ask you to set your notification preferences for Status. In the **Allow notifications** screen, click **OK, got it**. - 1. Check the box to accept the Status **Terms of Use and Privacy Policy** and click **Get Started**. You can find and read this information on the [Status website :octicons-tab-external-16:](https://status.im). - 1. On the welcome screen, click **I am new to Status**. - 1. Click **Generate new keys**. - - ### Step 2: Create your password and customize other settings - - 1. On the **Your profile** screen, [customize your Status profile](#customize-your-profile) with your preferred name, profile picture, and colour, and click **Continue**. - 1. On the **Your emojihash and identicon ring** screen, you can learn more about your Status profile. Click **Next**. - 1. Enter and confirm your password and click **Create password**. - 1. Confirm your password again and click **Finalize Status Password Creation**. - 1. Enable your device's biometrics (fingerprint, face or other) to fill in your password. Alternatively, click **I prefer to use my password**. - -To protect your Status data and funds, [back up and secure your recovery phrase](../your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md) immediately after creating your profile. - -:::warn -Status doesn't know your password and can't reset it for you. If you forget your password, you may lose access to your Status profile and wallet funds. Remember your Status password, keep it in a safe place and don't share it with anyone. -::: - -## Customize your profile - -Here you only fill out basic information. You can customize your Status profile further at any time in the [Status settings](../edit-your-status-profile.md). - -=== "Mobile" - - 1. On the **Create profile** screen, set your profile name. Don't use special characters or emojis. - 1. Tap the :mobile-camera: **Camera** in your avatar and set a profile picture. To add your profile picture, you must authorize the Status app to access your camera or photo gallery. - 1. Choose a profile colour. - 1. Tap **Continue** to complete your profile customization. - -=== "Desktop" - - 1. On the **Your profile** screen, set your profile name. Don't use special characters or emojis. - 1. Click :desktop-plus: **Plus** in your avatar and set a profile picture. Adjust your picture size and click **Make this my profile picture**. - 1. Click **Next** to complete your profile customization. diff --git a/apps/website/docs/getting-started/understand-your-actions-in-status.md b/apps/website/docs/getting-started/understand-your-actions-in-status.md deleted file mode 100644 index 003412fb..00000000 --- a/apps/website/docs/getting-started/understand-your-actions-in-status.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -# id -revision: '0' -title: Understand your actions in Status ---- diff --git a/apps/website/docs/getting-started/what-is-status.md b/apps/website/docs/getting-started/what-is-status.md deleted file mode 100644 index de428b98..00000000 --- a/apps/website/docs/getting-started/what-is-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 101 -revision: '0' -language: en -title: What is Status ---- diff --git a/apps/website/docs/guide.md b/apps/website/docs/guide.md deleted file mode 100644 index 7a2a8cb5..00000000 --- a/apps/website/docs/guide.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -id: 0 -revision: '0' -language: en -title: Getting Started -author: jorge-campo ---- - -amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea **commodo consequat**. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - -## New heading - -**Aute consequat cillum enim eu mollit sunt aute. Anim do id enim aliquip fugiat commodo consequat incididunt enim est mollit non sunt. Officia aliqua elit exercitation exercitation.** - -_Tempor laborum nostrud commodo anim tempor irure id eiusmod qui. Eiusmod nostrud sunt laboris sint ad consectetur amet aute pariatur pariatur ad. Quis quis incididunt aliqua excepteur et enim mollit._ - -~~Ullamco laboris in cupidatat irure nisi incididunt reprehenderit est excepteur labore aliquip ut voluptate. Enim quis nulla labore aliquip nostrud commodo. Qui mollit reprehenderit id sunt.~~ - -Laboris dolore eu nulla sunt. **Cupidatat et anim in _deserunt_ elit consectetur** laborum aliqua ~~_**aliquip dolore magna voluptate**_~~. Nostrud cupidatat laboris. - -## H2 - -Elit excepteur exercitation duis ea proident laborum sunt sunt laboris irure tempor nisi. Ex culpa occaecat et sit pariatur adipisicing voluptate. Sit ullamco consectetur deserunt et. Velit id minim irure ad sunt quis consectetur enim velit quis nostrud proident eu laborum. Aliqua incididunt elit et nisi qui mollit. Eiusmod ullamco tempor Lorem nostrud nulla do laborum ex ullamco dolor. - -### H3 - -Consectetur exercitation minim duis excepteur quis culpa veniam dolor. Sit ipsum adipisicing eiusmod aliqua. Labore amet minim reprehenderit magna sunt ad minim nisi aliqua. Cupidatat dolore aliquip excepteur sit duis incididunt qui id ea. Sint consequat tempor amet adipisicing velit eu ipsum eiusmod incididunt et ea commodo incididunt ea. Excepteur voluptate ullamco est ea occaecat velit. - -Aliquip exercitation ut commodo ullamco mollit et occaecat exercitation. Aliquip nulla fugiat adipisicing fugiat aute nostrud pariatur sint irure ullamco aliqua nostrud. Ea elit reprehenderit amet est esse culpa sit. Aliqua minim ad eiusmod duis. Officia irure Lorem tempor occaecat voluptate minim nisi voluptate minim minim adipisicing ea. Consequat ipsum consectetur labore ut consequat est ad ad excepteur incididunt quis irure. Deserunt ea magna fugiat sunt ea. - -## Images - -![community card](/docs/images/media.png) - -## Lists - -### Unordered - -- one -- two -- three - -### Ordered - -1. one -2. two -3. three - -### Tasks - -- [ ] one -- [ ] two -- [ ] three - -## Admonitions - -:::warn -Here is some warning -::: - -:::info -Here is some warning
-::: - -:::tip -Here is some warning -::: - -### Code blocks - -Needs some improvement on styling. - -```ts -const a = 1 -const b = 2 -const c = a + b -console.log(c) -``` - -## Work in progress - -### Tables - -| Name | Age | -| :------- | :-- | -| John Doe | 30 | -| Jane Doe | 25 | - -### Tabs - -### Icons diff --git a/apps/website/docs/messaging-and-web3-browser/about-losing-access-to-a-channel.md b/apps/website/docs/messaging-and-web3-browser/about-losing-access-to-a-channel.md deleted file mode 100644 index a17b1fcd..00000000 --- a/apps/website/docs/messaging-and-web3-browser/about-losing-access-to-a-channel.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: 295 -revision: '0' -language: en -title: About losing access to a channel ---- - -There are two types of channels in [Status Communities](../status-communities/about-status-communities.md): [public and private](../status-communities/channels-your-quick-start-guide.md). When you join a community, you automatically get access to all public channels and private channels for which you meet the [channel requirements](../status-communities/understand-token-requirements-in-channels.md). - -:::tip -Private channels show a :mobile-locked-lock: lock icon next to the channel name. -::: - -You can lose access to a channel for two reasons: - -- You lose access to the community. Check out [About losing access to a community](../status-communities/about-losing-access-to-a-community.md) for more information. -- You no longer [hold the required tokens](../status-communities/understand-token-requirements-in-channels.md) for a private channel. If you lose access to a private channel, you must request to [join the channel](../status-communities/join-a-channel.md) again. diff --git a/apps/website/docs/messaging-and-web3-browser/about-status-messages.md b/apps/website/docs/messaging-and-web3-browser/about-status-messages.md deleted file mode 100644 index 96bdb1bd..00000000 --- a/apps/website/docs/messaging-and-web3-browser/about-status-messages.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: 125 -revision: '0' -language: en -title: About Status messages ---- - -Messaging is a critical Status component. The Status app combines [peer-to-peer messaging](./about-status-messages#peer-to-peer-messaging.md) technologies with robust end-to-end encryption across all your devices. Peer-to-peer messaging eliminates the need for centralized servers and intermediaries, providing a censorship-resistant alternative to other popular messaging apps. - -We've built the Status app to keep your messages and information out of our reach. Other messaging apps offer end-to-end encryption, but their centralized network design allows interpretation of who is talking to whom and where. See how Status compares to other messaging apps in the table below: - -| Privacy feature | Status | Other messaging apps | -| :---------------------------- | :------------------- | :------------------- | -| End-to-end encryption | :material-check-all: | :material-check-all: | -| Network metadata encryption | :material-check-all: | :octicons-x-24: | -| "Who talks to who" encryption | :material-check-all: | :material-check: | -| Censorship resistant | :material-check-all: | :octicons-x-24: | -| Anonymous | :material-check-all: | :material-check: | -| Open source | :material-check-all: | :material-check: | - -(:material-check-all: available, :material-check: available on some apps, :octicons-x-24: not available ) - -## The basics - -- Your communications are end-to-end encrypted by default. -- Your messages are not stored on centralized servers. -- Only you and the message recipient can read your messages. -- Status cannot identify you or other participants in the conversation. - -:::tip -For answers to general questions about your Status messages, check the [Messages FAQ](./messages-faq.md) topic. -::: - -## Understand peer-to-peer messaging - -Status provides resilient messaging without relying on centralized servers, data centers, or service providers. The Status app uses [Waku :octicons-tab-external-16:](https://waku.org/), a peer-to-peer protocol for private, secure, and censorship-resistant communication. - -Unlike centralized networks (A), which depend on a central server to relay messages, peer-to-peer networks (B) encrypt and broadcast every message to all participant nodes. A node is a computer or smartphone that relays messages to other nodes or temporarily stores them for disconnected peers. Even when all nodes can access your messages, the content is encrypted so that only you and the intended recipients can read them. - -![The peer-to-peer network sends messages to every node and doesn't rely on a central server.](/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-dark.png) - -## Built-in privacy and security - -The Status app secures your messages the entire time they are in transit using end-to-end encryption. This industry standard protection uses strong encryption keys and ensures that only you and the recipients can read your messages. No one else (not even Status) can read your conversations or identify you or other participants. - -When you communicate with someone on the Status app, your messages, attachments, sender metadata, group chats, and group metadata are all end-to-end encrypted. - -Status incorporates the [Perfect Forward Secrecy :octicons-tab-external-16:](https://en.wikipedia.org/wiki/Forward_secrecy) (PFS) encryption mechanism, ensuring that encryption keys change on every message. If your keys are compromised, only the associated message is compromised. All previous messages remain private. - -:::info -Status messaging protects your privacy in one-to-one communications, chat groups, public chats, and Communities. -::: diff --git a/apps/website/docs/messaging-and-web3-browser/add-members-to-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/add-members-to-a-group-chat.md deleted file mode 100644 index 46fe90e9..00000000 --- a/apps/website/docs/messaging-and-web3-browser/add-members-to-a-group-chat.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 276 -revision: '0' -language: en -title: Add members to a group chat ---- - -Any member of an existing group chat can add their [Status contacts](./send-a-contact-request.md) to the chat. The maximum number of members is 50. Due to Status's security policy, new joiners won't be able to see the previous message history. - -If you want to create a new chat, see [Create a group chat](./create-a-group-chat.md) instead. - -## Add members - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: Messages. - 2. Open the group chat you want to add new members to. - 3. From the navigation bar, tap :mobile-more-options: **More options**. - 4. Tap :mobile-placeholder: **Add members**. If you're the group chat owner, this will say :mobile-placeholder: **Add / remove members** for you. - 5. Check the boxes next to the contacts you want to invite. Once you're done, tap **Confirm changes**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 2. Open the group chat you want to add new members to. - 3. From the navigation bar at the top, click :desktop-more-options: **More options**. - 4. Click :desktop-group-chat: **Add / remove from group**. - 5. Type the Status handle of the contact you want to invite and select them. Once you're done, click **Confirm**. diff --git a/apps/website/docs/messaging-and-web3-browser/add-people-to-a-direct-message.md b/apps/website/docs/messaging-and-web3-browser/add-people-to-a-direct-message.md deleted file mode 100644 index 735116ab..00000000 --- a/apps/website/docs/messaging-and-web3-browser/add-people-to-a-direct-message.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 624 -revision: '0' -language: en -title: Add people to a direct message ---- diff --git a/apps/website/docs/messaging-and-web3-browser/add-remove-or-share-sticker-sets.md b/apps/website/docs/messaging-and-web3-browser/add-remove-or-share-sticker-sets.md deleted file mode 100644 index e94a29eb..00000000 --- a/apps/website/docs/messaging-and-web3-browser/add-remove-or-share-sticker-sets.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 329 -revision: '0' -language: en -title: Add, remove or share sticker sets ---- diff --git a/apps/website/docs/messaging-and-web3-browser/change-who-can-invite-you-to-group-chats.md b/apps/website/docs/messaging-and-web3-browser/change-who-can-invite-you-to-group-chats.md deleted file mode 100644 index 859286fc..00000000 --- a/apps/website/docs/messaging-and-web3-browser/change-who-can-invite-you-to-group-chats.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 323 -revision: '0' -language: en -title: Change who can invite you to group chats ---- diff --git a/apps/website/docs/messaging-and-web3-browser/clear-group-chat-history.md b/apps/website/docs/messaging-and-web3-browser/clear-group-chat-history.md deleted file mode 100644 index 5e2ea90f..00000000 --- a/apps/website/docs/messaging-and-web3-browser/clear-group-chat-history.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: 320 -revision: '0' -language: en -title: Clear group chat history ---- - -Clearing a group chat history clears all messages inside the chat. Only the group chat owner can clear its history for all members. - -If you’re not the owner, you’ll clear the chat history just for yourself. Everyone else will still see the full history. - -:::info -Once you clear the chat history, it can't be retrieved or restored. -::: - -## Clear group chat history - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: Messages. - 2. Open the group chat whose history you want to clear. - 3. Tap :mobile-more-options: **More options**. - 4. Select :mobile-placeholder: **Clear history**. - -=== "Desktop" - - 1. From the navigation bar, click :desktop-chat: Chat. - 2. Open the group chat whose history you want to clear. - 3. Click :desktop-more-options: **More options**. - 4. Select :mobile-placeholder: **Clear history**. diff --git a/apps/website/docs/messaging-and-web3-browser/create-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/create-a-group-chat.md deleted file mode 100644 index 600da90c..00000000 --- a/apps/website/docs/messaging-and-web3-browser/create-a-group-chat.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 267 -revision: '0' -language: en -title: Create a group chat ---- - -Group chats are conversations of more than two people. To invite someone to a group chat, you need to have them on your Status contact list. - -Group chats are different to communities, as they're meant to unite smaller groups of people or be centred around specific topics. For more information about group chats, see [Understand group chats](./understand-group-chats.md). - -## What to expect - -- You can invite up to 20 members to your group chat. If you need more, consider [creating a community](../status-communities/create-a-status-community.md). -- Once you create your group chat, you can [customize it](./customize-a-group-chat.md) and [add members](./add-members-to-a-group-chat.md), as well as [remove them](./remove-members-from-a-group-chat.md). -- Group chats are always end-to-end [encrypted](./about-status-messages#privacy-and-security.md) with secure cryptographic keys. Only the group chat members will have access to the messages in it. Status doesn't have the keys and can't access any messages by design. - -## Create a group chat - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 2. Tap :mobile-add: **Plus**. - 3. Select **New chat**. - 4. Check the boxes next to the contacts you want to invite to your chat. Tap **Setup group chat**. - 5. Choose a name and highlight colour for your group chat. All members will be able to see both the name and the colour. Once you're finished, tap **Create group chat**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 2. Click :desktop-start-chat: **Start chat**. - 3. From your contact list, select those you want to add to this group chat. - 4. Optionally, type a message in the Message text field to start the group chat with. You can also leave it blank. - 5. Click **Confirm** or press ++return++ to create your group chat. diff --git a/apps/website/docs/messaging-and-web3-browser/customize-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/customize-a-group-chat.md deleted file mode 100644 index 5867540d..00000000 --- a/apps/website/docs/messaging-and-web3-browser/customize-a-group-chat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 275 -revision: '0' -language: en -title: Customize a group chat ---- diff --git a/apps/website/docs/messaging-and-web3-browser/delete-a-chat-with-someone.md b/apps/website/docs/messaging-and-web3-browser/delete-a-chat-with-someone.md deleted file mode 100644 index bdd41dd5..00000000 --- a/apps/website/docs/messaging-and-web3-browser/delete-a-chat-with-someone.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 317 -revision: '0' -language: en -title: Delete a chat with someone ---- diff --git a/apps/website/docs/messaging-and-web3-browser/delete-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/delete-a-group-chat.md deleted file mode 100644 index 6b9ca406..00000000 --- a/apps/website/docs/messaging-and-web3-browser/delete-a-group-chat.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: 272 -revision: '0' -language: en -title: Delete a group chat ---- - -If you don’t need a [group chat](./understand-group-chats.md) anymore, you can delete the chat. Once you do that, the chat history and member list are gone forever, with no way to recover this or any other data. - -:::info -Only the group chat owner can delete the group. If you're a regular member, consider [leaving the chat](./leave-a-group-chat.md) instead. -::: - -## Delete a group chat - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: Messages. - 2. Open the group chat you want to delete. - 3. Tap :mobile-more-options: **More options**. - 4. Select :mobile-placeholder: **Leave and delete group**. - 5. Tap **Leave and delete**. - -=== "Desktop" - - 1. From the navigation bar, click :desktop-chat: Chat. - 2. Open the group chat you want to delete. - 3. Click :desktop-more-options: **More options**. - 4. Select :desktop-leave-group-chat: **Leave and delete group**. - 5. Click **Leave and delete**. diff --git a/apps/website/docs/messaging-and-web3-browser/edit-and-delete-your-messages.md b/apps/website/docs/messaging-and-web3-browser/edit-and-delete-your-messages.md deleted file mode 100644 index 9c47e62e..00000000 --- a/apps/website/docs/messaging-and-web3-browser/edit-and-delete-your-messages.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: 249 -revision: '0' -language: en -title: Edit and delete your messages ---- - -Instead of a centralized server, Status uses a [peer-to-peer network](./about-status-messages.md) to store and distribute messages. When you edit or delete a message, the peer-to-peer network distributes your changes to other users running the Status app. - -In some cases, users may still see your original messages, even after you edit or delete them. For example, some users can: - -- Run an out-of-date version of the Status app that isn't fully compatible with the peer-to-peer network features. -- Run a custom build of the Status app that doesn't support message editing and deletion by choice. -- Disconnect from the network before receiving your latest changes. - -:::info -Be careful with what you share, especially in communities. Once published to the network, what you shared may still remain on someone's device even if you choose to delete it later. -::: - -### What to expect - -- You can edit and delete your Status messages with no time limitations. -- You can only edit text messages. If you want to change a message that contains media content, consider [deleting](#delete-your-messages) and re-sending it. -- Once you edit a message, a permanent note appears next to your message saying it was edited. -- In communities and group chats, you can hide messages you don't want to see with **Delete for me**. Everyone else will still be able to see this message. -- To delete a message for everyone, select **Delete for everyone**. You can only delete your own messages. - -## Edit your messages - -=== "Mobile" - - 1. Open the community, DM chat or group chat with the message you want to delete. - 2. Long press this message. - 3. Select :mobile-edit: **Edit message**. - 4. Make your changes. - 5. Tap :mobile-send: **Send** to publish your changes. - -=== "Desktop" - - 1. Open the community, DM chat or group chat with the message you want to delete. - 2. Hover over your message and click :desktop-edit: **Edit**. - 3. Make your changes and click **Save**. - -## Delete your messages - -=== "Mobile" - - 1. Open the community, DM chat or group chat with the message you want to delete. - 2. Long press this message. - 3. Select :mobile-delete: **Delete Message**. - -=== "Desktop" - - 1. Open the community channel, DM chat or group chat with the message you want to delete. - 2. Hover over your message and click :desktop-delete: **Delete**. - 3. Click **Confirm** to delete your message. You can also check the **Do not show this again** box to delete messages without confirmation in future. diff --git a/apps/website/docs/messaging-and-web3-browser/find-people-on-status.md b/apps/website/docs/messaging-and-web3-browser/find-people-on-status.md deleted file mode 100644 index 31da648a..00000000 --- a/apps/website/docs/messaging-and-web3-browser/find-people-on-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 246 -revision: '0' -language: en -title: Find people on Status ---- diff --git a/apps/website/docs/messaging-and-web3-browser/format-your-messages.md b/apps/website/docs/messaging-and-web3-browser/format-your-messages.md deleted file mode 100644 index 0fdf3c7c..00000000 --- a/apps/website/docs/messaging-and-web3-browser/format-your-messages.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 213 -revision: '0' -language: en -title: Format your messages ---- - -:::info -The formatting options are not available on Status Web. -::: - -You can format text inside your messages to clarify or emphasize information. Formatting can make your communication more effective, especially for long messages. - -In Status, you format your messages using the formatting toolbar or markup by surrounding the text with special characters. - -## Formatting toolbar - -To format your text using the formatting toolbar, select the text and choose the desired formatting option. You can also format a message you've already sent by [editing the message](./edit-and-delete-your-messages.md). The formatting toolbar is only available on Status desktop. - -![Select and format your text using the formatting toolbar.](/assets/docs/messaging-and-web3-browser/format-your-messages/213-0-1.png) - -:::tip -When you press ++return++ in Status desktop, your message is sent. If you want to start a new line, press ++shift+return++ -::: - -## Markup - -You can use markup options to format your text in the Status desktop and mobile apps. diff --git a/apps/website/docs/messaging-and-web3-browser/index.md b/apps/website/docs/messaging-and-web3-browser/index.md deleted file mode 100644 index 389e9c32..00000000 --- a/apps/website/docs/messaging-and-web3-browser/index.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Messaging and Web3 browser ---- - -Send messages and files, create group chats or explore decentralized apps with the Status Web3 browser. - -## Direct messages - -- [Understand **direct messages**](./understand-direct-messages.md) -- [**Share** your Status **profile**](../your-profile-and-preferences/share-your-status-profile.md) -- [**Find people** on Status](./find-people-on-status.md) -- [**Add a contact** in Status](../your-profile-and-preferences/add-a-contact-in-status.md) -- [Send direct messages **to your contacts**](./send-direct-messages-to-your-contacts.md) -- [**Add people** to a direct message](./dd-people-to-a-direct-message.md) -- [**Delete** a chat with someone](./delete-a-chat-with-someone.md) - -## Group chats - -- [**Understand** group chats](./understand-group-chats.md) -- [**Create** a group chat](./create-a-group-chat.md) -- [**customize** a group chat](./customize-a-group-chat.md) -- [**Add members** to a group chat](./add-members-to-a-group-chat.md) -- [**Join** a group chat](./join-a-group-chat.md) -- [**Clear** group chat **history**](./clear-group-chat-history.md) -- [**Change** who can invite you to group chats](./change-who-can-invite-you-to-group-chats.md) -- [**Remove members** from a group chat](./remove-members-from-a-group-chat.md) -- [**Delete** a group chat](./delete-a-group-chat.md) -- [**Leave** a group chat](./leave-a-group-chat.md) - -## Message features and tools - -- [About Status **messages**](./about-status-messages.md) -- [Messages **FAQ**](./messages-faq.md) -- [**Format** your messages](./format-your-messages.md) -- [**Edit** and **delete** your messages](./edit-and-delete-your-messages.md) -- [**Pin** a message](./pin-a-message.md) -- [**React and reply** to messages](./react-and-reply-to-messages.md) -- [Enable **rich link previews** in messages](../your-profile-and-preferences/enable-rich-link-previews-in-messages.md) -- [**Use mentions** in Status](./use-mentions-in-status.md) -- [**Mute** your notifications](../your-profile-and-preferences/mute-your-notifications.md) - -## Share files and conversations - -- [**Share** images in Status](./share-images-in-status.md) -- [**Send** an **audio** message](./send-an-audio-message.md) -- [Send **GIFs and Stickers**](./send-gifs-and-stickers.md) -- [Add, remove or share **sticker sets**](./add-remove-or-share-sticker-sets.md) -- [Share a **conversation**](./share-a-conversation.md) - -## Status Web3 browser - -- [Set the **default browser** in Status](../your-profile-and-preferences/set-the-default-browser-in-status.md) diff --git a/apps/website/docs/messaging-and-web3-browser/join-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/join-a-group-chat.md deleted file mode 100644 index ab7eb722..00000000 --- a/apps/website/docs/messaging-and-web3-browser/join-a-group-chat.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -id: 273 -revision: '0' -language: en -title: Join a group chat ---- - -In Status, the only way to join a [group chat](./understand-group-chats.md) is to ask your contact who’s already a member to invite you. Refer them to [Add members to a group chat](./add-members-to-a-group-chat.md) for instructions on how they can do that. diff --git a/apps/website/docs/messaging-and-web3-browser/leave-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/leave-a-group-chat.md deleted file mode 100644 index a16444ab..00000000 --- a/apps/website/docs/messaging-and-web3-browser/leave-a-group-chat.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 278 -revision: '0' -language: en -title: Leave a group chat ---- - -If you don’t want to be a member of a [group chat](./understand-group-chats.md) anymore, you can leave the chat. You can always [re-join the chat](./join-a-group-chat.md) later if you change your mind. - -Once you leave, a note appears in the group chat's message history letting other members know that you left the chat. You will still be able to access the group chat messages that were sent before you left. - -If someone is adding you to group chats you don't want to be in, consider [changing who can invite you to group chats](./change-who-can-invite-you-to-group-chats.md) or [blocking that person](../block-someone-in-status.md). - -:::info -The group chat owner can't leave without deleting the chat for everyone. For more information, check out [Delete a group chat](./delete-a-group-chat.md). -::: - -## Leave a group chat - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 2. Open the group chat you want to leave. - 3. Tap :mobile-more-options: **More options**. - 4. Select :mobile-log-out: **Leave group**. - 5. Tap **Leave**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 2. Open the group chat you want to leave. - 3. Click :desktop-more-options: **More options**. - 4. Select :desktop-leave-group-chat: **Leave group**. - 5. Click **Leave**. diff --git a/apps/website/docs/messaging-and-web3-browser/messages-faq.md b/apps/website/docs/messaging-and-web3-browser/messages-faq.md deleted file mode 100644 index 622d395a..00000000 --- a/apps/website/docs/messaging-and-web3-browser/messages-faq.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -id: 232 -revision: '0' -language: en -title: Messages FAQ ---- - -Messaging others is an important part of your Status experience, along with [Status Communities](../status-communities/how-to-use-communities-your-quick-start-guide.md), the [Status Wallet](../status-wallet/status-wallet-your-quick-start-guide.md) and the [Status Web3 browser](./how-to-use-status-browser-your-quick-start-guide.md). In Status, you can message others and chat in communities privately and securely. - -The Status app provides a privacy-centric messenger using decentralized [peer-to-peer (P2P) technology](./about-status-messages.md) and strong end-to-end (E2EE) encryption. - -## General questions - -### What makes Status messaging decentralized? - -Instead of centralized networks, which rely on servers controlled by corporations or governments, Status uses a distributed network of nodes. This network is based on Waku, a [peer-to-peer protocol](./about-status-messages.md) for private, secure and censorship-resistant communication. - -In a distributed network, users can securely and directly exchange data without intermediaries that could potentially compromise their privacy. - -### Peer-to-peer networks send messages to every node. Is this not a risk? - -No, it's not. While it's true that messages are sent to every node in a peer-to-peer network, these messages are encrypted. Only the intended recipient can decrypt and read the message. - -### How is Status messaging censorship-resistant? - -The Status peer-to-peer network ensures the resilience of the messaging network. For instance, when a network node is shut down or blocked, you can still connect to other nodes. - -Status supports free speech infrastructure that prevents us, or anyone else, from censoring you. - -:::info -Nodes in the network still rely on having an internet connection. So if your internet provider (or an authoritarian regime) shuts down your network, Status messaging won't work. -::: - -## Status messaging - -### Are my messages in the blockchain? - -No, your messages are not in the blockchain and are not transported through the [Ethereum network](../getting-started/about-the-ethereum-blockchain.md). Messages are temporarily stored in the peer-to-peer network. - -### Can I delete my messages? - -Yes, you can always [edit and delete your messages](./edit-and-delete-your-messages.md). - -In some cases, users may still see your original messages, even after you edit or delete them. Check out [Edit and delete your messages](./edit-and-delete-your-messages.md) for more information. - -### If I'm disconnected, can I still access my messages? - -The [peer-to-peer network](./about-status-messages.md) store messages that couldn't be delivered for up to 30 days. Your device downloads and securely stores these messages permanently when you connect to the network. Messages stored on your device are always available offline. - -## Privacy and security - -### How does Status protect my privacy? - -Status implements end-to-end encryption (E2EE) using [cryptographic keys](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md). When you send a message, the message is encrypted using the recipient's public key. The only way to decrypt the message and read its content is by using the recipient's private key. Even if a malicious actor intercepts the message, they can't read its content as they don't have the private key. - -:::info -The [Waku network](https://waku.org/) implements additional privacy capabilities in addition to E2EE, such as sender anonymity or metadata protection. -::: - -### Other messaging apps use E2EE encryption; why use Status? - -While other messaging apps offer E2EE encryption, their centralized network design allows interpretation of who is talking to whom and where. These messaging apps can collect and sell your data and create a profile about you. - -We've built Status so your information is secure and out of our reach. However, it's important to remember that no privacy tool can guarantee absolute data security. - -### Can Status read my messages? - -No. No one besides you and the intended recipient can read your messages. For more information on how Status messaging protects your privacy, check out [About your Status keys](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase#about-status-keys.md). - -### Who owns the peer-to-peer network nodes? - -Anybody running the Status app becomes a node in the peer-to-peer network. This contributes to a more decentralized and resilient network. - -:::info -Currently, Status runs nodes to ensure messages can be delivered reliably to disconnected peers.While all traffic is encrypted and out of Status reach, we hope to reduce Status participation progressively. -::: - -### Is Status really decentralized if Status runs some of the network nodes? - -The fact that Status users are part of the network is a crucial feature of the decentralized design. As long as the network remains open and accessible to all users and is not controlled by a single entity, Status' operation of some network nodes does not undermine this design. diff --git a/apps/website/docs/messaging-and-web3-browser/pin-a-message.md b/apps/website/docs/messaging-and-web3-browser/pin-a-message.md deleted file mode 100644 index 02d531cb..00000000 --- a/apps/website/docs/messaging-and-web3-browser/pin-a-message.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 339 -revision: '0' -language: en -title: Pin a message ---- - -You can pin important information in group chats so that it doesn't get lost in the message history. For example, you can pin your chat rules, event announcements and FAQ. - -Chat members can pin both their own and other members' messages. Message pinning is available in direct messages (DMs), group chats and community channels. - -Once you pin a message, it's highlighted and gets a label saying who pinned it. - -## Pin a message - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: Messages. - 2. Open the chat you want to pin a message in. - 3. Tap the message you want to pin. - 4. Tap :mobile-pin: **Pin to the chat**. - To unpin a message, tap it and select :mobile-pin: **Unpin**. - - To view all pinned messages in a group or direct messages chat, open this chat and tap :mobile-pin: **Pinned messages**. If the chat's full, tap the ribbon with the :mobile-pin: **Pin** icon underneath the chat's name. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 2. Open the chat you want to pin a message in. - 3. Hover over the message you want to pin. - 4. Click :desktop-pin: **Pin**. - To unpin a message, hover over it and click :desktop-unpin: **Unpin**. - - To view all pinned messages in a group or DM chat, click :desktop-pin: **N pinned messages** underneath the chat's name. In communities, this will say :desktop-pin: **N**, where N is the number of currently pinned messages. diff --git a/apps/website/docs/messaging-and-web3-browser/react-and-reply-to-messages.md b/apps/website/docs/messaging-and-web3-browser/react-and-reply-to-messages.md deleted file mode 100644 index 7305977d..00000000 --- a/apps/website/docs/messaging-and-web3-browser/react-and-reply-to-messages.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: 386 -revision: '0' -language: en -title: React and reply to messages ---- - -In Status, you can reply to specific messages and react with emojis. - -Replies are useful for when you want to make it clear who you are responding to, as well as receive a faster reply from them. Users whose messages you reply to receive notifications in their [Notification Centre](../your-profile-and-preferences/your-status-notifications-guide.md). - -Reactions are helpful when you want to show others that you saw their message. Users whose messages you react to do not receive any notifications. - -## React to messages - -=== "Mobile" - - 1. Open the group chat, DM chat or community channel with the message you want to react to. - 2. Long press the message. - 3. Choose an emoji to react with and tap it. - -=== "Desktop" - - 1. Open the group chat, DM chat or community channel with the message you want to react to. - 2. Open the chat with the message you want to react to. - 3. Hover over the message. - 4. Click :desktop-emojis: **Add reaction**. - 5. Choose an emoji to react with and click it. - -## Reply to messages - -=== "Mobile" - - 1. Open the group chat, DM chat or community channel with the message you want to react to. - 2. Long press the message. - 3. Tap :mobile-reply: **Reply**. - 4. Type your reply and tap :mobile-send: **Send**. - -=== "Desktop" - - 1. Open the group chat, DM chat or community channel with the message you want to react to. - 2. Hover over the message and click :desktop-reply: **Reply**. - 3. Type your reply and press ++return++. - -:::tip -You can reply with text, emojis, images and stickers. -::: diff --git a/apps/website/docs/messaging-and-web3-browser/remove-members-from-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/remove-members-from-a-group-chat.md deleted file mode 100644 index ec99e65d..00000000 --- a/apps/website/docs/messaging-and-web3-browser/remove-members-from-a-group-chat.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: 277 -revision: '0' -language: en -title: Remove members from a group chat ---- - -A [group chat](./understand-group-chats.md) owner can remove members from a group chat. As a group chat owner, you're free to set your own rules and remove members who misbehave. Regular members can't remove other members. - -If you remove someone by mistake or change your mind about them later, you can always [re-add them to the chat](./add-members-to-a-group-chat.md). - -## Remove members - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: Messages. - 2. Open the group chat you want to remove members from. - 3. Tap the member list underneath the chat's name. - 4. Tap :mobile-more-options: **More options** next to the member you want to remove. - 5. Select :mobile-remove-member: **Remove from the group**. - 6. Select **Remove** to confirm your decision. - - If you want to remove multiple members in a batch, go to **Messages** > your group chat > **Manage members** and uncheck the boxes next to the members you want to remove. Tap **Confirm changes** to confirm your decision. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 2. Open the group chat you want to remove members from. - 3. From the navigation bar at the top, click :desktop-more-options: **More options**. - 4. Click :desktop-group-chat: **Add / remove from group**. - 5. Click the :desktop-cross: **Cross** next to the Status handle of the contact you want to remove. Once you're done, click **Confirm**. diff --git a/apps/website/docs/messaging-and-web3-browser/send-an-audio-message.md b/apps/website/docs/messaging-and-web3-browser/send-an-audio-message.md deleted file mode 100644 index 5c344681..00000000 --- a/apps/website/docs/messaging-and-web3-browser/send-an-audio-message.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: 245 -revision: '0' -language: en -title: Send an audio message ---- - -You can send an audio message in Status to communicate with your contacts. You can use audio messages to share ideas and updates. Anyone in a channel, group chat or direct message (DM) can play and send audio messages. - -You can record an audio message up to one minute long and send as many audio messages as you want. - -:::info -Deleting an audio message in Status works as deleting any other message. Check out [Edit and delete your messages](../delete-your-messages.md) for more information. -::: - -## Record and send an audio message - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities** to send an audio message in a channel, or tap :mobile-messages: **Messages** to send an audio message in a group chat or DM. - 1. Long press :mobile-audio: **Audio** to start recording automatically. - 1. Optionally, whenever you want to send a long message, slide to :mobile-locked-lock: **Lock** for hands-free recording. - 1. When you’re finished, slide to :mobile-placeholder: **send** to stop recording and send the message or to :mobile-delete: **Delete** to discard the message. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-communities: **Community** or :desktop-chat: **Chat** where you wish to send an audio message. - 1. In the channel, group chat or DM message field, click :mobile-placeholder: **Audio** to start recording. - 1. When you’re finished, click :mobile-placeholder: **Send**. diff --git a/apps/website/docs/messaging-and-web3-browser/send-and-read-messages.md b/apps/website/docs/messaging-and-web3-browser/send-and-read-messages.md deleted file mode 100644 index 4285b62a..00000000 --- a/apps/website/docs/messaging-and-web3-browser/send-and-read-messages.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 180 -revision: '0' -language: en -title: Send and read messages ---- diff --git a/apps/website/docs/messaging-and-web3-browser/send-direct-messages-to-your-contacts.md b/apps/website/docs/messaging-and-web3-browser/send-direct-messages-to-your-contacts.md deleted file mode 100644 index 36aa5833..00000000 --- a/apps/website/docs/messaging-and-web3-browser/send-direct-messages-to-your-contacts.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -id: 124 -revision: '0' -language: en -title: Send direct messages to your contacts ---- - -A direct message (or DM, for short) is a communication between you and another person. In Status, you can send direct messages to people in your contact list. If the person is not your contact yet, [send a contact request](../your-profile-and-preferences/add-a-contact-in-status.md) first. - -## Send direct messages - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Select **Contacts**. - 1. Tap the person you want to chat with and start sending messages. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 1. Click :desktop-start-chat: **Start chat**. - 1. From your contact list, select the person you want to chat with. - 1. Click **Confirm** and start sending messages. - -:::tip -In direct messages, you can send text messages, [images](./share-images-in-status.md), [GIFs, stickers](./send-gifs-and-stickers.md) and [audio messages](./send-an-audio-message.md). You can [format](./format-your-messages.md), [edit](./edit-and-delete-your-messages#edit-messages.md) and [delete](./edit-and-delete-your-messages#delete-messages.md) your messages. -::: diff --git a/apps/website/docs/messaging-and-web3-browser/send-gifs-and-stickers.md b/apps/website/docs/messaging-and-web3-browser/send-gifs-and-stickers.md deleted file mode 100644 index 5277c4c8..00000000 --- a/apps/website/docs/messaging-and-web3-browser/send-gifs-and-stickers.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: 239 -revision: '0' -language: en -title: Send GIFs and stickers ---- - -Animated GIFs and stickers are a popular way of expressing emotions, reactions and humour in messaging apps. GIFs are short, looping animated videos of a few seconds in length, while stickers are static or animated images. - -The Status app uses the [Tenor GIF :octicons-tab-external-16:](https://tenor.com/) search engine and database for GIFs. You can also share GIFs from other sources by sending a message with the GIF URL. - -You can add more stickers to default sticker sets in Status, or share a sticker set with someone. See [Add, remove or share sticker sets](./add-remove-or-share-sticker-sets.md). - -:::info -To show the GIF preview and not its URL, [enable rich link previews](../your-profile-and-preferences/enable-rich-link-previews-in-messages.md) in messages. -::: - -## Send GIFs - -=== "Mobile" - - 1. Open the channel or chat where you want to share the GIF. - 1. In the message area, tap :mobile-placeholder: **React**. - 1. Tap :mobile-GIFs: **GIF**. The first time you send a GIF, you need to **Enable** the service. - 1. Search or choose the GIF you want to share. The GIF is sent immediately. - -=== "Desktop" - - 1. Open the channel or chat where you want to share the GIF. - 1. In the message area, click :desktop-GIFs: **GIF**. The first time you send a GIF, you need to **Enable** the service. - 1. Search or choose the GIF you want to share. The GIF is sent immediately. - 1. Optionally, hover over the GIF in the preview window and click the :desktop-favourite: **Star** icon to save it as a favourite. - -:::tip -If you want to add a message to your GIF, write the text before selecting the GIF. -::: - -## Send stickers - -=== "Mobile" - - 1. Open the channel or chat where you want to share the sticker. - 1. In the message area, tap :mobile-placeholder: **React**. - 1. Tap :mobile-sticker: **Sticker**. - 1. From your list of stickers, tap the sticker you want to send. The sticker is sent immediately. - -=== "Desktop" - - 1. Open the channel or chat where you want to share the sticker. - 1. Click :desktop-sticker: **Sticker**. If you don't have stickers, you need to **Get stickers**. - 1. Choose the sticker you want to share. The sticker is sent immediately. diff --git a/apps/website/docs/messaging-and-web3-browser/share-a-conversation.md b/apps/website/docs/messaging-and-web3-browser/share-a-conversation.md deleted file mode 100644 index 1d39eb43..00000000 --- a/apps/website/docs/messaging-and-web3-browser/share-a-conversation.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 627 -revision: '0' -language: en -title: Share a conversation ---- diff --git a/apps/website/docs/messaging-and-web3-browser/share-a-group-chat.md b/apps/website/docs/messaging-and-web3-browser/share-a-group-chat.md deleted file mode 100644 index e18bea46..00000000 --- a/apps/website/docs/messaging-and-web3-browser/share-a-group-chat.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 626 -revision: '0' -language: en -title: Share a group chat ---- diff --git a/apps/website/docs/messaging-and-web3-browser/share-images-in-status.md b/apps/website/docs/messaging-and-web3-browser/share-images-in-status.md deleted file mode 100644 index fb7f8400..00000000 --- a/apps/website/docs/messaging-and-web3-browser/share-images-in-status.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: 231 -revision: '0' -language: en -title: Share images in Status ---- - -:::info -Sharing images is not available on Status Web. -::: - -In Status, conversations happen across channels, group chats and DMs (direct messages). To enrich your communication and make it more personal, you can share images. When you share an image on Status, other participants can download, react or answer to it. - -Contrary to other messaging apps using a centralised server, Status protects your privacy using a peer-to-peer network to deliver your messages. Due to this [peer-to-peer network](./about-status-messages.md), you are limited in how many images you can share within a message. However, you can share as many images as you want in different messages. - -:::info -At present, sharing files isn't possible on the Status peer-to-peer network. -::: - -## Share images - -=== "Mobile" - - 1. Open the channel or chat where you want to share the image. - 1. Tap the :mobile-image: **Image** next to the message field and choose the image you want to share. - 1. Optionally, add a message to your image. - 1. Tap :mobile-send: to send. - -=== "Desktop" - - 1. Open the channel or chat where you want to share the image. - 1. Click :desktop-image: **Image** next to the message field and choose the image you want to share. - 1. Optionally, add a message to your image. - 1. Press ++enter++ diff --git a/apps/website/docs/messaging-and-web3-browser/understand-direct-messages.md b/apps/website/docs/messaging-and-web3-browser/understand-direct-messages.md deleted file mode 100644 index d895ffe5..00000000 --- a/apps/website/docs/messaging-and-web3-browser/understand-direct-messages.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 620 -revision: '0' -language: en -title: Understand direct messages ---- diff --git a/apps/website/docs/messaging-and-web3-browser/understand-group-chats.md b/apps/website/docs/messaging-and-web3-browser/understand-group-chats.md deleted file mode 100644 index 5c50e0d1..00000000 --- a/apps/website/docs/messaging-and-web3-browser/understand-group-chats.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 274 -revision: '0' -language: en -title: Understand group chats ---- diff --git a/apps/website/docs/messaging-and-web3-browser/uninstall-status-desktop.md b/apps/website/docs/messaging-and-web3-browser/uninstall-status-desktop.md deleted file mode 100644 index c5809cb0..00000000 --- a/apps/website/docs/messaging-and-web3-browser/uninstall-status-desktop.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 600 -revision: '0' -language: en -title: Uninstall the Status desktop app ---- diff --git a/apps/website/docs/messaging-and-web3-browser/use-mentions-in-status.md b/apps/website/docs/messaging-and-web3-browser/use-mentions-in-status.md deleted file mode 100644 index 6a0719e2..00000000 --- a/apps/website/docs/messaging-and-web3-browser/use-mentions-in-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 559 -revision: '0' -language: en -title: Use mentions in Status ---- diff --git a/apps/website/docs/network-nodes-and-statistics/index.md b/apps/website/docs/network-nodes-and-statistics/index.md deleted file mode 100644 index 4fbb1fbb..00000000 --- a/apps/website/docs/network-nodes-and-statistics/index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Network nodes and statistics ---- - -Learn more about your Status Community node and other network nodes. diff --git a/apps/website/docs/status-communities/about-community-request-approvals.md b/apps/website/docs/status-communities/about-community-request-approvals.md deleted file mode 100644 index dd836b0b..00000000 --- a/apps/website/docs/status-communities/about-community-request-approvals.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: 514 -revision: '0' -language: en -title: About community request approvals ---- - -The community owner might require new members to get manual approval. When manual approval for a community is set, the owner reviews each request and makes a decision based on their criteria. If you're a community owner and want to set up manual approval, read [set up your community's approval options](./set-up-your-communitys-approval-options.md). - -:::tip -In addition to manual approval, community owners can set up [token requirements](./understand-token-requirements-in-communities.md) to join their communities. Manual approval and token requirements work independently. -::: - -Once you send a request to [join a community](./join-a-status-community.md), your request can be accepted or not. To check the status of your request, go to the community screen. - -If the community owner approves your request to join, you get access to the community immediately. diff --git a/apps/website/docs/status-communities/about-losing-access-to-a-community.md b/apps/website/docs/status-communities/about-losing-access-to-a-community.md deleted file mode 100644 index 95468b18..00000000 --- a/apps/website/docs/status-communities/about-losing-access-to-a-community.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: 301 -revision: '0' -language: en -title: About losing access to a community ---- - -You can lose your Status Community membership for different reasons. For example, a [token-gated community](./about-status-communities.md) can change the token requirements to join, or your behaviour breaks the community rules. - -The community owner can permanently ban your account if you break the community rules. Respect the community rules and members, and don't spam people or promote scams or deceptive practices. - -## The basics - -- If you lose access to a community, you must request to [join the community](./join-a-status-community.md) again. -- For token-gated communities, you should hold the token requirements at all times. -- When you lose access to a community, it does show up under the Joined tab on your [Communities page](./how-to-use-communities-your-quick-start-guide.md). -- In the [notifications centre](../your-profile-and-preferences/view-notifications-and-updates.md), your Membership notifications show when you have lost access to a community. You don't receive a notification when you're banned from a community. - -:::info -Community owners control who has access to their communities. Status can't kick you out or ban you from a community. Likewise, Status can't grant you access to a community or override the community owner's actions. -::: - -## Reasons you can lose access to a community - -There are four reasons: - -| Reason | Description | Scope | -| :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------- | -| Kick | The community owner has kicked you out of the community. | Open and token-gated communities | -| Ban | The community owner has permanently banned you from the community. You can't request to join the community again. | Open and token-gated communities | -| Token requirements change | The token requirements to access the community have changed and your tokens do not longer satisfy these requirements. Open the community page to review the new token requirements. | Token-gated communities | -| Your tokens change | Your tokens or token amounts have changed and you don't longer satisfy the community requirements. Open the community page to verify your eligibility. | Token-gated communities | - -:::warn -Community owners can lose access to their community if they have to restore the profile on a different device and don't [back up the community key](../backup-your-community-key.md). -::: diff --git a/apps/website/docs/status-communities/about-status-communities.md b/apps/website/docs/status-communities/about-status-communities.md deleted file mode 100644 index c355aac9..00000000 --- a/apps/website/docs/status-communities/about-status-communities.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 302 -revision: '0' -language: en -title: About Status Communities ---- diff --git a/apps/website/docs/status-communities/about-status-web-communities.md b/apps/website/docs/status-communities/about-status-web-communities.md deleted file mode 100644 index 1ffe2c03..00000000 --- a/apps/website/docs/status-communities/about-status-web-communities.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 540 -revision: '0' -language: en -title: About Status Web Communities ---- diff --git a/apps/website/docs/status-communities/about-the-community-history-service.md b/apps/website/docs/status-communities/about-the-community-history-service.md deleted file mode 100644 index 831510c5..00000000 --- a/apps/website/docs/status-communities/about-the-community-history-service.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -id: 356 -revision: '0' -language: en -title: About the Community History Service ---- - -:::info -Currently, you can only configure and benefit from the community history service using Status desktop. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -Status uses a [peer-to-peer network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md) to temporarily store your community messages for 30 days. When your community members get online, messages are automatically downloaded and stored locally on their computers. - -The peer-to-peer network deletes messages older than 30 days, so members who don't receive them in time can't access them. With the Community History Service (CHS), every community member can access all historical messages. - -## The basics - -- The Status mobile app doesn't support the CHS. -- The CHS is on by default, but community owners can [turn it off](./turn-off-the-community-history-service.md). Other community members can't turn it off or choose not to download historical messages. -- When new members join, they can immediately see messages from the past 30 days. However, it may take a few days for messages older than 30 days to appear. -- Messages are only readable after importing in Status. The messages in the archives are encrypted, and it's impossible to directly open the archives to read them. - -:::info -Downloading and importing messages can take a long time. If messages of a period don't appear, wait a few days. -::: - -## How the Community History Service works - -The CHS uses BitTorrent, a communication protocol for decentralized data sharing, with a built-in BitTorrent client in the Status desktop. BitTorrent connects computers with IP addresses and transfers archives to every member's computer. - -Every seven days, the CHS prompts your control node to create an archive for messages in the past seven days. Then BitTorrent clients in your and your community members' Status apps share the archive. - -The CHS runs automatically in the background, you can't see its processes or notifications. You or your community members must be online with the Status desktop app running for the CHS to share, download or import archives. - -:::info -Status can't access or manipulate your messages through the CHS. The archives are stored locally on your and your community members' computers. -::: - -:::tip -To avoid exposing your IP address to other community members, use a VPN when running Status. -::: - -## An example of the workflow - -The following example demonstrates how a message archive is generated and how your community members Alice and Bob access it. - -### Step 1: Your Status generates an archive - -- [x] Your Status desktop running the control node is online. -- [x] The control node generates an archive. -- [x] The BitTorrent client in your Status app makes the archive sharable over a magnet link. - -### Step 2: Community members read messages older than 30 days - -- [x] Alice comes online, and the BitTorrent client in her Status app receives the magnet link. -- [x] Using the magnet link and your IP address, the BitTorrent client in Alice's Status app downloads the archive from your computer. -- [x] Alice's Status app processes the archive, and Alice can read the messages in the community interface. -- [x] Bob's online, and his Status app downloads the archive from your or Alice's computer. - -## Maintain the availability - -The CHS archives messages only from the computer that runs the control node. If you miss any messages, your members can't receive a copy via the CHS. To provide a complete history, keep your control node online every day or at least once every six days. - -Don't remove or edit torrent files, as they're part of the CHS mechanism. - -If you [move your control node](./restore-your-status-community.md) from one computer to another, copy the Status folder to the new computer to keep the existing archives accessible. - -:::tip -[Turning off the CHS](./turn-off-the-community-history-service.md) significantly reduces community members' experience. Keep it on unless it's really necessary. -::: - -\*[magnet link]: A magnet link is a hyperlink containing information needed for downloading data in a peer-to-peer network, like the filename and download sources. diff --git a/apps/website/docs/status-communities/about-the-control-node-in-status-communities.md b/apps/website/docs/status-communities/about-the-control-node-in-status-communities.md deleted file mode 100644 index ddeeb736..00000000 --- a/apps/website/docs/status-communities/about-the-control-node-in-status-communities.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -id: 506 -revision: '0' -language: en -title: About the control node in Status Communities ---- - -:::info -Currently, you can only administer communities and run a control node using the Status desktop app. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -Status Communities require a type of node called the control node for administration purposes. When you [create a community](./create-a-status-community.md), your computer becomes a control node. - -As the community owner, the control node runs automatically in your Status desktop app if you use the same profile and computer where you set up the community. - -## The basics - -- The computer where you [create your Status Community](./create-a-status-community.md) and every computer where you run Status desktop and [restore your community's private key](./restore-your-status-community.md) becomes a control node. -- To provide the best experience for your members, keep the Status desktop app acting as the control node online every day or at least once every six days. -- Don't use more than one installation of Status Desktop as your community's control node. Running your community with multiple control nodes will cause unforeseen issues and increase your community's bandwidth requirements. -- You can [install a new control node](./replace-your-community-s-control-node.md) when you need to reinstall Status desktop or it becomes unavailable. -- Owners can [set up additional computers](#administer-your-community-from-a-different-computer) to administer their community or [delegate admin permissions to someone else](./delegate-admin-functions-to-community-members.md). Owners still need the Status desktop app acting as the control node running and connected to the internet. - -## Maintain your community available - -The community control node maintains the settings, configuration and functionality of your community. Keep the Status desktop app where you set up your community running and connected to the internet as much as possible, or at least once every six days. - -If the control node goes offline, your [community's functionality is affected](./common-issues-when-the-community-s-control-node-is-offline.md). You can [set up a new control node](./replace-your-community-s-control-node.md) if the initial Status desktop fails or becomes inaccessible. - -:::warn -Don't use more than one installation of Status desktop as your community's control node. Running your community with multiple control nodes will cause unforeseen issues and increase your community's bandwidth requirements. -::: - -## Administer your community from a different computer - -If you want to administer your community from another computer, [set up your same Status profile on that computer](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase#create-or-restore-profile-with-recovery-phrase.md) without importing the community's private key. This process doesn't create a new control node, and you can complete it on as many computers as you want. - -Using a different computer is helpful if you run your Status Community on your desktop computer but want to travel with your laptop, for example. Additionally, you can [delegate admin permissions to others](./delegate-admin-functions-to-community-members.md) using tokens. - -:::tip -Community control nodes are the only ones with access to the community's private key. If you run Status desktop on multiple computers and are unsure which one is the control node, verify if you can [back up your community's private key](./back-up-your-community-s-private-key.md). If you can, you're running a control node. -::: - -No matter how many additional computers you use to administer your community, they all forward admin tasks to the Status desktop app working as the control node, which functions as the administration hub. - -:::info -Your community is still available when the Status desktop app acting as the control node is offline, but your community members' experience degrades. For more information, check out [Common issues when the control node is offline](./common-issues-when-the-community-s-control-node-is-offline.md). -::: diff --git a/apps/website/docs/status-communities/about-tokens-collectibles-and-ens-names.md b/apps/website/docs/status-communities/about-tokens-collectibles-and-ens-names.md deleted file mode 100644 index 88462bbd..00000000 --- a/apps/website/docs/status-communities/about-tokens-collectibles-and-ens-names.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 0 -revision: '0' -language: en -title: About tokens, collectibles, and ENS names ---- diff --git a/apps/website/docs/status-communities/about-view-only-channels.md b/apps/website/docs/status-communities/about-view-only-channels.md deleted file mode 100644 index 2bc50df3..00000000 --- a/apps/website/docs/status-communities/about-view-only-channels.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: 662 -revision: '0' -language: en -title: About view-only channels ---- - -:::info -Currently, you can only set up and manage view-only channels using Status desktop. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -[Channels](./channels-your-quick-start-guide.md) are spaces for conversation, discussion and information sharing. By default, all community members with access to a channel can read and send messages. - -As a community [owner or admin](./permissions-by-role-in-status-communities.md), you can set a channel as view-only. To learn how to do that, check out [Set up a view-only channel](./set-up-a-view-only-channel.md). - -A read-only channel helps maintain clear, uninterrupted communication for specific purposes. While members can't respond directly in these channels, they are crucial in keeping your community informed and engaged. - -## View-only channel permission - -When you [set up a channel permission](./set-up-channel-permissions.md), only members who meet the criteria for that permission can perform the associated action within that channel. - -This is how the `View` and `View and post` channel permissions work in your community. - -| Channel permission \\ Member | Members not meeting the criteria | Members meeting the criteria | Owner and admins | -| :--------------------------- | :------------------------------- | :--------------------------- | :------------------- | -| None | :material-check-all: | :material-check-all: | :material-check-all: | -| `View` | :octicons-x-24: | :material-check: | :material-check-all: | -| `View and post` | :octicons-x-24: | :material-check-all: | :material-check-all: | - -(:material-check-all: view and post, :material-check: view only, :octicons-x-24: no access) - -:::tip -Members with view-only access to the channel can still [react](../messaging-and-web3-browser/react-and-reply-to-messages.md) to messages in the channel with emojis. -::: - -## Using a view-only channel - -View-only channels can help keep your community organized and focused. Here are some ideas on how you can use view-only channels. - -- **Community announcements and updates** - - To keep important announcements or updates clutter-free, use a view-only channel. Only community owners and admins can write in these channels, ensuring your message is delivered without distractions. - -- **Information sharing** - - If there are specific resources or guidelines that members need to access regularly, a view-only channel is as a convenient and easy-to-find repository. For example, you can share information that new community members may find helpful. - -- **Learning communities** - - In learning communities, view-only channels allow owners to share exercises and training materials while keeping the conversation focused. - -- **Voting or pooling areas** - - Because members with view-only access can still [react](../messaging-and-web3-browser/react-and-reply-to-messages.md) to messages in view-only channels, owners can use them for voting on different topics or proposals. diff --git a/apps/website/docs/status-communities/back-up-your-community-s-private-key.md b/apps/website/docs/status-communities/back-up-your-community-s-private-key.md deleted file mode 100644 index e5dba5ab..00000000 --- a/apps/website/docs/status-communities/back-up-your-community-s-private-key.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: 311 -revision: '0' -language: en -title: Back up your community's private key ---- - -:::info -Currently, you can only back up your community key using [Status desktop](../getting-started/#download-status.md). -::: - -When you create a [Status Community](./about-status-communities.md), the Status app generates a public and a private cryptographic key (a key pair). In essence, these keys are very large numbers securely stored on your device and protected by your Status password. - -The community's private key provides control over your community's settings, membership approvals and other important aspects of its operation. Use your community's private key backup to [restore the community](./restore-your-status-community.md) onto another device or to [transfer your community's ownership](./transfer-your-community-s-ownership.md) to someone else. - -:::warn -Manually transferring your community from one computer to another by copying the private key is an insecure method of handling a private key. Still, it's currently the only way to do so. -We're aware of this issue and plan to implement a secure solution in a future release. In the meantime, be extra cautious when handling your community key and keep it safe. -::: - -## What to expect - -- As a community owner, you're responsible for backing up your community's private key and keeping it safe. Status doesn't have access to this key and can't recover it for you. -- Anyone with access to your community's private key may become the owner of the community and control its settings, permissions and membership approvals. -- Even with your community's private key, your community may disappear irretrievably if [you delete it](./delete-your-status-community.md) or the owner's node is offline for more than 30 days without activity. - -## Back up your community key - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. At the top of the channel sidebar, click your community logo and then, click :desktop-overview: **Overview**. - 1. In the **Back up community key** area, click :desktop-back-up: **Back up**. - 1. In the pop-up window showing your community's private key, click **Copy**. - 1. Close the window showing the key. You can access this information at any time. - 1. Paste the community's private key on a document or write it down on paper. - -:::info -Keep your community's private key safe. Status will never ask you for this information, and anyone who does is trying to steal your community. -::: - -## Common questions - -### Where is my community information backed up? - -Your community configuration and messages for up to 30 days are cached in the Waku [peer-to-peer network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md). The community's private key represents proof of ownership but doesn't store the community configuration and messages. - -### How frequently should I back up the community's private key? - -You only need to back up your community's private key once, as long as you don't lose it. You can create the backup right after you [create the community](./create-a-status-community.md). - -### How can I protect my community's private key? - -To minimize the risk of unauthorized access to your community's private key, avoid keeping online copies or screenshots of it and maintain at least one pen-and-paper backup. diff --git a/apps/website/docs/status-communities/burn-your-community-tokens.md b/apps/website/docs/status-communities/burn-your-community-tokens.md deleted file mode 100644 index 702cc7ff..00000000 --- a/apps/website/docs/status-communities/burn-your-community-tokens.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 593 -revision: '0' -language: en -title: Burn your community tokens ---- diff --git a/apps/website/docs/status-communities/change-a-private-channel-to-public.md b/apps/website/docs/status-communities/change-a-private-channel-to-public.md deleted file mode 100644 index 2057b715..00000000 --- a/apps/website/docs/status-communities/change-a-private-channel-to-public.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 638 -revision: '0' -language: en -title: Change a private channel to public ---- diff --git a/apps/website/docs/status-communities/change-a-private-community-to-public.md b/apps/website/docs/status-communities/change-a-private-community-to-public.md deleted file mode 100644 index 210ee527..00000000 --- a/apps/website/docs/status-communities/change-a-private-community-to-public.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 637 -revision: '0' -language: en -title: Change a private community to public ---- diff --git a/apps/website/docs/status-communities/change-the-channel-access-type.md b/apps/website/docs/status-communities/change-the-channel-access-type.md deleted file mode 100644 index b71cb976..00000000 --- a/apps/website/docs/status-communities/change-the-channel-access-type.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 315 -revision: '0' -language: en -title: Change the channel access type ---- diff --git a/apps/website/docs/status-communities/channels-your-quick-start-guide.md b/apps/website/docs/status-communities/channels-your-quick-start-guide.md deleted file mode 100644 index 9fbc67cc..00000000 --- a/apps/website/docs/status-communities/channels-your-quick-start-guide.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: 287 -revision: '0' -language: en -title: 'Channels: your quick start guide' ---- - -In [Status Communities](./how-to-use-communities-your-quick-start-guide.md), you have access to dedicated spaces called channels. Channels bring the right people and information together for any project or topic. A channel conversation focuses on specific topics, and you can [join](./join-a-channel.md) and [leave](./leave-a-channel.md) the conversation anytime. - -As a community owner, you can use channels to break down a large community into smaller, more focused sub-groups. With Status, you can [configure channel permissions](./configure-channel-permissions.md) based on token ownership. For example, you can make a public channel private or view-only by only allowing holders of specific tokens to join or post. - -:::tip -To add channels to your community, check out [Create a channel](./create-a-channel.md). -::: - -`{/* [image](image) */}` - -=== ":mobile-one: Community information" -Information about the community, such as the number of members, active users or the main community topics. - -=== ":mobile-two: Channel categories" -Community owners can group related channels into [categories](./create-a-channel.md). This is especially useful for communities with a lot of channels. - -=== ":mobile-three: Channels list" -The list of available channels in a community. [Private channels](./configure-channel-permissions.md) have a :mobile-locked-lock: lock icon next to the channel name. - -## Public and private channels - -All members in a [Status Community](./how-to-use-communities-your-quick-start-guide.md) can browse and join public channels. For private channels, you must [meet the token requirements](./understand-token-requirements-in-channels.md) to join the channel. To maintain access to private channels, hold the required tokens at all times. - -:::info -Messages in [private communities](./how-to-use-communities-your-quick-start-guide.md) and private channels are always end-to-end encrypted. -::: - -`{/* [image](image) */}` - -=== ":mobile-one: Public channel" -All community members can join public channels. When you join a community, you automatically get access to these channels. - -=== ":mobile-two: Private channel" -Private channels have a :mobile-locked-lock: lock icon next to the channel name. To access these channels, you need to [meet the token requirements](./understand-token-requirements-in-channels.md). To maintain access, keep holding the required tokens. - -## Channel information - -`{/* [image](image) */}` - -=== ":mobile-one: Channel information" -You can see the channel name and permissions here. Private channels have a :mobile-locked-lock: lock icon. From this area, you can select :mobile-more-options: **More options** to view more details about the channel, such as channel members, permissions or notifications. - -=== ":mobile-two: Pinned message area" -Channel members can [pin messages](../messaging-and-web3-browser/pin-a-message.md) to this area, such as announcements, FAQ or channel rules. - -=== ":mobile-three: Channel feed" -This area shows the channel activity, including messages, photos, reactions or links. - -=== ":mobile-four: Message field" -From here, you can send messages to channel members with [text](../messaging-and-web3-browser/send-and-read-messages.md), [images](../messaging-and-web3-browser/share-images-in-status.md) or emojis, as well as [audio messages](../messaging-and-web3-browser/send-an-audio-message.md). - -## The #general channel - -The #general channel is created by default when you [create a community](./create-a-status-community.md). You can use this channel for various purposes, including sharing news, discussing community policies and events or making announcements. - -This channel works like any other channel. As a community administrator, here's how you can make this channel more helpful: - -- Don't rename the channel. The #general channel is widely recognized and understood in communities. Renaming the channel may confuse members. -- [Set up permissions](./configure-channel-permissions.md) to restrict who can post in #general. This removes noise from the channel and keeps it on topic. -- Use the #general channel to [pin messages](../messaging-and-web3-browser/pin-a-message.md) describing FAQs, community rules or other information relevant to your community. diff --git a/apps/website/docs/status-communities/common-issues-when-the-community-s-control-node-is-offline.md b/apps/website/docs/status-communities/common-issues-when-the-community-s-control-node-is-offline.md deleted file mode 100644 index 0ee50299..00000000 --- a/apps/website/docs/status-communities/common-issues-when-the-community-s-control-node-is-offline.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -id: 604 -revision: '0' -language: en -title: Common issues when the community control node is offline ---- - -When you [create a community](./create-a-status-community.md), your computer becomes a [control node](./about-the-control-node-in-status-communities.md). As the community owner, the control node runs automatically in your Status desktop app if you use the same profile and computer where you set up the community. - -:::info -You can [set up a new control node](./replace-your-community-s-control-node.md) if the initial Status desktop fails or becomes inaccessible. -::: - -If you don't have the Status desktop app running and connected to the internet, your community keeps working, but your members' experience degrades. Here are some of the problems you and your members may find: - -- Members can't access messages over one month because the [Community History Service](./about-the-community-history-service.md) is not running. -- [Community join requests](./manage-community-join-requests.md) can't be processed and are rejected or ignored. -- [Banning or kicking out members](./kick-or-ban-someone-from-your-community.md) is delayed until the control node is online. -- Your community can't verify if members in [token-gated channels](./set-up-channel-permissions.md) still hold the required tokens. -- Members who could not access a private channel for not [meeting the requirements](./understand-token-requirements-in-channels.md) can't join the channel even if they meet them now. - -:::tip -Keep the Status desktop app working as the [community control node](./about-the-control-node-in-status-communities.md) online every day or at least once every six days. -::: diff --git a/apps/website/docs/status-communities/configure-your-community-permissions.md b/apps/website/docs/status-communities/configure-your-community-permissions.md deleted file mode 100644 index 44147994..00000000 --- a/apps/website/docs/status-communities/configure-your-community-permissions.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: 355 -revision: '0' -language: en -title: Configure your community permissions ---- - -:octicons-tools-24: - -:::info -We're working on this content. -::: diff --git a/apps/website/docs/status-communities/create-a-channel.md b/apps/website/docs/status-communities/create-a-channel.md deleted file mode 100644 index 035320ae..00000000 --- a/apps/website/docs/status-communities/create-a-channel.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -id: 313 -revision: '0' -language: en -title: Create a channel ---- - -:::info -Currently, you can only create a channel using Status desktop. -::: - -Community owners can create public and private channels in the Status app. All community members can browse and join public channels. To join private channels, members must meet the [channel requirements](./understand-token-requirements-in-channels.md). As a community owner, you can set up specific permissions to create a private channel. - -## Create a channel - -=== "Desktop" - - 1. From the navigation sidebar, click the community where you want to create a channel. - 1. In the **Community** sidebar, right-click the empty space and select **Create Channel**. - 1. Type your **Channel name**. Optionally, click :desktop-emojis: **Emoji** to choose an emoji. - 1. Optionally, choose a **Channel colour** and add a **Description** of your channel. - 1. Click **Create Channel**. - -If you need to set up additional permissions, click **Add permissions** and check out [configure channel permissions](./configure-channel-permissions.md). For example, you can create a view-only announcement channel or a channel all members can view and post in. diff --git a/apps/website/docs/status-communities/create-a-status-community.md b/apps/website/docs/status-communities/create-a-status-community.md deleted file mode 100644 index 00da636f..00000000 --- a/apps/website/docs/status-communities/create-a-status-community.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: 29 -revision: '0' -language: en -title: Create a Status Community ---- - -:::info -Currently, you can only create and administer communities using the Status desktop app. -[Download Status desktop :octicons-desktop-download-16:](https://status.im/get) -::: - -A [Status Community](./about-status-communities.md) is a place where you can connect and communicate with people who share your interests. Communities are ideal for those with a passion or hobby, study groups, gaming communities, professional network groups, or creators looking to generate income from their content without intermediaries. - -As a community owner, you can create open communities or [restrict community access using tokens](./set-up-a-private-community.md), control [membership approval](../set-up-your-community-s-approval-options.md) and organize discussion groups in [channels](./create-a-channel.md). Owners have complete control over their community and are responsible for maintaining its rules. - -## Create a community - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-communities: **Communities**. - 1. On top of the content area, click **Create community**. - 1. Add a **name** and a **short description** of your community. - 1. Optionally, add a **logo**, **banner**, **colour** palette and **tags**. You can [customize these settings](#customize-your-community) at any time. - 1. Configure [additional community settings](#configure-additional-settings). - 1. Click **Next** to complete the [information about your community](#describe-your-community-and-its-rules). - 1. Click **Create community**. - -## Configure additional settings - -You can configure these community settings: - -| Setting | Description | -| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Community history service** | Status Communities store up to 30 days of chat history by default. When this option is checked, community members can see messages older than 30 days. | -| **Request to join required** | Community owners must manually approve each join request if this setting is checked. This option applies to [open and private](./about-status-communities.md) communities. | -| **Any member can pin a message** | Any community member can [pin messages](../messaging-and-web3-browser/pin-a-message.md) when this setting is checked. If the setting is unchecked, only the community owner can pin messages. | - -:::info -The Community history service uses the [BitTorrent peer-to-peer network :octicons-tab-external-16:](https://en.wikipedia.org/wiki/BitTorrent) to store and retrieve community messages older than 30 days. Status uses a decentralized network and does not store this information. -::: - -## Describe your community and its rules - -=== "Desktop" - - 1. In the **Community introduction and rules**, introduce your community to new members and describe the community guidelines. - 1. In the **Leaving community message**, write the message sent to members leaving your community. - 1. Click **Create community** if you haven't already. - -## Customize your community - -After you create a community, you can customize its settings at any time. - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo. - 1. Click :desktop-overview: **Overview**. - 1. Expand the window and click **Edit Community**. - 1. Edit your community look-and-feel, [additional settings](#configure-additional-settings) or [community rules](#describe-your-community-and-its-rules). - 1. Click **Save changes**. diff --git a/apps/website/docs/status-communities/create-a-token-gated-channel.md b/apps/website/docs/status-communities/create-a-token-gated-channel.md deleted file mode 100644 index ceb209d1..00000000 --- a/apps/website/docs/status-communities/create-a-token-gated-channel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 314 -revision: '0' -language: en -title: Create a token-gated channel ---- diff --git a/apps/website/docs/status-communities/customize-your-channel.md b/apps/website/docs/status-communities/customize-your-channel.md deleted file mode 100644 index 7149fc66..00000000 --- a/apps/website/docs/status-communities/customize-your-channel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 405 -revision: '0' -language: en -title: Customize your channel ---- diff --git a/apps/website/docs/status-communities/customize-your-community.md b/apps/website/docs/status-communities/customize-your-community.md deleted file mode 100644 index 675fbc26..00000000 --- a/apps/website/docs/status-communities/customize-your-community.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 294 -revision: '0' -language: en -title: Customize your community ---- diff --git a/apps/website/docs/status-communities/delegate-admin-functions-to-community-members.md b/apps/website/docs/status-communities/delegate-admin-functions-to-community-members.md deleted file mode 100644 index 960f83a9..00000000 --- a/apps/website/docs/status-communities/delegate-admin-functions-to-community-members.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: 543 -revision: '0' -language: en -title: Delegate admin functions to community members ---- - -:::info -Currently, you can only delegate admin functions using Status desktop. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -Community owners have total control over their communities, including settings, membership approvals and permissions. In addition, owners can delegate administrative functions to other community members through the [admin role](./permissions-by-role-in-status-communities.md). Admins play a similar role to owners, but with some important differences. Check out [Permissions by role in Status Communities](./permissions-by-role-in-status-communities.md) for more information. - -To delegate admin functions to others, owners use [token-based community permissions](./set-up-your-community-permissions.md). Tokens are digital assets in a blockchain (such as the [Ethereum blockchain](../getting-started/about-the-ethereum-blockchain.md)), including assets (virtual coins), collectibles and ENS names. - -## What to expect - -- To delegate admin functions, assign the `Become admin` community permission to a collectible or ENS name owner. -- Using ENS names to delegate admin functions is more straightforward than using collectibles, but it requires the admin to own the ENS name. -- You can create a maximum of five different `Become admin` community-level permissions, but you can apply a single permission to multiple members. -- To stop delegating admin functions, [self-destruct the admin token](./self-destruct-a-token-remotely.md) or [delete the admin permission](./set-up-your-community-permissions#delete-community-permissions.md). - -## Choose your delegation token - -You can delegate [admin functions](./permissions-by-role-in-status-communities.md) to others using a collectible or an ENS name. - -If you use a collectible, follow this process: - -- [x] [Mint](./mint-tokens-for-your-community.md) a non-transferable (soulbound) and remotely-destructible collectible. -- [x] [Airdrop the collectible](./how-to-airdrop-tokens-in-status.md) to the person you wish to delegate admin functions to. -- [x] [Delegate the admin function](#delegate-admin-functions-using-collectibles-or-ens-names) using token-based community permissions. - -Using ENS names, you don't need to mint and airdrop any token. You [delegate admin functions](#delegate-admin-functions-using-collectibles-or-ens-names) to a specific ENS name owner (such as alice.acme.eth) or a group of people under the same ENS domain (such as acme.eth). - -:::info -Assets don't have the non-transferable (soulbound) and self-destructing properties collectibles have, making it harder to remove admin functions from other users. Avoid using assets to delegate admin functions. -::: - -## Delegate admin functions using collectibles or ENS names - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. Click **Add permission**. - 1. For the `Who holds` variable, choose your delegation option and use the table below for reference. - 1. For the `Is allowed to` variable, select :desktop-admin: **Become admin**. - 1. For the `In` variable, make sure your community is selected. - 1. Click **Create permission**. The new permission takes effect immediately. - - | Delegation option | Steps | - |:---|:---| - | Collectible | 1. Select **Collectibles**. | - || 2. Choose the collectible and amount you want to use to delegate admin functions. | - || 3. Alternatively, **Import existing collectible**. | - || 4. Click **Add**. | - | ENS name | 1. Select **ENS**. - || 2. Enter the ENS name or domain you want to delegate admin functions to. | - || 3. Click **Add**. | - -:::info -When you select the `Become admin` role, the **Hide permission** option is enabled automatically. -::: diff --git a/apps/website/docs/status-communities/delete-a-channel.md b/apps/website/docs/status-communities/delete-a-channel.md deleted file mode 100644 index e4c2fdd6..00000000 --- a/apps/website/docs/status-communities/delete-a-channel.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: 403 -revision: '0' -language: en -title: Delete a channel ---- - -:::info -Currently, you can only delete a channel using Status desktop. -::: - -Community owners can delete [channels](./channels-your-quick-start-guide.md) within their communities. As a community owner, when you delete a channel, all messages and files associated with that channel are also deleted. - -:::info -Once you delete a channel, it can't be retrieved or restored. -::: - -## What to expect - -- You can only delete a channel if you are the community owner. - -- When you delete a channel, it disappears immediately, and all users lose access to its content (messages and files). - -- If you delete a private channel, the [permissions](./configure-channel-permissions.md) you configured for the channel are also lost. If you want to recreate the channel, you need to configure its permissions again. - -=== "Desktop" - - 1. From the navigation sidebar, click the community with the channel you want to delete. - 1. In the **Community** sidebar, right-click the channel. - 1. Select :desktop-delete: **Delete Channel**. - 1. In the **Delete** pop-up window, click **Delete**. diff --git a/apps/website/docs/status-communities/delete-your-status-community.md b/apps/website/docs/status-communities/delete-your-status-community.md deleted file mode 100644 index 65f96fe4..00000000 --- a/apps/website/docs/status-communities/delete-your-status-community.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: 538 -revision: '0' -language: en -title: Delete your Status Community ---- - -:::info -Currently, you can only delete your community using Status desktop. -::: - -Status uses a [peer-to-peer network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md) that temporarily stores data of your community. Because of this decentralized architecture, there is no one-click way to delete a community and all associated data. - -## What to expect - -- For a community to disappear, you must remove everyone from the community, including yourself, and make sure no activity happens for 30 days. -- Community data recorded on the blockchain continues to exist. For example, if you [minted tokens for your community](./mint-tokens-for-your-community.md), the transaction is on-chain and persists in the blockchain. - -:::info -Your messages are not in the blockchain and are not transported through the Ethereum network. [Messages](../messaging-and-web3-browser/about-status-messages.md) are temporarily stored in the peer-to-peer network. -::: - -## Delete your Status Community - -You must complete the following tasks: - -- [x] Set up [manual approval](./manage-community-join-requests.md) for the community. -- [x] [Kick out all members from the community](./kick-or-ban-someone-from-your-community.md). -- [x] [Leave your community](./leave-a-status-community.md). -- [x] Delete or destroy the community's private key if it's stored anywhere. -- [x] Wait 30 days. - -After 30 days, the Waku peer-to-peer network stops caching your community data, and the community is deleted irrecoverably. diff --git a/apps/website/docs/status-communities/grant-exclusive-access-with-custom-tokens.md b/apps/website/docs/status-communities/grant-exclusive-access-with-custom-tokens.md deleted file mode 100644 index 6c678dc5..00000000 --- a/apps/website/docs/status-communities/grant-exclusive-access-with-custom-tokens.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 592 -revision: '0' -language: en -title: Grant exclusive access with custom tokens ---- diff --git a/apps/website/docs/status-communities/grant-exclusive-access-with-tokens.md b/apps/website/docs/status-communities/grant-exclusive-access-with-tokens.md deleted file mode 100644 index 13f98493..00000000 --- a/apps/website/docs/status-communities/grant-exclusive-access-with-tokens.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: 592 -revision: '0' -language: en -title: Grant exclusive access with tokens ---- - -As a community owner in Status, you can use tokens to create different access levels within your community. These levels apply to both the community overall and individual channels within it. This approach helps to keep your community engaging and organized. - -For example, you can use tokens to organize a conference with community access limited to token holders and exclusive channels just for speakers. If you are an artist or content creator, you can set up a community for your fans and give certain fans access to exclusive channels where you release new content. - -The options are many, allowing you to create an environment tailored to your community's needs. For more examples of using tokens to provide exclusive access to your community, check out [Token-based access to communities and channels](./token-based-access-to-communities-and-channels.md). - -## Practical example: use a Status Community to organize an event - -If you use a Status Community to organize a conference or event, you might want a community open to all interested individuals. Yet, you also need a space just for the speakers. - -With tokens, you can limit access to your community only to the individuals invested in the conference topic. Additionally, you can create an exclusive channel within the community, only accessible to the event speakers. This provides a platform for them to discuss and collaborate on the conference preparation. - -### Step 1: mint the community tokens - -You start minting the community tokens you need to organize the event. In this particular example, you consider two different tokens: - -- A general-access token for attendees. -- A VIP-access token only for speakers. - -:::info -Currently, you can only mint collectibles. -::: - -- [x] [Mint a new collectible](./mint-tokens-for-your-community.md) to grant general access to the event attendees. -- [x] Customize the general-access [collectible options](./mint-tokens-for-your-community#set-up-collectible-options.md). For example, you may want to turn on `Unlimited supply` and turn off the `Not transferable (Soulbound)` option. -- [x] [Mint a collectible](./mint-tokens-for-your-community.md) to grant exclusive access to the event speakers. -- [x] Configure the VIP-access [collectible options](./mint-tokens-for-your-community#set-up-collectible-options.md). In this case, you may want to turn off `Ulimited supply` and turn on the `Not transferable (Soulbound)` and `Remote self-destruct` options. - -:::info -You can't change the collectible description or options after minting. -::: - -### Step 2: create the token-based permissions - -To create the permissions, check out [Set up your community permissions](./set-up-your-community-permissions.md). In this example, you create two different permissions using the tokens from the [previous step](#step-1-mint-the-community-tokens): - -- Community-level permission to grant general access to the conference attendees. -- Channel-level permission to grant exclusive channel access to the event speakers. - -You may want to configure these permissions as follows: - -| Scope | Applies to | Variable | Option | -| :-------------- | :--------------------- | :-------------- | :----------------------------------- | -| Community-level | Attendees and speakers | `Who holds` | Your general-access token | -| | | `Is allowed to` | :desktop-member: Become member | -| | | `In` | Your community | -| Channel-level | Speakers only | `Who holds` | Your VIP-access token | -| | | `Is allowed to` | :desktop-member: Become member | -| | | `In` | Your exclusive speakers-only channel | - -:::tip -You can also set up exclusive access to communities or channels for holders of a particular ENS domain (for example, alice.acme.eth or bob.acme.eth). -::: - -### Step 3: distribute tokens to attendees and speakers - -After you [create the permissions](#step-2-create-the-token-based-permissions), you can distribute the tokens via [airdrops](./how-to-airdrop-tokens-in-status.md) to all the conference's participants: - -- [x] Airdrop the general-access token to the conference attendees and speakers. -- [x] Airdrop the VIP-access token to the conference speakers only. diff --git a/apps/website/docs/status-communities/how-to-airdrop-tokens-in-status.md b/apps/website/docs/status-communities/how-to-airdrop-tokens-in-status.md deleted file mode 100644 index 9e417798..00000000 --- a/apps/website/docs/status-communities/how-to-airdrop-tokens-in-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 540 -revision: '0' -language: en -title: How to airdrop tokens in Status ---- diff --git a/apps/website/docs/status-communities/how-to-mint-an-admin-token.md b/apps/website/docs/status-communities/how-to-mint-an-admin-token.md deleted file mode 100644 index f1a48af1..00000000 --- a/apps/website/docs/status-communities/how-to-mint-an-admin-token.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 575 -revision: '0' -language: en -title: How to mint an admin token ---- diff --git a/apps/website/docs/status-communities/how-to-run-a-community-your-quick-start-guide.md b/apps/website/docs/status-communities/how-to-run-a-community-your-quick-start-guide.md deleted file mode 100644 index d1be30f7..00000000 --- a/apps/website/docs/status-communities/how-to-run-a-community-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 102 -revision: '0' -language: en -title: 'How to run a community: your quick start guide' ---- diff --git a/apps/website/docs/status-communities/how-to-use-communities-your-quick-start-guide.md b/apps/website/docs/status-communities/how-to-use-communities-your-quick-start-guide.md deleted file mode 100644 index 333cd7b4..00000000 --- a/apps/website/docs/status-communities/how-to-use-communities-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 110 -revision: '0' -language: en -title: 'How to use Communities: your quick start guide' ---- diff --git a/apps/website/docs/status-communities/import-a-community-someone-shares-with-you.md b/apps/website/docs/status-communities/import-a-community-someone-shares-with-you.md deleted file mode 100644 index f46c9686..00000000 --- a/apps/website/docs/status-communities/import-a-community-someone-shares-with-you.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: 445 -revision: '0' -language: en -title: Import a community someone shares with you ---- - -You can import a Status Community someone [shares with you](./invite-people-to-a-status-community.md) using the link, QR code or public's community key. Importing a community can also be helpful when you need help finding the community. - -:::info -If you're a community owner and want to restore your community on a different device, read [Restore your Status Community](./restore-your-status-community.md). -::: - -## Import community options - -You have three options to import a Status Community. - -| Option | Description | Works with | -| :--------------------- | :-------------------------------------------------------------------------- | :----------------- | -| Link | Tap or click the Status Community link to open the community page. | Mobile and desktop | -| QR code | Use this option to scan the community QR code someone shares with you. | Mobile | -| Community's public key | Import the key using the Status app to find the community you want to join. | Mobile and desktop | - -Use the community link, QR code or public key to find and import the community you're interested in. Status includes the community's public key in the QR code or link, like this: `https:///join.status.im/c/zQ3shMtRomXyM5svciMpdK7zDaR12XDeQWbzi4Fb8E6YywDrE`. The link contains the community's public key at the end, so you don't have to type it in. - -## Import a community - -To import the community, ask the person sharing the community to [send you the link or show you the QR code](./invite-people-to-a-status-community.md). - -=== "Mobile" - - 1. If you receive the community link, tap the link to open the community page. - 1. If you receive the community QR code or public's community key, follow the steps provided in the table below. - 1. Review the information when the community page opens and tap :mobile-unlocked-lock: **Join community**. - - | Option | Steps | - |:---|:---| - | QR code | 1. From the tab bar, tap :mobile-communities: **Communities**. - ||2. From the top navigation, tap :mobile-scan: **Scan** and scan the QR code. | - | Public's community key | 1. From the tab bar, tap :mobile-communities: **Communities**. | - || 2. Tap :mobile-add: **Add** > :mobile-download: **Import community**. | - || 3. In the **Community key** text field, enter the community link or public's community key. | - || 4. Verify the community you're about to import and tap :mobile-download: **Import community**. | - -=== "Desktop" - - If you receive the community link, click the link to open the community page. Review the information when the community page opens and tap :mobile-unlocked-lock: **Join community**. If you receive the public's community key, follow these steps: - - 1. From the navigation sidebar, click :desktop-communities: **Communities**. - 1. On top of the content area, click **Import using key**. - 1. In the **Community key** text field, enter the community link or public's community key. - 1. Click **Import**. If the **Import** option is unavailable, verify you're entering the correct key. - -:::info -After opening the link or scanning the QR code, you can [install Status](../getting-started/#download-status.md) if you haven't already. -::: diff --git a/apps/website/docs/status-communities/import-a-discord-community-into-status.md b/apps/website/docs/status-communities/import-a-discord-community-into-status.md deleted file mode 100644 index b54231f9..00000000 --- a/apps/website/docs/status-communities/import-a-discord-community-into-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 631 -revision: '0' -language: en -title: Import a Discord Community into Status ---- diff --git a/apps/website/docs/status-communities/import-tokens-to-your-community.md b/apps/website/docs/status-communities/import-tokens-to-your-community.md deleted file mode 100644 index 566af30b..00000000 --- a/apps/website/docs/status-communities/import-tokens-to-your-community.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 630 -revision: '0' -language: en -title: Import tokens to your community ---- diff --git a/apps/website/docs/status-communities/index.md b/apps/website/docs/status-communities/index.md deleted file mode 100644 index adfcb6ac..00000000 --- a/apps/website/docs/status-communities/index.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -revision: '0' -language: en -title: Status Communities ---- - -Create your community, set up private channels or join others' communities and channels. - -## Status Communities - -- [**Import** a community someone shares with you](./import-a-community-someone-shares-with-you.md) -- [**Invite** people to a Status community](./invite-people-to-a-status-community.md) -- [About community **request approvals**](./about-community-request-approvals.md) -- [Understand **token requirements** in communities](./understand-token-requirements-in-communities.md) -- [**Leave** a Status Community](./leave-a-status-community.md) -- [About **losing access** to a community](./about-losing-access-to-a-community.md) - -## Channels - -- [**Channels**: your quick start guide](./channels-your-quick-start-guide.md) -- [**Join** a channel](./join-a-channel.md) -- [**Invite** people to a channel](./invite-people-to-a-channel.md) -- [Understand **token requirements** in channels](./understand-token-requirements-in-channels.md) -- [About **losing access** to a channel](./about-losing-access-to-a-channel.md) - -## Create your community - -- [How to **run a community**: your quick start guide](../how-to-run-a-community-your-quick-start-guide.md) -- [**Create** a Status community](./create-a-status-community.md) -- [**Customize** your community](./customize-your-community.md) -- [**Import a Discord Community** into status](./import-a-discord-community-into-status.md) -- [**Back up** your community's private key](./back-up-your-community-s-private-key.md) - -## Administer your community - -- [Manage community **join requests**](./manage-community-join-requests.md) -- [About the **control node** in Status Communities](./about-the-control-node-in-status-communities.md) -- [**Replace** your community's control node](./replace-your-community-s-control-node.md) -- [**Transfer** your community's ownership](./transfer-your-community-s-ownership.md) -- [**Restore** your Status Community](./restore-your-status-community.md) -- [About the **Community History Service**](./about-the-community-history-service.md) -- [**Turn off** the Community **History** Service](./turn-off-the-community-history-service.md) -- [**Kick or ban** someone from your community](./kick-or-ban-someone-from-your-community.md) -- [**Delete** your Status **Community**](./delete-your-status-community.md) - -## Administer channels - -- [**Create** a channel](./create-a-channel.md) -- [**Customize** your channel](./customize-your-channel.md) -- [**Change** a private channel to public](./change-a-private-channel-to-public.md) -- [Set up **channel permissions**](./set-up-channel-permissions.md) -- [About **view-only channels**](./about-view-only-channels.md) -- [Set up a view-only channel](./set-up-a-view-only-channel.md) -- [Set up a private channel](./set-up-a-private-channel.md) -- [**Delete** a channel](./delete-a-channel.md) - -## Use tokens and set community permissions - -- [**Token-based access** to communities and channels](./token-based-access-to-communities-and-channels.md) -- [Set up a **private community**](./set-up-a-private-community.md) -- [**Change** a private community to public](./change-a-private-community-to-public.md) -- [**Permissions by role** in Status Communities](./permissions-by-role-in-status-communities.md) -- [Set up your **community permissions**](./set-up-your-community-permissions.md) -- [Grant **exclusive access** with tokens](./grant-exclusive-access-with-tokens.md) -- [**Mint tokens** for your community](./mint-tokens-for-your-community.md) -- [How to mint an **admin token**](./how-to-mint-an-admin-token.md) -- [**Import tokens** to your community](./import-tokens-to-your-community.md) -- [How to **airdrop tokens** in status](./how-to-airdrop-tokens-in-status.md) -- [**Delegate admin functions** to community members](./delegate-admin-functions-to-community-members.md) -- [**Remotely self destruct** a token](./remotely-self-destruct-a-token.md) -- [**Burn** your community tokens](./burn-your-community-tokens.md) - -## Status Web Communities - -- [About status **web communities**](./about-status-web-communities.md) -- [**Join** a Community on Status Web](./join-a-community-on-status-web.md) -- [Understand **throwaway profiles** in Status Web](./understand-throwaway-profiles-in-status-web.md) -- [**Use a throwaway profile** in Status Web](./use-a-throwaway-profile-in-status-web.md) diff --git a/apps/website/docs/status-communities/invite-people-to-a-channel.md b/apps/website/docs/status-communities/invite-people-to-a-channel.md deleted file mode 100644 index bb2e55ba..00000000 --- a/apps/website/docs/status-communities/invite-people-to-a-channel.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: 581 -revision: '0' -language: en -title: Invite people to a channel ---- - -Whether you're a comunity owner or a member, you can invite anyone to any channel you're a member of. - -:::info -To join the channel, the person you're inviting needs to be a member of the community. -::: - -## Invite options - -There are three different options you can invite someone to a channel. - -| Option | Description | Works with | -| :-------------------------- | :----------------------------------------------------------------------- | :----------------- | -| Invite your Status contacts | You can share the channel with anyone who's on your Status contact list. | Mobile and desktop | -| Show QR code | Show the channel's QR code to the person you want to invite. | Mobile | -| Share a link | Share the link via messenger apps or social media. | Mobile and desktop | - -## Invite people to a channel - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. Tap the community with the channel you want to share. - 1. In the channel list, long press the channel you want to share. - 1. In the action sheet, choose an option and proceed as follows: - - | Option | Steps | - |---------|--------| - | Invite your Status contacts | 1. Select :mobile-add-user: **Invite people from contacts list**.
2. Check the boxes next to the contacts you want to invite.
3. Tap **Invite users**. | - | Show QR code | 1. Select :moblie-qr-code: **Show QR code**.
2. Show the QR code to the person you want to invite. | - | Share a link | 1. Select :mobile-share: **Share channel**.
2. Share the channel link via social media, messenger apps or any other app you prefer. - -=== "Desktop" - - 1. From the navigation sidebar, click the community with the channel you want to share. - 1. In the channels sidebar, right click the channel and then select :desktop-share: **Share channel**. - 1. Choose the contacts or copy the link and proceed as follows: - - | Option | Steps | - |---------|--------| - | Invite your Status contacts | 1. In the **Invite Contacts** pop-up window, type the names of your contacts in the search bar or check the boxes next to the names.
2. Click **Next**.
3. Optionally, type an invitation message.
4. Click **Send Invites**. | - | Share a link | 1. In the **Invite Contacts** pop-up window, click :desktop-copy: **Copy** next to the link.
2. Switch to the app where you want to share the link and paste it there. - -:::tip -After opening the link or scanning the QR code, people can [install Status](../getting-started/run-the-status-app-for-the-first-time.md) if they haven't already. -::: diff --git a/apps/website/docs/status-communities/invite-people-to-a-status-community.md b/apps/website/docs/status-communities/invite-people-to-a-status-community.md deleted file mode 100644 index 95326b7a..00000000 --- a/apps/website/docs/status-communities/invite-people-to-a-status-community.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: 425 -revision: '0' -language: en -title: Invite people to a Status Community ---- - -Whether you are a community member or not, you can tell people about the community and invite them to join. - -:::info -People you invite still need to meet the requirements to join private communities. -::: - -## Invite options - -There are three approaches to inviting someone. - -| Approach | Description | Works with | -| :----------------------- | :-------------------------------------------------------------------------------------------- | :----------------- | -| Share to Status contacts | Use this option to share the community with people in your Status contact list. | Mobile and desktop | -| Show QR code | Use this option to show the community QR code to people to scan. | Mobile | -| Share a link | Use this option to share a link via your other social media or copy it and share it manually. | Mobile and desktop | - -## Invite people to a community - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. In the **Communities** list, long press the community you want to share. If you don't see the community, enter the name in the search bar. - 1. In the action sheet, choose an option and proceed as follows: - - | Option | Steps | - |:---|:---| - | Share to Status contacts | 1. Select :mobile-add-user: **Invite people from contacts list**.
2. Check the boxes next to the contacts you want to share with.
3. Tap **Invite users**. | - | Show QR code | 1. Select :moblie-qr-code: **Show QR code**.
2. Show or send the QR code to people you want to invite. | - | Share a link | 1. Select :mobile-share: **Share community**.
2. To share the link via another app on your phone, tap a profile picture or an app icon. To copy the link, tap **Copy**. | - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-communities: **Communities**. - 1. Choose the community you want to share. If you don't see the community, enter the name in the search bar. - 1. From the navigation sidebar, right click the community logo and then select :desktop-share: **Share**. - 1. Choose the contacts or copy the link and proceed as follows: - - | Option | Steps | - |:---|:---| - | Share to Status contacts | 1. In the **Invite Contacts** pop-up window, type the names of your contacts in the search bar or check the boxes next to the names.
2. Click **Next**.
3. Optionally, type an invitation message.
4. Click **Send Invites**. | - | Share a link | 1. In the **Invite Contacts** pop-up window, click :desktop-copy: **Copy** next to the link.
2. Switch to the app or platform where you want to share the link and paste it there. - -:::tip -After opening the link or scanning the QR code, people can [install Status](../getting-started/#download-status.md) Status if they haven't already. -::: diff --git a/apps/website/docs/status-communities/join-a-channel.md b/apps/website/docs/status-communities/join-a-channel.md deleted file mode 100644 index 7101f742..00000000 --- a/apps/website/docs/status-communities/join-a-channel.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: 325 -revision: '0' -language: en -title: Join a channel ---- - -With Status, you can organize your conversations with community members into designated spaces called [channels](channels-your-quick-start-guide.md). Channels bring the right people and information together for a common purpose, like a specific project or topic. - -All members of a [community](about-status-communities.md) can browse and join public channels. For private channels, you must [meet the requirements](understand-token-requirements-in-channels.md) to join the channel. To maintain access to private channels, hold the necessary tokens at all times. - -## Join a public channel - -All members can join channels that don't have a :mobile-locked-lock: lock icon next to their names. When you join a community, you automatically get access to these channels. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. Tap the community with the channel you want to join. - 1. Tap on the public channel. - -=== "Desktop" - - 1. From the navigation sidebar, click the community with the channel you want to join. - 1. In the channel sidebar, click the public channel. - -## Join a private channel - -Private channels have a :mobile-locked-lock: lock icon next to their names. To access these channels, you need to meet the token requirements. To maintain access, you need to keep holding the required tokens. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. Tap the community with the channel you want to join. - 1. Verify if you meet the channel requirements. If you don't meet the channel requirements, the **Enter channel** button is greyed out. - 1. Tap **Enter channel**. - -=== "Desktop" - - 1. From the navigation sidebar, click the community with the channel you want to join. - 1. In the channel sidebar, select the private channel. - 1. Verify if you meet the channel requirements. If you don't meet the channel requirements, the **Enter channel** button is greyed out. - 1. Click **Enter channel**. diff --git a/apps/website/docs/status-communities/join-a-community-on-status-web.md b/apps/website/docs/status-communities/join-a-community-on-status-web.md deleted file mode 100644 index adf4d69a..00000000 --- a/apps/website/docs/status-communities/join-a-community-on-status-web.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 238 -revision: '0' -language: en -title: Join a community on Status Web ---- diff --git a/apps/website/docs/status-communities/join-a-status-community.md b/apps/website/docs/status-communities/join-a-status-community.md deleted file mode 100644 index 5b9e3c28..00000000 --- a/apps/website/docs/status-communities/join-a-status-community.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: 103 -revision: '0' -language: en -title: Join a Status Community ---- - -:octicons-tools-24: - -:::info -We're working on this content. -::: diff --git a/apps/website/docs/status-communities/kick-or-ban-someone-from-your-community.md b/apps/website/docs/status-communities/kick-or-ban-someone-from-your-community.md deleted file mode 100644 index e4694367..00000000 --- a/apps/website/docs/status-communities/kick-or-ban-someone-from-your-community.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: 305 -revision: '0' -language: en -title: Kick or ban someone from your community ---- - -Community owners can kick out or ban members who violate the community guidelines or behave in a toxic manner. The difference between a kick and a ban in Status Communities is that a kick is temporary, while a ban is permanent. Community owners can kick or ban members in open and token-gated communities. - -In the case of minor offences or annoyances, consider kicking the offender. For major violations of the community guidelines or repeated offences, you can use the ban option. Use the ban option cautiously, as this action is irreversible. - -:::info -Banning or kicking a user on your Status contact list doesn't remove the contact. If you want to remove the user from your contact list, [remove the contact](../your-profile-and-preferences/remove-a-contact-from-status.md) or [block the user](../block-someone-in-status.md). -::: - -## What to expect - -- A user who has been kicked out of a community can ask to join the community again. -- A user who has been banned from a community cannot join the community again, but can request to join using a different profile. -- Users receive a notification when they are kicked out but not when they are banned. -- Users can see they have been kicked out or banned when they try to reaccess the community. - -## Kick or ban someone - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. Tap your community. - 1. From the navigation bar, tap :mobile-more-options: **More options**. - 1. Tap **View members** and then, tap :mobile-more-options: **More options** next to the member you want to kick or ban. - 1. Select :mobile-placeholder: **Kick** or :mobile-placeholder: **Ban**, depending on the action you wish to perform. - 1. Tap **Kick** or **Ban** again to confirm your action. - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. At the top of the channel sidebar, click your community logo. - 1. Click :mobile-placeholder: **Members** to show all the community users. - 1. Hover over the user and select **Kick** or **Ban**, depending on the action you wish to perform. - 1. Click **Kick** or **Ban** again to confirm your action. diff --git a/apps/website/docs/status-communities/leave-a-channel.md b/apps/website/docs/status-communities/leave-a-channel.md deleted file mode 100644 index 7f06e61e..00000000 --- a/apps/website/docs/status-communities/leave-a-channel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 295 -revision: '0' -language: en -title: Leave a channel ---- diff --git a/apps/website/docs/status-communities/leave-a-status-community.md b/apps/website/docs/status-communities/leave-a-status-community.md deleted file mode 100644 index c2ab1078..00000000 --- a/apps/website/docs/status-communities/leave-a-status-community.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -id: 529 -revision: '0' -language: en -title: Leave a Status Community ---- - -There are times when you may not enjoy the conversations in a community, and you can leave it. - -:::tip -If you find yourself overwhelmed by community notifications, there's no need to leave the communities. You can [turn off the notifications](../your-profile-and-preferences/configure-community-and-channel-notifications.md). -::: - -## What to expect - -- When you leave a community, you stop receiving messages or updates from that community. -- Status does not notify the community owner and other members when you leave. -- You can request to join the community again. Depending on the community rules, rejoining might require a new approval process or specific tokens. - -## Leave a Status Community - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**. - 1. In the **Communities** list, select the one you want to leave. - 1. Tap :mobile-more-options: **More options**. - 1. Select :mobile-log-out: **Leave community**. - 1. Tap **Leave community** again to confirm. - -=== "Desktop" - - 1. From the navigation sidebar, right click the community you want to leave. - 1. Select :desktop-left-arrow: **Leave Community**. diff --git a/apps/website/docs/status-communities/manage-community-join-requests.md b/apps/website/docs/status-communities/manage-community-join-requests.md deleted file mode 100644 index f179d0f9..00000000 --- a/apps/website/docs/status-communities/manage-community-join-requests.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: 491 -revision: '0' -language: en -title: Manage community join requests ---- - -:::info -Currently, you can only manage community join requests in Status desktop app. -::: - -You can set up manual or automatic approval join requests for your community. All requests to join your community are automatically approved by default, but you can enable manual approval. - -With the manual approval option, you receive a notification whenever someone requests to join your community. This way, you can decide whether to accept, reject or ignore the request. - -## What to expect - -- Users don't receive a notification when a community owner or admin rejects their join request. Users only get a notification when the request to join is accepted. -- The community screen is where the user can find out if their request was approved or denied. -- If your control node is offline (for example, when you turn off your computer or close the Status desktop app), automatic join requests are rejected, and manual join requests time out in seven days. Keep the Status desktop app running as much as possible. -- In addition to manual approval, you can set up [token requirements](./understand-token-requirements-in-communities.md) to join communities. Manual approval and token requirements work independently. - -:::info -Status Communities take into account token requirements before membership requests. -::: - -## Set up the approval request option - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. At the top of the channel sidebar, click your community logo. - 1. Click :desktop-overview: **Overview**. - 1. At the top of the content area, click **Edit Community**. - 1. Check or uncheck the **Request to join required** box to enable or disable manual approval. - 1. Click **Save changes**. - -## Reject or accept community join requests - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. At the top of the channel sidebar, click your community logo. - 1. Click :web-members: **Members**. - 1. At the top of the content area, select **Pending requests**. - 1. Hover over the user and select **Accept** or **Reject**, depending on your decision. diff --git a/apps/website/docs/status-communities/mint-tokens-for-your-community.md b/apps/website/docs/status-communities/mint-tokens-for-your-community.md deleted file mode 100644 index 1860a649..00000000 --- a/apps/website/docs/status-communities/mint-tokens-for-your-community.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: 541 -revision: '0' -language: en -title: Mint tokens for your community ---- - -:::info -Currently, you can only mint tokens using the Status desktop app. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -With Status, you can mint custom tokens as a community owner. You have complete control over your token creation and distribution. - -Your token's purpose and use are specific to your community. For example, you can reward your entire community or individual members with custom tokens, or offer [exclusive membership to token holders](./grant-exclusive-access-with-tokens.md). After minting your tokens, you can distribute them to community members and other users of Status via [airdrops](../how-to-airdrop-tokens-in-Status.md). - -:::info -Currently, you can only mint collectibles. -::: - -When you mint a token, you create a new and unique digital asset in the blockchain network. The blockchain charges you a transaction fee for this process. Fore more details about blockchain fees, check out [Understand network fees](../status-wallet/understand-network-fees.md). - -## What to expect - -- Community tokens you mint belong to your community and depend on it. This is why they don't appear in your [Status Wallet](../status-wallet/status-wallet-your-quick-start-guide.md) once you mint them on your community's behalf, but you can [airdrop](../how-to-airdrop-tokens-in-Status.md) them to your or any other address. -- Create an admin token using the `Not transferable (Soulbound)` and `Remote self-destruct` options. For more information, check out [Delegate admin functions to community members](./delegate-admin-functions-to-community-members.md). -- In addition to the native Ethereum network (mainnet), Status supports the Optimism and Arbitrum [layer-2 scaling solutions](../getting-started/layer-2-scaling-solutions-for-ethereum.md) to mint tokens. These scaling solutions provide faster and cheaper transactions than mainnet. -- If you [delete your community](./delete-your-status-community.md), you lose the metadata associated with your tokens, including the image and description. - -:::tip -Minting a token is an on-chain transaction. The record of your token persists in the blockchain after you delete the community. -::: - -## Mint a collectible - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. At the top of the channel sidebar, click your community logo and then, click :desktop-token: **Mint tokens**. - 1. Click **Create new token**. - 1. Customize your collectible by adding its artwork, name and description. - 1. Set up your [collectible options](#set-up-collectible-options). - 1. Click **Preview** to review your new token description and settings and then, click **Mint**. - 1. Review the transaction and fees and click :desktop-password: **Sign transaction**. - -:::info -You can't change the collectible description or options after minting. -::: - -## Set up collectible options - -| Setting | Description | -| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Token symbol | Choose up to four words to identify your token. Tokens minted by the same community can't have the same symbol. | -| Account | Select the wallet account you want to use to mint the token and pay the transaction fees. | -| Network | Choose the Ethereum mainnet or your preferred layer-2 network to mint your token. You can choose between Optimism and Arbitrum layer-2 networks.
Layer-2 networks commonly have lower network fees. | -| Unlimited supply | Turn on this option to create an unlimited number of tokens. If you choose this option, you can't [burn your token](./burn-your-community-tokens.md) after minting. | -| Total finity supply | The total number of tokens that can be produced or minted. After minting the token, you can reduce this number by [burning the token](./burn-your-community-tokens.md). | -| Not transferable (Soulbound) | If you turn on this option, the token becomes locked to the first wallet address it is sent to, and can't be transfer to another address. | -| Remote self-destruct | When you turn on this option, you can destroy the token and make it unusable, even after you transfer it to others. | diff --git a/apps/website/docs/status-communities/permissions-by-role-in-status-communities.md b/apps/website/docs/status-communities/permissions-by-role-in-status-communities.md deleted file mode 100644 index e588cc42..00000000 --- a/apps/website/docs/status-communities/permissions-by-role-in-status-communities.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: 558 -revision: '0' -language: en -title: Permissions by role in Status Communities ---- - -Status Communities have distinct roles, each with unique permissions and access levels. - -## Permissions for key features - -Refer to this table for the Status Communities permissions by role type. - -| Action | Owner | Admin | Member | -| :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------- | :--------------- | :--------------- | -| [Send messages](../messaging-and-web3-browser/send-and-read-messages.md), [react or reply to messages](../messaging-and-web3-browser/react-and-reply-to-messages.md), [edit or delete own messages](../messaging-and-web3-browser/edit-and-delete-your-messages.md) | :material-check: | :material-check: | :material-check: | -| [Mention someone, use global mentions](../messaging-and-web3-browser/use-mentions-in-status.md) | :material-check: | :material-check: | :material-check: | -| [Send images](../messaging-and-web3-browser/share-images-in-status.md), [GIFs and stickers](../messaging-and-web3-browser/send-gifs-and-stickers.md) | :material-check: | :material-check: | :material-check: | -| [Block someone](../your-profile-and-preferences/block-or-unblock-someone-in-status.md) | :material-check: | :material-check: | :material-check: | -| [Access the community administration screens and functions](./getting-started-for-community-owners.md) | :material-check: | :material-check: | | -| [Edit community settings](./customize-your-community.md) | :material-check: | :material-check: | | -| [Create](./create-a-channel.md), [edit](./customize-your-channel.md) and [delete channels or categories](./delete-a-channel.md) | :material-check: | :material-check: | | -| [Reorder channels and categories](./customize-your-channel.md) | :material-check: | :material-check: | | -| [Create, edit and delete `Become member` permissions](./set-up-a-private-community.md) | :material-check: | :material-check: | | -| [Create, edit and delete `Become admin` permissions](./delegate-admin-functions-to-community-members.md) | :material-check: | | | -| [Create, edit and delete other permissions](./set-up-your-community-permissions.md) | :material-check: | :material-check: | | -| [Recieve `Request to join` notifications and ability to accept or reject requests](./manage-community-join-requests.md) :one: | :material-check: | :material-check: | | -| [Kick and ban members](./kick-or-ban-someone-from-your-community.md) :one: | :material-check: | :material-check: | | -| [Delete any message in the community](../messaging-and-web3-browser/edit-and-delete-your-messages.md) | :material-check: | :material-check: | | -| Pin messages when [`Any member can pin a message` option](./customize-your-community.md) is checked | :material-check: | :material-check: | :material-check: | -| Pin messages when [`Any member can pin a message` option](./customize-your-community.md) is unchecked | :material-check: | :material-check: | | -| View community node statistics | :material-check: | :material-check: | | -| [Mint tokens](./mint-tokens-for-your-community.md) | :material-check: | | | -| [Airdrop tokens](./how-to-airdrop-tokens-in-status.md) | :material-check: | | | -| [Access the community's private key](./back-up-your-community-s-private-key.md) :two: | :material-check: | | | -| [Configure the Community History Service](./about-the-community-history-service.md) | :material-check: | | | - -:one: If an admin [accepts a member request](./manage-community-join-requests.md) or removes a member by [kicking or banning them](./kick-or-ban-someone-from-your-community.md), the command is sent to the owner node for action. If the owner node is not online, it will take the required action the next time it comes online. - -:two: Community owners have the option to [manage their community using multiple computers](../manage-your-community-from-different-computers.md). For instance, they may use a laptop in addition to their desktop computer. If the owner manages the community from a computer without importing the community's private key, the key is not available on that computer. - -:::info -To provide the best experience for their members, community owners should keep the Status desktop app online every day or at least once every six days. -::: diff --git a/apps/website/docs/status-communities/remotely-self-destruct-a-token.md b/apps/website/docs/status-communities/remotely-self-destruct-a-token.md deleted file mode 100644 index 41004693..00000000 --- a/apps/website/docs/status-communities/remotely-self-destruct-a-token.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 577 -revision: '0' -language: en -title: Remotely self-destruct a token ---- diff --git a/apps/website/docs/status-communities/replace-your-community-s-control-node.md b/apps/website/docs/status-communities/replace-your-community-s-control-node.md deleted file mode 100644 index 35127af5..00000000 --- a/apps/website/docs/status-communities/replace-your-community-s-control-node.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 605 -revision: '0' -language: en -title: Replace your community's control node ---- - -The computer where you create your Status Community and every computer where you run Status desktop and restore your community's private key becomes a [community control node](./about-the-control-node-in-status-communities.md). You can replace the Status desktop running as the control node if you need to reinstall Status desktop or it becomes unavailable. - -The community control node maintains the settings, configuration and functionality of your community. Keep the Status desktop app where you set up your community running and connected to the internet as much as possible, or at least once every six days. - -:::warn -Don't use more than one installation of Status desktop as your community's control node. Running your community with multiple control nodes will cause unforeseen issues and increase your community's bandwidth requirements. -::: - -## Replace your community's control node - -Here are the steps to set up a new Status desktop installation as the community control node. You need a [backup of your community's private key](./back-up-your-community-s-private-key.md) and your [profile's recovery phrase](../your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md) to complete this process" - -:::warn -Only proceed if you have a copy of your community's private key and recovery phrase. If you proceed without this information, you will lose your Status profile and community. -::: - -- [x] If you can still access the initial Status desktop app acting as the control node, [uninstall this app](../your-profile-and-preferences/uninstall-status-desktop.md). -- [x] Using the same computer or a different one, reinstall Status desktop [with the same Status profile you used to create your community](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md). Don't import your community's private key yet. -- [x] Verify that your profile in both the new and the previous Status desktop installations [are in sync](../your-profile-and-preferences/sync-your-profile-across-devices.md). The sync process may take some time to complete. -- [x] After the synchronisation process, [remove your original Status desktop](../your-profile-and-preferences/turn-off-profile-syncing.md) from the list of synchronised devices. -- [x] On the new Status desktop installation, [restore your Status Community](./restore-your-status-community.md) by importing the community's private key. diff --git a/apps/website/docs/status-communities/restore-your-status-community.md b/apps/website/docs/status-communities/restore-your-status-community.md deleted file mode 100644 index c0dd884e..00000000 --- a/apps/website/docs/status-communities/restore-your-status-community.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: 495 -revision: '0' -language: en -title: Restore your Status Community ---- - -:::info -Currently, you can only restore your community using [Status desktop](../getting-started/#download-status.md). -::: - -If you lose access to the computer where you run your Status Community, you can restore the community onto another device using the community's private key. This process creates a new community node. - -:::info -You can also use the community's private key to [transfer the community's ownership](./transfer-your-community-s-ownership.md). -::: - -The community's private key is a large string of characters stored in the Status app and protected by your Status password. Anyone with access to this key may become the community owner and control its settings, permissions and membership approvals. - -:::warn -Manually transferring your community from one computer to another by copying the private key is an insecure method of handling a private key. Still, it's currently the only way to do so.
-We're aware of this issue and plan to implement a secure solution in a future release. In the meantime, be extra cautious when handling your community key and keep it safe. -::: - -## What to expect - -- The community's private key represents proof of ownership but doesn't store the community configuration and messages. Your community configuration and messages are stored in the Waku [peer-to-peer network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md). -- When you [delete your Status Community](./delete-your-status-community.md), all the community messages and settings are irretrievably lost, even if you have the community's private key. -- If you want to manage your community from multiple computers, don't restore the community using the private key. Instead, [set up additional computers](../manage-your-community-from-different-computers.md) to manage your community. - -## Restore your community - -To restore your Status Community, you need to back up your private community key first. For instructions, read [Back up your community's private key](./back-up-your-community-s-private-key.md). To [transfer your community's ownership](./transfer-your-community-s-ownership.md), ask the new owner to complete these steps on their computer using their Status profile. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-communities: **Communities**. - 1. On top of the content area, click **Import using key**. - 1. Enter your community's private key in the **Community key** field. - 1. Click **Import**. If the **Import** option is unavailable, verify you're entering the correct key. - -:::info -Status will never ask you for the community's private key, and anyone who does is trying to steal your community. -::: diff --git a/apps/website/docs/status-communities/self-destruct-a-token-remotely.md b/apps/website/docs/status-communities/self-destruct-a-token-remotely.md deleted file mode 100644 index 826d5ced..00000000 --- a/apps/website/docs/status-communities/self-destruct-a-token-remotely.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 545 -revision: '0' -language: en -title: Self-destruct a token remotely ---- diff --git a/apps/website/docs/status-communities/set-up-a-private-channel.md b/apps/website/docs/status-communities/set-up-a-private-channel.md deleted file mode 100644 index 66ee6dbd..00000000 --- a/apps/website/docs/status-communities/set-up-a-private-channel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 315 -revision: '0' -language: en -title: Set a private channel ---- diff --git a/apps/website/docs/status-communities/set-up-a-private-community.md b/apps/website/docs/status-communities/set-up-a-private-community.md deleted file mode 100644 index f2eee5dc..00000000 --- a/apps/website/docs/status-communities/set-up-a-private-community.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -id: 522 -revision: '0' -language: en -title: Set up a private community ---- - -:::info -Currently, you can only set up private communities using Status desktop. -::: - -By default, a new Status Community is public and available for everyone to join. As a community owner, you can [use token-based permissions](./set-up-your-community-permissions.md) to create a token-gated or private community. - -Only people holding the tokens the private community requires can join and participate. For instance, you can configure a token-based permission that requires members to hold a certain amount of DAI and ETH tokens to join. Or, you can restrict access to users in a particular ENS domain, such as acme.eth. - -:::info -In addition to tokens, community owners can require [manual approval](./manage-community-join-requests.md) to join their communities. Token-based permissions and manual approval work independently. -::: - -Token requirements can be useful to ensure that your community members have a certain level of commitment or interest in the topic of the community. If you run an organization with an ENS domain, you can also set up a private community for holders of your ENS domain only (for example, alice.acme.eth or bob.acme.eth). - -## What to expect - -- Use the `Become member` token-based permission to set up a private community. -- You can set up token-based permissions with existing tokens or tokens you have [minted](./mint-tokens-for-your-community.md) and distributed via [airdrops](./how-to-airdrop-tokens-in-status.md). -- In a private community, members must always meet and keep the token requirements. Community members not holding the required tokens lose access to the community automatically. -- Use [channel permissions](./set-up-channel-permissions.md) to make one or more channels private while keeping your community public. -- To transform a private community into a public one, [delete the `Become member` token-based permissions](./set-up-your-community-permissions#delete-community-permissions.md). - -## Set up a private community - -Community owners customize permissions using three different variables: `Who holds`, `Is allowed to` and `In`. - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. Click **Add permission**. - 1. For the `Who holds` variable, select the tokens and amounts (for assets and collectibles) members must hold to join your community. You can choose and combine up to five assets, collectibles or ENS names. - 1. For the `Is allowed to` variable, select :desktop-member: **Become member**. - 1. For the `In` variable, make sure your community is selected. - 1. Click **Create permission**. The new permission takes effect immediately. - -:::tip -Tokens are linked by `AND` operators. This means access is granted when the holder owns all the tokens. If you want to use the `OR` operator instead, create additional permissions with different `Who holds` values. You can create a maximum of five different Become member permissions. -::: diff --git a/apps/website/docs/status-communities/set-up-a-view-only-channel.md b/apps/website/docs/status-communities/set-up-a-view-only-channel.md deleted file mode 100644 index 795c6096..00000000 --- a/apps/website/docs/status-communities/set-up-a-view-only-channel.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -id: 635 -revision: '0' -language: en -title: Set up a view-only channel ---- - -:::info -Currently, you can only set up a view-only channel using Status desktop. [:octicons-desktop-download-16: Download Status desktop](https://status.im/get). -::: - -In a view-only channel, everyone with access can view the conversation, but they can't respond or write in the channel. The community [owner or admin](./permissions-by-role-in-status-communities.md) can designate certain people or groups to write in the view-only channel. - -:::info -Members with view-only access to the channel can still [react](../messaging-and-web3-browser/react-and-reply-to-messages.md) on the channel's messages. -::: - -To learn how to use read-only channels in your community, check out [About view-only channels](./about-view-only-channels.md). - -## What to expect - -- Community owners and admins can always view and write in the community channels, irrespective of the view-only permissions. -- You can configure view-only channels with or without tokens. Using tokens requires more steps, but provides more options. For example, [minting](./mint-tokens-for-your-community.md) and [airdropping](./how-to-airdrop-tokens-in-status.md) tokens can incentivize community engagement. -- When using tokens, [mint a community token](./mint-tokens-for-your-community.md) and share the token with everyone you want to have view-only access. -- Once you set up the view-only permission, only members who meet its criteria can access the channel. However, their access is limited to read-only. -- Owners can set up [additional post permissions](#grant-someone-post-permissions-in-a-view-only-channel) in read-only channels for specific members. - -## Set up a view-only channel without tokens - -Using channel permissions, you can set up a view-only channel without tokens. - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channels sidebar, click your community logo and then, click **Permissions**. - 1. Click **Add permission**. - 1. Turn off the `Who holds` to disable the token requirement. - 1. For the `Is allowed to` variable, select :desktop-read: **View only**. - 1. For the `In` variable, select the channel you want to set as read-only. - 1. Click **Create permission**. - -## Set up a view-only channel with token-based permissions - -Depending on your community's needs, you may want the view-only channel permission linked to a token. You can use an existing token (such as SNT or DAI, for example), or [a token you mint](./mint-tokens-for-your-community.md) for the community. - -If you mint a [collectible](../status-wallet/collectibles-your-quick-start-guide.md) to manage the view-only access, enable the `Non-transferable (Soulbound)` and `Remotely-destruct` options to maintain control of who has view-only access to the channel. For more information, check out the [available collectible options](./mint-tokens-for-your-community#set-up-collectible-options.md). - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. Click **Add permission**. - 1. For the `Who holds`, `Is allowed to` and `In` variables, click :desktop-plus: **Add** next to the variable and use the table below for reference. - 1. Click **Create permission**. - - | Variable | Steps | - |:--|:--| - | `Who holds` | 1. Select **Assets** or **Collectibles**.
2. Choose the asset or collectible, and the amount you want to use to enable read-only access.
3. Alternatively, **Import existing collectible**.
4. Click **Add**. | - | `Is allowed to` | :desktop-view: `View only` | - | `In` | Choose the channel you want to set as read-only. | - -:::tip -Optionally, check :desktop-hide: **Hide permission** to hide this permission from members who don't meet the requirements. -::: - -## Grant someone post permissions in a view-only channel - -If you want someone else to post content in a view-only channel, configure this person's `View and post` permission. For information on configuring channel permissions, check out [Set up channel permissions](./set-up-channel-permissions.md). diff --git a/apps/website/docs/status-communities/set-up-channel-permissions.md b/apps/website/docs/status-communities/set-up-channel-permissions.md deleted file mode 100644 index 7f474c3a..00000000 --- a/apps/website/docs/status-communities/set-up-channel-permissions.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: 314 -revision: '0' -language: en -title: Set up channel permissions ---- - -:::info -Currently, you can only set up channel permissions using Status desktop. -::: - -Community owners can set up permissions using three different variables: `Who holds`, `Is allowed to` and `In`. For each one of them, follow the same procedure and use the table below as a reference. - -## What to expect - -- Using channel permissions, community owners can restrict channel access and actions to specific people based on token requirements. -- Only the community owner can set up channel permissions. -- Use [community permissions](./set-up-a-private-community.md) to make the entire community private. You can combine community-level and channel-level permission in the same community. -- When you delete a private channel, the channel permissions are lost. If you recreate the channel, you need to set up its permission again. - -## Set up channel permission - -=== "Desktop" - -1. If you're not in the **New permissions** screen, click **Community > Settings > Permissions**. -1. Click **Add permission**. -1. For the `Who holds`, `Is allowed to` and `In` variables, click :desktop-plus: **Add** next to the variable and choose your values. Use the table below for reference. -1. Optionally, check :desktop-hide: **Hide permission** to hide this permission from members who don't meet the requirements. -1. Click **Create permission**. - -| Variable | Description | Options | -| :-------------- | :-------------------------------------------------------------------------------------------------------- | :------------------------------------- | -| `Who holds` | The tokens and amounts (for assets and collectibles) someone needs to hold, or the ENS name someone owns. | Assets, Collectibles, ENS | -| `Is allowed to` | The level of access or role that you assign to someone. | Become admin, Become member, Moderate. | -| `In` | The channel this permission applies to. | Channel | diff --git a/apps/website/docs/status-communities/set-up-your-community-permissions.md b/apps/website/docs/status-communities/set-up-your-community-permissions.md deleted file mode 100644 index bf750cb8..00000000 --- a/apps/website/docs/status-communities/set-up-your-community-permissions.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: 355 -revision: '0' -language: en -title: Set up your community permissions ---- - -:::info -Currently, you can only customize community permissions using Status desktop. -::: - -In Status Communities, owners can customize community permissions using tokens. Tokens are digital assets in a blockchain (such as the [Ethereum blockchain](../getting-started/about-the-ethereum-blockchain.md)), including virtual coins, collectibles and domain names. - -Once you set up token-based permissions, certain actions within your community are only available to users who own a particular token. For instance, owners can [restrict access to their community](./set-up-a-private-community.md) or [delegate admin functions](./delegate-admin-functions-to-community-members.md) to specific token holders. - -:::info -In Status, your tokens are securely stored in your [Status Wallet](../status-wallet/status-wallet-your-quick-start-guide.md). -::: - -## What to expect - -- Using token-based permissions, community owners can restrict community access and actions to specific people based on token requirements. -- Only the community owner can add, edit or delete community-level permissions. -- You set up community permissions in the same way you [set up channel permissions](./set-up-channel-permissions.md). The only difference is the permissions you grant, either community-level (Become admin or Become member) or channel-level (Moderate, View and post or View only). -- Use the Become member permission to [restrict access to your community](./set-up-a-private-community.md). Use the Become admin permission to [delegate admin functions](./delegate-admin-functions-to-community-members.md) to someone. - -## Add community permissions - -Community owners customize permissions using three different variables: `Who holds` (optional), `Is allowed to` and `In`. For each variable, follow the same procedure using the table below for reference. - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. Click **Add permission** to start from scratch or click :desktop-duplicate: **Duplicate** to start from an existing permission. - 1. For the `Who holds`, `Is allowed to` and `In` variables, click :desktop-plus: **Add** next to the variable and choose your values. Use the table below for reference. - 1. Optionally, check :desktop-hide: **Hide permission** to hide this permission from members who don't meet the requirements. - 1. Click **Create permission**. The new permission takes effect immediately. - - | Variable | Description | Options | - |:--------------|:-------------------------------------------------------------------------------|:--------------------------------------| - | `Who holds` (optional) | The tokens and amounts (for assets and collectibles) someone needs to hold. | Assets, Collectibles, ENS | - | `Is allowed to` | The community role that you assign to someone. | :desktop-admin: Become admin, :desktop-member: Become member | - | `In` | The community this permission applies to. | Community | - - - If you turn the **Who holds** option off, the permission isn't bound to a token. This option only applies to channel-level permissions. - - Tokens are linked by `AND` operators. This means the new permission takes effect when the holder owns all the tokens. If you want to use the `OR` operator instead, create additional permissions. - - You can include up to five tokens in a single permission. - - You can create a maximum of five different Become member community-level permissions. - -## Edit community permissions - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. In the permission you want to edit, click :desktop-edit: **Edit**. - 1. To customize the permission, follow the steps in the [Add community permissions](#add-community-permissions) section. - -## Delete community permissions - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo and then, click **Permissions**. - 1. In the permission you want to delete, click :desktop-delete: **Delete**. - 1. Click **Delete permission** to confirm your action. diff --git a/apps/website/docs/status-communities/token-based-access-to-communities-and-channels.md b/apps/website/docs/status-communities/token-based-access-to-communities-and-channels.md deleted file mode 100644 index 4097eb02..00000000 --- a/apps/website/docs/status-communities/token-based-access-to-communities-and-channels.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 653 -revision: '0' -language: en -title: Token-based access to communities and channels ---- diff --git a/apps/website/docs/status-communities/transfer-your-community-s-ownership.md b/apps/website/docs/status-communities/transfer-your-community-s-ownership.md deleted file mode 100644 index 477d7f2b..00000000 --- a/apps/website/docs/status-communities/transfer-your-community-s-ownership.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: 496 -revision: '0' -language: en -title: Transfer your community's ownership ---- - -:octicons-beaker-24: Beta - -If you can't manage your Status Community anymore, you can transfer the ownership to someone else. To transfer your community's ownership, you need a [backup of the community's private key](./back-up-your-community-s-private-key.md). - -When you transfer the ownership, the new owner's computer becomes a community node with full control of the community, including its settings, permissions and membership approvals. - -:::tip -If you need help managing your community, consider adding others as admins. For more information, check out [Delegate admin functions to community members](./delegate-admin-functions-to-community-members.md). -::: - -## Current security issues you should consider - -The current system for transferring ownership of Status Communities has two important security issues: - -- The community owner has to share the community's private key with the new owner. Manually transferring the private key from one owner to another is an insecure method of handling a private key. -- There is no way to be certain that the community is fully transferred. After handing it over to the new owner, the previous owner may still have a copy of the private key. This means that an old owner with malicious intentions could potentially regain access to the community at any time. - -We're working on implementing a token-based ownership model to solve these problems. In the meantime, be extra cautious when handling your community key and keep it safe. For example, don't save your community's private key in an online storage service or screenshot. - -:::warn -Read and consider the security implications before you transfer the ownership of your community or become the new owner of someone else's community. -::: - -## How to transfer your community ownership - -Here's how to transfer your community: - -- [x] [Back up your community's private key](./back-up-your-community-s-private-key.md). -- [x] Handle over the private key to the new community owner. -- [x] Ask the new owner to [restore the community](./restore-your-status-community.md) using the private key. -- [x] [Leave the community](./leave-a-status-community.md). If you wish, join the community again as a member. -- [x] Delete or destroy any copy you own of the private key. - -\*[Beta]: This software feature is currently incomplete or in beta, and is subject to change at any time. diff --git a/apps/website/docs/status-communities/turn-off-the-community-history-service.md b/apps/website/docs/status-communities/turn-off-the-community-history-service.md deleted file mode 100644 index 02a9c48e..00000000 --- a/apps/website/docs/status-communities/turn-off-the-community-history-service.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: 539 -revision: '0' -language: en -title: Turn off the Community History Service ---- - -:::info -Currently, you can only configure the Community History Service using Status desktop. -::: - -You may want to turn off the [Community History Service](./about-the-community-history-service.md) to [protect community members' IP addresses](./about-the-community-history-service#how-chs-works.md) or when your computer runs out of storage space. - -## What to expect - -- Your community members can't receive messages that are older than 30 days. -- Your community members can no longer download the existing archives for historical messages. - -## Turn off the Community History Service - -=== "Desktop" - - 1. From the navigation sidebar, click your community. - 1. On top of the channel sidebar, click your community logo, then expand the window and click **Edit Community**. - 1. Scroll down and uncheck the **Community history service** box. - -:::tip -Turning off the Community History service significantly reduces community members' experience. You can turn it on again by checking the **Community history service** box. -::: diff --git a/apps/website/docs/status-communities/understand-throwaway-profiles-in-status-web.md b/apps/website/docs/status-communities/understand-throwaway-profiles-in-status-web.md deleted file mode 100644 index 957ad55a..00000000 --- a/apps/website/docs/status-communities/understand-throwaway-profiles-in-status-web.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -id: 216 -revision: '0' -language: en -title: Understand throwaway profiles in Status Web ---- - -:::info -Throwaway profiles are only available in Status Web. -::: - -A throwaway profile is a disposable Status profile that you can use to join communities in Status Web. You can [use a throwaway profile](./use-a-throwaway-profile-in-status-web.md) to join a Status Web Community without revealing your identity. Because the throwaway profile is not linked to any identifiable information or other Status profile you may have, your identity remains anonymous. - -You may want to use a throwaway profile for different reasons. For example: - -- Discussing sensitive or personal information anonymously. -- Joining a Status Web Community without revealing your identity. -- Writing about embarrassing or stigmatising topics. - -## How throwaway profiles work - -When you [use a throwaway profile](./use-a-throwaway-profile-in-status-web.md), Status Web assigns you an identity using three randomly generated words: adjective, adjective, and animal name. This mechanism uses significant randomisation and ensures your anonymity. - -Your browser cache retains the throwaway profile information across browser sessions, different browser tabs, and computer restarts. To delete your throwaway profile, [delete the profile](./use-a-throwaway-profile-in-status-web.md) or clear your browser cache. - -:::tip -In the browser incognito or private mode, your throwaway profile is deleted after closing the browser window. -::: - -Be cautious with the information you share. A throwaway profile protects your identity from others. However, people may find your real identity based on the information you share. Additionally, your internet service provider and browser can still collect identifiable information about you. diff --git a/apps/website/docs/status-communities/understand-token-requirements-in-channels.md b/apps/website/docs/status-communities/understand-token-requirements-in-channels.md deleted file mode 100644 index be3280d6..00000000 --- a/apps/website/docs/status-communities/understand-token-requirements-in-channels.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 290 -revision: '0' -language: en -title: Understand token requirements in channels ---- diff --git a/apps/website/docs/status-communities/understand-token-requirements-in-communities.md b/apps/website/docs/status-communities/understand-token-requirements-in-communities.md deleted file mode 100644 index 520e1330..00000000 --- a/apps/website/docs/status-communities/understand-token-requirements-in-communities.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 490 -revision: '0' -language: en -title: Understand token requirements in communities ---- - -In Status, there are two kinds of communities: public and private. If you want to [join a private community](./join-a-status-community.md), you need to meet the token requirements set by the community owner. To maintain access to a private community, hold the necessary tokens at all times. - -For example, a community owner can set up owning 10 SNT as a requirement to join their community. In that case, you need a minimum of 10 SNT in your [Status Wallet](../status-wallet/status-wallet-your-quick-start-guide.md) to join that community. - -There are three kinds of tokens in the Status app: assets, collectibles and ENS (Ethereum Name Service) names. Community owners can set up any combination of these tokens as a requirement to join their communities. - -:::info -When you join a private community, the token or tokens required to join are not transferred to anyone. They are used for verification purposes only, and they remain in your possession and wallet. -::: - -## If you meet the requirements - -Before you join a private community, the Status app automatically checks if you meet the community requirements. If you meet the requirements, the option to join the community is available. - -:::info -If the community owner has set [manual approval](./manage-community-join-requests.md) option for their community, you still need the owner's approval to join. -::: - -## If you don't meet the token requirements - -If the request button is greyed out and unavailable, it means that you don't meet the token requirements to join a community in the Status app. To apply to join the community, you need to have the required amount of tokens. To buy the required tokens, read [Buy crypto](../status-wallet/buy-crypto.md). diff --git a/apps/website/docs/status-communities/use-a-throwaway-profile-in-status-web.md b/apps/website/docs/status-communities/use-a-throwaway-profile-in-status-web.md deleted file mode 100644 index a7c801dc..00000000 --- a/apps/website/docs/status-communities/use-a-throwaway-profile-in-status-web.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: 211 -revision: '0' -language: en -title: Use a throwaway profile in Status Web ---- - -:::info -Throwaway profiles are only available in Status Web. -::: - -Use a [throwaway profile](./understand-throwaway-profiles-in-status-web.md) when you want to participate in a Status Web Community without revealing your identity. A throwaway profile is not linked to any identifiable information or other Status profile you may have. - -## Use a throwaway profile - -=== "Web" - - 1. Using your browser, open the Status Web Community you want to join. - 1. From the Community sidebar, click **Use throwaway profile**. - 1. If you see the **Throwaway profile found** pop-up, click **Load throwaway profile** to use the existing profile or click **Skip** to create a new one. - 1. In the top-right corner, click :web-members: **Members**. Your throwaway profile name appears on the members sidebar. - -## Disconnect your throwaway profile - -The throwaway profile information remains in your browser cache and persists across browser sessions and computer restarts. To delete this information, disconnect your profile. - -=== "Web" - - 1. From the right sidebar, click :status-log-out: **logout** next to your profile name. - 1. On the **Disconnect** pop-up, click **Disconnect**. - -:::tip -You can also delete the throwaway profile information by clearing your browser cache. -::: - -## Common questions - -### What are the three words in my profile? - -These words represent your throwaway profile and identity in Status Web. These are randomly generated words. - -### Is my throwaway profile really anonymous? - -A throwaway profile protects your real identity while using Status Web. However, your internet service provider and browser can still collect identifiable information (like your IP address). Status doesn't collect information about you or your activity. - -### Where is the throwaway profile information stored? - -Your browser cache stores your throwaway profile. You can delete this information by disconnecting your profile, clearing the cache, or using your browser in incognito or private mode. - -### I accidentally deleted my throwaway profile. Can I recover it? - -No. Deleting a throwaway profile is an irreversible process. - -### Can I use more than one throwaway profile? - -There is only one throwaway profile per browser. If you want to use a new throwaway profile, delete the existing one or use a different browser. diff --git a/apps/website/docs/status-wallet/about-snt.md b/apps/website/docs/status-wallet/about-snt.md deleted file mode 100644 index ccb5ee62..00000000 --- a/apps/website/docs/status-wallet/about-snt.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 621 -revision: '0' -language: en -title: About SNT ---- diff --git a/apps/website/docs/status-wallet/about-your-wallet-accounts-and-addresses.md b/apps/website/docs/status-wallet/about-your-wallet-accounts-and-addresses.md deleted file mode 100644 index 1a3855e7..00000000 --- a/apps/website/docs/status-wallet/about-your-wallet-accounts-and-addresses.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 390 -revision: '0' -language: en -title: About your wallet accounts and addreses ---- diff --git a/apps/website/docs/status-wallet/add-watch-only-accounts.md b/apps/website/docs/status-wallet/add-watch-only-accounts.md deleted file mode 100644 index e8fc8194..00000000 --- a/apps/website/docs/status-wallet/add-watch-only-accounts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 622 -revision: '0' -language: en -title: Add watch-only accounts ---- diff --git a/apps/website/docs/status-wallet/assets-your-quick-start-guide.md b/apps/website/docs/status-wallet/assets-your-quick-start-guide.md deleted file mode 100644 index b0d0ed63..00000000 --- a/apps/website/docs/status-wallet/assets-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 479 -revision: '0' -language: en -title: 'Assets: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/back-up-your-wallet.md b/apps/website/docs/status-wallet/back-up-your-wallet.md deleted file mode 100644 index 7838e68e..00000000 --- a/apps/website/docs/status-wallet/back-up-your-wallet.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 484 -revision: '0' -language: en -title: Back up your wallet ---- diff --git a/apps/website/docs/status-wallet/buy-crypto.md b/apps/website/docs/status-wallet/buy-crypto.md deleted file mode 100644 index ada0ac29..00000000 --- a/apps/website/docs/status-wallet/buy-crypto.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 579 -revision: '0' -language: en -title: Buy crypto ---- diff --git a/apps/website/docs/status-wallet/cancel-transactions.md b/apps/website/docs/status-wallet/cancel-transactions.md deleted file mode 100644 index c0cca510..00000000 --- a/apps/website/docs/status-wallet/cancel-transactions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 465 -revision: '0' -language: en -title: Cancel transactions ---- diff --git a/apps/website/docs/status-wallet/collectibles-your-quick-start-guide.md b/apps/website/docs/status-wallet/collectibles-your-quick-start-guide.md deleted file mode 100644 index 5dd2c44a..00000000 --- a/apps/website/docs/status-wallet/collectibles-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 501 -revision: '0' -language: en -title: 'Collectibles: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/create-and-manage-accounts.md b/apps/website/docs/status-wallet/create-and-manage-accounts.md deleted file mode 100644 index 0573f2c8..00000000 --- a/apps/website/docs/status-wallet/create-and-manage-accounts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 459 -revision: '0' -language: en -title: Create and manage accounts ---- diff --git a/apps/website/docs/status-wallet/crypto-bridging-your-quick-start-guide.md b/apps/website/docs/status-wallet/crypto-bridging-your-quick-start-guide.md deleted file mode 100644 index 475a7b2d..00000000 --- a/apps/website/docs/status-wallet/crypto-bridging-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 563 -revision: '0' -language: en -title: 'Crypto bridging: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/delete-your-wallet.md b/apps/website/docs/status-wallet/delete-your-wallet.md deleted file mode 100644 index eaf98cd6..00000000 --- a/apps/website/docs/status-wallet/delete-your-wallet.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: 546 -revision: '0' -language: en -title: Delete your Status Wallet or wallet account ---- - -:::note -If you believe someone else has access to your Wallet, see [If someone else has access to your Wallet](./if-someone-else-has-access-to-your-wallet.md). -::: - -By design, any blockchain is decentralized and immutable. This means that once something is on a blockchain, it can't be deleted. That includes your wallet: once you get an address and make transactions, there's no way to delete your transaction history. - -As the name suggests, a blockchain is a chain of blocks. Deleting all blocks that contain your transactions would mean breaking off the entire chain that follows. While it's impossible to erase your wallet data, you can hide any of the accounts in your Status Wallet. - -## Remove an account in your Status Wallet - -When you remove an account in your Wallet, you're simply hiding it in the app. The account itself and all of the related data, including your balance and transaction history, stay on the blockchain, but aren't visible to you in the app. You can always [restore your account](./import-an-account.md) later. - -:::warn -Before removing your account, write down and keep its derivation path. You can always restore your account and the crypto it contains using your derivation path or recovery phrase. -::: - -=== "Mobile" - - 1. From the tab bar, tap :mobile-wallet: **Wallet**. - 1. Tap the account you want to remove. - 1. Tap :mobile-more-options: **More options**. - 1. Tap **Delete account**. - 1. Write down your derivation path. Using this path, you will be able to resetore your account later. Once you write it down, check **I have taken note of the derivation path** and tap **Remove**. - -=== "Desktop" - - 1. From the navigation sidebar, go to :desktop-settings: **Settings** > :desktop-wallet: **Wallet**. - 1. Click the account you want to remove. - 1. Click :desktop-delete: **Remove account**. - 1. Write down your derivation path. Using this path, you will be able Using this path, you will be able to resetore your account later. Once you write it down, check **I have taken note of the derivation path** and click **Remove**. - -## Delete your Status Wallet - -:::tip -Blockchains are pseudonymous: unless you sent crypto to your Status Wallet from a centralized crypto exchange, there's no way to trace your address to your real identity. -::: - -If you no longer need your Status Wallet, simply [send your leftover crypto to some other wallet address](./send-crypto.md) and uninstall the app. You can always [restore your Wallet](./import-an-account.md) later if you keep your recovery phrase. - -\*[pseudonymous]: Sending crypto transactions is the same as posting messages on a forum under a pseudonym. Anyone can see which address each transaction was sent from, but unless you willingly reveal your identity, it's impossible to trace your internet pseudonym (or crypto address) to your real-life identity. diff --git a/apps/website/docs/status-wallet/export-your-recovery-phrase.md b/apps/website/docs/status-wallet/export-your-recovery-phrase.md deleted file mode 100644 index 97b77935..00000000 --- a/apps/website/docs/status-wallet/export-your-recovery-phrase.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 589 -revision: '0' -language: en -title: Export your recovery phrase ---- diff --git a/apps/website/docs/status-wallet/handle-pending-or-stuck-transactions.md b/apps/website/docs/status-wallet/handle-pending-or-stuck-transactions.md deleted file mode 100644 index d81cb20c..00000000 --- a/apps/website/docs/status-wallet/handle-pending-or-stuck-transactions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 471 -revision: '0' -language: en -title: Handle pending or stuck transactions ---- diff --git a/apps/website/docs/status-wallet/how-to-use-status-wallet-your-quick-start-guide.md b/apps/website/docs/status-wallet/how-to-use-status-wallet-your-quick-start-guide.md deleted file mode 100644 index 16778076..00000000 --- a/apps/website/docs/status-wallet/how-to-use-status-wallet-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 113 -revision: '0' -language: en -title: 'How to use Status Wallet: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/how-to-use-wallet-your-quick-start-guide.md b/apps/website/docs/status-wallet/how-to-use-wallet-your-quick-start-guide.md deleted file mode 100644 index 16778076..00000000 --- a/apps/website/docs/status-wallet/how-to-use-wallet-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 113 -revision: '0' -language: en -title: 'How to use Status Wallet: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/if-someone-else-has-access-to-your-wallet.md b/apps/website/docs/status-wallet/if-someone-else-has-access-to-your-wallet.md deleted file mode 100644 index 37fa3613..00000000 --- a/apps/website/docs/status-wallet/if-someone-else-has-access-to-your-wallet.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: 612 -revision: '0' -language: en -title: If someone else has access to your Wallet ---- - -Your Status Wallet and profile share the same [recovery phrase](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md). While your profile and wallet are protected by your Status password, anyone who has your recovery phrase can log in to your profile and wallet even without your password. - -:::tip -To learn more about how to back up your recovery phrase, check out [Back up and secure your recovery phrase](../your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md). -::: - -If you think someone else has access to your wallet (for example, you [see transactions in your history that you don't recognize](./handle-transactions-you-don-t-recognize.md)), you should create a new Status profile and transfer your crypto to your new Wallet. - -## What to do if someone else has access to your Wallet - -### Step 1. Create a new Status profile - -Start with creating a new Status profile. You can use multiple profiles at the same time, so you're not losing access to your current profile. For more details on how to create an extra profile, see [Create and use additional Status profiles](../your-profile-and-preferences/create-and-use-additional-status-profiles.md). - -### Step 2. Transfer your remaining crypto to your new Status Wallet - -=== "Mobile" - - If you're on your compromised Status profile, switch to your new one. For more details on how to do that, check out [Create and use additional status profiles](../your-profile-and-preferences/create-and-use-additional-status-profiles.md). - - 1. From the tab bar, tap :mobile-wallet: **Wallet**. - 1. From the top navigation, tap :mobile-qr-code: **View address**. - 1. Select your legacy address and tap :mobile-copy: **Copy**. You can paste this address somewhere (for example, your notes app). - 1. [Switch back to your compromised Status profile](../your-profile-and-preferences/create-and-use-additional-status-profiles.md). - 1. Select the account you want to send your crypto from and tap :mobile-send: **Send**. - 1. Paste your new Status Wallet address into the Address field and tap **Send**. Repeat these steps for every account you still have crypto or collectibles in. - -=== "Desktop" - - If you're on your compromised Status profile, switch to your new one. For more details on how to do that, check out [Create and use additional status profiles](../your-profile-and-preferences/create-and-use-additional-status-profiles.md). - - 1. From the navigation sidebar, click :desktop-wallet: **Wallet**. - 1. Click :desktop-receive: **Receive**. - 1. Select your legacy address and click :desktop-copy: **Copy address**. - 1. [Switch back to your compromised Status profile](../your-profile-and-preferences/create-and-use-additional-status-profiles.md). - 1. From the navigation sidebar, click :desktop-wallet: **Wallet**. - 1. Click :desktop-send: **Send**. - 1. Select the asset you want to send and paste your new Status Wallet address into the **To** field. Click **Send**. Repeat these steps for every account you still have crypto or collectibles in. - -### Step 3. Remove your compromised profile - -You can remove your compromised profile from your profile list to avoid confusing it with your new one. For more details on how to do that, see [Remove a Status profile from your profile list](../your-profile-and-preferences/remove-a-status-profile-from-your-profile-list.md). - -:::tip -To learn more about common crypto scams and how to protect yourself in future, check out [Understand common scams](./understand-common-scams.md). -::: diff --git a/apps/website/docs/status-wallet/import-an-account.md b/apps/website/docs/status-wallet/import-an-account.md deleted file mode 100644 index 9f6d4167..00000000 --- a/apps/website/docs/status-wallet/import-an-account.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 442 -revision: '0' -language: en -title: Import an account into your Status Wallet ---- diff --git a/apps/website/docs/status-wallet/index.md b/apps/website/docs/status-wallet/index.md deleted file mode 100644 index 11829732..00000000 --- a/apps/website/docs/status-wallet/index.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Status Wallet ---- - -Status Wallet is an open-source non-custodial wallet that helps you store, send, receive and bridge crypto. - -## Get started - -- [Status Wallet **FAQ**](./status-wallet-faq.md) -- [Status Wallet: your **quick start guide**](./status-wallet-your-quick-start-guide.md) -- [**Import an account** into your Status Wallet](./import-an-account.md) -- [Understand your **Status Wallet balance**](./understand-your-wallet-balance.md) -- [About **SNT**](./about-snt.md) - -## Send and receive crypto - -- [**Send** crypto **to someone**](./send-crypto.md) -- [**Receive** crypto](./receive-crypto.md) -- [**Send** crypto **to your Status Wallet**](./send-crypto-to-your-status-wallet.md) -- [**Share** your **address**](./share-your-address.md) -- [Set **custom network fees**](./set-custom-network-fees.md) -- [Handle **transactions you don't recognize**](./handle-transactions-you-don-t-recognize.md) -- [Handle **pending or stuck transactions**](./handle-pending-or-stuck-transactions.md) -- [**Cancel** transactions](./cancel-transactions.md) -- [Understand your Status **signing phrase**](./understand-your-status-signing-phrase.md) -- [Understand **network fees**](./understand-network-fees.md) -- [Understand **block explorers**](./understand-block-explorers.md) -- [Understand **transaction details**](./understand-transaction-details.md) -- [Understand **transaction statuses**](./understand-transaction-statuses.md) - -## Handle your crypto - -- [**Create** and manage **accounts**](./create-and-manage-accounts.md) -- [**Withdraw** crypto **to your bank account**](./withdraw-crypto-to-your-bank-account.md) -- [Add **watch-only** accounts](./add-watch-only-accounts.md) -- [About **custom tokens** in Status](./about-custom-tokens.md) -- [**Delete** your **Status Wallet** or wallet **account**](./delete-your-wallet.md) - -## Understand crypto assets - -- [Understand **wrapped tokens**](./understand-wrapped-tokens.md) -- [Understand **coins** and **tokens**](./understand-coins-and-tokens.md) -- [Understand **ERC-20** tokens](./understand-erc20-tokens.md) -- [**Collectibles**: your quick start guide](./collectibles-your-quick-start-guide.md) -- [**Assets**: your quick start guide](./assets-your-quick-start-guide.md) - -## Buy crypto - -## Swap and bridge crypto - -## Privacy and security - -- [Understand **common scams**](./understand-common-scams.md) -- [If someone else **has access to your Wallet**](./if-someone-else-has-access-to-your-wallet.md) -- [**Back up** your Wallet](./back-up-your-wallet.md) - -## Advanced topics - -- [Understand layer-2 solutions and sidechains](./understand-l2s-and-sidechains.md) diff --git a/apps/website/docs/status-wallet/receive-crypto.md b/apps/website/docs/status-wallet/receive-crypto.md deleted file mode 100644 index f3bfbc0d..00000000 --- a/apps/website/docs/status-wallet/receive-crypto.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -id: 466 -revision: '0' -language: en -title: Receive crypto ---- - -To receive crypto, you need to share your Ethereum address with the sender. As long as you only share your public address (which starts with `0x` and is 42 characters long), it's perfectly safe. - -:::warn -You should never share your 12-word recovery phrase with anyone. Anyone who has your recovery phrase can manage your crypto. If someone's asking for your recovery phrase to send you crypto, they're trying to scam you. -::: - -## Find your address - -=== "Mobile" - - 1. From the tab bar, tap :mobile-wallet: **Wallet**. - 1. From the top navigation, tap :mobile-qr-code: **View address**. - 1. Choose either your legacy or multi-chain address. For your multi-chain address, tap :desktop-edit: **Edit** to choose which chains you want your multi-chain address to feature. - 1. To copy your address, tap :mobile-copy: **Copy**. You can also ask the sender to scan the QR code of your address. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-wallet: **Wallet**. - 1. Click :desktop-receive: **Receive**. - 1. Choose either your legacy or multi-chain address. For your multi-chain address, click :desktop-edit: **Edit** to choose which chains you want your multi-chain address to feature. - 1. To copy your address, click :desktop-copy: **Copy address**. - -## Your legacy and multi-chain addresses - -In essence, your legacy and multi-chain addresses are the same address. If you're only interested in the Ethereum mainnet, you can safely use your legacy address. - -The key difference between your legacy and multi-chain addresses is that your multi-chain address lists the blockchain networks you want to receive crypto on. This means that if you're using any [layer-2 solutions or sidechains](./understand-l2s-and-sidechains.md), your multi-chain address can help signal which chains you prefer. - -:::note -To use your multi-chain address, the sender needs to use a wallet app that supports multi-chain addresses. Status Wallet does this by default. -::: - -For example, if you're using Ethereum mainnet and Optimism but not Arbitrum, your multi-chain address can show that preference. To add this to your address, go to Wallet > Receive > Multi-chain address > :desktop-edit: Edit (Wallet > View Address > Multi-chain address > :mobile-edit: Edit on mobile). From there, check the boxes next to the chains you want to use. The unselected chains do not show up in your address. This lets the sender know you don't want to receive crypto on those chains. - -## What to do if you didn't receive your crypto - -If someone sent you crypto and you can't see it in your Status Wallet, here's what you can do: - -- Ask the sender to share a [block explorer](./understand-block-explorers.md) link for this transaction with you. Using the link, make sure they sent your crypto to the right address. If the transaction shows up as [processing](./understand-transaction-statuses.md) on the block explorer, simply wait until it's completed. This can take longer than usual when the network's busy. -- Close and re-open your Status Wallet app. -- Check your internet connection. If you're using a third-party VPN, try turning it off and on again. diff --git a/apps/website/docs/status-wallet/send-crypto-to-your-status-wallet.md b/apps/website/docs/status-wallet/send-crypto-to-your-status-wallet.md deleted file mode 100644 index e8df46e7..00000000 --- a/apps/website/docs/status-wallet/send-crypto-to-your-status-wallet.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -id: 464 -revision: '0' -language: en -title: Send crypto to your Status Wallet ---- - -To transfer your crypto to your Status Wallet from an exchange or another wallet app, just send it to your Status Wallet address. To do so, follow the instructions provided by your exchange or another wallet on how to send out crypto. Enter your Status Wallet address as the receiving address. - -For more details, check out [Receive crypto](./receive-crypto.md). - -:::info -If you want to send crypto to someone else from your Status Wallet, check out [Send crypto to someone](./send-crypto.md). -::: diff --git a/apps/website/docs/status-wallet/send-crypto.md b/apps/website/docs/status-wallet/send-crypto.md deleted file mode 100644 index 80d2ba3b..00000000 --- a/apps/website/docs/status-wallet/send-crypto.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 426 -revision: '0' -language: en -title: Send crypto ---- diff --git a/apps/website/docs/status-wallet/set-custom-network-fees.md b/apps/website/docs/status-wallet/set-custom-network-fees.md deleted file mode 100644 index fe315ec7..00000000 --- a/apps/website/docs/status-wallet/set-custom-network-fees.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 470 -revision: '0' -language: en -title: Set custom network fees ---- diff --git a/apps/website/docs/status-wallet/share-your-address.md b/apps/website/docs/status-wallet/share-your-address.md deleted file mode 100644 index 2b5c69b7..00000000 --- a/apps/website/docs/status-wallet/share-your-address.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 480 -revision: '0' -language: en -title: Share your address ---- diff --git a/apps/website/docs/status-wallet/status-wallet-faq.md b/apps/website/docs/status-wallet/status-wallet-faq.md deleted file mode 100644 index e73081da..00000000 --- a/apps/website/docs/status-wallet/status-wallet-faq.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: 460 -revision: '0' -language: en -title: 'Status Wallet: FAQ' ---- - -## About Status Wallet - -### Is Status Wallet open source? - -Yes. The source code of [Status Mobile](https://github.com/status-im/status-mobile), [Status Desktop](https://github.com/status-im/status-desktop) and [Status Web](https://github.com/status-im/status-web) is fully available on GitHub, including the Wallet's source code. - -### Is Status Wallet self-custodial? - -Yes, Status Wallet is fully self-custodial. This means that Status Wallet doesn't store or even have access to your recovery phrase. You're the only person who can access the phrase and manage your account. This also means that if you lose your recovery phrase, Status Wallet can't restore it for you. - -:::info -Anyone who has your recovery phrase can use it to access your wallet and manage your crypto. For tips on how to protect your recovery phrase, check out [Back up and secure your recovery phrase](../your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md). -::: - -### Is Status Wallet secure? - -Yes. Status Wallet is open source, so anyone can review the source code to make sure it's secure. Your keys are encrypted with your Status password which only you should know. All crypto transactions need to be confirmed on your device before they are send. Finally, Status Wallet is self-custodial, which means Status doesn't have access to your recovery phrase. - -Since you're the only person who can access your recovery phrase, the safety of your crypto is mostly in your hands. Think of Status Wallet as a personal safe you keep at home. While this safe has a secure lock and a bullet-proof body, anyone you share the code with can open the safe. Unless you forget to lock the door or tell someone your code, the safe can protect your money. In Status Wallet, your recovery phrase is the safe code you should never share with anyone. - -## Assets - -### What assets does Status Wallet support? - -You can only use Status Wallet for Ethereum-based assets. This includes Ether (ETH) and ERC-20 tokens, as well as assets from Ethereum layer-2 blockchains (L2s) and sidechains. For more details on L2s and sidechains, check out [Understand L2s and sidechains](./understand-l2s-and-sidechains.md). - -This means Status Wallet can't be used for Bitcoin or other non-Ethereum based coins. Instead, you can use their Ethereum-based wrapped versions with your Status Wallet. Check out [Understand wrapped tokens](./understand-wrapped-tokens.md) for more details. - -### Can I withdraw my crypto to my bank account? - -There's no way to directly withdraw your crypto from your Status Wallet to your bank account. You can still do it via a third-party app. For more details, check out [Withdraw crypto to your bank account](./withdraw-crypto-to-your-bank-account.md). - -## Transactions and network fees - -### What are network fees? Does Status Wallet charge any extra fees? - -Status Wallet doesn't charge any extra fees on crypto transactions. The only fees you need to pay are network fees, which are charged by the blockchain. For more details on network fees, check out [Understand network fees](./understand-network-fees.md). - -### Why is my transaction stuck? - -There can be a variety of reasons behind your transaction getting stuck. For example, a common issue is that the network fees set for the transaction are too low. To learn about ways to speed up your transaction, check out [Handle pending or stuck transactions](./handle-pending-or-stuck-transactions.md). If you want to cancel your transaction, check out [Cancel transactions](./cancel-transactions.md). - -\*[recovery phrase]: Your recovery phrase is a unique 12-word phrase that Status auto-generates for you when you create an account. Think of it as a universal key to your Status account and crypto wallet. If you forget your password or lose your device, your recovery phrase is the only way to access your crypto. diff --git a/apps/website/docs/status-wallet/status-wallet-your-quick-start-guide.md b/apps/website/docs/status-wallet/status-wallet-your-quick-start-guide.md deleted file mode 100644 index 929a7b67..00000000 --- a/apps/website/docs/status-wallet/status-wallet-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 113 -revision: '0' -language: en -title: 'Status Wallet: your quick start guide' ---- diff --git a/apps/website/docs/status-wallet/swap-crypto.md b/apps/website/docs/status-wallet/swap-crypto.md deleted file mode 100644 index 60844dc6..00000000 --- a/apps/website/docs/status-wallet/swap-crypto.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 476 -revision: '0' -language: en -title: Swap crypto ---- diff --git a/apps/website/docs/status-wallet/understand-block-explorers.md b/apps/website/docs/status-wallet/understand-block-explorers.md deleted file mode 100644 index 437ca4b1..00000000 --- a/apps/website/docs/status-wallet/understand-block-explorers.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: 467 -revision: '0' -language: en -title: Understand block explorers ---- - -Block explorers are tools you can use to browse blockchain data. With block explorers, you can learn more about any transaction that was made on the blockchain. - -Since all Ethereum blockchain data is public and pseudonymous, it doesn't matter whose transactions you're exploring. You can view the details of both your own and others' transactions. - -Block explorers are network-specific. This means that for [bridge transactions](./crypto-bridging-your-quick-start-guide.md), you need to use two or more different block explorers, one for each chain. In your Status Wallet, you can find the Bridge field and transaction hashes for each chain. For more details, check out [Understand your transaction details](./understand-your-transaction-details.md). - -## Use block explorers - -:::tip -For details on where find your Status Wallet address, check out [Receive crypto](./receive-crypto.md). -::: - -To get started with block explorers, copy your Status Wallet address and look it up on a block explorer of your choice. For example, you can use [Etherscan](https://etherscan.io/), [Blockchair](https://blockchair.com/ethereum/) or [beaconcha.in](https://beaconcha.in/) for the Ethereum mainnet. If you're using [an L2 or a sidechain](./understand-l2s-and-sidechains.md), you need to find a block explorer for this network. - -## Explore transaction data - -You can usually find the data below on all block explorers. This list isn't comprehensive. For more details, check out your block explorer's documentation. - -### Basic data - -:::tip -To view your transaction details in your Status Wallet, go to the Wallet home screen and click or tap the transaction you're interested in. -::: - -| Field | Description | -| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Transaction hash | Your transaction's unique ID. | -| Status | Your transaction's status: for example, processing or completed. For more details on each status, check out [Understand transaction statuses](./understand-transaction-statuses.md). | -| From | The address this transaction was sent from. | -| To | The address this transaction was sent to. | -| Block | The block your transaction was added to. Blocks are structures within the blockchain. Each block has a unique ID and includes multiple transactions. | -| Value | The total ETH value that is transferred. | -| Tokens transferred | A list of tokens that are transferred in this transaction, if any. | -| Timestamp | The date and time at which your transaction was completed. | -| Transaction fee | The [network fee](./understand-network-fees.md) that was charged for your transaction. | - -### Advanced data - -| Field | Description | -| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Nonce | The transaction number for the `from` address. The first transaction for each address has a nonce of 0. You can use nonces to cancel or resend transactions that are still processing. For more details, check out [Cancel transactions](./cancel-transactions.md) and [Handle pending or stuck transactions](./handle-pending-or-stuck-transactions.md). | -| Gas price | Cost per [unit of gas for this transaction](./understand-network-fees.md), in gwei. | -| Confirmations | The [number of confirmations](../understand-confirmations.md) this transaction currently has. | diff --git a/apps/website/docs/status-wallet/understand-common-scams.md b/apps/website/docs/status-wallet/understand-common-scams.md deleted file mode 100644 index 2a0d1ad8..00000000 --- a/apps/website/docs/status-wallet/understand-common-scams.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: 483 -revision: '0' -language: en -title: Understand common crypto scams ---- - -[Status Wallet](./status-wallet-your-quick-start-guide.md) is decentralized and non-custodial, which means that no one but you has access to your [recovery phrase](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md) and crypto. Status doesn't store your recovery phrase and has no access to it. You're the only person who has access to and manages your recovery phrase. This means that to keep your money safe, you can learn more about common crypto scams and how to protect your crypto from them. - -## Learn how to protect your crypto - -Think of Status Wallet as a personal safe you keep at home. Even though it has a bullet-proof body and a secure lock, anyone you invite into your house and share your code with can open the safe. The safe is the device you're using for Status, and the code is your recovery phrase. - -:::tip -To protect your crypto, protect the device you're using for Status and your [recovery phrase](../your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md). -::: - -There are several scams common in the crypto industry, and you can protect yourself from all of them if you understand how they work. - -### Status employee impersonators - -The Status team never contacts you first. If someone messages you and claims to be working for Status, they're trying to scam you, so you should simply [block them](../your-profile-and-preferences/block-or-unblock-someone-in-status.md). - -It's common for scammers to pretend to be employed at various crypto companies, inluding Status, and ask for your private data. Remember that anyone who asks for your recovery phrase is a scammer, with no exceptions. - -### Fake websites - -If someone sends you a link to a Status website and asks you to interact with it, they're trying to scam you. Avoid interacting with them and [block them](../your-profile-and-preferences/block-or-unblock-someone-in-status.md). - -Scammers create fake websites that claim to be affiliated with various crypto companies, including Status. These websites often ask for your recovery phrase or other private data. There's only one official Status website, [status.app](https://status.im), and we don't have any others. - -### Fake apps and browser extensions - -Scammers can create fake apps and browser extensions that steal your recovery phrase when you try to import your existing crypto account. - -When installing new apps on the device you use for Status, be extra careful. This also applies to browser extensions (add-ons). Always make sure you're downloading the app or installing the extension from the official website. You can also try looking up the company's or the extension's name and carefully reading the reviews. For extra protection, consider installing a trusted antivirus software. - -If you used a third-party app or browser extension and now see outgoing transactions in your history that you belive you didn't make, check out [If you see transactions you don't recognize](./handle-transactions-you-don-t-recognize.md). - -### Fake tokens - -If you swap crypto using a third-party service, you may receive fake tokens that don't have any actual value but have a ticker similar to the original token's. For example, you may receive tokens that appear to be DAI but are actually worthless. Such tokens are not visible in your Status Wallet. - -To protect your money, only use trusted crypto swap services. - -### Address poisoning attacks - -Scammers may send you a transaction that's very similar to the one you previously received or sent. Their intention is that you copy their address from your transaction history and send them crypto by mistake. - -To prevent this, always double-check the address you're sending crypto to. - -\*[ticker]: A ticker is a short combination of letters that represents an asset. For example, Ether's ticker is ETH, and Shibtoken's ticker is SHIB. diff --git a/apps/website/docs/status-wallet/understand-confirmations.md b/apps/website/docs/status-wallet/understand-confirmations.md deleted file mode 100644 index 9728cf36..00000000 --- a/apps/website/docs/status-wallet/understand-confirmations.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 569 -revision: '0' -language: en -title: Understand confirmations ---- diff --git a/apps/website/docs/status-wallet/understand-erc20-tokens.md b/apps/website/docs/status-wallet/understand-erc20-tokens.md deleted file mode 100644 index 6ca942a9..00000000 --- a/apps/website/docs/status-wallet/understand-erc20-tokens.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 534 -revision: '0' -language: en -title: Understand ERC-20 tokens ---- diff --git a/apps/website/docs/status-wallet/understand-l2s-and-sidechains.md b/apps/website/docs/status-wallet/understand-l2s-and-sidechains.md deleted file mode 100644 index 7b04076a..00000000 --- a/apps/website/docs/status-wallet/understand-l2s-and-sidechains.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 525 -revision: '0' -language: en -title: Understand L2s and sidechains ---- diff --git a/apps/website/docs/status-wallet/understand-network-fees.md b/apps/website/docs/status-wallet/understand-network-fees.md deleted file mode 100644 index e385e2dd..00000000 --- a/apps/website/docs/status-wallet/understand-network-fees.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: 469 -revision: '0' -language: en -title: Understand network fees ---- - -To [send your crypto to someone else](./send-crypto.md), you need to pay network fees. Network fees (also known as gas fees) are charged by the blockchain network to process your transaction. - -:::info -[Status Wallet](./status-wallet-your-quick-start-guide.md) doesn't charge any extra network fees for sending transactions. The only fees you need to pay are charged by the blockchain. Those fees remain the same no matter which wallet app you're using. -::: - -## The basics - -- Network fees are charged by validators to process your transaction. Validators are network participants who use their computers to validate transactions. -- Status Wallet doesn't charge any extra network fees for sending transactions. -- You can [set custom network fees](./set-custom-network-fees.md) for your transactions. If you set the network fee too low, it can take much longer for your transaction to be processed. To resend your transaction with a higher fee, check out [Handle pending or stuck transactions](./handle-pending-or-stuck-transactions.md). - -## Who is charging network fees and why - -When you send a transaction, it needs to be processed and validated by the network. This involves the work of validators, who use their computers to validate transactions. - -Any Ethereum user can become a validator and earn network fees. To do so, they usually need to stake at least 32 ETH. Unless you want to set up your own Ethereum validator, you need to pay network fees for someone to process your transactions. - -A network fee's size depends on how busy the blockchain is, as well as the complexity of your transaction. The more transactions are waiting to be validated, the higher the fees get. - -Network fees are measured in gwei. Gwei are units of Ether (ETH), much like cents are units of dollars. - -## What happens if you set the network fees too low - -:::info -If you set your network fees too low, it may take longer for your transaction to be verified by the network. In some cases, it may never be processed at all. To resend your transaction with a higher fee, check out [Handle pending or stuck transactions](./handle-pending-or-stuck-transactions.md). -::: - -Validators invest their time and resources into processing transactions. The fees they receive compensate for their efforts. - -If you accidentally sent a transaction with a custom network fee that's too low, check out [Handle pending or stuck transactions](./handle-pending-or-stuck-transactions.md). If you want to cancel your transaction, check out [Cancel transactions](./cancel-transactions.md). - -_[Ether]: Ether (ETH) is the native coin of the Ethereum blockchain. For more details on coins and tokens, check out [Understand coins and tokens](./understand-coins-and-tokens.md). -_[stake]: Staking means locking at least 32 ETH (or less in case of pooled staking) to start operating your own Ethereum validator node. diff --git a/apps/website/docs/status-wallet/understand-transaction-details.md b/apps/website/docs/status-wallet/understand-transaction-details.md deleted file mode 100644 index 241a6d7b..00000000 --- a/apps/website/docs/status-wallet/understand-transaction-details.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 562 -revision: '0' -language: en -title: Understand transaction details ---- diff --git a/apps/website/docs/status-wallet/understand-wrapped-tokens.md b/apps/website/docs/status-wallet/understand-wrapped-tokens.md deleted file mode 100644 index 0b7e9008..00000000 --- a/apps/website/docs/status-wallet/understand-wrapped-tokens.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -id: 485 -revision: '0' -language: en -title: Understand wrapped tokens ---- - -Different blockchains can't communicate with each other. For example, if you hold Bitcoin (BTC) on the Bitcoin blockchain, you can't use those funds on the Ethereum blockchain. - -Wrapped tokens solve this problem. For example, you can exchange your BTC coin for WBTC, wrapped Bitcoin, which is a token on the Ethereum blockchain. Each WBTC token is backed by a BTC coin stored in a dedicated vault. To understand the differences between coins and tokens better, check out [Understand coins and tokens](./understand-coins-and-tokens.md). - -:::info -[Status Wallet](./status-wallet-your-quick-start-guide.md) is only compatible with Ethereum-based tokens. -::: - -## The basics - -- The value of your wrapped tokens depends on the value of their original coins. -- Wrapped tokens are backed 1:1 by the asset they depend on. For example, if you own 0.5 WETH, you own the equivalent ETH value. -- Wrapped tokens are similar to their original coins, but they don't have all the same features those original coins offer. -- You can use wrapped tokens for staking, swapping, governance and in DeFi apps, just as any other token on the Ethereum blockchain. - -## How wrapped tokens work - -The value of your wrapped tokens depends on the value of their original coins, and each wrapped token is backed 1:1 by their original coin stored in a dedicated vault. - -Wrapped tokens are similar to their original coins, but they don't have all the same features those original coins offer. For example, the XMR (Monero) coin's original blockchain guarantees your transaction history and balance are fully private, but WXMR (wrapped XMR) is a regular token on the Ethereum blockchain. That's why your transaction history for XWMR will be public, just as for any other Ethereum-based token. Status Wallet is only compatible with the Ethereum blockchain, so you need to use WXMR. - -To swap or send your wrapped tokens, you need to have Ether on your Status Wallet balance to pay the network fees. Network fees are charges you pay for transactions to be processed on the blockchain. For more details on network fees, check out [Understand network fees](./understand-network-fees.md). - -## Where to get wrapped tokens - -To get wrapped tokens, you can: - -- Swap your ETH for any wrapped token available in Status Wallet. For more details, check out [Swap crypto](./swap-crypto.md). -- Exchange your coins (for example, BTC) for wrapped tokens and [send these to your Status Wallet](./receive-crypto.md). - -## Where to use wrapped tokens - -You can use your Ethereum-based wrapped tokens just like any other tokens on the Ethereum blockchain. For example, you can use them for staking and governance, as well as in DeFi apps, including as loan collaterals. - -\*[public]: This means that everyone can view your balance and transaction history. That's the way the majority of blockchains work, including Ethereum, with Monero (XMR) being a notable exception. diff --git a/apps/website/docs/status-wallet/understand-your-status-signing-phrase.md b/apps/website/docs/status-wallet/understand-your-status-signing-phrase.md deleted file mode 100644 index ad79518a..00000000 --- a/apps/website/docs/status-wallet/understand-your-status-signing-phrase.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 468 -revision: '0' -language: en -title: Understand your Status signing phrase ---- diff --git a/apps/website/docs/status-wallet/understand-your-transaction-details.md b/apps/website/docs/status-wallet/understand-your-transaction-details.md deleted file mode 100644 index 241a6d7b..00000000 --- a/apps/website/docs/status-wallet/understand-your-transaction-details.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 562 -revision: '0' -language: en -title: Understand transaction details ---- diff --git a/apps/website/docs/status-wallet/withdraw-crypto-to-your-bank-account.md b/apps/website/docs/status-wallet/withdraw-crypto-to-your-bank-account.md deleted file mode 100644 index 8b53e6e7..00000000 --- a/apps/website/docs/status-wallet/withdraw-crypto-to-your-bank-account.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 477 -revision: '0' -language: en -title: Withdraw crypto to your bank account ---- diff --git a/apps/website/docs/your-profile-and-preferences/about-changing-your-password.md b/apps/website/docs/your-profile-and-preferences/about-changing-your-password.md deleted file mode 100644 index 6d01177b..00000000 --- a/apps/website/docs/your-profile-and-preferences/about-changing-your-password.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -id: 343 -revision: '0' -language: en -title: About changing your password ---- - -:::info -Currently, you can't change your Status password. -::: - -Your Status password protects both your Status profile and associated Wallet accounts. Scenarios such as switching to another profile or signing transactions require your password. - -:::warn -Status doesn't know your password and cannot reset it for you. If you forget your password, you may lose access to your Status profile and wallet funds. Remember your Status password, keep it in a safe place, and don't share it with anyone. -::: - -:::tip -If you lose your password, check out [If you lose your Status password or recovery phrase](./if-you-lose-your-status-password-or-recovery-phrase.md) for more information. -::: - -`{/*Unlike the [keys and recovery phrase](./understand-your-status-keys-and-recovery-phrase.md), the password you set is only valid when your profile is accessible to you. If you haven't used your profile for 30 days, you'll have to restore your profile and wallet accounts and create a new password for them.*/`}` diff --git a/apps/website/docs/your-profile-and-preferences/add-a-contact-in-status.md b/apps/website/docs/your-profile-and-preferences/add-a-contact-in-status.md deleted file mode 100644 index 472d53c8..00000000 --- a/apps/website/docs/your-profile-and-preferences/add-a-contact-in-status.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: 382 -revision: '0' -language: en -title: Add a contact in Status ---- - -To start a chat with someone, you first need to add them to your contacts. - -After sending a contact request, wait for the other person to accept it. Once they do that, both you and them can send each other [direct messages](../messaging-and-web3-browser/send-direct-messages-to-your-contacts.md) and invite each other to [group chats](../messaging-and-web3-browser/add-members-to-a-group-chat.md). - -If the person you want to chat with doesn't have a Status profile yet, you can [invite them to join Status](../getting-started/invite-friends-to-status.md). - -To add someone to your contact list, you need their [chat key](./understand-your-status-keys-and-recovery-phrase.md), which represents their public Status profile. They can share it with you, so ask them to [Share their Status profile with you](./share-your-status-profile.md). You can also use their QR code to add them to contacts. - -:::tip -To add someone you know from a group chat or community, simply right-click their name and select :desktop-add-user: **Send a contact request**. -::: - -## Add a contact - -=== "Mobile" - - 1. Ask the person you want to add to your contacts to share their profile. - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap :mobile-add: **Plus** and select :mobile-add-user: **Add a contact**. - 1. Paste the link to that person's profile into the field or tap :mobile-qr-code: to scan the QR code. - 1. Tap :mobile-profile: **View profile** > :mobile-profile: **Send contact request**. - 1. In your introductory message, briefly explain who you are and why you want to add them to your contacts. This is the first message your contact sees from you. Once you're done, tap **Send contact request**. - -:::tip -To see someone's QR code, ask them to go to **Messages** > :mobile-qr-code: **Share**. Follow the steps below to add them to contacts using this code. -::: - -=== "Desktop" - - 1. Ask the person you want to add to your contacts to share their profile. - 1. From the navigation sidebar, click :desktop-chat: **Chat**. - 1. Click :desktop-start-chat: **Start chat**. - 1. Paste the link to that person's profile into the **To** field. - 1. In your introductory message, briefly explain who you are and why you want to add them to your contacts. This is the first message your contact sees from you. Once you're done, click **Send contact request**. diff --git a/apps/website/docs/your-profile-and-preferences/add-a-nickname-to-your-contacts.md b/apps/website/docs/your-profile-and-preferences/add-a-nickname-to-your-contacts.md deleted file mode 100644 index aaf2911d..00000000 --- a/apps/website/docs/your-profile-and-preferences/add-a-nickname-to-your-contacts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 623 -revision: '0' -language: en -title: Add a nickname to your contacts ---- diff --git a/apps/website/docs/your-profile-and-preferences/authenticate-your-profile.md b/apps/website/docs/your-profile-and-preferences/authenticate-your-profile.md deleted file mode 100644 index a5a6bfe5..00000000 --- a/apps/website/docs/your-profile-and-preferences/authenticate-your-profile.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: -revision: '0' -language: en -title: Authenticate your profile ---- diff --git a/apps/website/docs/your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md b/apps/website/docs/your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md deleted file mode 100644 index 31a1afe3..00000000 --- a/apps/website/docs/your-profile-and-preferences/back-up-and-secure-your-recovery-phrase.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: 344 -revision: '0' -language: en -title: Back up and secure your recovery phrase ---- - -Your Status recovery phrase (also known as a seed phrase or backup phrase) consists of 12 words that can be used to regenerate your [private key](./understand-your-status-keys-and-recovery-phrase.md). If you lose your private key or it is compromised, you lose access to your Status profile and funds forever. For this reason, you must always backup your recovery phrase and keep it safe. - -:::warn -Status can't recover your Status password or recovery phrase for you. It is your responsibility to keep this information safe. Check out [If you lose your Status password or recovery phrase](./if-you-lose-your-status-password-or-recovery-phrase.md) for more information. -::: - -## Back up your recovery phrase - -For security reasons, your recovery phrase is permanently removed from your device once you confirm that you have saved it. You won't be able to view your recovery phrase in the Status app after that (the option is grayed out). - -=== "Mobile" - - ### Step 1: Find your recovery phrase - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture > :mobile-privacy: **Privacy and security**. - 1. On the **Back up recovery phrase** screen, make sure you have everything ready to write down the recovery phrase. Then, check the verification boxes. - 1. Tap **See my recovery phrase**. - - ### Step 2: Write down your recovery phrase - - 1. Write down and [secure](#secure-your-recovery-phrase) your recovery phrase. Don't take a screenshot. - 1. Tap **I wrote it on a paper**. - 1. The Status app asks you to type two randomly chosen words from your recovery phrase. Type the words, check the **I understand this is the only time I can see my recovery phrase in the app** box and tap **Done**. - 1. Once you write down your recovery phrase, tap **Yes**. - 1. Tap **OK, great**. - -=== "Desktop" - - ### Step 1: Find your recovery phrase - - 1. From the navigation sidebar, click :desktop-settings: **Settings**. - 1. In the **Settings** sidebar, click :desktop-profile: **Profile**. - 1. On the **Back up your recovery phrase** screen, make sure you have everything ready to write down the recovery phrase. Then, check the verification boxes. - 1. Click :desktop-reveal: **Reveal recovery phrase**. - - ### Step 2: Write your recovery phrase - - 1. Write down and [secure](#secure-your-recovery-phrase) your recovery phrase. Don't take a screenshot. - 1. Click **Confirm recovery phrase**. - 1. The Status app asks you to type two randomly chosen words from your recovery phrase. Type the words and then, click **Continue**. - 1. Check the **I acknowledge that Status will not be able to show me my recovery phrase again** box and click **Complete and delete my recovery phrase**. - -## Secure your recovery phrase - -If you lose your recovery phrase or someone else gets access to it, you lose access to your Status profile and funds in the [Status Wallet](../status-wallet/status-wallet-your-quick-start-guide.md). - -Here are some tips on how to keep your recovery phrase secure: - -
-

Screen reader tip

-

If you're using a screen reader, consider making an audio recording of your recovery phrase or asking someone you trust to do so. For extra security, you can come up with a short story that would include words from your recovery phrase in the right order, and ask someone you trust to record it for you.

-
- -- **Keep it safe** - - Use a pen-and-paper backup, writing down your recovery phrase on a piece of paper and saving this paper in a locked safe, at the very least. This is the most common backup method, but it's not the most secure one. Consider using a hardware wallet in addition to your pen-and-paper backup. - -- **Avoid digital copies** - - Don't take a screenshot of your recovery phrase and don't save your recovery phrase on your phone, computer or any online services. - -- **Never share** - - Do not share the recovery phrase with anyone and be careful about who has access to it. - -- **Use a hardware wallet** - - Hardware wallets add an extra layer of security to your recovery phrase. The [Keycard](../about-keycard.md) hardware wallet integrates with the Status app and is compatible with all major cryptocurrencies. - -- **Use multiple backups** - - You can combine different backup methods, such as a pen-and-paper backup and a hardware wallet. In addition, you can improve the security of your pen-and-paper backup by dividing up your recovery phrase words and storing them in different places. - -:::info -Keep your recovery phrase safe and never share it with anyone. Status will never ask you for this information, and anyone who does is trying to steal your profile and wallet funds. -::: diff --git a/apps/website/docs/your-profile-and-preferences/block-or-unblock-someone-in-status.md b/apps/website/docs/your-profile-and-preferences/block-or-unblock-someone-in-status.md deleted file mode 100644 index 9d38ce23..00000000 --- a/apps/website/docs/your-profile-and-preferences/block-or-unblock-someone-in-status.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -id: 309 -revision: '0' -language: en -title: Block or unblock someone in Status ---- - -You can block a stranger or an existing contact to stop receiving harmful content and excluding the user entirely from your experience with Status. - -:::warn -Blocking someone deletes all messages from the user. Status can't recover them for you. -::: - -## What to expect - -- Blocked users don't receive any notifications or see any changes. They only know that you have stopped messaging them. -- You can't see any messages sent by blocked users, including direct messages and messages in mutual group chats, channels and communities. -- A blocked user can see your previous direct messages and future messages you send in mutual group chats, channels and communities. -- Status permanently deletes all messages sent by the blocked user, including direct messages and messages in mutual group chats, channels and communities. -- Unblocking a user does not restore deleted messages. -- Status stops showing blocked users as mutual contacts. - -## Block an existing contact - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap **Contacts**, then tap the profile picture of the contact you want to block. - 1. From the top navigation, tap :mobile-more-options: **More options**. - 1. Tap :mobile-block: **Block User**. - 1. Check the two boxes if you want to remove the user's identity verification and remove the user from your contacts. - 1. Tap **Block**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Messages**. - 1. In the **Messages** sidebar, click the user you want to block. - 1. At the top of the content area, click :desktop-more-options: **More options** and select **View profile**. - 1. On the pop-up, click :desktop-more-options: **More options** and select :desktop-block: **Block User**. - 1. Click **Block User**. - -## Block a stranger - -A stranger is a user who is not your contact. You can encounter a stranger in a group chat, community or channel. You can receive a contact request from a stranger. - -=== "Mobile" - - ### Step 1: Find the user to block - - | Context | Steps | - |-------|-------| - | Mutual group chat | 1. From the tab bar, tap :mobile-messages: **Messages** > **Groups**. 2. Long press the group chat. 3. Tap :mobile-group-members: **Group details**. | - | Mutual community or channel | 1. From the tab bar, tap :mobile-communities: **Communities** > **Joined**. 2. Long press the community. 3. Tap :mobile-group-members: **View members**. | - | Contact request | From the tab bar, tap :mobile-messages: **Messages** > **Contacts** > **Pending requests**. | - - ### Step 2: Block the user - - 1. Tap the profile picture of the user. - 2. From the top navigation, tap :mobile-more-options: **More options**. - 3. Tap :mobile-block: **Block User**. - 4. Tap **Block**. - -=== "Desktop" - - ### Step 1: Find the user to block - - | Context | Steps | - |-------|-------| - | Mutual group chat | 1. From the navigation sidebar, click :desktop-chat: **Messages**. 2. In the **Messages** sidebar, click the group chat. 3. If you don't see the **Members** right sidebar, click :desktop-group-chat: **Members** at the top of the content area. - | Mutual community or channel | 1. From the navigation sidebar, click the community. 2. If you don't see the **Members** right sidebar, click :desktop-group-chat: **Members** at the top of the content area. | - | Contact request | Go to :desktop-notification: **Notifications** > **Contact requests**. | - - ### Step 2: Block the user - - 1. Click the profile picture of the user you want to block. - 1. On the pop-up, click :desktop-more-options: **More options** and select :desktop-block: **Block User**. - -## Unblock a user - -=== "Mobile" - - 1. Tap your profile picture. - 2. Go to **Privacy and security** > **Blocked and rejected users**. - 3. Tap the profile picture of the user you want to unblock. - 4. Tap **Unblock**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Messages**. - 1. Go to **Messaging** > **Contacts, Requests, and Blocked Users**. - 1. In the **Messaging** content area, select **Blocked**. - 1. On the right of the contact you want to unblock, click :desktop-more-options: **More options** and select :desktop-unblock: **Unblock User**. diff --git a/apps/website/docs/your-profile-and-preferences/common-issues-when-the-community-s-control-node-is-offline.md b/apps/website/docs/your-profile-and-preferences/common-issues-when-the-community-s-control-node-is-offline.md deleted file mode 100644 index 3129296f..00000000 --- a/apps/website/docs/your-profile-and-preferences/common-issues-when-the-community-s-control-node-is-offline.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -id: 604 -revision: '0' -language: en -title: Common issues when the community control node is offline ---- - -When you [create a community](../status-communities/create-a-status-community.md), your computer becomes a [control node](../status-communities/about-the-control-node-in-status-communities.md). As the community owner, the control node runs automatically in your Status desktop app if you use the same profile and computer where you set up the community. - -:::info -You can [set up a new control node](../status-communities/replace-your-community-s-control-node.md) if the initial Status desktop fails or becomes inaccessible. -::: - -If you don't have the Status desktop app running and connected to the internet, your community keeps working, but your members' experience degrades. Here are some of the problems you and your members may find: - -- Members can't access messages over one month because the [Community History Service](../status-communities/about-the-community-history-service.md) is not running. -- [Community join requests](../status-communities/manage-community-join-requests.md) can't be processed and are rejected or ignored. -- [Banning or kicking out members](../status-communities/kick-or-ban-someone-from-your-community.md) is delayed until the control node is online. -- Your community can't verify if members in [token-gated channels](../status-communities/set-up-channel-permissions.md) still hold the required tokens. -- Members who could not access a private channel for not [meeting the requirements](../status-communities/understand-token-requirements-in-channels.md) can't join the channel even if they meet them now. - -:::tip -Keep the Status desktop app working as the [community control node](../status-communities/about-the-control-node-in-status-communities.md) online every day or at least once every six days. -::: diff --git a/apps/website/docs/your-profile-and-preferences/configure-community-and-channel-notifications.md b/apps/website/docs/your-profile-and-preferences/configure-community-and-channel-notifications.md deleted file mode 100644 index baa65b28..00000000 --- a/apps/website/docs/your-profile-and-preferences/configure-community-and-channel-notifications.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 585 -revision: '0' -language: en -title: Configure community and channel notifications ---- diff --git a/apps/website/docs/your-profile-and-preferences/configure-mentions-and-other-messages.md b/apps/website/docs/your-profile-and-preferences/configure-mentions-and-other-messages.md deleted file mode 100644 index d422cddf..00000000 --- a/apps/website/docs/your-profile-and-preferences/configure-mentions-and-other-messages.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 570 -revision: '0' -language: en -title: Configure mentions and other messages ---- diff --git a/apps/website/docs/your-profile-and-preferences/create-and-use-additional-status-profiles.md b/apps/website/docs/your-profile-and-preferences/create-and-use-additional-status-profiles.md deleted file mode 100644 index 19fc1e77..00000000 --- a/apps/website/docs/your-profile-and-preferences/create-and-use-additional-status-profiles.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: 433 -revision: '0' -language: en -title: Create and use additional Status profiles ---- - -Using your Status profile, you can access and use the different Status app features. Unlike traditional centralized apps which require personal information like a phone number to sign up, Status doesn't ask you for any personal information. - -You can create multiple profiles for different purposes. For example, you may want to use different profiles for work, social activities and connecting with families. - -:::info -If you want to remove a profile, read [Remove a Status profile](../remove-a-status-profile.md). -::: - -## Create an additional profile - -To create an additional profile, you follow a similar process to creating your first profile. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**, then tap your profile picture. - 1. From the top navigation, tap :mobile-multi-profile: **Profiles**. - 1. Tap :desktop-plus: **Add**, and then tap :desktop-plus: **Create a new profile**. - 1. Read [Create a new Status profile](../getting-started/run-the-status-app-for-the-first-time#new-profile.md) and follow the instructions. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings** > :desktop-signout: **Sign out and quit**. - 1. Click **Sign out and quit** again to confirm. - 1. Open the Status app. Click **Cancel** if you're prompted to sign in. - 1. Click :desktop-chevron-down: **Arrow** and then click :desktop-plus: **Add new user**. - 1. Click **Generate new keys**. - 1. Read [Create a new Status profile](../getting-started/run-the-status-app-for-the-first-time#new-profile.md) and follow the instructions described in step 2. - -:::info -If you want to create a profile using your Keycard, read [Create or restore your Status profile using Keycard](./create-or-restore-your-status-profile-using-keycard.md). -::: - -## Add an existing profile - -If you have another Status profile you can add it to your device. For example, you may use two different profiles on two devices, but now you want to use both of them on one single device. - -=== "Mobile" - - If the profile to add is logged in on another device, read [Sync your profile on a new device](../sync-new-device.md) and follow the instructions. Otherwise, [log out of Status](./log-out-of-status.md) and sign in [using your recovery phrase](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) or [Keycard](./create-or-restore-your-status-profile-using-keycard.md). - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings** > :desktop-signout: **Sign out and quit**. - 1. Click **Sign out and quit** again to confirm. - 1. Open the Status app. Click **Cancel** if you're prompted to sign in. - 1. Click :desktop-chevron-down: **Arrow** and then click **Add existing Status user** to sign in. - -:::info -If you want to add an existing Status profile using its recovery phrase, read [Create or restore your Status profile using a recovery phrase](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md). If you want to add an existing Status profile using your Keycard, read [Create or restore your Status profile using Keycard](./create-or-restore-your-status-profile-using-keycard.md). -::: - -## Switch profiles - -You can switch between Status profiles if you add multiple profiles on your device. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**, then tap your profile picture. - 1. From the top navigation, tap :mobile-multi-profile: **Profiles**. - 1. Tap the profile to switch to and log in. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings** > :desktop-signout: **Sign out and quit**. - 1. Click **Sign out and quit** again to confirm. - 1. Open the Status app. Click **Cancel** if you're prompted to sign in. - 1. Click :desktop-chevron-down: **Arrow** to view your profiles and choose the one you want to switch to. - 1. Log in to the profile. diff --git a/apps/website/docs/your-profile-and-preferences/create-or-restore-your-status-profile-using-keycard.md b/apps/website/docs/your-profile-and-preferences/create-or-restore-your-status-profile-using-keycard.md deleted file mode 100644 index e7663cc5..00000000 --- a/apps/website/docs/your-profile-and-preferences/create-or-restore-your-status-profile-using-keycard.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 375 -revision: '0' -language: en -title: Create or restore your Status profile using Keycard ---- diff --git a/apps/website/docs/your-profile-and-preferences/customize-direct-message-notifications.md b/apps/website/docs/your-profile-and-preferences/customize-direct-message-notifications.md deleted file mode 100644 index 1d3f2f34..00000000 --- a/apps/website/docs/your-profile-and-preferences/customize-direct-message-notifications.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 597 -revision: '0' -language: en -title: Customize direct message notifications ---- diff --git a/apps/website/docs/your-profile-and-preferences/customize-group-chat-notifications.md b/apps/website/docs/your-profile-and-preferences/customize-group-chat-notifications.md deleted file mode 100644 index b1b4e6e7..00000000 --- a/apps/website/docs/your-profile-and-preferences/customize-group-chat-notifications.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 598 -revision: '0' -language: en -title: Customize group chat notifications ---- diff --git a/apps/website/docs/your-profile-and-preferences/customize-membership-request-notifications.md b/apps/website/docs/your-profile-and-preferences/customize-membership-request-notifications.md deleted file mode 100644 index d12db6fa..00000000 --- a/apps/website/docs/your-profile-and-preferences/customize-membership-request-notifications.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 584 -revision: '0' -language: en -title: Customize membership request notifications ---- diff --git a/apps/website/docs/your-profile-and-preferences/customize-your-status-profile.md b/apps/website/docs/your-profile-and-preferences/customize-your-status-profile.md deleted file mode 100644 index 1e81a1c3..00000000 --- a/apps/website/docs/your-profile-and-preferences/customize-your-status-profile.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 378 -revision: '0' -language: en -title: Customize your Status profile ---- diff --git a/apps/website/docs/your-profile-and-preferences/delete-your-status-profile.md b/apps/website/docs/your-profile-and-preferences/delete-your-status-profile.md deleted file mode 100644 index 1b31eb92..00000000 --- a/apps/website/docs/your-profile-and-preferences/delete-your-status-profile.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -id: 114 -revision: '0' -language: en -title: Delete your Status profile ---- - -Status uses a [peer-to-peer network](../messaging-and-web3-browser/about-status-messages#peer-to-peer-messaging.md) that temporarily stores your profile information and data. Because of this decentralized network, there is no one-click way to delete your profile and all associated data. - -## What to expect - -- If you decide to stop using a profile, you can leave it inactive for 30 days or more. By doing so, the Status peer-to-peer network stops caching your information and the profile is irretrievably lost. You can always create a new Status profile. -- Though your profile is lost, your wallet funds are not. Your wallet funds are safe and available if you know [your recovery phrase] [create-or-restore-your-status-profile-using-a-recovery-phrase]. -- The messages you sent are still accessible to the recipients, whether they are direct messages or messages in a group chat or community. -- People still can see all information you display on your profile screen. For example, your profile name, photo, bio and linked social media. - -## Delete your Status Profile - -Here are things you can do if you want to stop using a profile: - -- [x] [Transfer assets](../status-wallet/send-crypto.md) out of your Status wallet. -- [x] Inform your contacts the profile is out of use. -- [x] [Leave group chats](../messaging-and-web3-browser/leave-a-group-chat.md) and [communities](../status-communities/leave-a-status-community.md) you joined. -- [x] [Edit your profile](../edit-your-profile.md) and remove your personal information. -- [x] [Remove your profile](./remove-a-status-profile-from-your-profile-list.md) from all your devices and leave it inactive for 30 days. diff --git a/apps/website/docs/your-profile-and-preferences/enable-rich-link-previews-in-messages.md b/apps/website/docs/your-profile-and-preferences/enable-rich-link-previews-in-messages.md deleted file mode 100644 index 84ff485a..00000000 --- a/apps/website/docs/your-profile-and-preferences/enable-rich-link-previews-in-messages.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 328 -revision: '0' -language: en -title: Enable rich link previews in messages ---- diff --git a/apps/website/docs/your-profile-and-preferences/faq-status-keys-and-recovery-phrase.md b/apps/website/docs/your-profile-and-preferences/faq-status-keys-and-recovery-phrase.md deleted file mode 100644 index 40877197..00000000 --- a/apps/website/docs/your-profile-and-preferences/faq-status-keys-and-recovery-phrase.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 380 -revision: '0' -language: en -title: 'FAQ: Status keys and recovery phrase' ---- diff --git a/apps/website/docs/your-profile-and-preferences/if-you-lose-your-status-password-or-recovery-phrase.md b/apps/website/docs/your-profile-and-preferences/if-you-lose-your-status-password-or-recovery-phrase.md deleted file mode 100644 index e1d9a93b..00000000 --- a/apps/website/docs/your-profile-and-preferences/if-you-lose-your-status-password-or-recovery-phrase.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -id: 376 -revision: '0' -language: en -title: If you lose your Status password or recovery phrase ---- - -When you lose access to your Status password or recovery phrase, you may lose access to your Status data and wallet funds. Status can't recover your data or wallet funds for you due to its [decentralized architecture](../getting-started/what-is-status.md). It's your responsibility to keep your password and recovery phrase safe. - -:::info -If you have your recovery phrase, your wallet funds are safe. In this case, [restore your Status profile](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) using your recovery phrase. -::: - -Depending on your circumstances, you may be able to recover your Status data and wallet funds. Select the option that describes your situation: - -- [If you have your recovery phrase but lose your Status password](#if-you-have-your-recovery-phrase-but-lose-your-status-password) -- [If you lose your recovery phrase but know your Status password](#if-you-lose-your-recovery-phrase-but-know-your-status-password) -- [If you lose your recovery phrase and Status password](#if-you-lose-your-recovery-phrase-and-status-password) - -## If you have your recovery phrase but lose your Status password - -Use your recovery phrase to access your wallet funds if you can't sign in due to a lost password, [Keycard](../about-keycard.md) or biometrics setup. Visit [Create or restore your Status profile using a recovery phrase](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) for instructions. - -:::warn -Status doesn't know your password and can't reset it for you. If you forget your password, you may lose access to your Status profile. -::: - -## If you lose your recovery phrase but know your Status password - -If you lose your recovery phrase but can still sign in to your Status profile (using your password, [Keycard](../about-keycard.md) or biometrics), you can save the wallet funds by sending them to a different wallet address. - -Follow these steps: - -1. Sign in to the Status profile where you lost your recovery phrase. -1. Verify if your recovery phrase is still [available in the Status app](./back-up-and-secure-your-recovery-phrase#back-up-recovery-phrase.md). If it's available, [back up your recovery phrase](./back-up-and-secure-your-recovery-phrase#back-up-recovery-phrase.md). Your wallet funds are safe and you don't need to do anything else. If your recovery phrase isn't available, continue with the next step. -1. [Log out of Status](./log-out-of-status.md) and [create a new Status profile](../getting-started/run-the-status-app-for-the-first-time.md). This creates a new key pair and default wallet address. -1. Sign in to your new Status profile and copy the new wallet address. -1. [Log out](./log-out-of-status.md) of your new profile and sign in to the profile where you lost your recovery phrase. -1. From the Status profile where you lost your recovery phrase, [send all your wallet funds](../status-wallet/send-crypto.md) to the new wallet address. - -:::warn -Status can't see your recovery phrase or recover it for you. [Keep your recovery phrase safe](./back-up-and-secure-your-recovery-phrase.md), and never share this information with anyone. -::: - -## If you lose your recovery phrase and Status password - -If lose your recovery phrase and can't sign in to your Status profile due to a lost password, [Keycard](../about-keycard.md) or biometrics setup, you lose access to your Status data and wallet funds forever. - -:::warn -Status can't see or access your password or recovery phrase. If you lose them or forget them, Status can't recover or replace them. -::: - -In this situation, if you're still signed in to your Status profile, you may be able to save the wallet funds by sending them to a different wallet address. - -Follow these steps: - -1. Don't log out of Status and don't change to another app. Plug in your device to charge it. Don't restart your device or update the Status app. -1. Verify if your recovery phrase is still [available in the Status app](./back-up-and-secure-your-recovery-phrase#back-up-recovery-phrase.md). If it's available, [back up your recovery phrase](./back-up-and-secure-your-recovery-phrase#back-up-recovery-phrase.md). Your wallet funds are safe but you need [create a new Status profile with the recovery phrase](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) because your password is lost. If your recovery phrase is not available, continue with the next step. -1. Using a second device, [create a new Status profile](../getting-started/run-the-status-app-for-the-first-time.md). This creates a new key pair and default wallet address. -1. On the second device, copy the new wallet address. -1. From the Status profile where you lost your recovery phrase and password, [send all your wallet funds](../status-wallet/send-crypto.md) to the new wallet address. diff --git a/apps/website/docs/your-profile-and-preferences/index.md b/apps/website/docs/your-profile-and-preferences/index.md deleted file mode 100644 index a7dab12e..00000000 --- a/apps/website/docs/your-profile-and-preferences/index.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Your profile and preferences ---- - -Set up your Status profile and notifications, customize your settings and fix common issues. - -## Manage your profile - -- [Create and use **additional Status profiles**](./create-and-use-additional-status-profiles.md) -- [**Sign into** your Status profile on a new device](./sign-into-your-status-profile-on-a-new-device.md) -- [**View and edit** your Status profile](./view-and-edit-your-status-profile.md) -- [**Share** your Status profile](./share-your-status-profile.md) -- [**Sync** your profile across devices](./sync-your-profile-across-devices.md) -- [**Remove** a Status profile from your profile list](./remove-a-status-profile-from-your-profile-list.md) -- [**Log out** of Status](./log-out-of-status.md) -- [**Delete** your Status profile](./delete-your-status-profile.md) - -## Change your settings and preferences - -- [Status settings **reference**](./status-settings-reference.md) -- [Enable **rich link previews** in messages](./enable-rich-link-previews-in-messages.md) -- [Register or add your **ENS name** in Status](./register-or-add-your-ens-name-in-status.md) -- [Set the **default browser** in Status](./set-the-default-browser-in-status.md) - -## Adjust your notifications - -- [Your Status **notifications guide**](./your-status-notifications-guide.md) -- [Set up your **notification settings**](./set-up-your-notification-settings.md) -- [**View** notifications and updates](./view-notifications-and-updates.md) -- [**Mute** your notifications](./mute-your-notifications.md) -- [Customize **direct message** notifications](./customize-direct-message-notifications.md) -- [Configure **mentions and all other messages**](./configure-mentions-and-all-other-messages.md) -- [Customize **group chat** notifications](./customize-group-chat-notifications.md) -- [Configure **community and channel** notifications](./configure-community-and-channel-notifications.md) -- [Set up and customize **notification exceptions**](./set-up-and-customize-notification-exceptions.md) -- [Customize **membership request** notifications](./customize-membership-request-notifications.md) -- [**Reset** your notification settings](./reset-your-notification-settings.md) - -## Your profile security and privacy - -- [**Back up and secure** your recovery phrase](./back-up-and-secure-your-recovery-phrase.md) -- [Understand your **Status keys** and **recovery phrase**](./understand-your-status-keys-and-recovery-phrase.md) -- [**View your profile** as someone else](./view-your-profile-as-someone-else.md) -- [About changing your **password**](./about-changing-your-password.md) -- [**Remove a contact** from Status](./remove-a-contact-from-status.md) -- [Set up **biometric authentication**](./set-up-biometic-authentication.md) -- [**FAQ**: Status keys and recovery phrase](./faq-status-keys-and-recovery-phrase.md) -- [**Block or unblock** someone in Status](./block-or-unblock-someone-in-status.md) -- [**Stay anonymous** when your messages are forwarded](./stay-anonymous-when-your-messages-are-forwarded.md) -- [Set up **automatic locking** for the Status app](./set-up-automatic-locking-for-the-status-app.md) - -## Troubleshooting - -- [If you **lose** your Status **password** or **recovery phrase**](./if-you-lose-your-status-password-or-recovery-phrase.md) -- [**Uninstall** Status desktop](./uninstall-status-desktop.md) -- [Common issues when the **community's control node is offline**](../status-communities/common-issues-when-the-community-s-control-node-is-offline.md) - -## Use your Keycard - -- [Keycard: your **quick start guide**](./keycard-your-quick-start-guide.md) -- [Create or restore your Status profile **using Keycard**](./create-or-restore-your-status-profile-using-keycard.md) - -## Handle your contact list and user verification - -- [**Remove** a contact from Status](./remove-a-contact-from-status.md) -- [Respond to a **contact request**](./respond-to-a-contact-request.md) -- [Understand Status **profile labels**](./understand-status-profile-labels.md) -- [**Add a contact** in Status](./add-a-contact-in-status.md) diff --git a/apps/website/docs/your-profile-and-preferences/keycard-your-quick-start-guide.md b/apps/website/docs/your-profile-and-preferences/keycard-your-quick-start-guide.md deleted file mode 100644 index 4a0dcd48..00000000 --- a/apps/website/docs/your-profile-and-preferences/keycard-your-quick-start-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 377 -revision: '0' -language: en -title: 'Keycard: your quick start guide' ---- diff --git a/apps/website/docs/your-profile-and-preferences/log-out-of-status.md b/apps/website/docs/your-profile-and-preferences/log-out-of-status.md deleted file mode 100644 index fd4c8ddc..00000000 --- a/apps/website/docs/your-profile-and-preferences/log-out-of-status.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: 387 -revision: '0' -language: en -title: Log out of Status ---- - -When you decide not to use Status on the current device, you can log out to keep your profile secure. Status logs you out automatically after some app updates or when you uninstall the app. - -:::warn -If you log out without [backing up the recovery phrase](./back-up-and-secure-your-recovery-phrase.md) and saving your password, you can't access your Status profile or the associated data and funds again. Keep the password and the recovery phrase in a safe place. Status can't recover or reset them for you. -::: - -## Log out of Status - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your avatar. - 1. Scroll down to the bottom of the list and tap :mobile-log-out: **Log out**. - 1. If you have backed up your recovery phrase and know your Status password, check the two boxes. - 1. Tap :mobile-log-out: **Log out**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings**. - 1. In the **Settings** sidebar, scroll down to the bottom. - 1. Click **Sign out & Quit**. - -:::info -To prevent data and funds loss, you can't log out of your account until you [back up your recovery phrase](./back-up-and-secure-your-recovery-phrase.md). -::: diff --git a/apps/website/docs/your-profile-and-preferences/mute-your-notifications.md b/apps/website/docs/your-profile-and-preferences/mute-your-notifications.md deleted file mode 100644 index db85454d..00000000 --- a/apps/website/docs/your-profile-and-preferences/mute-your-notifications.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: 347 -revision: '0' -language: en -title: Mute your notifications ---- - -You can turn off and on your notifications for the entire app or specific communities, channels, group chats, and direct messages (DMs) for a designated period. Communities, group chats, channels and direct messages appear greyed out when you mute their notifications. - -:::tip -You have the option to [set notification exceptions](./set-notification-exceptions.md) to fine-tune your notification preferences, allowing certain notifications to come through even if others are muted. For instance, you can mute all notifications for a channel except for messages sent by a specific user. -::: - -## Mute all the Status app notifications - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture. - 1. Scroll down in the list and tap :mobile-mute: **Notifications**. - 1. Turn **Notifications** off. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings**. - 1. In the **Settings** sidebar, click :desktop-notification: **Notifications and Sounds**. - 1. Turn **Notifications** off. - -:::info -Muting all the Status app notifications mutes ephemeral notifications (the ones appearing on your screen and disappearing shortly after). -::: - -## Mute specific notifications - -You still see a badge if someone mentions you in a muted channel, community, group chat, or direct message. This badge displays the number of mentions. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities** to mute a community or channel, or tap :mobile-messages: **Messages** to mute a group chat or DM. - 1. Long press the community, channel, group chat or DM you want to mute. - 1. Tap :mobile-mute: **Mute**. - 1. Select the length of time you'd like to mute your notifications. - -=== "Desktop" - - ### Mute communities - - 1. From the navigation sidebar, click :desktop-settings: **Settings**. - 1. From the settings sidebar, click :desktop-communities: **Communities**. - 1. Choose the community you want to mute, and click :desktop-notification: **Mute**. - - ### Mute channels - - 1. From the navigation sidebar, click the community with the channel you wish to mute. - 1. In the channel sidebar, right-click the channel. - 1. Select :desktop-notification: **Mute**. - - ### Mute group chats or DMs - - 1. From the navigation sidebar, click :desktop-messages: **Messages**. - 1. In the **Messages** sidebar, right-click the group chat or DM you wish to mute. - 1. Select :desktop-notification: **Mute**. diff --git a/apps/website/docs/your-profile-and-preferences/profile-synchronization-reference.md b/apps/website/docs/your-profile-and-preferences/profile-synchronization-reference.md deleted file mode 100644 index 069b698d..00000000 --- a/apps/website/docs/your-profile-and-preferences/profile-synchronization-reference.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 642 -revision: '0' -language: en -title: Profile synchronization reference ---- diff --git a/apps/website/docs/your-profile-and-preferences/register-or-add-your-ens-name-in-status.md b/apps/website/docs/your-profile-and-preferences/register-or-add-your-ens-name-in-status.md deleted file mode 100644 index 88255c5e..00000000 --- a/apps/website/docs/your-profile-and-preferences/register-or-add-your-ens-name-in-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 644 -revision: '0' -language: en -title: Register or add your ENS name in Status ---- diff --git a/apps/website/docs/your-profile-and-preferences/remove-a-contact-from-status.md b/apps/website/docs/your-profile-and-preferences/remove-a-contact-from-status.md deleted file mode 100644 index 9cccc979..00000000 --- a/apps/website/docs/your-profile-and-preferences/remove-a-contact-from-status.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: 308 -revision: '0' -language: en -title: Remove a contact from Status ---- - -You can remove any contact from your Status contact list. In Status, you need to add people as contacts to start a conversation. After you remove a Status contact, neither you nor your contact can send new messages to each other. - -## What to expect - -- Removing a contact from Status removes the identity verification associated with that contact but not their reputation (trusted or untrusted). -- After you remove a contact, your direct messages with them remain. To delete these messages, [delete the chat](../messaging-and-web3-browser/delete-a-chat-with-someone.md). -- A user not on your contact list can still see your profile and send you a contact request. To prevent this, you can [block the user](../block-someone-in-status.md). - -:::info -Status doesn't access or use your phone's contact list. When you remove a contact from Status who is also on your phone's contact list, that person stays on your list. -::: - -## Remove a contact - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap **Contacts**. - 1. In your contact list, search for the contact you want to remove. - 1. Tap :mobile-more-options: **More options** next to the contact. - 1. Select :mobile-remove-user: **Remove from contacts**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Messages**. - 1. In your contacts sidebar, click the contact you want to remove. - 1. At the top of the content area, click :desktop-more-options: **More options** and select **View profile**. - 1. In the profile dialog, click **More options** and select **Remove contact**. - 1. Click **Confirm**. diff --git a/apps/website/docs/your-profile-and-preferences/remove-a-status-profile-from-your-profile-list.md b/apps/website/docs/your-profile-and-preferences/remove-a-status-profile-from-your-profile-list.md deleted file mode 100644 index 5de164ff..00000000 --- a/apps/website/docs/your-profile-and-preferences/remove-a-status-profile-from-your-profile-list.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: 500 -revision: '0' -language: en -title: Remove a Status profile from your profile list ---- - -If you don't want a profile to show up on your device, you can remove it. - -:::info -A profile removed from your device is not deleted. Check out [Delete your Status profile](./delete-your-status-profile.md). -::: - -## What to expect - -- When you remove a profile from one device, the associated data is deleted from that device. To delete the data from all devices, repeat the procedure on all devices where you use the profile. -- If you don't log into your Status profile for 30 days or more (on any device), your crypto funds are safe, but your profile is [irrecoverably lost](./delete-your-status-profile.md). You can always create another Status profile [using your recovery phrase](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) - -## Remove a Status profile - -=== "Mobile" - - 1. From the tab bar, tap :mobile-communities: **Communities**, then tap your profile photo. - 1. From the top navigation, tap :mobile-multi-profile: **Profiles**. - 1. Tap the :mobile-more-options: **More options** next to the profile to remove. - 1. Tap :mobile-placeholder: **Remove profile from this device**. - 1. Tap **Remove** to confirm. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings** > :desktop-signout: **Sign out and quit**. - 1. Click **Sign out and quit** again to confirm. - 1. Open the Status app. Click **Cancel** if you are prompted to sign in. - 1. Click :desktop-chevron-down: **Arrow** and then click :desktop-settings: **Manage profiles**. - 1. Click :desktop-delete: **Remove** next to the profile to remove. - 1. Click **Remove Profile** to confirm. - -:::info -Within 30 days, you can [restore this profile](../getting-started/create-or-restore-your-status-profile-using-a-recovery-phrase.md) if you want to use it again. -::: diff --git a/apps/website/docs/your-profile-and-preferences/reset-notification-settings.md b/apps/website/docs/your-profile-and-preferences/reset-notification-settings.md deleted file mode 100644 index bc062521..00000000 --- a/apps/website/docs/your-profile-and-preferences/reset-notification-settings.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 640 -revision: '0' -language: en -title: Reset notification settings ---- diff --git a/apps/website/docs/your-profile-and-preferences/respond-to-a-contact-request.md b/apps/website/docs/your-profile-and-preferences/respond-to-a-contact-request.md deleted file mode 100644 index 83584331..00000000 --- a/apps/website/docs/your-profile-and-preferences/respond-to-a-contact-request.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: 527 -revision: '0' -language: en -title: Respond to a contact request ---- - -Status users who search for your profile or you interact with can send you contact requests. For example, users you have shared your profile with or those in mutual communities or group chats with you. - -:::tip -If you want to send a contact request, check out [Add a contact in Status](./add-a-contact-in-status.md). -::: - -## What to expect - -- Contact requests expire after seven days. -- Status users can send you a new request every seven days. If it bothers you, consider [blocking the user](./block-or-unblock-someone-in-status#block-stranger.md). -- People you have [blocked](./block-or-unblock-someone-in-status.md) can't see your profile or send you a contact request. -- Rejecting a request does not notify the sender. -- You can [turn off contact requests](./respond-to-a-contact-request#stop-contact-requests.md) to stop receiving any new requests. - -## Respond to a contact request - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. From the top navigation, tap :mobile-notification: **Notifications**, then tap **Contact request**. - 1. Tap **Accept** or **Decline** the contact request or tap **Review contact request**. If you decline, the sender doesn't receive any notification. - -:::tip -Tap the profile picture to view the sender's profile. -::: - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-chat: **Messages**. - 1. At the top of the content area, click :desktop-notification: **Notifications**, then click **Contact requests**. - 1. Click **Yes** or **No** to accept or decline the contact request, or click the request message to view details. If you decline, the sender doesn't receive any notification. - -:::tip -Click the profile picture to view the sender's profile. -::: - -:::tip -In Status, you can [label other users' profiles](./understand-status-profile-labels.md). For example, whether you accept or reject the contact request from someone, you can [block the user](./block-or-unblock-someone-in-status.md) or [mark the user as untrusted](./verify-your-contacts-identity.md). After you accept the request, you can [verify the user's identity](./verify-your-contacts-identity.md) or [mark the user as identity verified](./verify-your-contacts-identity.md). -::: - -## Stop receiving contact requests - -You can turn off receiving new contact requests using the Status mobile app. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture and go to :mobile-privacy: **Privacy and security**. - 1. In the **Privacy** list, find and turn off the **Allow new contact requests** option. diff --git a/apps/website/docs/your-profile-and-preferences/set-notification-exceptions.md b/apps/website/docs/your-profile-and-preferences/set-notification-exceptions.md deleted file mode 100644 index d01b5b2e..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-notification-exceptions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 352 -revision: '0' -language: en -title: Set notification exceptions ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-the-default-browser-in-status.md b/apps/website/docs/your-profile-and-preferences/set-the-default-browser-in-status.md deleted file mode 100644 index 8584e5b2..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-the-default-browser-in-status.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 645 -revision: '0' -language: en -title: Set the default browser in Status ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-up-and-customize-notification-exceptions.md b/apps/website/docs/your-profile-and-preferences/set-up-and-customize-notification-exceptions.md deleted file mode 100644 index 7fd9ab3f..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-up-and-customize-notification-exceptions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 352 -revision: '0' -language: en -title: Set up and customize notification exceptions ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-up-automatic-locking-for-the-status-app.md b/apps/website/docs/your-profile-and-preferences/set-up-automatic-locking-for-the-status-app.md deleted file mode 100644 index f0f452e0..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-up-automatic-locking-for-the-status-app.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 648 -revision: '0' -language: en -title: Set up automatic locking for the Status app ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-up-biometic-authentication.md b/apps/website/docs/your-profile-and-preferences/set-up-biometic-authentication.md deleted file mode 100644 index 0d19e37f..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-up-biometic-authentication.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 647 -revision: '0' -language: en -title: Set up biometric authentication ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-up-your-notification-settings.md b/apps/website/docs/your-profile-and-preferences/set-up-your-notification-settings.md deleted file mode 100644 index 29676f84..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-up-your-notification-settings.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 353 -revision: '0' -language: en -title: Set up your notification settings ---- diff --git a/apps/website/docs/your-profile-and-preferences/set-your-notification-exceptions.md b/apps/website/docs/your-profile-and-preferences/set-your-notification-exceptions.md deleted file mode 100644 index bdf98e92..00000000 --- a/apps/website/docs/your-profile-and-preferences/set-your-notification-exceptions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 352 -revision: '0' -language: en -title: Set your notification exceptions ---- diff --git a/apps/website/docs/your-profile-and-preferences/share-your-status-profile.md b/apps/website/docs/your-profile-and-preferences/share-your-status-profile.md deleted file mode 100644 index 6dcb2e94..00000000 --- a/apps/website/docs/your-profile-and-preferences/share-your-status-profile.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -id: 383 -revision: '0' -language: en -title: Share your Status profile ---- - -If someone wants to add you as a contact in Status, you need to share your profile with them. You can share your profile link or your QR code containing that link with your [chat key](./your-chatkey-emojihash-and-identicon-ring.md). They can use either of those to [add you to their contacts](./add-a-contact-in-status.md). - -## Share your Status profile - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. From the top navigation, tap :mobile-qr-code: **QR code**. - 1. Share your QR code or profile link with your future contact. You can also tap :mobile-share: **Share** to send your profile link to someone via SMS or a different app. - -=== "Desktop" - - 1. Click your profile picture in the bottom-left corner. - 1. Click :desktop-profile: **View my profile**. - 1. Share your QR code or profile link with your future contact. diff --git a/apps/website/docs/your-profile-and-preferences/sign-into-your-status-profile-on-a-new-device.md b/apps/website/docs/your-profile-and-preferences/sign-into-your-status-profile-on-a-new-device.md deleted file mode 100644 index af25bd3a..00000000 --- a/apps/website/docs/your-profile-and-preferences/sign-into-your-status-profile-on-a-new-device.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 617 -revision: '0' -language: en -title: Sign into your Status profile on a new device ---- diff --git a/apps/website/docs/your-profile-and-preferences/status-settings-reference.md b/apps/website/docs/your-profile-and-preferences/status-settings-reference.md deleted file mode 100644 index 8dca167a..00000000 --- a/apps/website/docs/your-profile-and-preferences/status-settings-reference.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 643 -revision: '0' -language: en -title: Status settings reference ---- diff --git a/apps/website/docs/your-profile-and-preferences/stay-anonymous-when-your-messages-are-forwarded.md b/apps/website/docs/your-profile-and-preferences/stay-anonymous-when-your-messages-are-forwarded.md deleted file mode 100644 index e2332c7b..00000000 --- a/apps/website/docs/your-profile-and-preferences/stay-anonymous-when-your-messages-are-forwarded.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 646 -revision: '0' -language: en -title: Register or add your ENS name in Status ---- diff --git a/apps/website/docs/your-profile-and-preferences/sync-your-profile-across-devices.md b/apps/website/docs/your-profile-and-preferences/sync-your-profile-across-devices.md deleted file mode 100644 index 10970d5e..00000000 --- a/apps/website/docs/your-profile-and-preferences/sync-your-profile-across-devices.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: 345 -revision: '0' -language: en -title: Sync your profile across devices ---- - -If you use Status on more than one device, sync your profile so that it's up to date on every device and you can switch between them seamlessly. Without syncing, you are likely to configure the same options more than once and receive multiple notifications for one single message. - -Currently, you can only set up syncing using the Status mobile app, but you can pair a computer using your phone. - -## What to expect - -- You can pair up to three devices. -- Once you set up the syncing, your Status profile data on your devices are in sync automatically until you unpair the devices. -- Your profile data include your message status (read or unread) and configuration for the profile, messaging, notification, wallets and browser. -- Your messages are not part of your profile data. When you sync a new device, only the messages sent or received in the last 30 days are available on your new device. Messages you receive from that initial sync are always available. -- If you have multiple profiles, you need to set up syncing for each one of them. - -## Sync your profile - -When setting up syncing, you need to reveal the QR code or sync code on the primarily used device and scan or enter the code on the other device. - -=== "Mobile" - - ### Step 1: Reveal the code for syncing on your main device - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture and go to :mobile-syncing: **Syncing**. - 1. Proceed depending on your situation. - - If you have never used Status on your other device before, tap :desktop-plus: **Add** and then tap :mobile-reveal: **Reveal sync code**. - - If you already use Status on your other device, find it in the **Not paired with this device** list and tap **Pair** next to it. - 1. Confirm your profile credentials. - - ### Step 2: Use the code on the other device - - - - 1. Configure your device's biometrics (fingerprint, face or other) to fill in your password. If you want to enable biometrics later, tap **Maybe later**. - 1. On the **profile identifiers** screen, you can learn more about your Status profile or tap **Skip** to finish the profile setup. - 1. Tap **Start using Status**. - - - | Device to sync | Steps | - | ------ | ----- | - | Doesn't run Status | 1. Install and open Status. 2. Tap **Sign in**. 3. Tap :mobile-camera: **Enable camera** to scan the QR code shown on your first device or tap **Enter sync code** to enter the sync code. 4. Wait for your devices to synchronize and tap **Continue**. 5. Configure your device's biometrics (fingerprint, face or other) to fill in your password. If you want to enable biometrics later, tap **Maybe later**. 6. On the **Enable notifiactions** screen, tap :iconset-notifications: **Enable notifications** and allow notifications from Status. Alternatively, tap **Maybe later**. | - | Running Status | 1. From the tab bar, tap :mobile-messages: **Messages**. 2. Tap your profile picture and go to :mobile-syncing: **Syncing**. 3. Tap :desktop-plus: **Add**. 4. Tap :mobile-scan: **Scan or enter sync code**. 5. Tap :mobile-camera: **Enable camera** to scan the QR code shown on your main device or tap **Enter sync code** to enter the sync code. | - -:::tip -During the syncing process, make sure Status is running on both devices and connected to the internet. Under the QR code, you can see the validity time of the QR code and the sync code. If the codes expire, confirm your profile credentials again and get new ones. -::: - -## Turn off profile syncing - -Turning off syncing degrades your experience with Status. But you can turn it off when you want to dispose of a device, or you see a device you don't recognize. - -=== "Mobile" - -1. In Status on one of your devices, tap your profile picture. -1. Tap :mobile-syncing: **Syncing**. -1. In the **Paired with this device** list, tap **Unpair**. -1. Tap **Unpair**. diff --git a/apps/website/docs/your-profile-and-preferences/understand-status-profile-labels.md b/apps/website/docs/your-profile-and-preferences/understand-status-profile-labels.md deleted file mode 100644 index 1a2bc89b..00000000 --- a/apps/website/docs/your-profile-and-preferences/understand-status-profile-labels.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: 393 -revision: '0' -language: en -title: Understand Status profile labels ---- - -In Status, you can label profiles as trusted or untrusted. This is useful when you want to be able to quickly tell your contacts from possible impersonators. - -Identity verification and profile labels help you keep in mind whether you should trust someone without alerting them to your decision. - -For example, if you're managing a corporate community and someone requests to join claiming to be an employee, you can try [verifying their identity](./verify-your-contacts-identity.md). If they fail to pass, you can mark them as untrusted but keep them in your contacts to understand who was trying to impersonate an employee and infiltrate your company's private community. - -:::info -To see a label on someone's profile, [mark this profile as trusted or untrusted](./verify-your-contacts-identity.md). -::: - -## The basics - -- You can mark your contacts' Status profiles with two labels: trusted or untrusted. -- Only you can set and see these labels on your Status contacts' profiles. The person you mark doesn't see the label and isn't notified about your decision. -- These labels have no impact on your contact's status. For example, if you mark a contact as untrusted, this doesn't remove them from your contact list. - -## Status profile labels - -If you're in doubt about your Status contact's identity, you can [send them an identity verification request](./verify-your-contacts-identity.md). In this request, you ask a question only this person can know the answer to. - -Depending on their response, you then mark them as trusted or untrusted. Once you do, a label appears next to their profile name: :mobile-trusted: Trusted or :mobile-untrusted: Untrusted. - -![There are several types of labels and label combinations you can use to mark someone else's profile.](/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-light.png) - -### :mobile-contact: Contact - -By default, those you add to your contacts get this label. - -### :mobile-trusted: Trusted - -If you mark your contact as trusted, this label appears on their profile. - -### :mobile-untrusted: Untrusted - -If you mark your contact as untrusted and remove them from your contact list, this label appears on their profile. - -### :mobile-untrusted::mobile-contact: Untrusted contact - -If you mark your contact as untrusted and keep them on your contact list, these two labels appear on their profile. - -### :mobile-blocked: Blocked - -Once you block someone, this label appears on their profile. diff --git a/apps/website/docs/your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md b/apps/website/docs/your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md deleted file mode 100644 index a30a7a5b..00000000 --- a/apps/website/docs/your-profile-and-preferences/understand-your-status-keys-and-recovery-phrase.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: 112 -revision: '0' -language: en -title: Understand your Status keys and recovery phrase ---- - -Your Status keys are essential in securing and authenticating your communication and transactions. Unlike centralized services that store usernames and passwords on servers, Status uses cryptographic keys for authentication and authorization. - -Using cryptographic keys, Status gives you complete control over your data. You don't need any personally identifiable information (like your email or phone number) to [create a Status profile](../getting-started/run-the-status-app-for-the-first-time.md), and your information is never shared or stored with third parties. - -:::tip -For common questions about your Status keys and recovery phrase, check out [FAQ: Status keys and recovery phrase](./faq-status-keys-and-recovery-phrase.md). -::: - -## About your Status keys - -When you [create a new Status profile](../getting-started/run-the-status-app-for-the-first-time.md), the Status app generates a public and a private cryptographic key (a key pair). In essence, these keys are large strings of characters securely stored on your device and protected by your Status password. - -:::warn -Status doesn't know your password and can't reset it for you. If [you forget your password](../if-you-lose-your-password-or-recovery-phrase.md), you may lose access to your Status profile and wallet funds. Remember your Status password, keep it in a safe place, and don't share it with anyone. -::: - -The Status app uses your private key to sign and encrypt your messages, making sure that only the intended recipient can read them and that no one can tamper with them. You should never share your private key. - -:::info -You can regenerate your private key on a different device using your [recovery phrase](#about-your-recovery-phrase). -::: - -Your public key is paired with your private key and identifies your Status profile and [Status wallet](../status-wallet/status-wallet-your-quick-start-guide.md) address. For this reason, you can freely share your public key without worry. While anyone can send you a message or a crypto transaction to your public key, you need your private key to confirm you're the intended recipient. - -Public and private keys function similarly to doors and keys in the physical world. Door keys are private and personal, but the door is public and visible to everyone. - -## About your recovery phrase - -A recovery phrase (also known as a seed phrase or backup phrase) is a set of words that can be used to regenerate your private key. If you lose or damage your device, you can restore access to your Status data and wallet funds using your recovery phrase on a new device. - -Because your recovery phrase can be used to regenerate your private key, you must keep your recovery phrase words always secure. - -:::warn -[If you lose your recovery phrase](../if-you-lose-your-password-or-recovery-phrase.md), you lose access to your data and wallet funds. Keep your recovery phrase safe, and never share this information with anyone. Status will never ask you for this information. -::: - -## Status chat key and wallet address - -The Status apps generates the first key pair (public and private keys) when you [create a new Status profile](../getting-started/run-the-status-app-for-the-first-time.md). From this master key pair, the app makes additional key pairs, such as the chat key and wallet address, which look similar but have different purposes. - -Your chat key is a long hexadecimal string (a hash code) part of your public Status profile. You share your chat key when you [add a contact](./add-a-contact-in-status.md) to start a conversation. You can also connect your chat key with an [ENS username](https://ens.domains/), like `alice.eth` or `alice.stateofus.eth`. - -Your [wallet address](../status-wallet/about-your-wallet-accounts-and-addresses.md) is a shortened form of your public key. This address is public and can be used to receive crypto. Some content creators and organisations show this address publicly on their websites to receive funds. diff --git a/apps/website/docs/your-profile-and-preferences/uninstall-status-desktop.md b/apps/website/docs/your-profile-and-preferences/uninstall-status-desktop.md deleted file mode 100644 index 0eb4d35b..00000000 --- a/apps/website/docs/your-profile-and-preferences/uninstall-status-desktop.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 600 -revision: '0' -language: en -title: Uninstall Status desktop ---- diff --git a/apps/website/docs/your-profile-and-preferences/verify-your-contacts-identity.md b/apps/website/docs/your-profile-and-preferences/verify-your-contacts-identity.md deleted file mode 100644 index a9c937d7..00000000 --- a/apps/website/docs/your-profile-and-preferences/verify-your-contacts-identity.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 392 -revision: '0' -language: en -title: Verify your contact's identity ---- diff --git a/apps/website/docs/your-profile-and-preferences/view-and-edit-your-status-profile.md b/apps/website/docs/your-profile-and-preferences/view-and-edit-your-status-profile.md deleted file mode 100644 index 4e4edfb9..00000000 --- a/apps/website/docs/your-profile-and-preferences/view-and-edit-your-status-profile.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -id: 531 -revision: '0' -language: en -title: View and edit your Status profile ---- - -:::info -Currently, some profile sections are not editable on Status desktop. Use the Status mobile app to edit them. -::: - -Your profile serves as a showcase of who you are to other Status users. You can make as many edits as you need, and the profile updates take effect instantly. - -:::tip -To see how your profile appears to others, check out [View your profile as someone else](./view-your-profile-as-someone-else.md). -::: - -## Edit your Status profile - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture. - 1. Tap **Edit profile**. - 1. Choose the area you want to edit and follow the corresponding procedure from this table: - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings**, and then click :desktop-profile: **Profile**. - 1. In the **Profile** content area, select **Edit**. - 1. Choose the area you want to edit and follow the corresponding procedure from this table: - -| Area to edit | Availability | -| :------------------------------------------------------------- | :----------------------------------------- | -| [Profile picture](./view-and-edit-your-status-profile#edit-profile-picture.md) | Mobile and desktop (limited functionality) | -| [Name, bio or accent colour](./view-and-edit-your-status-profile#edit-profile-info.md) | Mobile and desktop (limited functionality) | -| [Communities, accounts, collectibles or assets](./view-and-edit-your-status-profile#edit-showcase.md) | Mobile | -| [Web links](./view-and-edit-your-status-profile#manage-links.md) | Mobile and desktop | - -### Profile picture - -You can use a photo, an image or a collectible as your profile picture. If you use Status desktop, you can only choose an image from your computer. - -=== "Mobile" - - 1. Tap :mobile-camera: **Camera** in your profile picture. - 1. In the action sheet, choose :mobile-camera: **Take photo**, :mobile-image: **Select from gallery** or :mobile-nft: **Select collectible**. - 1. Authorize the Status app to access your camera or photo gallery. - 1. Set a profile picture and tap **Choose**. - -=== "Desktop" - - 1. Click :desktop-edit: **Edit** in your profile picture. - 1. Choose a picture from your computer. - 1. Adjust your picture size and click **Make this my profile picture**. - -### Name, bio or accent colour - -Use Status mobile if you want to edit the accent colour. - -=== "Mobile" - - 1. In the **Profile** list, choose the item to edit. - 1. Edit the content and click **Save**. - -=== "Desktop" - - 1. Update content in the **Display name** or **Bio** field. - 1. Click **Save changes**. - -### Communities, accounts, collectibles or assets - -Such information is hidden by default. You can choose what to reveal to different groups of Status users. - -=== "Mobile" - -1. In the **Showcase** list, choose **Communities**, **Accounts**, **Collectibles** or **Assets**. -1. Tap the item you want to edit. -1. Choose **Everyone**, **Contacts**, **ID verified contacts** or **No one**. - -:::warn -Be careful with sharing sensitive information to protect yourself against scams and fraud. -::: - -### Web links - -If you want to tell people more about yourself, you can display social media links and other web links on your profile. - -=== "Mobile" - - 1. In the **On the web** list, tap **Links**. - 1. Choose the action you want to complete and follow the steps from this table: - - | Action | Steps | - |:-------|:------| - | Add links | 1. Tap :mobile-add: **Add** and select the type of link to add. 2. If you want to add a website, type the name and URL. If you want to add your social media, type your username. 3. Tap **Save**.| - | Reorder links | In the **Links** list, hold and drag the item to the position you want. | - | Edit links | 1. Tap the link you want to edit. 2. Update the content and tap **Save**. | - | Delete links | 1. Swipe left over the link to delete and tap :mobile-delete: **Delete**. 2. Tap **Delete** again to confirm. | - -=== "Desktop" - - 1. Choose the action you want to complete. - 1. Follow the steps from this table: - - | Action | Steps | - |:-------|:------| - | Add links | 1. Scroll down and click **+ Add more links**. 2. Select the type of link to add. 3. If you want to add a website, type the URL. If you want to add your social media, type your username. 4. Click **Add**, then click **Save changes**. | - | Reorder links | 1. Scroll down and find the link to reorder. 2. Hold and drag the item to the position you want. | - | Edit links | 1. Scroll down and find the link to edit. 2. Click :desktop-edit: **Edit**. 3. Type the new content and click **Update**. 4. Click **Save changes**. | - | Delete links | 1. Scroll down and find the link to delete. 2. Click :desktop-edit: **Edit**. 3. Click **Delete**, then click **Save changes**. | diff --git a/apps/website/docs/your-profile-and-preferences/view-notifications-and-updates.md b/apps/website/docs/your-profile-and-preferences/view-notifications-and-updates.md deleted file mode 100644 index 5a7114b0..00000000 --- a/apps/website/docs/your-profile-and-preferences/view-notifications-and-updates.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 301 -revision: '0' -language: en -title: View notifications and updates ---- diff --git a/apps/website/docs/your-profile-and-preferences/view-your-profile-as-someone-else.md b/apps/website/docs/your-profile-and-preferences/view-your-profile-as-someone-else.md deleted file mode 100644 index 73d99538..00000000 --- a/apps/website/docs/your-profile-and-preferences/view-your-profile-as-someone-else.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -id: 591 -revision: '0' -language: en -title: View your profile as someone else ---- - -Your Status profile can reveal a lot about you. It's important to check if you're sharing the right details with the right people. For example, you may want to share more information with your Status contacts than with non-contacts. - -## View your profile as someone else - -The desktop version only shows a limited preview of your profile. Instead, use the mobile version. - -=== "Mobile" - - 1. From the tab bar, tap :mobile-messages: **Messages**. - 1. Tap your profile picture. - 1. Tap :mobile-reveal: **Reveal**. - 1. Tap the :mobile-dropdown: **Arrow** to view your profile as **Everyone**, **Contact** or **Verified contact**. - -=== "Desktop" - - 1. From the navigation sidebar, click :desktop-settings: **Settings**. - 1. Click :desktop-profile: **Profile**. - 1. In the **Profile** content area, select **Preview**. - -:::tip -If you want to make any changes, check out [View and edit your Status profile](./view-and-edit-your-status-profile.md). -::: diff --git a/apps/website/docs/your-profile-and-preferences/your-status-notification-guide.md b/apps/website/docs/your-profile-and-preferences/your-status-notification-guide.md deleted file mode 100644 index ff195bff..00000000 --- a/apps/website/docs/your-profile-and-preferences/your-status-notification-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 346 -revision: '0' -language: en -title: Your Status notification guide ---- diff --git a/apps/website/docs/your-profile-and-preferences/your-status-notifications-guide.md b/apps/website/docs/your-profile-and-preferences/your-status-notifications-guide.md deleted file mode 100644 index 8940395a..00000000 --- a/apps/website/docs/your-profile-and-preferences/your-status-notifications-guide.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -id: 346 -revision: '0' -language: en -title: Your Status notifications guide ---- diff --git a/apps/website/env.d.ts b/apps/website/env.d.ts deleted file mode 100644 index 0bd9db58..00000000 --- a/apps/website/env.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { clientEnv } from './src/config/env.client.mjs' -import type { serverEnv } from './src/config/env.server.mjs' - -type Env = typeof clientEnv & typeof serverEnv - -declare global { - namespace NodeJS { - /* eslint-disable @typescript-eslint/no-empty-interface */ - interface ProcessEnv extends Env {} - /* eslint-enable @typescript-eslint/no-empty-interface */ - } -} diff --git a/apps/website/next-env.d.ts b/apps/website/next-env.d.ts deleted file mode 100644 index 4f11a03d..00000000 --- a/apps/website/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/website/next.config.mjs b/apps/website/next.config.mjs deleted file mode 100644 index fca0364a..00000000 --- a/apps/website/next.config.mjs +++ /dev/null @@ -1,89 +0,0 @@ -/* eslint-disable eslint-comments/disable-enable-pair */ -/* eslint-disable import/default */ - -// For "Build dependencies behind this expression are ignored and might cause incorrect cache invalidation." warning -// @see https://github.com/contentlayerdev/contentlayer/issues/129#issuecomment-1080416633 - -import './src/config/env.server.mjs' -import './src/config/env.client.mjs' - -import tamaguiNextPlugin from '@tamagui/next-plugin' -import { withContentlayer } from 'next-contentlayer' -import { join } from 'node:path' - -const { withTamagui } = tamaguiNextPlugin - -/** @type {import('next').NextConfig} */ -let config = { - // output: 'export', - reactStrictMode: true, - pageExtensions: ['ts', 'tsx', 'md', 'mdx'], - - // runs on the root level - typescript: { - ignoreBuildErrors: true, - }, - eslint: { - ignoreDuringBuilds: true, - }, - - images: { - // disableStaticImages: true, - }, - transpilePackages: [ - // 'react-native', - 'react-native-web', - // 'expo-modules-core', - 'expo-blur', - // '@status-im/components', - // '@status-im/js', - ], - experimental: { - legacyBrowsers: false, - // esmExternals: 'loose', - scrollRestoration: true, - }, -} - -const plugins = [ - withContentlayer, - withTamagui({ - config: './tamagui.config.ts', - components: [ - // fixme?: works without it - // '@status-im/icons', - '@status-im/components', - // './node_modules/@status-im/components/packages/components/dist', - ], - importsWhitelist: ['constants.js', 'colors.js'], - logTimings: true, - disableExtraction: true, - // experiment - reduced bundle size react-native-web - useReactNativeWebLite: false, - shouldExtract: path => { - if (path.includes(join('packages', 'app'))) { - return true - } - }, - excludeReactNativeWebExports: [ - 'Switch', - 'ProgressBar', - 'Picker', - 'CheckBox', - 'Touchable', - 'Modal', - ], - }), - // withMDX, -] - -export default () => { - for (const plugin of plugins) { - config = { - ...config, - ...plugin(config), - } - } - - return config -} diff --git a/apps/website/package.json b/apps/website/package.json deleted file mode 100644 index 003fd25a..00000000 --- a/apps/website/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "name": "website", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "contentlayer build && next build", - "start": "next start", - "lint": "next lint", - "typecheck": "contentlayer build && tsc", - "clean": "rimraf .next .tamagui .turbo .vercel/output node_modules", - "preview": "next start --port 8151", - "codegen": "graphql-codegen -r dotenv/config --config codegen.yml", - "codegen:watch": "yarn run codegen -- --watch" - }, - "dependencies": { - "@mdx-js/react": "^2.3.0", - "@radix-ui/react-dialog": "^1.0.3", - "@radix-ui/react-navigation-menu": "^1.1.2", - "@react-spring/web": "^9.7.2", - "react-scroll-parallax": "^3.4.2", - "@scure/base": "^1.1.1", - "@status-im/colors": "*", - "@status-im/components": "*", - "@status-im/icons": "*", - "@status-im/js": "*", - "@tamagui/next-theme": "1.36.4", - "@tanstack/react-query": "^4.29.7", - "@vercel/og": "^0.5.4", - "@tryghost/content-api": "^1.11.13", - "@visx/visx": "^2.18.0", - "class-variance-authority": "^0.6.0", - "contentlayer": "^0.3.3", - "d3-array": "^3.2.3", - "d3-time-format": "^4.1.0", - "date-fns": "^2.30.0", - "highlight-words-core": "^1.2.2", - "minisearch": "^6.1.0", - "next": "13.2.4", - "next-contentlayer": "^0.3.3", - "qrcode.react": "^3.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-native-web": "^0.19.5", - "tinykeys": "^1.4.0", - "title": "^3.5.3", - "github-slugger": "^2.0.0", - "ts-pattern": "^4.3.0", - "zod": "^3.21.4" - }, - "devDependencies": { - "@achingbrain/ssdp": "^4.0.1", - "@graphql-codegen/cli": "^4.0.1", - "@graphql-codegen/import-types-preset": "^2.2.6", - "@graphql-codegen/typescript": "^4.0.1", - "@graphql-codegen/typescript-operations": "^4.0.1", - "@graphql-codegen/typescript-react-query": "^4.1.0", - "@status-im/eslint-config": "*", - "@tailwindcss/typography": "^0.5.9", - "@tamagui/next-plugin": "1.36.4", - "@types/d3-array": "^3.0.4", - "@types/d3-time-format": "^4.0.0", - "@types/highlight-words-core": "^1.2.1", - "@types/node": "^18.11.11", - "@types/react": "^18.0.33", - "@types/react-dom": "^18.0.11", - "@types/title": "^3.4.1", - "@vcarl/remark-headings": "^0.1.0", - "autoprefixer": "^10.4.14", - "mdast-util-to-string": "^3.2.0", - "postcss": "^8.4.21", - "remark": "^14.0.3", - "remark-breaks": "^3.0.3", - "remark-directive": "^2.0.1", - "remark-frontmatter": "^4.0.1", - "remark-gfm": "^3.0.1", - "remark-github-beta-blockquote-admonitions": "^1.1.0", - "rehype-slug": "^5.1.0", - "rehype-pretty-code": "^0.9.7", - "strip-markdown": "^5.0.1", - "shiki": "^0.14.2", - "tailwindcss": "^3.3.1", - "tailwindcss-animate": "^1.0.5", - "typescript": "^5.0.3", - "unist-util-visit": "^4.1.2", - "@types/tryghost__content-api": "^1.3.11", - "rehype-parse": "^8.0.4", - "rehype-react": "^7.2.0", - "rehype-stringify": "^9.0.3", - "unified": "^10.1.2" - }, - "engines": { - "node": "^18.x" - }, - "lint-staged": { - "*.{ts,tsx,js,jsx,mjs}": [ - "eslint", - "prettier --write" - ], - "*.{md,mdx,yml,yaml,json}": [ - "prettier --write" - ] - } -} diff --git a/apps/website/postcss.config.js b/apps/website/postcss.config.js deleted file mode 100644 index 33ad091d..00000000 --- a/apps/website/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/apps/website/public/assets/chart/empty.png b/apps/website/public/assets/chart/empty.png deleted file mode 100644 index e2a0b413..00000000 Binary files a/apps/website/public/assets/chart/empty.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-01.png b/apps/website/public/assets/communities/community-card-01.png deleted file mode 100644 index e1366e22..00000000 Binary files a/apps/website/public/assets/communities/community-card-01.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-02.png b/apps/website/public/assets/communities/community-card-02.png deleted file mode 100644 index 182ab449..00000000 Binary files a/apps/website/public/assets/communities/community-card-02.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-03.png b/apps/website/public/assets/communities/community-card-03.png deleted file mode 100644 index dacec056..00000000 Binary files a/apps/website/public/assets/communities/community-card-03.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-04.png b/apps/website/public/assets/communities/community-card-04.png deleted file mode 100644 index 2fbef741..00000000 Binary files a/apps/website/public/assets/communities/community-card-04.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-note-01.png b/apps/website/public/assets/communities/community-card-note-01.png deleted file mode 100644 index aa220c05..00000000 Binary files a/apps/website/public/assets/communities/community-card-note-01.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-note-02.png b/apps/website/public/assets/communities/community-card-note-02.png deleted file mode 100644 index 16b61e87..00000000 Binary files a/apps/website/public/assets/communities/community-card-note-02.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-note-03.png b/apps/website/public/assets/communities/community-card-note-03.png deleted file mode 100644 index 008e3e88..00000000 Binary files a/apps/website/public/assets/communities/community-card-note-03.png and /dev/null differ diff --git a/apps/website/public/assets/communities/community-card-note-04.png b/apps/website/public/assets/communities/community-card-note-04.png deleted file mode 100644 index b26af729..00000000 Binary files a/apps/website/public/assets/communities/community-card-note-04.png and /dev/null differ diff --git a/apps/website/public/assets/communities/feature-01.png b/apps/website/public/assets/communities/feature-01.png deleted file mode 100644 index 14890884..00000000 Binary files a/apps/website/public/assets/communities/feature-01.png and /dev/null differ diff --git a/apps/website/public/assets/communities/feature-02.png b/apps/website/public/assets/communities/feature-02.png deleted file mode 100644 index bcaf4963..00000000 Binary files a/apps/website/public/assets/communities/feature-02.png and /dev/null differ diff --git a/apps/website/public/assets/communities/feature-03.png b/apps/website/public/assets/communities/feature-03.png deleted file mode 100644 index db587bda..00000000 Binary files a/apps/website/public/assets/communities/feature-03.png and /dev/null differ diff --git a/apps/website/public/assets/communities/feature-04.png b/apps/website/public/assets/communities/feature-04.png deleted file mode 100644 index 61215752..00000000 Binary files a/apps/website/public/assets/communities/feature-04.png and /dev/null differ diff --git a/apps/website/public/assets/communities/feature-05.png b/apps/website/public/assets/communities/feature-05.png deleted file mode 100644 index f1facb04..00000000 Binary files a/apps/website/public/assets/communities/feature-05.png and /dev/null differ diff --git a/apps/website/public/assets/communities/hero-01.png b/apps/website/public/assets/communities/hero-01.png deleted file mode 100644 index 83a7a76e..00000000 Binary files a/apps/website/public/assets/communities/hero-01.png and /dev/null differ diff --git a/apps/website/public/assets/communities/hero-02.png b/apps/website/public/assets/communities/hero-02.png deleted file mode 100644 index 9ec0b9a1..00000000 Binary files a/apps/website/public/assets/communities/hero-02.png and /dev/null differ diff --git a/apps/website/public/assets/communities/hero-03.png b/apps/website/public/assets/communities/hero-03.png deleted file mode 100644 index fa8bc464..00000000 Binary files a/apps/website/public/assets/communities/hero-03.png and /dev/null differ diff --git a/apps/website/public/assets/communities/hero-04.png b/apps/website/public/assets/communities/hero-04.png deleted file mode 100644 index beb91578..00000000 Binary files a/apps/website/public/assets/communities/hero-04.png and /dev/null differ diff --git a/apps/website/public/assets/communities/illustration-main.png b/apps/website/public/assets/communities/illustration-main.png deleted file mode 100644 index 9d86e065..00000000 Binary files a/apps/website/public/assets/communities/illustration-main.png and /dev/null differ diff --git a/apps/website/public/assets/communities/section-01.png b/apps/website/public/assets/communities/section-01.png deleted file mode 100644 index ec5f0f0d..00000000 Binary files a/apps/website/public/assets/communities/section-01.png and /dev/null differ diff --git a/apps/website/public/assets/communities/section-02.png b/apps/website/public/assets/communities/section-02.png deleted file mode 100644 index 7400b756..00000000 Binary files a/apps/website/public/assets/communities/section-02.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/brand-turquoise-01.png b/apps/website/public/assets/create-community/brand-turquoise-01.png deleted file mode 100644 index fd15a832..00000000 Binary files a/apps/website/public/assets/create-community/brand-turquoise-01.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/brand-turquoise-02.png b/apps/website/public/assets/create-community/brand-turquoise-02.png deleted file mode 100644 index 2633bae2..00000000 Binary files a/apps/website/public/assets/create-community/brand-turquoise-02.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/brand-turquoise-03.png b/apps/website/public/assets/create-community/brand-turquoise-03.png deleted file mode 100644 index d08e0bbf..00000000 Binary files a/apps/website/public/assets/create-community/brand-turquoise-03.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/brand-turquoise-04.png b/apps/website/public/assets/create-community/brand-turquoise-04.png deleted file mode 100644 index 1f861b2b..00000000 Binary files a/apps/website/public/assets/create-community/brand-turquoise-04.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/brand-turquoise-05.png b/apps/website/public/assets/create-community/brand-turquoise-05.png deleted file mode 100644 index aaf2be85..00000000 Binary files a/apps/website/public/assets/create-community/brand-turquoise-05.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/feature-01.png b/apps/website/public/assets/create-community/feature-01.png deleted file mode 100644 index 50ada97c..00000000 Binary files a/apps/website/public/assets/create-community/feature-01.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/feature-02.png b/apps/website/public/assets/create-community/feature-02.png deleted file mode 100644 index 1d541634..00000000 Binary files a/apps/website/public/assets/create-community/feature-02.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/feature-03.png b/apps/website/public/assets/create-community/feature-03.png deleted file mode 100644 index f4726af7..00000000 Binary files a/apps/website/public/assets/create-community/feature-03.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/feature-04.png b/apps/website/public/assets/create-community/feature-04.png deleted file mode 100644 index ae39d8b3..00000000 Binary files a/apps/website/public/assets/create-community/feature-04.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/hero-01.png b/apps/website/public/assets/create-community/hero-01.png deleted file mode 100644 index b0c49fc5..00000000 Binary files a/apps/website/public/assets/create-community/hero-01.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/hero-02.png b/apps/website/public/assets/create-community/hero-02.png deleted file mode 100644 index 3f62ebd5..00000000 Binary files a/apps/website/public/assets/create-community/hero-02.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/hero-03.png b/apps/website/public/assets/create-community/hero-03.png deleted file mode 100644 index e122c699..00000000 Binary files a/apps/website/public/assets/create-community/hero-03.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/hero-04.png b/apps/website/public/assets/create-community/hero-04.png deleted file mode 100644 index 874ab358..00000000 Binary files a/apps/website/public/assets/create-community/hero-04.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/illustration-main.png b/apps/website/public/assets/create-community/illustration-main.png deleted file mode 100644 index 2655379a..00000000 Binary files a/apps/website/public/assets/create-community/illustration-main.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/screenshot-01.png b/apps/website/public/assets/create-community/screenshot-01.png deleted file mode 100644 index bbb81f83..00000000 Binary files a/apps/website/public/assets/create-community/screenshot-01.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/section-01.png b/apps/website/public/assets/create-community/section-01.png deleted file mode 100644 index 23b189d5..00000000 Binary files a/apps/website/public/assets/create-community/section-01.png and /dev/null differ diff --git a/apps/website/public/assets/create-community/section-02.png b/apps/website/public/assets/create-community/section-02.png deleted file mode 100644 index fafa57f4..00000000 Binary files a/apps/website/public/assets/create-community/section-02.png and /dev/null differ diff --git a/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-dark.png b/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-dark.png deleted file mode 100644 index f8f6b937..00000000 Binary files a/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-dark.png and /dev/null differ diff --git a/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-light.png b/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-light.png deleted file mode 100644 index 7581bf5b..00000000 Binary files a/apps/website/public/assets/docs/messaging-and-web3-browser/about-status-messages/125-0-1-light.png and /dev/null differ diff --git a/apps/website/public/assets/docs/messaging-and-web3-browser/format-your-messages/213-0-1.png b/apps/website/public/assets/docs/messaging-and-web3-browser/format-your-messages/213-0-1.png deleted file mode 100644 index 3327a959..00000000 Binary files a/apps/website/public/assets/docs/messaging-and-web3-browser/format-your-messages/213-0-1.png and /dev/null differ diff --git a/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-dark.png b/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-dark.png deleted file mode 100644 index cf77c7ae..00000000 Binary files a/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-dark.png and /dev/null differ diff --git a/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-light.png b/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-light.png deleted file mode 100644 index c1c1e8eb..00000000 Binary files a/apps/website/public/assets/docs/your-profile-and-preferences/understand-status-profile-labels/393-0-1-light.png and /dev/null differ diff --git a/apps/website/public/assets/favicon/blog.png b/apps/website/public/assets/favicon/blog.png deleted file mode 100644 index 2f8ffe74..00000000 Binary files a/apps/website/public/assets/favicon/blog.png and /dev/null differ diff --git a/apps/website/public/assets/favicon/default.png b/apps/website/public/assets/favicon/default.png deleted file mode 100644 index 2f8ffe74..00000000 Binary files a/apps/website/public/assets/favicon/default.png and /dev/null differ diff --git a/apps/website/public/assets/favicon/dev.png b/apps/website/public/assets/favicon/dev.png deleted file mode 100644 index 7e42a30d..00000000 Binary files a/apps/website/public/assets/favicon/dev.png and /dev/null differ diff --git a/apps/website/public/assets/favicon/learn.png b/apps/website/public/assets/favicon/learn.png deleted file mode 100644 index 1ea7d020..00000000 Binary files a/apps/website/public/assets/favicon/learn.png and /dev/null differ diff --git a/apps/website/public/assets/filters/empty.png b/apps/website/public/assets/filters/empty.png deleted file mode 100644 index 1f7de5aa..00000000 Binary files a/apps/website/public/assets/filters/empty.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/communities-01.png b/apps/website/public/assets/homepage/communities-01.png deleted file mode 100644 index 1aea82c8..00000000 Binary files a/apps/website/public/assets/homepage/communities-01.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/communities-03.png b/apps/website/public/assets/homepage/communities-03.png deleted file mode 100644 index c5c957da..00000000 Binary files a/apps/website/public/assets/homepage/communities-03.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/communities-04.png b/apps/website/public/assets/homepage/communities-04.png deleted file mode 100644 index 3fc94a2d..00000000 Binary files a/apps/website/public/assets/homepage/communities-04.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/illustration-dark-01.png b/apps/website/public/assets/homepage/illustration-dark-01.png deleted file mode 100644 index 0c3d95fe..00000000 Binary files a/apps/website/public/assets/homepage/illustration-dark-01.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/illustration-dark-02.png b/apps/website/public/assets/homepage/illustration-dark-02.png deleted file mode 100644 index 86438e1d..00000000 Binary files a/apps/website/public/assets/homepage/illustration-dark-02.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/illustration-keycard.png b/apps/website/public/assets/homepage/illustration-keycard.png deleted file mode 100644 index 0153ae91..00000000 Binary files a/apps/website/public/assets/homepage/illustration-keycard.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/messenger-02.png b/apps/website/public/assets/homepage/messenger-02.png deleted file mode 100644 index 23a3f064..00000000 Binary files a/apps/website/public/assets/homepage/messenger-02.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/messenger-03.png b/apps/website/public/assets/homepage/messenger-03.png deleted file mode 100644 index 4027edfd..00000000 Binary files a/apps/website/public/assets/homepage/messenger-03.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/messenger-04.png b/apps/website/public/assets/homepage/messenger-04.png deleted file mode 100644 index f1935b6c..00000000 Binary files a/apps/website/public/assets/homepage/messenger-04.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/section-01.png b/apps/website/public/assets/homepage/section-01.png deleted file mode 100644 index 57f02cea..00000000 Binary files a/apps/website/public/assets/homepage/section-01.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/wallet-01.png b/apps/website/public/assets/homepage/wallet-01.png deleted file mode 100644 index 180d84e9..00000000 Binary files a/apps/website/public/assets/homepage/wallet-01.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/wallet-02.png b/apps/website/public/assets/homepage/wallet-02.png deleted file mode 100644 index 08e11ccd..00000000 Binary files a/apps/website/public/assets/homepage/wallet-02.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/wallet-03.png b/apps/website/public/assets/homepage/wallet-03.png deleted file mode 100644 index b134d3cf..00000000 Binary files a/apps/website/public/assets/homepage/wallet-03.png and /dev/null differ diff --git a/apps/website/public/assets/homepage/wallet-04.png b/apps/website/public/assets/homepage/wallet-04.png deleted file mode 100644 index bbbec6ec..00000000 Binary files a/apps/website/public/assets/homepage/wallet-04.png and /dev/null differ diff --git a/apps/website/public/assets/jobs/codex.png b/apps/website/public/assets/jobs/codex.png deleted file mode 100644 index 03e6e9f4..00000000 Binary files a/apps/website/public/assets/jobs/codex.png and /dev/null differ diff --git a/apps/website/public/assets/jobs/logos.png b/apps/website/public/assets/jobs/logos.png deleted file mode 100644 index 3c8e0386..00000000 Binary files a/apps/website/public/assets/jobs/logos.png and /dev/null differ diff --git a/apps/website/public/assets/jobs/nimbus.png b/apps/website/public/assets/jobs/nimbus.png deleted file mode 100644 index 24c9c59e..00000000 Binary files a/apps/website/public/assets/jobs/nimbus.png and /dev/null differ diff --git a/apps/website/public/assets/jobs/vac.png b/apps/website/public/assets/jobs/vac.png deleted file mode 100644 index ce90b890..00000000 Binary files a/apps/website/public/assets/jobs/vac.png and /dev/null differ diff --git a/apps/website/public/assets/jobs/waku.png b/apps/website/public/assets/jobs/waku.png deleted file mode 100644 index 3c8e0386..00000000 Binary files a/apps/website/public/assets/jobs/waku.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-01.png b/apps/website/public/assets/messenger/feature-01.png deleted file mode 100644 index 32e92a60..00000000 Binary files a/apps/website/public/assets/messenger/feature-01.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-02.png b/apps/website/public/assets/messenger/feature-02.png deleted file mode 100644 index ce031aab..00000000 Binary files a/apps/website/public/assets/messenger/feature-02.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-03.png b/apps/website/public/assets/messenger/feature-03.png deleted file mode 100644 index c33f036e..00000000 Binary files a/apps/website/public/assets/messenger/feature-03.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-04.png b/apps/website/public/assets/messenger/feature-04.png deleted file mode 100644 index 88976cc4..00000000 Binary files a/apps/website/public/assets/messenger/feature-04.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-05.png b/apps/website/public/assets/messenger/feature-05.png deleted file mode 100644 index 05e167be..00000000 Binary files a/apps/website/public/assets/messenger/feature-05.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-06.png b/apps/website/public/assets/messenger/feature-06.png deleted file mode 100644 index 7ee2830a..00000000 Binary files a/apps/website/public/assets/messenger/feature-06.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-07.png b/apps/website/public/assets/messenger/feature-07.png deleted file mode 100644 index be8d64a0..00000000 Binary files a/apps/website/public/assets/messenger/feature-07.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-08.png b/apps/website/public/assets/messenger/feature-08.png deleted file mode 100644 index 4e4d743c..00000000 Binary files a/apps/website/public/assets/messenger/feature-08.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/feature-09.png b/apps/website/public/assets/messenger/feature-09.png deleted file mode 100644 index bc2eefbf..00000000 Binary files a/apps/website/public/assets/messenger/feature-09.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/hero-01.png b/apps/website/public/assets/messenger/hero-01.png deleted file mode 100644 index fcf0c5ad..00000000 Binary files a/apps/website/public/assets/messenger/hero-01.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/hero-02.png b/apps/website/public/assets/messenger/hero-02.png deleted file mode 100644 index f4bb7d4d..00000000 Binary files a/apps/website/public/assets/messenger/hero-02.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/hero-03.png b/apps/website/public/assets/messenger/hero-03.png deleted file mode 100644 index 0ef17969..00000000 Binary files a/apps/website/public/assets/messenger/hero-03.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/hero-04.png b/apps/website/public/assets/messenger/hero-04.png deleted file mode 100644 index 98c4a4b5..00000000 Binary files a/apps/website/public/assets/messenger/hero-04.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/identity-note.png b/apps/website/public/assets/messenger/identity-note.png deleted file mode 100644 index 5ef04e98..00000000 Binary files a/apps/website/public/assets/messenger/identity-note.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/illustration-security-01.png b/apps/website/public/assets/messenger/illustration-security-01.png deleted file mode 100644 index 0608f126..00000000 Binary files a/apps/website/public/assets/messenger/illustration-security-01.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/illustration-security-02.png b/apps/website/public/assets/messenger/illustration-security-02.png deleted file mode 100644 index 867e371b..00000000 Binary files a/apps/website/public/assets/messenger/illustration-security-02.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/section-01.png b/apps/website/public/assets/messenger/section-01.png deleted file mode 100644 index be1175bd..00000000 Binary files a/apps/website/public/assets/messenger/section-01.png and /dev/null differ diff --git a/apps/website/public/assets/messenger/section-02.png b/apps/website/public/assets/messenger/section-02.png deleted file mode 100644 index ea4d69b5..00000000 Binary files a/apps/website/public/assets/messenger/section-02.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/arbitrum.png b/apps/website/public/assets/wallet/arbitrum.png deleted file mode 100644 index a255d7bb..00000000 Binary files a/apps/website/public/assets/wallet/arbitrum.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/background-pattern.png b/apps/website/public/assets/wallet/background-pattern.png deleted file mode 100644 index 729e7cf5..00000000 Binary files a/apps/website/public/assets/wallet/background-pattern.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/border.png b/apps/website/public/assets/wallet/border.png deleted file mode 100644 index 160458a3..00000000 Binary files a/apps/website/public/assets/wallet/border.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/ethereum.png b/apps/website/public/assets/wallet/ethereum.png deleted file mode 100644 index 8c5703dd..00000000 Binary files a/apps/website/public/assets/wallet/ethereum.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/gentleman.png b/apps/website/public/assets/wallet/gentleman.png deleted file mode 100644 index 31884cff..00000000 Binary files a/apps/website/public/assets/wallet/gentleman.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/hands.png b/apps/website/public/assets/wallet/hands.png deleted file mode 100644 index d1da4ba6..00000000 Binary files a/apps/website/public/assets/wallet/hands.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/hero-01.png b/apps/website/public/assets/wallet/hero-01.png deleted file mode 100644 index c5a955d6..00000000 Binary files a/apps/website/public/assets/wallet/hero-01.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/hero-02.png b/apps/website/public/assets/wallet/hero-02.png deleted file mode 100644 index 7505fca9..00000000 Binary files a/apps/website/public/assets/wallet/hero-02.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/hero-03.png b/apps/website/public/assets/wallet/hero-03.png deleted file mode 100644 index 3e45f95f..00000000 Binary files a/apps/website/public/assets/wallet/hero-03.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/hero-04.png b/apps/website/public/assets/wallet/hero-04.png deleted file mode 100644 index 3f0eca75..00000000 Binary files a/apps/website/public/assets/wallet/hero-04.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/illustration-hands-desktop.png b/apps/website/public/assets/wallet/illustration-hands-desktop.png deleted file mode 100644 index d55e1fea..00000000 Binary files a/apps/website/public/assets/wallet/illustration-hands-desktop.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/illustration-hands-mobile.png b/apps/website/public/assets/wallet/illustration-hands-mobile.png deleted file mode 100644 index de7e8c55..00000000 Binary files a/apps/website/public/assets/wallet/illustration-hands-mobile.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/optimism.png b/apps/website/public/assets/wallet/optimism.png deleted file mode 100644 index ff2ae2d8..00000000 Binary files a/apps/website/public/assets/wallet/optimism.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/section-01.png b/apps/website/public/assets/wallet/section-01.png deleted file mode 100644 index 63857e59..00000000 Binary files a/apps/website/public/assets/wallet/section-01.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/section-02.png b/apps/website/public/assets/wallet/section-02.png deleted file mode 100644 index 59fd578f..00000000 Binary files a/apps/website/public/assets/wallet/section-02.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/section-03.png b/apps/website/public/assets/wallet/section-03.png deleted file mode 100644 index efff2e5b..00000000 Binary files a/apps/website/public/assets/wallet/section-03.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/section-04.png b/apps/website/public/assets/wallet/section-04.png deleted file mode 100644 index d33fd3cd..00000000 Binary files a/apps/website/public/assets/wallet/section-04.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/section-05.png b/apps/website/public/assets/wallet/section-05.png deleted file mode 100644 index 7b3bc39a..00000000 Binary files a/apps/website/public/assets/wallet/section-05.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/texture.png b/apps/website/public/assets/wallet/texture.png deleted file mode 100644 index 26e70ff0..00000000 Binary files a/apps/website/public/assets/wallet/texture.png and /dev/null differ diff --git a/apps/website/public/assets/wallet/vitalik.mp4 b/apps/website/public/assets/wallet/vitalik.mp4 deleted file mode 100644 index 1b23224f..00000000 Binary files a/apps/website/public/assets/wallet/vitalik.mp4 and /dev/null differ diff --git a/apps/website/public/assets/wallet/vitalik.webm b/apps/website/public/assets/wallet/vitalik.webm deleted file mode 100644 index 57100a12..00000000 Binary files a/apps/website/public/assets/wallet/vitalik.webm and /dev/null differ diff --git a/apps/website/public/docs/images/community.png b/apps/website/public/docs/images/community.png deleted file mode 100644 index 4f242aa4..00000000 Binary files a/apps/website/public/docs/images/community.png and /dev/null differ diff --git a/apps/website/public/docs/images/media.png b/apps/website/public/docs/images/media.png deleted file mode 100644 index 42e84c45..00000000 Binary files a/apps/website/public/docs/images/media.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/cog.png b/apps/website/public/images/illustrations/cog.png deleted file mode 100644 index 03d6a76e..00000000 Binary files a/apps/website/public/images/illustrations/cog.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/doge.png b/apps/website/public/images/illustrations/doge.png deleted file mode 100644 index 104f044c..00000000 Binary files a/apps/website/public/images/illustrations/doge.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/duck.png b/apps/website/public/images/illustrations/duck.png deleted file mode 100644 index 542a1dec..00000000 Binary files a/apps/website/public/images/illustrations/duck.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/flower.png b/apps/website/public/images/illustrations/flower.png deleted file mode 100644 index bfc43c1a..00000000 Binary files a/apps/website/public/images/illustrations/flower.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/hand.png b/apps/website/public/images/illustrations/hand.png deleted file mode 100644 index 69adfa5b..00000000 Binary files a/apps/website/public/images/illustrations/hand.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/lock.png b/apps/website/public/images/illustrations/lock.png deleted file mode 100644 index 716b5b0f..00000000 Binary files a/apps/website/public/images/illustrations/lock.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/megaphone.png b/apps/website/public/images/illustrations/megaphone.png deleted file mode 100644 index a49710ab..00000000 Binary files a/apps/website/public/images/illustrations/megaphone.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/mushroom.png b/apps/website/public/images/illustrations/mushroom.png deleted file mode 100644 index 9d92b096..00000000 Binary files a/apps/website/public/images/illustrations/mushroom.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/nft-frame.png b/apps/website/public/images/illustrations/nft-frame.png deleted file mode 100644 index 8e459627..00000000 Binary files a/apps/website/public/images/illustrations/nft-frame.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/pizza.png b/apps/website/public/images/illustrations/pizza.png deleted file mode 100644 index f87cf9b5..00000000 Binary files a/apps/website/public/images/illustrations/pizza.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/rubik-cube.png b/apps/website/public/images/illustrations/rubik-cube.png deleted file mode 100644 index 11eece23..00000000 Binary files a/apps/website/public/images/illustrations/rubik-cube.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/skull.png b/apps/website/public/images/illustrations/skull.png deleted file mode 100644 index 204182c7..00000000 Binary files a/apps/website/public/images/illustrations/skull.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/triangle.png b/apps/website/public/images/illustrations/triangle.png deleted file mode 100644 index 5492e0b4..00000000 Binary files a/apps/website/public/images/illustrations/triangle.png and /dev/null differ diff --git a/apps/website/public/images/illustrations/ufo.png b/apps/website/public/images/illustrations/ufo.png deleted file mode 100644 index b1c978bb..00000000 Binary files a/apps/website/public/images/illustrations/ufo.png and /dev/null differ diff --git a/apps/website/public/images/logo/blog.svg b/apps/website/public/images/logo/blog.svg deleted file mode 100644 index 5e99696b..00000000 --- a/apps/website/public/images/logo/blog.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/website/public/images/logo/default.svg b/apps/website/public/images/logo/default.svg deleted file mode 100644 index 5e99696b..00000000 --- a/apps/website/public/images/logo/default.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/website/public/images/logo/dev.svg b/apps/website/public/images/logo/dev.svg deleted file mode 100644 index ad98fc58..00000000 --- a/apps/website/public/images/logo/dev.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/website/public/images/logo/learn.svg b/apps/website/public/images/logo/learn.svg deleted file mode 100644 index 4fa1c9e2..00000000 --- a/apps/website/public/images/logo/learn.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/website/public/images/social/facebook.svg b/apps/website/public/images/social/facebook.svg deleted file mode 100644 index 2a5125f9..00000000 --- a/apps/website/public/images/social/facebook.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - diff --git a/apps/website/public/images/social/reddit.svg b/apps/website/public/images/social/reddit.svg deleted file mode 100644 index 2d747800..00000000 --- a/apps/website/public/images/social/reddit.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/apps/website/public/images/social/status.svg b/apps/website/public/images/social/status.svg deleted file mode 100644 index dcb755fb..00000000 --- a/apps/website/public/images/social/status.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/website/public/images/social/twitter.svg b/apps/website/public/images/social/twitter.svg deleted file mode 100644 index ef0369d1..00000000 --- a/apps/website/public/images/social/twitter.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/apps/website/public/images/stickers/cube.png b/apps/website/public/images/stickers/cube.png deleted file mode 100644 index 4d8e2c49..00000000 Binary files a/apps/website/public/images/stickers/cube.png and /dev/null differ diff --git a/apps/website/public/images/stickers/doge.png b/apps/website/public/images/stickers/doge.png deleted file mode 100644 index 616cc2e4..00000000 Binary files a/apps/website/public/images/stickers/doge.png and /dev/null differ diff --git a/apps/website/public/images/stickers/gamepad.png b/apps/website/public/images/stickers/gamepad.png deleted file mode 100644 index 96a7679f..00000000 Binary files a/apps/website/public/images/stickers/gamepad.png and /dev/null differ diff --git a/apps/website/public/images/stickers/grumpy-cat.png b/apps/website/public/images/stickers/grumpy-cat.png deleted file mode 100644 index bb861aeb..00000000 Binary files a/apps/website/public/images/stickers/grumpy-cat.png and /dev/null differ diff --git a/apps/website/public/images/stickers/megaphone.png b/apps/website/public/images/stickers/megaphone.png deleted file mode 100644 index d280a723..00000000 Binary files a/apps/website/public/images/stickers/megaphone.png and /dev/null differ diff --git a/apps/website/public/images/stickers/pizza.png b/apps/website/public/images/stickers/pizza.png deleted file mode 100644 index ec20b70d..00000000 Binary files a/apps/website/public/images/stickers/pizza.png and /dev/null differ diff --git a/apps/website/public/images/stickers/punk.png b/apps/website/public/images/stickers/punk.png deleted file mode 100644 index 78047fd8..00000000 Binary files a/apps/website/public/images/stickers/punk.png and /dev/null differ diff --git a/apps/website/public/images/stickers/smudge-cat.png b/apps/website/public/images/stickers/smudge-cat.png deleted file mode 100644 index 1f68281d..00000000 Binary files a/apps/website/public/images/stickers/smudge-cat.png and /dev/null differ diff --git a/apps/website/public/images/tags/community-20x20.png b/apps/website/public/images/tags/community-20x20.png deleted file mode 100644 index 2deefa8d..00000000 Binary files a/apps/website/public/images/tags/community-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tags/dapps-20x20.png b/apps/website/public/images/tags/dapps-20x20.png deleted file mode 100644 index 245b3cfa..00000000 Binary files a/apps/website/public/images/tags/dapps-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tags/developers-20x20.png b/apps/website/public/images/tags/developers-20x20.png deleted file mode 100644 index 216ba590..00000000 Binary files a/apps/website/public/images/tags/developers-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tags/news-and-announcements-20x20.png b/apps/website/public/images/tags/news-and-announcements-20x20.png deleted file mode 100644 index 1d87e2a9..00000000 Binary files a/apps/website/public/images/tags/news-and-announcements-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tags/privacy-security-20x20.png b/apps/website/public/images/tags/privacy-security-20x20.png deleted file mode 100644 index ae1a70f3..00000000 Binary files a/apps/website/public/images/tags/privacy-security-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tags/product-20x20.png b/apps/website/public/images/tags/product-20x20.png deleted file mode 100644 index f59e74b6..00000000 Binary files a/apps/website/public/images/tags/product-20x20.png and /dev/null differ diff --git a/apps/website/public/images/tokens/eth.png b/apps/website/public/images/tokens/eth.png deleted file mode 100644 index de7c0d52..00000000 Binary files a/apps/website/public/images/tokens/eth.png and /dev/null differ diff --git a/apps/website/public/images/tokens/pepe.png b/apps/website/public/images/tokens/pepe.png deleted file mode 100644 index 9f5fab92..00000000 Binary files a/apps/website/public/images/tokens/pepe.png and /dev/null differ diff --git a/apps/website/public/images/tokens/snt.png b/apps/website/public/images/tokens/snt.png deleted file mode 100644 index bf91bb47..00000000 Binary files a/apps/website/public/images/tokens/snt.png and /dev/null differ diff --git a/apps/website/public/media.png b/apps/website/public/media.png deleted file mode 100644 index 42e84c45..00000000 Binary files a/apps/website/public/media.png and /dev/null differ diff --git a/apps/website/src/components/admonition.tsx b/apps/website/src/components/admonition.tsx deleted file mode 100644 index 59fa398c..00000000 --- a/apps/website/src/components/admonition.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Shadow, Text } from '@status-im/components' -import { CustomizeIcon, InfoIcon, WarningIcon } from '@status-im/icons' -import { cva } from 'class-variance-authority' -import { match } from 'ts-pattern' - -import { getNodeText } from '@/utils/get-node-text' - -type Props = { - type: 'info' | 'tip' | 'warn' - children: string -} - -const Admonition = (props: Props) => { - const { type, children } = props - - return ( - -
- {match(type) - .with('info', () => ) - .with('tip', () => ) - .with('warn', () => ) - .exhaustive()} - - {type} - -
-
- {getNodeText(children)} -
-
- ) -} - -const styles = cva(['overflow-hidden rounded-xl border'], { - variants: { - type: { - info: 'border-customisation-blue/5 bg-customisation-blue/10', - tip: 'border-success-/5 bg-success-/10', - warn: 'border-customisation-orange/5 bg-customisation-orange/10', - }, - }, -}) - -export { Admonition } -export type { Props as InformationBoxProps } diff --git a/apps/website/src/components/breadcrumbs.tsx b/apps/website/src/components/breadcrumbs.tsx deleted file mode 100644 index 7b784b68..00000000 --- a/apps/website/src/components/breadcrumbs.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Fragment } from 'react' - -import { Text } from '@status-im/components' -import { ChevronRightIcon } from '@status-im/icons' -import { useRouter } from 'next/router' - -import { Link } from './link' - -type Props = { - items: { - label: string - href: string - }[] - action?: React.ReactElement -} - -const Breadcrumbs = (props: Props) => { - const { items, action = null } = props - - const { asPath } = useRouter() - const [rawPath] = asPath.split('#') - - return ( -
-
- {items.map((item, index) => { - const divider = - index > 0 ? ( - - ) : null - const active = item.href === rawPath - - if (active) { - return ( - - {divider} - - {item.label} - - - ) - } - - return ( - - {divider} - - - {item.label} - - - - ) - })} -
- - {action} -
- ) -} - -export { Breadcrumbs } -export type { Props as BreadcrumbsProps } diff --git a/apps/website/src/components/cards/border.tsx b/apps/website/src/components/cards/border.tsx deleted file mode 100644 index 00fc49f4..00000000 --- a/apps/website/src/components/cards/border.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export const Border = () => { - return ( - - - - ) -} diff --git a/apps/website/src/components/cards/grid-hero.tsx b/apps/website/src/components/cards/grid-hero.tsx deleted file mode 100644 index 2b3dda33..00000000 --- a/apps/website/src/components/cards/grid-hero.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import { cva } from 'class-variance-authority' -import Image from 'next/image' - -import type { StaticImageData } from 'next/image' - -// Variants for the grid hero class names -const biggerCardClassNames = cva( - [ - 'min-w-[350px] rounded-[40px]', - 'px-[22px] py-6 sm:min-w-0 sm:px-[35px] sm:py-[48px] lg:px-5 xl:px-[34px] xl:py-[68px] 2xl:px-[73px]', - ], - { - variants: { - color: { - yellow: ['bg-customisation-yellow/10'], - turquoise: ['bg-customisation-turquoise/10'], - purple: ['bg-customisation-purple/10'], - }, - }, - } -) - -const imagesWithBorders = cva(['border-4', 'rounded-3xl'], { - variants: { - color: { - yellow: ['border-customisation-yellow/5'], - turquoise: ['border-customisation-turquoise/5'], - purple: ['border-customisation-purple/5'], - }, - }, -}) - -const imagesWithBordersTopOrBottom = cva(['border-4', 'rounded-3xl'], { - variants: { - color: { - yellow: ['border-customisation-yellow/5'], - turquoise: ['border-customisation-turquoise/5'], - purple: ['border-customisation-purple/5'], - }, - alignment: { - top: ['border-t-0'], - bottom: ['border-b-0'], - }, - }, -}) - -const thirdCardClassNames = cva( - [ - 'flex min-w-[calc(50%-10px)] rounded-[40px]', - 'px-[22px] sm:min-w-0 sm:px-[35px] lg:px-5 xl:px-[34px] 2xl:px-[73px]', - ], - { - variants: { - color: { - yellow: ['bg-customisation-yellow/10'], - turquoise: ['bg-customisation-turquoise/10'], - purple: ['bg-customisation-purple/10'], - }, - alignment: { - top: [ - 'pt-0', - 'pb-6 sm:pb-[48px] xl:pb-[68px]', - 'items-start', - 'justify-start', - ], - bottom: [ - 'pb-0', - 'pt-6 sm:pt-[48px] xl:pt-[68px]', - 'items-end', - 'justify-end', - ], - }, - }, - } -) - -const fourthCardClassNames = cva( - [ - 'flex min-w-[calc(50%-10px)] rounded-[40px]', - 'grow items-center justify-center px-0 sm:px-5 md:px-10 lg:px-5 2xl:px-10', - ], - { - variants: { - color: { - yellow: ['bg-customisation-yellow/10'], - turquoise: ['bg-customisation-turquoise/10'], - purple: ['bg-customisation-purple/10'], - }, - }, - } -) - -type Props = { - color: 'yellow' | 'turquoise' | 'purple' - cardOne: { - image: StaticImageData - alt: string - } - cardTwo: { - image: StaticImageData - alt: string - } - cardThree: { - image: StaticImageData - alt: string - alignment?: 'top' | 'bottom' - } - cardFour: { - image: StaticImageData - alt: string - } -} - -const GridHero = (props: Props) => { - const { color, cardOne, cardTwo, cardThree, cardFour } = props - - return ( -
-
-
-
- {cardOne.alt} -
-
- {cardTwo.alt} -
-
-
-
- {cardThree.alt} -
-
- {cardFour.alt} -
-
-
-
- ) -} - -export { GridHero } diff --git a/apps/website/src/components/cards/index.ts b/apps/website/src/components/cards/index.ts deleted file mode 100644 index e99e87f0..00000000 --- a/apps/website/src/components/cards/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { GridHero } from './grid-hero' -export { Section } from './section' diff --git a/apps/website/src/components/cards/section.tsx b/apps/website/src/components/cards/section.tsx deleted file mode 100644 index d29f3c83..00000000 --- a/apps/website/src/components/cards/section.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { Text } from '@status-im/components' -import { PopupIcon } from '@status-im/icons' -import { cx } from 'class-variance-authority' -import Image from 'next/image' - -import { type Illustration, illustrations } from '@/config/illustrations' - -import { ScreenshotImage } from '../screenshot-image' - -import type { StaticImageData } from 'next/image' - -type Props = { - icon: Illustration - title: string - description: string - explanation?: string - secondaryTitle: string - secondaryDescription: string - secondaryExplanation?: string - image: StaticImageData - imageAlt: string - customNode?: React.ReactNode - color: 'yellow' | 'turquoise' | 'purple' // | 'none' - reverse?: boolean - dark?: boolean -} - -const Section = (props: Props) => { - const { - title, - color, - description, - explanation, - image, - imageAlt, - icon, - secondaryDescription, - secondaryTitle, - secondaryExplanation, - reverse, - dark = false, - } = props - - const illustration = illustrations[icon] - - return ( -
-
-
-
-
- {illustration.alt} -
- - {title} - -
- - {description} - {explanation && ( - - - - )} - -
-
- -
- - {secondaryTitle} - -
- - {secondaryDescription} - {secondaryExplanation && ( - - - - )} - -
- - {props.customNode && ( -
{props.customNode}
- )} -
-
-
- -
- -
-
-
-
- ) -} - -export { Section } diff --git a/apps/website/src/components/chart/chart.tsx b/apps/website/src/components/chart/chart.tsx deleted file mode 100644 index 04ef14b9..00000000 --- a/apps/website/src/components/chart/chart.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Stack } from '@tamagui/core' -import { ParentSize } from '@visx/responsive' - -import { ChartComponent, Loading } from './components' - -type DayType = { - date: string - open_issues: number - closed_issues: number -} - -interface Props { - data: DayType[] - height?: number - isLoading?: boolean -} - -const Chart = (props: Props) => { - const { data, isLoading, ...rest } = props - - if (isLoading) { - return ( - - - - ) - } - - return ( - - {({ width }) => { - return - }} - - ) -} - -export { Chart } -export type { Props as ChartProps, DayType } diff --git a/apps/website/src/components/chart/components/areas.tsx b/apps/website/src/components/chart/components/areas.tsx deleted file mode 100644 index 6021330a..00000000 --- a/apps/website/src/components/chart/components/areas.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { animated } from '@react-spring/web' -import { curveBasis } from '@visx/curve' -import { LinearGradient } from '@visx/gradient' -import { AreaClosed } from '@visx/shape' - -import { colors } from './chart-component' - -import type { SpringValue } from '@react-spring/web' -import type { ScaleLinear, ScaleTime } from 'd3-scale' - -type Datum = { - date: Date - value: number -} - -type Props = { - yScale: ScaleLinear - xScale: ScaleTime - totalIssuesData: Datum[] - closedIssuesData: Datum[] - clipPathAnimation: { - clipPath: SpringValue - } -} - -const AnimatedAreaClosed = animated(AreaClosed) - -const Areas = (props: Props) => { - const { - clipPathAnimation, - closedIssuesData, - totalIssuesData, - xScale, - yScale, - } = props - return ( - <> - - - - - - {/* Total issues area */} - { - const datum = d as Datum - return xScale(datum.date) - }} - y={d => { - const datum = d as Datum - return yScale(datum.value) - }} - yScale={yScale} - fill="url(#gradient)" - curve={curveBasis} - style={{ ...clipPathAnimation, zIndex: 10 }} - /> - - {/* Closed issues area */} - { - const datum = d as Datum - return xScale(datum.date) - }} - y={d => { - const datum = d as Datum - return yScale(datum.value) - }} - yScale={yScale} - fill="url(#gradient-open)" - curve={curveBasis} - style={{ ...clipPathAnimation, zIndex: 10 }} - /> - - ) -} - -export { Areas } diff --git a/apps/website/src/components/chart/components/assets/index.tsx b/apps/website/src/components/chart/components/assets/index.tsx deleted file mode 100644 index ba63637f..00000000 --- a/apps/website/src/components/chart/components/assets/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { LineA } from './line-a' -export { LineB } from './line-b' diff --git a/apps/website/src/components/chart/components/assets/line-a.tsx b/apps/website/src/components/chart/components/assets/line-a.tsx deleted file mode 100644 index 926e4cc1..00000000 --- a/apps/website/src/components/chart/components/assets/line-a.tsx +++ /dev/null @@ -1,15 +0,0 @@ -const LineA = () => { - return ( - - - - ) -} - -export { LineA } diff --git a/apps/website/src/components/chart/components/assets/line-b.tsx b/apps/website/src/components/chart/components/assets/line-b.tsx deleted file mode 100644 index 7318de3b..00000000 --- a/apps/website/src/components/chart/components/assets/line-b.tsx +++ /dev/null @@ -1,15 +0,0 @@ -const LineB = () => { - return ( - - - - ) -} - -export { LineB } diff --git a/apps/website/src/components/chart/components/chart-component.tsx b/apps/website/src/components/chart/components/chart-component.tsx deleted file mode 100644 index 6e9a76a8..00000000 --- a/apps/website/src/components/chart/components/chart-component.tsx +++ /dev/null @@ -1,238 +0,0 @@ -import { useMemo } from 'react' - -import { animated } from '@react-spring/web' -import { Axis } from '@visx/axis' -import { GridColumns } from '@visx/grid' -import { Group } from '@visx/group' -import { scaleLinear, scaleTime } from '@visx/scale' -import { extent, max } from 'd3-array' - -import { getClosedIssues, getTotalIssues } from '../helpers/get-data' -import { useAnimations, useChartTooltip } from '../hooks/' -import { format } from '../utils/format-time' -import { Areas } from './areas' -import { ChartTooltip } from './chart-tooltip' -import { Lines } from './lines' -import { Markers } from './markers' - -import type { DayType } from '../chart' - -// defining colors -export const colors = { - total: '#E95460', - closed: '#23ADA0', - background: '#F0F2F5', - marker: '#09101C', - totalGradient: 'rgba(233, 84, 96, 0.3)', - closedGradient: 'rgba(35, 173, 160, 0.3)', - white: '#FFF', -} as const - -interface Props { - data: DayType[] - height?: number - width?: number -} - -const AnimatedGridColumns = animated(GridColumns) - -const ChartComponent = (props: Props): JSX.Element => { - const { data, width: defaultWidth, height: defaultHeight } = props - - // Extract dates, open issues, and closed issues from data - const dates = data.map(d => new Date(d.date)) - - // Define dimensions - const height = defaultHeight || 300 - const width = defaultWidth || 300 - const margin = { top: 20, right: 0, bottom: 30, left: 26 } - const innerWidth = (width || 0) - margin.left - margin.right - const innerHeight = height - margin.top - margin.bottom - - const filteredDates = dates.filter(Boolean) // filters out undefined values - // Calculate total issues by summing open and closed issues - const totalIssues = data.map(d => d.open_issues + d.closed_issues) - - const xDomain = extent(filteredDates) as [Date, Date] - const xScale = scaleTime({ - domain: xDomain, - range: [0, innerWidth], - }) - - const numTicksBottom = Math.min(data.length, 12) - - const yScale = scaleLinear({ - domain: [0, max(totalIssues) || 0], - range: [ - innerHeight, - totalIssues.every(issue => issue === 0) ? innerHeight : 0, - ], // Adjusted the range to start from innerHeight instead of 0 - nice: true, - }) - - const { tooltipData, updateTooltip, hideTooltip, tooltipOpen } = - useChartTooltip({ - data, - margin, - dates, - innerWidth, - }) - - const { - circleSpringClosed, - circleSpringTotal, - clipPathAnimation, - drawingGridColumns, - drawingLineStyle, - opacityAnimation, - tooltipAnimation, - } = useAnimations({ - data, - margin, - innerHeight, - tooltipData, - yScale, - xScale, - }) - - // Convert data to array of objects with `date` and `value` properties - const totalIssuesData = useMemo( - () => - data.map(d => ({ - date: new Date(d.date), - value: getTotalIssues(d), - })), - [data] - ) - - const closedIssuesData = useMemo( - () => - data.map(d => ({ - date: new Date(d.date), - value: getClosedIssues(d), - })), - [data] - ) - - return ( -
- - - {/* x-axis */} - { - const textAnchor = - index === 0 - ? 'start' - : index === data.length - 1 - ? 'end' - : 'middle' - return { - dy: '.33em', - fill: '#A1ABBD', - fontFamily: 'Menlo', - fontSize: 11, - textAnchor, - } - }} - tickFormat={value => { - if (typeof value === 'number') { - return value.toString() // Handle number values - } else if (value instanceof Date) { - // Specify the desired date format - return format(value) // Handle date values - } else { - return '' - } - }} - /> - {/* y-axis */} - ( - - {formattedValue} - - )} - /> - - - - - - - - {tooltipOpen && ( - - )} - hideTooltip()} - /> - - - {/* render a tooltip */} - {tooltipOpen && ( - - )} -
- ) -} - -export { ChartComponent } diff --git a/apps/website/src/components/chart/components/chart-tooltip.tsx b/apps/website/src/components/chart/components/chart-tooltip.tsx deleted file mode 100644 index 37688eba..00000000 --- a/apps/website/src/components/chart/components/chart-tooltip.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { animated } from '@react-spring/web' -import { Text } from '@status-im/components' -import { DoneIcon, OpenIcon } from '@status-im/icons' -import { Stack } from '@tamagui/core' -import { defaultStyles, TooltipWithBounds } from '@visx/tooltip' - -import type { TooltipData } from '../hooks/use-chart-tooltip' -import type { SpringValue } from '@react-spring/web' - -const AnimatedTooltip = animated(TooltipWithBounds) - -type Props = { - tooltipData: TooltipData - opacityAnimation: { - opacity: SpringValue - } - tooltipAnimation: { - x: SpringValue - y: SpringValue - } -} - -// defining tooltip styles -const tooltipStyles: React.CSSProperties = { - ...defaultStyles, - minWidth: 272, - padding: 12, - backgroundColor: '#FFF', - border: '1px solid #F0F2F5', - boxShadow: '0px 2px 20px rgba(9, 16, 28, 0.04)', - borderRadius: 20, - marginLeft: 25, -} - -const ChartTooltip = (props: Props) => { - const { tooltipData, opacityAnimation, tooltipAnimation } = props - return ( - - - - {tooltipData.totalIssues} - - - - issues - - - - - - {tooltipData.formattedDate} - - - - - - - - - - - {tooltipData.openIssues} open - - - - - {`${tooltipData.openIssuesPercentage}%`} - - - - - - - - {tooltipData.closedIssues} closed - - - - - {`${tooltipData.completedIssuesPercentage}%`} - - - - - ) -} - -export { ChartTooltip } diff --git a/apps/website/src/components/chart/components/empty.tsx b/apps/website/src/components/chart/components/empty.tsx deleted file mode 100644 index e4739d45..00000000 --- a/apps/website/src/components/chart/components/empty.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Image, Text } from '@status-im/components' - -import { LineA, LineB } from './assets' - -const Empty = () => { - return ( -
-
-
- -
- - No results found - -
- - Try adjusting your search or filter to find what you’re looking for. - -
-
- -
-
- -
-
-
- {Array.from({ length: 12 }).map((_, i) => ( -
- ))} -
-
-
- ) -} - -export { Empty } diff --git a/apps/website/src/components/chart/components/index.tsx b/apps/website/src/components/chart/components/index.tsx deleted file mode 100644 index 5ebd09e1..00000000 --- a/apps/website/src/components/chart/components/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export { ChartComponent } from './chart-component' -export { Empty } from './empty' -export { Loading } from './loading' diff --git a/apps/website/src/components/chart/components/lines.tsx b/apps/website/src/components/chart/components/lines.tsx deleted file mode 100644 index cf04f077..00000000 --- a/apps/website/src/components/chart/components/lines.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { animated } from '@react-spring/web' -import { curveBasis } from '@visx/curve' -import { LinePath } from '@visx/shape' - -import { colors } from './chart-component' - -import type { SpringValue } from '@react-spring/web' -import type { ScaleLinear, ScaleTime } from 'd3-scale' - -type Datum = { - date: Date - value: number -} - -type Props = { - yScale: ScaleLinear - xScale: ScaleTime - totalIssuesData: Datum[] - closedIssuesData: Datum[] - drawingLineStyle: { - strokeDasharray: SpringValue - } -} - -const AnimatedLinePath = animated(LinePath) - -const Lines = (props: Props) => { - const { - closedIssuesData, - drawingLineStyle, - xScale, - yScale, - totalIssuesData, - } = props - return ( - <> - {/* Total issues line */} - { - const datum = d as Datum - return xScale(datum.date) - }} - y={d => { - const datum = d as Datum - return yScale(datum.value) - }} - stroke={colors.total} - strokeWidth={2} - curve={curveBasis} - style={drawingLineStyle} - /> - - {/* Closed issues line */} - { - const datum = d as Datum - return xScale(datum.date) - }} - y={d => { - const datum = d as Datum - return yScale(datum.value) - }} - stroke={colors.closed} - strokeWidth={2} - curve={curveBasis} - style={drawingLineStyle} - /> - - ) -} -export { Lines } diff --git a/apps/website/src/components/chart/components/loading.tsx b/apps/website/src/components/chart/components/loading.tsx deleted file mode 100644 index 1c9f1492..00000000 --- a/apps/website/src/components/chart/components/loading.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Skeleton } from '@status-im/components' - -const Loading = () => { - return ( -
-
-
-
- {Array.from({ length: 5 }).map((_, i) => ( - - ))} -
-
- {Array.from({ length: 12 }).map((_, i) => ( -
- ))} -
-
-
- {Array.from({ length: 12 }).map((_, i) => ( - - ))} -
-
- ) -} - -export { Loading } diff --git a/apps/website/src/components/chart/components/markers.tsx b/apps/website/src/components/chart/components/markers.tsx deleted file mode 100644 index 66a2b3a2..00000000 --- a/apps/website/src/components/chart/components/markers.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { animated } from '@react-spring/web' -import { GlyphCircle } from '@visx/glyph' -import { Group } from '@visx/group' -import { Line } from '@visx/shape' - -import { colors } from './chart-component' - -import type { SpringValue } from '@react-spring/web' - -type Props = { - innerHeight: number - circleSpringTotal: { - x: SpringValue - y: SpringValue - } - opacityAnimation: { - opacity: SpringValue - } - circleSpringClosed: { - x: SpringValue - y: SpringValue - } -} - -const AnimatedCircle = animated(GlyphCircle) -const AnimatedLine = animated(Line) -const AnimatedGroup = animated(Group) - -const Markers = (props: Props) => { - const { - innerHeight, - circleSpringTotal, - opacityAnimation, - circleSpringClosed, - } = props - - return ( - <> - - - - - - - ) -} - -export { Markers } diff --git a/apps/website/src/components/chart/helpers/get-data.ts b/apps/website/src/components/chart/helpers/get-data.ts deleted file mode 100644 index 6e056f2c..00000000 --- a/apps/website/src/components/chart/helpers/get-data.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { DayType } from '../chart' - -/** - * Gets the total issues of a day - * @param d - the day to get the total issues - * @returns the total issues of a day - **/ -export const getTotalIssues = (d: DayType) => d?.open_issues + d?.closed_issues - -/** - * Gets the closed issues of a day - * @param d - the day to get the closes issues - * @returns the total issues of a day - **/ -export const getClosedIssues = (d: DayType) => d?.closed_issues diff --git a/apps/website/src/components/chart/hooks/index.ts b/apps/website/src/components/chart/hooks/index.ts deleted file mode 100644 index 776ee0fe..00000000 --- a/apps/website/src/components/chart/hooks/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { useAnimations } from './use-animations' -export { useChartTooltip } from './use-chart-tooltip' diff --git a/apps/website/src/components/chart/hooks/use-animations.ts b/apps/website/src/components/chart/hooks/use-animations.ts deleted file mode 100644 index 28ce1354..00000000 --- a/apps/website/src/components/chart/hooks/use-animations.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { config, useSpring } from '@react-spring/web' - -import type { DayType } from '../chart' -import type { TooltipData } from './use-chart-tooltip' -import type { ScaleLinear, ScaleTime } from 'd3-scale' - -type Props = { - data: DayType[] - yScale: ScaleLinear - xScale: ScaleTime - margin: { - top: number - right: number - bottom: number - left: number - } - innerHeight: number - tooltipData: TooltipData -} - -/** - * An custom hook that handles animations logic - * @param data - the data to be used in the chart - * @param margin - the margin of the chart - * @param dates - the dates of the chart - * @param innerHeight - the inner height of the chart - * @param xScale - the xScale of the chart - * @param yScale - the yScale of the chart - * @param tooltipData - the data to be used in the tooltip - - - * @returns circleSpringTotal - the spring animation for the total issues circle - * @returns circleSpringClosed - the spring animation for the closed issues circle - * @returns opacityAnimation - the spring animation for the some chart elements opacity - * @returns tooltipAnimation - the spring animation for the tooltip - * @returns drawingLineStyle - the spring animation for the drawing line style - * @returns drawingGridColumns - the spring animation for the drawing grid columns - * @returns clipPathAnimation - the spring animation for the clip path - **/ - -const useAnimations = (props: Props) => { - const { data, margin, innerHeight, tooltipData, xScale, yScale } = props - - // Define spring for circle position - const circleSpringTotal = useSpring({ - x: xScale(new Date(tooltipData?.date || '')), - y: yScale(tooltipData?.totalIssues), - config: config.gentle, - }) - - const circleSpringClosed = useSpring({ - x: xScale(new Date(tooltipData?.date)), - y: yScale(tooltipData?.closedIssues), - config: config.gentle, - }) - - const opacityAnimation = useSpring({ - opacity: data ? 1 : 0, - config: config.gentle, - delay: 200, - }) - - const tooltipAnimation = useSpring({ - x: xScale(new Date(tooltipData?.date)), - y: innerHeight + margin.top + margin.bottom, - config: config.gentle, - }) - - const [drawingLineStyle] = useSpring(() => ({ - from: { strokeDasharray: `${3000}, ${0}` }, - to: { strokeDasharray: `${0}, ${3000}` }, - reverse: true, - config: { duration: 2000 }, - })) - - const [drawingGridColumns] = useSpring(() => ({ - from: { strokeDasharray: `0, 150` }, - to: { strokeDasharray: '4,2' }, - config: { duration: 250 }, - })) - - const [clipPathAnimation] = useSpring(() => ({ - from: { clipPath: 'inset(0 100% 0 0)' }, - to: { clipPath: 'inset(0 0 0 0)' }, - config: { duration: 800 }, - })) - - return { - circleSpringTotal, - circleSpringClosed, - opacityAnimation, - tooltipAnimation, - drawingLineStyle, - drawingGridColumns, - clipPathAnimation, - } -} - -export { useAnimations } diff --git a/apps/website/src/components/chart/hooks/use-chart-tooltip.ts b/apps/website/src/components/chart/hooks/use-chart-tooltip.ts deleted file mode 100644 index 2420c337..00000000 --- a/apps/website/src/components/chart/hooks/use-chart-tooltip.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { useCallback } from 'react' - -import { localPoint } from '@visx/event' -import { scaleTime } from '@visx/scale' -import { useTooltip } from '@visx/tooltip' -import { bisector, extent } from 'd3-array' - -import { getClosedIssues, getTotalIssues } from '../helpers/get-data' -import { formatDate } from '../utils/format-time' -import { getPercentage } from '../utils/get-percentage' - -import type { DayType } from '../chart' -import type { EventType } from '@visx/event/lib/types' - -type Props = { - data: DayType[] - dates: Date[] - innerWidth: number - margin: { - top: number - right: number - bottom: number - left: number - } -} - -type TooltipData = { - date: string - completedIssuesPercentage: number - openIssuesPercentage: number - totalIssues: number - openIssues: number - closedIssues: number - formattedDate: string -} - -/** - * An custom hook that handles the tooltip logic - * @param data - the data to be used in the chart - * @param margin - the margin of the chart - * @param dates - the dates of the chart - * @param innerWidth - the inner width of the chart - - * @returns tooltipData - the data to be used in the tooltip - * @returns updateTooltip - a function that updates the tooltip - * @returns hideTooltip - a function that hides the tooltip - * @returns tooltipOpen - a boolean that indicates if the tooltip is open - **/ - -const useChartTooltip = (props: Props) => { - const { data, margin, dates, innerWidth } = props - - // tooltip parameters - const { tooltipData, showTooltip, hideTooltip, tooltipOpen } = - useTooltip({ - tooltipData: { - date: '', - completedIssuesPercentage: 0, - openIssuesPercentage: 0, - totalIssues: 0, - openIssues: 0, - closedIssues: 0, - formattedDate: '', - }, - }) - - const filteredDates = dates.filter(Boolean) // filters out undefined values - - const getDate = useCallback((d: DayType) => new Date(d?.date), []) - const bisectDate = bisector((d: DayType) => new Date(d?.date)).left - - const xDomain = extent(filteredDates) as [Date, Date] - const xScale = scaleTime({ - domain: xDomain, - range: [0, innerWidth], - }) - - // Define tooltip handler - const updateTooltip = useCallback( - (event: EventType) => { - const { x } = localPoint(event) || { x: 0 } - const x0 = xScale.invert(x - margin.left) - - const index = bisectDate(data, x0, 1) - const d0 = data[index - 1] - const d1 = data[index] - let d = d0 - - if (d1 && getDate(d1)) { - d = - x0.valueOf() - getDate(d0).valueOf() > - getDate(d1).valueOf() - x0.valueOf() - ? d1 - : d0 - } - - const closedIssues = getClosedIssues(d) - const totalIssues = getTotalIssues(d) - const openIssues = totalIssues - closedIssues - - const completedIssuesPercentage = - getPercentage(closedIssues, totalIssues) || 0 - - const openIssuesPercentage = getPercentage(openIssues, totalIssues) || 0 - - showTooltip({ - tooltipData: { - date: d?.date, - formattedDate: formatDate(getDate(d)), - completedIssuesPercentage, - openIssuesPercentage, - closedIssues, - totalIssues, - openIssues, - }, - }) - }, - [xScale, margin.left, bisectDate, data, getDate, showTooltip] - ) - - return { - tooltipData: tooltipData!, - hideTooltip, - updateTooltip, - tooltipOpen, - } -} - -export { useChartTooltip } -export type { TooltipData, Props as UseChartTooltipProps } diff --git a/apps/website/src/components/chart/utils/format-time.ts b/apps/website/src/components/chart/utils/format-time.ts deleted file mode 100644 index 918041cf..00000000 --- a/apps/website/src/components/chart/utils/format-time.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { timeFormat } from 'd3-time-format' - -/** - * Util functions that formats a date - * formatDate @returns a string with the format 'MMM dd yyyy' - Ex: Jan 01 2021 - **/ -export const formatDate = timeFormat('%b %d %Y') - -/** - * Util functions that formats a date - * format @returns a string with the format 'dd MMM' - Ex: 01 Jan - **/ -export const format = timeFormat('%d %b') diff --git a/apps/website/src/components/chart/utils/get-percentage.ts b/apps/website/src/components/chart/utils/get-percentage.ts deleted file mode 100644 index c174e4c2..00000000 --- a/apps/website/src/components/chart/utils/get-percentage.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * An util function that gets the percentage of a value from a total - * @param value - the value to calculate the percentage - * @param total - the total value - **/ - -export const getPercentage = (value: number, total: number): number => - Math.round((value / total) * 100) diff --git a/apps/website/src/components/coming-soon.tsx b/apps/website/src/components/coming-soon.tsx deleted file mode 100644 index 5cb13822..00000000 --- a/apps/website/src/components/coming-soon.tsx +++ /dev/null @@ -1,12 +0,0 @@ -export const ComingSoon = () => { - return ( - - - - ) -} diff --git a/apps/website/src/components/datepicker/datepicker.tsx b/apps/website/src/components/datepicker/datepicker.tsx deleted file mode 100644 index a90500f7..00000000 --- a/apps/website/src/components/datepicker/datepicker.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Calendar } from '@status-im/components/src/calendar/calendar' -import { Popover } from '@status-im/components/src/popover' -import { EditIcon } from '@status-im/icons' -import { addDays } from 'date-fns' - -import { formatDate } from '../chart/utils/format-time' - -import type { DateRange } from '@status-im/components/src/calendar/calendar' - -type Props = { - selected?: DateRange - onSelect: (selected?: DateRange) => void -} - -const DatePicker = (props: Props) => { - const { selected, onSelect } = props - - return ( -
- - - - - - -
- ) -} - -export { DatePicker } diff --git a/apps/website/src/components/epic-overview.tsx b/apps/website/src/components/epic-overview.tsx deleted file mode 100644 index c3bfee0d..00000000 --- a/apps/website/src/components/epic-overview.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { Tag, Text } from '@status-im/components' -import { OpenIcon } from '@status-im/icons' - -import { Chart } from './chart/chart' -import { DatePicker } from './datepicker/datepicker' - -import type { GetBurnupQuery } from '@/lib/graphql/generated/operations' -import type { DateRange } from '@status-im/components/src/calendar/calendar' - -type Props = { - title: string - description?: string - color?: `#${string}` - fullscreen?: boolean - isLoading?: boolean - burnup?: GetBurnupQuery['gh_burnup'] - selectedDates?: DateRange - setSelectedDates: (date?: DateRange) => void - showPicker?: boolean -} - -export const EpicOverview = (props: Props) => { - const { - title, - description, - color, - fullscreen, - isLoading, - burnup, - selectedDates, - setSelectedDates, - showPicker = true, - } = props - - const filteredData = burnup?.reduce( - ( - accumulator: { - date: string - open_issues: number - closed_issues: number - }[], - current: GetBurnupQuery['gh_burnup'][0] - ) => { - const existingItem = accumulator.find( - item => item.date === current.date_field - ) - if (!existingItem) { - accumulator.push({ - date: current?.date_field, - open_issues: - current?.total_opened_issues - current?.total_closed_issues, - closed_issues: current?.total_closed_issues, - }) - } - - return accumulator - }, - [] - ) - - return ( -
-
-
- - {title} - - -
- {showPicker && ( - - )} -
- {Boolean(description) && ( - - {description} - - )} - -
- -
- - - - {/* TODO - Add theses when we have milestones and/or labels */} - {/*
-
- - -
- - -
- - -
-
*/} -
- ) -} diff --git a/apps/website/src/components/error-page.tsx b/apps/website/src/components/error-page.tsx deleted file mode 100644 index dabec07a..00000000 --- a/apps/website/src/components/error-page.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Text } from '@status-im/components' - -import { ERROR_CODES } from '@/consts/error-codes' - -type Props = { - errorCode: (typeof ERROR_CODES)[keyof typeof ERROR_CODES] -} - -export const ErrorPage = (props: Props) => { - const { errorCode } = props - - switch (errorCode) { - // todo!: design review, not in designs - case ERROR_CODES.NOT_FOUND: - return ( -
-
- - Page not found. - -
- ) - - case ERROR_CODES.INTERNAL_SERVER_ERROR: - default: - return ( -
-
-
- - {"Oh no, something's wrong!"} - - - Try reloading the page or come back later! - -
-
- ) - } -} diff --git a/apps/website/src/components/feature-list.tsx b/apps/website/src/components/feature-list.tsx deleted file mode 100644 index 2f42d344..00000000 --- a/apps/website/src/components/feature-list.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Text } from '@status-im/components' -import { cx } from 'class-variance-authority' -import Image from 'next/image' - -import type { illustrations } from '@/config/illustrations' - -type Item = { - title: string - description: string - icon: (typeof illustrations)[keyof typeof illustrations] -} - -type Props = { - list: Item[] - dark?: boolean -} - -export const FeatureList = (props: Props) => { - const { list, dark = false } = props - return ( -
-
- {list.map(({ title, icon, description }, i) => ( -
- {icon.alt} -
- - {title} - - - {description} - -
-
- ))} -
-
- ) -} diff --git a/apps/website/src/components/footer/action-card.tsx b/apps/website/src/components/footer/action-card.tsx deleted file mode 100644 index 2d1c939a..00000000 --- a/apps/website/src/components/footer/action-card.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Button, Text } from '@status-im/components' - -type Props = { - title: string - description: string - action: string -} - -const ActionCard = (props: Props) => { - const { title, description, action } = props - - return ( -
-
- - {title} - - - {description} - -
- -
- ) -} - -export { ActionCard } diff --git a/apps/website/src/components/footer/components/dot.tsx b/apps/website/src/components/footer/components/dot.tsx deleted file mode 100644 index 99da4e63..00000000 --- a/apps/website/src/components/footer/components/dot.tsx +++ /dev/null @@ -1,13 +0,0 @@ -export const Dot = () => ( - - - - - -) diff --git a/apps/website/src/components/footer/components/messari-icon.tsx b/apps/website/src/components/footer/components/messari-icon.tsx deleted file mode 100644 index 10d768ce..00000000 --- a/apps/website/src/components/footer/components/messari-icon.tsx +++ /dev/null @@ -1,31 +0,0 @@ -export const MessariIcon = () => { - return ( - - - - - - - - - - - - - ) -} diff --git a/apps/website/src/components/footer/footer-mobile.tsx b/apps/website/src/components/footer/footer-mobile.tsx deleted file mode 100644 index edb31f43..00000000 --- a/apps/website/src/components/footer/footer-mobile.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { Text } from '@status-im/components' - -import { SOCIALS } from '@/config/routes' - -import { Logo } from '../logo' -import { AccordionMenu } from '../navigation/accordion-menu' -import { Dot } from './components/dot' -import { MessariIcon } from './components/messari-icon' - -type Props = { - hasBorderTop?: boolean -} - -export const FooterMobile = (props: Props) => { - const { hasBorderTop } = props - - return ( -
-
-
-
- -
-
- -
-
- -
-
- - © Status Research & Development GmbH - - -
- - Terms of use - - - - Privacy policy - - - - Cookies - -
-
-
-
- - - Messari Transparency Verified - -
-
- {Object.values(SOCIALS).map(social => { - const IconComponent = social.icon - return ( - - ) - })} -
-
-
-
-
- ) -} diff --git a/apps/website/src/components/footer/footer.tsx b/apps/website/src/components/footer/footer.tsx deleted file mode 100644 index 5f9a4f1d..00000000 --- a/apps/website/src/components/footer/footer.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { Text } from '@status-im/components' -import { cva } from 'class-variance-authority' - -import { ROUTES, SOCIALS } from '@/config/routes' - -import { Logo } from '../logo' -import { Dot } from './components/dot' -import { MessariIcon } from './components/messari-icon' -import { Section } from './section' - -type Props = { - hasBorderTop?: boolean -} - -const section = cva( - [ - 'border-neutral-80', - 'mb-6', - 'flex', - 'items-start', - 'border-dashed', - 'pl-6', - 'pt-6', - ], - { - variants: { - hasBorderTop: { - true: ['border-t'], - false: ['border-t-0'], - }, - }, - } -) - -export const Footer = (props: Props) => { - const { hasBorderTop } = props - - return ( -
-
-
- -
- {Object.entries(ROUTES).map(([title, links], index) => ( -
- ))} -
-
-
- - © Status Research & Development GmbH - - -
- - Terms of use - - - Privacy policy - - - Cookies - -
-
-
-
- - - Messari Transparency Verified - - -
- {Object.values(SOCIALS).map(social => { - const IconComponent = social.icon - return ( - - ) - })} -
-
-
- ) -} diff --git a/apps/website/src/components/footer/section.tsx b/apps/website/src/components/footer/section.tsx deleted file mode 100644 index fc509a83..00000000 --- a/apps/website/src/components/footer/section.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { Text } from '@status-im/components' -import { cva } from 'class-variance-authority' - -import { Link } from '../link' - -import type { Routes } from '@/config/routes' - -type Props = { - title: string - routes: Routes - hasBorderLeft?: boolean - hasBorderTop?: boolean -} - -const section = cva( - [ - 'border-neutral-80', - 'relative', - 'grid', - 'gap-3', - 'border-dashed', - 'px-5', - 'pb-6', - 'pt-6', - 'lg:border-l', - 'lg:pb-0', - ], - { - variants: { - hasBorderTop: { - true: ['border-t'], - false: ['border-t-0'], - }, - hasBorderLeft: { - true: ['border-l'], - false: ['border-l-0'], - }, - }, - } -) - -const Section = (props: Props) => { - const { title, routes, hasBorderLeft, hasBorderTop } = props - - return ( -
-
-
- - {title} - -
    - {routes.map(route => ( -
  • - - - {route.name} - - -
  • - ))} -
-
-
- ) -} - -export { Section } diff --git a/apps/website/src/components/hero.tsx b/apps/website/src/components/hero.tsx deleted file mode 100644 index 28ebae52..00000000 --- a/apps/website/src/components/hero.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Button, Tag, Text } from '@status-im/components' -import { - CommunitiesIcon, - DownloadIcon, - MessengerIcon, - WalletIcon, -} from '@status-im/icons' -import { cx } from 'class-variance-authority' - -import { GridHero } from './cards' - -import type { IconProps } from '@status-im/icons' -import type { StaticImageData } from 'next/image' -import type { ComponentType } from 'react' - -type Props = { - type: 'Communities' | 'Create Community' | 'Wallet' | 'Messenger' - title: string - description: string - color: 'yellow' | 'turquoise' | 'purple' - images: [StaticImageData, StaticImageData, StaticImageData, StaticImageData] - maxWidth: number - dark?: boolean -} - -const icons: Record> = { - Wallet: WalletIcon, - Communities: CommunitiesIcon, - 'Create Community': CommunitiesIcon, - Messenger: MessengerIcon, -} - -export const Hero = (props: Props) => { - const { type, title, description, color, images, maxWidth, dark } = props - - return ( -
-
- {/* */} -
-
- -
-

- {title} -

-
- - {description} - -
-
- -
-
- -
-
-
- - - - {/*
-
-
-
- -
-
-
-
- wallet-2 -
-
-
-
- wallet-3 -
-
-
-
- wallet-4 -
-
-
-
*/} -
- ) -} diff --git a/apps/website/src/components/highlight-matches.tsx b/apps/website/src/components/highlight-matches.tsx deleted file mode 100644 index 45fce37f..00000000 --- a/apps/website/src/components/highlight-matches.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { findAll } from 'highlight-words-core' - -type Props = { - text: string - searchWords: string[] -} - -export const HighlightMatches = (props: Props) => { - const { text, searchWords } = props - - const chunks = findAll({ - textToHighlight: text, - searchWords, - }) - - return ( - <> - {chunks.map((chunk, idx) => { - const { start, end, highlight } = chunk - const value = text.substring(start, end) - - if (!highlight) { - return value - } - - return ( - - {value} - - ) - })} - - ) -} diff --git a/apps/website/src/components/image-grid.tsx b/apps/website/src/components/image-grid.tsx deleted file mode 100644 index cee21bfe..00000000 --- a/apps/website/src/components/image-grid.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { cx } from 'class-variance-authority' -import Image from 'next/image' - -import type { StaticImageData } from 'next/image' - -type Props = { - children: React.ReactNode -} - -const ImageGrid = (props: Props) => { - const { children } = props - - return ( -
- {children} -
- ) -} - -type ItemProps = { - src: StaticImageData - span: 1 | 2 | 3 | 4 | 5 | 6 - alt: string -} - -const Item = (props: ItemProps) => { - const { src, span, alt } = props - - return ( -
- {alt} -
- ) -} - -ImageGrid.Item = Item - -export { ImageGrid } diff --git a/apps/website/src/components/index.tsx b/apps/website/src/components/index.tsx deleted file mode 100644 index 3711604a..00000000 --- a/apps/website/src/components/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { Breadcrumbs } from './breadcrumbs' -export { EpicOverview } from './epic-overview' -export { SidebarMenu } from './sidebar-menu' -export { TableIssues } from './table-issues/table-issues' diff --git a/apps/website/src/components/link.tsx b/apps/website/src/components/link.tsx deleted file mode 100644 index d8dff052..00000000 --- a/apps/website/src/components/link.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import NextLink from 'next/link' - -import type { ComponentPropsWithRef } from 'react' - -export const Link = (props: ComponentPropsWithRef) => { - const external = - typeof props.href === 'string' - ? props.href.startsWith('http') - : Boolean(props.href.pathname?.startsWith('http')) - - return ( - - ) -} diff --git a/apps/website/src/components/logo.tsx b/apps/website/src/components/logo.tsx deleted file mode 100644 index ca9d307f..00000000 --- a/apps/website/src/components/logo.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import Image from 'next/image' -import { useRouter } from 'next/router' -import { match, P } from 'ts-pattern' - -import logoBlogSrc from '../../public/images/logo/blog.svg' -import logoSrc from '../../public/images/logo/default.svg' -import logoDevSrc from '../../public/images/logo/dev.svg' -import logoLearnSrc from '../../public/images/logo/learn.svg' - -type Props = { - label?: boolean - isTopbarDesktop?: boolean -} - -export const Logo = (props: Props) => { - const { label = true, isTopbarDesktop } = props - - const { pathname } = useRouter() - - return ( -
- {match(pathname) - .with( - P.when(p => p.startsWith('/insights')), - () => Status logo - ) - .with( - P.when(p => p.startsWith('/learn')), - () => Status logo - ) - .with( - P.when(p => p.startsWith('/blog')), - () => Status logo - ) - .otherwise(() => ( - Status logo - ))} - {label && ( - - - - )} -
- ) -} - -export type { Props as LogoProps } diff --git a/apps/website/src/components/navigation/accordion-menu.tsx b/apps/website/src/components/navigation/accordion-menu.tsx deleted file mode 100644 index e815c410..00000000 --- a/apps/website/src/components/navigation/accordion-menu.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { useState } from 'react' - -import * as Accordion from '@radix-ui/react-accordion' -import { Text } from '@status-im/components' -import { ChevronRightIcon, ExternalIcon } from '@status-im/icons' - -import { ROUTES } from '@/config/routes' - -import { Link } from '../link' - -const AccordionMenu = () => { - const [openLink, setOpenLink] = useState('') - - const handleToggle = (value: string) => { - setOpenLink(value === openLink ? '' : value) - } - - return ( -
- {Object.entries(ROUTES).map(([name, routes]) => ( - - -
- -
- -
- - {name} - -
- -
- {routes.map((route, index) => { - const external = route.href.startsWith('http') - return ( -
- - - {route.name} - - - {external && ( - - )} - -
- ) - })} -
-
-
-
-
- ))} -
- ) -} - -export { AccordionMenu } diff --git a/apps/website/src/components/navigation/floating-desktop.tsx b/apps/website/src/components/navigation/floating-desktop.tsx deleted file mode 100644 index 48ea3fa8..00000000 --- a/apps/website/src/components/navigation/floating-desktop.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import * as NavigationMenu from '@radix-ui/react-navigation-menu' -import { Button, Text } from '@status-im/components' -import { DownloadIcon, ExternalIcon } from '@status-im/icons' -import { cx } from 'class-variance-authority' - -import { ROUTES } from '@/config/routes' - -import { Link } from '../link' -import { Logo } from '../logo' - -type Props = { - visible: boolean -} - -const FloatingDesktop = (props: Props) => { - const { visible } = props - - return ( - -
- - - {Object.entries(ROUTES).map(([name, links]) => ( - - - - {name} - - - - - {links.map(link => { - const external = link.href.startsWith('http') - return ( - - - - {link.name} - - {external && ( - - )} - - - ) - })} - - - ))} - - - -
- - -
- ) -} - -export { FloatingDesktop } diff --git a/apps/website/src/components/navigation/floating-menu.tsx b/apps/website/src/components/navigation/floating-menu.tsx deleted file mode 100644 index ec4403b9..00000000 --- a/apps/website/src/components/navigation/floating-menu.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { useRef, useState } from 'react' - -import { animated, useScroll } from '@react-spring/web' -import { cx } from 'class-variance-authority' - -import { useLockScroll } from '@/hooks/use-lock-scroll' -import { useOutsideClick } from '@/hooks/use-outside-click' - -import { FloatingDesktop } from './floating-desktop' -import { FloatingMobile } from './floating-mobile' - -const FloatingMenu = (): JSX.Element => { - const [visible, setVisible] = useState(false) - const [open, setOpen] = useState(false) - const openRef = useRef(open) - openRef.current = open - - // Using ref to prevent re-running of useEffect - const visibleRef = useRef(visible) - const scrollYRef = useRef(0) - visibleRef.current = visible - - // Close menu on outside click - const ref = useOutsideClick(() => setOpen(false)) - useLockScroll(open) - - useScroll({ - onChange: ({ value: { scrollY } }) => { - const isMenuOpen = openRef.current - const isScrollingUp = scrollY < scrollYRef.current - const detectionPoint = scrollY > 0.005 - if (detectionPoint && isScrollingUp) { - if (!visibleRef.current) { - setVisible(true) - } - } else { - if (!isMenuOpen) { - setVisible(false) - } - } - scrollYRef.current = scrollY - }, - default: { - immediate: true, - }, - }) - - return ( - <> - - - - - - - - ) -} - -export { FloatingMenu } diff --git a/apps/website/src/components/navigation/floating-mobile.tsx b/apps/website/src/components/navigation/floating-mobile.tsx deleted file mode 100644 index ac861943..00000000 --- a/apps/website/src/components/navigation/floating-mobile.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { Button, IconButton } from '@status-im/components' -import { CloseIcon, DownloadIcon, MenuIcon } from '@status-im/icons' - -import { Link } from '../link' -import { Logo } from '../logo' -import { AccordionMenu } from './accordion-menu' - -type Props = { - open: boolean - setOpen: (open: boolean) => void -} - -const FloatingMobile = (props: Props) => { - const { open, setOpen } = props - return ( -
-
-
- - - -
- - - ) : ( - - ) - } - onPress={() => setOpen(!open)} - /> -
-
- -
- -
-
-
- ) -} - -export { FloatingMobile } diff --git a/apps/website/src/components/navigation/nav-desktop.tsx b/apps/website/src/components/navigation/nav-desktop.tsx deleted file mode 100644 index 683554c3..00000000 --- a/apps/website/src/components/navigation/nav-desktop.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import * as NavigationMenu from '@radix-ui/react-navigation-menu' -import { Button, Text } from '@status-im/components' -import { DownloadIcon, ExternalIcon } from '@status-im/icons' -import { cx } from 'class-variance-authority' - -import { Logo } from '@/components/logo' -import { ROUTES } from '@/config/routes' - -import { Link } from '../link' - -const NavDesktop = () => { - return ( - <> - -
-
- - - -
- -
- - {Object.entries(ROUTES).map(([name, routes]) => ( - - - - {name} - - - - {routes.map(route => { - const external = route.href.startsWith('http') - - return ( - - - - {route.name} - - {external && ( - - )} - - - ) - })} - - - ))} - -
- -
- -
-
- -
- - ) -} - -export { NavDesktop } diff --git a/apps/website/src/components/navigation/nav-mobile.tsx b/apps/website/src/components/navigation/nav-mobile.tsx deleted file mode 100644 index 69729319..00000000 --- a/apps/website/src/components/navigation/nav-mobile.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { useState } from 'react' - -import { Button, IconButton } from '@status-im/components' -import { CloseIcon, DownloadIcon, MenuIcon } from '@status-im/icons' - -import { Logo } from '@/components/logo' -import { useLockScroll } from '@/hooks/use-lock-scroll' - -import { Link } from '../link' -import { AccordionMenu } from './accordion-menu' - -const NavMobile = () => { - const [open, setOpen] = useState(false) - const screenHeight = typeof window !== 'undefined' ? window.innerHeight : 0 - - useLockScroll(open) - const handleToggle = () => { - setOpen(prevOpen => !prevOpen) - } - - return ( -
-
-
- - - -
- - - ) : ( - - ) - } - onPress={handleToggle} - /> -
-
- -
- -
-
-
- ) -} - -export { NavMobile } diff --git a/apps/website/src/components/parallax-circle.tsx b/apps/website/src/components/parallax-circle.tsx deleted file mode 100644 index c71d0425..00000000 --- a/apps/website/src/components/parallax-circle.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Parallax } from 'react-scroll-parallax' - -type ParalaxProps = { - left?: number - top?: number - right?: number - bottom?: number - color: string -} - -const ParalaxCircle = (props: ParalaxProps) => { - const { color, ...position } = props - - return ( - - ) -} - -export { ParalaxCircle } diff --git a/apps/website/src/components/pre-footer.tsx b/apps/website/src/components/pre-footer.tsx deleted file mode 100644 index 16e82f6e..00000000 --- a/apps/website/src/components/pre-footer.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Button, Text } from '@status-im/components' -import { DownloadIcon } from '@status-im/icons' -import Image from 'next/image' - -import logoSrc from '../../public/images/logo/default.svg' -import { ComingSoon } from './coming-soon' - -const Prefooter = () => { - return ( -
-
-
- Status logo -

- Be unstoppable -

- - - Use the open source, decentralized crypto communication super app. - - -
-
- -
-
- - Betas for Mac, Windows, Linux
- Alphas for iOS & Android -
-
- -
-
-
-
-
-
- ) -} - -export { Prefooter } diff --git a/apps/website/src/components/preview-page.tsx b/apps/website/src/components/preview-page.tsx deleted file mode 100644 index 6ca46a8d..00000000 --- a/apps/website/src/components/preview-page.tsx +++ /dev/null @@ -1,694 +0,0 @@ -// todo?: rename to preview/onboarding/sharing/conversion-page/screen/invite.tsx - -import { useMemo } from 'react' - -import { neutral } from '@status-im/colors' -import { - Avatar, - Button, - ContextTag, - Counter, - Skeleton, - Tag, - Text, - ToastContainer, - useToast, -} from '@status-im/components' -import { - DownloadIcon, - InfoIcon, - MembersIcon, - QrCodeIcon, -} from '@status-im/icons' -import { useQuery } from '@tanstack/react-query' -import Head from 'next/head' -import { useRouter } from 'next/router' - -import { ERROR_CODES } from '@/consts/error-codes' -import { useURLData } from '@/hooks/use-url-data' -import { getRequestClient } from '@/lib/request-client' - -import { ErrorPage } from './error-page' -import { QrDialog } from './qr-dialog' - -import type { ChannelInfo, CommunityInfo, UserInfo } from '@status-im/js' -import type { - decodeChannelURLData, - decodeCommunityURLData, - decodeUserURLData, -} from '@status-im/js/encode-url-data' -import type { CSSProperties } from 'react' - -type Type = 'community' | 'channel' | 'profile' - -type PreviewPageProps = { - type: Type - encodedData?: string | null - index?: boolean -} & ( - | { - type: 'community' - decodedData?: ReturnType | null - } - | { - type: 'channel' - decodedData?: ReturnType | null - channelUuid?: string - } - | { - type: 'profile' - decodedData?: ReturnType | null - } -) - -export type Data = - | { - type: 'community' - info: CommunityInfo - } - | { - type: 'channel' - info: - | ChannelInfo - // if from url - | (Omit & { - community: Pick - }) - } - | { - type: 'profile' - info: UserInfo - } - -const ACTION_VERB: Record = { - community: 'Join', - channel: 'View', - profile: 'Open', -} - -const INSTRUCTIONS_HEADING: Record = { - community: 'How to join this community:', - channel: 'How to join this channel:', - profile: 'How to connect with this profile:', -} - -const JOIN_BUTTON_LABEL: Record = { - community: 'Join community in Status', - channel: 'View channel in Status', - profile: 'Open profile in Status', -} - -export function PreviewPage(props: PreviewPageProps) { - const { type, decodedData, encodedData, index } = props - - const { asPath } = useRouter() - - const toast = useToast() - - // todo: default og image, not dynamic - // const ogImageUrl = getOgImageUrl(props.decodedData) - // todo?: pass meta, info as component - // todo?: pass image, color as props - - const { - publicKey, - channelUuid: urlChannelUuid, - data: urlData, - errorCode: urlErrorCode, - isLoading: urlIsLoading, - } = useURLData(type, decodedData, encodedData) - - const wakuQueryIsEnabled = Boolean(publicKey) - const { - data: wakuData, - isLoading, - status, - refetch, - } = useQuery({ - refetchOnWindowFocus: false, - queryKey: [type], - enabled: wakuQueryIsEnabled, - queryFn: async function ({ queryKey }): Promise { - const client = await getRequestClient() - - switch (queryKey[0]) { - case 'community': { - const info = await client.fetchCommunity(publicKey!) - - if (!info) { - return null - } - - return { type: 'community', info } - } - case 'channel': { - const channelUuid = - 'channelUuid' in props && props.channelUuid - ? props.channelUuid - : urlChannelUuid - - if (!channelUuid) { - return null - } - - const info = await client.fetchChannel(publicKey!, channelUuid) - - if (!info) { - return null - } - - return { type: 'channel', info } - } - case 'profile': { - const info = await client.fetchUser(publicKey!) - - if (!info) { - return null - } - - return { type: 'profile', info } - } - } - }, - onSettled: (data, error) => { - if (!data || error) { - // todo?: rephrase to "fetch latest" - toast.negative("Couldn't fetch information", { - action: 'Retry', - onAction: refetch, - }) - - return - } - - if (urlData) { - toast.custom('Information just updated', ) - } - }, - }) - - const loading = getLoading() - - function getLoading(): boolean { - if (urlIsLoading) { - return true - } - - if (wakuQueryIsEnabled) { - return status === 'loading' || isLoading - } - - return false - } - - const data: Data | undefined = wakuData ?? urlData - - const { avatarURL, bannerURL } = useMemo(() => { - if (!data) { - return {} - } - - const avatarURL = getAvatarURL(data) - const bannerURL = getBannerURL(data) - - return { avatarURL, bannerURL } - }, [data]) - - if (urlErrorCode) { - return - } - - if (!loading && !data) { - return - } - - // const urlOrigin = process.env.VERCEL_URL - // ? 'https://' + process.env.VERCEL_URL - // : '' - - if ((loading && !data) || !data || !publicKey) { - return ( - <> - - - {/* todo: test if server-rendered version with which a (social) card would be - generated would not effectively override actual shared link on clicking */} - {/* */} - - - {!index && } - -
-
-
-
- {/* avatar */} -
- -
- {/* display name */} - - {/* description */} - - {/* description */} - -
- -
- {/* instructions */} - - {/* instructions */} - -
- -
- - {/* logo */} - - -
-
-
-
- {/* banner */} - -
-
- - ) - } - - return ( - <> - - - {`${ACTION_VERB[type]} ${data.info.displayName} in Status`} - - - - - {/* */} - - - {!index && } - - <> - {/* todo: theme; based on user system settings */} -
-
-
- {bannerURL && ( - - )} -
- -
-
- {/* HERO */} -
-
- {data.type === 'community' && ( - - )} - {data.type === 'channel' && ( - - )} - {data.type === 'profile' && ( - - )} -
- -

- {data.type === 'channel' && '#'} - {data.info.displayName} -

-

- {data.info.description} -

- - {data.type === 'community' && ( - <> -
- - - {formatNumber(data.info.membersCount)} - -
- {data.info.tags?.length > 0 && ( -
- {data.info.tags.map(tag => ( - - ))} -
- )} - - )} - {data.type === 'channel' && ( -
- - Channel in - - -
- )} - {data.type === 'profile' && ( -

- {data.info.emojiHash} -

- )} -
- - {/* INSTRUCTIONS */} -
-
-

- {INSTRUCTIONS_HEADING[type]} -

-
    - - - - {/* todo?: delete step; merge with download */} - - Install Status - - - Complete the onboarding - - - - and voilá - -
-
- -
-
- - Have Status already? - - Scan the QR code with your device -
- - - - -
-
- - {/* FOOTER */} -
- - Powered by - - -
-
-
- -
-
- {bannerURL && ( - - )} -
-
-
- - - - - ) -} - -const formatNumber = (n: number) => { - const formatter = Intl.NumberFormat('en', { notation: 'compact' }) - return formatter.format(n) -} - -const getGradientStyles = (data: Data): CSSProperties => { - return { - // @ts-expect-error CSSProperties do not handle inline CSS variables - '--gradient-color': 'color' in data.info ? data.info.color : neutral[100], - } -} - -const getAvatarURL = (data: Data): string | undefined => { - let avatar: Uint8Array | undefined - switch (data.type) { - case 'community': - avatar = data.info.photo - - break - case 'profile': - avatar = data.info.photo - - break - } - - if (!avatar) { - return - } - - const url = URL.createObjectURL( - new Blob([avatar], { - type: 'image/jpeg', - }) - ) - - return url -} - -const getBannerURL = (data: Data): string | undefined => { - let banner: Uint8Array | undefined - switch (data.type) { - case 'community': - banner = data.info.banner - - break - case 'channel': - banner = - 'banner' in data.info.community ? data.info.community.banner : undefined - - break - } - - if (!banner) { - return - } - - const url = URL.createObjectURL( - new Blob([banner], { - type: 'image/jpeg', - }) - ) - - return url -} - -type ListItemProps = { - order: number - children: React.ReactNode -} - -const ListItem = (props: ListItemProps) => { - const { order, children } = props - - return ( -
  • - - {children} -
  • - ) -} - -const StatusLogo = () => ( - - - - - -) diff --git a/apps/website/src/components/qr-dialog.tsx b/apps/website/src/components/qr-dialog.tsx deleted file mode 100644 index 4a205ca1..00000000 --- a/apps/website/src/components/qr-dialog.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { cloneElement, useState } from 'react' - -import * as Dialog from '@radix-ui/react-dialog' -import { Button, Text } from '@status-im/components' -import { CloseIcon } from '@status-im/icons' -import { QRCodeSVG } from 'qrcode.react' - -type Props = { - value: string - children: React.ReactElement -} - -export const QrDialog = (props: Props) => { - const { value, children } = props - - const [open, setOpen] = useState(false) - - return ( - - - {cloneElement(children, { onPress: () => setOpen(true) })} - - - - {/* */} - -
    -
    -
    -
    - -
    -
    - - Scan with Status Desktop or Status Mobile - -
    - -
    -
    -
    -
    -
    -
    - ) -} diff --git a/apps/website/src/components/repos/loading-skeleton.tsx b/apps/website/src/components/repos/loading-skeleton.tsx deleted file mode 100644 index a5af71fd..00000000 --- a/apps/website/src/components/repos/loading-skeleton.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Shadow, Skeleton } from '@status-im/components' - -const LoadingSkeleton = () => { - return ( -
    - {[...Array(6)].map((_, index) => ( - -
    - - -
    - - - -
    -
    -
    - ))} -
    - ) -} - -export { LoadingSkeleton } diff --git a/apps/website/src/components/screenshot-image.tsx b/apps/website/src/components/screenshot-image.tsx deleted file mode 100644 index 0e2e8d45..00000000 --- a/apps/website/src/components/screenshot-image.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { cva } from 'class-variance-authority' -import Image from 'next/image' - -import { Border } from './cards/border' - -import type { StaticImageData } from 'next/image' - -type Props = { - image: StaticImageData - alt: string - color: 'yellow' | 'turquoise' | 'purple' -} - -const containerClassNames = cva( - [ - 'relative flex max-h-[854px] w-[582px] max-w-[582px] justify-center overflow-hidden rounded-[40px] py-[65px]', - ], - { - variants: { - color: { - yellow: ['bg-customisation-yellow/10'], - turquoise: ['bg-customisation-turquoise/10'], - purple: ['bg-customisation-purple/10'], - }, - }, - } -) - -const imageClassNames = cva( - ['rounded-3xl', 'h-auto max-h-[724px] w-auto border-4'], - { - variants: { - color: { - yellow: ['border-customisation-yellow/5'], - turquoise: ['border-customisation-turquoise/5'], - purple: ['border-customisation-purple/5'], - }, - }, - } -) - -const borderContainerClassNames = cva( - ['absolute left-0 top-0', 'w-full', 'h-[100%]'], - { - variants: { - color: { - yellow: ['text-customisation-yellow/5'], - turquoise: ['text-customisation-turquoise/5'], - purple: ['text-customisation-purple/5'], - }, - }, - } -) - -export const ScreenshotImage = (props: Props) => { - const { image, color } = props - - return ( -
    -
    - -
    -
    - {props.alt} -
    - ) -} diff --git a/apps/website/src/components/search-button.tsx b/apps/website/src/components/search-button.tsx deleted file mode 100644 index ba3c90fa..00000000 --- a/apps/website/src/components/search-button.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { Shortcut, Text } from '@status-im/components' -import { CommandIcon, SearchIcon } from '@status-im/icons' -import { cva } from 'class-variance-authority' - -import { useKeyboardShortcuts } from '@/hooks/use-keyboard-shortcuts' - -import type { VariantProps } from 'class-variance-authority' - -type Props = { - size: NonNullable['size']> -} - -export const SearchButton = (props: Props) => { - useKeyboardShortcuts({ - '$mod+K': () => { - console.log('search') - }, - }) - - return ( - - ) -} - -const styles = cva( - 'inline-flex items-center rounded-xl border border-neutral-20 shadow-1', - { - variants: { - size: { - 38: 'h-[38px] gap-4 px-4', - 32: 'h-[32px] gap-2 px-2', - }, - }, - } -) diff --git a/apps/website/src/components/section-desktop-screenshot.tsx b/apps/website/src/components/section-desktop-screenshot.tsx deleted file mode 100644 index dd2d8fb4..00000000 --- a/apps/website/src/components/section-desktop-screenshot.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react' - -import { Text } from '@status-im/components' -import Image, { type StaticImageData } from 'next/image' - -import { type Illustration, illustrations } from '@/config/illustrations' - -type Props = { - icon: Illustration - title: string - description: string - image: StaticImageData - dark?: boolean -} - -export const SectionDesktopScreenshot = (props: Props) => { - const { icon, title, description, image, dark } = props - - const illustration = illustrations[icon] - - return ( - <> -
    -
    - {illustration.alt} - -
    - - {title} - -
    - - {description} - -
    -
    -
    -
    - {title} - - ) -} diff --git a/apps/website/src/components/section-large.tsx b/apps/website/src/components/section-large.tsx deleted file mode 100644 index 46571980..00000000 --- a/apps/website/src/components/section-large.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Text } from '@status-im/components' -import { cx } from 'class-variance-authority' - -type Props = { - title: string - description: string - description2?: string - children: React.ReactNode - dark?: boolean -} - -export const SectionLarge = (props: Props) => { - const { title, description, description2, children, dark = false } = props - - return ( -
    -
    -

    - {title} -

    - - {description} - - {description2 && ( - <> -
    - - {description2} - - - )} -
    - {children} -
    - ) -} diff --git a/apps/website/src/components/sidebar-menu/index.tsx b/apps/website/src/components/sidebar-menu/index.tsx deleted file mode 100644 index 75608eda..00000000 --- a/apps/website/src/components/sidebar-menu/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { useEffect, useState } from 'react' - -import * as Accordion from '@radix-ui/react-accordion' -import { useRouter } from 'next/router' - -import { NavLink } from './nav-link' -import { NavNestedLinks } from './nav-nested-links' -import { SkeletonPlaceholder } from './skeleton-placeholder' -import { decodeUriComponent } from './utils' - -type Props = { - isLoading?: boolean - items: { - label: string - href?: string - links?: { - label: string - href: string - links?: { - label: string - href: string - }[] - }[] - }[] -} - -const SidebarMenu = (props: Props) => { - const { items, isLoading } = props - - const [label, setLabel] = useState('') - - const { asPath } = useRouter() - - const defaultLabel = items?.find( - item => - item.href === decodeUriComponent(asPath) || - item.links?.find(link => link.href === decodeUriComponent(asPath)) - )?.label - - useEffect(() => { - setLabel(defaultLabel || '') - }, [defaultLabel]) - - return ( -
    - -
    - ) -} - -export { SidebarMenu } -export type { Props as SidebarMenuProps } diff --git a/apps/website/src/components/sidebar-menu/nav-link.tsx b/apps/website/src/components/sidebar-menu/nav-link.tsx deleted file mode 100644 index dc06f505..00000000 --- a/apps/website/src/components/sidebar-menu/nav-link.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Text } from '@status-im/components' -import { useRouter } from 'next/router' - -import { Link } from '../link' - -import type { LinkProps } from 'next/link' - -const NavLink = ( - props: LinkProps & { - children: string - } -) => { - const { children, ...linkProps } = props - - const { asPath } = useRouter() - const active = asPath === props.href - - return ( - - - {children} - - - ) -} - -export { NavLink } diff --git a/apps/website/src/components/sidebar-menu/nav-nested-links.tsx b/apps/website/src/components/sidebar-menu/nav-nested-links.tsx deleted file mode 100644 index 5215f656..00000000 --- a/apps/website/src/components/sidebar-menu/nav-nested-links.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import * as Accordion from '@radix-ui/react-accordion' -import {} from '@radix-ui/react-accordion' -import { Text } from '@status-im/components' -import { ChevronRightIcon } from '@status-im/icons' -import { useRouter } from 'next/router' - -import { Link } from '../link' -import { decodeUriComponent } from './utils' - -import type { Url } from 'next/dist/shared/lib/router/router' - -type NavLinkProps = { - label: string - links: { - label: string - href: Url - links?: { - label: string - href: Url - }[] - }[] -} - -const NavNestedLinks = (props: NavLinkProps) => { - const { label, links } = props - - const { asPath } = useRouter() - - return ( - -
    - -
    - -
    - - {label} - -
    - -
    - {links.map((link, index) => { - const active = decodeUriComponent(asPath) === link.href - - const paddingClassName = index === 0 ? 'pt-5' : 'pt-2' - const paddingLastChild = index === links.length - 1 ? 'pb-5' : '' - - if (link.links && link.links.length > 0) { - return ( -
    - - {link.label} - - {link.links.map((sublink, subindex) => { - return ( -
    - - - {sublink.label} - - -
    - ) - })} -
    - ) - } - - return ( -
    - - - {link.label} - - -
    - ) - })} -
    -
    -
    -
    - ) -} - -export { NavNestedLinks } diff --git a/apps/website/src/components/sidebar-menu/skeleton-placeholder.tsx b/apps/website/src/components/sidebar-menu/skeleton-placeholder.tsx deleted file mode 100644 index 79283c6f..00000000 --- a/apps/website/src/components/sidebar-menu/skeleton-placeholder.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { Skeleton } from '@status-im/components' -import { Stack } from '@tamagui/core' - -const SkeletonPlaceholder = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ) -} - -export { SkeletonPlaceholder } diff --git a/apps/website/src/components/sidebar-menu/utils.ts b/apps/website/src/components/sidebar-menu/utils.ts deleted file mode 100644 index 394023e4..00000000 --- a/apps/website/src/components/sidebar-menu/utils.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function decodeUriComponent(str: string): string { - return decodeURIComponent(str.replace(/\+/g, '%20')) -} diff --git a/apps/website/src/components/table-issues.tsx b/apps/website/src/components/table-issues.tsx deleted file mode 100644 index d10073b8..00000000 --- a/apps/website/src/components/table-issues.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import { Avatar, Skeleton, Tag, Text } from '@status-im/components' -import { formatDistanceToNow } from 'date-fns' -import Link from 'next/link' - -import type { - GetIssuesByEpicQuery, - GetOrphansQuery, -} from '@/lib/graphql/generated/operations' - -type Props = { - isLoading?: boolean - data?: GetOrphansQuery['gh_orphans'] | GetIssuesByEpicQuery['gh_epic_issues'] - count?: { - total: number - closed: number - open: number - } -} - -// function isOrphans( -// data: GetOrphansQuery['gh_orphans'] | GetIssuesByEpicQuery['gh_epic_issues'] -// ): data is GetOrphansQuery['gh_orphans'] { -// return 'labels' in data[0] -// } - -function isIssues( - data: GetOrphansQuery['gh_orphans'] | GetIssuesByEpicQuery['gh_epic_issues'] -): data is GetIssuesByEpicQuery['gh_epic_issues'] { - return 'assignee' in data[0] -} - -export const TableIssues = (props: Props) => { - const { data, count, isLoading } = props - - const issues = data || [] - - return ( -
    -
    - - {count?.open || 0} Open - - - - {count?.closed || 0} Closed - -
    - -
    - {issues.length !== 0 && - isIssues(issues) && - issues.map(issue => ( - -
    - - {issue.title} - - - #{issue.issue_number} •{' '} - {formatDistanceToNow(new Date(issue.created_at), { - addSuffix: true, - })}{' '} - by {issue.author} - -
    - -
    -
    - -
    - -
    - - ))} - {isLoading && ( -
    -
    - - -
    -
    - - -
    -
    - )} -
    -
    - ) -} diff --git a/apps/website/src/components/table-issues/empty.tsx b/apps/website/src/components/table-issues/empty.tsx deleted file mode 100644 index e8b1142b..00000000 --- a/apps/website/src/components/table-issues/empty.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { Image, Text } from '@status-im/components' - -const Empty = () => { - return ( -
    -
    -
    - -
    - - No results found - -
    - - Try adjusting your search or filter to find what you’re looking for. - -
    - -
    -
    - {Array.from({ length: 12 }).map((_, i) => ( -
    - ))} -
    -
    -
    - ) -} - -export { Empty } diff --git a/apps/website/src/components/table-issues/filters/components/color-circle.tsx b/apps/website/src/components/table-issues/filters/components/color-circle.tsx deleted file mode 100644 index 53494b87..00000000 --- a/apps/website/src/components/table-issues/filters/components/color-circle.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { tokens } from '@status-im/components/src/tokens' - -import type { ColorTokens } from '@tamagui/core' - -// TypeGuard for ColorTokens -function isColorTokens( - value: `#${string}` | ColorTokens -): value is ColorTokens { - return typeof value === 'string' && value.startsWith('$') -} - -const ColorCircle = ({ - color: colorFromProps, - opacity = 40, - size = 16, -}: { - color: ColorTokens | `#${string}` - opacity?: number - size?: number -}) => { - if (!colorFromProps) { - return null - } - - let color: ColorTokens | string = colorFromProps - - if (isColorTokens(colorFromProps)) { - const colorToken = colorFromProps.replace( - '$', - '' - ) as keyof typeof tokens.color - color = tokens.color[colorToken]?.val || colorFromProps - } - - return ( -
    - ) -} - -export { ColorCircle } diff --git a/apps/website/src/components/table-issues/filters/dropdown-filter.tsx b/apps/website/src/components/table-issues/filters/dropdown-filter.tsx deleted file mode 100644 index ec64c63c..00000000 --- a/apps/website/src/components/table-issues/filters/dropdown-filter.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import { cloneElement, useMemo, useState } from 'react' - -import { Avatar, Button, Input, Text } from '@status-im/components' -import { DropdownMenu } from '@status-im/components/src/dropdown-menu' -import { DropdownIcon, SearchIcon } from '@status-im/icons' -import Image from 'next/image' - -import { useCurrentBreakpoint } from '@/hooks/use-current-breakpoint' - -import { ColorCircle } from './components/color-circle' - -import type { ColorTokens } from '@tamagui/core' - -type Data = { - id: string - name: string - avatar?: string | React.ReactElement - color?: ColorTokens | `#${string}` -} - -type Props = { - data: Data[] - label: string - placeholder?: string - selectedValues: string[] - onSelectedValuesChange: (values: string[]) => void -} - -const isAvatar = (value: unknown): value is string => { - return typeof value === 'string' && value !== null -} - -const RenderIcon = (props: Data) => { - if (props.color) { - return - } - - if (!props.avatar) { - return <> - } - - if (isAvatar(props.avatar)) { - return - } - - return cloneElement(props.avatar) || <> -} - -const DropdownFilter = (props: Props) => { - const { data, label, placeholder, selectedValues, onSelectedValuesChange } = - props - - const [filterText, setFilterText] = useState('') - - const filteredData = useMemo( - () => - data.filter(label => - label.name.toLowerCase().includes(filterText.toLowerCase()) - ), - [data, filterText] - ) - - const [isOpen, setIsOpen] = useState(false) - - const currentBreakpoint = useCurrentBreakpoint() - - return ( -
    - setIsOpen(!isOpen)} modal={false}> -
    - } - > - {label} - - - -
    - } - size={32} - value={filterText} - onChangeText={setFilterText} - /> -
    - {filteredData.map(filtered => { - return ( - } - label={filtered.name} - checked={selectedValues.includes(filtered.id)} - onSelect={() => { - if (selectedValues.includes(filtered.id)) { - onSelectedValuesChange( - selectedValues.filter(id => id !== filtered.id) - ) - } else { - onSelectedValuesChange([...selectedValues, filtered.id]) - } - }} - /> - ) - })} - {filteredData.length === 0 && ( -
    - No results -
    - - No options found - -
    -
    - - We didn't find results that match your search - -
    -
    - )} -
    - -
    - ) -} - -export { DropdownFilter } -export type { Props as DropdownFilterProps } diff --git a/apps/website/src/components/table-issues/filters/dropdown-sort.tsx b/apps/website/src/components/table-issues/filters/dropdown-sort.tsx deleted file mode 100644 index b850c46a..00000000 --- a/apps/website/src/components/table-issues/filters/dropdown-sort.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { IconButton, Text } from '@status-im/components' -import { DropdownMenu } from '@status-im/components/src/dropdown-menu' -import { SortIcon } from '@status-im/icons' - -import type { Order_By } from '@/lib/graphql/generated/schemas' - -type Data = { - id: Order_By - name: string -} - -type Props = { - data: Data[] - orderByValue: Order_By - onOrderByValueChange: (value: Order_By) => void -} - -const DropdownSort = (props: Props) => { - const { data, orderByValue, onOrderByValueChange } = props - - return ( -
    - -
    - } variant="outline" /> -
    - -
    - - Sort by - -
    - {data.map(option => { - return ( - { - onOrderByValueChange(option.id) - }} - selected={orderByValue === option.id} - /> - ) - })} -
    -
    -
    - ) -} - -export { DropdownSort } -export type { Props as DropdownSortProps } diff --git a/apps/website/src/components/table-issues/filters/index.ts b/apps/website/src/components/table-issues/filters/index.ts deleted file mode 100644 index 28bd6dc5..00000000 --- a/apps/website/src/components/table-issues/filters/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { DropdownFilter } from './dropdown-filter' -export { DropdownSort } from './dropdown-sort' -export { Tabs } from './tabs' diff --git a/apps/website/src/components/table-issues/filters/tabs.tsx b/apps/website/src/components/table-issues/filters/tabs.tsx deleted file mode 100644 index 7cf382b8..00000000 --- a/apps/website/src/components/table-issues/filters/tabs.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { ActiveMembersIcon, OpenIcon } from '@status-im/icons' - -type Props = { - count: { - open?: number - closed?: number - } - activeTab: 'open' | 'closed' - onTabChange: (tab: 'open' | 'closed') => void -} -const Tabs = (props: Props): JSX.Element => { - const { count, activeTab, onTabChange } = props - const isOpen = activeTab === 'open' - - return ( -
    -
    - -
    -
    - -
    -
    - ) -} - -export { Tabs } diff --git a/apps/website/src/components/table-issues/index.tsx b/apps/website/src/components/table-issues/index.tsx deleted file mode 100644 index 2a1b462d..00000000 --- a/apps/website/src/components/table-issues/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { TableIssues } from './table-issues' diff --git a/apps/website/src/components/table-issues/select.tsx b/apps/website/src/components/table-issues/select.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/website/src/components/table-issues/table-issues.tsx b/apps/website/src/components/table-issues/table-issues.tsx deleted file mode 100644 index 28430e0d..00000000 --- a/apps/website/src/components/table-issues/table-issues.tsx +++ /dev/null @@ -1,237 +0,0 @@ -import { Avatar, Input, Skeleton, Tag, Text } from '@status-im/components' -import { ActiveMembersIcon, OpenIcon, SearchIcon } from '@status-im/icons' -import { formatDistanceToNow } from 'date-fns' -import Link from 'next/link' - -import { useCurrentBreakpoint } from '@/hooks/use-current-breakpoint' -import { Order_By } from '@/lib/graphql/generated/schemas' - -import { Empty } from './empty' -import { DropdownFilter, DropdownSort, Tabs } from './filters' - -import type { DropdownSortProps } from './filters/dropdown-sort' -import type { - GetFiltersForOrphansQuery, - GetFiltersWithEpicQuery, - GetIssuesByEpicQuery, - GetOrphansQuery, -} from '@/lib/graphql/generated/operations' - -const sortOptions: DropdownSortProps['data'] = [ - { - id: Order_By.Asc, - name: 'Ascending', - }, - { - id: Order_By.Desc, - name: 'Descending', - }, -] - -type Props = { - isLoading?: boolean - data?: GetOrphansQuery['gh_orphans'] | GetIssuesByEpicQuery['gh_epic_issues'] - filters?: GetFiltersWithEpicQuery | GetFiltersForOrphansQuery - count?: { - total?: number - closed?: number - open?: number - } - activeTab: 'open' | 'closed' - handleTabChange: (tab: 'open' | 'closed') => void - selectedAuthors: string[] - handleSelectedAuthors: (values: string[]) => void - selectedAssignees: string[] - handleSelectedAssignees: (values: string[]) => void - selectedRepos: string[] - handleSelectedRepos: (values: string[]) => void - orderByValue: Order_By - handleOrderByValue: (value: Order_By) => void - handleSearchFilter: (value: string) => void - searchFilterValue: string -} - -const TableIssues = (props: Props) => { - const currentBreakpoint = useCurrentBreakpoint() - - const { - data = [], - count, - isLoading, - filters, - handleTabChange, - activeTab, - selectedAuthors, - handleSelectedAuthors, - selectedAssignees, - handleSelectedAssignees, - selectedRepos, - handleSelectedRepos, - orderByValue, - handleOrderByValue, - handleSearchFilter, - searchFilterValue, - } = props - - return ( -
    -
    -
    - -
    -
    -
    -
    -
    - } - size={32} - value={searchFilterValue} - onChangeText={handleSearchFilter} - variant="retractable" - direction={currentBreakpoint === '2xl' ? 'rtl' : 'ltr'} - /> -
    - - { - return { - id: author.author || '', - name: author.author || '', - } - }) || [] - } - label="Author" - placeholder="Find author " - /> - { - return { - id: assignee.assignee || '', - name: assignee.assignee || '', - } - }) || [] - } - label="Assignee" - placeholder="Find assignee" - /> - { - return { - id: repo.repository || '', - name: repo.repository || '', - } - }) || [] - } - label="Repos" - placeholder="Find repo" - /> -
    -
    - -
    -
    -
    -
    -
    -
    - -
    - {data.length !== 0 && - data.map(issue => ( - -
    -
    - {issue.stage === 'open' ? ( - - ) : ( - - )} -
    -
    - - {issue.title} - - - #{issue.issue_number} •{' '} - {formatDistanceToNow(new Date(issue.created_at), { - addSuffix: true, - })}{' '} - by {issue.author} - -
    -
    - -
    - {'epic_name' in issue && issue.epic_name && ( - - )} - - {'labels' in issue && - issue.labels && - JSON.parse(issue.labels).map( - (label: { id: string; name: string; color: string }) => ( - - ) - )} - -
    - - ))} - {data.length === 0 && !isLoading && ( -
    - -
    - )} - {isLoading && ( -
    -
    - - -
    -
    - - -
    -
    - )} -
    -
    - ) -} - -export { TableIssues } diff --git a/apps/website/src/components/toc.tsx b/apps/website/src/components/toc.tsx deleted file mode 100644 index 744d2a6e..00000000 --- a/apps/website/src/components/toc.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Text } from '@status-im/components' - -import { Link } from './link' - -import type { Doc } from '@docs' - -type TOCProps = { - headings: Doc['headings'] -} - -export const TOC = (props: TOCProps) => { - const { headings } = props - return ( -
    - - In this article - -
    - {headings.map((heading, index) => ( - - - {heading.value} - - - ))} -
    -
    - ) -} diff --git a/apps/website/src/components/video-section.tsx b/apps/website/src/components/video-section.tsx deleted file mode 100644 index 5f10488f..00000000 --- a/apps/website/src/components/video-section.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Text } from '@status-im/components' -import { cx } from 'class-variance-authority' -import Image from 'next/image' - -import type { StaticImageData } from 'next/image' - -// import { ParalaxCircle } from './parallax-circle' - -type Props = { - title: string - description: string - image?: StaticImageData - dark?: boolean -} - -const VideoSection = (props: Props) => { - const { title, description, image, dark } = props - - return ( -
    - {/* */} - -
    -
    -

    - {title} -

    - - {description} - -
    -
    -
    - {image && TODO} - {/* */} -
    -
    - ) -} - -export { VideoSection } diff --git a/apps/website/src/components/wallet/comparision-section.tsx b/apps/website/src/components/wallet/comparision-section.tsx deleted file mode 100644 index eceee7ce..00000000 --- a/apps/website/src/components/wallet/comparision-section.tsx +++ /dev/null @@ -1,171 +0,0 @@ -import { Button, Counter, Tag, Text } from '@status-im/components' -import { Parallax } from 'react-scroll-parallax' - -import { ParalaxCircle } from '../parallax-circle' - -const ComparisionSection = () => { - return ( -
    -
    -
    -
    -
    -
    - -
    -

    - Alice has 50 DAI on both Ethereum Mainnet and Optimism and wants - to send 100 DAI to Bob on Arbitrum. -

    -
    - -
    - - Finally! Multi-chain done right! - -
    - - Interested in how Status’s send with auto routing and bridging - works and helps users?{' '} - -
    -
    - -
    -
    -
    -
    -
    - - Other wallets - -
    - {listOneData.map(item => ( - - ))} -
    -
    -
    - - Status Wallet - -
    - {listTwoData.map(item => ( - - ))} -
    -
    - -
    - - eth:opt:arb:0xAgafhja - -
    - ) -} - -export { ComparisionSection } - -const listOneData = [ - { - count: 1, - label: 'Open dApp Browser', - }, - { - count: 2, - label: 'Visit Bridge dApp', - }, - { - count: 3, - label: 'Bridge DAI from Mainnet to Arbitrum', - }, - { - count: 4, - label: 'Send DAI on Arbitrum', - }, - { - count: 5, - label: 'Open dApp Browser', - }, - { - count: 6, - label: 'Visit Bridge dApp', - }, - { - count: 7, - label: 'Bridge DAI from Optimism to Arbitrum', - }, - { - count: 8, - label: 'Send DAI on Arbitrum', - noBorder: true, - }, - { - count: '😮‍💨', - label: 'Is that it?', - secondaryLabel: 'Did I use cheapest route and bridges?', - noBorder: true, - }, -] - -const listTwoData = [ - { - count: 1, - label: 'Select the token', - }, - { - count: 2, - label: 'Select the amount', - }, - { - count: 3, - label: 'Send', - noBorder: true, - }, - { - count: '🎉', - label: 'That’s it!', - secondaryLabel: 'Lowest possible cost!', - noBorder: true, - }, -] - -const Item = (props: { - count: string | number - label: string - secondaryLabel?: string - noBorder?: boolean -}) => { - const { count, label, secondaryLabel, noBorder } = props - const isNumber = typeof count === 'number' - return ( -
    - {isNumber ? ( - - ) : ( - {count} - )} -
    - - {label} - - {!isNumber && ( - - {secondaryLabel} - - )} -
    -
    - ) -} diff --git a/apps/website/src/components/wallet/hands-section.tsx b/apps/website/src/components/wallet/hands-section.tsx deleted file mode 100644 index 91511d98..00000000 --- a/apps/website/src/components/wallet/hands-section.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import gentlemanImage from '@assets/wallet/gentleman.png' -import illustartionHandsDesktop from '@assets/wallet/illustration-hands-desktop.png' -import { Text } from '@status-im/components' -import Image from 'next/image' - -// import illustartionHandsMobile from '@assets/wallet/illustration-hands-mobile.png' -import { illustrations } from '@/config/illustrations' - -const HandsSection = () => { - return ( -
    -
    -
    -

    - Take control -
    - of your crypto -

    - - - No one (including Status!) has the power to freeze, lock-out or - stop a Status user from accessing and transacting their tokens. - - -
    -
    -
    - {[ - { - icon: illustrations.skull, - title: 'Ethereum based assets', - description: - 'We support all assets in the Uniswap Labs default tokenlist and those minted by communities using Status.', - }, - { - icon: illustrations.nft, - title: 'NFTs and collectibles', - description: - 'We will display any NFTs or collectibles listed on OpenSea plus those minted by communities using Status.', - }, - ].map(item => ( -
    - {item.icon.alt} -
    - - Ethereum based assets - - - We support all assets in the Uniswap Labs default tokenlist and - those minted by communities using Status. - -
    -
    - ))} -
    - hands - gentleman -
    - ) -} - -export { HandsSection } diff --git a/apps/website/src/components/wallet/index.tsx b/apps/website/src/components/wallet/index.tsx deleted file mode 100644 index 6fda6706..00000000 --- a/apps/website/src/components/wallet/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export { ComparisionSection } from './comparision-section' -export { HandsSection } from './hands-section' -export { VideoSection } from './video-section' diff --git a/apps/website/src/components/wallet/video-section.tsx b/apps/website/src/components/wallet/video-section.tsx deleted file mode 100644 index dd9d488b..00000000 --- a/apps/website/src/components/wallet/video-section.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { ContextTag, Text } from '@status-im/components' - -import { ParalaxCircle } from '../parallax-circle' - -const VideoSection = () => { - return ( -
    - - -
    -

    - Fully -
    - Decentralized -
    - Networks -

    - -
    - - Status supports blockchain networks that are fully committed to - decentralization. - -
    - - Currently supported networks - -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - ) -} - -export { VideoSection } diff --git a/apps/website/src/config/env.client.mjs b/apps/website/src/config/env.client.mjs deleted file mode 100644 index 9335cb19..00000000 --- a/apps/website/src/config/env.client.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import { z } from 'zod' - -export const envSchema = z.object({ - NEXT_PUBLIC_VERCEL_ENV: z - .union([ - z.literal('production'), - z.literal('preview'), - z.literal('development'), - ]) - .optional(), - NEXT_PUBLIC_GHOST_API_URL: z.string(), - NEXT_PUBLIC_GHOST_API_KEY: z.string(), -}) - -export const clientEnv = envSchema.parse({ - NEXT_PUBLIC_VERCEL_ENV: process.env.NEXT_PUBLIC_VERCEL_ENV, - NEXT_PUBLIC_GHOST_API_URL: process.env.NEXT_PUBLIC_GHOST_API_URL, - NEXT_PUBLIC_GHOST_API_KEY: process.env.NEXT_PUBLIC_GHOST_API_KEY, -}) diff --git a/apps/website/src/config/env.server.mjs b/apps/website/src/config/env.server.mjs deleted file mode 100644 index 9d108d70..00000000 --- a/apps/website/src/config/env.server.mjs +++ /dev/null @@ -1,22 +0,0 @@ -import { z } from 'zod' - -if (typeof window !== 'undefined') { - throw new Error( - '❌ Attempted to access a server-side environment variable on the client' - ) -} - -export const envSchema = z.object({ - VERCEL_ENV: z - .union([ - z.literal('production'), - z.literal('preview'), - z.literal('development'), - ]) - .optional(), - INFURA_API_KEY: z.string(), - TAMAGUI_TARGET: z.literal('web'), - NEXT_PUBLIC_GHOST_API_KEY: z.string(), -}) - -export const serverEnv = envSchema.parse(process.env) diff --git a/apps/website/src/config/env.ts b/apps/website/src/config/env.ts deleted file mode 100644 index ba178e38..00000000 --- a/apps/website/src/config/env.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const env = { - DOCS_REPOSITORY_BASE: '', -} diff --git a/apps/website/src/config/illustrations.ts b/apps/website/src/config/illustrations.ts deleted file mode 100644 index ce5e17f4..00000000 --- a/apps/website/src/config/illustrations.ts +++ /dev/null @@ -1,103 +0,0 @@ -import cog from '@images/illustrations/cog.png' -import doge from '@images/illustrations/doge.png' -import duck from '@images/illustrations/duck.png' -import flower from '@images/illustrations/flower.png' -import hand from '@images/illustrations/hand.png' -import lock from '@images/illustrations/lock.png' -import megaphone from '@images/illustrations/megaphone.png' -import mushroom from '@images/illustrations/mushroom.png' -import nft from '@images/illustrations/nft-frame.png' -import pizza from '@images/illustrations/pizza.png' -import rubik from '@images/illustrations/rubik-cube.png' -import skull from '@images/illustrations/skull.png' -import triangle from '@images/illustrations/triangle.png' -import ufo from '@images/illustrations/ufo.png' - -export type Illustration = keyof typeof illustrations - -export const illustrations = { - cog: { - src: cog, - alt: 'Cog', - width: 48, - height: 48, - }, - doge: { - src: doge, - alt: 'Doge', - width: 48, - height: 48, - }, - duck: { - src: duck, - alt: 'Duck', - width: 48, - height: 48, - }, - flower: { - src: flower, - alt: 'Flower', - width: 48, - height: 48, - }, - hand: { - src: hand, - alt: 'Hand', - width: 48, - height: 48, - }, - lock: { - src: lock, - alt: 'Lock', - width: 48, - height: 48, - }, - megaphone: { - src: megaphone, - alt: 'Megaphone', - width: 48, - height: 48, - }, - nft: { - src: nft, - alt: 'NFT', - width: 48, - height: 48, - }, - pizza: { - src: pizza, - alt: 'Pizza', - width: 48, - height: 48, - }, - rubik: { - src: rubik, - alt: 'Rubik', - width: 48, - height: 48, - }, - skull: { - src: skull, - alt: 'Skull', - width: 48, - height: 48, - }, - triangle: { - src: triangle, - alt: 'Triangle', - width: 48, - height: 48, - }, - ufo: { - src: ufo, - alt: 'UFO', - width: 48, - height: 48, - }, - mushroom: { - src: mushroom, - alt: 'Mushroom', - width: 48, - height: 48, - }, -} as const diff --git a/apps/website/src/config/routes.ts b/apps/website/src/config/routes.ts deleted file mode 100644 index 838d3823..00000000 --- a/apps/website/src/config/routes.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { - GithubIcon, - StatusIcon, - TwitterIcon, - YoutubeIcon, -} from '@status-im/icons' - -export const ROUTES = { - Features: [ - { name: 'Communities', href: '/features/communities' }, - { name: 'Create Communiy', href: '/features/create-community' }, - { name: 'Messenger', href: '/features/messenger' }, - { name: 'Wallet', href: '/features/wallet' }, - ], - Platforms: [ - { name: 'Mobile', href: '/platforms/mobile' }, - { name: 'Desktop', href: '/platforms/desktop' }, - { name: 'Web', href: '/platforms/web' }, - { name: 'Keycard', href: '/keycard' }, - ], - About: [ - { name: 'Mission', href: '/' }, - { name: 'Principles', href: '/' }, - { name: 'Team', href: '/' }, - { name: 'Brand', href: '/brand' }, - ], - Help: [ - { name: 'Overview', href: '/help' }, - { name: 'Getting Started', href: '/help/getting-started' }, - { name: 'Messaging', href: '/help/messaging-and-web3-browser' }, - { name: 'Communities', href: '/help/status-communities' }, - { name: 'Wallet', href: '/help/status-wallet' }, - { name: 'Profile', href: '/help/your-profile-and-preferences' }, - ], - Collaborate: [ - { name: 'Discuss', href: '/' }, - { name: 'Feature upvote', href: '/' }, - { name: 'Blog', href: '/blog' }, - { name: 'Translations', href: '/' }, - // { name: 'Community groups', href: '/' }, - { name: 'Jobs', href: '/jobs' }, - ], - Developers: [ - { name: 'Repos', href: 'https://github.com/status-im' }, - { name: 'Insights', href: '/insights/epics' }, - { name: 'Integrations', href: '/' }, - ], - SNT: [ - // { name: 'Token', href: '/' }, - { name: 'Governance', href: '/' }, - { name: 'Curate', href: 'https://curate.status.app' }, - // { name: 'Exchanges', href: '/' }, - ], -} as const - -// TODO Update icons when available -export const SOCIALS = { - status: { - name: 'Status', - href: 'TODO', - icon: StatusIcon, - }, - twitter: { - name: 'Twitter', - href: 'https://twitter.com/ethstatus', - icon: TwitterIcon, - }, - github: { - name: 'GitHub', - href: 'https://github.com/status-im', - icon: GithubIcon, - }, - youtube: { - name: 'YouTube', - href: 'https://youtube.com/', - icon: YoutubeIcon, - }, -} - -export type Routes = (typeof ROUTES)[keyof typeof ROUTES] diff --git a/apps/website/src/config/stickers.ts b/apps/website/src/config/stickers.ts deleted file mode 100644 index bfb6aeae..00000000 --- a/apps/website/src/config/stickers.ts +++ /dev/null @@ -1,61 +0,0 @@ -import cube from '@images/stickers/cube.png' -import doge from '@images/stickers/doge.png' -import gamepad from '@images/stickers/gamepad.png' -import grumpyCat from '@images/stickers/grumpy-cat.png' -import megaphone from '@images/stickers/megaphone.png' -import pizza from '@images/stickers/pizza.png' -import punk from '@images/stickers/punk.png' -import smudgeCat from '@images/stickers/smudge-cat.png' - -export type Sticker = keyof typeof stickers - -export const stickers = { - doge: { - src: doge, - alt: 'doge', - width: 114, - height: 114, - }, - grumpyCat: { - src: grumpyCat, - alt: 'grumpyCat', - width: 114, - height: 114, - }, - pizza: { - src: pizza, - alt: 'pizza', - width: 114, - height: 114, - }, - punk: { - src: punk, - alt: 'punk', - width: 114, - height: 114, - }, - smudgeCat: { - src: smudgeCat, - alt: 'smudgeCat', - width: 114, - height: 114, - }, - gamepad: { - src: gamepad, - alt: 'gamepad', - width: 132, - height: 132, - }, - megaphone: { - src: megaphone, - alt: 'megaphone', - width: 120, - height: 120, - }, - cube: { - src: cube, - alt: 'rubic cube', - width: 102, - height: 102, - }, -} as const diff --git a/apps/website/src/config/tokens.ts b/apps/website/src/config/tokens.ts deleted file mode 100644 index 9092e1ad..00000000 --- a/apps/website/src/config/tokens.ts +++ /dev/null @@ -1,26 +0,0 @@ -import eth from '@images/tokens/eth.png' -import pepe from '@images/tokens/pepe.png' -import snt from '@images/tokens/snt.png' - -export type Token = keyof typeof tokens - -export const tokens = { - eth: { - src: eth, - alt: 'ETH token', - width: 102, - height: 108, - }, - pepe: { - src: pepe, - alt: 'Pepe the frog token', - width: 82, - height: 90, - }, - snt: { - src: snt, - alt: 'SNT token', - width: 96, - height: 88, - }, -} as const diff --git a/apps/website/src/consts/error-codes.ts b/apps/website/src/consts/error-codes.ts deleted file mode 100644 index d86b3496..00000000 --- a/apps/website/src/consts/error-codes.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const ERROR_CODES = { - NOT_FOUND: 404, - INTERNAL_SERVER_ERROR: 500, - INVALID_PUBLIC_KEY: 601, - INVALID_ENS_NAME: 602, -} diff --git a/apps/website/src/hooks/use-current-breakpoint.ts b/apps/website/src/hooks/use-current-breakpoint.ts deleted file mode 100644 index ec5d3316..00000000 --- a/apps/website/src/hooks/use-current-breakpoint.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { useEffect, useState } from 'react' - -import defaultTheme from 'tailwindcss/defaultTheme' - -// If we had custom breakpoints, we could use this to get the current breakpoint but we will use the default breakpoints for now -// import resolveConfig from 'tailwindcss/resolveConfig' -// import tailwindConfig from '../../tailwind.config' - -// const fullConfig = resolveConfig(tailwindConfig) - -type Breakpoint = keyof (typeof defaultTheme)['screens'] - -export function useCurrentBreakpoint(): Breakpoint { - const [breakpoint, setBreakpoint] = useState('sm') - - useEffect(() => { - const handleResize = () => { - const screenWidth = window.innerWidth - const breakpoints = Object.entries(defaultTheme.screens) as [ - Breakpoint, - string - ][] - - for (let i = breakpoints.length - 1; i >= 0; i--) { - const [breakpoint, minWidth] = breakpoints[i] - - const convertedMinWidth = parseInt(minWidth, 10) - - if (screenWidth >= convertedMinWidth) { - setBreakpoint(breakpoint) - return - } - } - } - - handleResize() - - window.addEventListener('resize', handleResize) - - return () => { - window.removeEventListener('resize', handleResize) - } - }, []) - - return breakpoint -} diff --git a/apps/website/src/hooks/use-debounce.ts b/apps/website/src/hooks/use-debounce.ts deleted file mode 100644 index 67d8c03b..00000000 --- a/apps/website/src/hooks/use-debounce.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useEffect, useState } from 'react' - -export function useDebounce(value: T, delay?: number): T { - const [debouncedValue, setDebouncedValue] = useState(value) - - useEffect(() => { - const timer = setTimeout(() => setDebouncedValue(value), delay || 300) - - return () => { - clearTimeout(timer) - } - }, [value, delay]) - - return debouncedValue -} diff --git a/apps/website/src/hooks/use-intersection-observer.ts b/apps/website/src/hooks/use-intersection-observer.ts deleted file mode 100644 index e9b8d420..00000000 --- a/apps/website/src/hooks/use-intersection-observer.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { useEffect, useState } from 'react' - -import type { RefObject } from 'react' - -interface Args extends IntersectionObserverInit { - freezeOnceVisible?: boolean -} - -export function useIntersectionObserver( - elementRef: RefObject, - { - threshold = 0, - root = null, - rootMargin = '0%', - freezeOnceVisible = false, - }: Args -): IntersectionObserverEntry | undefined { - const [entry, setEntry] = useState() - - const frozen = entry?.isIntersecting && freezeOnceVisible - - const updateEntry = ([entry]: IntersectionObserverEntry[]): void => { - setEntry(entry) - } - - useEffect(() => { - const node = elementRef?.current // DOM Ref - const hasIOSupport = !!window.IntersectionObserver - - if (!hasIOSupport || frozen || !node) return - - const observerParams = { threshold, root, rootMargin } - const observer = new IntersectionObserver(updateEntry, observerParams) - - observer.observe(node) - - return () => observer.disconnect() - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [elementRef?.current, JSON.stringify(threshold), root, rootMargin, frozen]) - - return entry -} diff --git a/apps/website/src/hooks/use-keyboard-shortcuts.ts b/apps/website/src/hooks/use-keyboard-shortcuts.ts deleted file mode 100644 index 022df4a6..00000000 --- a/apps/website/src/hooks/use-keyboard-shortcuts.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useEffect } from 'react' - -import tinykeys from 'tinykeys' - -import type { KeyBindingMap } from 'tinykeys' - -export function useKeyboardShortcuts(map: KeyBindingMap) { - useEffect(() => { - return tinykeys(window, map) - }) -} diff --git a/apps/website/src/hooks/use-lock-scroll.ts b/apps/website/src/hooks/use-lock-scroll.ts deleted file mode 100644 index 9ff78a4d..00000000 --- a/apps/website/src/hooks/use-lock-scroll.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const useLockScroll = (open = false) => { - if (typeof document === 'undefined') { - return - } - // Adds the following code to disable scrolling when the menu is open - const rootElement = document.documentElement - if (open) { - rootElement.style.overflowY = 'hidden' - } else { - rootElement.style.overflowY = 'auto' - } -} diff --git a/apps/website/src/hooks/use-outside-click.ts b/apps/website/src/hooks/use-outside-click.ts deleted file mode 100644 index c6cee2bd..00000000 --- a/apps/website/src/hooks/use-outside-click.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useEffect, useRef } from 'react' - -export const useOutsideClick = (callback: () => void) => { - const ref = useRef(null) - - useEffect(() => { - const handleClick = (event: MouseEvent) => { - if (ref.current && !ref.current.contains(event.target as Node)) { - callback() - } - } - - document.addEventListener('click', handleClick, true) - - return () => { - document.removeEventListener('click', handleClick, true) - } - }, [callback]) - - return ref -} diff --git a/apps/website/src/hooks/use-render-if-visible.tsx b/apps/website/src/hooks/use-render-if-visible.tsx deleted file mode 100644 index 12b6d407..00000000 --- a/apps/website/src/hooks/use-render-if-visible.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import React, { useEffect, useMemo, useRef, useState } from 'react' - -const TIMEOUT = 600 - -type Props = { - initialVisible?: boolean - defaultHeight?: number - visibleOffset?: number - disabled?: boolean - root?: HTMLElement | null - rootElement?: string - rootElementClass?: string - children: React.ReactNode - placeholderComponent?: React.ReactNode -} - -export const RenderIfVisible = ({ - initialVisible = false, - defaultHeight = 300, - visibleOffset = 1000, - disabled = false, - root = null, - rootElement = 'div', - rootElementClass = '', - placeholderComponent: PlaceholderComponent, - children, -}: Props) => { - const [isVisible, setIsVisible] = useState(initialVisible) - const wasVisible = useRef(initialVisible) - const placeholderHeight = useRef(defaultHeight) - const intersectionRef = useRef(null) - - useEffect(() => { - if (intersectionRef.current) { - const localRef = intersectionRef.current - const observer = new IntersectionObserver( - entries => { - if (!entries[0].isIntersecting) { - placeholderHeight.current = localRef!.offsetHeight - } - if (typeof window !== undefined && window.requestIdleCallback) { - window.requestIdleCallback( - () => setIsVisible(entries[0].isIntersecting), - { - timeout: TIMEOUT, - } - ) - } else { - setIsVisible(entries[0].isIntersecting) - } - }, - { root, rootMargin: `${visibleOffset}px 0px ${visibleOffset}px 0px` } - ) - - observer.observe(localRef) - return () => { - if (localRef) { - observer.unobserve(localRef) - } - } - } - }, [root, visibleOffset]) - - useEffect(() => { - if (isVisible) { - wasVisible.current = true - } - }, [isVisible]) - - const rootClasses = useMemo( - () => `renderIfVisible ${rootElementClass}`, - [rootElementClass] - ) - - return React.createElement( - rootElement, - { - ref: intersectionRef, - className: rootClasses, - }, - isVisible || (disabled && wasVisible.current) - ? children - : PlaceholderComponent || null - ) -} diff --git a/apps/website/src/hooks/use-search-engine.ts b/apps/website/src/hooks/use-search-engine.ts deleted file mode 100644 index c170b106..00000000 --- a/apps/website/src/hooks/use-search-engine.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { useCallback, useState } from 'react' - -import MiniSearch from 'minisearch' - -import type { DocIndex } from 'contentlayer.config' -import type { SearchResult as MiniSearchResult } from 'minisearch' - -type SearchResult = MiniSearchResult & { - title: string - heading: string - text: string - path: string -} - -type Result = { - title: string - match: string[] - path: string - - headings: Array<{ - text: string - match: string[] - paragraphs: Array<{ - text: string - match: string[] - }> - }> -} - -type SearchDoc = { - id: number - title: string - path: string - heading: string - text: string -} - -export const useSearchEngine = (limit = 5) => { - const [engine] = useState>>(async () => { - const miniSearch = new MiniSearch({ - fields: ['title', 'heading', 'text'], // fields to index for full-text search - storeFields: ['title', 'heading', 'text', 'path'], // fields to return with search results - searchOptions: { - fuzzy: 0.25, - prefix: true, - }, - }) - - if (typeof window === 'undefined') { - return miniSearch - } - - const docIndex = (await import('../../.contentlayer/en.json')) - .default as unknown as DocIndex[] - - const docs: SearchDoc[] = [] - let id = 0 - - for (const item of docIndex) { - for (const [heading, texts] of Object.entries(item.content)) { - for (const text of texts) { - docs.push({ - id: id++, - title: item.title, - path: item.path, - heading, - text, - }) - } - } - } - - miniSearch.addAll(docs) - - return miniSearch - }) - - const [results, setResults] = useState([]) - - const query = useCallback( - async (term: string) => { - const searchResults = (await engine) - .search(term) - .slice(0, limit) as SearchResult[] - - const results: Result[] = [] - - for (const item of searchResults) { - // results[item.title] ??= { } - // results[item.title][item.heading] ??= [] - // results[item.title][item.heading].push({ - // text: item.text, - // match: item.match, - // }) - - const foundIndex = results.findIndex( - result => result.title === item.title - ) - - const matches = Object.entries(item.match).reduce<{ - title: string[] - heading: string[] - text: string[] - }>( - (acc, [term, fields]) => { - fields.includes('title') && acc.title.push(term) - fields.includes('heading') && acc.heading.push(term) - fields.includes('text') && acc.text.push(term) - return acc - }, - { - title: [], - heading: [], - text: [], - } - ) - - if (foundIndex === -1) { - results.push({ - title: item.title, - match: matches.title, - path: item.path, - headings: [ - { - text: item.heading, - match: matches.heading, - paragraphs: [ - { - text: item.text, - match: matches.text, - }, - ], - }, - ], - }) - } else { - const foundHeadingIndex = results[foundIndex].headings.findIndex( - ({ text }) => text === item.heading - ) - - if (foundHeadingIndex === -1) { - results[foundIndex].headings.push({ - text: item.heading, - match: matches.heading, - paragraphs: [ - { - text: item.text, - match: matches.text, - }, - ], - }) - } else { - results[foundIndex].headings[foundHeadingIndex].paragraphs.push({ - text: item.text, - match: matches.text, - }) - } - } - } - - setResults(results) - }, - [engine, limit] - ) - - return { results, query } as const -} diff --git a/apps/website/src/hooks/use-url-data.ts b/apps/website/src/hooks/use-url-data.ts deleted file mode 100644 index eb24825e..00000000 --- a/apps/website/src/hooks/use-url-data.ts +++ /dev/null @@ -1,187 +0,0 @@ -// todo?: rename to use-encoded-url-data, url-params - -import { useEffect, useState } from 'react' - -import { - deserializePublicKey, - indicesToTags, - publicKeyToColorHash, - publicKeyToEmojiHash, - recoverPublicKeyFromEncodedURLData, -} from '@status-im/js' - -import { ERROR_CODES } from '@/consts/error-codes' - -import type { Data } from '@/components/preview-page' -import type { EnsResponse } from '@/pages/api/ens' -import type { ChannelInfo, CommunityInfo, UserInfo } from '@status-im/js' -import type { - decodeChannelURLData, - decodeCommunityURLData, - decodeUserURLData, -} from '@status-im/js/encode-url-data' - -export const useURLData = ( - type: 'community' | 'channel' | 'profile', - decodedData: - | ReturnType - | ReturnType - | ReturnType - | undefined - | null, - encodedData: string | undefined | null -) => { - const [publicKey, setPublicKey] = useState() - const [channelUuid, setChannelUuid] = useState() - const [data, setData] = useState() - const [error, setError] = useState() - const [isLoading, setIsLoading] = useState(false) - - const compressPublicKey = type !== 'profile' - - useEffect(() => { - try { - // todo: set constrains on url data (e.g. max lenght, byte) - // todo: decoded url data againts schema (e.g. length) - // if (/* invalid schema */) { - // return - // } - - const hash = window.location.hash.replace('#', '') - - // use provided public key or recover it from ENS name - if (!decodedData || !encodedData) { - if (!hash) { - setError('NOT_FOUND') - - return - } - - // recover public key from ENS name - const ensName = hash.match(/^.+\.eth$/)?.[0] - if (ensName) { - const fetchEnsPubkey = async () => { - try { - const response = await fetch('/api/ens', { - method: 'POST', - body: JSON.stringify({ ensName, compress: compressPublicKey }), - }) - const { publicKey } = (await response.json()) as EnsResponse - - setPublicKey(publicKey) - } catch { - setError('INVALID_ENS_NAME') - } - - setIsLoading(false) - } - - setIsLoading(true) - fetchEnsPubkey() - - return - } - - // use provided public key - try { - const publicKey = deserializePublicKey(hash, { - compress: compressPublicKey, - }) - - setPublicKey(publicKey) - - return - } catch (error) { - console.error(error) - setError('INVALID_PUBLIC_KEY') - - return - } - } - - // recover public key from encoded data - let deserializedPublicKey - try { - const recoveredPublicKey = recoverPublicKeyFromEncodedURLData( - encodedData, - hash - ) - deserializedPublicKey = deserializePublicKey(recoveredPublicKey, { - compress: compressPublicKey, - }) - - setPublicKey(deserializedPublicKey) - } catch (error) { - console.error(error) - setError('INVALID_PUBLIC_KEY') - - return - } - - // map data - switch (type) { - case 'community': { - const data = decodedData as Required< - ReturnType - > - const info: CommunityInfo = { - displayName: data.displayName, - description: data.description, - color: data.color, - membersCount: data.membersCount, - tags: indicesToTags(data.tagIndices), - } - - setData({ type: 'community', info }) - - return - } - case 'channel': { - const data = decodedData as Required< - ReturnType - > - const info: Omit & { - community: Pick - } = { - displayName: data.displayName, - description: data.description, - color: data.color, - emoji: data.emoji, - community: { displayName: data.community.displayName }, - } - - setData({ type: 'channel', info }) - setChannelUuid(data.uuid) - - return - } - case 'profile': { - const data = decodedData as Required< - ReturnType - > - const info: UserInfo = { - displayName: data.displayName, - description: data.description, - colorHash: publicKeyToColorHash(deserializedPublicKey), - emojiHash: publicKeyToEmojiHash(deserializedPublicKey), - } - - setData({ type: 'profile', info }) - - return - } - } - } catch (error) { - console.error(error) - setError('INTERNAL_SERVER_ERROR') - } - }, []) // eslint-disable-line react-hooks/exhaustive-deps - - return { - publicKey, - channelUuid, - data, - errorCode: error ? ERROR_CODES[error] : undefined, - isLoading, - } -} diff --git a/apps/website/src/layouts/app-layout.tsx b/apps/website/src/layouts/app-layout.tsx deleted file mode 100644 index ea56d296..00000000 --- a/apps/website/src/layouts/app-layout.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { cx } from 'class-variance-authority' -import { ParallaxProvider } from 'react-scroll-parallax' - -import { Footer } from '@/components/footer/footer' -import { FooterMobile } from '@/components/footer/footer-mobile' -import { FloatingMenu } from '@/components/navigation/floating-menu' -import { NavDesktop } from '@/components/navigation/nav-desktop' -import { NavMobile } from '@/components/navigation/nav-mobile' -import { Prefooter } from '@/components/pre-footer' - -import type { ReactElement, ReactNode } from 'react' - -type AppLayoutProps = { - hasPreFooter?: boolean - children: ReactElement -} - -export const AppLayout: React.FC = ({ - hasPreFooter = true, - children, -}) => { - return ( - <> - -
    - - - - {/* ROUNDED WHITE BG */} - -
    - {/* TODO Check max-width to use */} - {/*
    */} - - {children} -
    -
    - {hasPreFooter && } -
    - -
    - - ) -} - -export const Content = ({ - children, - className, - dark = false, -}: { - children: ReactNode - className?: string - dark?: boolean -}) => { - return ( -
    - {children} -
    - ) -} diff --git a/apps/website/src/layouts/insights-layout.tsx b/apps/website/src/layouts/insights-layout.tsx deleted file mode 100644 index 14726121..00000000 --- a/apps/website/src/layouts/insights-layout.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { SidebarMenu } from '../components' -import { AppLayout } from './app-layout' - -const STATIC_LINKS = [ - { - label: 'Orphans', - href: '/insights/orphans', - }, - { - label: 'Repos', - href: '/insights/repos', - }, -] - -interface InsightsLayoutProps { - children: React.ReactNode - links: string[] -} - -export const InsightsLayout: React.FC = ({ - children, - links: linksFromProps, -}) => { - const epicLinks = - linksFromProps?.map(epic => { - return { - label: epic || '', - href: `/insights/epics/${epic}`, - } - }) || [] - - const links = [ - { - label: 'Epics', - links: [ - { - label: 'Overview', - href: '/insights/epics', - }, - ...epicLinks, - ], - }, - ...STATIC_LINKS, - ] - - return ( - -
    - {} -
    {children}
    -
    -
    - ) -} diff --git a/apps/website/src/lib/burnup.ts b/apps/website/src/lib/burnup.ts deleted file mode 100644 index 6d2dc3f1..00000000 --- a/apps/website/src/lib/burnup.ts +++ /dev/null @@ -1,178 +0,0 @@ -export const GET_BURNUP = /* GraphQL */ ` - query getBurnup($epicNames: [String!], $from: timestamptz, $to: timestamptz) { - gh_burnup( - where: { - epic_name: { _in: $epicNames } - _or: [ - { - _and: [ - { date_field: { _gte: $from } } - { date_field: { _lt: $to } } - ] - } - { - _and: [ - { date_field: { _gt: $from } } - { date_field: { _lte: $to } } - ] - } - ] - } - order_by: { date_field: asc } - ) { - epic_name - total_closed_issues - total_opened_issues - date_field - } - } -` - -export const GET_ISSUES_BY_EPIC = /* GraphQL */ ` - query getIssuesByEpic( - $where: gh_epic_issues_bool_exp! - $limit: Int! - $offset: Int! - $orderBy: order_by - ) { - gh_epic_issues( - where: $where - order_by: { created_at: $orderBy } - limit: $limit - offset: $offset - ) { - assignee - author - closed_at - created_at - epic_color - epic_name - repository - stage - title - issue_number - issue_url - } - } -` - -export const GET_EPIC_ISSUES_COUNT = /* GraphQL */ ` - query getEpicIssuesCount($where: gh_epic_issues_bool_exp!) { - gh_epic_issues(where: $where) { - closed_at - } - } -` - -export const GET_FILTERS_WITH_EPIC = /* GraphQL */ ` - query getFiltersWithEpic($epicName: String!) { - authors: gh_epic_issues( - where: { epic_name: { _eq: $epicName }, author: { _is_null: false } } - distinct_on: author - ) { - author - } - assignees: gh_epic_issues( - where: { epic_name: { _eq: $epicName }, assignee: { _is_null: false } } - distinct_on: assignee - ) { - assignee - } - repos: gh_epic_issues( - where: { epic_name: { _eq: $epicName } } - distinct_on: repository - ) { - repository - } - } -` - -export const GET_EPIC_LINKS = /* GraphQL */ ` - query getEpicMenuLinks( - $where: gh_epics_bool_exp - $orderBy: [gh_epics_order_by!] - $limit: Int - $offset: Int - ) { - gh_epics( - where: $where - order_by: $orderBy - limit: $limit - offset: $offset - distinct_on: epic_name - ) { - epic_name - epic_color - epic_description - status - } - } -` - -export const GET_REPOS = /* GraphQL */ ` - query getRepositories { - gh_repositories { - description - full_name - name - open_issues_count - stargazers_count - visibility - } - } -` - -export const GET_ORPHANS = /* GraphQL */ ` - query getOrphans( - $where: gh_orphans_bool_exp! - $limit: Int! - $offset: Int! - $orderBy: order_by - ) { - gh_orphans( - where: $where - order_by: { created_at: $orderBy } - limit: $limit - offset: $offset - ) { - labels - assignee - author - issue_number - issue_url - created_at - closed_at - repository - stage - title - } - } -` - -export const GET_ORPHANS_COUNT = /* GraphQL */ ` - query getOrphansCount($where: gh_orphans_bool_exp!) { - gh_orphans(where: $where) { - closed_at - } - } -` - -export const GET_FILTERS_FOR_ORPHANS = /* GraphQL */ ` - query getFiltersForOrphans { - authors: gh_orphans( - where: { author: { _is_null: false } } - distinct_on: author - ) { - author - } - assignees: gh_orphans( - where: { assignee: { _is_null: false } } - distinct_on: assignee - ) { - assignee - } - repos: gh_orphans(distinct_on: repository) { - repository - } - } -` diff --git a/apps/website/src/lib/ethereum-client.ts b/apps/website/src/lib/ethereum-client.ts deleted file mode 100644 index 051686a0..00000000 --- a/apps/website/src/lib/ethereum-client.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { EthereumClient } from '@status-im/js' - -import { serverEnv } from '@/config/env.server.mjs' - -let client: EthereumClient | undefined - -export function getEthereumClient(): EthereumClient | undefined { - if (!client) { - client = new EthereumClient( - `https://mainnet.infura.io/v3/${serverEnv.INFURA_API_KEY}` - ) - - return client - } - - return client -} diff --git a/apps/website/src/lib/ghost.ts b/apps/website/src/lib/ghost.ts deleted file mode 100644 index 397dd33a..00000000 --- a/apps/website/src/lib/ghost.ts +++ /dev/null @@ -1,99 +0,0 @@ -import GhostContentAPI from '@tryghost/content-api' - -import { clientEnv } from '@/config/env.client.mjs' - -/** @see https://ghost.org/docs/content-api# */ -const ghost = new GhostContentAPI({ - url: clientEnv.NEXT_PUBLIC_GHOST_API_URL, - key: clientEnv.NEXT_PUBLIC_GHOST_API_KEY, - version: 'v5.0', -}) - -type Params = { page?: number; limit?: number; tag?: string } - -export const getPosts = async (params: Params = {}) => { - const { page = 1, limit = 7, tag } = params - - const response = await ghost.posts.browse({ - include: ['tags', 'authors'], - order: 'published_at DESC', - limit, - page, - ...(tag - ? { filter: `tag:${tag}+visibility:public` } - : { filter: 'visibility:public' }), - }) - - return { posts: [...response], meta: response.meta } -} - -export const getPostBySlug = async (slug: string) => { - return await ghost.posts.read( - { slug }, - { - include: ['tags', 'authors'], - } - ) -} - -export const getPostsByTagSlug = async (slug: string, page = 1) => { - const response = await ghost.posts.browse({ - filter: `tag:${slug}+visibility:public`, - include: ['tags', 'authors'], - limit: 6, - order: 'published_at DESC', - page, - }) - - return { posts: [...response], meta: response.meta } -} - -export const getPostsByAuthorSlug = async (slug: string, page = 1) => { - const response = await ghost.posts.browse({ - filter: `author:${slug}+visibility:public`, - include: ['tags', 'authors'], - limit: 6, - order: 'published_at DESC', - page, - }) - - return { posts: [...response], meta: response.meta } -} - -export const getPostSlugs = async (): Promise => { - const posts = await ghost.posts.browse({ - limit: 7, - fields: 'slug', - filter: 'visibility:public', - }) - - return posts.map(post => post.slug) -} - -export const getTags = async () => { - return await ghost.tags.browse({ - limit: clientEnv.NEXT_PUBLIC_VERCEL_ENV === 'production' ? 'all' : 6, - fields: 'name,slug', - filter: 'visibility:public', - }) -} - -export const getTagSlugs = async (): Promise => { - const tags = await ghost.tags.browse({ - limit: clientEnv.NEXT_PUBLIC_VERCEL_ENV === 'production' ? 'all' : 6, - fields: 'slug', - filter: 'visibility:public', - }) - - return tags.map(tag => tag.slug) -} - -export const getAuthorSlugs = async (): Promise => { - const authors = await ghost.authors.browse({ - limit: clientEnv.NEXT_PUBLIC_VERCEL_ENV === 'production' ? 'all' : 6, - fields: 'slug', - filter: 'visibility:public', - }) - - return authors.map(author => author.slug) -} diff --git a/apps/website/src/lib/graphql/api.ts b/apps/website/src/lib/graphql/api.ts deleted file mode 100644 index 92edd421..00000000 --- a/apps/website/src/lib/graphql/api.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { GraphQLClient } from 'graphql-request' - -import type { RequestDocument, Variables } from 'graphql-request' - -export const GRAPHQL_ENDPOINT = `https://hasura.infra.status.im/v1/graphql` - -export const api = ( - operation: RequestDocument, - variables?: V, - headers?: Record -): Promise => { - const client = new GraphQLClient(GRAPHQL_ENDPOINT, { - headers: { - 'Content-Type': 'application/json', - ...headers, - }, - }) - - return client.request(operation, variables as Variables) -} - -export const createFetcher = ( - operation: string, - variables?: V -) => { - return () => api(operation, variables) -} diff --git a/apps/website/src/lib/graphql/generated/hooks.ts b/apps/website/src/lib/graphql/generated/hooks.ts deleted file mode 100644 index d5390d57..00000000 --- a/apps/website/src/lib/graphql/generated/hooks.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { useQuery } from '@tanstack/react-query' - -import { createFetcher } from '../api' - -import type * as Types from './operations' -import type { UseQueryOptions } from '@tanstack/react-query' - -export const GetBurnupDocument = ` - query getBurnup($epicNames: [String!], $from: timestamptz, $to: timestamptz) { - gh_burnup( - where: {epic_name: {_in: $epicNames}, _or: [{_and: [{date_field: {_gte: $from}}, {date_field: {_lt: $to}}]}, {_and: [{date_field: {_gt: $from}}, {date_field: {_lte: $to}}]}]} - order_by: {date_field: asc} - ) { - epic_name - total_closed_issues - total_opened_issues - date_field - } -} - ` -export const useGetBurnupQuery = < - TData = Types.GetBurnupQuery, - TError = GraphqlApiError ->( - variables?: Types.GetBurnupQueryVariables, - options?: UseQueryOptions -) => - useQuery( - variables === undefined ? ['getBurnup'] : ['getBurnup', variables], - createFetcher( - GetBurnupDocument, - variables - ), - options - ) - -useGetBurnupQuery.getKey = (variables?: Types.GetBurnupQueryVariables) => - variables === undefined ? ['getBurnup'] : ['getBurnup', variables] -export const GetIssuesByEpicDocument = ` - query getIssuesByEpic($where: gh_epic_issues_bool_exp!, $limit: Int!, $offset: Int!, $orderBy: order_by) { - gh_epic_issues( - where: $where - order_by: {created_at: $orderBy} - limit: $limit - offset: $offset - ) { - assignee - author - closed_at - created_at - epic_color - epic_name - repository - stage - title - issue_number - issue_url - } -} - ` -export const useGetIssuesByEpicQuery = < - TData = Types.GetIssuesByEpicQuery, - TError = GraphqlApiError ->( - variables: Types.GetIssuesByEpicQueryVariables, - options?: UseQueryOptions -) => - useQuery( - ['getIssuesByEpic', variables], - createFetcher< - Types.GetIssuesByEpicQuery, - Types.GetIssuesByEpicQueryVariables - >(GetIssuesByEpicDocument, variables), - options - ) - -useGetIssuesByEpicQuery.getKey = ( - variables: Types.GetIssuesByEpicQueryVariables -) => ['getIssuesByEpic', variables] -export const GetEpicIssuesCountDocument = ` - query getEpicIssuesCount($where: gh_epic_issues_bool_exp!) { - gh_epic_issues(where: $where) { - closed_at - } -} - ` -export const useGetEpicIssuesCountQuery = < - TData = Types.GetEpicIssuesCountQuery, - TError = GraphqlApiError ->( - variables: Types.GetEpicIssuesCountQueryVariables, - options?: UseQueryOptions -) => - useQuery( - ['getEpicIssuesCount', variables], - createFetcher< - Types.GetEpicIssuesCountQuery, - Types.GetEpicIssuesCountQueryVariables - >(GetEpicIssuesCountDocument, variables), - options - ) - -useGetEpicIssuesCountQuery.getKey = ( - variables: Types.GetEpicIssuesCountQueryVariables -) => ['getEpicIssuesCount', variables] -export const GetFiltersWithEpicDocument = ` - query getFiltersWithEpic($epicName: String!) { - authors: gh_epic_issues( - where: {epic_name: {_eq: $epicName}, author: {_is_null: false}} - distinct_on: author - ) { - author - } - assignees: gh_epic_issues( - where: {epic_name: {_eq: $epicName}, assignee: {_is_null: false}} - distinct_on: assignee - ) { - assignee - } - repos: gh_epic_issues( - where: {epic_name: {_eq: $epicName}} - distinct_on: repository - ) { - repository - } -} - ` -export const useGetFiltersWithEpicQuery = < - TData = Types.GetFiltersWithEpicQuery, - TError = GraphqlApiError ->( - variables: Types.GetFiltersWithEpicQueryVariables, - options?: UseQueryOptions -) => - useQuery( - ['getFiltersWithEpic', variables], - createFetcher< - Types.GetFiltersWithEpicQuery, - Types.GetFiltersWithEpicQueryVariables - >(GetFiltersWithEpicDocument, variables), - options - ) - -useGetFiltersWithEpicQuery.getKey = ( - variables: Types.GetFiltersWithEpicQueryVariables -) => ['getFiltersWithEpic', variables] -export const GetEpicMenuLinksDocument = ` - query getEpicMenuLinks($where: gh_epics_bool_exp, $orderBy: [gh_epics_order_by!], $limit: Int, $offset: Int) { - gh_epics( - where: $where - order_by: $orderBy - limit: $limit - offset: $offset - distinct_on: epic_name - ) { - epic_name - epic_color - epic_description - status - } -} - ` -export const useGetEpicMenuLinksQuery = < - TData = Types.GetEpicMenuLinksQuery, - TError = GraphqlApiError ->( - variables?: Types.GetEpicMenuLinksQueryVariables, - options?: UseQueryOptions -) => - useQuery( - variables === undefined - ? ['getEpicMenuLinks'] - : ['getEpicMenuLinks', variables], - createFetcher< - Types.GetEpicMenuLinksQuery, - Types.GetEpicMenuLinksQueryVariables - >(GetEpicMenuLinksDocument, variables), - options - ) - -useGetEpicMenuLinksQuery.getKey = ( - variables?: Types.GetEpicMenuLinksQueryVariables -) => - variables === undefined - ? ['getEpicMenuLinks'] - : ['getEpicMenuLinks', variables] -export const GetRepositoriesDocument = ` - query getRepositories { - gh_repositories { - description - full_name - name - open_issues_count - stargazers_count - visibility - } -} - ` -export const useGetRepositoriesQuery = < - TData = Types.GetRepositoriesQuery, - TError = GraphqlApiError ->( - variables?: Types.GetRepositoriesQueryVariables, - options?: UseQueryOptions -) => - useQuery( - variables === undefined - ? ['getRepositories'] - : ['getRepositories', variables], - createFetcher< - Types.GetRepositoriesQuery, - Types.GetRepositoriesQueryVariables - >(GetRepositoriesDocument, variables), - options - ) - -useGetRepositoriesQuery.getKey = ( - variables?: Types.GetRepositoriesQueryVariables -) => - variables === undefined ? ['getRepositories'] : ['getRepositories', variables] -export const GetOrphansDocument = ` - query getOrphans($where: gh_orphans_bool_exp!, $limit: Int!, $offset: Int!, $orderBy: order_by) { - gh_orphans( - where: $where - order_by: {created_at: $orderBy} - limit: $limit - offset: $offset - ) { - labels - assignee - author - issue_number - issue_url - created_at - closed_at - repository - stage - title - } -} - ` -export const useGetOrphansQuery = < - TData = Types.GetOrphansQuery, - TError = GraphqlApiError ->( - variables: Types.GetOrphansQueryVariables, - options?: UseQueryOptions -) => - useQuery( - ['getOrphans', variables], - createFetcher( - GetOrphansDocument, - variables - ), - options - ) - -useGetOrphansQuery.getKey = (variables: Types.GetOrphansQueryVariables) => [ - 'getOrphans', - variables, -] -export const GetOrphansCountDocument = ` - query getOrphansCount($where: gh_orphans_bool_exp!) { - gh_orphans(where: $where) { - closed_at - } -} - ` -export const useGetOrphansCountQuery = < - TData = Types.GetOrphansCountQuery, - TError = GraphqlApiError ->( - variables: Types.GetOrphansCountQueryVariables, - options?: UseQueryOptions -) => - useQuery( - ['getOrphansCount', variables], - createFetcher< - Types.GetOrphansCountQuery, - Types.GetOrphansCountQueryVariables - >(GetOrphansCountDocument, variables), - options - ) - -useGetOrphansCountQuery.getKey = ( - variables: Types.GetOrphansCountQueryVariables -) => ['getOrphansCount', variables] -export const GetFiltersForOrphansDocument = ` - query getFiltersForOrphans { - authors: gh_orphans(where: {author: {_is_null: false}}, distinct_on: author) { - author - } - assignees: gh_orphans( - where: {assignee: {_is_null: false}} - distinct_on: assignee - ) { - assignee - } - repos: gh_orphans(distinct_on: repository) { - repository - } -} - ` -export const useGetFiltersForOrphansQuery = < - TData = Types.GetFiltersForOrphansQuery, - TError = GraphqlApiError ->( - variables?: Types.GetFiltersForOrphansQueryVariables, - options?: UseQueryOptions -) => - useQuery( - variables === undefined - ? ['getFiltersForOrphans'] - : ['getFiltersForOrphans', variables], - createFetcher< - Types.GetFiltersForOrphansQuery, - Types.GetFiltersForOrphansQueryVariables - >(GetFiltersForOrphansDocument, variables), - options - ) - -useGetFiltersForOrphansQuery.getKey = ( - variables?: Types.GetFiltersForOrphansQueryVariables -) => - variables === undefined - ? ['getFiltersForOrphans'] - : ['getFiltersForOrphans', variables] diff --git a/apps/website/src/lib/graphql/generated/operations.ts b/apps/website/src/lib/graphql/generated/operations.ts deleted file mode 100644 index a9e4192b..00000000 --- a/apps/website/src/lib/graphql/generated/operations.ts +++ /dev/null @@ -1,149 +0,0 @@ -import type * as Types from './schemas' - -export type GetBurnupQueryVariables = Types.Exact<{ - epicNames?: Types.InputMaybe< - Array | Types.Scalars['String']['input'] - > - from?: Types.InputMaybe - to?: Types.InputMaybe -}> - -export type GetBurnupQuery = { - __typename?: 'query_root' - gh_burnup: Array<{ - __typename?: 'gh_burnup' - epic_name?: string | null - total_closed_issues?: any | null - total_opened_issues?: any | null - date_field?: any | null - }> -} - -export type GetIssuesByEpicQueryVariables = Types.Exact<{ - where: Types.Gh_Epic_Issues_Bool_Exp - limit: Types.Scalars['Int']['input'] - offset: Types.Scalars['Int']['input'] - orderBy?: Types.InputMaybe -}> - -export type GetIssuesByEpicQuery = { - __typename?: 'query_root' - gh_epic_issues: Array<{ - __typename?: 'gh_epic_issues' - assignee?: string | null - author?: string | null - closed_at?: any | null - created_at?: any | null - epic_color?: string | null - epic_name?: string | null - repository?: string | null - stage?: string | null - title?: string | null - issue_number?: any | null - issue_url?: string | null - }> -} - -export type GetEpicIssuesCountQueryVariables = Types.Exact<{ - where: Types.Gh_Epic_Issues_Bool_Exp -}> - -export type GetEpicIssuesCountQuery = { - __typename?: 'query_root' - gh_epic_issues: Array<{ - __typename?: 'gh_epic_issues' - closed_at?: any | null - }> -} - -export type GetFiltersWithEpicQueryVariables = Types.Exact<{ - epicName: Types.Scalars['String']['input'] -}> - -export type GetFiltersWithEpicQuery = { - __typename?: 'query_root' - authors: Array<{ __typename?: 'gh_epic_issues'; author?: string | null }> - assignees: Array<{ __typename?: 'gh_epic_issues'; assignee?: string | null }> - repos: Array<{ __typename?: 'gh_epic_issues'; repository?: string | null }> -} - -export type GetEpicMenuLinksQueryVariables = Types.Exact<{ - where?: Types.InputMaybe - orderBy?: Types.InputMaybe< - Array | Types.Gh_Epics_Order_By - > - limit?: Types.InputMaybe - offset?: Types.InputMaybe -}> - -export type GetEpicMenuLinksQuery = { - __typename?: 'query_root' - gh_epics: Array<{ - __typename?: 'gh_epics' - epic_name?: string | null - epic_color?: string | null - epic_description?: string | null - status?: string | null - }> -} - -export type GetRepositoriesQueryVariables = Types.Exact<{ - [key: string]: never -}> - -export type GetRepositoriesQuery = { - __typename?: 'query_root' - gh_repositories: Array<{ - __typename?: 'gh_repositories' - description?: string | null - full_name?: string | null - name?: string | null - open_issues_count?: any | null - stargazers_count?: any | null - visibility?: string | null - }> -} - -export type GetOrphansQueryVariables = Types.Exact<{ - where: Types.Gh_Orphans_Bool_Exp - limit: Types.Scalars['Int']['input'] - offset: Types.Scalars['Int']['input'] - orderBy?: Types.InputMaybe -}> - -export type GetOrphansQuery = { - __typename?: 'query_root' - gh_orphans: Array<{ - __typename?: 'gh_orphans' - labels?: string | null - assignee?: string | null - author?: string | null - issue_number?: any | null - issue_url?: string | null - created_at?: any | null - closed_at?: any | null - repository?: string | null - stage?: string | null - title?: string | null - }> -} - -export type GetOrphansCountQueryVariables = Types.Exact<{ - where: Types.Gh_Orphans_Bool_Exp -}> - -export type GetOrphansCountQuery = { - __typename?: 'query_root' - gh_orphans: Array<{ __typename?: 'gh_orphans'; closed_at?: any | null }> -} - -export type GetFiltersForOrphansQueryVariables = Types.Exact<{ - [key: string]: never -}> - -export type GetFiltersForOrphansQuery = { - __typename?: 'query_root' - authors: Array<{ __typename?: 'gh_orphans'; author?: string | null }> - assignees: Array<{ __typename?: 'gh_orphans'; assignee?: string | null }> - repos: Array<{ __typename?: 'gh_orphans'; repository?: string | null }> -} diff --git a/apps/website/src/lib/graphql/generated/schemas.ts b/apps/website/src/lib/graphql/generated/schemas.ts deleted file mode 100644 index 54120906..00000000 --- a/apps/website/src/lib/graphql/generated/schemas.ts +++ /dev/null @@ -1,775 +0,0 @@ -export type Maybe = T | null -export type InputMaybe = Maybe -export type Exact = { - [K in keyof T]: T[K] -} -export type MakeOptional = Omit & { - [SubKey in K]?: Maybe -} -export type MakeMaybe = Omit & { - [SubKey in K]: Maybe -} -export type MakeEmpty< - T extends { [key: string]: unknown }, - K extends keyof T -> = { [_ in K]?: never } -export type Incremental = - | T - | { - [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never - } -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: { input: string; output: string } - String: { input: string; output: string } - Boolean: { input: boolean; output: boolean } - Int: { input: number; output: number } - Float: { input: number; output: number } - bigint: { input: any; output: any } - timestamptz: { input: any; output: any } -} - -/** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ -export type String_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - /** does the column match the given case-insensitive pattern */ - _ilike?: InputMaybe - _in?: InputMaybe> - /** does the column match the given POSIX regular expression, case insensitive */ - _iregex?: InputMaybe - _is_null?: InputMaybe - /** does the column match the given pattern */ - _like?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - /** does the column NOT match the given case-insensitive pattern */ - _nilike?: InputMaybe - _nin?: InputMaybe> - /** does the column NOT match the given POSIX regular expression, case insensitive */ - _niregex?: InputMaybe - /** does the column NOT match the given pattern */ - _nlike?: InputMaybe - /** does the column NOT match the given POSIX regular expression, case sensitive */ - _nregex?: InputMaybe - /** does the column NOT match the given SQL regular expression */ - _nsimilar?: InputMaybe - /** does the column match the given POSIX regular expression, case sensitive */ - _regex?: InputMaybe - /** does the column match the given SQL regular expression */ - _similar?: InputMaybe -} - -/** Boolean expression to compare columns of type "bigint". All fields are combined with logical 'AND'. */ -export type Bigint_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -/** ordering argument of a cursor */ -export enum Cursor_Ordering { - /** ascending ordering of the cursor */ - Asc = 'ASC', - /** descending ordering of the cursor */ - Desc = 'DESC', -} - -/** columns and relationships of "gh_burnup" */ -export type Gh_Burnup = { - __typename?: 'gh_burnup' - date_field?: Maybe - epic_name?: Maybe - total_closed_issues?: Maybe - total_opened_issues?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_burnup". All fields are combined with a logical 'AND'. */ -export type Gh_Burnup_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - date_field?: InputMaybe - epic_name?: InputMaybe - total_closed_issues?: InputMaybe - total_opened_issues?: InputMaybe -} - -/** Ordering options when selecting data from "gh_burnup". */ -export type Gh_Burnup_Order_By = { - date_field?: InputMaybe - epic_name?: InputMaybe - total_closed_issues?: InputMaybe - total_opened_issues?: InputMaybe -} - -/** select columns of table "gh_burnup" */ -export enum Gh_Burnup_Select_Column { - /** column name */ - DateField = 'date_field', - /** column name */ - EpicName = 'epic_name', - /** column name */ - TotalClosedIssues = 'total_closed_issues', - /** column name */ - TotalOpenedIssues = 'total_opened_issues', -} - -/** Streaming cursor of the table "gh_burnup" */ -export type Gh_Burnup_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Burnup_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Burnup_Stream_Cursor_Value_Input = { - date_field?: InputMaybe - epic_name?: InputMaybe - total_closed_issues?: InputMaybe - total_opened_issues?: InputMaybe -} - -/** columns and relationships of "gh_epic_issues" */ -export type Gh_Epic_Issues = { - __typename?: 'gh_epic_issues' - assignee?: Maybe - author?: Maybe - closed_at?: Maybe - created_at?: Maybe - epic_color?: Maybe - epic_name?: Maybe - issue_number?: Maybe - issue_url?: Maybe - labels?: Maybe - repository?: Maybe - stage?: Maybe - title?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_epic_issues". All fields are combined with a logical 'AND'. */ -export type Gh_Epic_Issues_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - epic_color?: InputMaybe - epic_name?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** Ordering options when selecting data from "gh_epic_issues". */ -export type Gh_Epic_Issues_Order_By = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - epic_color?: InputMaybe - epic_name?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** select columns of table "gh_epic_issues" */ -export enum Gh_Epic_Issues_Select_Column { - /** column name */ - Assignee = 'assignee', - /** column name */ - Author = 'author', - /** column name */ - ClosedAt = 'closed_at', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - EpicColor = 'epic_color', - /** column name */ - EpicName = 'epic_name', - /** column name */ - IssueNumber = 'issue_number', - /** column name */ - IssueUrl = 'issue_url', - /** column name */ - Labels = 'labels', - /** column name */ - Repository = 'repository', - /** column name */ - Stage = 'stage', - /** column name */ - Title = 'title', -} - -/** Streaming cursor of the table "gh_epic_issues" */ -export type Gh_Epic_Issues_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Epic_Issues_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Epic_Issues_Stream_Cursor_Value_Input = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - epic_color?: InputMaybe - epic_name?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** columns and relationships of "gh_epics" */ -export type Gh_Epics = { - __typename?: 'gh_epics' - closed_count?: Maybe - epic_color?: Maybe - epic_description?: Maybe - epic_name?: Maybe - opened_count?: Maybe - status?: Maybe - total_count?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_epics". All fields are combined with a logical 'AND'. */ -export type Gh_Epics_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - closed_count?: InputMaybe - epic_color?: InputMaybe - epic_description?: InputMaybe - epic_name?: InputMaybe - opened_count?: InputMaybe - status?: InputMaybe - total_count?: InputMaybe -} - -/** Ordering options when selecting data from "gh_epics". */ -export type Gh_Epics_Order_By = { - closed_count?: InputMaybe - epic_color?: InputMaybe - epic_description?: InputMaybe - epic_name?: InputMaybe - opened_count?: InputMaybe - status?: InputMaybe - total_count?: InputMaybe -} - -/** select columns of table "gh_epics" */ -export enum Gh_Epics_Select_Column { - /** column name */ - ClosedCount = 'closed_count', - /** column name */ - EpicColor = 'epic_color', - /** column name */ - EpicDescription = 'epic_description', - /** column name */ - EpicName = 'epic_name', - /** column name */ - OpenedCount = 'opened_count', - /** column name */ - Status = 'status', - /** column name */ - TotalCount = 'total_count', -} - -/** Streaming cursor of the table "gh_epics" */ -export type Gh_Epics_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Epics_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Epics_Stream_Cursor_Value_Input = { - closed_count?: InputMaybe - epic_color?: InputMaybe - epic_description?: InputMaybe - epic_name?: InputMaybe - opened_count?: InputMaybe - status?: InputMaybe - total_count?: InputMaybe -} - -/** columns and relationships of "gh_issues" */ -export type Gh_Issues = { - __typename?: 'gh_issues' - assignee?: Maybe - author?: Maybe - closed_at?: Maybe - created_at?: Maybe - issue_number?: Maybe - issue_url?: Maybe - labels?: Maybe - repository?: Maybe - stage?: Maybe - title?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_issues". All fields are combined with a logical 'AND'. */ -export type Gh_Issues_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** Ordering options when selecting data from "gh_issues". */ -export type Gh_Issues_Order_By = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** select columns of table "gh_issues" */ -export enum Gh_Issues_Select_Column { - /** column name */ - Assignee = 'assignee', - /** column name */ - Author = 'author', - /** column name */ - ClosedAt = 'closed_at', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - IssueNumber = 'issue_number', - /** column name */ - IssueUrl = 'issue_url', - /** column name */ - Labels = 'labels', - /** column name */ - Repository = 'repository', - /** column name */ - Stage = 'stage', - /** column name */ - Title = 'title', -} - -/** Streaming cursor of the table "gh_issues" */ -export type Gh_Issues_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Issues_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Issues_Stream_Cursor_Value_Input = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** columns and relationships of "gh_orphans" */ -export type Gh_Orphans = { - __typename?: 'gh_orphans' - assignee?: Maybe - author?: Maybe - closed_at?: Maybe - created_at?: Maybe - issue_number?: Maybe - issue_url?: Maybe - labels?: Maybe - repository?: Maybe - stage?: Maybe - title?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_orphans". All fields are combined with a logical 'AND'. */ -export type Gh_Orphans_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** Ordering options when selecting data from "gh_orphans". */ -export type Gh_Orphans_Order_By = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** select columns of table "gh_orphans" */ -export enum Gh_Orphans_Select_Column { - /** column name */ - Assignee = 'assignee', - /** column name */ - Author = 'author', - /** column name */ - ClosedAt = 'closed_at', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - IssueNumber = 'issue_number', - /** column name */ - IssueUrl = 'issue_url', - /** column name */ - Labels = 'labels', - /** column name */ - Repository = 'repository', - /** column name */ - Stage = 'stage', - /** column name */ - Title = 'title', -} - -/** Streaming cursor of the table "gh_orphans" */ -export type Gh_Orphans_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Orphans_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Orphans_Stream_Cursor_Value_Input = { - assignee?: InputMaybe - author?: InputMaybe - closed_at?: InputMaybe - created_at?: InputMaybe - issue_number?: InputMaybe - issue_url?: InputMaybe - labels?: InputMaybe - repository?: InputMaybe - stage?: InputMaybe - title?: InputMaybe -} - -/** columns and relationships of "gh_repositories" */ -export type Gh_Repositories = { - __typename?: 'gh_repositories' - description?: Maybe - full_name?: Maybe - name?: Maybe - open_issues_count?: Maybe - stargazers_count?: Maybe - visibility?: Maybe -} - -/** Boolean expression to filter rows from the table "gh_repositories". All fields are combined with a logical 'AND'. */ -export type Gh_Repositories_Bool_Exp = { - _and?: InputMaybe> - _not?: InputMaybe - _or?: InputMaybe> - description?: InputMaybe - full_name?: InputMaybe - name?: InputMaybe - open_issues_count?: InputMaybe - stargazers_count?: InputMaybe - visibility?: InputMaybe -} - -/** Ordering options when selecting data from "gh_repositories". */ -export type Gh_Repositories_Order_By = { - description?: InputMaybe - full_name?: InputMaybe - name?: InputMaybe - open_issues_count?: InputMaybe - stargazers_count?: InputMaybe - visibility?: InputMaybe -} - -/** select columns of table "gh_repositories" */ -export enum Gh_Repositories_Select_Column { - /** column name */ - Description = 'description', - /** column name */ - FullName = 'full_name', - /** column name */ - Name = 'name', - /** column name */ - OpenIssuesCount = 'open_issues_count', - /** column name */ - StargazersCount = 'stargazers_count', - /** column name */ - Visibility = 'visibility', -} - -/** Streaming cursor of the table "gh_repositories" */ -export type Gh_Repositories_Stream_Cursor_Input = { - /** Stream column input with initial value */ - initial_value: Gh_Repositories_Stream_Cursor_Value_Input - /** cursor ordering */ - ordering?: InputMaybe -} - -/** Initial value of the column from where the streaming should start */ -export type Gh_Repositories_Stream_Cursor_Value_Input = { - description?: InputMaybe - full_name?: InputMaybe - name?: InputMaybe - open_issues_count?: InputMaybe - stargazers_count?: InputMaybe - visibility?: InputMaybe -} - -/** column ordering options */ -export enum Order_By { - /** in ascending order, nulls last */ - Asc = 'asc', - /** in ascending order, nulls first */ - AscNullsFirst = 'asc_nulls_first', - /** in ascending order, nulls last */ - AscNullsLast = 'asc_nulls_last', - /** in descending order, nulls first */ - Desc = 'desc', - /** in descending order, nulls first */ - DescNullsFirst = 'desc_nulls_first', - /** in descending order, nulls last */ - DescNullsLast = 'desc_nulls_last', -} - -export type Query_Root = { - __typename?: 'query_root' - /** fetch data from the table: "gh_burnup" */ - gh_burnup: Array - /** fetch data from the table: "gh_epic_issues" */ - gh_epic_issues: Array - /** fetch data from the table: "gh_epics" */ - gh_epics: Array - /** fetch data from the table: "gh_issues" */ - gh_issues: Array - /** fetch data from the table: "gh_orphans" */ - gh_orphans: Array - /** fetch data from the table: "gh_repositories" */ - gh_repositories: Array -} - -export type Query_RootGh_BurnupArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Query_RootGh_Epic_IssuesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Query_RootGh_EpicsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Query_RootGh_IssuesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Query_RootGh_OrphansArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Query_RootGh_RepositoriesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_Root = { - __typename?: 'subscription_root' - /** fetch data from the table: "gh_burnup" */ - gh_burnup: Array - /** fetch data from the table in a streaming manner: "gh_burnup" */ - gh_burnup_stream: Array - /** fetch data from the table: "gh_epic_issues" */ - gh_epic_issues: Array - /** fetch data from the table in a streaming manner: "gh_epic_issues" */ - gh_epic_issues_stream: Array - /** fetch data from the table: "gh_epics" */ - gh_epics: Array - /** fetch data from the table in a streaming manner: "gh_epics" */ - gh_epics_stream: Array - /** fetch data from the table: "gh_issues" */ - gh_issues: Array - /** fetch data from the table in a streaming manner: "gh_issues" */ - gh_issues_stream: Array - /** fetch data from the table: "gh_orphans" */ - gh_orphans: Array - /** fetch data from the table in a streaming manner: "gh_orphans" */ - gh_orphans_stream: Array - /** fetch data from the table: "gh_repositories" */ - gh_repositories: Array - /** fetch data from the table in a streaming manner: "gh_repositories" */ - gh_repositories_stream: Array -} - -export type Subscription_RootGh_BurnupArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Burnup_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -export type Subscription_RootGh_Epic_IssuesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Epic_Issues_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -export type Subscription_RootGh_EpicsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Epics_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -export type Subscription_RootGh_IssuesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Issues_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -export type Subscription_RootGh_OrphansArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Orphans_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -export type Subscription_RootGh_RepositoriesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -export type Subscription_RootGh_Repositories_StreamArgs = { - batch_size: Scalars['Int']['input'] - cursor: Array> - where?: InputMaybe -} - -/** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ -export type Timestamptz_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} diff --git a/apps/website/src/lib/graphql/index.ts b/apps/website/src/lib/graphql/index.ts deleted file mode 100644 index 649bf9ef..00000000 --- a/apps/website/src/lib/graphql/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { api, GRAPHQL_ENDPOINT } from './api' diff --git a/apps/website/src/lib/graphql/utils.ts b/apps/website/src/lib/graphql/utils.ts deleted file mode 100644 index 3f6b3d23..00000000 --- a/apps/website/src/lib/graphql/utils.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const catchApiError = ( - error: GraphqlApiError, - callback: (codes: string[]) => void -) => { - const codes: string[] = [] - - error.response?.errors?.forEach(error => { - if (error.extensions?.code) { - codes.push(error.extensions?.code) - } - }) - - return callback(codes) -} diff --git a/apps/website/src/lib/request-client.ts b/apps/website/src/lib/request-client.ts deleted file mode 100644 index 59e01652..00000000 --- a/apps/website/src/lib/request-client.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createRequestClient } from '@status-im/js' - -import type { RequestClient } from '@status-im/js' - -let client: RequestClient | undefined - -export async function getRequestClient(): Promise { - if (!client) { - client = await createRequestClient({ environment: 'production' }) - - return client - } - - return client -} diff --git a/apps/website/src/middleware.ts b/apps/website/src/middleware.ts deleted file mode 100644 index 938cb8eb..00000000 --- a/apps/website/src/middleware.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NextResponse } from 'next/server' - -import type { NextRequest } from 'next/server' - -export function middleware(req: NextRequest) { - const basicAuth = req.headers.get('authorization') - - if (process.env.VERCEL_ENV !== 'production') { - return NextResponse.next() - } - - if (basicAuth) { - const auth = basicAuth.split(' ')[1] - const [user, password] = Buffer.from(auth, 'base64').toString().split(':') - - if (user === 'status' && password === process.env.AUTH_PASSWORD) { - return NextResponse.next() - } - } - - return new NextResponse('Authentication Required', { - status: 401, - headers: { 'WWW-Authenticate': `Basic realm="website"` }, - }) -} diff --git a/apps/website/src/next.d.ts b/apps/website/src/next.d.ts deleted file mode 100644 index 62e1fc66..00000000 --- a/apps/website/src/next.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { NextPage } from 'next' - -declare module 'next' { - export type PageLayout = (page: React.ReactElement) => React.ReactNode - - export type Page

    = NextPage & { - getLayout?: (page: ReactElement) => ReactNode - } -} diff --git a/apps/website/src/pages/404.tsx b/apps/website/src/pages/404.tsx deleted file mode 100644 index 7ead005f..00000000 --- a/apps/website/src/pages/404.tsx +++ /dev/null @@ -1,7 +0,0 @@ -// todo: user per preiview page only -import { ErrorPage } from '@/components/error-page' -import { ERROR_CODES } from '@/consts/error-codes' - -export default function Custom404() { - return -} diff --git a/apps/website/src/pages/500.tsx b/apps/website/src/pages/500.tsx deleted file mode 100644 index 6209ee17..00000000 --- a/apps/website/src/pages/500.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import { ErrorPage } from '@/components/error-page' -import { ERROR_CODES } from '@/consts/error-codes' - -export default function Custom500() { - return -} diff --git a/apps/website/src/pages/_app.tsx b/apps/website/src/pages/_app.tsx deleted file mode 100644 index 7f1425b9..00000000 --- a/apps/website/src/pages/_app.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import '@/styles/global.css' -import '@/styles/nav-nested-links.css' - -import { ThemeProvider } from '@status-im/components' -import { QueryClient, QueryClientProvider } from '@tanstack/react-query' -import { Inter } from 'next/font/google' -import Head from 'next/head' -import { useRouter } from 'next/router' -import { match, P } from 'ts-pattern' - -import type { Page, PageLayout } from 'next' -import type { AppProps } from 'next/app' - -const queryClient = new QueryClient() - -const inter = Inter({ - variable: '--font-inter', - weight: ['400', '500', '600', '700'], - subsets: ['latin'], -}) - -type Props = AppProps & { - Component: Page -} - -export default function App({ Component, pageProps }: Props) { - const getLayout: PageLayout = Component.getLayout || (page => page) - - // const urlOrigin = process.env.VERCEL_URL - // ? 'https://' + process.env.VERCEL_URL - // : '' - - const { pathname, asPath } = useRouter() - - return ( - <> - - Status - Private, Secure Communication - - - - - - - - {/* */} - - - - - - - - - - - {match(pathname) - .with( - P.when(p => p.startsWith('/insights')), - () => ( - <> - - {/* - */} - - ) - ) - .with( - P.when(p => p.startsWith('/help')), - () => ( - <> - - {/* - */} - - ) - ) - .with( - P.when(p => p.startsWith('/blog')), - () => ( - <> - - {/* - */} - - ) - ) - .otherwise(() => ( - <> - - {/* - */} - - ))} - -

    - - - {getLayout()} - - -
    - - ) -} diff --git a/apps/website/src/pages/_document.tsx b/apps/website/src/pages/_document.tsx deleted file mode 100644 index df9bd6c0..00000000 --- a/apps/website/src/pages/_document.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Children } from 'react' - -import NextDocument, { Head, Html, Main, NextScript } from 'next/document' -import { AppRegistry } from 'react-native' - -import Tamagui from '../../tamagui.config' - -import type { DocumentContext } from 'next/document' - -export default class Document extends NextDocument { - static async getInitialProps({ renderPage }: DocumentContext) { - AppRegistry.registerComponent('app', () => Main) - // @ts-expect-error todo - const { getStyleElement } = AppRegistry.getApplication('app') - - const page = await renderPage() - - const styles = [getStyleElement()] - - return { ...page, styles: Children.toArray(styles) } - } - - render() { - return ( - - - -