@tempoxyz/ds 0.3.11 → 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 +8 -5
- package/dist/docs/index.md +143 -135
- package/dist/docs/marketing/introduction/getting-started.md +241 -0
- package/dist/docs/{components → product/components}/accordion.md +8 -8
- package/dist/docs/{components → product/components}/address-card.md +5 -5
- package/dist/docs/{components → product/components}/agent-logo.md +5 -5
- package/dist/docs/{components → product/components}/alert-dialog.md +11 -11
- package/dist/docs/{components → product/components}/alert.md +11 -11
- package/dist/docs/{components → product/components}/amount-input.md +13 -13
- package/dist/docs/{components → product/components}/amount.md +8 -8
- package/dist/docs/{components → product/components}/app-shell.md +13 -13
- package/dist/docs/{components → product/components}/asset-chip.md +11 -11
- package/dist/docs/{components → product/components}/autocomplete.md +10 -9
- package/dist/docs/{components → product/components}/avatar.md +8 -8
- package/dist/docs/{components → product/components}/badge.md +9 -9
- package/dist/docs/{components → product/components}/badged-logo.md +6 -6
- package/dist/docs/{components → product/components}/banner.md +8 -8
- package/dist/docs/{components → product/components}/bar-chart.md +7 -7
- package/dist/docs/{components → product/components}/breadcrumbs.md +8 -8
- package/dist/docs/{components → product/components}/button-group.md +8 -8
- package/dist/docs/{components → product/components}/button.md +17 -17
- package/dist/docs/{components → product/components}/calendar.md +8 -8
- package/dist/docs/{components → product/components}/callout.md +5 -5
- package/dist/docs/{components → product/components}/checkbox-group.md +13 -13
- package/dist/docs/{components → product/components}/checkbox.md +12 -12
- package/dist/docs/{components → product/components}/choice-group.md +14 -14
- package/dist/docs/{components → product/components}/choicebox.md +9 -9
- package/dist/docs/{components → product/components}/code.md +5 -5
- package/dist/docs/{components → product/components}/combobox.md +9 -9
- package/dist/docs/{components → product/components}/container.md +7 -7
- package/dist/docs/{components → product/components}/copy-button.md +13 -13
- package/dist/docs/{components → product/components}/date-picker.md +11 -11
- package/dist/docs/{components → product/components}/dialog.md +17 -17
- package/dist/docs/{components → product/components}/drawer.md +11 -11
- package/dist/docs/{components → product/components}/empty.md +9 -9
- package/dist/docs/{components → product/components}/field.md +14 -14
- package/dist/docs/{components → product/components}/fieldset.md +6 -6
- package/dist/docs/{components → product/components}/frame.md +9 -9
- package/dist/docs/{components → product/components}/gauge.md +7 -7
- package/dist/docs/{components → product/components}/get-started-visual.md +4 -4
- package/dist/docs/{components → product/components}/grid.md +7 -7
- package/dist/docs/{components → product/components}/hero-visual.md +4 -4
- package/dist/docs/{components → product/components}/hex.md +9 -9
- package/dist/docs/{components → product/components}/icon-tile.md +8 -8
- package/dist/docs/{components → product/components}/identicon.md +7 -7
- package/dist/docs/{components → product/components}/inline.md +7 -7
- package/dist/docs/{components → product/components}/inset.md +8 -8
- package/dist/docs/{components → product/components}/kbd.md +8 -8
- package/dist/docs/{components → product/components}/list-group.md +24 -24
- package/dist/docs/{components → product/components}/loading-dots.md +8 -8
- package/dist/docs/{components → product/components}/menu.md +14 -14
- package/dist/docs/{components → product/components}/native-select.md +7 -7
- package/dist/docs/{components → product/components}/network-logo.md +7 -7
- package/dist/docs/{components → product/components}/number-field.md +8 -8
- package/dist/docs/{components → product/components}/otp-field.md +9 -9
- package/dist/docs/{components → product/components}/pagination.md +8 -8
- package/dist/docs/{components → product/components}/popover.md +11 -11
- package/dist/docs/{components → product/components}/progress.md +10 -10
- package/dist/docs/{components → product/components}/qr.md +8 -8
- package/dist/docs/{components → product/components}/radio-group.md +10 -10
- package/dist/docs/{components → product/components}/secret-value.md +8 -8
- package/dist/docs/{components → product/components}/select.md +13 -13
- package/dist/docs/{components → product/components}/separator.md +7 -7
- package/dist/docs/{components → product/components}/sidebar-menu.md +11 -11
- package/dist/docs/{components → product/components}/skeleton.md +9 -9
- package/dist/docs/{components → product/components}/slider.md +8 -8
- package/dist/docs/{components → product/components}/snippet.md +10 -10
- package/dist/docs/{components → product/components}/spinner.md +12 -12
- package/dist/docs/{components → product/components}/split-bar.md +5 -5
- package/dist/docs/{components → product/components}/split-button.md +11 -11
- package/dist/docs/{components → product/components}/stack.md +8 -8
- package/dist/docs/{components → product/components}/status-chip.md +7 -7
- package/dist/docs/{components → product/components}/status-indicator.md +6 -6
- package/dist/docs/{components → product/components}/status-row.md +7 -7
- package/dist/docs/{components → product/components}/stepper.md +9 -9
- package/dist/docs/{components → product/components}/success-hero.md +5 -5
- package/dist/docs/{components → product/components}/surface.md +11 -11
- package/dist/docs/{components → product/components}/switch.md +11 -11
- package/dist/docs/{components → product/components}/table.md +16 -16
- package/dist/docs/{components → product/components}/tabs.md +11 -11
- package/dist/docs/{components → product/components}/tempo-logo.md +4 -4
- package/dist/docs/{components → product/components}/text-input.md +14 -14
- package/dist/docs/{components → product/components}/textarea.md +7 -7
- package/dist/docs/{components → product/components}/toast.md +11 -11
- package/dist/docs/{components → product/components}/token-logo.md +16 -16
- package/dist/docs/{components → product/components}/token.md +10 -10
- package/dist/docs/{components → product/components}/tooltip.md +11 -11
- package/dist/docs/{components → product/components}/verification-code.md +4 -4
- package/dist/docs/{components → product/components}/visual.md +5 -5
- package/dist/docs/product/components.md +203 -0
- package/dist/docs/{foundations → product/foundations}/accessibility.md +16 -16
- package/dist/docs/{foundations → product/foundations}/agents.md +17 -17
- package/dist/docs/{foundations → product/foundations}/color.md +7 -7
- package/dist/docs/{foundations → product/foundations}/content/tone.md +7 -7
- package/dist/docs/{foundations → product/foundations}/content/voice.md +2 -2
- package/dist/docs/{foundations → product/foundations}/content/writing-style.md +8 -8
- package/dist/docs/{foundations → product/foundations}/iconography.md +11 -11
- package/dist/docs/{foundations → product/foundations}/intent.md +28 -28
- package/dist/docs/{foundations → product/foundations}/layout.md +22 -22
- package/dist/docs/product/foundations/linter.md +496 -0
- package/dist/docs/{foundations → product/foundations}/motion.md +7 -7
- package/dist/docs/{foundations → product/foundations}/radius-and-padding.md +3 -3
- package/dist/docs/{foundations → product/foundations}/typography.md +4 -4
- package/dist/docs/{introduction → product/introduction}/faq.md +22 -21
- package/dist/docs/{introduction → product/introduction}/getting-started.md +4 -4
- package/dist/docs/{patterns → product/patterns}/blockchain-values.md +20 -20
- package/dist/docs/{patterns → product/patterns}/dashboards.md +28 -28
- package/dist/docs/{patterns → product/patterns}/destructive-actions.md +16 -16
- package/dist/docs/{patterns → product/patterns}/empty-states.md +14 -14
- package/dist/docs/{patterns → product/patterns}/errors-and-validation.md +23 -23
- package/dist/docs/{patterns → product/patterns}/feedback-and-status.md +31 -31
- package/dist/docs/{patterns → product/patterns}/forms.md +24 -24
- package/dist/docs/{patterns → product/patterns}/loading.md +19 -19
- package/dist/docs/{patterns → product/patterns}/navigation.md +23 -23
- package/dist/docs/{patterns → product/patterns}/payments.md +20 -20
- package/dist/docs/{patterns → product/patterns}/responsive-layout.md +23 -23
- package/dist/docs/{patterns → product/patterns}/tables-and-lists.md +19 -19
- package/dist/docs/{products → product/products}/tempo-console.md +12 -12
- package/dist/docs/{products → product/products}/tempo-performance.md +11 -11
- package/dist/docs/{products → product/products}/tempo-wallet.md +12 -12
- 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
- package/dist/docs/components.md +0 -203
- package/dist/docs/foundations/linter.md +0 -296
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
Install the Marketing system and style your first section.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Marketing pages present Tempo to the public. They explain what Tempo is, who it is for, and why it matters, and lead the reader to a next step. `@tempoxyz/ds/marketing` ships the variables and authoring helpers for these pages.
|
|
8
|
+
|
|
9
|
+
* **Home Page (tempo.xyz):** Introduces Tempo and routes each reader onward.
|
|
10
|
+
* **Campaigns (Landing pages):** Carry one message to one audience at a time.
|
|
11
|
+
* **Launches (Announcements):** Present a new feature, partner, or upgrade.
|
|
12
|
+
* **Events (Event pages):** Show the agenda, the speakers, and registration.
|
|
13
|
+
|
|
14
|
+
## Agent Prompt
|
|
15
|
+
|
|
16
|
+
Paste this prompt into your coding agent:
|
|
17
|
+
|
|
18
|
+
Read ds.tehq.dev/marketing/introduction/getting-started and help me build a Tempo marketing page
|
|
19
|
+
with Tempo Design System.
|
|
20
|
+
|
|
21
|
+
## Setup
|
|
22
|
+
|
|
23
|
+
### Install the Library
|
|
24
|
+
|
|
25
|
+
Install `@tempoxyz/ds` and its Zyzz peer. Marketing ships from the same package.
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npm install @tempoxyz/ds zyzz
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Choose Framework
|
|
32
|
+
|
|
33
|
+
Choose a compilation target and a variable mode:
|
|
34
|
+
|
|
35
|
+
* **TDS Variables (Quick):** Uses the Marketing variables as they ship.
|
|
36
|
+
* **Custom Variables (Advanced):** Extends the Marketing variables with site tokens.
|
|
37
|
+
|
|
38
|
+
### Vite
|
|
39
|
+
|
|
40
|
+
### Configure Vite
|
|
41
|
+
|
|
42
|
+
Add Zyzz beside the existing framework plugin.
|
|
43
|
+
|
|
44
|
+
```ts title="vite.config.ts"
|
|
45
|
+
import { defineConfig } from 'vite'
|
|
46
|
+
import { zyzz } from 'zyzz/vite'
|
|
47
|
+
|
|
48
|
+
export default defineConfig({
|
|
49
|
+
plugins: [zyzz()],
|
|
50
|
+
ssr: { noExternal: ['@tempoxyz/ds', 'zyzz'] },
|
|
51
|
+
})
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Run the existing dev or build command. The plugin emits the Marketing variables, the Inter, Pilat, and JetBrains Mono fonts, and keyframes once, and each module emits its own rules. You import no stylesheet.
|
|
55
|
+
|
|
56
|
+
With `ssr.noExternal`, the plugin reads the library's contracts in a server build.
|
|
57
|
+
|
|
58
|
+
#### TDS Variables (Quick)
|
|
59
|
+
|
|
60
|
+
### Style a Section
|
|
61
|
+
|
|
62
|
+
Import `style` from `@tempoxyz/ds/marketing`, and style your markup with Marketing tokens.
|
|
63
|
+
|
|
64
|
+
```tsx title="Hero.tsx"
|
|
65
|
+
import { style } from '@tempoxyz/ds/marketing'
|
|
66
|
+
|
|
67
|
+
export function Hero() {
|
|
68
|
+
return (
|
|
69
|
+
<section {...styles.hero()}>
|
|
70
|
+
<h1 {...styles.title()}>Payments at internet speed</h1>
|
|
71
|
+
<p {...styles.lead()}>Move money anywhere in under a second.</p>
|
|
72
|
+
</section>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
namespace styles {
|
|
77
|
+
export const hero = style({
|
|
78
|
+
backgroundColor: 'background.primary',
|
|
79
|
+
paddingBlock: '64',
|
|
80
|
+
paddingInline: '24',
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
export const lead = style({ color: 'content.secondary', typography: 'body.b1' })
|
|
84
|
+
|
|
85
|
+
export const title = style({ color: 'content.primary', typography: 'display.d1' })
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Tokens such as `content.primary`, `'64'`, and `display.d1` type-check against the Marketing variables. Light and dark values follow the inherited `color-scheme`.
|
|
90
|
+
|
|
91
|
+
#### Custom Variables (Advanced)
|
|
92
|
+
|
|
93
|
+
### Define Config
|
|
94
|
+
|
|
95
|
+
Extend the Marketing variables with site tokens, and export the bound helpers.
|
|
96
|
+
|
|
97
|
+
```ts title="zyzz.config.ts"
|
|
98
|
+
import { variables } from '@tempoxyz/ds/marketing'
|
|
99
|
+
import { Config, Vars } from 'zyzz'
|
|
100
|
+
|
|
101
|
+
export const { style, vars } = Config.create({
|
|
102
|
+
id: 'site',
|
|
103
|
+
vars: Vars.extend(variables, { spacing: { section: '7.5rem' } }, { id: 'site/vars' }),
|
|
104
|
+
})
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Place `zyzz.config.ts` at the root of the site source, such as `src/zyzz.config.ts`. The Vite plugin scans its directory for global styles.
|
|
108
|
+
|
|
109
|
+
### Style a Section
|
|
110
|
+
|
|
111
|
+
Apply `vars()` to the site root. Style your markup with the bound `style` helper, which accepts Marketing and site tokens.
|
|
112
|
+
|
|
113
|
+
```tsx title="Hero.tsx"
|
|
114
|
+
import { style, vars } from './zyzz.config.js'
|
|
115
|
+
|
|
116
|
+
export function Site() {
|
|
117
|
+
return (
|
|
118
|
+
<main {...vars()}>
|
|
119
|
+
<Hero />
|
|
120
|
+
</main>
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function Hero() {
|
|
125
|
+
return (
|
|
126
|
+
<section {...styles.hero()}>
|
|
127
|
+
<h1 {...styles.title()}>Payments at internet speed</h1>
|
|
128
|
+
</section>
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
namespace styles {
|
|
133
|
+
export const hero = style({ paddingBlock: 'section', paddingInline: '24' })
|
|
134
|
+
|
|
135
|
+
export const title = style({ color: 'content.primary', typography: 'display.d1' })
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Other Bundlers
|
|
140
|
+
|
|
141
|
+
### Configure the Bundler
|
|
142
|
+
|
|
143
|
+
Add the matching unplugin adapter to the bundler configuration. Keep the existing TypeScript and JSX transforms.
|
|
144
|
+
|
|
145
|
+
```ts title="rollup.config.ts"
|
|
146
|
+
import { zyzz } from 'zyzz/unplugin'
|
|
147
|
+
|
|
148
|
+
const plugins = [zyzz.rollup()]
|
|
149
|
+
// Use zyzz.webpack() or zyzz.esbuild() for those bundlers.
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Load the emitted stylesheet and script in the document. Adjust the paths to the deployment base.
|
|
153
|
+
|
|
154
|
+
```html title="index.html"
|
|
155
|
+
<link rel="stylesheet" href="/zyzz.css" />
|
|
156
|
+
<script src="/zyzz.js"></script>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Run the existing build command. [Bundler Setup](https://zyzz.style/docs/api/unplugin) lists the configuration for each bundler.
|
|
160
|
+
|
|
161
|
+
#### TDS Variables (Quick)
|
|
162
|
+
|
|
163
|
+
### Style a Section
|
|
164
|
+
|
|
165
|
+
Import `style` from `@tempoxyz/ds/marketing`, and style your markup with Marketing tokens.
|
|
166
|
+
|
|
167
|
+
```tsx title="Hero.tsx"
|
|
168
|
+
import { style } from '@tempoxyz/ds/marketing'
|
|
169
|
+
|
|
170
|
+
export function Hero() {
|
|
171
|
+
return (
|
|
172
|
+
<section {...styles.hero()}>
|
|
173
|
+
<h1 {...styles.title()}>Payments at internet speed</h1>
|
|
174
|
+
<p {...styles.lead()}>Move money anywhere in under a second.</p>
|
|
175
|
+
</section>
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
namespace styles {
|
|
180
|
+
export const hero = style({
|
|
181
|
+
backgroundColor: 'background.primary',
|
|
182
|
+
paddingBlock: '64',
|
|
183
|
+
paddingInline: '24',
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
export const lead = style({ color: 'content.secondary', typography: 'body.b1' })
|
|
187
|
+
|
|
188
|
+
export const title = style({ color: 'content.primary', typography: 'display.d1' })
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Tokens such as `content.primary`, `'64'`, and `display.d1` type-check against the Marketing variables. Light and dark values follow the inherited `color-scheme`.
|
|
193
|
+
|
|
194
|
+
#### Custom Variables (Advanced)
|
|
195
|
+
|
|
196
|
+
### Define Config
|
|
197
|
+
|
|
198
|
+
Extend the Marketing variables with site tokens, and export the bound helpers.
|
|
199
|
+
|
|
200
|
+
```ts title="zyzz.config.ts"
|
|
201
|
+
import { variables } from '@tempoxyz/ds/marketing'
|
|
202
|
+
import { Config, Vars } from 'zyzz'
|
|
203
|
+
|
|
204
|
+
export const { style, vars } = Config.create({
|
|
205
|
+
id: 'site',
|
|
206
|
+
vars: Vars.extend(variables, { spacing: { section: '7.5rem' } }, { id: 'site/vars' }),
|
|
207
|
+
})
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Style a Section
|
|
211
|
+
|
|
212
|
+
Apply `vars()` to the site root. Style your markup with the bound `style` helper, which accepts Marketing and site tokens.
|
|
213
|
+
|
|
214
|
+
```tsx title="Hero.tsx"
|
|
215
|
+
import { style, vars } from './zyzz.config.js'
|
|
216
|
+
|
|
217
|
+
export function Site() {
|
|
218
|
+
return (
|
|
219
|
+
<main {...vars()}>
|
|
220
|
+
<Hero />
|
|
221
|
+
</main>
|
|
222
|
+
)
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function Hero() {
|
|
226
|
+
return (
|
|
227
|
+
<section {...styles.hero()}>
|
|
228
|
+
<h1 {...styles.title()}>Payments at internet speed</h1>
|
|
229
|
+
</section>
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
namespace styles {
|
|
234
|
+
export const hero = style({ paddingBlock: 'section', paddingInline: '24' })
|
|
235
|
+
|
|
236
|
+
export const title = style({ color: 'content.primary', typography: 'display.d1' })
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
> [!NOTE]
|
|
241
|
+
> The Marketing variables change as the Marketing designs define their own values. Marketing ships no components yet.
|
|
@@ -162,10 +162,10 @@ import { Accordion } from '@tempoxyz/ds'
|
|
|
162
162
|
|
|
163
163
|
### When Not to Use
|
|
164
164
|
|
|
165
|
-
* Use [Tabs](
|
|
166
|
-
* Use [ListGroup](
|
|
167
|
-
* Use [Stepper](
|
|
168
|
-
* If most people need the content, keep it visible in a [Surface](
|
|
165
|
+
* Use [Tabs](tabs.md) to switch between views of equal weight, such as Balances and Activity.
|
|
166
|
+
* Use [ListGroup](list-group.md) for facts people check at a glance, such as the amount and fee of a payment.
|
|
167
|
+
* Use [Stepper](stepper.md) for steps people complete in order.
|
|
168
|
+
* If most people need the content, keep it visible in a [Surface](surface.md), such as the amount and fee on a payment review.
|
|
169
169
|
|
|
170
170
|
### Summarize the Panel in the Trigger
|
|
171
171
|
|
|
@@ -472,18 +472,18 @@ The arrow keys do not move focus between triggers.
|
|
|
472
472
|
|
|
473
473
|
## Related
|
|
474
474
|
|
|
475
|
-
[Tabs](
|
|
475
|
+
[Tabs](tabs.md)
|
|
476
476
|
|
|
477
477
|
Use for switching between views.
|
|
478
478
|
|
|
479
|
-
[ListGroup](
|
|
479
|
+
[ListGroup](list-group.md)
|
|
480
480
|
|
|
481
481
|
Use for expanding a detail under one row.
|
|
482
482
|
|
|
483
|
-
[Stepper](
|
|
483
|
+
[Stepper](stepper.md)
|
|
484
484
|
|
|
485
485
|
Use for sequential steps.
|
|
486
486
|
|
|
487
|
-
[Surface](
|
|
487
|
+
[Surface](surface.md)
|
|
488
488
|
|
|
489
489
|
Use for content that stays visible.
|
|
@@ -90,8 +90,8 @@ import { AddressCard } from '@tempoxyz/ds'
|
|
|
90
90
|
|
|
91
91
|
### When Not to Use
|
|
92
92
|
|
|
93
|
-
* Use [Hex](
|
|
94
|
-
* Use [Qr](
|
|
93
|
+
* Use [Hex](hex.md) for an address inside a row or a sentence.
|
|
94
|
+
* Use [Qr](qr.md) alone for a code that encodes something other than an address.
|
|
95
95
|
|
|
96
96
|
### List Only the Accepted Networks
|
|
97
97
|
|
|
@@ -134,14 +134,14 @@ The card renders a `<div>` with no role. Screen readers read the full address, t
|
|
|
134
134
|
|
|
135
135
|
## Related
|
|
136
136
|
|
|
137
|
-
[Hex](
|
|
137
|
+
[Hex](hex.md)
|
|
138
138
|
|
|
139
139
|
Use for an address inside a row or a sentence.
|
|
140
140
|
|
|
141
|
-
[Qr](
|
|
141
|
+
[Qr](qr.md)
|
|
142
142
|
|
|
143
143
|
Use for a QR code of another value.
|
|
144
144
|
|
|
145
|
-
[AssetChip](
|
|
145
|
+
[AssetChip](asset-chip.md)
|
|
146
146
|
|
|
147
147
|
Use for the chips of supported assets.
|
|
@@ -117,8 +117,8 @@ import { AgentLogo } from '@tempoxyz/ds'
|
|
|
117
117
|
|
|
118
118
|
### When Not to Use
|
|
119
119
|
|
|
120
|
-
* Use [Avatar](
|
|
121
|
-
* Use [TokenLogo](
|
|
120
|
+
* Use [Avatar](avatar.md) for a person or an account.
|
|
121
|
+
* Use [TokenLogo](token-logo.md) for a token, and [NetworkLogo](network-logo.md) for a network.
|
|
122
122
|
|
|
123
123
|
### Name the Agent
|
|
124
124
|
|
|
@@ -181,14 +181,14 @@ An agent logo renders a `<span>` that is hidden from screen readers by default.
|
|
|
181
181
|
|
|
182
182
|
## Related
|
|
183
183
|
|
|
184
|
-
[Avatar](
|
|
184
|
+
[Avatar](avatar.md)
|
|
185
185
|
|
|
186
186
|
Use for people and accounts.
|
|
187
187
|
|
|
188
|
-
[ListGroup](
|
|
188
|
+
[ListGroup](list-group.md)
|
|
189
189
|
|
|
190
190
|
Use for lists of agents.
|
|
191
191
|
|
|
192
|
-
[BarChart](
|
|
192
|
+
[BarChart](bar-chart.md)
|
|
193
193
|
|
|
194
194
|
Use for the spend of each agent over time.
|
|
@@ -6,7 +6,7 @@ Asks you to confirm a critical action before it happens.
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
A modal confirmation that blocks the page until the user decides. It never closes on an outside press. It takes the parts and the `small` size of a [Dialog](
|
|
9
|
+
A modal confirmation that blocks the page until the user decides. It never closes on an outside press. It takes the parts and the `small` size of a [Dialog](dialog.md). Reserve it for decisions that need an explicit answer.
|
|
10
10
|
|
|
11
11
|
## Examples
|
|
12
12
|
|
|
@@ -73,10 +73,10 @@ import { AlertDialog, ButtonGroup } from '@tempoxyz/ds'
|
|
|
73
73
|
|
|
74
74
|
### When Not to Use
|
|
75
75
|
|
|
76
|
-
* Use a [Dialog](
|
|
77
|
-
* For reversible actions, such as archiving an address, act at once and offer Undo in a [Toast](
|
|
78
|
-
* Use an [Alert](
|
|
79
|
-
* Use a [Toast](
|
|
76
|
+
* Use a [Dialog](dialog.md) for a task with fields, or to review a payment before sending it.
|
|
77
|
+
* For reversible actions, such as archiving an address, act at once and offer Undo in a [Toast](toast.md). The toast dismisses itself, so keep another way to restore the item.
|
|
78
|
+
* Use an [Alert](alert.md) or [Banner](banner.md) for a warning that needs no decision.
|
|
79
|
+
* Use a [Toast](toast.md) to report that an action finished.
|
|
80
80
|
|
|
81
81
|
### Focus the Safe Action
|
|
82
82
|
|
|
@@ -606,26 +606,26 @@ Follows the [WAI-ARIA alert dialog pattern](https://www.w3.org/WAI/ARIA/apg/patt
|
|
|
606
606
|
|
|
607
607
|
## Related
|
|
608
608
|
|
|
609
|
-
[Dialog](
|
|
609
|
+
[Dialog](dialog.md)
|
|
610
610
|
|
|
611
611
|
Use for focused tasks with fields.
|
|
612
612
|
|
|
613
|
-
[Button](
|
|
613
|
+
[Button](button.md)
|
|
614
614
|
|
|
615
615
|
Use for each action in the footer.
|
|
616
616
|
|
|
617
|
-
[ButtonGroup](
|
|
617
|
+
[ButtonGroup](button-group.md)
|
|
618
618
|
|
|
619
619
|
Use for the Cancel and confirm actions.
|
|
620
620
|
|
|
621
|
-
[Menu](
|
|
621
|
+
[Menu](menu.md)
|
|
622
622
|
|
|
623
623
|
Use for opening a confirmation from a destructive item.
|
|
624
624
|
|
|
625
|
-
[Toast](
|
|
625
|
+
[Toast](toast.md)
|
|
626
626
|
|
|
627
627
|
Use for Undo after reversible actions.
|
|
628
628
|
|
|
629
|
-
[Destructive Actions](
|
|
629
|
+
[Destructive Actions](../patterns/destructive-actions.md)
|
|
630
630
|
|
|
631
631
|
Covers deleting and revoking.
|
|
@@ -169,11 +169,11 @@ import { Alert } from '@tempoxyz/ds'
|
|
|
169
169
|
|
|
170
170
|
### When Not to Use
|
|
171
171
|
|
|
172
|
-
* Use [Banner](
|
|
173
|
-
* Use [Toast](
|
|
174
|
-
* If an action needs a decision before it continues, use [AlertDialog](
|
|
175
|
-
* Use `Field.Error` from [Field](
|
|
176
|
-
* Use [Badge](
|
|
172
|
+
* Use [Banner](banner.md) for a message about the whole product or page, such as an outage.
|
|
173
|
+
* Use [Toast](toast.md) to confirm that an action finished, such as Payment sent.
|
|
174
|
+
* If an action needs a decision before it continues, use [AlertDialog](alert-dialog.md).
|
|
175
|
+
* Use `Field.Error` from [Field](field.md) for a validation message on one input.
|
|
176
|
+
* Use [Badge](badge.md) for a one-word status on a table row or card, such as Pending.
|
|
177
177
|
|
|
178
178
|
### Choose an Intent by Severity
|
|
179
179
|
|
|
@@ -239,7 +239,7 @@ export function Demo() {
|
|
|
239
239
|
|
|
240
240
|
### Place It Beside What It Describes
|
|
241
241
|
|
|
242
|
-
Remove the alert when its condition ends, such as when fees return to normal. In a [Dialog](
|
|
242
|
+
Remove the alert when its condition ends, such as when fees return to normal. In a [Dialog](dialog.md), show one alert at full width, below the input it describes.
|
|
243
243
|
|
|
244
244
|
**Do:** Put the alert directly above the form it describes, or directly below its control.
|
|
245
245
|
|
|
@@ -427,22 +427,22 @@ An alert is a live region whose role depends on `intent`. It does not move focus
|
|
|
427
427
|
|
|
428
428
|
## Related
|
|
429
429
|
|
|
430
|
-
[Banner](
|
|
430
|
+
[Banner](banner.md)
|
|
431
431
|
|
|
432
432
|
Use for a message about the whole page.
|
|
433
433
|
|
|
434
|
-
[Toast](
|
|
434
|
+
[Toast](toast.md)
|
|
435
435
|
|
|
436
436
|
Use for confirming a finished action.
|
|
437
437
|
|
|
438
|
-
[Field](
|
|
438
|
+
[Field](field.md)
|
|
439
439
|
|
|
440
440
|
Use for validation messages on an input.
|
|
441
441
|
|
|
442
|
-
[Errors and Validation](
|
|
442
|
+
[Errors and Validation](../patterns/errors-and-validation.md)
|
|
443
443
|
|
|
444
444
|
Covers reporting failures.
|
|
445
445
|
|
|
446
|
-
[Feedback and Status](
|
|
446
|
+
[Feedback and Status](../patterns/feedback-and-status.md)
|
|
447
447
|
|
|
448
448
|
Covers choosing a message component.
|
|
@@ -14,7 +14,7 @@ An amount input is a filled card with the label, the amount in heading-size digi
|
|
|
14
14
|
|
|
15
15
|
### Basic
|
|
16
16
|
|
|
17
|
-
Place the `Field.Label`, a [Token](
|
|
17
|
+
Place the `Field.Label`, a [Token](token.md), and a `Field.Description` inside `AmountInput.Root`. They take their own rows above and below the amount.
|
|
18
18
|
|
|
19
19
|
```tsx
|
|
20
20
|
import { AmountInput, Field, style, Token } from '@tempoxyz/ds'
|
|
@@ -61,16 +61,16 @@ import { AmountInput, Token } from '@tempoxyz/ds'
|
|
|
61
61
|
|
|
62
62
|
### When Not to Use
|
|
63
63
|
|
|
64
|
-
* Use [NumberField](
|
|
65
|
-
* Use [TextInput](
|
|
66
|
-
* Use [OtpField](
|
|
67
|
-
* Use [Amount](
|
|
64
|
+
* Use [NumberField](number-field.md) for whole quantities adjusted in steps, such as webhook retries.
|
|
65
|
+
* Use [TextInput](text-input.md) for identifiers with digits, such as a 0x address or a bank account number.
|
|
66
|
+
* Use [OtpField](otp-field.md) for one-time verification codes.
|
|
67
|
+
* Use [Amount](amount.md) to show a read-only value, such as a balance or a network fee.
|
|
68
68
|
|
|
69
69
|
### Name the Token Beside the Digits
|
|
70
70
|
|
|
71
|
-
Put a [Token](
|
|
71
|
+
Put a [Token](token.md) after `AmountInput.Control`. Give it `readOnly` when the token is fixed, and pass it to a picker trigger's `render` when the token can change.
|
|
72
72
|
|
|
73
|
-
**Do:** Name the token beside the amount with a [Token](
|
|
73
|
+
**Do:** Name the token beside the amount with a [Token](token.md).
|
|
74
74
|
|
|
75
75
|
```tsx
|
|
76
76
|
/**
|
|
@@ -252,7 +252,7 @@ namespace styles {
|
|
|
252
252
|
|
|
253
253
|
### Stack Two Cards for a Conversion
|
|
254
254
|
|
|
255
|
-
For a conversion, place a From card and a To card one above the other, with a small arrow [Button](
|
|
255
|
+
For a conversion, place a From card and a To card one above the other, with a small arrow [Button](button.md) between them that swaps the two.
|
|
256
256
|
|
|
257
257
|
## Content
|
|
258
258
|
|
|
@@ -284,22 +284,22 @@ The ignored keystrokes have no announcement. State the accepted format, such as
|
|
|
284
284
|
|
|
285
285
|
## Related
|
|
286
286
|
|
|
287
|
-
[Amount](
|
|
287
|
+
[Amount](amount.md)
|
|
288
288
|
|
|
289
289
|
Use for displaying amounts.
|
|
290
290
|
|
|
291
|
-
[Field](
|
|
291
|
+
[Field](field.md)
|
|
292
292
|
|
|
293
293
|
Use for the label, balance, and error.
|
|
294
294
|
|
|
295
|
-
[NumberField](
|
|
295
|
+
[NumberField](number-field.md)
|
|
296
296
|
|
|
297
297
|
Use for stepped quantities.
|
|
298
298
|
|
|
299
|
-
[Token](
|
|
299
|
+
[Token](token.md)
|
|
300
300
|
|
|
301
301
|
Use for the token pill beside the amount.
|
|
302
302
|
|
|
303
|
-
[Payments](
|
|
303
|
+
[Payments](../patterns/payments.md)
|
|
304
304
|
|
|
305
305
|
Covers send, review, and confirmation flows.
|
|
@@ -235,8 +235,8 @@ import { Amount } from '@tempoxyz/ds'
|
|
|
235
235
|
|
|
236
236
|
### When Not to Use
|
|
237
237
|
|
|
238
|
-
* Use [AmountInput](
|
|
239
|
-
* Use `Table.Cell` with `numeric` in a [Table](
|
|
238
|
+
* Use [AmountInput](amount-input.md) when people enter an amount.
|
|
239
|
+
* Use `Table.Cell` with `numeric` in a [Table](table.md) for counts and metrics without a unit, such as TPS or block height.
|
|
240
240
|
|
|
241
241
|
### Always Show the Unit
|
|
242
242
|
|
|
@@ -769,26 +769,26 @@ Renders a `<span>` with no role. Screen readers read the formatted text as writt
|
|
|
769
769
|
|
|
770
770
|
## Related
|
|
771
771
|
|
|
772
|
-
[AmountInput](
|
|
772
|
+
[AmountInput](amount-input.md)
|
|
773
773
|
|
|
774
774
|
Use for entering amounts.
|
|
775
775
|
|
|
776
|
-
[TokenLogo](
|
|
776
|
+
[TokenLogo](token-logo.md)
|
|
777
777
|
|
|
778
778
|
Use for the token icon beside an amount.
|
|
779
779
|
|
|
780
|
-
[Table](
|
|
780
|
+
[Table](table.md)
|
|
781
781
|
|
|
782
782
|
Use for laying out amounts.
|
|
783
783
|
|
|
784
|
-
[ListGroup](
|
|
784
|
+
[ListGroup](list-group.md)
|
|
785
785
|
|
|
786
786
|
Use for laying out amounts.
|
|
787
787
|
|
|
788
|
-
[Payments](
|
|
788
|
+
[Payments](../patterns/payments.md)
|
|
789
789
|
|
|
790
790
|
Covers send and review screens.
|
|
791
791
|
|
|
792
|
-
[Blockchain Values](
|
|
792
|
+
[Blockchain Values](../patterns/blockchain-values.md)
|
|
793
793
|
|
|
794
794
|
Covers token amounts and fees.
|
|
@@ -179,14 +179,14 @@ import { AppShell } from '@tempoxyz/ds'
|
|
|
179
179
|
### When to Use
|
|
180
180
|
|
|
181
181
|
* Frame a product with persistent navigation, such as Tempo Console or the web wallet. Render it once, in the root layout.
|
|
182
|
-
* Pair a [SidebarMenu](
|
|
182
|
+
* Pair a [SidebarMenu](sidebar-menu.md) with a content column of tables, cards, or settings.
|
|
183
183
|
|
|
184
184
|
### When Not to Use
|
|
185
185
|
|
|
186
|
-
* Use [Container](
|
|
187
|
-
* Use [Dialog](
|
|
188
|
-
* Use [Drawer](
|
|
189
|
-
* Use [Frame](
|
|
186
|
+
* Use [Container](container.md) for pages without persistent navigation, such as sign-in, onboarding, or a public receipt.
|
|
187
|
+
* Use [Dialog](dialog.md), or a full-screen flow in a [Container](container.md), for focused tasks such as Send payment.
|
|
188
|
+
* Use [Drawer](drawer.md) for a details or filter panel that opens on demand. The shell's drawer holds only primary navigation.
|
|
189
|
+
* Use [Frame](frame.md) for a header, body, and footer inside a card or popup.
|
|
190
190
|
|
|
191
191
|
### Plan for Each Layout
|
|
192
192
|
|
|
@@ -292,7 +292,7 @@ Keep the header and footer short so the menu keeps most of the height. Set `--si
|
|
|
292
292
|
|
|
293
293
|
### Choose the Bottom Bar Items
|
|
294
294
|
|
|
295
|
-
Wherever the drawer replaces the sidebar, a bottom bar repeats the [SidebarMenu](
|
|
295
|
+
Wherever the drawer replaces the sidebar, a bottom bar repeats the [SidebarMenu](sidebar-menu.md) items that set `tabBar`, in sidebar order, and ends with the menu button. Keep the rest in the drawer.
|
|
296
296
|
|
|
297
297
|
* **Tab (tabBar="tab"):** Shows the icon in the tab bar pill. Choose up to three top destinations.
|
|
298
298
|
* **Action (tabBar="action"):** Shows the icon in a floating button beside the pill. Choose one main action.
|
|
@@ -308,7 +308,7 @@ Wherever the drawer replaces the sidebar, a bottom bar repeats the [SidebarMenu]
|
|
|
308
308
|
|
|
309
309
|
`AppShell.Title` renders the page's `h1` in the header bar across the top of the content column. Keep one primary action in the header.
|
|
310
310
|
|
|
311
|
-
**Do:** Put the title first, then page actions, such as a `small` [Button](
|
|
311
|
+
**Do:** Put the title first, then page actions, such as a `small` [Button](button.md).
|
|
312
312
|
|
|
313
313
|
```tsx
|
|
314
314
|
/**
|
|
@@ -497,7 +497,7 @@ namespace styles {
|
|
|
497
497
|
|
|
498
498
|
## Content
|
|
499
499
|
|
|
500
|
-
* Match `AppShell.Title` to the label of the active [SidebarMenu](
|
|
500
|
+
* Match `AppShell.Title` to the label of the active [SidebarMenu](sidebar-menu.md) item, such as API keys.
|
|
501
501
|
* Keep titles short enough to share the header row with its actions at 360px.
|
|
502
502
|
|
|
503
503
|
## Accessibility
|
|
@@ -538,22 +538,22 @@ Provides the page landmarks and the `h1`. Below 1024px, the sidebar drawer follo
|
|
|
538
538
|
|
|
539
539
|
## Related
|
|
540
540
|
|
|
541
|
-
[SidebarMenu](
|
|
541
|
+
[SidebarMenu](sidebar-menu.md)
|
|
542
542
|
|
|
543
543
|
Use for the navigation inside the sidebar.
|
|
544
544
|
|
|
545
|
-
[Container](
|
|
545
|
+
[Container](container.md)
|
|
546
546
|
|
|
547
547
|
Use for pages without a sidebar.
|
|
548
548
|
|
|
549
|
-
[Drawer](
|
|
549
|
+
[Drawer](drawer.md)
|
|
550
550
|
|
|
551
551
|
Use for panels that open on demand.
|
|
552
552
|
|
|
553
|
-
[Responsive Layout](
|
|
553
|
+
[Responsive Layout](../patterns/responsive-layout.md)
|
|
554
554
|
|
|
555
555
|
Covers adapting pages across breakpoints.
|
|
556
556
|
|
|
557
|
-
[Navigation](
|
|
557
|
+
[Navigation](../patterns/navigation.md)
|
|
558
558
|
|
|
559
559
|
Covers choosing between navigation components.
|