@tempoxyz/ds 0.3.10 → 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 +12 -0
- package/dist/docs/index.md +145 -0
- package/dist/docs/marketing/introduction/getting-started.md +241 -0
- package/dist/docs/product/components/accordion.md +489 -0
- package/dist/docs/product/components/address-card.md +147 -0
- package/dist/docs/product/components/agent-logo.md +194 -0
- package/dist/docs/product/components/alert-dialog.md +631 -0
- package/dist/docs/product/components/alert.md +448 -0
- package/dist/docs/product/components/amount-input.md +305 -0
- package/dist/docs/product/components/amount.md +794 -0
- package/dist/docs/product/components/app-shell.md +559 -0
- package/dist/docs/product/components/asset-chip.md +294 -0
- package/dist/docs/product/components/autocomplete.md +620 -0
- package/dist/docs/product/components/avatar.md +321 -0
- package/dist/docs/product/components/badge.md +339 -0
- package/dist/docs/product/components/badged-logo.md +116 -0
- package/dist/docs/product/components/banner.md +379 -0
- package/dist/docs/product/components/bar-chart.md +208 -0
- package/dist/docs/product/components/breadcrumbs.md +380 -0
- package/dist/docs/product/components/button-group.md +286 -0
- package/dist/docs/product/components/button.md +650 -0
- package/dist/docs/product/components/calendar.md +375 -0
- package/dist/docs/product/components/callout.md +96 -0
- package/dist/docs/product/components/checkbox-group.md +521 -0
- package/dist/docs/product/components/checkbox.md +467 -0
- package/dist/docs/product/components/choice-group.md +516 -0
- package/dist/docs/product/components/choicebox.md +641 -0
- package/dist/docs/product/components/code.md +100 -0
- package/dist/docs/product/components/combobox.md +939 -0
- package/dist/docs/product/components/container.md +257 -0
- package/dist/docs/product/components/copy-button.md +642 -0
- package/dist/docs/product/components/date-picker.md +514 -0
- package/dist/docs/product/components/dialog.md +1332 -0
- package/dist/docs/product/components/drawer.md +966 -0
- package/dist/docs/product/components/empty.md +340 -0
- package/dist/docs/product/components/field.md +570 -0
- package/dist/docs/product/components/fieldset.md +398 -0
- package/dist/docs/product/components/frame.md +434 -0
- package/dist/docs/product/components/gauge.md +299 -0
- package/dist/docs/product/components/get-started-visual.md +117 -0
- package/dist/docs/product/components/grid.md +288 -0
- package/dist/docs/product/components/hero-visual.md +155 -0
- package/dist/docs/product/components/hex.md +487 -0
- package/dist/docs/product/components/icon-tile.md +292 -0
- package/dist/docs/product/components/identicon.md +371 -0
- package/dist/docs/product/components/inline.md +233 -0
- package/dist/docs/product/components/inset.md +225 -0
- package/dist/docs/product/components/kbd.md +423 -0
- package/dist/docs/product/components/list-group.md +981 -0
- package/dist/docs/product/components/loading-dots.md +237 -0
- package/dist/docs/product/components/menu.md +934 -0
- package/dist/docs/product/components/native-select.md +204 -0
- package/dist/docs/product/components/network-logo.md +248 -0
- package/dist/docs/product/components/number-field.md +543 -0
- package/dist/docs/product/components/otp-field.md +616 -0
- package/dist/docs/product/components/pagination.md +516 -0
- package/dist/docs/product/components/popover.md +544 -0
- package/dist/docs/product/components/progress.md +388 -0
- package/dist/docs/product/components/qr.md +314 -0
- package/dist/docs/product/components/radio-group.md +528 -0
- package/dist/docs/product/components/secret-value.md +406 -0
- package/dist/docs/product/components/select.md +751 -0
- package/dist/docs/product/components/separator.md +379 -0
- package/dist/docs/product/components/sidebar-menu.md +922 -0
- package/dist/docs/product/components/skeleton.md +517 -0
- package/dist/docs/product/components/slider.md +539 -0
- package/dist/docs/product/components/snippet.md +424 -0
- package/dist/docs/product/components/spinner.md +216 -0
- package/dist/docs/product/components/split-bar.md +139 -0
- package/dist/docs/product/components/split-button.md +464 -0
- package/dist/docs/product/components/stack.md +299 -0
- package/dist/docs/product/components/status-chip.md +226 -0
- package/dist/docs/product/components/status-indicator.md +119 -0
- package/dist/docs/product/components/status-row.md +174 -0
- package/dist/docs/product/components/stepper.md +451 -0
- package/dist/docs/product/components/success-hero.md +157 -0
- package/dist/docs/product/components/surface.md +639 -0
- package/dist/docs/product/components/switch.md +472 -0
- package/dist/docs/product/components/table.md +967 -0
- package/dist/docs/product/components/tabs.md +627 -0
- package/dist/docs/product/components/tempo-logo.md +185 -0
- package/dist/docs/product/components/text-input.md +624 -0
- package/dist/docs/product/components/textarea.md +352 -0
- package/dist/docs/product/components/toast.md +535 -0
- package/dist/docs/product/components/token-logo.md +371 -0
- package/dist/docs/product/components/token.md +247 -0
- package/dist/docs/product/components/tooltip.md +490 -0
- package/dist/docs/product/components/verification-code.md +116 -0
- package/dist/docs/product/components/visual.md +249 -0
- package/dist/docs/product/components.md +203 -0
- package/dist/docs/product/foundations/accessibility.md +377 -0
- package/dist/docs/product/foundations/agents.md +150 -0
- package/dist/docs/product/foundations/color.md +522 -0
- package/dist/docs/product/foundations/content/tone.md +194 -0
- package/dist/docs/product/foundations/content/voice.md +194 -0
- package/dist/docs/product/foundations/content/writing-style.md +406 -0
- package/dist/docs/product/foundations/iconography.md +282 -0
- package/dist/docs/product/foundations/intent.md +360 -0
- package/dist/docs/product/foundations/layout.md +508 -0
- package/dist/docs/product/foundations/linter.md +496 -0
- package/dist/docs/product/foundations/motion.md +151 -0
- package/dist/docs/product/foundations/radius-and-padding.md +86 -0
- package/dist/docs/product/foundations/typography.md +266 -0
- package/dist/docs/product/introduction/faq.md +133 -0
- package/dist/docs/product/introduction/getting-started.md +377 -0
- package/dist/docs/product/patterns/blockchain-values.md +709 -0
- package/dist/docs/product/patterns/dashboards.md +638 -0
- package/dist/docs/product/patterns/destructive-actions.md +626 -0
- package/dist/docs/product/patterns/empty-states.md +612 -0
- package/dist/docs/product/patterns/errors-and-validation.md +808 -0
- package/dist/docs/product/patterns/feedback-and-status.md +518 -0
- package/dist/docs/product/patterns/forms.md +679 -0
- package/dist/docs/product/patterns/loading.md +630 -0
- package/dist/docs/product/patterns/navigation.md +397 -0
- package/dist/docs/product/patterns/payments.md +765 -0
- package/dist/docs/product/patterns/responsive-layout.md +997 -0
- package/dist/docs/product/patterns/tables-and-lists.md +964 -0
- package/dist/docs/product/products/tempo-console.md +671 -0
- package/dist/docs/product/products/tempo-performance.md +437 -0
- package/dist/docs/product/products/tempo-wallet.md +438 -0
- 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
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# LoadingDots
|
|
2
|
+
|
|
3
|
+
Shows three pulsing dots for inline loading.
|
|
4
|
+
|
|
5
|
+
[View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/LoadingDots.tsx)
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
LoadingDots renders three pulsing dots inline, such as inside a button or beside text.
|
|
10
|
+
|
|
11
|
+
## Examples
|
|
12
|
+
|
|
13
|
+
### Basic
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { LoadingDots } from '@tempoxyz/ds'
|
|
17
|
+
|
|
18
|
+
export function Demo() {
|
|
19
|
+
return <LoadingDots />
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/LoadingDots/Basic.tsx)
|
|
24
|
+
|
|
25
|
+
### Size
|
|
26
|
+
|
|
27
|
+
Set `size` to `small`, `medium` (default), or `large`.
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { LoadingDots, style } from '@tempoxyz/ds'
|
|
31
|
+
|
|
32
|
+
export function Demo() {
|
|
33
|
+
return (
|
|
34
|
+
<div {...styles.row()}>
|
|
35
|
+
{(['small', 'medium', 'large'] as const).map((size) => (
|
|
36
|
+
<LoadingDots key={size} size={size} />
|
|
37
|
+
))}
|
|
38
|
+
</div>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
namespace styles {
|
|
43
|
+
export const row = style({ alignItems: 'center', display: 'flex', gap: '24' })
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/LoadingDots/Size.tsx)
|
|
48
|
+
|
|
49
|
+
## Anatomy
|
|
50
|
+
|
|
51
|
+
Import the component and assemble its parts.
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
import { LoadingDots } from '@tempoxyz/ds'
|
|
55
|
+
|
|
56
|
+
<LoadingDots />
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Guidelines
|
|
60
|
+
|
|
61
|
+
### When to Use
|
|
62
|
+
|
|
63
|
+
* Show a short wait inside a line of text, such as Estimating network fee.
|
|
64
|
+
* Hold the place of one inline value, such as an exchange rate or a recipient name.
|
|
65
|
+
|
|
66
|
+
### When Not to Use
|
|
67
|
+
|
|
68
|
+
* Use `loading` on a [Button](button.md) while its action runs.
|
|
69
|
+
* Use [Spinner](spinner.md) for a busy region or control.
|
|
70
|
+
* Use [Skeleton](skeleton.md) for content with a known shape, such as rows or cards.
|
|
71
|
+
* Use [Progress](progress.md) for measurable work, or any wait longer than about 10 seconds.
|
|
72
|
+
|
|
73
|
+
### Keep Them in Line With Text
|
|
74
|
+
|
|
75
|
+
The dots render as an inline `span`, aligned to the middle of the line in the current text color.
|
|
76
|
+
|
|
77
|
+
**Do:** Put the dots after the words that describe the wait.
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
/**
|
|
81
|
+
* Do example for "Keep Them in Line With Text" on the LoadingDots page.
|
|
82
|
+
* Put the dots after the words that describe the wait.
|
|
83
|
+
* @module
|
|
84
|
+
*/
|
|
85
|
+
import { LoadingDots, style } from '@tempoxyz/ds'
|
|
86
|
+
|
|
87
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
88
|
+
export function Demo() {
|
|
89
|
+
return (
|
|
90
|
+
<div {...styles.text()}>
|
|
91
|
+
Estimating network fee <LoadingDots aria-label="Estimating network fee" size="small" />
|
|
92
|
+
</div>
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
namespace styles {
|
|
97
|
+
export const text = style({ color: 'content.secondary', typography: 'body.b2' })
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Don't:** Fill an empty card with dots in place of its content.
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
/**
|
|
105
|
+
* Don't example for "Keep Them in Line With Text" on the LoadingDots page.
|
|
106
|
+
* Don't fill an empty card with dots in place of its content.
|
|
107
|
+
* @module
|
|
108
|
+
*/
|
|
109
|
+
import { LoadingDots, style } from '@tempoxyz/ds'
|
|
110
|
+
|
|
111
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
112
|
+
export function Demo() {
|
|
113
|
+
return (
|
|
114
|
+
<div {...styles.card()}>
|
|
115
|
+
<div {...styles.title()}>Activity</div>
|
|
116
|
+
<div {...styles.body()}>
|
|
117
|
+
<LoadingDots size="large" />
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
namespace styles {
|
|
124
|
+
export const body = style({
|
|
125
|
+
alignItems: 'center',
|
|
126
|
+
display: 'flex',
|
|
127
|
+
height: '100',
|
|
128
|
+
justifyContent: 'center',
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
export const card = style({
|
|
132
|
+
borderColor: 'line.secondary',
|
|
133
|
+
borderRadius: 'xs',
|
|
134
|
+
borderStyle: 'solid',
|
|
135
|
+
borderWidth: 'regular',
|
|
136
|
+
boxSizing: 'border-box',
|
|
137
|
+
padding: '16',
|
|
138
|
+
width: '100% !custom',
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
export const title = style({ color: 'content.primary', typography: 'body.b2Strong' })
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Show Them Only After a Delay
|
|
146
|
+
|
|
147
|
+
* **Fast Responses (Under 300 ms):** Show no dots. Render the value when it arrives.
|
|
148
|
+
* **Longer Waits (Over 300 ms):** Show the dots after the delay, to avoid a flash.
|
|
149
|
+
|
|
150
|
+
### Replace Them With the Result
|
|
151
|
+
|
|
152
|
+
Keep the text length stable so the line does not reflow. If loading fails, show an error message in place of the dots.
|
|
153
|
+
|
|
154
|
+
**Do:** Replace the dots with the value when loading finishes.
|
|
155
|
+
|
|
156
|
+
```tsx
|
|
157
|
+
/**
|
|
158
|
+
* Do example for "Replace Them With the Result" on the LoadingDots page.
|
|
159
|
+
* Replace the dots with the value when loading finishes.
|
|
160
|
+
* @module
|
|
161
|
+
*/
|
|
162
|
+
import { style } from '@tempoxyz/ds'
|
|
163
|
+
|
|
164
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
165
|
+
export function Demo() {
|
|
166
|
+
return <div {...styles.text()}>Network fee: $0.01</div>
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
namespace styles {
|
|
170
|
+
export const text = style({ color: 'content.secondary', typography: 'body.b2' })
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Don't:** Leave the dots beside the value after it arrives.
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
/**
|
|
178
|
+
* Don't example for "Replace Them With the Result" on the LoadingDots page.
|
|
179
|
+
* Don't leave the dots beside the value after it arrives.
|
|
180
|
+
* @module
|
|
181
|
+
*/
|
|
182
|
+
import { LoadingDots, style } from '@tempoxyz/ds'
|
|
183
|
+
|
|
184
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
185
|
+
export function Demo() {
|
|
186
|
+
return (
|
|
187
|
+
<div {...styles.text()}>
|
|
188
|
+
Network fee: $0.01 <LoadingDots aria-label="Estimating network fee" size="small" />
|
|
189
|
+
</div>
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
namespace styles {
|
|
194
|
+
export const text = style({ color: 'content.secondary', typography: 'body.b2' })
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Size Them to the Text
|
|
199
|
+
|
|
200
|
+
* **Small (small):** Dense text, such as table cells.
|
|
201
|
+
* **Medium (medium):** The default, beside body text.
|
|
202
|
+
* **Large (large):** Beside larger values or headings.
|
|
203
|
+
|
|
204
|
+
## Accessibility
|
|
205
|
+
|
|
206
|
+
LoadingDots renders a polite live region named "Loading". The dots carry no text.
|
|
207
|
+
|
|
208
|
+
### Semantics
|
|
209
|
+
|
|
210
|
+
* **Root (status):** Announced politely as "Loading" by default, after current speech.
|
|
211
|
+
* **Custom Name (aria-label):** Replaces the default "Loading" name with a more specific one.
|
|
212
|
+
* **Reduced Motion (reduce):** If the reader prefers reduced motion, the dots hold still at reduced opacity.
|
|
213
|
+
|
|
214
|
+
### Your Responsibilities
|
|
215
|
+
|
|
216
|
+
* **Say What Is Loading (aria-label):** Name it, such as "Estimating network fee", when "Loading" is too vague.
|
|
217
|
+
* **Keep Visible Text:** The dots are not focusable, and the accessible name is not visible. Keep text beside them.
|
|
218
|
+
* **Show One per Region:** Many status regions at once, such as one per table row, repeat the announcement.
|
|
219
|
+
* **Announce the Outcome (SC 4.1.3):** Announce the result or error in a live region when loading finishes.
|
|
220
|
+
|
|
221
|
+
## Related
|
|
222
|
+
|
|
223
|
+
[Spinner](spinner.md)
|
|
224
|
+
|
|
225
|
+
Use for a busy region or control.
|
|
226
|
+
|
|
227
|
+
[Skeleton](skeleton.md)
|
|
228
|
+
|
|
229
|
+
Use for content with a known shape.
|
|
230
|
+
|
|
231
|
+
[Button](button.md)
|
|
232
|
+
|
|
233
|
+
Use for an action's loading state.
|
|
234
|
+
|
|
235
|
+
[Loading](../patterns/loading.md)
|
|
236
|
+
|
|
237
|
+
Covers choosing a loading indicator.
|