@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.
Files changed (128) hide show
  1. package/dist/docs/AGENTS.md +9 -0
  2. package/dist/docs/components/accordion.md +489 -0
  3. package/dist/docs/components/address-card.md +147 -0
  4. package/dist/docs/components/agent-logo.md +194 -0
  5. package/dist/docs/components/alert-dialog.md +631 -0
  6. package/dist/docs/components/alert.md +448 -0
  7. package/dist/docs/components/amount-input.md +305 -0
  8. package/dist/docs/components/amount.md +794 -0
  9. package/dist/docs/components/app-shell.md +559 -0
  10. package/dist/docs/components/asset-chip.md +294 -0
  11. package/dist/docs/components/autocomplete.md +619 -0
  12. package/dist/docs/components/avatar.md +321 -0
  13. package/dist/docs/components/badge.md +339 -0
  14. package/dist/docs/components/badged-logo.md +116 -0
  15. package/dist/docs/components/banner.md +379 -0
  16. package/dist/docs/components/bar-chart.md +208 -0
  17. package/dist/docs/components/breadcrumbs.md +380 -0
  18. package/dist/docs/components/button-group.md +286 -0
  19. package/dist/docs/components/button.md +650 -0
  20. package/dist/docs/components/calendar.md +375 -0
  21. package/dist/docs/components/callout.md +96 -0
  22. package/dist/docs/components/checkbox-group.md +521 -0
  23. package/dist/docs/components/checkbox.md +467 -0
  24. package/dist/docs/components/choice-group.md +516 -0
  25. package/dist/docs/components/choicebox.md +641 -0
  26. package/dist/docs/components/code.md +100 -0
  27. package/dist/docs/components/combobox.md +939 -0
  28. package/dist/docs/components/container.md +257 -0
  29. package/dist/docs/components/copy-button.md +642 -0
  30. package/dist/docs/components/date-picker.md +514 -0
  31. package/dist/docs/components/dialog.md +1332 -0
  32. package/dist/docs/components/drawer.md +966 -0
  33. package/dist/docs/components/empty.md +340 -0
  34. package/dist/docs/components/field.md +570 -0
  35. package/dist/docs/components/fieldset.md +398 -0
  36. package/dist/docs/components/frame.md +434 -0
  37. package/dist/docs/components/gauge.md +299 -0
  38. package/dist/docs/components/get-started-visual.md +117 -0
  39. package/dist/docs/components/grid.md +288 -0
  40. package/dist/docs/components/hero-visual.md +155 -0
  41. package/dist/docs/components/hex.md +487 -0
  42. package/dist/docs/components/icon-tile.md +292 -0
  43. package/dist/docs/components/identicon.md +371 -0
  44. package/dist/docs/components/inline.md +233 -0
  45. package/dist/docs/components/inset.md +225 -0
  46. package/dist/docs/components/kbd.md +423 -0
  47. package/dist/docs/components/list-group.md +981 -0
  48. package/dist/docs/components/loading-dots.md +237 -0
  49. package/dist/docs/components/menu.md +934 -0
  50. package/dist/docs/components/native-select.md +204 -0
  51. package/dist/docs/components/network-logo.md +248 -0
  52. package/dist/docs/components/number-field.md +543 -0
  53. package/dist/docs/components/otp-field.md +616 -0
  54. package/dist/docs/components/pagination.md +516 -0
  55. package/dist/docs/components/popover.md +544 -0
  56. package/dist/docs/components/progress.md +388 -0
  57. package/dist/docs/components/qr.md +314 -0
  58. package/dist/docs/components/radio-group.md +528 -0
  59. package/dist/docs/components/secret-value.md +406 -0
  60. package/dist/docs/components/select.md +751 -0
  61. package/dist/docs/components/separator.md +379 -0
  62. package/dist/docs/components/sidebar-menu.md +922 -0
  63. package/dist/docs/components/skeleton.md +517 -0
  64. package/dist/docs/components/slider.md +539 -0
  65. package/dist/docs/components/snippet.md +424 -0
  66. package/dist/docs/components/spinner.md +216 -0
  67. package/dist/docs/components/split-bar.md +139 -0
  68. package/dist/docs/components/split-button.md +464 -0
  69. package/dist/docs/components/stack.md +299 -0
  70. package/dist/docs/components/status-chip.md +226 -0
  71. package/dist/docs/components/status-indicator.md +119 -0
  72. package/dist/docs/components/status-row.md +174 -0
  73. package/dist/docs/components/stepper.md +451 -0
  74. package/dist/docs/components/success-hero.md +157 -0
  75. package/dist/docs/components/surface.md +639 -0
  76. package/dist/docs/components/switch.md +472 -0
  77. package/dist/docs/components/table.md +967 -0
  78. package/dist/docs/components/tabs.md +627 -0
  79. package/dist/docs/components/tempo-logo.md +185 -0
  80. package/dist/docs/components/text-input.md +624 -0
  81. package/dist/docs/components/textarea.md +352 -0
  82. package/dist/docs/components/toast.md +535 -0
  83. package/dist/docs/components/token-logo.md +371 -0
  84. package/dist/docs/components/token.md +247 -0
  85. package/dist/docs/components/tooltip.md +490 -0
  86. package/dist/docs/components/verification-code.md +116 -0
  87. package/dist/docs/components/visual.md +249 -0
  88. package/dist/docs/components.md +203 -0
  89. package/dist/docs/foundations/accessibility.md +377 -0
  90. package/dist/docs/foundations/agents.md +150 -0
  91. package/dist/docs/foundations/color.md +522 -0
  92. package/dist/docs/foundations/content/tone.md +194 -0
  93. package/dist/docs/foundations/content/voice.md +194 -0
  94. package/dist/docs/foundations/content/writing-style.md +406 -0
  95. package/dist/docs/foundations/iconography.md +282 -0
  96. package/dist/docs/foundations/intent.md +360 -0
  97. package/dist/docs/foundations/layout.md +508 -0
  98. package/dist/docs/foundations/linter.md +296 -0
  99. package/dist/docs/foundations/motion.md +151 -0
  100. package/dist/docs/foundations/radius-and-padding.md +86 -0
  101. package/dist/docs/foundations/typography.md +266 -0
  102. package/dist/docs/index.md +137 -0
  103. package/dist/docs/introduction/faq.md +132 -0
  104. package/dist/docs/introduction/getting-started.md +377 -0
  105. package/dist/docs/patterns/blockchain-values.md +709 -0
  106. package/dist/docs/patterns/dashboards.md +638 -0
  107. package/dist/docs/patterns/destructive-actions.md +626 -0
  108. package/dist/docs/patterns/empty-states.md +612 -0
  109. package/dist/docs/patterns/errors-and-validation.md +808 -0
  110. package/dist/docs/patterns/feedback-and-status.md +518 -0
  111. package/dist/docs/patterns/forms.md +679 -0
  112. package/dist/docs/patterns/loading.md +630 -0
  113. package/dist/docs/patterns/navigation.md +397 -0
  114. package/dist/docs/patterns/payments.md +765 -0
  115. package/dist/docs/patterns/responsive-layout.md +997 -0
  116. package/dist/docs/patterns/tables-and-lists.md +964 -0
  117. package/dist/docs/products/tempo-console.md +671 -0
  118. package/dist/docs/products/tempo-performance.md +437 -0
  119. package/dist/docs/products/tempo-wallet.md +438 -0
  120. package/dist/web/components/OtpField.css +1 -1
  121. package/dist/web/components/OtpField.d.ts +1 -1
  122. package/dist/web/components/OtpField.d.ts.map +1 -1
  123. package/dist/web/components/OtpField.js +3 -4
  124. package/dist/web/components/OtpField.js.map +1 -1
  125. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  126. package/dist/web/index.js.zyzz.json +1 -1
  127. package/package.json +1 -1
  128. package/src/web/components/OtpField.tsx +2 -24
