diff --git a/assets/css/devportal.css b/assets/css/devportal.css index 11217833cf..109ff2a899 100644 --- a/assets/css/devportal.css +++ b/assets/css/devportal.css @@ -817,23 +817,14 @@ a.current { } /* Use Cases ---------------------------------------------------------------- */ -.use-case-steps { - padding-left: 1.5rem; - margin-left: 1.5rem; - border-left: 1px dashed #3B4147; - position: relative; -} .use-case-step-num { - border: 1px solid #3B4147; - border-radius: 50%; - padding: 0.9rem; - position: absolute; - left: -1.8rem; - height: 3.5rem; - width: 3.5rem; - text-align: center; - background-color: white; + margin-top: 64px; + margin-bottom: 24px; + color: #eae7e6; + font-size: 5.16em; + font-weight: 400; + font-family: 'Space Mono', sans-serif; } .use-case-step-length { @@ -842,19 +833,50 @@ a.current { font-size: 1rem; } -.use-case-steps p { - margin-left: .8rem; -} - .use-case-steps h2 { - margin-left: .8rem; - margin-top: 0; + margin-top: 10px; + margin-bottom: 10px; + font-size: 1.728em; + line-height: 32px; + font-weight: 700; +} +.use-case-steps h2 a { + text-decoration: none; } .use-case-steps h2:first-of-type:before { display: none; } +.use-case h1 { + font-size: 2.4em; + padding-bottom: 10px; +} +.use-case-steps h2:before { + margin-top: -30px; + height: 0; +} +.use-case-steps h2:first-of-type { + margin-top: -30px; +} + +.related-tasks-links ul { + list-style-type: none; + padding-left: 0; +} +.related-tasks-links ul li { + margin: 0px; + padding-top: 2px; +} +.related-tasks-links a:hover::after { + padding-left: .5em; +} +.related-tasks-links a::after { + content: " ➝"; + padding-left: 0; + transition: all .2s ease-in-out; +} + /* Landing Pages ------------------------------------------------------------ */ .landing .display-4 { diff --git a/assets/vendor/bootstrap.css b/assets/vendor/bootstrap.css index c72243781a..4e528f850c 100644 --- a/assets/vendor/bootstrap.css +++ b/assets/vendor/bootstrap.css @@ -7324,10 +7324,12 @@ aside a.active-parent { border-right: 1px solid #EBE8E7; } .content a.button { - box-shadow: inset 0 0 0 1px #D3D0CF; - color: #676463; + color: #1B1818; border: 1px solid #D3D0CF; } +.content a.button:hover { + border: 1px solid #1B1818; } + #main_content_wrapper .btn-outline-secondary:hover, #main_content_wrapper .btn-outline-secondary:active, .button:hover, #request_button:hover { @@ -7336,6 +7338,21 @@ aside a.active-parent { background-color: inherit; border: 1px solid #1B1818; } +/* Use Cases ---------------------------------------------------------------- */ +.related-tasks-links a { + color: #676463; + text-decoration: none; } + +.related-tasks-links a:hover { + color: #1B1818; } + +.use-case-external-link { + border: 1px solid #D3D0CF; } + +.content .use-case-external-link a { + text-decoration: none; + color: #1B1818; } + /* Edit on GitHub link ------------------------------------------------------ */ .github-edit-wrap { border: 1px solid #B3B0AF; diff --git a/content/use-cases/contribute-code-to-ripple-lib.md b/content/use-cases/contribute-code-to-ripple-lib.md index 790d461758..ecf532fddd 100644 --- a/content/use-cases/contribute-code-to-ripple-lib.md +++ b/content/use-cases/contribute-code-to-ripple-lib.md @@ -7,37 +7,42 @@ Want to contribute code or a bug report to help improve `ripple-lib`, the offici {% set n = cycler(* range(1,99)) %} {{n.next()}} -## [Access the `ripple-lib` repo](https://github.com/ripple/ripple-lib) +## Access the `ripple-lib` repo `ripple-lib` is an open-source project. You can take a look at `ripple-lib` code simply by accessing the `ripple-lib` GitHub repo. Before contributing or reporting bugs, we recommend that you get to know the code and developer experience by performing the following tasks. +[Access the `ripple-lib` repo](https://github.com/ripple/ripple-lib) {{n.next()}} -## [Set up and run a `rippled` server](manage-the-rippled-server.html) +## Set up and run a rippled server RippleAPI is an API for interacting with the XRP Ledger. The core peer-to-peer server that manages the XRP Ledger is `rippled`. Optionally, you can set up and run a `rippled` server to understand its developer experience and functionality. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger. +[Set up and run a rippled server >](manage-the-rippled-server.html) {{n.next()}} -## [Get a Test Net XRP Ledger account](xrp-test-net-faucet.html) +## Get a Test Net XRP Ledger account Use the XRP Test Net Faucet to get a test account on the XRP Test Network. If you set up a `rippled` server, you can connect it to the XRP Test Net to make test calls and get to know the XRP Ledger. +[Get a Test Net XRP Ledger account >](xrp-test-net-faucet.html) {{n.next()}} -## [Set up your `ripple-lib` development environment](get-started-with-rippleapi-for-javascript.html#environment-setup) +## Set up your `ripple-lib` development environment `ripple-lib` requires Node.js and a few dependencies. We recommend using [Node.js v10 LTS](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/en/) dependency management. Also, be sure to create your own fork of the `ripple-lib` repository on GitHub so you can contribute pull requests to the official repo. +[Set up your development environment >](get-started-with-rippleapi-for-javascript.html#environment-setup) {{n.next()}} -## [Run your first `ripple-lib` script](get-started-with-rippleapi-for-javascript.html#first-rippleapi-script) +## Run your first `ripple-lib` script Examine and run the `get-account-info.js` script. Use it to get a feel for how RippleAPI scripts work and to verify that your RippleAPI interface is working. +[Run your first script >](get-started-with-rippleapi-for-javascript.html#first-rippleapi-script) {{n.next()}} -## [Contribute code](https://github.com/ripple/ripple-lib/pulls) +## Contribute code Now that you have a handle on `ripple-lib`, you may have ideas for how to improve it. @@ -47,10 +52,13 @@ Need some inspiration? Take a look at our list of [Help Wanted issues](https://g Access the `ripple-lib` repo and open an issue or pull request. +[Contribute code](https://github.com/ripple/ripple-lib/pulls) {{n.next()}} -## [Report bugs](https://github.com/ripple/ripple-lib/issues) +## Report bugs As you explore `ripple-lib`, you may find code that you don’t think is working as intended. To report a bug, [open an issue](https://github.com/ripple/ripple-lib/issues) in the `ripple-lib` repo. If the bug you wish to report is security-related, we urge you to disclose it responsibly through Ripple's [Bug Bounty program](https://ripple.com/bug-bounty/). + +[Report bugs](https://github.com/ripple/ripple-lib/issues) \ No newline at end of file diff --git a/content/use-cases/contribute-code-to-rippled.md b/content/use-cases/contribute-code-to-rippled.md index 165114de8a..ec2ce55287 100644 --- a/content/use-cases/contribute-code-to-rippled.md +++ b/content/use-cases/contribute-code-to-rippled.md @@ -6,28 +6,32 @@ Want to contribute code or a bug report to help improve `rippled`, the core peer {% set n = cycler(* range(1,99)) %} {{n.next()}} -## [Access the `rippled` repo](https://github.com/ripple/rippled) +## Access the `rippled` repo `rippled` is an open-source project. You can take a look at `rippled` code simply by accessing the `rippled` GitHub repo. Before contributing or reporting bugs, we recommend that you get to know the code and developer experience by performing the following tasks. +[Access the repo](https://github.com/ripple/rippled) {{n.next()}} -## [Set up and run a `rippled` server](manage-the-rippled-server.html) +## Set up and run a `rippled` server Set up and run a `rippled` server to understand the developer experience and functionality of the core peer-to-peer server that manages the XRP Ledger. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger. +[Set up and run a server >](manage-the-rippled-server.html) {{n.next()}} -## [Try out XRP Ledger integration tools](get-started-with-the-rippled-api.html) +## Try out XRP Ledger integration tools Take a look at the various tools provided to help developers integrate with the XRP Ledger. From WebSocket and JSON-RPC API endpoints to the `ripple-lib` JavaScript library, take a look at the modes of integration offered to the developer community. +[Try out XRP Ledger integration tools >](get-started-with-the-rippled-api.html) {{n.next()}} -## [Get a sandbox XRP Ledger account](xrp-test-net-faucet.html) +## Get a sandbox XRP Ledger account Use the XRP Ledger Test Net to get a sandbox account. Connect your `rippled server` to the Test Net to make test calls and get to know the XRP Ledger. +[Get a sandbox XRP Ledger account >](xrp-test-net-faucet.html) {{n.next()}} ## Set up your development environment @@ -36,20 +40,24 @@ A `rippled` development environment has a C++ compiler, access to the necessary {{n.next()}} -## [Familiarize yourself with `rippled`'s coding style](https://github.com/ripple/rippled/blob/develop/docs/CodingStyle.md) +## Familiarize yourself with `rippled`'s coding style Before you start contributing code to `rippled,` take some time to familiarize yourself with the coding standards used in the `rippled` repo. These standards gradually evolve and propagate through code reviews. Some aspects are enforced more strictly than others. +[Familiarize yourself with `rippled`'s coding style](https://github.com/ripple/rippled/blob/develop/docs/CodingStyle.md) {{n.next()}} -## [Contribute code](https://github.com/ripple/rippled/pulls) +## Contribute code Now that you have a handle on `rippled`, you may have ideas for how to improve it. Perhaps you’re developing on the XRP Ledger and want to contribute some code that enables the XRP Ledger to provide a feature your application needs. Access the `rippled` repo and open an issue or pull request. +[Contribute code](https://github.com/ripple/rippled/pulls) {{n.next()}} -## [Report bugs](https://github.com/ripple/rippled/issues) +## Report bugs As you explore `rippled`, you may find code that you don’t think is working as intended. To report a bug, [open an issue](https://github.com/ripple/rippled/issues) in the `rippled` repo. If the bug you wish to report is security-related, we urge you to disclose it responsibly through Ripple's [Bug Bounty program](https://ripple.com/bug-bounty/). + +[Report bugs](https://github.com/ripple/rippled/issues) \ No newline at end of file diff --git a/content/use-cases/list-xrp-in-your-exchange.md b/content/use-cases/list-xrp-in-your-exchange.md index d6fca5ac9c..7f96f0836f 100644 --- a/content/use-cases/list-xrp-in-your-exchange.md +++ b/content/use-cases/list-xrp-in-your-exchange.md @@ -52,9 +52,11 @@ To support listing XRP, code integrations with the XRP Ledger to deposit XRP int [Understand the flow of funds >](list-xrp-as-an-exchange.html#flow-of-funds) ### Related Tasks +
\ No newline at end of file diff --git a/content/use-cases/open-a-payment-channel-to-enable-an-inter-exchange-network.md b/content/use-cases/open-a-payment-channel-to-enable-an-inter-exchange-network.md index 3c1541345b..b5385ac846 100644 --- a/content/use-cases/open-a-payment-channel-to-enable-an-inter-exchange-network.md +++ b/content/use-cases/open-a-payment-channel-to-enable-an-inter-exchange-network.md @@ -31,23 +31,25 @@ Here’s a roadmap to the high-level tasks you’ll need to perform to implement {% set n = cycler(* range(1,99)) %} {{n.next()}} -## [Understand payment channels](payment-channels.html) +## Understand payment channels Learn more about payment channels and whether they provide the features you need for your specific implementation. +[Understand payment channels >](payment-channels.html) {{n.next()}} -## Payer and payee: [Set up and run `rippled` servers](manage-the-rippled-server.html) +## Payer and payee: Set up and run `rippled` servers To use a payment channel to send and receive XRP, both the payer and payee exchanges must each have access to a `rippled` server that they can use to send transactions. If your exchange processes XRP withdrawals directly, you are probably already running a `rippled` server that you can use for this purpose. If not, a great way for an exchange to get access to a `rippled` server is to set up and run one. +[Set up and run rippled servers >](manage-the-rippled-server.html) {{n.next()}} -## Payer and payee: [Fund XRP Ledger accounts with enough XRP](accounts.html) +## Payer and payee: Fund XRP Ledger accounts with enough XRP If your exchange processes XRP deposits and withdrawals directly, you probably have existing funded XRP Ledger accounts that you can use for this purpose. Just ensure that they are funded with enough XRP as described here. @@ -69,7 +71,7 @@ Along these lines, there's a good chance that you are following industry best pr The account needs at least 21 XRP, which provides the 20 XRP [base reserve](reserves.html), plus enough to pay the transaction costs of redeeming claims, which are trivial. For example, you could redeem thousands of claims for less than 1 XRP in total. - +[Fund XRP Ledger accounts with enough XRP >](accounts.html) {{n.next()}} ## Payer: [Open a payment channel](use-payment-channels.html#1-the-payer-creates-a-payment-channel-to-a-particular-recipient) @@ -91,19 +93,22 @@ Since payment channels are unidirectional, you need a second channel in the oppo {{n.next()}} -## Payee: [Verify payment channel details](use-payment-channels.html#2-the-payee-checks-specifics-of-the-payment-channel) +## Payee: Verify payment channel details The payee exchange reviews the details of the payment channel. +[Verify payment channel details >](use-payment-channels.html#2-the-payee-checks-specifics-of-the-payment-channel) {{n.next()}} -## Payer: [Create claims](use-payment-channels.html#3-the-payer-creates-one-or-more-signed-claims-for-the-xrp-in-the-channel) +## Payer: Create claims The payer exchange creates one or more claims for amounts of XRP that it wants to guarantee to the payee exchange. +[Create claims >](use-payment-channels.html#3-the-payer-creates-one-or-more-signed-claims-for-the-xrp-in-the-channel) -## Payer: [Send claim details to the payer exchange](use-payment-channels.html#4-the-payer-sends-a-claim-to-the-payee-as-payment-for-goods-or-services) +{{n.next()}} +## Payer: Send claim details to the payer exchange After creating a claim, the payer exchange must send details of the claim to the payee exchange, off-ledger. @@ -128,10 +133,10 @@ Consider a series of claims prompted by payer exchange customers withdrawing XRP | **Amount** | Cumulative amount of the claims created by the payer exchange. The payee exchange needs this value to verify and redeem the claim. For information about how to calculate the actual amount the payee exchange needs to credit the customer, see [Verify claims](#payee-verify-claims). | | **Destination Tag** | Destination tag of the customer account on the payee exchange that needs to be credited based on the claim. The payer exchange can get this value from their customer's withdrawal request, which should provide a destination tag for the deposit to the payee exchange. When the payee exchange redeems claims, the XRP is deposited into the payee exchange's XRP Ledger account. The payee exchange can then credit the XRP from the claim to the appropriate customer account based on the destination tag provided. | - +[Send claim details to the payer exchange >](use-payment-channels.html#4-the-payer-sends-a-claim-to-the-payee-as-payment-for-goods-or-services) {{n.next()}} -## Payee: [Verify claims](use-payment-channels.html#5-the-payee-verifies-the-claims) +## Payee: Verify claims The payee exchange verifies claims sent by the payer exchange. @@ -139,10 +144,11 @@ After verifying claims, the payee exchange should credit the claimed XRP to the For example, to know how much to credit a customer for a claim amount of 3000, the payee exchange needs to know that the previous claim amount was 2000. The difference between the claim amount and the previous claim amount (3000 - 2000 = 1000) is the amount the payee exchange must credit to the customer account. +[Verify claims >](use-payment-channels.html#5-the-payee-verifies-the-claims) {{n.next()}} -## Payee: [Redeem them in batches](use-payment-channels.html#8-when-ready-the-payee-redeems-a-claim-for-the-authorized-amount) +## Payee: Redeem them in batches The payee exchange can redeem batches of claims after verifying them to receive the XRP guaranteed by the payer exchange. Here are some guidelines the payee exchange can use to decide how often to redeem claims: @@ -158,18 +164,20 @@ The payee exchange can redeem batches of claims after verifying them to receive +[Redeem them in batches >](use-payment-channels.html#8-when-ready-the-payee-redeems-a-claim-for-the-authorized-amount) {{n.next()}} -## Payer and payee: [Continue to use the payment channel](use-payment-channels.html#7-repeat-steps-3-6-as-desired) +## Payer and payee: Continue to use the payment channel Payer and payee exchanges can continue to send, verify, and redeem batches of claims as needed within the parameters set by the payment channel. - +[Continue to use the payment channel >](use-payment-channels.html#7-repeat-steps-3-6-as-desired) {{n.next()}} -## Payer: When it's time, make a request to [close the payment channel](use-payment-channels.html#9-when-the-payer-and-payee-are-done-doing-business-the-payer-requests-for-the-channel-to-be-closed) +## Payer: When it's time, make a request to close the payment channel When the payer exchange and payee exchange are done using the payment channel, the payer exchange can make a request to close the payment channel. +[Close the payment channel >](use-payment-channels.html#9-when-the-payer-and-payee-are-done-doing-business-the-payer-requests-for-the-channel-to-be-closed) diff --git a/content/use-cases/run-a-rippled-validator.md b/content/use-cases/run-a-rippled-validator.md index 4c54dc6bdf..a2de055c05 100644 --- a/content/use-cases/run-a-rippled-validator.md +++ b/content/use-cases/run-a-rippled-validator.md @@ -7,7 +7,7 @@ Each `rippled` server (not running in stand-alone mode) connects to a network of {{n.next()}} -## [Understand what it means to run a validator](rippled-server-modes.html#reasons-to-run-a-validator) +## Understand what it means to run a validator If you or your organization relies on the XRP Ledger, it is in your interest to run a validator to participate in the consensus process and provide a trusted validator that supports the ongoing decentralization of the XRP Ledger. @@ -17,38 +17,46 @@ While validator diversity is important, not every validator is likely to be wide Despite that, it is important to note that every validator contributes to the long-term health and decentralization of the XRP Ledger. +[Understand what it means to run a validator >](rippled-server-modes.html#reasons-to-run-a-validator) {{n.next()}} -## [Set up and run a `rippled` server](manage-the-rippled-server.html) +## Set up and run a `rippled` server Install and run a `rippled` server. Anyone can run their own `rippled` server that follows the network and keeps a complete copy of the XRP Ledger. For configuration guidance and network and hardware requirements, see [Capacity Planning](capacity-planning.html). +[Set up and run a rippled server >](manage-the-rippled-server.html) {{n.next()}} -## [Enable validation on your rippled server](run-rippled-as-a-validator.html) +## Enable validation on your rippled server To configure your `rippled` server to run in validator mode, generate a validator key pair and add it to your `rippled.cfg` file. +[Learn more about validation >](run-rippled-as-a-validator.html) {{n.next()}} -## [Set up a stock rippled server as a proxy](run-rippled-as-a-validator.html#connect-using-proxies) +## Set up a stock rippled server as a proxy To protect a production validator from DDoS attacks, you can use a stock `rippled` server as a proxy between the validator and the outside network. +[Set up a proxy >](run-rippled-as-a-validator.html#connect-using-proxies) {{n.next()}} -## [Associate your validator with a web domain you control](run-rippled-as-a-validator.html#6-provide-domain-verification) +## Associate your validator with a web domain you control Network participants are unlikely to trust a validator without knowing who is operating it. To address this concern, associate your validator with a web domain you control. You may also wish to have your validator listed with one or more validator tracking services, such as the [XRP Charts Validator Registry](https://xrpcharts.ripple.com/#/validators). +[Associate your validator >](run-rippled-as-a-validator.html#6-provide-domain-verification) ### Related Tasks + \ No newline at end of file diff --git a/content/use-cases/use-an-escrow-as-a-smart-contract.md b/content/use-cases/use-an-escrow-as-a-smart-contract.md index 8bdc2508c4..e79770d6b2 100644 --- a/content/use-cases/use-an-escrow-as-a-smart-contract.md +++ b/content/use-cases/use-an-escrow-as-a-smart-contract.md @@ -75,7 +75,7 @@ To create the escrow as a smart contract, the participants must first define the {{n.next()}} -## Oracle: [Generate a condition and a fulfillment](send-a-conditionally-held-escrow.html#1-generate-condition-and-fulfillment) +## Oracle: Generate a condition and a fulfillment Because participants want to create a conditionally-held escrow to provide the smart contract, they need a condition value and a fulfillment value. In this scenario, the participant that creates these values is the neutral party planner (oracle). @@ -83,33 +83,38 @@ The party planner generates the condition and fulfillment values. The party plan The party planner must keep the fulfillment value a secret. Anyone can use the condition and fulfillment values to finish the escrow. Most often, the receiver finishes the escrow because they're the ones who are motivated to get paid. - +[Generate a condition and a fulfillment >](send-a-conditionally-held-escrow.html#1-generate-condition-and-fulfillment) {{n.next()}} -## Sender: [Calculate time values needed for the escrow](send-a-conditionally-held-escrow.html#2-calculate-release-or-cancel-time) +## Sender: Calculate time values needed for the escrow Because the participants want the escrow to be eligible for cancellation after 12 noon the day after the party, the party host (sender) must calculate a `CancelAfter` value to include in the escrow definition. +[Calculate time values needed for the escrow >](send-a-conditionally-held-escrow.html#2-calculate-release-or-cancel-time) {{n.next()}} -## Sender: [Create the escrow](send-a-conditionally-held-escrow.html#3-submit-escrowcreate-transaction) +## Sender: Create the escrow The party host (sender) creates the escrow that provides the smart contract. The party host must create the escrow because they are the only participant that can authorize the lock up and potential payout of XRP from their XRP Ledger account. +[Create the escrow >](send-a-conditionally-held-escrow.html#3-submit-escrowcreate-transaction) {{n.next()}} -## Sender and Receiver: [Wait for validation](send-a-conditionally-held-escrow.html#4-wait-for-validation) and [confirm escrow creation](send-a-conditionally-held-escrow.html#5-confirm-that-the-escrow-was-created) +## Sender and Receiver: Wait for validation and confirm escrow creation The party host (sender) waits for validation of the ledger that contains the escrow creation transaction and then confirms that the escrow was created. +[Wait for validation >](send-a-conditionally-held-escrow.html#4-wait-for-validation) + The party host then provides the escrow transaction's `hash` value to the party band (receiver). The party band can use the `hash` value to look up the escrow transaction on the XRP Ledger to ensure that it was created according to the smart contract terms they agreed to. As part of this step, the party band should confirm that the condition matches the one the party planner (oracle) provided. If the condition is wrong, the fulfillment the party planner provides won't let the party band finish the escrow and get paid. +[confirm escrow creation >](send-a-conditionally-held-escrow.html#5-confirm-that-the-escrow-was-created) {{n.next()}} -## Receiver: [Finish the escrow](send-a-conditionally-held-escrow.html#6-submit-escrowfinish-transaction) +## Receiver: Finish the escrow The party band (receiver) shows up and plays their set. @@ -119,21 +124,29 @@ The party band must finish the escrow before 12 noon. If they don't, the escrow If the party planner does not publish the fulfillment (the party band is a no show) or if the party planner publishes the fulfillment, but no one finishes the escrow; after 12 noon the next day, anyone can [cancel the escrow](cancel-an-expired-escrow.html). Cancelling the escrow returns the held XRP to the party host's account. +[Finish the escrow >](send-a-conditionally-held-escrow.html#6-submit-escrowfinish-transaction) {{n.next()}} -## Receiver and Sender: [Wait for validation](send-a-conditionally-held-escrow.html#7-wait-for-validation) and [confirm final result](send-a-conditionally-held-escrow.html#8-confirm-final-result) +## Receiver and Sender: Wait for validation and confirm final result The party band (receiver) waits for validation of the ledger that contains the escrow finish transaction and then confirms that the escrow was finished. At this time, the party band provides the transaction's `hash` value to the party host (sender). They can use the `hash` value to look up the escrow transaction on the XRP Ledger to ensure that it is been finished correctly. The party band can check their XRP Ledger account balance to ensure that their balance has increased by 2000 XRP. The party host's balance won't change at this step (unless the escrow was canceled) because the escrow creation already debited the locked-up XRP from their account. + +[Wait for validation >](send-a-conditionally-held-escrow.html#7-wait-for-validation) + +[confirm final result >](send-a-conditionally-held-escrow.html#8-confirm-final-result) + - ### Related Tasks + \ No newline at end of file diff --git a/tool/xrpl.scss b/tool/xrpl.scss index 6c0cb33eaa..bc582035ad 100644 --- a/tool/xrpl.scss +++ b/tool/xrpl.scss @@ -408,10 +408,12 @@ aside a.active-parent { } .content a.button { - box-shadow: inset 0 0 0 1px $gray-300; - color: $gray-600; + color: $black; border: 1px solid $gray-300; } +.content a.button:hover { + border: 1px solid $black; +} #main_content_wrapper .btn-outline-secondary:hover, #main_content_wrapper .btn-outline-secondary:active, @@ -422,6 +424,23 @@ aside a.active-parent { border: 1px solid $black; } +/* Use Cases ---------------------------------------------------------------- */ +.related-tasks-links a { + color: $gray-600; + text-decoration: none; +} +.related-tasks-links a:hover { + color: $black; +} +.use-case-external-link { + border: 1px solid $gray-300; +} + +.content .use-case-external-link a { + text-decoration: none; + color: $black; +} + /* Edit on GitHub link ------------------------------------------------------ */ .github-edit-wrap { border: 1px solid $gray-400;