@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,294 @@
|
|
|
1
|
+
# AssetChip
|
|
2
|
+
|
|
3
|
+
Labels a supported asset or network in a small chip, which can also pick one.
|
|
4
|
+
|
|
5
|
+
[View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/AssetChip.tsx)
|
|
6
|
+
|
|
7
|
+
Figma: [Elements/Asset Chip](https://www.figma.com/design/yE96kcymnNR88PJp6G1sPs?node-id=5227-2626)
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
An asset chip renders a small gray label for something a row or value supports, such as the assets a network accepts. Place a [TokenLogo](token-logo.md) before the text to add a 12px token logo. Give it an `onClick` to pick one asset from a short set.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
### Basic
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { AssetChip, style } from '@tempoxyz/ds'
|
|
19
|
+
|
|
20
|
+
export function Demo() {
|
|
21
|
+
return (
|
|
22
|
+
<div {...styles.row()}>
|
|
23
|
+
<AssetChip>USDC</AssetChip>
|
|
24
|
+
<AssetChip>USDT</AssetChip>
|
|
25
|
+
</div>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
namespace styles {
|
|
30
|
+
// Chips sit on a modal's elevated surface in the designs, and share the page's fill otherwise.
|
|
31
|
+
export const row = style({
|
|
32
|
+
alignItems: 'center',
|
|
33
|
+
backgroundColor: 'background.elevated',
|
|
34
|
+
borderRadius: 'xs',
|
|
35
|
+
display: 'flex',
|
|
36
|
+
gap: '4',
|
|
37
|
+
padding: '16',
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/AssetChip/Basic.tsx)
|
|
43
|
+
|
|
44
|
+
### Logo
|
|
45
|
+
|
|
46
|
+
A nested [TokenLogo](token-logo.md) renders at 12px, whatever its `size`.
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
import { AssetChip, style, TokenLogo } from '@tempoxyz/ds'
|
|
50
|
+
|
|
51
|
+
export function Demo() {
|
|
52
|
+
return (
|
|
53
|
+
<TokenLogo.Provider>
|
|
54
|
+
<div {...styles.row()}>
|
|
55
|
+
<AssetChip>
|
|
56
|
+
<TokenLogo address="0x20c0000000000000000000000000000000000000" />
|
|
57
|
+
pathUSD
|
|
58
|
+
</AssetChip>
|
|
59
|
+
<AssetChip>
|
|
60
|
+
<TokenLogo address="0x20c000000000000000000000b9537d11c60e8b50" />
|
|
61
|
+
USDC.e
|
|
62
|
+
</AssetChip>
|
|
63
|
+
</div>
|
|
64
|
+
</TokenLogo.Provider>
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
namespace styles {
|
|
69
|
+
// Chips sit on a modal's elevated surface in the designs, and share the page's fill otherwise.
|
|
70
|
+
export const row = style({
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
backgroundColor: 'background.elevated',
|
|
73
|
+
borderRadius: 'xs',
|
|
74
|
+
display: 'flex',
|
|
75
|
+
gap: '4',
|
|
76
|
+
padding: '16',
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/AssetChip/Logo.tsx)
|
|
82
|
+
|
|
83
|
+
### Selectable
|
|
84
|
+
|
|
85
|
+
An `onClick` renders a button. Set `selected` on the picked chip, which fills dark.
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
import { AssetChip, style } from '@tempoxyz/ds'
|
|
89
|
+
import { useState } from 'react'
|
|
90
|
+
|
|
91
|
+
const assets = ['USDC', 'USDT', 'pathUSD'] as const
|
|
92
|
+
|
|
93
|
+
export function Demo() {
|
|
94
|
+
const [asset, setAsset] = useState<(typeof assets)[number]>(assets[0])
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<div aria-label="Pay with" role="group" {...styles.row()}>
|
|
98
|
+
{assets.map((entry) => (
|
|
99
|
+
<AssetChip key={entry} onClick={() => setAsset(entry)} selected={asset === entry}>
|
|
100
|
+
{entry}
|
|
101
|
+
</AssetChip>
|
|
102
|
+
))}
|
|
103
|
+
</div>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
namespace styles {
|
|
108
|
+
// Chips sit on a modal's elevated surface in the designs, and share the page's fill otherwise.
|
|
109
|
+
export const row = style({
|
|
110
|
+
alignItems: 'center',
|
|
111
|
+
backgroundColor: 'background.elevated',
|
|
112
|
+
borderRadius: 'xs',
|
|
113
|
+
display: 'flex',
|
|
114
|
+
gap: '4',
|
|
115
|
+
padding: '16',
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/AssetChip/Selectable.tsx)
|
|
121
|
+
|
|
122
|
+
## Anatomy
|
|
123
|
+
|
|
124
|
+
Import the component and assemble its parts.
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
import { AssetChip, TokenLogo } from '@tempoxyz/ds'
|
|
128
|
+
|
|
129
|
+
<AssetChip>
|
|
130
|
+
<TokenLogo />
|
|
131
|
+
</AssetChip>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Guidelines
|
|
135
|
+
|
|
136
|
+
### When to Use
|
|
137
|
+
|
|
138
|
+
* List the assets a network supports under the title of a network row.
|
|
139
|
+
* Name a supported asset after a value, such as an address that accepts USDC.
|
|
140
|
+
* Pick one asset from a short set, such as the asset to pay with.
|
|
141
|
+
|
|
142
|
+
### When Not to Use
|
|
143
|
+
|
|
144
|
+
* Use [Badge](badge.md) to show a status, such as Pending.
|
|
145
|
+
* Use [Token](token.md) for a token that a person can change.
|
|
146
|
+
* Use [Button](button.md) for an action other than picking an asset.
|
|
147
|
+
|
|
148
|
+
### List What a Row Supports
|
|
149
|
+
|
|
150
|
+
Asset chips stay quiet, so they don't compete with the row title or with status tags.
|
|
151
|
+
|
|
152
|
+
**Do:** Place the chips under the row title, one per supported asset.
|
|
153
|
+
|
|
154
|
+
```tsx
|
|
155
|
+
/**
|
|
156
|
+
* Do example for "List What a Row Supports" on the AssetChip page.
|
|
157
|
+
* Place asset chips under the title of a network row.
|
|
158
|
+
* @module
|
|
159
|
+
*/
|
|
160
|
+
import { AssetChip, NetworkLogo, style } from '@tempoxyz/ds'
|
|
161
|
+
|
|
162
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
163
|
+
export function Demo() {
|
|
164
|
+
return (
|
|
165
|
+
<div {...styles.row()}>
|
|
166
|
+
<NetworkLogo network="base" size="large" />
|
|
167
|
+
<div {...styles.text()}>
|
|
168
|
+
<span {...styles.title()}>Base</span>
|
|
169
|
+
<div {...styles.chips()}>
|
|
170
|
+
<AssetChip>USDC</AssetChip>
|
|
171
|
+
<AssetChip>USDT</AssetChip>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
namespace styles {
|
|
179
|
+
export const chips = style({ display: 'flex', gap: '4' })
|
|
180
|
+
|
|
181
|
+
// The row sits on a modal's elevated surface, as in the designs, so the chips keep their fill.
|
|
182
|
+
export const row = style({
|
|
183
|
+
alignItems: 'center',
|
|
184
|
+
backgroundColor: 'background.elevated',
|
|
185
|
+
borderRadius: 'xs',
|
|
186
|
+
display: 'flex',
|
|
187
|
+
gap: '12',
|
|
188
|
+
padding: '16',
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
export const text = style({ display: 'grid', gap: '4' })
|
|
192
|
+
|
|
193
|
+
export const title = style({ color: 'content.primary', typography: 'body.b2Strong' })
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Don't:** Use an asset chip to show a status. Use a [Badge](badge.md).
|
|
198
|
+
|
|
199
|
+
```tsx
|
|
200
|
+
/**
|
|
201
|
+
* Don't example for "List What a Row Supports" on the AssetChip page.
|
|
202
|
+
* An asset chip used as a status reads as a supported asset.
|
|
203
|
+
* @module
|
|
204
|
+
*/
|
|
205
|
+
import { AssetChip, NetworkLogo, style } from '@tempoxyz/ds'
|
|
206
|
+
|
|
207
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
208
|
+
export function Demo() {
|
|
209
|
+
return (
|
|
210
|
+
<div {...styles.row()}>
|
|
211
|
+
<NetworkLogo network="base" size="large" />
|
|
212
|
+
<div {...styles.text()}>
|
|
213
|
+
<span {...styles.title()}>Base</span>
|
|
214
|
+
<div {...styles.chips()}>
|
|
215
|
+
<AssetChip>Congested</AssetChip>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
)
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
namespace styles {
|
|
223
|
+
export const chips = style({ display: 'flex', gap: '4' })
|
|
224
|
+
|
|
225
|
+
// The row sits on a modal's elevated surface, as in the designs, so the chips keep their fill.
|
|
226
|
+
export const row = style({
|
|
227
|
+
alignItems: 'center',
|
|
228
|
+
backgroundColor: 'background.elevated',
|
|
229
|
+
borderRadius: 'xs',
|
|
230
|
+
display: 'flex',
|
|
231
|
+
gap: '12',
|
|
232
|
+
padding: '16',
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
export const text = style({ display: 'grid', gap: '4' })
|
|
236
|
+
|
|
237
|
+
export const title = style({ color: 'content.primary', typography: 'body.b2Strong' })
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Add a Logo Only When It Helps
|
|
242
|
+
|
|
243
|
+
* **Text:** The default, for a list of familiar assets.
|
|
244
|
+
* **Logo:** For an asset that people find by its logo.
|
|
245
|
+
|
|
246
|
+
## Content
|
|
247
|
+
|
|
248
|
+
### Use the Symbol
|
|
249
|
+
|
|
250
|
+
Write the asset's ticker symbol, such as USDC or pathUSD, or the network's name, such as Base. Don't add words such as Supported or Accepted. The row title gives that context.
|
|
251
|
+
|
|
252
|
+
## Accessibility
|
|
253
|
+
|
|
254
|
+
An asset chip renders a `<span>` with no role, so screen readers read its text inline. With an `onClick`, it renders a `<button>` that takes focus and announces `selected` as pressed.
|
|
255
|
+
|
|
256
|
+
### Semantics
|
|
257
|
+
|
|
258
|
+
* **Root (span):** Screen readers read its text in place, as part of the surrounding content.
|
|
259
|
+
* **Logo (alt):** A nested token logo has empty alt text, so screen readers read the symbol once, from the chip text.
|
|
260
|
+
* **Selected (aria-pressed):** A chip with an `onClick` announces `selected` as pressed, so screen readers read the pick.
|
|
261
|
+
|
|
262
|
+
### Keyboard
|
|
263
|
+
|
|
264
|
+
A static chip takes no focus. A chip with an `onClick` is a native button:
|
|
265
|
+
|
|
266
|
+
* **Move Focus to the Chip (Tab):** Moves focus to the next chip in the set.
|
|
267
|
+
* **Pick the Asset (Enter or Space):** Runs the chip's `onClick`, which sets the picked asset.
|
|
268
|
+
|
|
269
|
+
### Your Responsibilities
|
|
270
|
+
|
|
271
|
+
* **Keep Chips Beside Their Row:** Keep the chips next to the row title, so screen readers read the assets with it.
|
|
272
|
+
* **Name the Set (aria-label):** Wrap selectable chips in a group with a label, so screen readers read what they pick.
|
|
273
|
+
|
|
274
|
+
## Related
|
|
275
|
+
|
|
276
|
+
[TokenLogo](token-logo.md)
|
|
277
|
+
|
|
278
|
+
Use for token logos.
|
|
279
|
+
|
|
280
|
+
[Token](token.md)
|
|
281
|
+
|
|
282
|
+
Use for a token that a person can change.
|
|
283
|
+
|
|
284
|
+
[NetworkLogo](network-logo.md)
|
|
285
|
+
|
|
286
|
+
Use for network logos.
|
|
287
|
+
|
|
288
|
+
[Badge](badge.md)
|
|
289
|
+
|
|
290
|
+
Use for statuses.
|
|
291
|
+
|
|
292
|
+
[ListGroup](list-group.md)
|
|
293
|
+
|
|
294
|
+
Use for network and asset lists.
|