@@ -0,0 +1,233 @@
1
+ # Inline
2
+
3
+ Lays out children in a horizontal row.
4
+
5
+ [View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/Inline.tsx)
6
+
7
+ ## Overview
8
+
9
+ Inline applies a spacing token `gap` between its children and centers them vertically by default.
10
+
11
+ ## Examples
12
+
13
+ ### Basic
14
+
15
+ ```tsx
16
+ import { Inline, style } from '@tempoxyz/ds'
17
+
18
+ export function Demo() {
19
+ return (
20
+ <Inline gap="8">
21
+ <span {...styles.chip()}>Public</span>
22
+ <span {...styles.chip()}>Private</span>
23
+ </Inline>
24
+ )
25
+ }
26
+
27
+ namespace styles {
28
+ export const chip = style({
29
+ backgroundColor: 'container.regular',
30
+ borderRadius: 'full',
31
+ cornerShape: 'round',
32
+ paddingBlock: '4',
33
+ paddingInline: '12',
34
+ })
35
+ }
36
+ ```
37
+
38
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inline/Basic.tsx)
39
+
40
+ ### Justify
41
+
42
+ Set `justify` to `start` (default), `center`, `end`, or `between`.
43
+
44
+ ```tsx
45
+ import { Inline, Stack, style } from '@tempoxyz/ds'
46
+
47
+ export const fill = true
48
+ export function Demo() {
49
+ return (
50
+ <Stack gap="16">
51
+ {(['start', 'center', 'end', 'between'] as const).map((justify) => (
52
+ <Inline justify={justify} key={justify}>
53
+ <span>{justify}</span>
54
+ <Inline gap="8">
55
+ <span {...styles.chip()}>Public</span>
56
+ <span {...styles.chip()}>Private</span>
57
+ </Inline>
58
+ </Inline>
59
+ ))}
60
+ </Stack>
61
+ )
62
+ }
63
+
64
+ namespace styles {
65
+ export const chip = style({
66
+ backgroundColor: 'container.regular',
67
+ borderRadius: 'full',
68
+ cornerShape: 'round',
69
+ paddingBlock: '4',
70
+ paddingInline: '12',
71
+ })
72
+ }
73
+ ```
74
+
75
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inline/Justify.tsx)
76
+
77
+ ### Wrap
78
+
79
+ Set `wrap` to reflow items onto new lines instead of overflowing.
80
+
81
+ ```tsx
82
+ import { Inline, style } from '@tempoxyz/ds'
83
+
84
+ export function Demo() {
85
+ return (
86
+ <Inline gap="8" wrap>
87
+ {['Stablecoins', 'Payments', 'Payroll', 'Remittance', 'Treasury', 'Settlement'].map(
88
+ (label) => (
89
+ <span key={label} {...styles.chip()}>
90
+ {label}
91
+ </span>
92
+ ),
93
+ )}
94
+ </Inline>
95
+ )
96
+ }
97
+
98
+ namespace styles {
99
+ export const chip = style({
100
+ backgroundColor: 'container.regular',
101
+ borderRadius: 'full',
102
+ cornerShape: 'round',
103
+ paddingBlock: '4',
104
+ paddingInline: '12',
105
+ })
106
+ }
107
+ ```
108
+
109
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inline/Wrap.tsx)
110
+
111
+ ## Anatomy
112
+
113
+ Import the component and assemble its parts.
114
+
115
+ ```tsx
116
+ import { Inline } from '@tempoxyz/ds'
117
+
118
+ <Inline />
119
+ ```
120
+
121
+ ## Guidelines
122
+
123
+ ### When to Use
124
+
125
+ * Place related items in a row, such as buttons, badges, or an icon beside its label.
126
+ * Put a label and its value on one line, such as Network fee and 0.01 USDC.
127
+
128
+ ### When Not to Use
129
+
130
+ * Use [Stack](/docs/components/stack) for a vertical column.
131
+ * Use [Grid](/docs/components/grid) to align items in rows and columns.
132
+ * Use `Frame.Actions` of [Frame](/docs/components/frame) for the actions at the bottom of a card or dialog.
133
+
134
+ ### Set Wrap When Content Varies
135
+
136
+ If a row can outgrow a 320px screen, such as badges, filters, or button groups, set `wrap`.
137
+
138
+ **Do:** Set `wrap` so badges reflow onto a new line.
139
+
140
+ ```tsx
141
+ /**
142
+ * Do example for "Set Wrap When Content Varies" on the Inline page.
143
+ * Set `wrap` so badges reflow onto a new line.
144
+ * @module
145
+ */
146
+ import { Badge, Inline } from '@tempoxyz/ds'
147
+
148
+ const labels = ['Payments', 'Payouts', 'Webhooks', 'Fee payer', 'Treasury', 'Settlement']
149
+
150
+ /** Renders the static preview, which the guideline card shows inert. */
151
+ export function Demo() {
152
+ return (
153
+ <Inline gap="8" wrap>
154
+ {labels.map((label) => (
155
+ <Badge key={label}>{label}</Badge>
156
+ ))}
157
+ </Inline>
158
+ )
159
+ }
160
+ ```
161
+
162
+ **Don't:** Let a row of badges run past its container.
163
+
164
+ ```tsx
165
+ /**
166
+ * Don't example for "Set Wrap When Content Varies" on the Inline page.
167
+ * Don't let a row of badges run past its container.
168
+ * @module
169
+ */
170
+ import { Badge, Inline, style } from '@tempoxyz/ds'
171
+
172
+ const labels = ['Payments', 'Payouts', 'Webhooks', 'Fee payer', 'Treasury', 'Settlement']
173
+
174
+ /** Renders the static preview, which the guideline card shows inert. */
175
+ export function Demo() {
176
+ return (
177
+ <div {...styles.frame()}>
178
+ <Inline gap="8">
179
+ {labels.map((label) => (
180
+ <Badge key={label}>{label}</Badge>
181
+ ))}
182
+ </Inline>
183
+ </div>
184
+ )
185
+ }
186
+
187
+ namespace styles {
188
+ export const frame = style({ width: '100% !custom' })
189
+ }
190
+ ```
191
+
192
+ ### Align by Content
193
+
194
+ * **Center (align="center"):** The default, for icons, buttons, and badges.
195
+ * **Baseline (align="baseline"):** For text in different sizes, such as an amount and its symbol.
196
+ * **Between (justify="between"):** Pushes a value or action to the far end of the row.
197
+
198
+ ### Pick a Gap From the Scale
199
+
200
+ * **Tags and Icons (8):** The default, for badges and icons with labels.
201
+ * **Buttons (12):** Between buttons.
202
+ * **Clusters (24 or 32):** Between separate clusters in a toolbar.
203
+
204
+ ## Accessibility
205
+
206
+ Inline has no role, name, or keyboard behavior.
207
+
208
+ ### Semantics
209
+
210
+ * **Default Element (div):** Has no role. Screen readers pass over it.
211
+ * **Semantic Element (render):** If the row holds items or links, render a list or nav, such as `render={<ul />}`.
212
+
213
+ ### Your Responsibilities
214
+
215
+ * **Match DOM and Visual Order (Tab):** Don't reorder children with CSS or reversed directions. Reading and focus follow the DOM ([SC 1.3.2](https://www.w3.org/WAI/WCAG22/Understanding/meaningful-sequence.html), [SC 2.4.3](https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html)).
216
+
217
+ ## Related
218
+
219
+ [Stack](/docs/components/stack)
220
+
221
+ Use for vertical spacing.
222
+
223
+ [Button](/docs/components/button)
224
+
225
+ Use for ordering actions in a row.
226
+
227
+ [Badge](/docs/components/badge)
228
+
229
+ Use for status labels.
230
+
231
+ [Layout](/docs/foundations/layout)
232
+
233
+ Covers the spacing scale.
@@ -0,0 +1,225 @@
1
+ # Inset
2
+
3
+ Pads content with spacing tokens.
4
+
5
+ [View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/Inset.tsx)
6
+
7
+ ## Overview
8
+
9
+ Inset pads its content on every side or per axis, and adds no other styles.
10
+
11
+ ## Examples
12
+
13
+ ### Basic
14
+
15
+ ```tsx
16
+ import { Inset, Stack, style } from '@tempoxyz/ds'
17
+
18
+ export function Demo() {
19
+ return (
20
+ <Inset space="24" {...styles.card()}>
21
+ <Stack gap="12">
22
+ <span>Card content</span>
23
+ <span>Second line</span>
24
+ </Stack>
25
+ </Inset>
26
+ )
27
+ }
28
+
29
+ namespace styles {
30
+ export const card = style({ backgroundColor: 'background.elevated', borderRadius: 'sm' })
31
+ }
32
+ ```
33
+
34
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inset/Basic.tsx)
35
+
36
+ ### Space
37
+
38
+ Set `space` to pad every side.
39
+
40
+ ```tsx
41
+ import { Inline, Inset, style } from '@tempoxyz/ds'
42
+
43
+ export function Demo() {
44
+ return (
45
+ <Inline align="start" gap="16" wrap>
46
+ {(['8', '16', '24', '32'] as const).map((space) => (
47
+ <Inset key={space} space={space} {...styles.card()}>
48
+ space {space}
49
+ </Inset>
50
+ ))}
51
+ </Inline>
52
+ )
53
+ }
54
+
55
+ namespace styles {
56
+ export const card = style({ backgroundColor: 'background.elevated', borderRadius: 'sm' })
57
+ }
58
+ ```
59
+
60
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inset/Space.tsx)
61
+
62
+ ### Block
63
+
64
+ Set `block` or `inline` to override `space` on one axis.
65
+
66
+ ```tsx
67
+ import { Inset, style } from '@tempoxyz/ds'
68
+
69
+ export function Demo() {
70
+ return (
71
+ <Inset block="24" inline="32" {...styles.card()}>
72
+ Block 6, inline 8
73
+ </Inset>
74
+ )
75
+ }
76
+
77
+ namespace styles {
78
+ export const card = style({ backgroundColor: 'background.elevated', borderRadius: 'sm' })
79
+ }
80
+ ```
81
+
82
+ [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Inset/Block.tsx)
83
+
84
+ ## Anatomy
85
+
86
+ Import the component and assemble its parts.
87
+
88
+ ```tsx
89
+ import { Inset } from '@tempoxyz/ds'
90
+
91
+ <Inset />
92
+ ```
93
+
94
+ ## Guidelines
95
+
96
+ ### When to Use
97
+
98
+ * Pad a region with no padding of its own, such as a custom panel or a band of page content.
99
+ * Pad each axis differently, such as `block="16"` and `inline="24"` around a toolbar.
100
+
101
+ ### When Not to Use
102
+
103
+ * Use [Surface](/docs/components/surface) for a card. Its `size` sets padding and corner radius.
104
+ * Use [Container](/docs/components/container) for page gutters that grow with the viewport.
105
+ * Use the `gap` of [Stack](/docs/components/stack), [Inline](/docs/components/inline), or [Grid](/docs/components/grid) for space between siblings.
106
+
107
+ ### Don't Double the Padding
108
+
109
+ [Surface](/docs/components/surface), [Dialog](/docs/components/dialog), and `AppShell.Main` of [AppShell](/docs/components/app-shell) already pad their content.
110
+
111
+ **Do:** Place content directly in a Surface, so it lines up with the cards beside it.
112
+
113
+ ```tsx
114
+ /**
115
+ * Do example for "Don't Double the Padding" on the Inset page.
116
+ * Place content directly in a Surface, so it lines up with the cards beside it.
117
+ * @module
118
+ */
119
+ import { style, Surface } from '@tempoxyz/ds'
120
+
121
+ /** Renders the static preview, which the guideline card shows inert. */
122
+ export function Demo() {
123
+ return (
124
+ <div {...styles.canvas()}>
125
+ <Surface size="medium">
126
+ <Surface.Title>Balance</Surface.Title>
127
+ <Surface.Description>1,250.00 USDC</Surface.Description>
128
+ </Surface>
129
+ <Surface size="medium">
130
+ <Surface.Title>Activity</Surface.Title>
131
+ <Surface.Description>3 payments today</Surface.Description>
132
+ </Surface>
133
+ </div>
134
+ )
135
+ }
136
+
137
+ namespace styles {
138
+ export const canvas = style({
139
+ backgroundColor: 'background.primary',
140
+ borderRadius: 'sm',
141
+ boxSizing: 'border-box',
142
+ display: 'flex',
143
+ flexDirection: 'column',
144
+ gap: '12',
145
+ padding: '12',
146
+ width: '100% !custom',
147
+ })
148
+ }
149
+ ```
150
+
151
+ **Don't:** Add an Inset inside a Surface, which moves its content off the shared edge.
152
+
153
+ ```tsx
154
+ /**
155
+ * Don't example for "Don't Double the Padding" on the Inset page.
156
+ * Don't add an Inset inside a Surface, which moves its content off the shared edge.
157
+ * @module
158
+ */
159
+ import { Inset, style, Surface } from '@tempoxyz/ds'
160
+
161
+ /** Renders the static preview, which the guideline card shows inert. */
162
+ export function Demo() {
163
+ return (
164
+ <div {...styles.canvas()}>
165
+ <Surface size="medium">
166
+ <Surface.Title>Balance</Surface.Title>
167
+ <Surface.Description>1,250.00 USDC</Surface.Description>
168
+ </Surface>
169
+ <Surface size="medium">
170
+ <Inset space="16">
171
+ <Surface.Title>Activity</Surface.Title>
172
+ <Surface.Description>3 payments today</Surface.Description>
173
+ </Inset>
174
+ </Surface>
175
+ </div>
176
+ )
177
+ }
178
+
179
+ namespace styles {
180
+ export const canvas = style({
181
+ backgroundColor: 'background.primary',
182
+ borderRadius: 'sm',
183
+ boxSizing: 'border-box',
184
+ display: 'flex',
185
+ flexDirection: 'column',
186
+ gap: '12',
187
+ padding: '12',
188
+ width: '100% !custom',
189
+ })
190
+ }
191
+ ```
192
+
193
+ ### Match Surface Padding
194
+
195
+ Use `16` or `24` for most regions, so they line up with a `medium` or `large` [Surface](/docs/components/surface).
196
+
197
+ * **Medium (16):** Matches a `medium` Surface, such as a dashboard tile.
198
+ * **Large (24):** Matches a `large` Surface, such as a page card.
199
+
200
+ ## Accessibility
201
+
202
+ An inset adds padding only. It has no role, name, or keyboard behavior.
203
+
204
+ ### Semantics
205
+
206
+ * **Default Element (div):** Has no role. Screen readers pass over it.
207
+ * **Semantic Element (render):** Render a section or aside when needed, such as `render= {<section aria-labelledby="…" />}`.
208
+
209
+ ### Your Responsibilities
210
+
211
+ Keep large inline padding off narrow viewports, so content [reflows](https://www.w3.org/WAI/WCAG22/Understanding/reflow.html) at 320px without horizontal scrolling.
212
+
213
+ ## Related
214
+
215
+ [Surface](/docs/components/surface)
216
+
217
+ Use for padded cards.
218
+
219
+ [Stack](/docs/components/stack)
220
+
221
+ Use for space between siblings.
222
+
223
+ [Layout](/docs/foundations/layout)
224
+
225
+ Covers the spacing scale.