@tempoxyz/ds 0.3.11 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/dist/docs/AGENTS.md +8 -5
- package/dist/docs/index.md +143 -135
- package/dist/docs/marketing/introduction/getting-started.md +241 -0
- package/dist/docs/{components → product/components}/accordion.md +8 -8
- package/dist/docs/{components → product/components}/address-card.md +5 -5
- package/dist/docs/{components → product/components}/agent-logo.md +5 -5
- package/dist/docs/{components → product/components}/alert-dialog.md +11 -11
- package/dist/docs/{components → product/components}/alert.md +11 -11
- package/dist/docs/{components → product/components}/amount-input.md +13 -13
- package/dist/docs/{components → product/components}/amount.md +8 -8
- package/dist/docs/{components → product/components}/app-shell.md +13 -13
- package/dist/docs/{components → product/components}/asset-chip.md +11 -11
- package/dist/docs/{components → product/components}/autocomplete.md +10 -9
- package/dist/docs/{components → product/components}/avatar.md +8 -8
- package/dist/docs/{components → product/components}/badge.md +9 -9
- package/dist/docs/{components → product/components}/badged-logo.md +6 -6
- package/dist/docs/{components → product/components}/banner.md +8 -8
- package/dist/docs/{components → product/components}/bar-chart.md +7 -7
- package/dist/docs/{components → product/components}/breadcrumbs.md +8 -8
- package/dist/docs/{components → product/components}/button-group.md +8 -8
- package/dist/docs/{components → product/components}/button.md +17 -17
- package/dist/docs/{components → product/components}/calendar.md +8 -8
- package/dist/docs/{components → product/components}/callout.md +5 -5
- package/dist/docs/{components → product/components}/checkbox-group.md +13 -13
- package/dist/docs/{components → product/components}/checkbox.md +12 -12
- package/dist/docs/{components → product/components}/choice-group.md +14 -14
- package/dist/docs/{components → product/components}/choicebox.md +9 -9
- package/dist/docs/{components → product/components}/code.md +5 -5
- package/dist/docs/{components → product/components}/combobox.md +9 -9
- package/dist/docs/{components → product/components}/container.md +7 -7
- package/dist/docs/{components → product/components}/copy-button.md +13 -13
- package/dist/docs/{components → product/components}/date-picker.md +11 -11
- package/dist/docs/{components → product/components}/dialog.md +17 -17
- package/dist/docs/{components → product/components}/drawer.md +11 -11
- package/dist/docs/{components → product/components}/empty.md +9 -9
- package/dist/docs/{components → product/components}/field.md +14 -14
- package/dist/docs/{components → product/components}/fieldset.md +6 -6
- package/dist/docs/{components → product/components}/frame.md +9 -9
- package/dist/docs/{components → product/components}/gauge.md +7 -7
- package/dist/docs/{components → product/components}/get-started-visual.md +4 -4
- package/dist/docs/{components → product/components}/grid.md +7 -7
- package/dist/docs/{components → product/components}/hero-visual.md +4 -4
- package/dist/docs/{components → product/components}/hex.md +9 -9
- package/dist/docs/{components → product/components}/icon-tile.md +8 -8
- package/dist/docs/{components → product/components}/identicon.md +7 -7
- package/dist/docs/{components → product/components}/inline.md +7 -7
- package/dist/docs/{components → product/components}/inset.md +8 -8
- package/dist/docs/{components → product/components}/kbd.md +8 -8
- package/dist/docs/{components → product/components}/list-group.md +24 -24
- package/dist/docs/{components → product/components}/loading-dots.md +8 -8
- package/dist/docs/{components → product/components}/menu.md +14 -14
- package/dist/docs/{components → product/components}/native-select.md +7 -7
- package/dist/docs/{components → product/components}/network-logo.md +7 -7
- package/dist/docs/{components → product/components}/number-field.md +8 -8
- package/dist/docs/{components → product/components}/otp-field.md +9 -9
- package/dist/docs/{components → product/components}/pagination.md +8 -8
- package/dist/docs/{components → product/components}/popover.md +11 -11
- package/dist/docs/{components → product/components}/progress.md +10 -10
- package/dist/docs/{components → product/components}/qr.md +8 -8
- package/dist/docs/{components → product/components}/radio-group.md +10 -10
- package/dist/docs/{components → product/components}/secret-value.md +8 -8
- package/dist/docs/{components → product/components}/select.md +13 -13
- package/dist/docs/{components → product/components}/separator.md +7 -7
- package/dist/docs/{components → product/components}/sidebar-menu.md +11 -11
- package/dist/docs/{components → product/components}/skeleton.md +9 -9
- package/dist/docs/{components → product/components}/slider.md +8 -8
- package/dist/docs/{components → product/components}/snippet.md +10 -10
- package/dist/docs/{components → product/components}/spinner.md +12 -12
- package/dist/docs/{components → product/components}/split-bar.md +5 -5
- package/dist/docs/{components → product/components}/split-button.md +11 -11
- package/dist/docs/{components → product/components}/stack.md +8 -8
- package/dist/docs/{components → product/components}/status-chip.md +7 -7
- package/dist/docs/{components → product/components}/status-indicator.md +6 -6
- package/dist/docs/{components → product/components}/status-row.md +7 -7
- package/dist/docs/{components → product/components}/stepper.md +9 -9
- package/dist/docs/{components → product/components}/success-hero.md +5 -5
- package/dist/docs/{components → product/components}/surface.md +11 -11
- package/dist/docs/{components → product/components}/switch.md +11 -11
- package/dist/docs/{components → product/components}/table.md +16 -16
- package/dist/docs/{components → product/components}/tabs.md +11 -11
- package/dist/docs/{components → product/components}/tempo-logo.md +4 -4
- package/dist/docs/{components → product/components}/text-input.md +14 -14
- package/dist/docs/{components → product/components}/textarea.md +7 -7
- package/dist/docs/{components → product/components}/toast.md +11 -11
- package/dist/docs/{components → product/components}/token-logo.md +16 -16
- package/dist/docs/{components → product/components}/token.md +10 -10
- package/dist/docs/{components → product/components}/tooltip.md +11 -11
- package/dist/docs/{components → product/components}/verification-code.md +4 -4
- package/dist/docs/{components → product/components}/visual.md +5 -5
- package/dist/docs/product/components.md +203 -0
- package/dist/docs/{foundations → product/foundations}/accessibility.md +16 -16
- package/dist/docs/{foundations → product/foundations}/agents.md +17 -17
- package/dist/docs/{foundations → product/foundations}/color.md +7 -7
- package/dist/docs/{foundations → product/foundations}/content/tone.md +7 -7
- package/dist/docs/{foundations → product/foundations}/content/voice.md +2 -2
- package/dist/docs/{foundations → product/foundations}/content/writing-style.md +8 -8
- package/dist/docs/{foundations → product/foundations}/iconography.md +11 -11
- package/dist/docs/{foundations → product/foundations}/intent.md +28 -28
- package/dist/docs/{foundations → product/foundations}/layout.md +22 -22
- package/dist/docs/product/foundations/linter.md +496 -0
- package/dist/docs/{foundations → product/foundations}/motion.md +7 -7
- package/dist/docs/{foundations → product/foundations}/radius-and-padding.md +3 -3
- package/dist/docs/{foundations → product/foundations}/typography.md +4 -4
- package/dist/docs/{introduction → product/introduction}/faq.md +22 -21
- package/dist/docs/{introduction → product/introduction}/getting-started.md +4 -4
- package/dist/docs/{patterns → product/patterns}/blockchain-values.md +20 -20
- package/dist/docs/{patterns → product/patterns}/dashboards.md +28 -28
- package/dist/docs/{patterns → product/patterns}/destructive-actions.md +16 -16
- package/dist/docs/{patterns → product/patterns}/empty-states.md +14 -14
- package/dist/docs/{patterns → product/patterns}/errors-and-validation.md +23 -23
- package/dist/docs/{patterns → product/patterns}/feedback-and-status.md +31 -31
- package/dist/docs/{patterns → product/patterns}/forms.md +24 -24
- package/dist/docs/{patterns → product/patterns}/loading.md +19 -19
- package/dist/docs/{patterns → product/patterns}/navigation.md +23 -23
- package/dist/docs/{patterns → product/patterns}/payments.md +20 -20
- package/dist/docs/{patterns → product/patterns}/responsive-layout.md +23 -23
- package/dist/docs/{patterns → product/patterns}/tables-and-lists.md +19 -19
- package/dist/docs/{products → product/products}/tempo-console.md +12 -12
- package/dist/docs/{products → product/products}/tempo-performance.md +11 -11
- package/dist/docs/{products → product/products}/tempo-wallet.md +12 -12
- package/dist/marketing/index.d.ts +4 -0
- package/dist/marketing/index.d.ts.map +1 -0
- package/dist/marketing/index.js +4 -0
- package/dist/marketing/index.js.map +1 -0
- package/dist/marketing/index.js.zyzz.json +1 -0
- package/dist/marketing/vars.d.ts +907 -0
- package/dist/marketing/vars.d.ts.map +1 -0
- package/dist/marketing/vars.js +15 -0
- package/dist/marketing/vars.js.map +1 -0
- package/dist/marketing/vars.js.zyzz.json +1 -0
- package/dist/marketing/zyzz.config.d.ts +4512 -0
- package/dist/marketing/zyzz.config.d.ts.map +1 -0
- package/dist/marketing/zyzz.config.js +63 -0
- package/dist/marketing/zyzz.config.js.map +1 -0
- package/dist/marketing/zyzz.config.js.zyzz.json +1 -0
- package/dist/oxlint/index.d.ts +12 -1
- package/dist/oxlint/index.d.ts.map +1 -1
- package/dist/oxlint/index.js +39 -1
- package/dist/oxlint/index.js.map +1 -1
- package/dist/oxlint/internal/Docs.d.ts +9 -0
- package/dist/oxlint/internal/Docs.d.ts.map +1 -0
- package/dist/oxlint/internal/Docs.js +15 -0
- package/dist/oxlint/internal/Docs.js.map +1 -0
- package/dist/oxlint/internal/Imports.d.ts +1 -1
- package/dist/oxlint/internal/Imports.d.ts.map +1 -1
- package/dist/oxlint/internal/Imports.js +2 -0
- package/dist/oxlint/internal/Imports.js.map +1 -1
- package/dist/oxlint/internal/Styles.d.ts +40 -0
- package/dist/oxlint/internal/Styles.d.ts.map +1 -0
- package/dist/oxlint/internal/Styles.js +194 -0
- package/dist/oxlint/internal/Styles.js.map +1 -0
- package/dist/oxlint/internal/Tokens.d.ts +16 -0
- package/dist/oxlint/internal/Tokens.d.ts.map +1 -0
- package/dist/oxlint/internal/Tokens.js +39 -0
- package/dist/oxlint/internal/Tokens.js.map +1 -0
- package/dist/oxlint/rules/NoCrossSurface.d.ts +2 -2
- package/dist/oxlint/rules/NoCrossSurface.js +3 -3
- package/dist/oxlint/rules/NoCrossSurface.js.map +1 -1
- package/dist/oxlint/rules/NoCustomValues.d.ts +11 -0
- package/dist/oxlint/rules/NoCustomValues.d.ts.map +1 -0
- package/dist/oxlint/rules/NoCustomValues.js +150 -0
- package/dist/oxlint/rules/NoCustomValues.js.map +1 -0
- package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts +11 -0
- package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts.map +1 -0
- package/dist/oxlint/rules/NoSingleKeyShortcuts.js +158 -0
- package/dist/oxlint/rules/NoSingleKeyShortcuts.js.map +1 -0
- package/dist/oxlint/rules/PreferComponent.d.ts +3 -2
- package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -1
- package/dist/oxlint/rules/PreferComponent.js +11 -4
- package/dist/oxlint/rules/PreferComponent.js.map +1 -1
- package/dist/oxlint/rules/PreferLayout.d.ts +9 -0
- package/dist/oxlint/rules/PreferLayout.d.ts.map +1 -0
- package/dist/oxlint/rules/PreferLayout.js +90 -0
- package/dist/oxlint/rules/PreferLayout.js.map +1 -0
- package/dist/oxlint/rules/PreferProgress.d.ts +9 -0
- package/dist/oxlint/rules/PreferProgress.d.ts.map +1 -0
- package/dist/oxlint/rules/PreferProgress.js +43 -0
- package/dist/oxlint/rules/PreferProgress.js.map +1 -0
- package/dist/oxlint/rules/PreferSurface.d.ts +9 -0
- package/dist/oxlint/rules/PreferSurface.d.ts.map +1 -0
- package/dist/oxlint/rules/PreferSurface.js +55 -0
- package/dist/oxlint/rules/PreferSurface.js.map +1 -0
- package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -1
- package/dist/oxlint/rules/RequireAccessibleName.js +3 -1
- package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -1
- package/dist/oxlint/rules/RequireScrollRegion.d.ts +11 -0
- package/dist/oxlint/rules/RequireScrollRegion.d.ts.map +1 -0
- package/dist/oxlint/rules/RequireScrollRegion.js +71 -0
- package/dist/oxlint/rules/RequireScrollRegion.js.map +1 -0
- package/dist/web/icons/index.js.zyzz.json +1 -0
- package/package.json +6 -1
- package/src/marketing/README.md +21 -0
- package/src/marketing/index.ts +3 -0
- package/src/marketing/vars.ts +751 -0
- package/src/marketing/zyzz.config.ts +376 -0
- package/src/oxlint/index.ts +40 -1
- package/src/oxlint/internal/Docs.ts +18 -0
- package/src/oxlint/internal/Imports.ts +2 -1
- package/src/oxlint/internal/Styles.ts +240 -0
- package/src/oxlint/internal/Tokens.ts +43 -0
- package/src/oxlint/rules/NoCrossSurface.ts +3 -3
- package/src/oxlint/rules/NoCustomValues.ts +170 -0
- package/src/oxlint/rules/NoSingleKeyShortcuts.ts +190 -0
- package/src/oxlint/rules/PreferComponent.ts +11 -4
- package/src/oxlint/rules/PreferLayout.ts +96 -0
- package/src/oxlint/rules/PreferProgress.ts +49 -0
- package/src/oxlint/rules/PreferSurface.ts +70 -0
- package/src/oxlint/rules/RequireAccessibleName.ts +3 -1
- package/src/oxlint/rules/RequireScrollRegion.ts +92 -0
- package/dist/docs/components.md +0 -203
- package/dist/docs/foundations/linter.md +0 -296
|
@@ -10,13 +10,13 @@ An error message states what happened and how to fix it, beside the problem. It
|
|
|
10
10
|
* **Network Failure:** A request did not complete, so nothing changed. Show it beside the failed action.
|
|
11
11
|
* **Transaction Failure (Failed):** The network received a transaction and rejected it, such as a transfer without funds for its fee.
|
|
12
12
|
|
|
13
|
-
[Forms](
|
|
13
|
+
[Forms](forms.md) covers layout. [Feedback and Status](feedback-and-status.md) defines the Couldn't load and Failed states.
|
|
14
14
|
|
|
15
15
|
## Structure
|
|
16
16
|
|
|
17
17
|
1. **Field errors:** Each invalid field shows its own `Field.Error`, which replaces the field's description.
|
|
18
|
-
2. **Summary:** If a submit finds two or more problems, a negative [Alert](
|
|
19
|
-
3. **Failed request:** The form keeps its values, and an [Alert](
|
|
18
|
+
2. **Summary:** If a submit finds two or more problems, a negative [Alert](../components/alert.md) at the top lists them.
|
|
19
|
+
3. **Failed request:** The form keeps its values, and an [Alert](../components/alert.md) above the actions states the failure.
|
|
20
20
|
4. **Retry:** The primary action stays enabled, so a second press retries.
|
|
21
21
|
|
|
22
22
|
```tsx
|
|
@@ -205,16 +205,16 @@ namespace styles {
|
|
|
205
205
|
|
|
206
206
|
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/PaymentValidation.tsx)
|
|
207
207
|
|
|
208
|
-
This reference layout uses [Field](
|
|
208
|
+
This reference layout uses [Field](../components/field.md), [AmountInput](../components/amount-input.md), and [Alert](../components/alert.md). A short address shows a format error on Tab. An empty amount on submit shows the summary.
|
|
209
209
|
|
|
210
210
|
## Guidelines
|
|
211
211
|
|
|
212
212
|
### Place Errors Near Their Cause
|
|
213
213
|
|
|
214
|
-
* **One Field (Field.Error):** Set `invalid` on the [Field](
|
|
215
|
-
* **A Section or Action (Alert):** Show a negative [Alert](
|
|
216
|
-
* **The Whole Page (Banner):** Show a negative [Banner](
|
|
217
|
-
* **A Background Task (Toast):** Show a [Toast](
|
|
214
|
+
* **One Field (Field.Error):** Set `invalid` on the [Field](../components/field.md), with the error below.
|
|
215
|
+
* **A Section or Action (Alert):** Show a negative [Alert](../components/alert.md) above what it describes.
|
|
216
|
+
* **The Whole Page (Banner):** Show a negative [Banner](../components/banner.md) at the top of the page.
|
|
217
|
+
* **A Background Task (Toast):** Show a [Toast](../components/toast.md). If a retry exists, add it as an action.
|
|
218
218
|
|
|
219
219
|
### Validate at the Right Moment
|
|
220
220
|
|
|
@@ -380,7 +380,7 @@ namespace styles {
|
|
|
380
380
|
### Summarize Several Errors
|
|
381
381
|
|
|
382
382
|
* **One problem:** On submit, move focus to its field.
|
|
383
|
-
* **Two or more:** Render a negative [Alert](
|
|
383
|
+
* **Two or more:** Render a negative [Alert](../components/alert.md) at the top of the form. It names the count, lists each error as a link that focuses its field, and receives focus.
|
|
384
384
|
|
|
385
385
|
**Do:** Keep each `Field.Error` beside its field, and link each summary item to it.
|
|
386
386
|
|
|
@@ -486,7 +486,7 @@ namespace styles {
|
|
|
486
486
|
|
|
487
487
|
### Report Failed Requests Where They Happen
|
|
488
488
|
|
|
489
|
-
If a submit fails on the network, keep the form open with its values, so a retry takes one press. State the failure in a negative [Alert](
|
|
489
|
+
If a submit fails on the network, keep the form open with its values, so a retry takes one press. State the failure in a negative [Alert](../components/alert.md) above the actions.
|
|
490
490
|
|
|
491
491
|
* **Outcome First:** Lead with what did not happen, such as "Payment not sent".
|
|
492
492
|
* **Say Where the Money Is:** For payments, always state whether funds moved. An unsure reader often pays twice.
|
|
@@ -544,13 +544,13 @@ namespace styles {
|
|
|
544
544
|
}
|
|
545
545
|
```
|
|
546
546
|
|
|
547
|
-
Do not report a failed payment only in a [Toast](
|
|
547
|
+
Do not report a failed payment only in a [Toast](../components/toast.md). It dismisses itself before the reader decides what to do.
|
|
548
548
|
|
|
549
549
|
### Report Page-Wide Errors in a Banner
|
|
550
550
|
|
|
551
|
-
If a problem affects the whole page, such as a lost connection, keep the [Banner](
|
|
551
|
+
If a problem affects the whole page, such as a lost connection, keep the [Banner](../components/banner.md) visible until the problem resolves.
|
|
552
552
|
|
|
553
|
-
**Do:** Use a [Banner](
|
|
553
|
+
**Do:** Use a [Banner](../components/banner.md) for a problem that affects the whole page.
|
|
554
554
|
|
|
555
555
|
```tsx
|
|
556
556
|
<Banner intent="negative">
|
|
@@ -558,7 +558,7 @@ If a problem affects the whole page, such as a lost connection, keep the [Banner
|
|
|
558
558
|
</Banner>
|
|
559
559
|
```
|
|
560
560
|
|
|
561
|
-
**Don't:** Report a field error in a [Banner](
|
|
561
|
+
**Don't:** Report a field error in a [Banner](../components/banner.md), away from the field.
|
|
562
562
|
|
|
563
563
|
```tsx
|
|
564
564
|
<Banner intent="negative">
|
|
@@ -568,7 +568,7 @@ If a problem affects the whole page, such as a lost connection, keep the [Banner
|
|
|
568
568
|
|
|
569
569
|
### Explain Transaction Failures
|
|
570
570
|
|
|
571
|
-
A transaction that reached the network and failed differs from a request that never arrived. Mark it Failed with a [Badge](
|
|
571
|
+
A transaction that reached the network and failed differs from a request that never arrived. Mark it Failed with a [Badge](../components/badge.md) and keep it in activity. A failed transfer moves no funds, but its network fee may still be charged, so state both.
|
|
572
572
|
|
|
573
573
|
**Do:** Show the reason a transaction failed beside its Failed status.
|
|
574
574
|
|
|
@@ -772,37 +772,37 @@ A disabled button states no reason. An enabled one lets the reader submit and re
|
|
|
772
772
|
* **Default:** Fields with descriptions and no errors. Nothing is checked before interaction.
|
|
773
773
|
* **Loading (loading):** Earlier errors stay visible while a check or request runs.
|
|
774
774
|
* **Disabled:** Skip validation for disabled fields. Screen readers do not announce an error on a disabled control.
|
|
775
|
-
* **Success:** After a successful submit, confirm the result with a [Toast](
|
|
775
|
+
* **Success:** After a successful submit, confirm the result with a [Toast](../components/toast.md) or the next screen.
|
|
776
776
|
|
|
777
777
|
## Accessibility
|
|
778
778
|
|
|
779
779
|
* **Linked Errors (aria-describedby):** A shown error is read when its control takes focus. `invalid` sets `aria-invalid`. `success` sets no state.
|
|
780
780
|
* **Summary Links:** A negative alert announces the summary on render. Each link moves focus to its field.
|
|
781
781
|
|
|
782
|
-
[Feedback and Status](
|
|
782
|
+
[Feedback and Status](feedback-and-status.md#accessibility) covers how alerts and banners announce.
|
|
783
783
|
|
|
784
784
|
## Related
|
|
785
785
|
|
|
786
|
-
[Field](
|
|
786
|
+
[Field](../components/field.md)
|
|
787
787
|
|
|
788
788
|
Use for labels and error messages.
|
|
789
789
|
|
|
790
|
-
[Alert](
|
|
790
|
+
[Alert](../components/alert.md)
|
|
791
791
|
|
|
792
792
|
Use for summaries and failures.
|
|
793
793
|
|
|
794
|
-
[Toast](
|
|
794
|
+
[Toast](../components/toast.md)
|
|
795
795
|
|
|
796
796
|
Use for background failures.
|
|
797
797
|
|
|
798
|
-
[Forms](
|
|
798
|
+
[Forms](forms.md)
|
|
799
799
|
|
|
800
800
|
Covers layout and actions.
|
|
801
801
|
|
|
802
|
-
[Feedback and Status](
|
|
802
|
+
[Feedback and Status](feedback-and-status.md)
|
|
803
803
|
|
|
804
804
|
Covers the Failed and Couldn't load states.
|
|
805
805
|
|
|
806
|
-
[Empty States](
|
|
806
|
+
[Empty States](empty-states.md)
|
|
807
807
|
|
|
808
808
|
Covers regions that couldn't load.
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# Feedback and Status
|
|
2
2
|
|
|
3
|
-
Name each system state once, and choose [Toast](
|
|
3
|
+
Name each system state once, and choose [Toast](../components/toast.md), [Alert](../components/alert.md), or [Banner](../components/banner.md) by urgency.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
7
|
Every action needs a response, and every change of state needs a visible result. Two questions pick the component: what the message describes (one action, one section, or the whole product), and how soon the reader must act. Match the weight of the message to the weight of the event, since overused loud feedback trains people to ignore it.
|
|
8
8
|
|
|
9
|
-
[Loading](
|
|
9
|
+
[Loading](loading.md) and [Empty States](empty-states.md) cover the states before content arrives.
|
|
10
10
|
|
|
11
11
|
## Components
|
|
12
12
|
|
|
13
13
|
| Component | Scope | Lifetime | Typical use |
|
|
14
14
|
| --- | --- | --- | --- |
|
|
15
|
-
| [Field](
|
|
16
|
-
| [Badge](
|
|
17
|
-
| [Toast](
|
|
18
|
-
| [Alert](
|
|
19
|
-
| [Banner](
|
|
20
|
-
| [AlertDialog](
|
|
15
|
+
| [Field](../components/field.md) `Field.Error` | One value | Until corrected | Enter 1,250.00 USDC or less |
|
|
16
|
+
| [Badge](../components/badge.md), or `status` on a [Table](../components/table.md) cell | One record | While the state holds | A transaction or a webhook delivery |
|
|
17
|
+
| [Toast](../components/toast.md) | One action | Seconds | The result of an action the reader started |
|
|
18
|
+
| [Alert](../components/alert.md) | One section | Until resolved | Couldn't load older activity |
|
|
19
|
+
| [Banner](../components/banner.md) | Whole product | Until resolved or dismissed | Testnet faucets are paused for maintenance |
|
|
20
|
+
| [AlertDialog](../components/alert-dialog.md) | One decision | Until answered | Revoke this API key? |
|
|
21
21
|
|
|
22
22
|
* **Toast:** Dismisses itself after five seconds by default, so never put information in it that the reader must keep or act on. Offer its action elsewhere too. Set `timeout: 0` for a toast with Undo, and show critical errors inline instead.
|
|
23
23
|
* **Alert:** Sits beside the decision it affects, with one action at most. Do not use it for a passing confirmation such as Address copied.
|
|
@@ -28,13 +28,13 @@ Every action needs a response, and every change of state needs a visible result.
|
|
|
28
28
|
Each state has one word, one component, and one icon.
|
|
29
29
|
|
|
30
30
|
* **Unavailable (No icon):** The value does not exist now, such as a missing price. Show Unavailable in gray in its place.
|
|
31
|
-
* **Couldn't Load (AlertCircle):** A request for the region's content failed. Use a negative [Alert](
|
|
32
|
-
* **Pending (Pending):** Submitted and waiting for inclusion in a block. Use a [Badge](
|
|
33
|
-
* **Confirmed (CheckCircle):** Included in a block. Use a [Badge](
|
|
34
|
-
* **Failed (AlertCircle):** Rejected or reverted by the network. Use a [Badge](
|
|
31
|
+
* **Couldn't Load (AlertCircle):** A request for the region's content failed. Use a negative [Alert](../components/alert.md) or an [Empty](../components/empty.md) state, with a retry.
|
|
32
|
+
* **Pending (Pending):** Submitted and waiting for inclusion in a block. Use a [Badge](../components/badge.md) with the icon.
|
|
33
|
+
* **Confirmed (CheckCircle):** Included in a block. Use a [Badge](../components/badge.md) with the icon.
|
|
34
|
+
* **Failed (AlertCircle):** Rejected or reverted by the network. Use a [Badge](../components/badge.md) with the icon, and the reason nearby.
|
|
35
35
|
* **Amount Hidden (EyeOff):** The reader hid amounts on this device. Show a fixed mask, read aloud as Amount hidden.
|
|
36
36
|
|
|
37
|
-
In a [Table](
|
|
37
|
+
In a [Table](../components/table.md), set `status` on `Table.Cell` to `warning`, `positive`, or `negative` for Pending, Confirmed, and Failed. The cell colors its text, so keep the same word.
|
|
38
38
|
|
|
39
39
|
```tsx
|
|
40
40
|
import { Alert, Badge, ListGroup, style, Surface } from '@tempoxyz/ds'
|
|
@@ -145,13 +145,13 @@ namespace styles {
|
|
|
145
145
|
|
|
146
146
|
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/StatusVocabulary.tsx)
|
|
147
147
|
|
|
148
|
-
This reference layout shows five of the states, built from [Surface](
|
|
148
|
+
This reference layout shows five of the states, built from [Surface](../components/surface.md), [ListGroup](../components/list-group.md), [Badge](../components/badge.md), and [Alert](../components/alert.md).
|
|
149
149
|
|
|
150
150
|
* **Unavailable:** Keep the rest of the row, since the token balance is still known. If the reason helps the reader act, state it nearby.
|
|
151
|
-
* **Couldn't load:** Name the content, such as Couldn't load activity. If part of a region failed, keep what loaded and use an alert. If all of it failed, use an [empty state](
|
|
152
|
-
* **Pending:** Keep the transaction in activity with its amount and recipient, from submission until inclusion in a block (see [Loading](
|
|
153
|
-
* **Failed:** Keep the row in activity and state the reason (see [Errors and Validation](
|
|
154
|
-
* **Amount hidden:** Mask every amount, as [Blockchain Values](
|
|
151
|
+
* **Couldn't load:** Name the content, such as Couldn't load activity. If part of a region failed, keep what loaded and use an alert. If all of it failed, use an [empty state](empty-states.md) with Try again.
|
|
152
|
+
* **Pending:** Keep the transaction in activity with its amount and recipient, from submission until inclusion in a block (see [Loading](loading.md#show-pending-transactions)).
|
|
153
|
+
* **Failed:** Keep the row in activity and state the reason (see [Errors and Validation](errors-and-validation.md#explain-transaction-failures)).
|
|
154
|
+
* **Amount hidden:** Mask every amount, as [Blockchain Values](blockchain-values.md#hidden-amounts) describes.
|
|
155
155
|
|
|
156
156
|
## Urgency
|
|
157
157
|
|
|
@@ -160,11 +160,11 @@ Rank each message before you choose how to show it.
|
|
|
160
160
|
* **Low (Toast):** An expected confirmation, such as Address copied.
|
|
161
161
|
* **Medium (Alert):** Information that affects a decision. Place it beside the decision.
|
|
162
162
|
* **High (Banner or Alert):** A condition that blocks work or puts funds at risk. Keep it until the condition clears.
|
|
163
|
-
* **Critical (AlertDialog):** A decision the reader must make first (see [Destructive Actions](
|
|
163
|
+
* **Critical (AlertDialog):** A decision the reader must make first (see [Destructive Actions](destructive-actions.md)).
|
|
164
164
|
|
|
165
165
|
## Intent
|
|
166
166
|
|
|
167
|
-
Choose the intent from the meaning of the message. Keep it consistent across [Toast](
|
|
167
|
+
Choose the intent from the meaning of the message. Keep it consistent across [Toast](../components/toast.md), [Alert](../components/alert.md), and [Banner](../components/banner.md).
|
|
168
168
|
|
|
169
169
|
* **Neutral (neutral):** General information with no judgment.
|
|
170
170
|
* **Tip (tip):** Helpful context that does not need action.
|
|
@@ -471,8 +471,8 @@ namespace styles {
|
|
|
471
471
|
|
|
472
472
|
* **Default:** No message. Records show their status badge.
|
|
473
473
|
* **Error:** Couldn't load for a failed request, Failed for a rejected transaction, and a field error for a bad value.
|
|
474
|
-
* **Empty:** An empty state that states the cause (see [Empty States](
|
|
475
|
-
* **Success:** Confirmed on the record, and a positive [Toast](
|
|
474
|
+
* **Empty:** An empty state that states the cause (see [Empty States](empty-states.md)).
|
|
475
|
+
* **Success:** Confirmed on the record, and a positive [Toast](../components/toast.md) for a finished action.
|
|
476
476
|
|
|
477
477
|
## Content
|
|
478
478
|
|
|
@@ -484,35 +484,35 @@ namespace styles {
|
|
|
484
484
|
|
|
485
485
|
* **Toasts (F6):** Toasts are announced, and hover or focus pauses their timers. Pass `priority: 'high'` only for urgent toasts.
|
|
486
486
|
* **Alerts (alert or status):** Warning and negative alerts interrupt the screen reader. Info and positive alerts announce politely.
|
|
487
|
-
* **Banners (role):** A [Banner](
|
|
488
|
-
* **Status Changes:** A change from Pending to Confirmed is not announced. If the reader started the transaction in this session, use a [Toast](
|
|
487
|
+
* **Banners (role):** A [Banner](../components/banner.md) renders no live region. Add `role="status"` or `role="alert"` only if it renders after page load.
|
|
488
|
+
* **Status Changes:** A change from Pending to Confirmed is not announced. If the reader started the transaction in this session, use a [Toast](../components/toast.md).
|
|
489
489
|
|
|
490
490
|
## Related
|
|
491
491
|
|
|
492
|
-
[Badge](
|
|
492
|
+
[Badge](../components/badge.md)
|
|
493
493
|
|
|
494
494
|
Use for record status.
|
|
495
495
|
|
|
496
|
-
[Alert](
|
|
496
|
+
[Alert](../components/alert.md)
|
|
497
497
|
|
|
498
498
|
Use for section messages.
|
|
499
499
|
|
|
500
|
-
[Banner](
|
|
500
|
+
[Banner](../components/banner.md)
|
|
501
501
|
|
|
502
502
|
Use for product-wide messages.
|
|
503
503
|
|
|
504
|
-
[Toast](
|
|
504
|
+
[Toast](../components/toast.md)
|
|
505
505
|
|
|
506
506
|
Use for confirmations.
|
|
507
507
|
|
|
508
|
-
[SecretValue](
|
|
508
|
+
[SecretValue](../components/secret-value.md)
|
|
509
509
|
|
|
510
510
|
Use for masked secrets.
|
|
511
511
|
|
|
512
|
-
[Loading](
|
|
512
|
+
[Loading](loading.md)
|
|
513
513
|
|
|
514
514
|
Covers Pending transactions.
|
|
515
515
|
|
|
516
|
-
[Blockchain Values](
|
|
516
|
+
[Blockchain Values](blockchain-values.md)
|
|
517
517
|
|
|
518
518
|
Covers amounts and addresses.
|
|
@@ -6,18 +6,18 @@ Order fields, labels, and actions so a person completes a form in one pass.
|
|
|
6
6
|
|
|
7
7
|
Ask only for the values the task needs. Remove every field you can derive, default, or ask for later.
|
|
8
8
|
|
|
9
|
-
This page covers layout, labels, save models, and actions. [Errors and Validation](
|
|
9
|
+
This page covers layout, labels, save models, and actions. [Errors and Validation](errors-and-validation.md) covers checking values and reporting problems.
|
|
10
10
|
|
|
11
11
|
## Choosing a Control
|
|
12
12
|
|
|
13
13
|
Choose the control from the shape of the value, not from its look.
|
|
14
14
|
|
|
15
|
-
* **Free Text (TextInput):** For a name or address. Use a [Textarea](
|
|
16
|
-
* **An Amount of Money (AmountInput):** [AmountInput](
|
|
17
|
-
* **Five or Fewer Options (RadioGroup):** A [RadioGroup](
|
|
18
|
-
* **Many Options (Select):** A [Select](
|
|
15
|
+
* **Free Text (TextInput):** For a name or address. Use a [Textarea](../components/textarea.md) for a longer memo.
|
|
16
|
+
* **An Amount of Money (AmountInput):** [AmountInput](../components/amount-input.md) sets a decimal keyboard and rejects anything that is not a number.
|
|
17
|
+
* **Five or Fewer Options (RadioGroup):** A [RadioGroup](../components/radio-group.md) keeps every choice visible.
|
|
18
|
+
* **Many Options (Select):** A [Select](../components/select.md). If people need to search, use a [Combobox](../components/combobox.md).
|
|
19
19
|
|
|
20
|
-
**Do:** Show a short set of exclusive options in a [RadioGroup](
|
|
20
|
+
**Do:** Show a short set of exclusive options in a [RadioGroup](../components/radio-group.md).
|
|
21
21
|
|
|
22
22
|
```tsx
|
|
23
23
|
<Fieldset.Root>
|
|
@@ -39,7 +39,7 @@ Choose the control from the shape of the value, not from its look.
|
|
|
39
39
|
</Fieldset.Root>
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
**Don't:** Use a [Checkbox](
|
|
42
|
+
**Don't:** Use a [Checkbox](../components/checkbox.md) for options that exclude each other.
|
|
43
43
|
|
|
44
44
|
```tsx
|
|
45
45
|
<Fieldset.Root>
|
|
@@ -225,7 +225,7 @@ namespace styles {
|
|
|
225
225
|
|
|
226
226
|
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/WebhookForm.tsx)
|
|
227
227
|
|
|
228
|
-
This reference layout uses [Surface](
|
|
228
|
+
This reference layout uses [Surface](../components/surface.md), [Frame](../components/frame.md), [Fieldset](../components/fieldset.md), and [Field](../components/field.md). Submit an empty URL to show the error, then fix the URL to clear it.
|
|
229
229
|
|
|
230
230
|
### Use One Column
|
|
231
231
|
|
|
@@ -321,7 +321,7 @@ namespace styles {
|
|
|
321
321
|
|
|
322
322
|
### Group Related Fields
|
|
323
323
|
|
|
324
|
-
Wrap the parts of one idea, such as an address, in a [Fieldset](
|
|
324
|
+
Wrap the parts of one idea, such as an address, in a [Fieldset](../components/fieldset.md) with a `Fieldset.Legend`. Set `variant` once on the fieldset, which passes it to every nested `Field.Root`. If a form outgrows two or three groups, split it into steps with a [Stepper](../components/stepper.md).
|
|
325
325
|
|
|
326
326
|
**Do:** Group related fields under one legend and one variant.
|
|
327
327
|
|
|
@@ -369,7 +369,7 @@ Every control needs a visible `Field.Label`, written as a short noun. Put format
|
|
|
369
369
|
|
|
370
370
|
### Put Labels Above Fields
|
|
371
371
|
|
|
372
|
-
[Field](
|
|
372
|
+
[Field](../components/field.md) puts the label 12px above every control. The label stays visible during input, and long labels wrap without narrowing the control.
|
|
373
373
|
|
|
374
374
|
* **Text Field (TextInput):** The label sits above the field, and the message below it.
|
|
375
375
|
* **Switch (Switch):** The label sits above the switch, as it does above a text field.
|
|
@@ -505,11 +505,11 @@ namespace styles {
|
|
|
505
505
|
### Choose a Save Model
|
|
506
506
|
|
|
507
507
|
* **Save on Submit (Checkbox):** For values that work together. Nothing changes until you press the primary action.
|
|
508
|
-
* **Save on Change (Switch):** For independent settings. Confirm each change with a [Toast](
|
|
508
|
+
* **Save on Change (Switch):** For independent settings. Confirm each change with a [Toast](../components/toast.md), and revert it if it fails.
|
|
509
509
|
|
|
510
|
-
Do not mix the two in one section. If a person leaves a long form with unsaved changes, confirm the discard (see [Destructive Actions](
|
|
510
|
+
Do not mix the two in one section. If a person leaves a long form with unsaved changes, confirm the discard (see [Destructive Actions](destructive-actions.md)).
|
|
511
511
|
|
|
512
|
-
**Do:** Use a [Switch](
|
|
512
|
+
**Do:** Use a [Switch](../components/switch.md) for a setting that applies immediately.
|
|
513
513
|
|
|
514
514
|
```tsx
|
|
515
515
|
<Field.Root>
|
|
@@ -532,7 +532,7 @@ Do not mix the two in one section. If a person leaves a long form with unsaved c
|
|
|
532
532
|
|
|
533
533
|
## Submitting
|
|
534
534
|
|
|
535
|
-
Keep the submit button enabled and validate on press (see [Errors and Validation](
|
|
535
|
+
Keep the submit button enabled and validate on press (see [Errors and Validation](errors-and-validation.md#keep-submit-buttons-enabled)). Set `loading` on it while the request runs, to block a second submit.
|
|
536
536
|
|
|
537
537
|
### Order Actions
|
|
538
538
|
|
|
@@ -631,10 +631,10 @@ Use one primary button, so Enter submits the form. Label it with the result, suc
|
|
|
631
631
|
## States
|
|
632
632
|
|
|
633
633
|
* **Default:** Prefill a value when it is known, such as the connected address.
|
|
634
|
-
* **Loading (Skeleton):** Wrap each control in a [Skeleton](
|
|
635
|
-
* **Error (Field.Error):** An error under each invalid field (see [Errors and Validation](
|
|
634
|
+
* **Loading (Skeleton):** Wrap each control in a [Skeleton](../components/skeleton.md) while saved values load.
|
|
635
|
+
* **Error (Field.Error):** An error under each invalid field (see [Errors and Validation](errors-and-validation.md)).
|
|
636
636
|
* **Disabled (disabled):** Set it on a fieldset to disable a whole group, and state the reason nearby.
|
|
637
|
-
* **Success (success):** Close the form and confirm with a [Toast](
|
|
637
|
+
* **Success (success):** Close the form and confirm with a [Toast](../components/toast.md). `success` sets no ARIA state, so confirm in text too.
|
|
638
638
|
|
|
639
639
|
## Content
|
|
640
640
|
|
|
@@ -650,30 +650,30 @@ Use one primary button, so Enter submits the form. Label it with the result, suc
|
|
|
650
650
|
|
|
651
651
|
## Related
|
|
652
652
|
|
|
653
|
-
[Field](
|
|
653
|
+
[Field](../components/field.md)
|
|
654
654
|
|
|
655
655
|
Use for labels, descriptions, and errors.
|
|
656
656
|
|
|
657
|
-
[Fieldset](
|
|
657
|
+
[Fieldset](../components/fieldset.md)
|
|
658
658
|
|
|
659
659
|
Use for grouping fields.
|
|
660
660
|
|
|
661
|
-
[TextInput](
|
|
661
|
+
[TextInput](../components/text-input.md)
|
|
662
662
|
|
|
663
663
|
Use for text.
|
|
664
664
|
|
|
665
|
-
[AmountInput](
|
|
665
|
+
[AmountInput](../components/amount-input.md)
|
|
666
666
|
|
|
667
667
|
Use for amounts of money.
|
|
668
668
|
|
|
669
|
-
[Button](
|
|
669
|
+
[Button](../components/button.md)
|
|
670
670
|
|
|
671
671
|
Use for submit and cancel actions.
|
|
672
672
|
|
|
673
|
-
[Errors and Validation](
|
|
673
|
+
[Errors and Validation](errors-and-validation.md)
|
|
674
674
|
|
|
675
675
|
Covers checking values.
|
|
676
676
|
|
|
677
|
-
[Loading](
|
|
677
|
+
[Loading](loading.md)
|
|
678
678
|
|
|
679
679
|
Covers submit and load states.
|
|
@@ -6,10 +6,10 @@ Show that content or an action is on its way, with an indicator to fit the wait.
|
|
|
6
6
|
|
|
7
7
|
Loading applies at three scales: a region that fetches data, an action that waits for a response, and a transaction that waits for a block. At each scale, keep the layout still, block duplicate requests, and end in a result or an error.
|
|
8
8
|
|
|
9
|
-
* **Shape Known (Skeleton):** The shape is known, such as a balance or a row value. Outline it with [Skeleton](
|
|
10
|
-
* **Shape Unknown (Spinner):** Only the arrival is known, such as for search results. Center one named [Spinner](
|
|
11
|
-
* **Inside a Control (loading):** An action runs in place. Use a busy [Button](
|
|
12
|
-
* **Progress Known (Progress):** The work is countable, such as months exported or files uploaded. Show [Progress](
|
|
9
|
+
* **Shape Known (Skeleton):** The shape is known, such as a balance or a row value. Outline it with [Skeleton](../components/skeleton.md).
|
|
10
|
+
* **Shape Unknown (Spinner):** Only the arrival is known, such as for search results. Center one named [Spinner](../components/spinner.md) in the region.
|
|
11
|
+
* **Inside a Control (loading):** An action runs in place. Use a busy [Button](../components/button.md), or [LoadingDots](../components/loading-dots.md) inside a sentence.
|
|
12
|
+
* **Progress Known (Progress):** The work is countable, such as months exported or files uploaded. Show [Progress](../components/progress.md).
|
|
13
13
|
|
|
14
14
|
## Structure
|
|
15
15
|
|
|
@@ -112,7 +112,7 @@ namespace styles {
|
|
|
112
112
|
|
|
113
113
|
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/BalanceSkeleton.tsx)
|
|
114
114
|
|
|
115
|
-
This reference layout uses [Skeleton](
|
|
115
|
+
This reference layout uses [Skeleton](../components/skeleton.md) for the total and for each token value in [ListGroup](../components/list-group.md), so the token labels stay on screen. A refresh keeps the old values on screen.
|
|
116
116
|
|
|
117
117
|
## Timing
|
|
118
118
|
|
|
@@ -127,7 +127,7 @@ Set `loading` on a pressed button immediately, whatever the wait.
|
|
|
127
127
|
|
|
128
128
|
## Skeleton
|
|
129
129
|
|
|
130
|
-
Wrap the real content in a [Skeleton](
|
|
130
|
+
Wrap the real content in a [Skeleton](../components/skeleton.md) and set `show={false}` on arrival, instead of swapping elements. The skeleton takes the exact size of the content.
|
|
131
131
|
|
|
132
132
|
**Do:** Shape skeletons like the content, so the layout holds still when it arrives.
|
|
133
133
|
|
|
@@ -287,7 +287,7 @@ namespace styles {
|
|
|
287
287
|
|
|
288
288
|
## Pending Actions
|
|
289
289
|
|
|
290
|
-
Show the pending state on the pressed [Button](
|
|
290
|
+
Show the pending state on the pressed [Button](../components/button.md) itself. Inside a line of text, such as a balance that refreshes beside its label, use [LoadingDots](../components/loading-dots.md).
|
|
291
291
|
|
|
292
292
|
**Do:** Set `loading` on the button that started the action.
|
|
293
293
|
|
|
@@ -306,7 +306,7 @@ Show the pending state on the pressed [Button](/docs/components/button) itself.
|
|
|
306
306
|
|
|
307
307
|
### Update Optimistically Only When You Can Undo It
|
|
308
308
|
|
|
309
|
-
Apply a change before the server confirms it only if the change is low-risk, easy to reverse, and almost always succeeds, such as renaming an API key or flipping a notification [Switch](
|
|
309
|
+
Apply a change before the server confirms it only if the change is low-risk, easy to reverse, and almost always succeeds, such as renaming an API key or flipping a notification [Switch](../components/switch.md).
|
|
310
310
|
|
|
311
311
|
* **Restore on Failure (Toast):** Restore the previous value and state the failure, such as Couldn't rename key.
|
|
312
312
|
* **Never for Onchain State:** Never update onchain state, such as balances, optimistically. Show the transaction as Pending.
|
|
@@ -526,7 +526,7 @@ namespace styles {
|
|
|
526
526
|
|
|
527
527
|
## Progress
|
|
528
528
|
|
|
529
|
-
Use [Progress](
|
|
529
|
+
Use [Progress](../components/progress.md) when the work is measurable, such as files uploaded or steps completed. Use `value={null}` only if the remaining work is unknown.
|
|
530
530
|
|
|
531
531
|
**Do:** Show how much of a long task is done.
|
|
532
532
|
|
|
@@ -582,9 +582,9 @@ namespace styles {
|
|
|
582
582
|
## States
|
|
583
583
|
|
|
584
584
|
* **Error:** Couldn't load in place of the placeholder, with Try again. Never leave an indicator spinning after a failure.
|
|
585
|
-
* **Empty:** An [Empty](
|
|
585
|
+
* **Empty:** An [Empty](../components/empty.md) state after loading finishes with no content. Never show it while loading.
|
|
586
586
|
* **Disabled:** Controls that depend on the data stay disabled until it arrives, such as Send before balances load.
|
|
587
|
-
* **Success:** The content replaces the placeholder. Confirm finished actions with a [Toast](
|
|
587
|
+
* **Success:** The content replaces the placeholder. Confirm finished actions with a [Toast](../components/toast.md).
|
|
588
588
|
|
|
589
589
|
## Content
|
|
590
590
|
|
|
@@ -593,7 +593,7 @@ namespace styles {
|
|
|
593
593
|
|
|
594
594
|
## Accessibility
|
|
595
595
|
|
|
596
|
-
* **Named Indicators (aria-label):** [Spinner](
|
|
596
|
+
* **Named Indicators (aria-label):** [Spinner](../components/spinner.md), [LoadingDots](../components/loading-dots.md), and the row loaders are named Loading. Pass `aria-label` to name what loads.
|
|
597
597
|
* **Skeleton (aria-busy):** Marks the region busy, blocks pointer input, and hides placeholder text from screen readers.
|
|
598
598
|
* **Busy Buttons (aria-busy):** A loading button is marked busy. Announce the result separately, such as in a toast.
|
|
599
599
|
* **Reduced Motion (prefers-reduced-motion):** Every sweep, rotation, and pulse stops. The indicators still mark work in progress.
|
|
@@ -601,30 +601,30 @@ namespace styles {
|
|
|
601
601
|
|
|
602
602
|
## Related
|
|
603
603
|
|
|
604
|
-
[Skeleton](
|
|
604
|
+
[Skeleton](../components/skeleton.md)
|
|
605
605
|
|
|
606
606
|
Use for content with a known shape.
|
|
607
607
|
|
|
608
|
-
[Spinner](
|
|
608
|
+
[Spinner](../components/spinner.md)
|
|
609
609
|
|
|
610
610
|
Use for content with an unknown shape.
|
|
611
611
|
|
|
612
|
-
[Progress](
|
|
612
|
+
[Progress](../components/progress.md)
|
|
613
613
|
|
|
614
614
|
Use for measurable work.
|
|
615
615
|
|
|
616
|
-
[Button](
|
|
616
|
+
[Button](../components/button.md)
|
|
617
617
|
|
|
618
618
|
Use for the `loading` state.
|
|
619
619
|
|
|
620
|
-
[Feedback and Status](
|
|
620
|
+
[Feedback and Status](feedback-and-status.md)
|
|
621
621
|
|
|
622
622
|
Covers Pending and Confirmed.
|
|
623
623
|
|
|
624
|
-
[Empty States](
|
|
624
|
+
[Empty States](empty-states.md)
|
|
625
625
|
|
|
626
626
|
Covers what follows an empty result.
|
|
627
627
|
|
|
628
|
-
[Payments](
|
|
628
|
+
[Payments](payments.md)
|
|
629
629
|
|
|
630
630
|
Covers the send and review flow.
|