@tempoxyz/ds 0.3.10 → 0.3.11
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/dist/docs/AGENTS.md +9 -0
- package/dist/docs/components/accordion.md +489 -0
- package/dist/docs/components/address-card.md +147 -0
- package/dist/docs/components/agent-logo.md +194 -0
- package/dist/docs/components/alert-dialog.md +631 -0
- package/dist/docs/components/alert.md +448 -0
- package/dist/docs/components/amount-input.md +305 -0
- package/dist/docs/components/amount.md +794 -0
- package/dist/docs/components/app-shell.md +559 -0
- package/dist/docs/components/asset-chip.md +294 -0
- package/dist/docs/components/autocomplete.md +619 -0
- package/dist/docs/components/avatar.md +321 -0
- package/dist/docs/components/badge.md +339 -0
- package/dist/docs/components/badged-logo.md +116 -0
- package/dist/docs/components/banner.md +379 -0
- package/dist/docs/components/bar-chart.md +208 -0
- package/dist/docs/components/breadcrumbs.md +380 -0
- package/dist/docs/components/button-group.md +286 -0
- package/dist/docs/components/button.md +650 -0
- package/dist/docs/components/calendar.md +375 -0
- package/dist/docs/components/callout.md +96 -0
- package/dist/docs/components/checkbox-group.md +521 -0
- package/dist/docs/components/checkbox.md +467 -0
- package/dist/docs/components/choice-group.md +516 -0
- package/dist/docs/components/choicebox.md +641 -0
- package/dist/docs/components/code.md +100 -0
- package/dist/docs/components/combobox.md +939 -0
- package/dist/docs/components/container.md +257 -0
- package/dist/docs/components/copy-button.md +642 -0
- package/dist/docs/components/date-picker.md +514 -0
- package/dist/docs/components/dialog.md +1332 -0
- package/dist/docs/components/drawer.md +966 -0
- package/dist/docs/components/empty.md +340 -0
- package/dist/docs/components/field.md +570 -0
- package/dist/docs/components/fieldset.md +398 -0
- package/dist/docs/components/frame.md +434 -0
- package/dist/docs/components/gauge.md +299 -0
- package/dist/docs/components/get-started-visual.md +117 -0
- package/dist/docs/components/grid.md +288 -0
- package/dist/docs/components/hero-visual.md +155 -0
- package/dist/docs/components/hex.md +487 -0
- package/dist/docs/components/icon-tile.md +292 -0
- package/dist/docs/components/identicon.md +371 -0
- package/dist/docs/components/inline.md +233 -0
- package/dist/docs/components/inset.md +225 -0
- package/dist/docs/components/kbd.md +423 -0
- package/dist/docs/components/list-group.md +981 -0
- package/dist/docs/components/loading-dots.md +237 -0
- package/dist/docs/components/menu.md +934 -0
- package/dist/docs/components/native-select.md +204 -0
- package/dist/docs/components/network-logo.md +248 -0
- package/dist/docs/components/number-field.md +543 -0
- package/dist/docs/components/otp-field.md +616 -0
- package/dist/docs/components/pagination.md +516 -0
- package/dist/docs/components/popover.md +544 -0
- package/dist/docs/components/progress.md +388 -0
- package/dist/docs/components/qr.md +314 -0
- package/dist/docs/components/radio-group.md +528 -0
- package/dist/docs/components/secret-value.md +406 -0
- package/dist/docs/components/select.md +751 -0
- package/dist/docs/components/separator.md +379 -0
- package/dist/docs/components/sidebar-menu.md +922 -0
- package/dist/docs/components/skeleton.md +517 -0
- package/dist/docs/components/slider.md +539 -0
- package/dist/docs/components/snippet.md +424 -0
- package/dist/docs/components/spinner.md +216 -0
- package/dist/docs/components/split-bar.md +139 -0
- package/dist/docs/components/split-button.md +464 -0
- package/dist/docs/components/stack.md +299 -0
- package/dist/docs/components/status-chip.md +226 -0
- package/dist/docs/components/status-indicator.md +119 -0
- package/dist/docs/components/status-row.md +174 -0
- package/dist/docs/components/stepper.md +451 -0
- package/dist/docs/components/success-hero.md +157 -0
- package/dist/docs/components/surface.md +639 -0
- package/dist/docs/components/switch.md +472 -0
- package/dist/docs/components/table.md +967 -0
- package/dist/docs/components/tabs.md +627 -0
- package/dist/docs/components/tempo-logo.md +185 -0
- package/dist/docs/components/text-input.md +624 -0
- package/dist/docs/components/textarea.md +352 -0
- package/dist/docs/components/toast.md +535 -0
- package/dist/docs/components/token-logo.md +371 -0
- package/dist/docs/components/token.md +247 -0
- package/dist/docs/components/tooltip.md +490 -0
- package/dist/docs/components/verification-code.md +116 -0
- package/dist/docs/components/visual.md +249 -0
- package/dist/docs/components.md +203 -0
- package/dist/docs/foundations/accessibility.md +377 -0
- package/dist/docs/foundations/agents.md +150 -0
- package/dist/docs/foundations/color.md +522 -0
- package/dist/docs/foundations/content/tone.md +194 -0
- package/dist/docs/foundations/content/voice.md +194 -0
- package/dist/docs/foundations/content/writing-style.md +406 -0
- package/dist/docs/foundations/iconography.md +282 -0
- package/dist/docs/foundations/intent.md +360 -0
- package/dist/docs/foundations/layout.md +508 -0
- package/dist/docs/foundations/linter.md +296 -0
- package/dist/docs/foundations/motion.md +151 -0
- package/dist/docs/foundations/radius-and-padding.md +86 -0
- package/dist/docs/foundations/typography.md +266 -0
- package/dist/docs/index.md +137 -0
- package/dist/docs/introduction/faq.md +132 -0
- package/dist/docs/introduction/getting-started.md +377 -0
- package/dist/docs/patterns/blockchain-values.md +709 -0
- package/dist/docs/patterns/dashboards.md +638 -0
- package/dist/docs/patterns/destructive-actions.md +626 -0
- package/dist/docs/patterns/empty-states.md +612 -0
- package/dist/docs/patterns/errors-and-validation.md +808 -0
- package/dist/docs/patterns/feedback-and-status.md +518 -0
- package/dist/docs/patterns/forms.md +679 -0
- package/dist/docs/patterns/loading.md +630 -0
- package/dist/docs/patterns/navigation.md +397 -0
- package/dist/docs/patterns/payments.md +765 -0
- package/dist/docs/patterns/responsive-layout.md +997 -0
- package/dist/docs/patterns/tables-and-lists.md +964 -0
- package/dist/docs/products/tempo-console.md +671 -0
- package/dist/docs/products/tempo-performance.md +437 -0
- package/dist/docs/products/tempo-wallet.md +438 -0
- package/package.json +1 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
# Visual
|
|
2
|
+
|
|
3
|
+
Illustrates the top of an onboarding or feature modal.
|
|
4
|
+
|
|
5
|
+
[View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/Visual.tsx)
|
|
6
|
+
|
|
7
|
+
Figma: [Content/Visual](https://www.figma.com/design/yE96kcymnNR88PJp6G1sPs?node-id=5227-2662)
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
A visual is a 208px illustrated panel that sits above a centered modal title. `kind` selects the artwork, and `passkey` is the only kind today.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
### Basic
|
|
16
|
+
|
|
17
|
+
Set `kind` to `passkey` (default). The panel fills its container, and the artwork stays 374px wide and centered.
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { style, Visual } from '@tempoxyz/ds'
|
|
21
|
+
|
|
22
|
+
export function Demo() {
|
|
23
|
+
return (
|
|
24
|
+
<div {...styles.frame()}>
|
|
25
|
+
<Visual kind="passkey" />
|
|
26
|
+
</div>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
namespace styles {
|
|
31
|
+
export const frame = style({ maxWidth: '24rem !custom', width: '100% !custom' })
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Visual/Basic.tsx)
|
|
36
|
+
|
|
37
|
+
### Chip
|
|
38
|
+
|
|
39
|
+
Add `Visual.Chip` for a short instruction. It sits 24px from the top and 12px from the end.
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { style, Visual } from '@tempoxyz/ds'
|
|
43
|
+
|
|
44
|
+
export function Demo() {
|
|
45
|
+
return (
|
|
46
|
+
<div {...styles.frame()}>
|
|
47
|
+
<Visual kind="passkey">
|
|
48
|
+
<Visual.Chip>Touch to sign in</Visual.Chip>
|
|
49
|
+
</Visual>
|
|
50
|
+
</div>
|
|
51
|
+
)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
namespace styles {
|
|
55
|
+
export const frame = style({ maxWidth: '24rem !custom', width: '100% !custom' })
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Visual/Chip.tsx)
|
|
60
|
+
|
|
61
|
+
## Anatomy
|
|
62
|
+
|
|
63
|
+
Import the component and assemble its parts.
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
import { Visual } from '@tempoxyz/ds'
|
|
67
|
+
|
|
68
|
+
<Visual>
|
|
69
|
+
<Visual.Chip />
|
|
70
|
+
</Visual>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Guidelines
|
|
74
|
+
|
|
75
|
+
### When to Use
|
|
76
|
+
|
|
77
|
+
* Open an onboarding or feature modal, such as adding a passkey, above a centered title.
|
|
78
|
+
|
|
79
|
+
### When Not to Use
|
|
80
|
+
|
|
81
|
+
* Use [IconTile](/docs/components/icon-tile) for acknowledgment, success, and destructive confirmation modals.
|
|
82
|
+
* Use a [Dialog](/docs/components/dialog) without a visual for form and review modals.
|
|
83
|
+
|
|
84
|
+
### Use One Visual Above the Title
|
|
85
|
+
|
|
86
|
+
**Do:** Place one visual above a centered title.
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
/**
|
|
90
|
+
* Do example for "Use One Visual Above the Title" on the Visual page.
|
|
91
|
+
* Place one visual above a centered title.
|
|
92
|
+
* @module
|
|
93
|
+
*/
|
|
94
|
+
import { style, Visual } from '@tempoxyz/ds'
|
|
95
|
+
|
|
96
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
97
|
+
export function Demo() {
|
|
98
|
+
return (
|
|
99
|
+
<div {...styles.stack()}>
|
|
100
|
+
<Visual kind="passkey" />
|
|
101
|
+
<span {...styles.title()}>Add a passkey</span>
|
|
102
|
+
<span {...styles.description()}>Sign in with your fingerprint or face.</span>
|
|
103
|
+
</div>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
namespace styles {
|
|
108
|
+
export const description = style({ color: 'content.secondary', typography: 'body.b2' })
|
|
109
|
+
|
|
110
|
+
export const stack = style({
|
|
111
|
+
alignItems: 'center',
|
|
112
|
+
display: 'flex',
|
|
113
|
+
flexDirection: 'column',
|
|
114
|
+
gap: '8',
|
|
115
|
+
maxWidth: '24rem !custom',
|
|
116
|
+
textAlign: 'center',
|
|
117
|
+
width: '100% !custom',
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
export const title = style({
|
|
121
|
+
color: 'content.primary',
|
|
122
|
+
marginBlockStart: '16',
|
|
123
|
+
typography: 'heading.h4',
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Don't:** Stack a visual and an [IconTile](/docs/components/icon-tile).
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
/**
|
|
132
|
+
* Don't example for "Use One Visual Above the Title" on the Visual page.
|
|
133
|
+
* Don't stack a visual and an icon chip.
|
|
134
|
+
* @module
|
|
135
|
+
*/
|
|
136
|
+
import { IconTile, style, Visual } from '@tempoxyz/ds'
|
|
137
|
+
import { Passkey } from '@tempoxyz/ds/icons'
|
|
138
|
+
|
|
139
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
140
|
+
export function Demo() {
|
|
141
|
+
return (
|
|
142
|
+
<div {...styles.stack()}>
|
|
143
|
+
<IconTile>
|
|
144
|
+
<Passkey />
|
|
145
|
+
</IconTile>
|
|
146
|
+
<Visual kind="passkey" />
|
|
147
|
+
<span {...styles.title()}>Add a passkey</span>
|
|
148
|
+
</div>
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
namespace styles {
|
|
153
|
+
export const stack = style({
|
|
154
|
+
alignItems: 'center',
|
|
155
|
+
display: 'flex',
|
|
156
|
+
flexDirection: 'column',
|
|
157
|
+
gap: '16',
|
|
158
|
+
maxWidth: '24rem !custom',
|
|
159
|
+
textAlign: 'center',
|
|
160
|
+
width: '100% !custom',
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
export const title = style({ color: 'content.primary', typography: 'heading.h4' })
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Keep the Chip to a Few Words
|
|
168
|
+
|
|
169
|
+
The chip stays on one line, so a long label runs past the panel edge.
|
|
170
|
+
|
|
171
|
+
**Do:** Write one short instruction in the chip.
|
|
172
|
+
|
|
173
|
+
```tsx
|
|
174
|
+
/**
|
|
175
|
+
* Do example for "Keep the Chip to a Few Words" on the Visual page.
|
|
176
|
+
* Write one short instruction in the chip.
|
|
177
|
+
* @module
|
|
178
|
+
*/
|
|
179
|
+
import { style, Visual } from '@tempoxyz/ds'
|
|
180
|
+
|
|
181
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
182
|
+
export function Demo() {
|
|
183
|
+
return (
|
|
184
|
+
<div {...styles.frame()}>
|
|
185
|
+
<Visual kind="passkey">
|
|
186
|
+
<Visual.Chip>Touch to sign in</Visual.Chip>
|
|
187
|
+
</Visual>
|
|
188
|
+
</div>
|
|
189
|
+
)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
namespace styles {
|
|
193
|
+
export const frame = style({ maxWidth: '24rem !custom', width: '100% !custom' })
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Don't:** Write a sentence in the chip.
|
|
198
|
+
|
|
199
|
+
```tsx
|
|
200
|
+
/**
|
|
201
|
+
* Don't example for "Keep the Chip to a Few Words" on the Visual page.
|
|
202
|
+
* Don't write a sentence in the chip.
|
|
203
|
+
* @module
|
|
204
|
+
*/
|
|
205
|
+
import { style, Visual } from '@tempoxyz/ds'
|
|
206
|
+
|
|
207
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
208
|
+
export function Demo() {
|
|
209
|
+
return (
|
|
210
|
+
<div {...styles.frame()}>
|
|
211
|
+
<Visual kind="passkey">
|
|
212
|
+
<Visual.Chip>Place your finger on the sensor to finish signing in</Visual.Chip>
|
|
213
|
+
</Visual>
|
|
214
|
+
</div>
|
|
215
|
+
)
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
namespace styles {
|
|
219
|
+
export const frame = style({ maxWidth: '24rem !custom', width: '100% !custom' })
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Content
|
|
224
|
+
|
|
225
|
+
* **Chip:** Write an instruction of two to four words in sentence case, such as Touch to sign in, with no end punctuation.
|
|
226
|
+
|
|
227
|
+
## Accessibility
|
|
228
|
+
|
|
229
|
+
A visual renders a `<div>` with no role and takes no focus. Screen readers skip the artwork and read the chip text in place.
|
|
230
|
+
|
|
231
|
+
### Semantics
|
|
232
|
+
|
|
233
|
+
* **Artwork (aria-hidden):** Decorative, so screen readers skip it.
|
|
234
|
+
* **Visual.Chip (span):** Plain text, read in place. The dot is hidden.
|
|
235
|
+
|
|
236
|
+
### Your Responsibilities
|
|
237
|
+
|
|
238
|
+
* **Name the Feature in the Title:** The artwork has no text alternative, so the modal title names the feature.
|
|
239
|
+
* **Label a Meaningful Visual (aria-label):** If the visual carries meaning alone, set `role="img"` and an `aria-label`.
|
|
240
|
+
|
|
241
|
+
## Related
|
|
242
|
+
|
|
243
|
+
[IconTile](/docs/components/icon-tile)
|
|
244
|
+
|
|
245
|
+
Use for icons at the top of other centered modals.
|
|
246
|
+
|
|
247
|
+
[Dialog](/docs/components/dialog)
|
|
248
|
+
|
|
249
|
+
Use for the modal that holds the visual.
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Components for building Tempo products, grouped by the job each one does.
|
|
4
|
+
|
|
5
|
+
## Principles
|
|
6
|
+
|
|
7
|
+
* **Native First:** Components render native elements such as `<button>`, `<input>`, and `<table>`, and accept their attributes, refs, classes, and styles.
|
|
8
|
+
* **Accessible Behavior:** Components that coordinate focus, keyboard, or popups build on Base UI primitives, which supply keyboard support and ARIA wiring.
|
|
9
|
+
* **Composable Parts:** Larger components split into named parts, such as `Dialog.Root` and `Dialog.Title`, so you control the markup between them.
|
|
10
|
+
* **Shared Tokens:** Every component reads Tempo variables for color, spacing, type, and motion. A variable scope on a wrapper restyles everything inside it.
|
|
11
|
+
|
|
12
|
+
## Actions
|
|
13
|
+
|
|
14
|
+
Controls that start an action or copy a value.
|
|
15
|
+
|
|
16
|
+
- [Button](/docs/components/button): Triggers an action, such as submitting a form or sending a payment.
|
|
17
|
+
- [ButtonGroup](/docs/components/button-group): Lays out the actions at the foot of a dialog or focused flow.
|
|
18
|
+
- [CopyButton](/docs/components/copy-button): Copies a value to the clipboard and confirms the copy.
|
|
19
|
+
- [SplitButton](/docs/components/split-button): Pairs a primary action with a menu of alternatives.
|
|
20
|
+
|
|
21
|
+
## Forms and Inputs
|
|
22
|
+
|
|
23
|
+
Controls that collect values, and the parts that label and group them. Wrap each control in a [Field](/docs/components/field) to link its label, description, and error.
|
|
24
|
+
|
|
25
|
+
- [AmountInput](/docs/components/amount-input): Accepts a decimal amount, such as a payment or transfer value.
|
|
26
|
+
- [Autocomplete](/docs/components/autocomplete): A text input that suggests values while people type.
|
|
27
|
+
- [Calendar](/docs/components/calendar): A month grid for picking one date or a date range.
|
|
28
|
+
- [Checkbox](/docs/components/checkbox): Turns a single independent option on or off.
|
|
29
|
+
- [CheckboxGroup](/docs/components/checkbox-group): Shares one value array across a group of checkboxes.
|
|
30
|
+
- [Choicebox](/docs/components/choicebox): A selectable tile with an optional icon, title, and description.
|
|
31
|
+
- [ChoiceGroup](/docs/components/choice-group): A segmented control for a few mutually exclusive options.
|
|
32
|
+
- [Combobox](/docs/components/combobox): A text input that filters a list of fixed options while people type.
|
|
33
|
+
- [DatePicker](/docs/components/date-picker): Shows the selected date and opens a calendar in a popup.
|
|
34
|
+
- [Field](/docs/components/field): Links a label, description, and error message to a control.
|
|
35
|
+
- [Fieldset](/docs/components/fieldset): Groups related fields under a shared legend.
|
|
36
|
+
- [NativeSelect](/docs/components/native-select): A native select styled as a field, which opens the browser's own picker.
|
|
37
|
+
- [NumberField](/docs/components/number-field): A numeric input with increment and decrement buttons.
|
|
38
|
+
- [OtpField](/docs/components/otp-field): Accepts a one-time passcode, one character per slot.
|
|
39
|
+
- [RadioGroup](/docs/components/radio-group): Lets you pick a single option from a short list.
|
|
40
|
+
- [Select](/docs/components/select): Opens a list of options for choosing one value.
|
|
41
|
+
- [Slider](/docs/components/slider): Picks a single value or a range by dragging.
|
|
42
|
+
- [Switch](/docs/components/switch): Toggles a setting that applies immediately.
|
|
43
|
+
- [Textarea](/docs/components/textarea): A multi-line text field.
|
|
44
|
+
- [TextInput](/docs/components/text-input): A text field with optional prefix, suffix, and clear button.
|
|
45
|
+
|
|
46
|
+
## Feedback and Status
|
|
47
|
+
|
|
48
|
+
Components that report progress, results, and system state.
|
|
49
|
+
|
|
50
|
+
- [Alert](/docs/components/alert): Shows an inline message tied to nearby content.
|
|
51
|
+
- [Banner](/docs/components/banner): Shows a full-width message about the system or page.
|
|
52
|
+
- [Callout](/docs/components/callout): Sets a short passage of body text apart in a subtle box.
|
|
53
|
+
- [Empty](/docs/components/empty): Fills a region that has nothing to show yet.
|
|
54
|
+
- [Gauge](/docs/components/gauge): Shows a measurement within a range as a ring.
|
|
55
|
+
- [LoadingDots](/docs/components/loading-dots): Shows three pulsing dots for inline loading.
|
|
56
|
+
- [Progress](/docs/components/progress): Shows how far a task has advanced.
|
|
57
|
+
- [Skeleton](/docs/components/skeleton): Holds the place of content while it loads.
|
|
58
|
+
- [Spinner](/docs/components/spinner): Shows that something is loading.
|
|
59
|
+
- [StatusChip](/docs/components/status-chip): Names the status of a payment, an authorization, or a network.
|
|
60
|
+
- [StatusIndicator](/docs/components/status-indicator): Names the status of a system or a service with a dot and a label.
|
|
61
|
+
- [StatusRow](/docs/components/status-row): Follows the status of one payment or task while it runs.
|
|
62
|
+
- [Toast](/docs/components/toast): Shows a brief notification that dismisses itself.
|
|
63
|
+
|
|
64
|
+
## Overlays
|
|
65
|
+
|
|
66
|
+
Popups that open above the page from a trigger.
|
|
67
|
+
|
|
68
|
+
- [AlertDialog](/docs/components/alert-dialog): Asks you to confirm a critical action before it happens.
|
|
69
|
+
- [Dialog](/docs/components/dialog): Opens a modal popup over the page.
|
|
70
|
+
- [Drawer](/docs/components/drawer): Slides a modal panel in from an edge of the viewport.
|
|
71
|
+
- [Menu](/docs/components/menu): Opens a list of actions from a button.
|
|
72
|
+
- [Popover](/docs/components/popover): Opens a non-modal popup anchored to a trigger.
|
|
73
|
+
- [Tooltip](/docs/components/tooltip): Shows a short label for a control on hover or focus.
|
|
74
|
+
|
|
75
|
+
## Navigation
|
|
76
|
+
|
|
77
|
+
Components that move between pages, views, and steps.
|
|
78
|
+
|
|
79
|
+
- [Breadcrumbs](/docs/components/breadcrumbs): Shows where the current page sits in the site hierarchy.
|
|
80
|
+
- [Pagination](/docs/components/pagination): Moves between pages of a long list.
|
|
81
|
+
- [SidebarMenu](/docs/components/sidebar-menu): Vertical navigation for sidebars and drawers.
|
|
82
|
+
- [Stepper](/docs/components/stepper): Shows progress through a fixed sequence of steps.
|
|
83
|
+
- [Tabs](/docs/components/tabs): Switches between related views.
|
|
84
|
+
|
|
85
|
+
## Layout
|
|
86
|
+
|
|
87
|
+
Primitives that size, space, and arrange content. They carry no meaning, so pair them with semantic elements where structure matters.
|
|
88
|
+
|
|
89
|
+
- [AppShell](/docs/components/app-shell): Places a sticky sidebar beside the main content column.
|
|
90
|
+
- [Container](/docs/components/container): Centers content at a maximum width.
|
|
91
|
+
- [Frame](/docs/components/frame): Lays out a header, body, and footer in a column.
|
|
92
|
+
- [Grid](/docs/components/grid): Lays out children on a responsive grid.
|
|
93
|
+
- [Inline](/docs/components/inline): Lays out children in a horizontal row.
|
|
94
|
+
- [Inset](/docs/components/inset): Pads content with spacing tokens.
|
|
95
|
+
- [Separator](/docs/components/separator): Draws a rule between groups of content.
|
|
96
|
+
- [Stack](/docs/components/stack): Lays out children in a vertical column.
|
|
97
|
+
- [Surface](/docs/components/surface): A card container for grouping related content.
|
|
98
|
+
|
|
99
|
+
## Data Display
|
|
100
|
+
|
|
101
|
+
Components that present content and records.
|
|
102
|
+
|
|
103
|
+
- [Accordion](/docs/components/accordion): Stacks collapsible sections that each reveal a labelled panel.
|
|
104
|
+
- [AgentLogo](/docs/components/agent-logo): Shows the logo of an AI agent that works with a wallet.
|
|
105
|
+
- [Avatar](/docs/components/avatar): Represents a person, contact, or wallet with an image, initials, or an icon.
|
|
106
|
+
- [Badge](/docs/components/badge): Labels a status or category in a compact chip.
|
|
107
|
+
- [BarChart](/docs/components/bar-chart): Shows values over time as stacked bars, such as the daily spend of each agent.
|
|
108
|
+
- [Code](/docs/components/code): Sets a command, identifier, or value apart inside a sentence.
|
|
109
|
+
- [GetStartedVisual](/docs/components/get-started-visual): Illustrates one step of a get started flow at the top of its card.
|
|
110
|
+
- [HeroVisual](/docs/components/hero-visual): Shows animated streaks and a title beside the steps of a setup flow.
|
|
111
|
+
- [IconTile](/docs/components/icon-tile): Anchors a centered modal with one icon in a rounded square.
|
|
112
|
+
- [Kbd](/docs/components/kbd): Shows a keyboard key or shortcut.
|
|
113
|
+
- [ListGroup](/docs/components/list-group): Stacks rows for details, pickers, checklists, and settings.
|
|
114
|
+
- [Snippet](/docs/components/snippet): Shows a command or value with a copy button.
|
|
115
|
+
- [SplitBar](/docs/components/split-bar): Splits one total between two parts, with a legend under the bar.
|
|
116
|
+
- [SuccessHero](/docs/components/success-hero): Confirms that a setup flow finished, on a dark card of animated streaks.
|
|
117
|
+
- [Table](/docs/components/table): Displays tabular data in rows and columns.
|
|
118
|
+
- [TempoLogo](/docs/components/tempo-logo): Shows the Tempo brand logo.
|
|
119
|
+
- [VerificationCode](/docs/components/verification-code): Shows a code that a person compares with the one another app shows.
|
|
120
|
+
- [Visual](/docs/components/visual): Illustrates the top of an onboarding or feature modal.
|
|
121
|
+
|
|
122
|
+
## Blockchain
|
|
123
|
+
|
|
124
|
+
Components for onchain values such as addresses, amounts, and tokens.
|
|
125
|
+
|
|
126
|
+
- [AddressCard](/docs/components/address-card): Shows a wallet address to receive funds, with its QR code and networks.
|
|
127
|
+
- [Amount](/docs/components/amount): Formats a number as money or a token amount.
|
|
128
|
+
- [AssetChip](/docs/components/asset-chip): Labels a supported asset or network in a small chip, which can also pick one.
|
|
129
|
+
- [BadgedLogo](/docs/components/badged-logo): Marks a token or an app with a small badge on the corner of its logo.
|
|
130
|
+
- [Hex](/docs/components/hex): Shows a hex string, such as an address, truncated to fit.
|
|
131
|
+
- [Identicon](/docs/components/identicon): Shows a unique gradient avatar derived from an address.
|
|
132
|
+
- [NetworkLogo](/docs/components/network-logo): Shows the logo of the network a token lives on.
|
|
133
|
+
- [Qr](/docs/components/qr): Renders a value as a QR code.
|
|
134
|
+
- [SecretValue](/docs/components/secret-value): Masks a secret and adds reveal and copy buttons.
|
|
135
|
+
- [Token](/docs/components/token): Shows which token an amount is in, and opens a picker to change it.
|
|
136
|
+
- [TokenLogo](/docs/components/token-logo): Shows a token logo by contract address or symbol.
|
|
137
|
+
|
|
138
|
+
## Choosing a Component
|
|
139
|
+
|
|
140
|
+
### Choosing One Option
|
|
141
|
+
|
|
142
|
+
* **[RadioGroup](/docs/components/radio-group):** Two to five options, all visible at once.
|
|
143
|
+
* **[ChoiceGroup](/docs/components/choice-group):** Two to four short options that switch a view or mode.
|
|
144
|
+
* **[Choicebox](/docs/components/choicebox):** A few options that each need an icon or description.
|
|
145
|
+
* **[Select](/docs/components/select):** Many options, or limited space.
|
|
146
|
+
* **[Combobox](/docs/components/combobox):** A long list to filter by typing.
|
|
147
|
+
* **[Autocomplete](/docs/components/autocomplete):** Free text with suggested values.
|
|
148
|
+
|
|
149
|
+
### On and Off
|
|
150
|
+
|
|
151
|
+
* **[Switch](/docs/components/switch):** A setting that applies the moment you flip it.
|
|
152
|
+
* **[Checkbox](/docs/components/checkbox):** A choice that applies on form submit, or agreement to terms.
|
|
153
|
+
|
|
154
|
+
### Messages
|
|
155
|
+
|
|
156
|
+
* **[Banner](/docs/components/banner):** A message about the whole product or page, such as an outage.
|
|
157
|
+
* **[Alert](/docs/components/alert):** A message about a specific section or field.
|
|
158
|
+
* **[Toast](/docs/components/toast):** Confirms that an action finished.
|
|
159
|
+
* **[AlertDialog](/docs/components/alert-dialog):** An action that needs a decision before it continues.
|
|
160
|
+
|
|
161
|
+
### Loading
|
|
162
|
+
|
|
163
|
+
* **[Skeleton](/docs/components/skeleton):** Content with a known shape.
|
|
164
|
+
* **[Progress](/docs/components/progress):** A task with a measurable amount of work.
|
|
165
|
+
* **[Spinner](/docs/components/spinner):** A region or control that is busy for an unknown time.
|
|
166
|
+
* **[LoadingDots](/docs/components/loading-dots):** A short wait inside a line of text.
|
|
167
|
+
|
|
168
|
+
### Popups
|
|
169
|
+
|
|
170
|
+
* **[Dialog](/docs/components/dialog):** A focused task that blocks the page.
|
|
171
|
+
* **[Drawer](/docs/components/drawer):** A long form or details panel that keeps page context visible.
|
|
172
|
+
* **[Menu](/docs/components/menu):** A list of actions.
|
|
173
|
+
* **[Popover](/docs/components/popover):** Interactive content anchored to a trigger, without a block on the page.
|
|
174
|
+
* **[Tooltip](/docs/components/tooltip):** A label for an icon button.
|
|
175
|
+
|
|
176
|
+
### Showing a Status
|
|
177
|
+
|
|
178
|
+
* **[Table](/docs/components/table) cell `status`:** A status in a table row, as a colored word such as Failed.
|
|
179
|
+
* **[StatusChip](/docs/components/status-chip):** The status of a payment, an authorization, or a network, at the end of a row or beside a title.
|
|
180
|
+
* **[StatusIndicator](/docs/components/status-indicator):** The live state of a system, a service, or a connection, such as Degraded.
|
|
181
|
+
* **[StatusRow](/docs/components/status-row):** One running task that a person follows until it finishes.
|
|
182
|
+
* **[Badge](/docs/components/badge):** A category or an attribute, such as Testnet or Nightly.
|
|
183
|
+
|
|
184
|
+
### Lists of Records
|
|
185
|
+
|
|
186
|
+
* **[Table](/docs/components/table):** Many records with the same fields, such as payouts or team members, to compare by column.
|
|
187
|
+
* **[ListGroup](/docs/components/list-group):** The fields of one record, a short list to pick from or open, or table rows below 640px.
|
|
188
|
+
* **[Surface](/docs/components/surface) in a [Grid](/docs/components/grid):** A few similar items that each stand alone, such as metric tiles. Don't make a card per record.
|
|
189
|
+
|
|
190
|
+
### Identifiers
|
|
191
|
+
|
|
192
|
+
* **[Hex](/docs/components/hex):** An address or a hash in a row, a card, or a details view. It truncates in the middle to fit its container, down to the prefix and one character on each side, and overflows a narrower one.
|
|
193
|
+
* **[Table](/docs/components/table) cell `mono`:** An address or a hash in a table column, shortened with `formatHex` to `0x4f2a…91c3`. Link the row to a details view with a Hex.
|
|
194
|
+
* **[Snippet](/docs/components/snippet):** A URL, a command, or another value that isn't hex.
|
|
195
|
+
* **[SecretValue](/docs/components/secret-value):** A private key or another secret, hidden until a reveal.
|
|
196
|
+
|
|
197
|
+
Set `copy` on a Hex wherever people need the full value. [Building From Intent](/docs/foundations/intent) shows how to choose by the job of the content.
|
|
198
|
+
|
|
199
|
+
### Copying Values
|
|
200
|
+
|
|
201
|
+
* **[Snippet](/docs/components/snippet):** A command or value with its own copy button.
|
|
202
|
+
* **[CopyButton](/docs/components/copy-button):** Copy beside content that you lay out yourself.
|
|
203
|
+
* **[SecretValue](/docs/components/secret-value):** A value that stays hidden until a reveal.
|