@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,377 @@
1
+ # Getting Started
2
+
3
+ Install Tempo Design System and render your first component.
4
+
5
+ ## Overview
6
+
7
+ Tempo Design System is the shared design language of Tempo products. `@tempoxyz/ds` ships it as components and variables for web and React Native.
8
+
9
+ The APIs accept only design system values. Zyzz compiles the components and your styles ahead of time for each platform.
10
+
11
+ ## Agent Prompt
12
+
13
+ Paste this prompt into your coding agent:
14
+
15
+ Read ds.tehq.dev and help me build my project with Tempo Design System.
16
+
17
+ ## Setup
18
+
19
+ ### Install the Library
20
+
21
+ Install `@tempoxyz/ds` and its Zyzz peer.
22
+
23
+ ```sh
24
+ npm install @tempoxyz/ds zyzz
25
+ ```
26
+
27
+ ### Choose Framework
28
+
29
+ Choose a compilation target and a variable mode:
30
+
31
+ * **TDS Variables (Quick):** Uses the components and variables as they ship.
32
+ * **Custom Variables (Advanced):** Extends the TDS variables with app tokens.
33
+
34
+ ### Vite
35
+
36
+ ### Configure Vite
37
+
38
+ Add Zyzz beside the existing framework plugin.
39
+
40
+ ```ts title="vite.config.ts"
41
+ import { defineConfig } from 'vite'
42
+ import { zyzz } from 'zyzz/vite'
43
+
44
+ export default defineConfig({
45
+ plugins: [zyzz()],
46
+ ssr: { noExternal: ['@tempoxyz/ds', 'zyzz'] },
47
+ })
48
+ ```
49
+
50
+ Run the existing dev or build command. The plugin emits the TDS variables, the Inter, Pilat, and JetBrains Mono fonts, and keyframes once, and each component emits its own rules. You import no stylesheet.
51
+
52
+ With `ssr.noExternal`, the plugin reads the library's contracts in a server build.
53
+
54
+ #### TDS Variables (Quick)
55
+
56
+ ### Use a Component
57
+
58
+ Import components from `@tempoxyz/ds`. Style your own markup with TDS tokens through `style`.
59
+
60
+ ```tsx title="Checkout.tsx"
61
+ import { Button, style } from '@tempoxyz/ds'
62
+
63
+ export function Checkout() {
64
+ return (
65
+ <section {...styles.card()}>
66
+ <p>Ready to continue?</p>
67
+ <Button>Continue</Button>
68
+ </section>
69
+ )
70
+ }
71
+
72
+ namespace styles {
73
+ export const card = style({
74
+ backgroundColor: 'background.elevated',
75
+ borderRadius: 'sm',
76
+ color: 'content.primary',
77
+ padding: '24',
78
+ typography: 'body.b2',
79
+ })
80
+ }
81
+ ```
82
+
83
+ Tokens such as `content.primary`, `'24'`, and `body.b2` type-check against the TDS variables. Light and dark values follow the inherited `color-scheme`.
84
+
85
+ #### Custom Variables (Advanced)
86
+
87
+ ### Define Config
88
+
89
+ Extend the TDS variables with app tokens, and export the bound helpers.
90
+
91
+ ```ts title="zyzz.config.ts"
92
+ import { variables } from '@tempoxyz/ds'
93
+ import { Config, Vars } from 'zyzz'
94
+
95
+ export const { style, vars } = Config.create({
96
+ id: 'app',
97
+ vars: Vars.extend(variables, { spacing: { bleed: '-0.75rem' } }, { id: 'app/vars' }),
98
+ })
99
+ ```
100
+
101
+ Place `zyzz.config.ts` at the root of the application source, such as `src/zyzz.config.ts`. The Vite plugin scans its directory for global styles.
102
+
103
+ ### Use a Component
104
+
105
+ Apply `vars()` to the app root. Style your markup with the bound `style` helper, which accepts TDS and app tokens.
106
+
107
+ ```tsx title="Checkout.tsx"
108
+ import { Button } from '@tempoxyz/ds'
109
+ import { style, vars } from './zyzz.config.js'
110
+
111
+ export function App() {
112
+ return (
113
+ <main {...vars()}>
114
+ <Checkout />
115
+ </main>
116
+ )
117
+ }
118
+
119
+ function Checkout() {
120
+ return (
121
+ <section {...styles.card()}>
122
+ <p>Ready to continue?</p>
123
+ <Button>Continue</Button>
124
+ </section>
125
+ )
126
+ }
127
+
128
+ namespace styles {
129
+ export const card = style({
130
+ backgroundColor: 'background.elevated',
131
+ color: 'content.primary',
132
+ marginInline: 'bleed',
133
+ padding: '24',
134
+ })
135
+ }
136
+ ```
137
+
138
+ ### Other Bundlers
139
+
140
+ ### Configure the Bundler
141
+
142
+ Add the matching unplugin adapter to the bundler configuration. Keep the existing TypeScript and JSX transforms.
143
+
144
+ ```ts title="rollup.config.ts"
145
+ import { zyzz } from 'zyzz/unplugin'
146
+
147
+ const plugins = [zyzz.rollup()]
148
+ // Use zyzz.webpack() or zyzz.esbuild() for those bundlers.
149
+ ```
150
+
151
+ Load the emitted stylesheet and script in the document. Adjust the paths to the deployment base.
152
+
153
+ ```html title="index.html"
154
+ <link rel="stylesheet" href="/zyzz.css" />
155
+ <script src="/zyzz.js"></script>
156
+ ```
157
+
158
+ Run the existing build command. [Bundler Setup](https://zyzz.style/docs/api/unplugin) lists the configuration for each bundler.
159
+
160
+ #### TDS Variables (Quick)
161
+
162
+ ### Use a Component
163
+
164
+ Import components from `@tempoxyz/ds`. Style your own markup with TDS tokens through `style`.
165
+
166
+ ```tsx title="Checkout.tsx"
167
+ import { Button, style } from '@tempoxyz/ds'
168
+
169
+ export function Checkout() {
170
+ return (
171
+ <section {...styles.card()}>
172
+ <p>Ready to continue?</p>
173
+ <Button>Continue</Button>
174
+ </section>
175
+ )
176
+ }
177
+
178
+ namespace styles {
179
+ export const card = style({
180
+ backgroundColor: 'background.elevated',
181
+ borderRadius: 'sm',
182
+ color: 'content.primary',
183
+ padding: '24',
184
+ typography: 'body.b2',
185
+ })
186
+ }
187
+ ```
188
+
189
+ Tokens such as `content.primary`, `'24'`, and `body.b2` type-check against the TDS variables. Light and dark values follow the inherited `color-scheme`.
190
+
191
+ #### Custom Variables (Advanced)
192
+
193
+ ### Define Config
194
+
195
+ Extend the TDS variables with app tokens, and export the bound helpers.
196
+
197
+ ```ts title="zyzz.config.ts"
198
+ import { variables } from '@tempoxyz/ds'
199
+ import { Config, Vars } from 'zyzz'
200
+
201
+ export const { style, vars } = Config.create({
202
+ id: 'app',
203
+ vars: Vars.extend(variables, { spacing: { bleed: '-0.75rem' } }, { id: 'app/vars' }),
204
+ })
205
+ ```
206
+
207
+ ### Use a Component
208
+
209
+ Apply `vars()` to the app root. Style your markup with the bound `style` helper, which accepts TDS and app tokens.
210
+
211
+ ```tsx title="Checkout.tsx"
212
+ import { Button } from '@tempoxyz/ds'
213
+ import { style, vars } from './zyzz.config.js'
214
+
215
+ export function App() {
216
+ return (
217
+ <main {...vars()}>
218
+ <Checkout />
219
+ </main>
220
+ )
221
+ }
222
+
223
+ function Checkout() {
224
+ return (
225
+ <section {...styles.card()}>
226
+ <p>Ready to continue?</p>
227
+ <Button>Continue</Button>
228
+ </section>
229
+ )
230
+ }
231
+
232
+ namespace styles {
233
+ export const card = style({
234
+ backgroundColor: 'background.elevated',
235
+ color: 'content.primary',
236
+ marginInline: 'bleed',
237
+ padding: '24',
238
+ })
239
+ }
240
+ ```
241
+
242
+ ### React Native
243
+
244
+ ### Configure Metro
245
+
246
+ Install the React Native peers, then wrap the Expo Metro configuration with Zyzz. Keep the existing transformer and Expo settings.
247
+
248
+ ```sh
249
+ npx expo install expo-haptics react-native-reanimated react-native-svg react-native-worklets
250
+ ```
251
+
252
+ ```ts title="metro.config.ts"
253
+ import { getDefaultConfig } from 'expo/metro-config'
254
+ import { zyzz } from 'zyzz/metro'
255
+
256
+ export default zyzz(getDefaultConfig(import.meta.dirname), {
257
+ fonts: { 'HB Set v0.96': 'HBSet', Inter: 'Inter', 'JetBrains Mono': 'JetBrainsMono' },
258
+ units: { px: 1, rem: 16 },
259
+ })
260
+ ```
261
+
262
+ `fonts` maps each Figma family to a font that your app registers. The library bundles no font files. To preview with iOS system fonts, map a family to `System`.
263
+
264
+ #### TDS Variables (Quick)
265
+
266
+ ### Use a Component
267
+
268
+ Render components from `@tempoxyz/ds/mobile` below a `Provider` at the app root. Styles resolve against the nearest `Provider` above them.
269
+
270
+ ```tsx title="App.tsx"
271
+ import { Button, Provider, style } from '@tempoxyz/ds/mobile'
272
+ import { Text, View } from 'react-native'
273
+
274
+ export function App() {
275
+ return (
276
+ <Provider colorScheme="system">
277
+ <Checkout />
278
+ </Provider>
279
+ )
280
+ }
281
+
282
+ function Checkout() {
283
+ return (
284
+ <View {...styles.card()}>
285
+ <Text {...styles.label()}>Ready to continue?</Text>
286
+ <Button onPress={() => {}}>Continue</Button>
287
+ </View>
288
+ )
289
+ }
290
+
291
+ namespace styles {
292
+ export const card = style({
293
+ backgroundColor: 'background.elevated',
294
+ gap: '12',
295
+ paddingHorizontal: '20',
296
+ paddingVertical: '16',
297
+ })
298
+
299
+ export const label = style({ color: 'content.primary', typography: 'body.b2' })
300
+ }
301
+ ```
302
+
303
+ `colorScheme="system"` follows the device setting. To override it, pass `light` or `dark`.
304
+
305
+ #### Custom Variables (Advanced)
306
+
307
+ ### Define Config
308
+
309
+ Define app tokens in sets named `base` and `inverse`. Every Zyzz config reads the set that `Provider` selects. Reference TDS values through `variables` and `inverse`.
310
+
311
+ ```ts title="zyzz.config.ts"
312
+ import { inverse as tdsInverse, variables } from '@tempoxyz/ds/mobile'
313
+ import { Vars } from 'zyzz'
314
+ import { defineConfig } from 'zyzz/react-native'
315
+
316
+ export const base = Vars.define({
317
+ color: {
318
+ caption: { light: variables.color.content.secondary, dark: variables.color.content.secondary },
319
+ },
320
+ })
321
+
322
+ export const inverse = Vars.extend(base, {
323
+ color: {
324
+ caption: {
325
+ light: tdsInverse.color.content.secondary,
326
+ dark: tdsInverse.color.content.secondary,
327
+ },
328
+ },
329
+ })
330
+
331
+ export const { style } = defineConfig({ defaultVars: 'base', id: 'app', vars: { base, inverse } })
332
+ ```
333
+
334
+ Zyzz extensions only replace existing tokens. Put app tokens in your own sets, not in extensions of the TDS sets.
335
+
336
+ ### Use a Component
337
+
338
+ Render TDS components below a `Provider`. Style your own elements with the bound `style` helper.
339
+
340
+ ```tsx title="App.tsx"
341
+ import { Button, Provider } from '@tempoxyz/ds/mobile'
342
+ import { Text, View } from 'react-native'
343
+ import { style } from './zyzz.config.js'
344
+
345
+ export function App() {
346
+ return (
347
+ <Provider colorScheme="system">
348
+ <View>
349
+ <Text {...styles.caption()}>Ready to continue?</Text>
350
+ <Button onPress={() => {}}>Continue</Button>
351
+ </View>
352
+ </Provider>
353
+ )
354
+ }
355
+
356
+ namespace styles {
357
+ export const caption = style({ color: 'caption' })
358
+ }
359
+ ```
360
+
361
+ ## Next Steps
362
+
363
+ [Build a Layout](/docs/components/app-shell)
364
+
365
+ Place a sticky sidebar beside the main content column.
366
+
367
+ [Trigger Actions](/docs/components/button)
368
+
369
+ Submit forms, send payments, and run other actions.
370
+
371
+ [Collect TextInput](/docs/components/field)
372
+
373
+ Link labels, descriptions, and errors to form controls.
374
+
375
+ [Show Feedback](/docs/components/toast)
376
+
377
+ Confirm results with brief notifications.