diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index a5e7c4d7cf6f..c0a396147dd0 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -3,8 +3,7 @@ name: Feature Request about: Suggest an idea for the Wiki title: "[Feature Request]" labels: docs -assignees: '' - +assignees: "" --- **Is your feature request related to a problem? Please describe.** diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 8f43ffe414d0..27df516f78ec 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,12 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: [master] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [master] schedule: - - cron: '19 9 * * 2' + - cron: "19 9 * * 2" jobs: analyze: @@ -32,40 +32,40 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'javascript' ] + language: ["javascript"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b0d0bced9be2..e6a1514db62e 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within diff --git a/README.md b/README.md index e26a5f9fd826..6d5836a56af1 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,6 @@ The servers will reflect the latest `master` commit or PR put up against the mas The latest version of `master` is staged and checked by the team. If all is well, the new commits on `master` are transferred into the production branch,`prod`, by rebasing `master` on `prod`. The CICD production workflow will deploy `prod` to the public sites: [Polkadot Wiki](https://wiki.polkadot.network) and [Kusama Guide](https://guide.kusama.network), respectively. - ### Mirror Pages A limitation of Docusaurus is that pages can only be included in one sidebar at any given time. diff --git a/docs/assets/guides/polkadot-guide/Account.png b/docs/assets/guides/polkadot-guide/Account.png new file mode 100644 index 000000000000..a7380337c997 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Account.png differ diff --git a/docs/assets/guides/polkadot-guide/Ambassadors.png b/docs/assets/guides/polkadot-guide/Ambassadors.png new file mode 100644 index 000000000000..b3f95dc79540 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Ambassadors.png differ diff --git a/docs/assets/guides/polkadot-guide/Bridges.png b/docs/assets/guides/polkadot-guide/Bridges.png new file mode 100644 index 000000000000..6e283c6b730d Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Bridges.png differ diff --git a/docs/assets/guides/polkadot-guide/Council.png b/docs/assets/guides/polkadot-guide/Council.png new file mode 100644 index 000000000000..f21272860464 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Council.png differ diff --git a/docs/assets/guides/polkadot-guide/Identity.png b/docs/assets/guides/polkadot-guide/Identity.png new file mode 100644 index 000000000000..6ff80e56ffd3 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Identity.png differ diff --git a/docs/assets/guides/polkadot-guide/Kusama.svg b/docs/assets/guides/polkadot-guide/Kusama.svg new file mode 100644 index 000000000000..89e1c399d96e --- /dev/null +++ b/docs/assets/guides/polkadot-guide/Kusama.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/guides/polkadot-guide/Network.png b/docs/assets/guides/polkadot-guide/Network.png new file mode 100644 index 000000000000..f19bda2e978a Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Network.png differ diff --git a/docs/assets/guides/polkadot-guide/Parachain.png b/docs/assets/guides/polkadot-guide/Parachain.png new file mode 100644 index 000000000000..1f124e66f098 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Parachain.png differ diff --git a/docs/assets/guides/polkadot-guide/Proposal.png b/docs/assets/guides/polkadot-guide/Proposal.png new file mode 100644 index 000000000000..a224542a7042 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Proposal.png differ diff --git a/docs/assets/guides/polkadot-guide/Proxy.png b/docs/assets/guides/polkadot-guide/Proxy.png new file mode 100644 index 000000000000..a9ce0a97d9c0 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Proxy.png differ diff --git a/docs/assets/guides/polkadot-guide/Stake.png b/docs/assets/guides/polkadot-guide/Stake.png new file mode 100644 index 000000000000..866440650a0d Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Stake.png differ diff --git a/docs/assets/guides/polkadot-guide/Transfer.png b/docs/assets/guides/polkadot-guide/Transfer.png new file mode 100644 index 000000000000..2eed9d377dbb Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Transfer.png differ diff --git a/docs/assets/guides/polkadot-guide/Treasury.png b/docs/assets/guides/polkadot-guide/Treasury.png new file mode 100644 index 000000000000..119101b10dae Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Treasury.png differ diff --git a/docs/assets/guides/polkadot-guide/Voting.png b/docs/assets/guides/polkadot-guide/Voting.png new file mode 100644 index 000000000000..ee79dcf086d2 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/Voting.png differ diff --git a/docs/assets/guides/polkadot-guide/kusama.png b/docs/assets/guides/polkadot-guide/kusama.png new file mode 100644 index 000000000000..07105c445fe7 Binary files /dev/null and b/docs/assets/guides/polkadot-guide/kusama.png differ diff --git a/docs/assets/guides/polkadot-guide/network.jpeg b/docs/assets/guides/polkadot-guide/network.jpeg new file mode 100644 index 000000000000..62f9b74cfc4d Binary files /dev/null and b/docs/assets/guides/polkadot-guide/network.jpeg differ diff --git a/docs/build/build-node-interaction.md b/docs/build/build-node-interaction.md index bb450f8e8b70..5ae08289a707 100644 --- a/docs/build/build-node-interaction.md +++ b/docs/build/build-node-interaction.md @@ -16,7 +16,6 @@ documentation for the tool you are using: **Polkadot-JS RPC** is a JavaScript library for interacting with the **Substrate RPC API** endpoint, distributed as `@polkadot/api` Node.js package. **Substrate API Sidecar** is using the **Polkadot-JS RPC** to provide separately runnable REST services. - ## Polkadot RPC The Parity Polkadot client exposes HTTP and WS endpoints for RPC connections. The default ports are diff --git a/docs/build/build-wallets.md b/docs/build/build-wallets.md index 5a8d236b383d..9b689c3ae931 100644 --- a/docs/build/build-wallets.md +++ b/docs/build/build-wallets.md @@ -33,12 +33,12 @@ contact the developers of that wallet. These are wallets which have been supported by either the Polkadot or Kusama Treasury via Treasury Proposal. Links in the Proposals section go to the Polkassembly post where the Treasury Proposal was discussed. -| Wallet Name | Proposals | Development State | Team Name | Description | Custody | Supports | -| --------------------------------------------- | ------------------------------------------------- | ----------------- | -------------- | ------------ | ------------- | -------- | -| [Fearless Wallet](https://fearlesswallet.io/) | [1](https://kusama.polkassembly.io/treasury/23), [2](https://kusama.polkassembly.io/treasury/34), [3](https://kusama.polkassembly.io/treasury/74), [4](https://kusama.polkassembly.io/treasury/102) | Live | SORAMITSU | iOS, Android | Non-custodial | Staking | -| [Klever](https://klever.io/) | [1](https://kusama.polkassembly.io/treasury/91) | Live | Klever | iOS, Android | Non-custodial | Staking | -| [Polkawallet](https://polkawallet.io/) | [1](https://kusama.polkassembly.io/treasury/32), [2](https://kusama.polkassembly.io/treasury/41) | Live | Polkawallet | iOS, Android | Non-custodial | Staking | -| [Stylo](https://stylo-app.com/) | [1](https://polkadot.polkassembly.io/treasury/39) | Live | Thibaut Sardan | Android | Non-custodial | Staking | +| Wallet Name | Proposals | Development State | Team Name | Description | Custody | Supports | +| --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------- | ------------ | ------------- | -------- | +| [Fearless Wallet](https://fearlesswallet.io/) | [1](https://kusama.polkassembly.io/treasury/23), [2](https://kusama.polkassembly.io/treasury/34), [3](https://kusama.polkassembly.io/treasury/74), [4](https://kusama.polkassembly.io/treasury/102) | Live | SORAMITSU | iOS, Android | Non-custodial | Staking | +| [Klever](https://klever.io/) | [1](https://kusama.polkassembly.io/treasury/91) | Live | Klever | iOS, Android | Non-custodial | Staking | +| [Polkawallet](https://polkawallet.io/) | [1](https://kusama.polkassembly.io/treasury/32), [2](https://kusama.polkassembly.io/treasury/41) | Live | Polkawallet | iOS, Android | Non-custodial | Staking | +| [Stylo](https://stylo-app.com/) | [1](https://polkadot.polkassembly.io/treasury/39) | Live | Thibaut Sardan | Android | Non-custodial | Staking | > NOTE: these third-party wallets have been funded by the community through either the Polkadot or Kusama [Treasury](learn-treasury). **Web 3.0 Technologies Foundation does not endorse these wallets, and you should use your own due diligence in researching them.** The official Polkadot Support cannot provide support for issues with these wallets or other non-Parity developed wallets. diff --git a/docs/general/faq.md b/docs/general/faq.md index 0beb893ca828..fcd28996cf8e 100644 --- a/docs/general/faq.md +++ b/docs/general/faq.md @@ -40,7 +40,7 @@ For more information on the Polkadot roadmap please visit the ### How do I apply to be a validator? -There is no central authority that decides on validators, so there is not per se an *application* +There is no central authority that decides on validators, so there is not per se an _application_ that you can fill out. Registering as a validator is permissionless; in order to become one you must only set up a validator node and mark your intention to validate on chain. For detailed instruction on how to do this you can consult the @@ -48,13 +48,13 @@ on how to do this you can consult the [Polkadot validator guide](../maintain/maintain-guides-how-to-validate-polkadot.md) for validating on Polkadot. However, once you've set up a validator and have registered your intention it does not mean that you -will be included in the *active set* right away. The validators are elected to the active set based +will be included in the _active set_ right away. The validators are elected to the active set based on the results of an election algorithm known as [Phragmén's method](../learn/learn-phragmen.md). Phragmén's method tries to accomplish two goals: 1) select `n` members from a larger set based on stake-weighted votes and 2) equalize the stake backing each validator as much as possible. You will likely want to campaign your validator to the community in order to get more backing. You -are looking for *nominators* that will put up their tokens to increase the stake for your validator. +are looking for _nominators_ that will put up their tokens to increase the stake for your validator. For validators who cannot acquire the minimum stake from the community, Parity and Web3 Foundation also run a joint program called [Thousand Validators](thousand-validators.md) that will nominate validators if they apply and fit the requirements. @@ -104,7 +104,7 @@ similar PoS chains with comparable levels of economic security as Polkadot. The are operating with around 150 validators, while Polkadot is already securely running with {{ num_validators }}. -Additionally, other projects sometimes have a different definition of *validator* that approximates +Additionally, other projects sometimes have a different definition of _validator_ that approximates more closely to remote signing keys without the full operation of a validating node. On Polkadot, each validator is running their own validating node and performing full verification of the Relay Chain, voting on finality, producing blocks in their decided slots, and verifying parachain state @@ -131,13 +131,13 @@ No - and yes. The Polkadot Relay Chain does not implement smart contracts native not having smart contracts on the Relay Chain is part of the design philosophy for Polkadot that dictates that the Relay Chain should be the minimal logic required to accomplish its job. -However, Polkadot will be a platform for other chains that *do* implement smart contracts. It's +However, Polkadot will be a platform for other chains that _do_ implement smart contracts. It's possible for parachains to enable smart contract functionality and then benefit from the security and interoperability features of Polkadot. Additionally, existing smart contract chains can connect to Polkadot as a parachain, or via a bridge. While the Polkadot Relay Chain does not implement smart contracts directly, undoubtedly there will -be parachains that do. So it's better to say that the Polkadot *ecosystem* has smart contracts +be parachains that do. So it's better to say that the Polkadot _ecosystem_ has smart contracts versus "Polkadot has smart contracts." ### How will the Polkadot Relay Chain connect to external chains in the ecosystem? @@ -189,13 +189,13 @@ conviction to sway the progression of the protocol. A savvy reader might have noticed that the answer to the previous question endowed the token holder with the ultimate responsibility to ensure that Polkadot's governance does not fail. By following the train of this assertion, one might assume that Polkadot's governance is susceptible to becoming -ruled by a few large token holders (called *whales* in trading parlance) and therefore become a mere +ruled by a few large token holders (called _whales_ in trading parlance) and therefore become a mere plutocracy (rule of the rich). There are several other mechanisms that are built-in to the governance system to resist this plutocratic tendency. One of these mechanisms is called conviction voting, and imbues greater voting power to token holders who are willing to lock their tokens on the protocol for longer lengths of -time. Longer lock-ups display *conviction* in a vote. Conviction voting could allow a highly +time. Longer lock-ups display _conviction_ in a vote. Conviction voting could allow a highly determined minority to overrule the vote of an apathetic majority in certain situations. Another mechanism is known as Adaptive Quorum Biasing. This makes proposals have a varying threshold for approval or rejection based on what part of the governance protocol the proposal originated in. For diff --git a/docs/general/getting-started.md b/docs/general/getting-started.md index 3f513dd372c4..0a2b07d6e383 100644 --- a/docs/general/getting-started.md +++ b/docs/general/getting-started.md @@ -87,7 +87,7 @@ Whether you're a blockchain developer or if you're interested in taking part of platform for everyone. This wiki offers a place for builders and maintainers to utilize [tools](../build/build-tools-index.md) and for brand-new learners to dive into educational material. -## Getting Started +# Getting Started For brand-new learners of Blockchain technology: @@ -97,7 +97,7 @@ For brand-new learners of Blockchain technology: This is recommended for users with backgrounds of all levels, and the course is free! -### For brand-new learners of Polkadot: +## Brand-New Polkadot learners: - [Polkadot's original white paper][white-paper] is a technical summary around one possible direction of implementing the Polkadot network. This paper uses rationale and technical details to @@ -119,18 +119,123 @@ This is recommended for users with backgrounds of all levels, and the course is - Reading [What is Polkadot? A Brief Introduction][article] on Medium. There are also other great articles to read on [Polkadot's Medium][p medium] or [Web3 Foundation's Medium][w medium]. - #### To start interacting with Polkadot: - - - [Creating a Polkadot Account][account generation] - - [Sending a Balance transfer][transfer] - - [Staking as Nominator][nominator] - - [Running a Validator][validator] - - [Setting an Identity][identity] - - [Creating a Proxy Account][proxy] - - [Making Proposals and Voting for Referenda][democracy] - - [Running for the Council][council] - - [Voting for Councillors][council voting] - - [Using the Treasury][treasury] +### Interact with Polkadot + + + + + Drawing +
+
Creating an Account
+
+
+ + + + Drawing +
+
Balance Transfers
+
+
+ + + + Drawing +
+
Staking
+
+
+ + + +
+ + + + + Drawing +
+
Parachains
+
+
+ + + + Drawing +
+
Bridges
+
+
+ + + + Drawing +
+
Vote for Councilors
+
+
+ + + +
+ + + + + Drawing +
+
Make Proposals
+
+
+ + + + Drawing +
+
Council Candidacy
+
+
+ + + + Drawing +
+
Treasury
+
+
+ + + +
+ + + + + Drawing +
+
Set an Identity
+
+
+ + + + Drawing +
+
Proxy Accounts
+
+
+ + + + Drawing +
+
Become an Ambassador
+
+
+ + + +
For brand-new learners of Kusama, Polkadot's canary cousin network: To learn more about how to build and maintain on the Kusama network, please head over to our [Kusama Guide][kusama guide]. @@ -180,3 +285,7 @@ and maintain on the Kusama network, please head over to our [Kusama Guide][kusam [council voting]: ../maintain/maintain-guides-how-to-vote-councillor.md [treasury]: ../learn/learn-treasury.md [kusama guide]: https://guide.kusama.network/ +[1]: ../learn/account-generation.md + +[2]: +[3]: diff --git a/docs/general/kusama/kusama-getting-started.md b/docs/general/kusama/kusama-getting-started.md index 06a4a353c103..481047af8700 100644 --- a/docs/general/kusama/kusama-getting-started.md +++ b/docs/general/kusama/kusama-getting-started.md @@ -16,6 +16,124 @@ For brand-new learners of Blockchain technology: This is recommended for users with backgrounds of all levels, and the course is free! +### Interact with Kusama + + + + + Drawing +
+
Creating an Account
+
+
+ + + + Drawing +
+
Balance Transfers
+
+
+ + + + Drawing +
+
Staking
+
+
+ + + +
+ + + + + Drawing +
+
Parachains
+
+
+ + + + Drawing +
+
Bridges
+
+
+ + + + Drawing +
+
Vote for Councilors
+
+
+ + + +
+ + + + + Drawing +
+
Make Proposals
+
+
+ + + + Drawing +
+
Council Candidacy
+
+
+ + + + Drawing +
+
Treasury
+
+
+ + + +
+ + + + + Drawing +
+
Set an Identity
+
+
+ + + + Drawing +
+
Proxy Accounts
+
+
+ + + + Drawing +
+
Become an Ambassador
+
+
+ + + +
+ For brand-new learners of Kusama, check out: - [Reading the Kusama Overview page][overview] diff --git a/docs/learn/learn-comparison-ethereum-2.md b/docs/learn/learn-comparison-ethereum-2.md index f1ebbe3f4bcc..0c5a2f6c8ea7 100644 --- a/docs/learn/learn-comparison-ethereum-2.md +++ b/docs/learn/learn-comparison-ethereum-2.md @@ -33,18 +33,19 @@ Ethereum 2.0's main chain is called the Beacon Chain. The primary load on the Be attestations, which are votes on the availability of shard data and Beacon Chain validity. Each shard in Ethereum 2 is simply a blockchain with the Ethereum Wasm (eWasm) interface. -Ethereum 2.0 launched phase 0 of a multi-phase rollout in December 2020, operating in parallel to the +Ethereum 2.0 launched phase 0 of a multi-phase rollout in December 2020, operating in parallel to the legacy Ethereum 1.0 chain: -- **Phase 0** provisioned the Beacon Chain, accepting deposits from validators and implementing - proof-of-stake consensus, eventually among many shards. -- **Phase 1** launches 64 shards as simple chains, to test the Beacon Chain's finality. Each shard - submits "crosslinks" to the Beacon Chain, which contains the information to finalize shard data. -- **Phase 1.5** integrates Eth 1 as a shard to finalize the proof-of-work chain's blocks. -- **Phase 2** implements the eWasm interface, phasing out proof-of-work, finally making the system + +- **Phase 0** provisioned the Beacon Chain, accepting deposits from validators and implementing + proof-of-stake consensus, eventually among many shards. +- **Phase 1** launches 64 shards as simple chains, to test the Beacon Chain's finality. Each shard + submits "crosslinks" to the Beacon Chain, which contains the information to finalize shard data. +- **Phase 1.5** integrates Eth 1 as a shard to finalize the proof-of-work chain's blocks. +- **Phase 2** implements the eWasm interface, phasing out proof-of-work, finally making the system usable to end-users. [1] -After the launch of the Beacon Chain in phase 0, the roadmap was altered to prioritize the -transition of the legacy Ethereum 1.0 chain from Proof-of-Work to Ethereum 2.0's Proof-of-Stake +After the launch of the Beacon Chain in phase 0, the roadmap was altered to prioritize the +transition of the legacy Ethereum 1.0 chain from Proof-of-Work to Ethereum 2.0's Proof-of-Stake consensus, preceding the rollout of shards on the network. [2] The network will also have "side chains" to interact with chains that are not under the finality @@ -112,8 +113,8 @@ parachain in the network. ## Shards Every shard in Ethereum 2.0 has the same STF. Each shards will submit "crosslinks" to the beacon chain -and implement an eWasm execution environment. EWasm is a restricted subset of Wasm for contracts in -Ethereum. The eWasm interface provides a set of methods available to contracts. There should be a +and implement an eWasm execution environment. EWasm is a restricted subset of Wasm for contracts in +Ethereum. The eWasm interface provides a set of methods available to contracts. There should be a similar set of development tools like Truffle and Ganache to develop for eWasm. [7] Every shard in Polkadot has an abstract STF based on Wasm. Each shard can expose a custom interface, diff --git a/docs/learn/learn-identity.md b/docs/learn/learn-identity.md index 0aa05a6d727f..5255611701a6 100644 --- a/docs/learn/learn-identity.md +++ b/docs/learn/learn-identity.md @@ -17,7 +17,7 @@ like attestations (see [Judgements](#judgements)). Users must reserve funds in a bond to store their information on chain: {{ identity_reserve_funds }}, and {{ identity_field_funds }} per each field beyond the legal name. -These funds are *locked*, not spent - they are returned when the identity is cleared. +These funds are _locked_, not spent - they are returned when the identity is cleared. These amounts can also be extracted by querying constants through the [Chain state constants](https://polkadot.js.org/apps/#/chainstate/constants) tab on diff --git a/docs/maintain/maintain-sync.md b/docs/maintain/maintain-sync.md index 17cf240efbd7..3a160136fa8d 100644 --- a/docs/maintain/maintain-sync.md +++ b/docs/maintain/maintain-sync.md @@ -15,11 +15,11 @@ decentralized world. This guide will show you how to connect to [Polkadot network](https://polkadot.network/), but the same process applies to any other [Substrate](https://substrate.dev/docs/en/)-based chain. First, -let's clarify the term *full node*. +let's clarify the term _full node_. ### Types of Nodes -A blockchain's growth comes from a *genesis block*, *extrinsics*, and *events*. +A blockchain's growth comes from a _genesis block_, _extrinsics_, and _events_. When a validator seals block 1, it takes the blockchain's state at block 0. It then applies all pending changes on top of it, and emits the events that are the result of these changes. Later, the @@ -36,7 +36,7 @@ Archive nodes are used by utilities that need past information - like block expl scanners, discussion platforms like [Polkassembly](https://polkassembly.io), and others. They need to be able to look at past on-chain data. -A **full node** is *pruned*: it discards all finalized blocks older than a configurable number +A **full node** is _pruned_: it discards all finalized blocks older than a configurable number except the genesis block: This is 256 blocks from the last finalized one, by default. A node that is pruned this way requires much less space than an archive node. @@ -68,12 +68,13 @@ https://github.com/paritytech/smoldot#wasm-light-node This is not recommended if you're a validator. Please see the [secure validator setup](maintain-guides-secure-validator.md) if you are running validator. -> NOTE: The bash commands that are provided to run against **your node** use -> `Polkadot` as the default chain. +> NOTE: The bash commands that are provided to run against **your node** use +> `Polkadot` as the default chain. -> Use the `--chain` flag if you are -> following the setup instructions to setup a `Kusama` node. -> For example: +> Use the `--chain` flag if you are +> following the setup instructions to setup a `Kusama` node. +> For example: +> > ```bash > ./target/release/polkadot --name "Your Node's Name" --chain kusama > ``` @@ -109,7 +110,7 @@ values={[ cargo build --release ``` - Start your node: - + ```bash ./target/release/polkadot --name "Your Node's Name" ``` @@ -160,7 +161,7 @@ values={[ - Run the following: `sudo chmod +x polkadot` - Run the following: - + ```bash ./target/release/polkadot --name "Your Node's Name" ``` @@ -211,6 +212,7 @@ cargo build --release The built binary will be in the `target/release` folder, called `polkadot`. **Polkadot**: + ```bash ./target/release/polkadot --name "Your Node's Name" ``` diff --git a/kusama-guide/static/css/custom.css b/kusama-guide/static/css/custom.css index a37512d1d779..d96091ec9cc3 100755 --- a/kusama-guide/static/css/custom.css +++ b/kusama-guide/static/css/custom.css @@ -561,3 +561,59 @@ article img { padding-top: 0; } } + +/* ========================================================================== + Guide Section + ========================================================================== */ +.cards-container { + display: flex; + flex-flow: row wrap; + max-width: 100%; + min-width: 0; + align-items: center; + justify-content: center; +} + +.cards { + border: 1px solid var(--primaryColor); + width: 350px; + height: 80px; + border-radius: 10px; + box-shadow: 0 0.1rem 0.1rem rgba(0, 0, 0, 0.4); + + display: flex; + justify-content: center; + align-items: center; + + margin: 5px; + padding: 10px; + + position: relative; + top: 0; + transition: top 0.2s ease; +} + +.cards:hover { + top: -5px; +} + +.cards-body { + flex: 1 auto; + color: black; + display: flex; + flex-flow: column nowrap; + align-items: flex-start; + margin-left: 5px; +} + +.cards-title { + color: var(--ifm-color-primary-dark); + font-size: 1rem; + font-weight: bold; + align-content: center; +} + +.cards-text { + margin: 1px; + margin-left: 5px; +} diff --git a/package.json b/package.json index 826ff6b94d49..6834fb70ea14 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,8 @@ }, "dependencies": { "@docusaurus/theme-live-codeblock": "^2.0.0-beta.6", + "@polkadot/util": "^7.3.1", + "@polkadot/wasm-crypto": "^4.2.1", "remark-docusaurus-tabs": "^0.1.0", "replace-in-file": "^6.2.0" }, diff --git a/polkadot-wiki/docusaurus.config.js b/polkadot-wiki/docusaurus.config.js index ea6d59b379b3..b958f29dc1f1 100644 --- a/polkadot-wiki/docusaurus.config.js +++ b/polkadot-wiki/docusaurus.config.js @@ -85,9 +85,7 @@ module.exports = { ], createRedirects: function (existingPath) { if (existingPath.startsWith("/docs/")) { - return [ - existingPath.replace("/docs/", "/docs/en/"), - ]; + return [existingPath.replace("/docs/", "/docs/en/")]; } }, }, diff --git a/polkadot-wiki/static/css/custom.css b/polkadot-wiki/static/css/custom.css index a12e609f39cc..18c17a9a246a 100755 --- a/polkadot-wiki/static/css/custom.css +++ b/polkadot-wiki/static/css/custom.css @@ -595,3 +595,59 @@ footer .list-social-links a { .footer-legal a.text-white:hover { color: #fff !important; } + +/* ========================================================================== + Guide Section + ========================================================================== */ +.cards-container { + display: flex; + flex-flow: row wrap; + max-width: 100%; + min-width: 0; + align-items: center; + justify-content: center; +} + +.cards { + border: 1px solid var(--primaryColor); + width: 350px; + height: 80px; + border-radius: 10px; + box-shadow: 0 0.1rem 0.1rem rgba(0, 0, 0, 0.4); + + display: flex; + justify-content: center; + align-items: center; + + margin: 5px; + padding: 10px; + + position: relative; + top: 0; + transition: top 0.2s ease; +} + +.cards:hover { + top: -5px; +} + +.cards-body { + flex: 1 auto; + color: black; + display: flex; + flex-flow: column nowrap; + align-items: flex-start; + margin-left: 5px; +} + +.cards-title { + color: var(--ifm-color-primary-dark); + font-size: 1rem; + font-weight: bold; + align-content: center; +} + +.cards-text { + margin: 1px; + margin-left: 5px; +} diff --git a/website/i18n/en.json b/website/i18n/en.json new file mode 100644 index 000000000000..affb9bb1d58b --- /dev/null +++ b/website/i18n/en.json @@ -0,0 +1,546 @@ +{ + "_comment": "This file is auto-generated by write-translations.js", + "localized-strings": { + "next": "Next", + "previous": "Previous", + "tagline": "The hub for those interested in learning, building, or running a node on Polkadot.", + "docs": { + "ambassadors": { + "title": "Polkadot Ambassador Programme", + "sidebar_label": "Polkadot Ambassador Programme" + }, + "build-build-with-polkadot": { + "title": "Polkadot Builders Starter's Guide", + "sidebar_label": "Polkadot Builders Starter's Guide" + }, + "build-cumulus": { + "title": "Cumulus", + "sidebar_label": "Cumulus" + }, + "build-hackathon": { + "title": "Hackathon", + "sidebar_label": "Hackathon" + }, + "build-index": { + "title": "Builder's Portal", + "sidebar_label": "Builder's Portal" + }, + "build-integration": { + "title": "Polkadot Integration Guide", + "sidebar_label": "Integration Initiation" + }, + "build-node-interaction": { + "title": "Node Interaction", + "sidebar_label": "Node Interaction" + }, + "build-node-management": { + "title": "Node Management", + "sidebar_label": "Node Management" + }, + "build-oracle": { + "title": "Oracles", + "sidebar_label": "Oracles" + }, + "build-parachains-rococo": { + "title": "Rococo Parachain Testnet", + "sidebar_label": "Rococo Parachain Test Network" + }, + "build-pdk": { + "title": "Parachain Development Kits (PDKs)", + "sidebar_label": "Parachain Development Kits (PDKs)" + }, + "build-protocol-info": { + "title": "Polkadot Protocol Information", + "sidebar_label": "Polkadot Protocol" + }, + "build-smart-contracts": { + "title": "Smart Contracts", + "sidebar_label": "Smart Contracts" + }, + "build-ss58-registry": { + "title": "SS58 Registry", + "sidebar_label": "SS58 Registry" + }, + "build-tools-index": { + "title": "Tool Index", + "sidebar_label": "Tool Index" + }, + "build-transaction-construction": { + "title": "Transaction Construction and Signing", + "sidebar_label": "Transaction Construction" + }, + "build-wallets": { + "title": "Polkadot Wallets", + "sidebar_label": "Polkadot Wallets" + }, + "claims": { + "title": "Polkadot Claims", + "sidebar_label": "Claims" + }, + "community": { + "title": "Community", + "sidebar_label": "Community" + }, + "contributing": { + "title": "Contributing", + "sidebar_label": "Contributing" + }, + "contributors": { + "title": "Contributors", + "sidebar_label": "Contributors" + }, + "ens": { + "title": "Adding accounts to an ENS domain", + "sidebar_label": "Using ENS with DOT/KSM accounts" + }, + "faq": { + "title": "Frequently Asked Questions (FAQs)", + "sidebar_label": "Frequently Asked Questions (FAQs)" + }, + "getting-started": { + "title": "Getting Started", + "sidebar_label": "Getting Started" + }, + "glossary": { + "title": "Glossary", + "sidebar_label": "Glossary" + }, + "grants": { + "title": "Web3 Foundation Grants", + "sidebar_label": "Grants" + }, + "polkadot-guide": { + "title": "Polkadot Guide", + "sidebar_label": "Polkadot Guide" + }, + "kusama-adverserial-cheatsheet": { + "title": "Adverserial Cheatsheet", + "sidebar_label": "Adverserial Cheatsheet" + }, + "kusama-bug-bounty": { + "title": "Bug Bounty", + "sidebar_label": "Bug Bounty" + }, + "kusama-claims": { + "title": "Kusama Claims", + "sidebar_label": "Claims" + }, + "kusama-coc": { + "title": "Kusama Code of Conduct", + "sidebar_label": "Code of Conduct" + }, + "kusama-community": { + "title": "Kusama Community", + "sidebar_label": "Community" + }, + "kusama-endpoints": { + "title": "Kusama Endpoints", + "sidebar_label": "Kusama Endpoints" + }, + "kusama-faucet": { + "title": "Kusama Faucet", + "sidebar_label": "Faucet" + }, + "kusama-getting-started": { + "title": "Getting Started", + "sidebar_label": "Getting Started" + }, + "kusama-index": { + "title": "Kusama", + "sidebar_label": "Home" + }, + "kusama-ledger": { + "title": "Using Ledger Devices", + "sidebar_label": "Ledger Devices" + }, + "kusama-parameters": { + "title": "Kusama Parameters", + "sidebar_label": "Parameters" + }, + "kusama-social-recovery": { + "title": "Social Recovery", + "sidebar_label": "Account Recovery" + }, + "kusama-timeline": { + "title": "Kusama Timeline", + "sidebar_label": "Timeline" + }, + "learn-account-generation": { + "title": "Account Generation", + "sidebar_label": "Account Generation" + }, + "learn-account-restore": { + "title": "Backing up and Restoring Accounts", + "sidebar_label": "Backing up and Restoring Accounts" + }, + "learn-accounts": { + "title": "Polkadot Accounts", + "sidebar_label": "Polkadot Accounts" + }, + "learn-architecture": { + "title": "Architecture", + "sidebar_label": "Architecture" + }, + "learn-auction": { + "title": "Parachain Slots Auction", + "sidebar_label": "Parachain Slots Auction" + }, + "learn-availability": { + "title": "Availability and Validity", + "sidebar_label": "Availability and Validity" + }, + "learn-balance-transfers": { + "title": "Balance Transfers", + "sidebar_label": "How to transfer Balances" + }, + "learn-bridges": { + "title": "Bridges", + "sidebar_label": "Bridges" + }, + "learn-collator": { + "title": "Collator", + "sidebar_label": "Collator" + }, + "learn-comparisons-ethereum-2": { + "title": "Polkadot and Ethereum 2.0", + "sidebar_label": "Ethereum 2.0" + }, + "learn-comparisons-cosmos": { + "title": "Polkadot and Cosmos", + "sidebar_label": "Cosmos" + }, + "learn-comparisons": { + "title": "Polkadot Comparisons", + "sidebar_label": "Other comparisons" + }, + "learn-consensus": { + "title": "Polkadot Consensus", + "sidebar_label": "Polkadot Consensus" + }, + "learn-crosschain": { + "title": "Cross-chain Message Passing (XCMP)", + "sidebar_label": "Cross-chain Message Passing (XCMP)" + }, + "learn-crowdloans": { + "title": "Parachain Crowdloans", + "sidebar_label": "Parachain Crowdloans" + }, + "learn-cryptography": { + "title": "Cryptography Explainer", + "sidebar_label": "Cryptography Explainer" + }, + "learn-DOT": { + "title": "DOT", + "sidebar_label": "DOT" + }, + "learn-governance": { + "title": "Governance", + "sidebar_label": "Governance" + }, + "learn-identity": { + "title": "Identity", + "sidebar_label": "Identity" + }, + "learn-implementations": { + "title": "Polkadot Implementations", + "sidebar_label": "Polkadot Implementations" + }, + "learn-implementers-guide": { + "title": "Parachain Implementer's Guide", + "sidebar_label": "Parachain Implementer's Guide" + }, + "learn-keys": { + "title": "Polkadot Keys", + "sidebar_label": "Polkadot Keys" + }, + "learn-kusama-vs-polkadot": { + "title": "What is the difference between Polkadot and Kusama?", + "sidebar_label": "Comparing Polkadot and Kusama" + }, + "learn-launch": { + "title": "Polkadot Launch Phases", + "sidebar_label": "Polkadot Launch Phases" + }, + "learn-ledger": { + "title": "Using the Polkadot Ledger Application", + "sidebar_label": "Ledger Application" + }, + "learn-legitimate-projects": { + "title": "How to Identify Legitimate Projects", + "sidebar_label": "How to Identify Legitimate Projects" + }, + "learn-nominator": { + "title": "Nominator", + "sidebar_label": "Nominator" + }, + "learn-parachains": { + "title": "Parachains", + "sidebar_label": "Parachains" + }, + "learn-parathreads": { + "title": "Parathreads", + "sidebar_label": "Parathreads" + }, + "learn-phragmen": { + "title": "Sequential Phragmén Method", + "sidebar_label": "Sequential Phragmén Method" + }, + "learn-polkadot-host": { + "title": "Polkadot Host (PH)", + "sidebar_label": "Polkadot Host (PH)" + }, + "learn-proxies": { + "title": "Proxy Accounts", + "sidebar_label": "Proxy Accounts" + }, + "learn-randomness": { + "title": "Randomness", + "sidebar_label": "Randomness" + }, + "learn-registrar": { + "title": "Using W3F Registrar", + "sidebar_label": "How to use W3F Registrar" + }, + "learn-scams": { + "title": "How to Protect Yourself from Scams", + "sidebar_label": "How to Protect Yourself from Scams" + }, + "learn-security": { + "title": "Security of the network", + "sidebar_label": "Security of the network" + }, + "learn-simple-payouts": { + "title": "Simple Payouts", + "sidebar_label": "Simple Payouts" + }, + "learn-spree": { + "title": "SPREE", + "sidebar_label": "SPREE" + }, + "learn-staking": { + "title": "Staking", + "sidebar_label": "Staking" + }, + "learn-transaction-fees": { + "title": "Transaction Fees", + "sidebar_label": "Transaction Fees" + }, + "learn-treasury": { + "title": "Treasury", + "sidebar_label": "Treasury" + }, + "learn-validator": { + "title": "Validator", + "sidebar_label": "Validator" + }, + "learn-wasm": { + "title": "WebAssembly (Wasm)", + "sidebar_label": "WebAssembly (Wasm)" + }, + "maintain-errors": { + "title": "Errors and How to Resolve Them", + "sidebar_label": "Resolving Errors" + }, + "maintain-guides-democracy": { + "title": "Participate in Democracy", + "sidebar_label": "Participate in Democracy" + }, + "maintain-guides-how-to-chill": { + "title": "How to Chill", + "sidebar_label": "How to Chill" + }, + "maintain-guides-how-to-join-council": { + "title": "Join the Council", + "sidebar_label": "Join the Council" + }, + "maintain-guides-how-to-monitor-your-node": { + "title": "Monitor your node", + "sidebar_label": "Monitor your node" + }, + "maintain-guides-how-to-nominate-kusama": { + "title": "Be a Nominator (Kusama)", + "sidebar_label": "Nominator Guide" + }, + "maintain-guides-how-to-nominate-polkadot": { + "title": "How to Nominate on Polkadot", + "sidebar_label": "How to Nominate on Polkadot" + }, + "maintain-guides-how-to-setup-sentry-node": { + "title": "Set Up a Sentry Node - Public Node", + "sidebar_label": "Set Up a Sentry Node" + }, + "maintain-guides-how-to-stop-validating": { + "title": "How to Stop Validating", + "sidebar_label": "How to Stop Validating" + }, + "maintain-guides-how-to-systemd": { + "title": "Using systemd for the Validator Node", + "sidebar_label": "Using systemd for the Validator Node" + }, + "maintain-guides-how-to-unbond": { + "title": "Unbonding and Rebonding", + "sidebar_label": "Unbonding and Rebonding" + }, + "maintain-guides-how-to-upgrade": { + "title": "How to Upgrade Your Validator", + "sidebar_label": "How to Upgrade Your Validator" + }, + "maintain-guides-how-to-use-polkadot-secure-validator": { + "title": "How to use Polkadot Secure Validator Setup", + "sidebar_label": "How to use Polkadot Secure Validator Setup" + }, + "maintain-guides-how-to-validate-kusama": { + "title": "Run a Validator (Kusama)", + "sidebar_label": "How to run a Validator on Kusama" + }, + "maintain-guides-how-to-validate-polkadot": { + "title": "Run a Validator (Polkadot)", + "sidebar_label": "How to run a Validator on Polkadot" + }, + "maintain-guides-how-to-vote-councillor": { + "title": "Voting for Councillors", + "sidebar_label": "Voting for Councillors" + }, + "maintain-guides-secure-validator": { + "title": "Secure Validator", + "sidebar_label": "Secure Validator" + }, + "maintain-guides-society-kusama": { + "title": "Join Kappa Sigma Mu", + "sidebar_label": "Join Kappa Sigma Mu" + }, + "maintain-guides-validator-payout": { + "title": "Validator Payout Overview", + "sidebar_label": "Validator Payout Overview" + }, + "maintain-index": { + "title": "Network Maintainers", + "sidebar_label": "Network Maintainers" + }, + "maintain-networks": { + "title": "Networks", + "sidebar_label": "Networks" + }, + "maintain-polkadot-parameters": { + "title": "Polkadot Parameters", + "sidebar_label": "Parameters" + }, + "maintain-sync": { + "title": "Set up a Full Node", + "sidebar_label": "Set up a Full Node" + }, + "maintain-wss": { + "title": "Set up Secure WebSocket for Remote Connections", + "sidebar_label": "Set up Secure WebSocket for Remote Connections" + }, + "mirror-build-build-with-polkadot": { + "title": "Polkadot Builders Starter's Guide", + "sidebar_label": "Polkadot Builders Starter's Guide" + }, + "mirror-build-parachains-rococo": { + "title": "Rococo Parachain Testnet", + "sidebar_label": "Rococo Parachain Test Network" + }, + "mirror-ens": { + "title": "Adding accounts to an ENS domain", + "sidebar_label": "Using ENS with DOT/KSM accounts" + }, + "mirror-learn-auction": { + "title": "Parachain Slots Auction", + "sidebar_label": "Parachain Slots Auction" + }, + "mirror-learn-balance-transfers": { + "title": "Balance Transfers", + "sidebar_label": "How to transfer Balances" + }, + "mirror-learn-crowdloans": { + "title": "Parachain Crowdloans", + "sidebar_label": "Parachain Crowdloans" + }, + "mirror-learn-governance": { + "title": "Governance", + "sidebar_label": "Governance" + }, + "mirror-learn-identity": { + "title": "Identity", + "sidebar_label": "Identity" + }, + "mirror-learn-parachains": { + "title": "Parachains", + "sidebar_label": "Parachains" + }, + "mirror-learn-parathreads": { + "title": "Parathreads", + "sidebar_label": "Parathreads" + }, + "mirror-learn-registrar": { + "title": "Using W3F Registrar", + "sidebar_label": "How to use W3F Registrar" + }, + "mirror-learn-treasury": { + "title": "Treasury", + "sidebar_label": "Treasury" + }, + "mirror-maintain-errors": { + "title": "Errors and How to Resolve Them", + "sidebar_label": "Resolving Errors" + }, + "mirror-maintain-guides-how-to-nominate-kusama": { + "title": "Be a Nominator (Kusama)", + "sidebar_label": "Nominator Guide" + }, + "mirror-maintain-guides-how-to-stop-validating": { + "title": "How to Stop Validating", + "sidebar_label": "How to Stop Validating" + }, + "mirror-maintain-guides-how-to-validate-kusama": { + "title": "Run a Validator (Kusama)", + "sidebar_label": "How to run a Validator on Kusama" + }, + "mirror-thousand-validators": { + "title": "Thousand Validators Programme", + "sidebar_label": "Thousand Validators Programme" + }, + "redenomination": { + "title": "Redenomination of DOT", + "sidebar_label": "Redenomination of DOT" + }, + "research": { + "title": "Research Pages", + "sidebar_label": "Research Pages" + }, + "thousand-validators": { + "title": "Thousand Validators Programme", + "sidebar_label": "Thousand Validators Programme" + } + }, + "links": { + "Get Started": "Get Started", + "Learn": "Learn", + "Build": "Build", + "Maintain ": "Maintain ", + "Kusama": "Kusama", + "Contribute": "Contribute" + }, + "categories": { + "General": "General", + "Guide": "Guide", + "Learn": "Learn", + "Build": "Build", + "Maintain": "Maintain" + } + }, + "pages-strings": { + "Learn more using the [documentation on this site.](/test-site/docs/en/doc1.html)|no description given": "Learn more using the [documentation on this site.](/test-site/docs/en/doc1.html)", + "Browse Docs|no description given": "Browse Docs", + "Ask questions about the documentation and project|no description given": "Ask questions about the documentation and project", + "Join the community|no description given": "Join the community", + "Find out what's new with this project|no description given": "Find out what's new with this project", + "Stay up to date|no description given": "Stay up to date", + "Need help?|no description given": "Need help?", + "This project is maintained by a dedicated group of people.|statement made to reader": "This project is maintained by a dedicated group of people.", + "Help Translate|recruit community translators for your project": "Help Translate", + "Edit this Doc|recruitment message asking to edit the doc source": "Edit", + "Translate this Doc|recruitment message asking to translate the docs": "Translate" + } +} diff --git a/website/sidebars.json b/website/sidebars.json new file mode 100644 index 000000000000..fa665a346b1c --- /dev/null +++ b/website/sidebars.json @@ -0,0 +1,172 @@ +{ + "docs": { + "General": [ + "getting-started", + "claims", + "redenomination", + "grants", + "thousand-validators", + "ambassadors", + "research", + "community", + "contributing", + "contributors", + "glossary", + "ens", + "learn-ledger", + "learn-scams", + "how-to-dyor", + "faq" + ], + "Guide":[ + "polkadot-guide" + ], + "Learn": [ + "learn-launch", + { + "type": "subcategory", + "label": "Basics", + "ids": [ + "learn-architecture", + "learn-accounts", + "learn-account-generation", + "learn-account-restore", + "learn-DOT", + "learn-security", + "learn-consensus", + "learn-nominator", + "learn-validator", + "learn-collator", + "learn-governance", + "learn-identity", + "learn-balance-transfers", + "learn-transaction-fees", + "learn-polkadot-host", + "learn-treasury", + "learn-registrar", + "learn-runtime-upgrades" + ] + }, + { + "type": "subcategory", + "label": "Parachains", + "ids": [ + "learn-parachains", + "learn-parathreads", + "learn-bridges", + "learn-common-goods", + "learn-auction", + "learn-crowdloans" + ] + }, + { + "type": "subcategory", + "label": "Advanced", + "ids": [ + "learn-staking", + "learn-proxies", + "learn-availability", + "learn-randomness", + "learn-crosschain", + "learn-spree", + "learn-wasm", + "learn-phragmen", + "learn-simple-payouts" + ] + }, + { + "type": "subcategory", + "label": "Cryptography", + "ids": ["learn-cryptography", "learn-keys"] + }, + { + "type": "subcategory", + "label": "Polkadot Comparisons", + "ids": [ + "learn-kusama-vs-polkadot", + "learn-comparisons-ethereum-2", + "learn-comparisons-cosmos", + "learn-comparisons" + ] + } + ], + "Build": [ + "build-index", + { + "type": "subcategory", + "label": "Development Guide", + "ids": [ + "build-build-with-polkadot", + "build-pdk", + "learn-implementers-guide", + "build-cumulus", + "build-parachains-rococo", + "build-smart-contracts", + "build-oracle", + "build-ss58-registry", + "build-wallets" + ] + }, + { + "type": "subcategory", + "label": "Integration Guide", + "ids": [ + "build-integration", + "build-protocol-info", + "build-integrate-assets", + "build-node-management", + "build-node-interaction", + "build-transaction-construction" + ] + }, + { + "type": "subcategory", + "label": "Tools", + "ids": ["build-tools-index"] + }, + { + "type": "subcategory", + "label": "Resources", + "ids": ["build-hackathon"] + } + ], + "Maintain": [ + "maintain-index", + "maintain-polkadot-parameters", + { + "type": "subcategory", + "label": "Nodes and Dapps", + "ids": ["maintain-sync", "maintain-networks", "maintain-wss", "maintain-errors"] + }, + { + "type": "subcategory", + "label": "Nominator Guides", + "ids": ["maintain-guides-how-to-nominate-polkadot", "maintain-guides-how-to-unbond"] + }, + { + "type": "subcategory", + "label": "Validator Guides", + "ids": [ + "maintain-guides-how-to-validate-polkadot", + "maintain-guides-validator-payout", + "maintain-guides-how-to-systemd", + "maintain-guides-secure-validator", + "maintain-guides-how-to-use-polkadot-validator-setup", + "maintain-guides-how-to-upgrade", + "maintain-guides-how-to-monitor-your-node", + "maintain-guides-how-to-chill", + "maintain-guides-how-to-stop-validating" + ] + }, + { + "type": "subcategory", + "label": "Governance Guides", + "ids": [ + "maintain-guides-democracy", + "maintain-guides-how-to-join-council", + "maintain-guides-how-to-vote-councillor" + ] + } + ] + } +} diff --git a/website/static/css/custom.css b/website/static/css/custom.css new file mode 100755 index 000000000000..e52982012452 --- /dev/null +++ b/website/static/css/custom.css @@ -0,0 +1,1062 @@ +:root { + --primaryColor: #e6007a; + --secondaryColor: #172026; + --snowColor: #efefef; + --silverColor: #b7b8bb; + --nickelColor: #6d7278; + --sansFontFamily: "Work Sans", sans-serif !important; +} + +@media only screen and (min-device-width: 360px) and (max-device-width: 736px) { + .mainpage-column { + width: 100% !important; + } +} + +@media only screen and (min-width: 1024px) { +} + +@media only screen and (max-width: 1023px) { +} + +@media only screen and (min-width: 1400px) { +} + +@media only screen and (min-width: 1500px) { +} + +body { + font-family: var(--sansFontFamily); +} + +/* ========================================================================== + Typography + ========================================================================== */ + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + margin-top: 0; +} + +.text-dark { + color: var(--secondaryColor) !important; +} + +/* ========================================================================== + Header + ========================================================================== */ + +.fixedHeaderContainer { + background: white; +} + +.fixedHeaderContainer .headerWrapper { + max-width: 1400px !important; +} + +@media only screen and (min-width: 1024px) { + .fixedHeaderContainer { + /* border-bottom: solid 1px transparent; */ + border-bottom: solid 1px var(--snowColor); + } + body.sideNavVisible.separateOnPageNav .fixedHeaderContainer { + border-bottom: solid 1px var(--snowColor); + } +} + +.fixedHeaderContainer header .headerTitleWithLogo { + display: none; +} + +/* + Navigation + ========================================================================== */ + +.navigationSlider .slidingNav ul li > a { + color: var(--silverColor); +} + +.navigationSlider .slidingNav ul li > a:visited { + color: var(--silverColor); +} + +.navigationSlider .slidingNav ul li > a:hover, +.navigationSlider .slidingNav ul li > a:focus { + background: none; + color: white; + transition: color 0.2s ease-in-out; +} + +.navigationSlider .slidingNav ul li.siteNavGroupActive > a { + background: none; + color: var(--silverColor); +} + +.navigationSlider .slidingNav ul li.siteNavGroupActive > a:hover { + color: white; + transition: color 0.2s ease-in-out; +} + +.navigationSlider .slidingNav ul li.siteNavItemActive > a { + color: white; +} + +@media only screen and (min-width: 1024px) { + .navigationSlider .slidingNav ul li > a { + color: var(--silverColor); + } + + .navigationSlider .slidingNav ul li > a:visited { + color: var(--silverColor); + } + + .navigationSlider .slidingNav ul li > a:hover, + .navigationSlider .slidingNav ul li > a:focus { + color: var(--secondaryColor); + } + + .navigationSlider .slidingNav ul li.siteNavGroupActive > a { + color: var(--silverColor); + } + + .navigationSlider .slidingNav ul li.siteNavGroupActive > a:hover { + color: var(--secondaryColor); + } + + .navigationSlider .slidingNav ul li.siteNavItemActive > a { + color: var(--secondaryColor); + } +} + +/* + Search + ========================================================================== */ + +.navSearchWrapper.reactNavSearchWrapper::before { + border: 3px solid var(--silverColor); + transition: border 0.2s ease-in-out; + width: 13px; + height: 13px; +} + +.navSearchWrapper.reactNavSearchWrapper:hover::before { + border: 3px solid var(--secondaryColor); +} + +.navSearchWrapper.reactNavSearchWrapper::after { + background: var(--silverColor); + transition: background 0.2s ease-in-out; +} + +.navSearchWrapper.reactNavSearchWrapper:hover::after { + background: var(--secondaryColor); +} + +.reactNavSearchWrapper input#search_input_react { + color: var(--secondaryColor); + background: white; + border: solid 1px var(--snowColor); + font-family: var(--sansFontFamily); + height: 35px; + line-height: 35px; + font-size: 14px; + font-weight: bold; +} + +.reactNavSearchWrapper input#search_input_react::placeholder { + color: var(--silverColor); +} + +.reactNavSearchWrapper input#search_input_react:hover::placeholder { + /* color: var(--secondaryColor); */ +} + +.reactNavSearchWrapper input#search_input_react:focus, +.reactNavSearchWrapper input#search_input_react:active { + color: var(--secondaryColor); + border: solid 1px var(--snowColor); + background: var(--snowColor); +} + +/* + Algolia search widget + ========================================================================== */ +/*! docsearch 1.5.0 | © Algolia | github.com/algolia/docsearch */ + +.navSearchWrapper .aa-dropdown-menu { + /* background: var(--snowColor); */ + background: white; + border: none; + color: #393939; + font-size: 14px; + left: auto !important; + line-height: 1.2em; + right: 0 !important; + border-radius: 32px; + padding: 0 32px 22px; + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175); + border-radius: 1.5rem; + margin-top: 15px; +} + +.navSearchWrapper .aa-dropdown-menu[style*="display: block;"] { + -webkit-animation: fade-in-up 0.2s linear forwards; + animation: fade-in-up 0.2s linear forwards; +} + +.algolia-docsearch-suggestion { + color: #333; + cursor: pointer; + overflow: hidden; +} + +.algolia-docsearch-suggestion__secondary { + border-top: none !important; +} + +.algolia-docsearch-suggestion--category-header { + display: none; + background: white !important; + border-bottom: solid 1px var(--snowColor); + color: black !important; + font-weight: 700 !important; + font-size: 24px !important; + padding: 30px 0 15px 0; + margin-bottom: 15px; + text-align: left; +} + +.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header { + display: block; + color: black !important; +} + +.algolia-docsearch-suggestion--highlight { + padding: 0; + color: #0064e1 !important; + background: none; + font-weight: 700; + background: white !important; +} + +.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight { + color: inherit; + background: white !important; +} + +.aa-cursor .algolia-docsearch-suggestion--content { + color: #0064e1; + background: white !important; +} + +.aa-cursor .algolia-docsearch-suggestion--content { + color: var(--primaryColor) !important; +} + +.aa-cursor .algolia-docsearch-suggestion { + background: white !important; +} + +.algolia-docsearch-suggestion--subcategory-column { + display: none; + cursor: default; + background: white !important; + text-align: left !important; + padding-left: 0 !important; + border-right: solid 1px var(--snowColor) !important; +} + +.algolia-docsearch-suggestion--text { + display: none; +} + +.algolia-docsearch-suggestion--content { + padding: 3px 5px; + width: 100%; + border-top: none !important; + border-bottom: none; +} + +.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--content, +.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--content { + border-top: 0; +} + +.algolia-docsearch-suggestion--subcategory-inline { + display: inline-block; + font-weight: bold; +} + +.algolia-docsearch-suggestion--subcategory-inline:after { + content: " › "; +} + +.algolia-docsearch-suggestion--title { + display: inline; +} + +.algolia-docsearch-footer { + border-top: none !important; + text-align: right; + font-size: 12px; + padding: 30px 2px 0 0; + color: var(--snowColor) !important; +} + +.algolia-docsearch-footer .algolia-docsearch-footer--logo { + display: inline-block !important; + width: 111px; + height: 15px; + text-indent: 101%; + overflow: hidden; + white-space: nowrap; + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-size: contain; + vertical-align: middle; + padding: 0px !important; +} + +@media (min-width: 568px) { + .aa-dropdown-menu { + min-width: 400px; + } + .algolia-docsearch-suggestion--text { + display: block; + font-size: 0.9em; + padding: 2px 0; + } +} + +@media (min-width: 768px) { + .aa-dropdown-menu { + min-width: 600px; + } + .algolia-docsearch-suggestion { + display: table; + width: 100%; + } + .algolia-docsearch-suggestion__secondary { + border-top: 1px solid #606060; + } + .algolia-docsearch-suggestion--subcategory-column { + border-right: 1px solid #606060; + background: #f1f3f5; + color: #555; + display: table-cell; + overflow: hidden; + padding: 5px 7px 5px 5px; + text-align: right; + text-overflow: ellipsis; + vertical-align: top; + width: 135px; + max-width: 135px; + min-width: 135px; + /* background: black !important; */ + } + .algolia-docsearch-suggestion--subcategory-column-text { + display: none; + } + .algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column-text { + display: block; + } + .algolia-docsearch-suggestion--content { + display: table-cell; + padding: 5px 10px; + } + .algolia-docsearch-suggestion--subcategory-inline { + display: none; + } + .algolia-docsearch-suggestion--title { + font-weight: 600; + } + .algolia-docsearch-suggestion--text { + display: block; + font-weight: normal; + padding: 2px; + } +} + +/* + Contribute button + ========================================================================== */ + +@media only screen and (min-width: 1024px) { + .navigationSlider .slidingNav > ul > li a[href*="contributing"] { + background: white; + height: 100%; + border: solid 1px var(--primaryColor); + border-radius: 20px; + color: var(--primaryColor); + height: 35px; + line-height: 35px; + font-size: 14px; + padding: 0 16px; + margin-left: 8px; + font-weight: bold; + } + + .navigationSlider .slidingNav > ul > li a[href*="contributing"]:hover { + background: var(--primaryColor); + color: white; + } +} + +/* + Languages + ========================================================================== */ + +#languages-menu { + margin-left: 5px; + margin-right: 5px; +} + +#languages-menu img { + opacity: 0.7; +} + +#languages-dropdown { + border: none; + background: white; + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175); + border-radius: 1.5rem; + width: auto; + right: 0; + top: 90px; + margin: 0 15px; +} + +#languages-dropdown.visible { + -webkit-animation: fade-in-up 0.2s linear forwards; + animation: fade-in-up 0.2s linear forwards; +} + +#languages-dropdown-items { + margin: 12px 0; + background: transparent; +} + +#languages-dropdown-items > li a { + padding: 12px 24px; + color: var(--secondaryColor); +} + +#languages-dropdown-items > li a:visited { + color: var(--secondaryColor); +} + +#languages-dropdown-items > li a:hover { + color: var(--primaryColor); +} + +@media only screen and (min-width: 1024px) { + #languages-menu { + margin-left: 0; + margin-right: 0; + } + + #languages-menu img { + display: none; + } + + #languages-dropdown { + top: 50px; + margin: 0; + } +} + +/* ========================================================================== + Docs Navigation + ========================================================================== */ + +.docsNavContainer .toggleNav h2 i { + display: none; +} + +/* ========================================================================== + Home + ========================================================================== */ + +.homeContainer { + background: white; +} + +/* + Home Nav + ========================================================================== */ + +.homeNavContainer { + padding: 3rem 0; +} + +.homeNavItem { + -webkit-transition: all 0.15s ease-in-out; + transition: all 0.15s ease-in-out; + padding: 3rem 0; + border-radius: 3.25rem !important; +} + +.homeNavItem p { + max-width: 300px; +} + +@media (min-width: 768px) { +} + +@media (min-width: 992px) { + .homeNavContainer { + height: 90vh; + min-height: 600px; + max-height: 900px; + } + + .homeNavItem { + -webkit-transition: all 0.15s ease-in-out; + transition: all 0.15s ease-in-out; + height: 60vh; + max-height: 500px; + border-radius: 3.25rem !important; + margin-top: -3rem; + } + + .homeNavItem::after { + font-size: 1.5rem; + font-family: "Material Icons"; + content: "arrow_upward"; + -webkit-font-feature-settings: "liga"; + position: absolute; + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 3rem; + color: var(--snowColor); + opacity: 0; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + } + + .homeNavItem:hover { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.04); + transform: translateY(-1rem); + } + + .homeNavItem:hover::after { + opacity: 1; + } + + .homeNavItem h2 { + font-size: 3.5rem; + font-weight: 400; + line-height: 1.2; + } +} + +@media (min-width: 1200px) { + .homeNavItem h2 { + font-size: 4.5rem; + font-weight: 400; + line-height: 1.2; + } +} + +/* + Home Footer + ========================================================================== */ + +.homeFooterContainer { + padding: 6rem 0; + background-image: linear-gradient(217deg, rgba(196, 0, 97, 0.8), rgba(196, 0, 97, 0) 70%), + linear-gradient(127deg, rgba(230, 0, 122, 0.8), rgba(230, 0, 122, 0) 70%), + linear-gradient(336deg, rgba(103, 69, 210, 0.7), rgba(103, 69, 210, 0) 70%); + background-color: #e6007a; +} + +/* ========================================================================== + Mainpage + ========================================================================== */ + +.mainpage-row { + width: 100%; + display: flex; + padding: 10%; + padding-top: 0; + padding-bottom: 0; + flex-flow: row wrap; + justify-content: center; +} + +.mainpage-column { + width: 50%; + display: flex; + align-items: center; + padding: 5%; + text-align: center; + flex-flow: column; +} + +.mainpage-maintain-btn { + background: black; + border: none; + color: white; + font-weight: 500; + padding: 10px; + font-size: 14px; + margin-top: 12px; +} + +.mainpage-maintain-btn:hover { + background: #e6007a; + cursor: pointer; +} + +.mainpage-build-btn { + background: #e6007a; + border: none; + color: white; + font-weight: 500; + padding: 10px; + font-size: 14px; + margin-top: 24px; + margin-bottom: 12px; +} + +.mainpage-build-btn:hover { + background: black; + cursor: pointer; +} + +.mainpage-row-build { + width: 100%; + display: flex; + padding: 0%; + padding-top: 0; + padding-bottom: 0; + flex-flow: row wrap; + justify-content: center; + background-image: linear-gradient(#aaa, #777); + color: white; +} + +.mainpage-row-learn { + width: 100%; + display: flex; + padding: 0%; + padding-top: 0; + padding-bottom: 0; + flex-flow: row wrap; + justify-content: center; + background-image: linear-gradient(#fff, #aaa); + color: black; +} + +.full-width { + width: 100%; + text-align: center; +} + +/* ========================================================================== + Components + ========================================================================== */ + +.myButton { + padding: 10px; + padding-left: 12px; + padding-right: 12px; + background: black; + color: white; + border: none; + font-size: 16px; +} + +.myButton:hover { + background: #e6007a; + cursor: pointer; +} + +.projectTitle { + color: black; +} + +.nav-footer .row { + display: flex; + justify-content: center; +} + +.nav-footer .row .item { + padding-left: 16px; + color: rgba(255, 255, 255, 0.4); +} + +.nav-footer .row .item:hover { + color: #ffffff; +} + +/* + Button + ========================================================================== */ + +.btn { + font-weight: 700; + border-radius: 1.5rem; + font-size: 16px; + padding: 8px 16px; +} +.btn:before { + width: 42px; + left: -42px; + border-radius: 1.5rem; +} +.btn-lg, +.btn-group-lg > .btn { + border-radius: 2rem; + padding: 16px 20px; +} +.btn-lg:before, +.btn-group-lg > .btn:before { + width: 58px; + left: -58px; + border-radius: 2rem; +} +.btn-sm, +.btn-group-sm > .btn { + border-radius: 1.5rem; + font-size: 16px; + padding: 8px 16px; +} +.btn-sm:before, +.btn-group-sm > .btn:before { + width: 42px; + left: -42px; + border-radius: 1.5rem; +} +.btn-primary { + color: var(--primaryColor); + background-color: transparent; + border-color: var(--primaryColor); + position: relative; + z-index: 1; + overflow: hidden; + border: solid 1px var(--primaryColor); + transition: all 0.2s ease, border 1ms ease; + will-change: transform; + transform: scale(0.999); +} +.btn-primary:before { + content: ""; + height: 100%; + position: absolute; + top: 0; + background: var(--primaryColor); + transition: all 0.2s ease; + will-change: transform; + color: transparent; + z-index: -1; + border: solid 1px var(--primaryColor); +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active { + background: none; + color: white; + will-change: transform; + transform: scale(1.05); + border: solid 1px transparent; +} +.btn-primary:focus, +.btn-primary.focus { + box-shadow: 0 0 0.2rem 0.2rem rgba(0, 0, 0, 0.1); +} +.btn-primary:not(:disabled):not(.disabled):active { + background-color: transparent; +} +.btn-primary[type="submit"]:hover, +.btn-primary[type="submit"]:focus, +.btn-primary[type="submit"]:active { + background: var(--primaryColor); +} +.btn-primary:hover:before, +.btn-primary:focus:before, +.btn-primary:active:before { + left: 0; + width: 100%; +} +.btn-bg-primary.btn-primary { + color: white !important; + border-color: white; + border: solid 1px white; +} +.btn-bg-primary.btn-primary:hover, +.btn-bg-primary.btn-primary:focus, +.btn-bg-primary.btn-primary:active { + background: white; + color: var(--primaryColor) !important; +} +.btn-bg-primary.btn-primary:before { + content: none; + height: 100%; + position: absolute; + top: 0; + background: white; + transition: all 0.2s ease; + will-change: transform; + color: transparent; + z-index: -1; + border: solid 1px white; +} +.btn-white { + color: white !important; +} + +/* ========================================================================== + Footer + ========================================================================== */ + +.nav-footer { + background: var(--secondaryColor); + border: none; + color: #202020; + font-size: 16px; + line-height: 24px; + position: relative; +} + +/* + Bootstrap fix + ========================================================================== */ + +.nav-footer.spacer-y-4 { + padding-top: 3rem; + padding-bottom: 3rem; +} + +.nav-footer.pb-4 { + padding-bottom: 2.25rem !important; +} + +.nav-footer .text-small { + font-size: 0.875rem; +} + +@media (min-width: 768px) { + .nav-footer.spacer-y-4 { + padding-top: 6rem; + padding-bottom: 6rem; + } + + .nav-footer .py-md-1 { + padding-bottom: 0.375rem !important; + padding-top: 0.375rem !important; + } +} + +/* + Footer Nav + ========================================================================== */ + +.nav-footer h5 { + font-size: 1.25rem; + font-weight: 400; + letter-spacing: -0.04em; + margin-top: 0; +} + +.nav-footer a.text-white { + color: #b7b8bb !important; +} + +.nav-footer a.text-white:visited { + color: #b7b8bb !important; +} + +.nav-footer a.text-white:hover { + color: white !important; +} + +/* + Footer Social + ========================================================================== */ + +.list-social-links { + padding: 0; + list-style: none; + display: flex; +} + +footer .list-social-links i { + font-size: 1.2rem; +} + +footer .list-social-links a { + padding: 0.25rem 0.9rem; +} + +footer [class^="socicon-"] { + line-height: 2; +} + +footer .list-social-links { + margin-left: 0rem; +} +footer .list-social-links li { + margin-top: 0 !important; +} + +footer .list-social-links a { + background: transparent !important; + border: 1px solid white; + color: white; + padding: 0.25rem 0.9rem; + display: block; + border-radius: 50%; +} + +/* + Footer Legal + ========================================================================== */ + +.footer-legal .navbar-brand { + display: block; + padding-bottom: 0; +} + +.footer-legal ul { + margin-bottom: 0; +} + +.footer-legal li + li { + margin-top: 0; +} + +.footer-legal .list-pipe-separator > li:not(:last-child) > a:after { + content: "|"; + margin: 0 0.375rem; + opacity: 0.5; +} + +.footer-legal .text-white { + color: #b5aeae !important; +} + +.footer-legal .text-white:visited { + color: #b5aeae !important; +} + +.footer-legal .text-white:hover { + color: #fff !important; +} + +/* ========================================================================== + Animations + ========================================================================== */ + +@-webkit-keyframes fade-in-up { + 0% { + opacity: 0; + transform: translateY(1.5rem); + } + 50% { + opacity: 1; + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes fade-in-up { + 0% { + opacity: 0; + transform: translateY(1.5rem); + } + 50% { + opacity: 1; + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +.address-changer { + width: 100%; + padding: 10px; + border: 2px solid black; +} + +.address-changer-input { + width: 74%; +} + +.address-changer-select { + height: 30px; + width: 25%; + margin-left: auto; + margin-right: auto; +} + +.address-changer-output { + height: 30px; + display: flex; + padding: 10px; + justify-content: center; + align-items: center; +} + +/* ========================================================================== + Guide Section + ========================================================================== */ +.cards-container{ + display: flex; + flex-flow: row wrap; + max-width: 100%; + min-width: 0; + align-items: center; + justify-content: center; +} + +.cards{ + border: 1px solid var(--primaryColor); + width: 350px; + height: 80px; + border-radius: 10px; + box-shadow: 0 0.1rem 0.1rem rgba(0,0,0,0.4); + + display: flex; + justify-content: center; + align-items: center; + + margin: 5px; + padding: 10px; + + position: relative; + top: 0; + transition: top 0.2s ease; +} + +.cards:hover{ + top: -5px; +} + +.cards-body{ + flex: 1 auto; + color: black; + display: flex; + flex-flow: column nowrap; + align-items: flex-start; + margin-left: 5px; +} + +.cards-title{ + margin: 1px; + margin-left: 5px; + margin-bottom: 3px; +} +.cards-text{ + margin: 1px; + margin-left: 5px; +} +