@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,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](stack.md) for a vertical column.
|
|
131
|
+
* Use [Grid](grid.md) to align items in rows and columns.
|
|
132
|
+
* Use `Frame.Actions` of [Frame](frame.md) 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](stack.md)
|
|
220
|
+
|
|
221
|
+
Use for vertical spacing.
|
|
222
|
+
|
|
223
|
+
[Button](button.md)
|
|
224
|
+
|
|
225
|
+
Use for ordering actions in a row.
|
|
226
|
+
|
|
227
|
+
[Badge](badge.md)
|
|
228
|
+
|
|
229
|
+
Use for status labels.
|
|
230
|
+
|
|
231
|
+
[Layout](../foundations/layout.md)
|
|
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](surface.md) for a card. Its `size` sets padding and corner radius.
|
|
104
|
+
* Use [Container](container.md) for page gutters that grow with the viewport.
|
|
105
|
+
* Use the `gap` of [Stack](stack.md), [Inline](inline.md), or [Grid](grid.md) for space between siblings.
|
|
106
|
+
|
|
107
|
+
### Don't Double the Padding
|
|
108
|
+
|
|
109
|
+
[Surface](surface.md), [Dialog](dialog.md), and `AppShell.Main` of [AppShell](app-shell.md) 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](surface.md).
|
|
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](surface.md)
|
|
216
|
+
|
|
217
|
+
Use for padded cards.
|
|
218
|
+
|
|
219
|
+
[Stack](stack.md)
|
|
220
|
+
|
|
221
|
+
Use for space between siblings.
|
|
222
|
+
|
|
223
|
+
[Layout](../foundations/layout.md)
|
|
224
|
+
|
|
225
|
+
Covers the spacing scale.
|