@tempoxyz/ds 0.3.9 → 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/dist/web/components/OtpField.css +1 -1
- package/dist/web/components/OtpField.d.ts +1 -1
- package/dist/web/components/OtpField.d.ts.map +1 -1
- package/dist/web/components/OtpField.js +3 -4
- package/dist/web/components/OtpField.js.map +1 -1
- package/dist/web/components/OtpField.js.zyzz.json +1 -1
- package/dist/web/index.js.zyzz.json +1 -1
- package/package.json +1 -1
- package/src/web/components/OtpField.tsx +2 -24
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
# Tempo Wallet
|
|
2
|
+
|
|
3
|
+
Tempo Wallet is the first-party wallet for balances, transfers, and deposits.
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> The reference layouts on this page are compositions of library components and `style`, not shipped components. `@tempoxyz/ds` exports no `WalletOverview` or `SendReview`. Copy a layout into your app and adapt it.
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Tempo Wallet runs at [wallet.tempo.xyz](https://wallet.tempo.xyz). You sign in with a passkey, then send, receive, deposit, and swap stablecoins, and manage private balances in Zones.
|
|
11
|
+
|
|
12
|
+
Roles:
|
|
13
|
+
|
|
14
|
+
* **Account Holders:** Hold, send, and receive stablecoins such as pathUSD and USDC.e.
|
|
15
|
+
* **Developers and Agents (MPP):** Pay for API requests. Access keys permit an app or agent to spend within limits you approve.
|
|
16
|
+
|
|
17
|
+
## Surfaces
|
|
18
|
+
|
|
19
|
+
* **Web (@tempoxyz/ds):** wallet.tempo.xyz on desktop browsers.
|
|
20
|
+
* **Mobile Web (@tempoxyz/ds):** The same app in iOS and Android browsers.
|
|
21
|
+
* **Terminal (CLI):** Tempo Wallet CLI, built outside this library.
|
|
22
|
+
|
|
23
|
+
No native iOS or Android app is documented. The Apple Pay deposit option is the only flow tied to a device. It needs a US debit card and an iOS device.
|
|
24
|
+
|
|
25
|
+
## Key Screens
|
|
26
|
+
|
|
27
|
+
### Overview
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { Amount, Button, Grid, Hex, Identicon, ListGroup, style, Surface, TokenLogo, Tooltip } from '@tempoxyz/ds'
|
|
31
|
+
import { AddFunds, ArrowDownLeft, Privacy, Send, SwapHorizontal } from '@tempoxyz/ds/icons'
|
|
32
|
+
|
|
33
|
+
export const fill = true
|
|
34
|
+
const account = '0x0b2c69c5c1bbd3f8b642c8d8a3c8a903f780f9b2'
|
|
35
|
+
|
|
36
|
+
const balances = [
|
|
37
|
+
{
|
|
38
|
+
address: '0x20c0000000000000000000000000000000000000',
|
|
39
|
+
amount: '8420.00',
|
|
40
|
+
name: 'PathUSD',
|
|
41
|
+
symbol: 'pathUSD',
|
|
42
|
+
units: '8,420.00',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
address: '0x20c000000000000000000000b9537d11c60e8b50',
|
|
46
|
+
amount: '3170.32',
|
|
47
|
+
name: 'Bridged USDC (Stargate)',
|
|
48
|
+
symbol: 'USDC.e',
|
|
49
|
+
units: '3,170.32',
|
|
50
|
+
},
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
export function Demo() {
|
|
54
|
+
return (
|
|
55
|
+
<div {...styles.page()}>
|
|
56
|
+
<header {...styles.account()}>
|
|
57
|
+
<Identicon address={account} aria-hidden size="32" />
|
|
58
|
+
<Hex.Root value={account} {...styles.address()}>
|
|
59
|
+
<Hex.Text />
|
|
60
|
+
<Hex.Copy aria-label="Copy wallet address" />
|
|
61
|
+
</Hex.Root>
|
|
62
|
+
</header>
|
|
63
|
+
|
|
64
|
+
<Surface>
|
|
65
|
+
<p {...styles.caption()}>Total balance</p>
|
|
66
|
+
<Amount currency="USD" size="xl" value="12840.32" />
|
|
67
|
+
<div {...styles.actions()}>
|
|
68
|
+
<Button>
|
|
69
|
+
<Send />
|
|
70
|
+
Send
|
|
71
|
+
</Button>
|
|
72
|
+
<Button variant="secondary">
|
|
73
|
+
<ArrowDownLeft />
|
|
74
|
+
Receive
|
|
75
|
+
</Button>
|
|
76
|
+
<Button variant="secondary">
|
|
77
|
+
<AddFunds />
|
|
78
|
+
Deposit
|
|
79
|
+
</Button>
|
|
80
|
+
<Button variant="secondary">
|
|
81
|
+
<SwapHorizontal />
|
|
82
|
+
Swap
|
|
83
|
+
</Button>
|
|
84
|
+
</div>
|
|
85
|
+
</Surface>
|
|
86
|
+
|
|
87
|
+
<Grid fit="large" gap="16">
|
|
88
|
+
<Surface>
|
|
89
|
+
<Surface.Header>
|
|
90
|
+
<Surface.Title>Balances</Surface.Title>
|
|
91
|
+
</Surface.Header>
|
|
92
|
+
<ListGroup.Root>
|
|
93
|
+
{balances.map((balance) => (
|
|
94
|
+
<ListGroup.Row key={balance.address}>
|
|
95
|
+
<TokenLogo address={balance.address} />
|
|
96
|
+
<ListGroup.Info>
|
|
97
|
+
<ListGroup.Title>{balance.name}</ListGroup.Title>
|
|
98
|
+
<ListGroup.Description>
|
|
99
|
+
{balance.units} {balance.symbol}
|
|
100
|
+
</ListGroup.Description>
|
|
101
|
+
</ListGroup.Info>
|
|
102
|
+
<Amount currency="USD" value={balance.amount} />
|
|
103
|
+
<Tooltip.Root>
|
|
104
|
+
<Tooltip.Trigger
|
|
105
|
+
aria-label={`Send ${balance.name}`}
|
|
106
|
+
render={<Button shape="icon" size="small" variant="tertiary" />}
|
|
107
|
+
>
|
|
108
|
+
<Send />
|
|
109
|
+
</Tooltip.Trigger>
|
|
110
|
+
<Tooltip.Popup>Send {balance.name}</Tooltip.Popup>
|
|
111
|
+
</Tooltip.Root>
|
|
112
|
+
</ListGroup.Row>
|
|
113
|
+
))}
|
|
114
|
+
<ListGroup.Row action="navigation" render={<a href="#zones" />}>
|
|
115
|
+
<span {...styles.zone()}>
|
|
116
|
+
<Privacy />
|
|
117
|
+
</span>
|
|
118
|
+
<ListGroup.Info>
|
|
119
|
+
<ListGroup.Title>Private balance</ListGroup.Title>
|
|
120
|
+
<ListGroup.Description>Held in a zone</ListGroup.Description>
|
|
121
|
+
</ListGroup.Info>
|
|
122
|
+
<Amount currency="USD" value="1250.00" />
|
|
123
|
+
</ListGroup.Row>
|
|
124
|
+
</ListGroup.Root>
|
|
125
|
+
</Surface>
|
|
126
|
+
|
|
127
|
+
<Surface>
|
|
128
|
+
<Surface.Header>
|
|
129
|
+
<Surface.Title>Activity</Surface.Title>
|
|
130
|
+
<Button size="small" variant="tertiary">
|
|
131
|
+
View all
|
|
132
|
+
</Button>
|
|
133
|
+
</Surface.Header>
|
|
134
|
+
<ListGroup.Root>
|
|
135
|
+
<ListGroup.Row>
|
|
136
|
+
<ListGroup.Info>
|
|
137
|
+
<ListGroup.Title>Received from 0x3c44…93bc</ListGroup.Title>
|
|
138
|
+
<ListGroup.Description>Today, 9:41 AM</ListGroup.Description>
|
|
139
|
+
</ListGroup.Info>
|
|
140
|
+
<Amount sign="+" symbol="pathUSD" value="250.00" />
|
|
141
|
+
</ListGroup.Row>
|
|
142
|
+
<ListGroup.Row action="navigation" render={<a href="#access-key-activity" />}>
|
|
143
|
+
<ListGroup.Info>
|
|
144
|
+
<ListGroup.Title>Access Key activity</ListGroup.Title>
|
|
145
|
+
<ListGroup.Description>3 transactions</ListGroup.Description>
|
|
146
|
+
</ListGroup.Info>
|
|
147
|
+
<Amount sign="−" symbol="pathUSD" value="0.08" />
|
|
148
|
+
</ListGroup.Row>
|
|
149
|
+
<ListGroup.Row>
|
|
150
|
+
<ListGroup.Info>
|
|
151
|
+
<ListGroup.Title>Sent to 0x91bd…07e1</ListGroup.Title>
|
|
152
|
+
<ListGroup.Description>Yesterday, 4:18 PM</ListGroup.Description>
|
|
153
|
+
</ListGroup.Info>
|
|
154
|
+
<Amount sign="−" symbol="USDC.e" value="48.50" />
|
|
155
|
+
</ListGroup.Row>
|
|
156
|
+
</ListGroup.Root>
|
|
157
|
+
</Surface>
|
|
158
|
+
</Grid>
|
|
159
|
+
</div>
|
|
160
|
+
)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
namespace styles {
|
|
164
|
+
export const account = style({ alignItems: 'center', columnGap: '12', display: 'flex' })
|
|
165
|
+
|
|
166
|
+
export const actions = style({
|
|
167
|
+
display: 'flex',
|
|
168
|
+
flexWrap: 'wrap',
|
|
169
|
+
gap: '8',
|
|
170
|
+
marginBlockStart: '24',
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
export const address = style({ minWidth: '0' })
|
|
174
|
+
|
|
175
|
+
export const caption = style({
|
|
176
|
+
color: 'content.secondary',
|
|
177
|
+
margin: '0',
|
|
178
|
+
marginBlockEnd: '4',
|
|
179
|
+
typography: 'body.b2',
|
|
180
|
+
})
|
|
181
|
+
|
|
182
|
+
export const page = style({
|
|
183
|
+
backgroundColor: 'background.primary',
|
|
184
|
+
display: 'flex',
|
|
185
|
+
flexDirection: 'column',
|
|
186
|
+
padding: '16',
|
|
187
|
+
rowGap: '16',
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
export const zone = style({
|
|
191
|
+
alignItems: 'center',
|
|
192
|
+
backgroundColor: 'container.strong',
|
|
193
|
+
borderRadius: 'full',
|
|
194
|
+
cornerShape: 'round',
|
|
195
|
+
display: 'inline-flex',
|
|
196
|
+
flexShrink: '0 !custom',
|
|
197
|
+
height: '24',
|
|
198
|
+
justifyContent: 'center',
|
|
199
|
+
width: '24',
|
|
200
|
+
})
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Products/WalletOverview.tsx)
|
|
205
|
+
|
|
206
|
+
The overview leads with the total balance in USD, then the actions that move funds. On wide screens, Balances and Activity sit side by side. In a narrow column, they stack.
|
|
207
|
+
|
|
208
|
+
* **Wallet Address (Hex.Copy):** An identicon and the copyable address that others send to.
|
|
209
|
+
* **Total (size=xl):** Shows the total in USD.
|
|
210
|
+
* **Actions (primary):** Send is primary. Receive, Deposit, and Swap are secondary.
|
|
211
|
+
* **Balances (ListGroup):** A token icon, name, units, USD value, and a Send button.
|
|
212
|
+
* **Private Balance (navigation):** A row that opens Zones.
|
|
213
|
+
* **Access Key Activity (navigation):** Opens the list of MPP charges.
|
|
214
|
+
|
|
215
|
+
Patterns:
|
|
216
|
+
|
|
217
|
+
* [Payments](/docs/patterns/payments) for the Send, Receive, Deposit, and Swap entry points.
|
|
218
|
+
* [Blockchain Values](/docs/patterns/blockchain-values) for the address, token units, and USD values.
|
|
219
|
+
* [Tables and Lists](/docs/patterns/tables-and-lists) for balance and activity rows.
|
|
220
|
+
|
|
221
|
+
### Send Review
|
|
222
|
+
|
|
223
|
+
```tsx
|
|
224
|
+
import { Alert, Amount, Button, Hex, Identicon, ListGroup, style, Surface, TokenLogo } from '@tempoxyz/ds'
|
|
225
|
+
import { useEffect, useState } from 'react'
|
|
226
|
+
|
|
227
|
+
export const fill = true
|
|
228
|
+
const recipient = '0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc'
|
|
229
|
+
|
|
230
|
+
export function Demo() {
|
|
231
|
+
const [state, setState] = useState<'review' | 'sending' | 'sent'>('review')
|
|
232
|
+
|
|
233
|
+
useEffect(() => {
|
|
234
|
+
if (state !== 'sending') return
|
|
235
|
+
const timer = setTimeout(() => setState('sent'), 1200)
|
|
236
|
+
return () => clearTimeout(timer)
|
|
237
|
+
}, [state])
|
|
238
|
+
|
|
239
|
+
return (
|
|
240
|
+
<div {...styles.page()}>
|
|
241
|
+
<Surface {...styles.panel()}>
|
|
242
|
+
<Surface.Header>
|
|
243
|
+
<Surface.Title>{state === 'sent' ? 'Sent' : 'Review send'}</Surface.Title>
|
|
244
|
+
</Surface.Header>
|
|
245
|
+
|
|
246
|
+
<div {...styles.hero()}>
|
|
247
|
+
<Amount align="center" size="lg" symbol="pathUSD" value="250.00" />
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<ListGroup.Root>
|
|
251
|
+
<ListGroup.Row>
|
|
252
|
+
<ListGroup.Label>To</ListGroup.Label>
|
|
253
|
+
<span {...styles.recipient()}>
|
|
254
|
+
<Identicon address={recipient} aria-hidden size="24" />
|
|
255
|
+
<Hex.Root value={recipient} {...styles.hex()}>
|
|
256
|
+
<Hex.Text />
|
|
257
|
+
<Hex.Copy aria-label="Copy recipient address" />
|
|
258
|
+
</Hex.Root>
|
|
259
|
+
</span>
|
|
260
|
+
</ListGroup.Row>
|
|
261
|
+
<ListGroup.Row>
|
|
262
|
+
<ListGroup.Label>Token</ListGroup.Label>
|
|
263
|
+
<TokenLogo address="0x20c0000000000000000000000000000000000000" size="small" />
|
|
264
|
+
PathUSD
|
|
265
|
+
</ListGroup.Row>
|
|
266
|
+
<ListGroup.Row>
|
|
267
|
+
<ListGroup.Label>Network</ListGroup.Label>
|
|
268
|
+
Tempo
|
|
269
|
+
</ListGroup.Row>
|
|
270
|
+
<ListGroup.Row>
|
|
271
|
+
<ListGroup.Label>Note</ListGroup.Label>
|
|
272
|
+
Invoice 1042
|
|
273
|
+
</ListGroup.Row>
|
|
274
|
+
<ListGroup.Row>
|
|
275
|
+
<ListGroup.Label>Network fee</ListGroup.Label>
|
|
276
|
+
<Amount currency="USD" precise value="0.001" />
|
|
277
|
+
</ListGroup.Row>
|
|
278
|
+
</ListGroup.Root>
|
|
279
|
+
|
|
280
|
+
{state === 'sent' ? (
|
|
281
|
+
<>
|
|
282
|
+
<Alert intent="positive" {...styles.notice()}>
|
|
283
|
+
<Alert.Icon />
|
|
284
|
+
<Alert.Content>Sent 250.00 pathUSD to 0x3c44…93bc.</Alert.Content>
|
|
285
|
+
</Alert>
|
|
286
|
+
<div {...styles.actions()}>
|
|
287
|
+
<Button.Link href="https://explore.tempo.xyz/" variant="secondary">
|
|
288
|
+
View in explorer
|
|
289
|
+
</Button.Link>
|
|
290
|
+
<Button onClick={() => setState('review')}>Done</Button>
|
|
291
|
+
</div>
|
|
292
|
+
</>
|
|
293
|
+
) : (
|
|
294
|
+
<>
|
|
295
|
+
<p {...styles.warning()}>
|
|
296
|
+
Check the address before you confirm. Funds sent to the wrong address may not be
|
|
297
|
+
recoverable.
|
|
298
|
+
</p>
|
|
299
|
+
<div {...styles.actions()}>
|
|
300
|
+
<Button disabled={state === 'sending'} variant="secondary">
|
|
301
|
+
Back
|
|
302
|
+
</Button>
|
|
303
|
+
<Button loading={state === 'sending'} onClick={() => setState('sending')}>
|
|
304
|
+
Confirm send
|
|
305
|
+
</Button>
|
|
306
|
+
</div>
|
|
307
|
+
</>
|
|
308
|
+
)}
|
|
309
|
+
</Surface>
|
|
310
|
+
</div>
|
|
311
|
+
)
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
namespace styles {
|
|
315
|
+
export const actions = style({
|
|
316
|
+
columnGap: '8',
|
|
317
|
+
display: 'flex',
|
|
318
|
+
justifyContent: 'flex-end',
|
|
319
|
+
marginBlockStart: '24',
|
|
320
|
+
'@media (max-width: 40rem)': {
|
|
321
|
+
flexDirection: 'column-reverse',
|
|
322
|
+
rowGap: '8',
|
|
323
|
+
},
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
export const hero = style({ paddingBlock: '24' })
|
|
327
|
+
|
|
328
|
+
export const hex = style({ minWidth: '0' })
|
|
329
|
+
|
|
330
|
+
export const notice = style({ marginBlockStart: '24' })
|
|
331
|
+
|
|
332
|
+
export const page = style({
|
|
333
|
+
backgroundColor: 'background.primary',
|
|
334
|
+
display: 'flex',
|
|
335
|
+
justifyContent: 'center',
|
|
336
|
+
padding: '16',
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
export const panel = style({ maxWidth: '28rem !custom', width: '100% !custom' })
|
|
340
|
+
|
|
341
|
+
export const recipient = style({
|
|
342
|
+
alignItems: 'center',
|
|
343
|
+
columnGap: '8',
|
|
344
|
+
display: 'flex',
|
|
345
|
+
justifyContent: 'flex-end',
|
|
346
|
+
minWidth: '0',
|
|
347
|
+
})
|
|
348
|
+
|
|
349
|
+
export const warning = style({
|
|
350
|
+
color: 'content.secondary',
|
|
351
|
+
margin: '0',
|
|
352
|
+
marginBlockStart: '24',
|
|
353
|
+
typography: 'body.b3',
|
|
354
|
+
})
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Products/WalletSendReview.tsx)
|
|
359
|
+
|
|
360
|
+
Send collects a recipient address, amount, token, and optional note. The review shows them with the network fee before you confirm.
|
|
361
|
+
|
|
362
|
+
* **Transfer Amount (symbol):** Shows the value of the transfer in large type and in token units.
|
|
363
|
+
* **Details (ListGroup.Label):** Lists the recipient, token, network, note, and network fee.
|
|
364
|
+
* **Recipient (Hex):** An identicon beside the address. Both ends stay visible for comparison.
|
|
365
|
+
* **Confirm (loading):** The only primary action. It is busy during the submit. A success alert with an Explorer link replaces it.
|
|
366
|
+
|
|
367
|
+
Patterns:
|
|
368
|
+
|
|
369
|
+
* [Payments](/docs/patterns/payments) for the review and confirmation step.
|
|
370
|
+
* [Blockchain Values](/docs/patterns/blockchain-values) for the truncated address and the fee.
|
|
371
|
+
* [Destructive Actions](/docs/patterns/destructive-actions) for what can't be undone.
|
|
372
|
+
|
|
373
|
+
## Content
|
|
374
|
+
|
|
375
|
+
### Show USD for Holdings and Token Units for Transfers
|
|
376
|
+
|
|
377
|
+
* **Holdings:** Show balances in USD.
|
|
378
|
+
* **Transfers:** Show the token amount, since the transaction carries it. The review states 250.00 pathUSD, not $250.00.
|
|
379
|
+
|
|
380
|
+
### Label Every Address by What It Receives
|
|
381
|
+
|
|
382
|
+
* **Wallet address:** Receives from other Tempo Wallets.
|
|
383
|
+
* **Deposit address:** Shown in the Deposit crypto flow, for one chain and token.
|
|
384
|
+
|
|
385
|
+
**Do:** Label each address by purpose, such as Wallet address or Deposit address, and name the chain and
|
|
386
|
+
token beside a deposit address.
|
|
387
|
+
|
|
388
|
+
**Don't:** Show a bare 0x address without a label, or ask for the wallet address inside a deposit
|
|
389
|
+
flow.
|
|
390
|
+
|
|
391
|
+
### Say Where a Deposit Option Works
|
|
392
|
+
|
|
393
|
+
Deposit offers Buy MACH, Fiat/cards, Deposit crypto, and Claim referral code. Availability depends on the country and the enabled onramps.
|
|
394
|
+
|
|
395
|
+
State a limit beside the option, such as US only for Apple Pay, not after the choice.
|
|
396
|
+
|
|
397
|
+
### Group Machine Payments
|
|
398
|
+
|
|
399
|
+
An MPP session can produce several charges. Show the session as one row, such as Access Key activity with 3 transactions. List each charge when the row expands.
|
|
400
|
+
|
|
401
|
+
### Don't Promise Recovery
|
|
402
|
+
|
|
403
|
+
Tempo can't recover a deleted passkey, and a transfer to the wrong address may be lost. State both in sign-in and review copy. Tell people to save their passkey in a password manager that syncs across devices.
|
|
404
|
+
|
|
405
|
+
## Open Gaps
|
|
406
|
+
|
|
407
|
+
The library has no part for these needs yet. Before you add one, propose it as an issue in the Design System project.
|
|
408
|
+
|
|
409
|
+
* **Address Field:** Nothing checks a 0x address or suggests recipients. Use an input and an error, or an autocomplete.
|
|
410
|
+
* **QR Scanning:** Renders a QR code but can't read one from the camera.
|
|
411
|
+
* **Mobile Blockchain Parts:** `@tempoxyz/ds/mobile` has no amount, address, identicon, rows, token, or QR counterpart.
|
|
412
|
+
* **Activity Grouping:** Each screen composes grouped MPP rows again. No part names the session or its charge count.
|
|
413
|
+
|
|
414
|
+
## Related
|
|
415
|
+
|
|
416
|
+
[Payments](/docs/patterns/payments)
|
|
417
|
+
|
|
418
|
+
Covers send, receive, and deposit flows.
|
|
419
|
+
|
|
420
|
+
[Blockchain Values](/docs/patterns/blockchain-values)
|
|
421
|
+
|
|
422
|
+
Covers addresses, amounts, and fees.
|
|
423
|
+
|
|
424
|
+
[Amount](/docs/components/amount)
|
|
425
|
+
|
|
426
|
+
Use for USD and token values.
|
|
427
|
+
|
|
428
|
+
[Hex](/docs/components/hex)
|
|
429
|
+
|
|
430
|
+
Use for addresses and hashes.
|
|
431
|
+
|
|
432
|
+
[ListGroup](/docs/components/list-group)
|
|
433
|
+
|
|
434
|
+
Use for balances and activity.
|
|
435
|
+
|
|
436
|
+
[TokenLogo](/docs/components/token-logo)
|
|
437
|
+
|
|
438
|
+
Use for token icons.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.z_tds_2f_web-iELgRU0{appearance:none}.z_tds_2f_web-iELgRU1{background-color:var(--z-tds_2f_web-color-container-regular,light-dark(var(--z-tds_2f_web-color-neutral-shade-004,#0000000a),var(--z-tds_2f_web-color-neutral-tint-008,#ffffff14)))}.z_tds_2f_web-iELgRU2{border:none}.z_tds_2f_web-iELgRU3{box-sizing:border-box}.z_tds_2f_web-iELgRU4{caret-color:var(--z-tds_2f_web-color-content-primary,light-dark(var(--z-tds_2f_web-color-neutral-100,#000),var(--z-tds_2f_web-color-neutral-000,#fff)))}.z_tds_2f_web-iELgRU5{color:var(--z-tds_2f_web-color-content-primary,light-dark(var(--z-tds_2f_web-color-neutral-100,#000),var(--z-tds_2f_web-color-neutral-000,#fff)))}.z_tds_2f_web-iELgRU6{outline-color:#0000}.z_tds_2f_web-iELgRU7{outline-offset:-1.5px}.z_tds_2f_web-iELgRU8{outline-style:solid}.z_tds_2f_web-iELgRU9{outline-width:1.5px}.z_tds_2f_web-iELgRUa{padding:var(--z-tds_2f_web-spacing-0,0rem)}.z_tds_2f_web-iELgRUb{text-align:center}.z_tds_2f_web-iELgRUc{transition-duration:var(--z-tds_2f_web-transitionDuration-160,.16s)}.z_tds_2f_web-iELgRUd{transition-property:background-color,opacity,outline-color}.z_tds_2f_web-iELgRUe{transition-timing-function:var(--z-tds_2f_web-ease-snappy,cubic-bezier(.23, 1, .32, 1))}.z_tds_2f_web-iELgRUf{&:disabled{opacity:var(--z-tds_2f_web-opacity-disabled,.32)}}.z_tds_2f_web-iELgRUg{&:where(:hover:not(:disabled)){background-color:var(--z-tds_2f_web-color-container-strong,light-dark(var(--z-tds_2f_web-color-neutral-shade-008,#00000014),var(--z-tds_2f_web-color-neutral-tint-016,#ffffff29)))}}.z_tds_2f_web-iELgRUh{&:focus-visible{background-color:var(--z-tds_2f_web-color-background-elevated,light-dark(var(--z-tds_2f_web-color-neutral-000,#fff),#1a1a1a))}}.z_tds_2f_web-iELgRUi{&:focus-visible{outline-color:var(--z-tds_2f_web-color-border-focus,light-dark(var(--z-tds_2f_web-color-neutral-shade-040,#0006),var(--z-tds_2f_web-color-neutral-tint-052,#ffffff85)))}}.z_tds_2f_web-iELgRUj{&[data-invalid],[data-invalid] &{background-color:var(--z-tds_2f_web-color-container-negative,light-dark(var(--z-tds_2f_web-color-accent-alpha-regular-red-100,#eb341714),var(--z-tds_2f_web-color-accent-alpha-regular-red-200,#f55c4529)))}}.z_tds_2f_web-iELgRUk{[data-success] &{
|
|
1
|
+
.z_tds_2f_web-iELgRU0{appearance:none}.z_tds_2f_web-iELgRU1{background-color:var(--z-tds_2f_web-color-container-regular,light-dark(var(--z-tds_2f_web-color-neutral-shade-004,#0000000a),var(--z-tds_2f_web-color-neutral-tint-008,#ffffff14)))}.z_tds_2f_web-iELgRU2{border:none}.z_tds_2f_web-iELgRU3{box-sizing:border-box}.z_tds_2f_web-iELgRU4{caret-color:var(--z-tds_2f_web-color-content-primary,light-dark(var(--z-tds_2f_web-color-neutral-100,#000),var(--z-tds_2f_web-color-neutral-000,#fff)))}.z_tds_2f_web-iELgRU5{color:var(--z-tds_2f_web-color-content-primary,light-dark(var(--z-tds_2f_web-color-neutral-100,#000),var(--z-tds_2f_web-color-neutral-000,#fff)))}.z_tds_2f_web-iELgRU6{outline-color:#0000}.z_tds_2f_web-iELgRU7{outline-offset:-1.5px}.z_tds_2f_web-iELgRU8{outline-style:solid}.z_tds_2f_web-iELgRU9{outline-width:1.5px}.z_tds_2f_web-iELgRUa{padding:var(--z-tds_2f_web-spacing-0,0rem)}.z_tds_2f_web-iELgRUb{text-align:center}.z_tds_2f_web-iELgRUc{transition-duration:var(--z-tds_2f_web-transitionDuration-160,.16s)}.z_tds_2f_web-iELgRUd{transition-property:background-color,opacity,outline-color}.z_tds_2f_web-iELgRUe{transition-timing-function:var(--z-tds_2f_web-ease-snappy,cubic-bezier(.23, 1, .32, 1))}.z_tds_2f_web-iELgRUf{&:disabled{opacity:var(--z-tds_2f_web-opacity-disabled,.32)}}.z_tds_2f_web-iELgRUg{&:where(:hover:not(:disabled)){background-color:var(--z-tds_2f_web-color-container-strong,light-dark(var(--z-tds_2f_web-color-neutral-shade-008,#00000014),var(--z-tds_2f_web-color-neutral-tint-016,#ffffff29)))}}.z_tds_2f_web-iELgRUh{&:focus-visible{background-color:var(--z-tds_2f_web-color-background-elevated,light-dark(var(--z-tds_2f_web-color-neutral-000,#fff),#1a1a1a))}}.z_tds_2f_web-iELgRUi{&:focus-visible{outline-color:var(--z-tds_2f_web-color-border-focus,light-dark(var(--z-tds_2f_web-color-neutral-shade-040,#0006),var(--z-tds_2f_web-color-neutral-tint-052,#ffffff85)))}}.z_tds_2f_web-iELgRUj{&[data-invalid],[data-invalid] &{background-color:var(--z-tds_2f_web-color-container-negative,light-dark(var(--z-tds_2f_web-color-accent-alpha-regular-red-100,#eb341714),var(--z-tds_2f_web-color-accent-alpha-regular-red-200,#f55c4529)))}}.z_tds_2f_web-iELgRUk{[data-success] &{background-color:var(--z-tds_2f_web-color-container-positive,light-dark(var(--z-tds_2f_web-color-accent-alpha-regular-green-100,#13a96314),var(--z-tds_2f_web-color-accent-alpha-regular-green-200,#59e5a429)))}}.z_tds_2f_web-iELgRUl{align-items:center}.z_tds_2f_web-iELgRUm{column-gap:var(--z-tds_2f_web-spacing-8,.5rem)}.z_tds_2f_web-iELgRUn{display:flex}.z_tds_2f_web-iELgRUo{flex-wrap:nowrap}.z_tds_2f_web-iELgRUp{max-width:100%}.z_tds_2f_web-iELgRUq{min-width:var(--z-tds_2f_web-spacing-0,0rem)}.z_tds_2f_web-iELgRUr{&>input{border-radius:var(--z-tds_2f_web-radius-xs,calc(.75rem * var(--tds-corner-scale,1)))}}.z_tds_2f_web-iELgRUs{&>input{flex:auto}}.z_tds_2f_web-iELgRUt{&>input{height:var(--z-tds_2f_web-spacing-56,3.5rem)}}.z_tds_2f_web-iELgRUu{&>input{min-width:var(--z-tds_2f_web-spacing-0,0rem)}}.z_tds_2f_web-iELgRUv{&>input{font-family:var(--z-tds_2f_web-typography-body-b1Strong-fontFamily,var(--z-tds_2f_web-fontFamily-body,Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"))}}.z_tds_2f_web-iELgRUw{&>input{font-size:var(--z-tds_2f_web-typography-body-b1Strong-fontSize,16px)}}.z_tds_2f_web-iELgRUx{&>input{font-weight:var(--z-tds_2f_web-typography-body-b1Strong-fontWeight,500)}}.z_tds_2f_web-iELgRUy{&>input{letter-spacing:var(--z-tds_2f_web-typography-body-b1Strong-letterSpacing,-.18px)}}.z_tds_2f_web-iELgRUz{&>input{line-height:var(--z-tds_2f_web-typography-body-b1Strong-lineHeight,22px)}}.z_tds_2f_web-iELgRU10{&>input{width:var(--z-tds_2f_web-spacing-44,2.75rem)}}.z_tds_2f_web-iELgRU11{&>input:focus-visible{width:calc(2.75rem + 3px)}}.z_tds_2f_web-iELgRU12{&[data-invalid]{animation:z-kid-tds_2f_web_2f_otp_2d_field_2f_nudge .36s var(--z-tds_2f_web-ease-snappy,cubic-bezier(.23, 1, .32, 1))}}@media (prefers-reduced-motion:reduce){.z_tds_2f_web-iELgRU13{&[data-invalid]{animation:none}}}
|
|
@@ -4,7 +4,7 @@ import type * as zyzz from 'zyzz';
|
|
|
4
4
|
/**
|
|
5
5
|
* One-time passcode entry with a slot per character. Slots render by default from `length`.
|
|
6
6
|
* Setting `invalid` fills the slots red and nudges them sideways. Setting `success` fills them
|
|
7
|
-
* green
|
|
7
|
+
* green.
|
|
8
8
|
*
|
|
9
9
|
* Base UI renders a `role="group"` of text inputs that accepts digits by default. Pasting a code
|
|
10
10
|
* into a slot fills it and the slots after it. The first slot carries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtpField.d.ts","sourceRoot":"","sources":["../../../src/web/components/OtpField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA6B,MAAM,OAAO,CAAA;AAC7E,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAA;AAMjC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yBAAiB,QAAQ,CAAC;IACxB;;;;;;OAMG;IACH,SAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,+BAyBrC;IAED,UAAiB,IAAI,CAAC;QACpB,KAAY,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,GACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,GACvC,IAAI,CACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EACxB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,UAAU,GACV,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,OAAO,CACV,GAAG;YAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;SAAE,CAAA;KACvE;IAED;;;OAGG;IACH,SAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,+BAYvC;IAED,UAAiB,KAAK,CAAC;QACrB,KAAY,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;KAC9F;CACF;
|
|
1
|
+
{"version":3,"file":"OtpField.d.ts","sourceRoot":"","sources":["../../../src/web/components/OtpField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA6B,MAAM,OAAO,CAAA;AAC7E,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAA;AAMjC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yBAAiB,QAAQ,CAAC;IACxB;;;;;;OAMG;IACH,SAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,+BAyBrC;IAED,UAAiB,IAAI,CAAC;QACpB,KAAY,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,GACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,GACvC,IAAI,CACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EACxB,cAAc,GACd,YAAY,GACZ,cAAc,GACd,UAAU,GACV,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,gBAAgB,GAChB,UAAU,GACV,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,OAAO,CACV,GAAG;YAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;SAAE,CAAA;KACvE;IAED;;;OAGG;IACH,SAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,+BAYvC;IAED,UAAiB,KAAK,CAAC;QACrB,KAAY,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;KAC9F;CACF;AAaD,kBAAU,MAAM,CAAC;IACR,MAAM,KAAK,gCA6BjB,CAAA;IAEM,MAAM,IAAI,gCA+BhB,CAAA;CACF"}
|
|
@@ -9,7 +9,7 @@ const InvalidContext = createContext(false);
|
|
|
9
9
|
/**
|
|
10
10
|
* One-time passcode entry with a slot per character. Slots render by default from `length`.
|
|
11
11
|
* Setting `invalid` fills the slots red and nudges them sideways. Setting `success` fills them
|
|
12
|
-
* green
|
|
12
|
+
* green.
|
|
13
13
|
*
|
|
14
14
|
* Base UI renders a `role="group"` of text inputs that accepts digits by default. Pasting a code
|
|
15
15
|
* into a slot fills it and the slots after it. The first slot carries
|
|
@@ -55,11 +55,10 @@ export var OtpField;
|
|
|
55
55
|
OtpField.Input = Input;
|
|
56
56
|
})(OtpField || (OtpField = {}));
|
|
57
57
|
const nudge = "z-kid-tds_2f_web_2f_otp_2d_field_2f_nudge";
|
|
58
|
-
const pop = "z-kid-tds_2f_web_2f_otp_2d_field_2f_pop";
|
|
59
58
|
var styles;
|
|
60
59
|
(function (styles) {
|
|
61
|
-
styles.input = /*#__PURE__*/__zyzzProps.create({className:"z_tds_2f_web-iELgRU0 z_tds_2f_web-iELgRU1 z_tds_2f_web-iELgRU2 z_tds_2f_web-iELgRU3 z_tds_2f_web-iELgRU4 z_tds_2f_web-iELgRU5 z_tds_2f_web-iELgRU6 z_tds_2f_web-iELgRU7 z_tds_2f_web-iELgRU8 z_tds_2f_web-iELgRU9 z_tds_2f_web-iELgRUa z_tds_2f_web-iELgRUb z_tds_2f_web-iELgRUc z_tds_2f_web-iELgRUd z_tds_2f_web-iELgRUe z_tds_2f_web-iELgRUf z_tds_2f_web-iELgRUg z_tds_2f_web-iELgRUh z_tds_2f_web-iELgRUi z_tds_2f_web-iELgRUj z_tds_2f_web-iELgRUk
|
|
62
|
-
styles.root = /*#__PURE__*/__zyzzProps.create({className:"z_tds_2f_web-
|
|
60
|
+
styles.input = /*#__PURE__*/__zyzzProps.create({className:"z_tds_2f_web-iELgRU0 z_tds_2f_web-iELgRU1 z_tds_2f_web-iELgRU2 z_tds_2f_web-iELgRU3 z_tds_2f_web-iELgRU4 z_tds_2f_web-iELgRU5 z_tds_2f_web-iELgRU6 z_tds_2f_web-iELgRU7 z_tds_2f_web-iELgRU8 z_tds_2f_web-iELgRU9 z_tds_2f_web-iELgRUa z_tds_2f_web-iELgRUb z_tds_2f_web-iELgRUc z_tds_2f_web-iELgRUd z_tds_2f_web-iELgRUe z_tds_2f_web-iELgRUf z_tds_2f_web-iELgRUg z_tds_2f_web-iELgRUh z_tds_2f_web-iELgRUi z_tds_2f_web-iELgRUj z_tds_2f_web-iELgRUk"});
|
|
61
|
+
styles.root = /*#__PURE__*/__zyzzProps.create({className:"z_tds_2f_web-iELgRUl z_tds_2f_web-iELgRUm z_tds_2f_web-iELgRUn z_tds_2f_web-iELgRUo z_tds_2f_web-iELgRUp z_tds_2f_web-iELgRUq z_tds_2f_web-iELgRUr z_tds_2f_web-iELgRUs z_tds_2f_web-iELgRUt z_tds_2f_web-iELgRUu z_tds_2f_web-iELgRUv z_tds_2f_web-iELgRUw z_tds_2f_web-iELgRUx z_tds_2f_web-iELgRUy z_tds_2f_web-iELgRUz z_tds_2f_web-iELgRU10 z_tds_2f_web-iELgRU11 z_tds_2f_web-iELgRU12 z_tds_2f_web-iELgRU13"});
|
|
63
62
|
})(styles || (styles = {}));
|
|
64
63
|
//# sourceMappingURL=OtpField.js.map
|
|
65
64
|
import './OtpField.css';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OtpField.js","sourceRoot":"","sources":["../../../src/web/components/OtpField.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAA8B,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;AAE3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,KAAW,QAAQ,CAkFxB;AAlFD,WAAiB,QAAQ;IACvB;;;;;;OAMG;IACH,SAAgB,IAAI,CAAC,KAAiB;QACpC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,GAAG,KAAK,EACf,MAAM,EACN,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,GAAG,UAAU,EACd,GAAG,KAAK,CAAA;QAET,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACrC,KAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OACf,UAAU,KACV,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,kBAC1C,OAAO,IAAI,SAAS,oBACnB,EAAE,kBACH,OAAO,IAAI,SAAS,EAClC,MAAM,EAAE,MAAM,YAEb,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAC,KAAK,MAAM,KAAK,CAAI,CAAC,GACnD,GACC,CAC3B,CAAA;IACH,CAAC;IAzBe,SAAA,IAAI,OAyBnB,CAAA;IA4BD;;;OAGG;IACH,SAAgB,KAAK,CAAC,KAAkB;QACtC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAA;QAChD,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;QAE1C,OAAO,CACL,KAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,oBACN,OAAO,IAAI,SAAS,KAC9B,UAAU,KACV,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,kBAC3C,OAAO,IAAI,SAAS,GAClC,CACH,CAAA;IACH,CAAC;IAZe,SAAA,KAAK,QAYpB,CAAA;AAKH,CAAC,EAlFgB,QAAQ,KAAR,QAAQ,QAkFxB;AAED,MAAM,KAAK,GAAG,SAAS,CACrB;IACE,UAAU,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE;IAClD,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE;IAChD,KAAK,EAAE,EAAE,SAAS,EAAE,yBAAyB,EAAE;IAC/C,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE;IAChD,KAAK,EAAE,EAAE,SAAS,EAAE,yBAAyB,EAAE;CAChD,EACD,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAClC,CAAA;AAED,
|
|
1
|
+
{"version":3,"file":"OtpField.js","sourceRoot":"","sources":["../../../src/web/components/OtpField.tsx"],"names":[],"mappings":"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"}
|