@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.
Files changed (210) hide show
  1. package/README.md +7 -6
  2. package/dist/docs/AGENTS.md +12 -0
  3. package/dist/docs/index.md +145 -0
  4. package/dist/docs/marketing/introduction/getting-started.md +241 -0
  5. package/dist/docs/product/components/accordion.md +489 -0
  6. package/dist/docs/product/components/address-card.md +147 -0
  7. package/dist/docs/product/components/agent-logo.md +194 -0
  8. package/dist/docs/product/components/alert-dialog.md +631 -0
  9. package/dist/docs/product/components/alert.md +448 -0
  10. package/dist/docs/product/components/amount-input.md +305 -0
  11. package/dist/docs/product/components/amount.md +794 -0
  12. package/dist/docs/product/components/app-shell.md +559 -0
  13. package/dist/docs/product/components/asset-chip.md +294 -0
  14. package/dist/docs/product/components/autocomplete.md +620 -0
  15. package/dist/docs/product/components/avatar.md +321 -0
  16. package/dist/docs/product/components/badge.md +339 -0
  17. package/dist/docs/product/components/badged-logo.md +116 -0
  18. package/dist/docs/product/components/banner.md +379 -0
  19. package/dist/docs/product/components/bar-chart.md +208 -0
  20. package/dist/docs/product/components/breadcrumbs.md +380 -0
  21. package/dist/docs/product/components/button-group.md +286 -0
  22. package/dist/docs/product/components/button.md +650 -0
  23. package/dist/docs/product/components/calendar.md +375 -0
  24. package/dist/docs/product/components/callout.md +96 -0
  25. package/dist/docs/product/components/checkbox-group.md +521 -0
  26. package/dist/docs/product/components/checkbox.md +467 -0
  27. package/dist/docs/product/components/choice-group.md +516 -0
  28. package/dist/docs/product/components/choicebox.md +641 -0
  29. package/dist/docs/product/components/code.md +100 -0
  30. package/dist/docs/product/components/combobox.md +939 -0
  31. package/dist/docs/product/components/container.md +257 -0
  32. package/dist/docs/product/components/copy-button.md +642 -0
  33. package/dist/docs/product/components/date-picker.md +514 -0
  34. package/dist/docs/product/components/dialog.md +1332 -0
  35. package/dist/docs/product/components/drawer.md +966 -0
  36. package/dist/docs/product/components/empty.md +340 -0
  37. package/dist/docs/product/components/field.md +570 -0
  38. package/dist/docs/product/components/fieldset.md +398 -0
  39. package/dist/docs/product/components/frame.md +434 -0
  40. package/dist/docs/product/components/gauge.md +299 -0
  41. package/dist/docs/product/components/get-started-visual.md +117 -0
  42. package/dist/docs/product/components/grid.md +288 -0
  43. package/dist/docs/product/components/hero-visual.md +155 -0
  44. package/dist/docs/product/components/hex.md +487 -0
  45. package/dist/docs/product/components/icon-tile.md +292 -0
  46. package/dist/docs/product/components/identicon.md +371 -0
  47. package/dist/docs/product/components/inline.md +233 -0
  48. package/dist/docs/product/components/inset.md +225 -0
  49. package/dist/docs/product/components/kbd.md +423 -0
  50. package/dist/docs/product/components/list-group.md +981 -0
  51. package/dist/docs/product/components/loading-dots.md +237 -0
  52. package/dist/docs/product/components/menu.md +934 -0
  53. package/dist/docs/product/components/native-select.md +204 -0
  54. package/dist/docs/product/components/network-logo.md +248 -0
  55. package/dist/docs/product/components/number-field.md +543 -0
  56. package/dist/docs/product/components/otp-field.md +616 -0
  57. package/dist/docs/product/components/pagination.md +516 -0
  58. package/dist/docs/product/components/popover.md +544 -0
  59. package/dist/docs/product/components/progress.md +388 -0
  60. package/dist/docs/product/components/qr.md +314 -0
  61. package/dist/docs/product/components/radio-group.md +528 -0
  62. package/dist/docs/product/components/secret-value.md +406 -0
  63. package/dist/docs/product/components/select.md +751 -0
  64. package/dist/docs/product/components/separator.md +379 -0
  65. package/dist/docs/product/components/sidebar-menu.md +922 -0
  66. package/dist/docs/product/components/skeleton.md +517 -0
  67. package/dist/docs/product/components/slider.md +539 -0
  68. package/dist/docs/product/components/snippet.md +424 -0
  69. package/dist/docs/product/components/spinner.md +216 -0
  70. package/dist/docs/product/components/split-bar.md +139 -0
  71. package/dist/docs/product/components/split-button.md +464 -0
  72. package/dist/docs/product/components/stack.md +299 -0
  73. package/dist/docs/product/components/status-chip.md +226 -0
  74. package/dist/docs/product/components/status-indicator.md +119 -0
  75. package/dist/docs/product/components/status-row.md +174 -0
  76. package/dist/docs/product/components/stepper.md +451 -0
  77. package/dist/docs/product/components/success-hero.md +157 -0
  78. package/dist/docs/product/components/surface.md +639 -0
  79. package/dist/docs/product/components/switch.md +472 -0
  80. package/dist/docs/product/components/table.md +967 -0
  81. package/dist/docs/product/components/tabs.md +627 -0
  82. package/dist/docs/product/components/tempo-logo.md +185 -0
  83. package/dist/docs/product/components/text-input.md +624 -0
  84. package/dist/docs/product/components/textarea.md +352 -0
  85. package/dist/docs/product/components/toast.md +535 -0
  86. package/dist/docs/product/components/token-logo.md +371 -0
  87. package/dist/docs/product/components/token.md +247 -0
  88. package/dist/docs/product/components/tooltip.md +490 -0
  89. package/dist/docs/product/components/verification-code.md +116 -0
  90. package/dist/docs/product/components/visual.md +249 -0
  91. package/dist/docs/product/components.md +203 -0
  92. package/dist/docs/product/foundations/accessibility.md +377 -0
  93. package/dist/docs/product/foundations/agents.md +150 -0
  94. package/dist/docs/product/foundations/color.md +522 -0
  95. package/dist/docs/product/foundations/content/tone.md +194 -0
  96. package/dist/docs/product/foundations/content/voice.md +194 -0
  97. package/dist/docs/product/foundations/content/writing-style.md +406 -0
  98. package/dist/docs/product/foundations/iconography.md +282 -0
  99. package/dist/docs/product/foundations/intent.md +360 -0
  100. package/dist/docs/product/foundations/layout.md +508 -0
  101. package/dist/docs/product/foundations/linter.md +496 -0
  102. package/dist/docs/product/foundations/motion.md +151 -0
  103. package/dist/docs/product/foundations/radius-and-padding.md +86 -0
  104. package/dist/docs/product/foundations/typography.md +266 -0
  105. package/dist/docs/product/introduction/faq.md +133 -0
  106. package/dist/docs/product/introduction/getting-started.md +377 -0
  107. package/dist/docs/product/patterns/blockchain-values.md +709 -0
  108. package/dist/docs/product/patterns/dashboards.md +638 -0
  109. package/dist/docs/product/patterns/destructive-actions.md +626 -0
  110. package/dist/docs/product/patterns/empty-states.md +612 -0
  111. package/dist/docs/product/patterns/errors-and-validation.md +808 -0
  112. package/dist/docs/product/patterns/feedback-and-status.md +518 -0
  113. package/dist/docs/product/patterns/forms.md +679 -0
  114. package/dist/docs/product/patterns/loading.md +630 -0
  115. package/dist/docs/product/patterns/navigation.md +397 -0
  116. package/dist/docs/product/patterns/payments.md +765 -0
  117. package/dist/docs/product/patterns/responsive-layout.md +997 -0
  118. package/dist/docs/product/patterns/tables-and-lists.md +964 -0
  119. package/dist/docs/product/products/tempo-console.md +671 -0
  120. package/dist/docs/product/products/tempo-performance.md +437 -0
  121. package/dist/docs/product/products/tempo-wallet.md +438 -0
  122. package/dist/marketing/index.d.ts +4 -0
  123. package/dist/marketing/index.d.ts.map +1 -0
  124. package/dist/marketing/index.js +4 -0
  125. package/dist/marketing/index.js.map +1 -0
  126. package/dist/marketing/index.js.zyzz.json +1 -0
  127. package/dist/marketing/vars.d.ts +907 -0
  128. package/dist/marketing/vars.d.ts.map +1 -0
  129. package/dist/marketing/vars.js +15 -0
  130. package/dist/marketing/vars.js.map +1 -0
  131. package/dist/marketing/vars.js.zyzz.json +1 -0
  132. package/dist/marketing/zyzz.config.d.ts +4512 -0
  133. package/dist/marketing/zyzz.config.d.ts.map +1 -0
  134. package/dist/marketing/zyzz.config.js +63 -0
  135. package/dist/marketing/zyzz.config.js.map +1 -0
  136. package/dist/marketing/zyzz.config.js.zyzz.json +1 -0
  137. package/dist/oxlint/index.d.ts +12 -1
  138. package/dist/oxlint/index.d.ts.map +1 -1
  139. package/dist/oxlint/index.js +39 -1
  140. package/dist/oxlint/index.js.map +1 -1
  141. package/dist/oxlint/internal/Docs.d.ts +9 -0
  142. package/dist/oxlint/internal/Docs.d.ts.map +1 -0
  143. package/dist/oxlint/internal/Docs.js +15 -0
  144. package/dist/oxlint/internal/Docs.js.map +1 -0
  145. package/dist/oxlint/internal/Imports.d.ts +1 -1
  146. package/dist/oxlint/internal/Imports.d.ts.map +1 -1
  147. package/dist/oxlint/internal/Imports.js +2 -0
  148. package/dist/oxlint/internal/Imports.js.map +1 -1
  149. package/dist/oxlint/internal/Styles.d.ts +40 -0
  150. package/dist/oxlint/internal/Styles.d.ts.map +1 -0
  151. package/dist/oxlint/internal/Styles.js +194 -0
  152. package/dist/oxlint/internal/Styles.js.map +1 -0
  153. package/dist/oxlint/internal/Tokens.d.ts +16 -0
  154. package/dist/oxlint/internal/Tokens.d.ts.map +1 -0
  155. package/dist/oxlint/internal/Tokens.js +39 -0
  156. package/dist/oxlint/internal/Tokens.js.map +1 -0
  157. package/dist/oxlint/rules/NoCrossSurface.d.ts +2 -2
  158. package/dist/oxlint/rules/NoCrossSurface.js +3 -3
  159. package/dist/oxlint/rules/NoCrossSurface.js.map +1 -1
  160. package/dist/oxlint/rules/NoCustomValues.d.ts +11 -0
  161. package/dist/oxlint/rules/NoCustomValues.d.ts.map +1 -0
  162. package/dist/oxlint/rules/NoCustomValues.js +150 -0
  163. package/dist/oxlint/rules/NoCustomValues.js.map +1 -0
  164. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts +11 -0
  165. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts.map +1 -0
  166. package/dist/oxlint/rules/NoSingleKeyShortcuts.js +158 -0
  167. package/dist/oxlint/rules/NoSingleKeyShortcuts.js.map +1 -0
  168. package/dist/oxlint/rules/PreferComponent.d.ts +3 -2
  169. package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -1
  170. package/dist/oxlint/rules/PreferComponent.js +11 -4
  171. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  172. package/dist/oxlint/rules/PreferLayout.d.ts +9 -0
  173. package/dist/oxlint/rules/PreferLayout.d.ts.map +1 -0
  174. package/dist/oxlint/rules/PreferLayout.js +90 -0
  175. package/dist/oxlint/rules/PreferLayout.js.map +1 -0
  176. package/dist/oxlint/rules/PreferProgress.d.ts +9 -0
  177. package/dist/oxlint/rules/PreferProgress.d.ts.map +1 -0
  178. package/dist/oxlint/rules/PreferProgress.js +43 -0
  179. package/dist/oxlint/rules/PreferProgress.js.map +1 -0
  180. package/dist/oxlint/rules/PreferSurface.d.ts +9 -0
  181. package/dist/oxlint/rules/PreferSurface.d.ts.map +1 -0
  182. package/dist/oxlint/rules/PreferSurface.js +55 -0
  183. package/dist/oxlint/rules/PreferSurface.js.map +1 -0
  184. package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -1
  185. package/dist/oxlint/rules/RequireAccessibleName.js +3 -1
  186. package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -1
  187. package/dist/oxlint/rules/RequireScrollRegion.d.ts +11 -0
  188. package/dist/oxlint/rules/RequireScrollRegion.d.ts.map +1 -0
  189. package/dist/oxlint/rules/RequireScrollRegion.js +71 -0
  190. package/dist/oxlint/rules/RequireScrollRegion.js.map +1 -0
  191. package/dist/web/icons/index.js.zyzz.json +1 -0
  192. package/package.json +6 -1
  193. package/src/marketing/README.md +21 -0
  194. package/src/marketing/index.ts +3 -0
  195. package/src/marketing/vars.ts +751 -0
  196. package/src/marketing/zyzz.config.ts +376 -0
  197. package/src/oxlint/index.ts +40 -1
  198. package/src/oxlint/internal/Docs.ts +18 -0
  199. package/src/oxlint/internal/Imports.ts +2 -1
  200. package/src/oxlint/internal/Styles.ts +240 -0
  201. package/src/oxlint/internal/Tokens.ts +43 -0
  202. package/src/oxlint/rules/NoCrossSurface.ts +3 -3
  203. package/src/oxlint/rules/NoCustomValues.ts +170 -0
  204. package/src/oxlint/rules/NoSingleKeyShortcuts.ts +190 -0
  205. package/src/oxlint/rules/PreferComponent.ts +11 -4
  206. package/src/oxlint/rules/PreferLayout.ts +96 -0
  207. package/src/oxlint/rules/PreferProgress.ts +49 -0
  208. package/src/oxlint/rules/PreferSurface.ts +70 -0
  209. package/src/oxlint/rules/RequireAccessibleName.ts +3 -1
  210. package/src/oxlint/rules/RequireScrollRegion.ts +92 -0
package/README.md CHANGED
@@ -22,10 +22,11 @@ npm i @tempoxyz/ds zyzz
22
22
 
23
23
  ### 2. Choose Surface
24
24
 
25
- | I am building... | Surface | Import |
26
- | -------------------- | ------- | --------------------- |
27
- | A web application | Web | `@tempoxyz/ds` |
28
- | A mobile application | Mobile | `@tempoxyz/ds/mobile` |
25
+ | I am building... | Surface | Import |
26
+ | -------------------- | --------- | ------------------------ |
27
+ | A web application | Web | `@tempoxyz/ds` |
28
+ | A mobile application | Mobile | `@tempoxyz/ds/mobile` |
29
+ | A marketing website | Marketing | `@tempoxyz/ds/marketing` |
29
30
 
30
31
  Native Apple apps add the [tempoxyz/ds-swift](https://github.com/tempoxyz/ds-swift) Swift package, which each version mirrors from `swift/`, and import `TempoDesignSystem`. It holds the Web spacing, radius, ease, duration, opacity, scale, and shadow scales as Swift constants, such as `TDS.Spacing.s16` and `TDS.Ease.snappy.animation(TDS.Duration.ms200)`. Colors and typography stay with each app.
31
32
 
@@ -77,7 +78,7 @@ export function Card() {
77
78
 
78
79
  ### 6. (Optional) Lint
79
80
 
80
- `@tempoxyz/ds/oxlint` ships an Oxlint plugin that checks how your app uses the library. Spread the `web` or `mobile` configuration into the `lint` options of Vite Plus. It enables the TDS rules and the Zyzz rules together.
81
+ `@tempoxyz/ds/oxlint` ships an Oxlint plugin that checks how your app uses the library. Spread the `web`, `mobile`, or `marketing` configuration into the `lint` options of Vite Plus. It enables the TDS rules and the Zyzz rules together.
81
82
 
82
83
  ```ts
83
84
  import { web } from '@tempoxyz/ds/oxlint'
@@ -102,7 +103,7 @@ With an `.oxlintrc.json`, register both plugins and enable the rules you need:
102
103
  }
103
104
  ```
104
105
 
105
- - **`tds/no-cross-surface`:** Reports an import from the other surface. Without `surface`, it reports a file that imports both.
106
+ - **`tds/no-cross-surface`:** Reports an import from another surface. Without `surface`, it reports a file that imports more than one.
106
107
  - **`tds/no-internal-imports`:** Allows only the subpaths that the package `exports` map publishes.
107
108
  - **`tds/no-raw-values`:** Warns on raw colors, lengths, and font stacks in inline `style` props.
108
109
  - **`tds/prefer-component`:** Warns on native elements that a component replaces, such as `<button>` and `<select>`. `allow` accepts element names to skip.
@@ -0,0 +1,12 @@
1
+ # Tempo Design System for Agents
2
+
3
+ These files are the documentation of `@tempoxyz/ds` as Markdown, for the version installed beside them. They describe how to use the design system in an app, not how to build the library. Each page sits at the path of its page on ds.tehq.dev, and links between pages are relative. Read them here rather than on the site, so the guidance matches the version you import.
4
+
5
+ Tempo has two design systems, and this package ships both. Choose one by what you build, and start from its Getting Started page:
6
+
7
+ - **Product:** Interfaces people use, such as wallets, consoles, dashboards, explorers, and internal tools. Start from [product/introduction/getting-started.md](product/introduction/getting-started.md).
8
+ - **Marketing:** Pages that present Tempo, such as the home page and launch, campaign, and event pages. Start from [marketing/introduction/getting-started.md](marketing/introduction/getting-started.md).
9
+
10
+ An app uses one system. A marketing site does not import `@tempoxyz/ds`, and a product interface does not import `@tempoxyz/ds/marketing`.
11
+
12
+ Each system's folder follows its sidebar on the site, with Introduction, Foundations, and Components sections. [index.md](index.md) lists every page with its description. Before you use a component, read its page in full. For Product, also read [Agents](product/foundations/agents.md), which states the rules that generated UI follows.
@@ -0,0 +1,145 @@
1
+ # Tempo Design System
2
+
3
+ > Foundations, guidelines, and components for Tempo products and websites.
4
+
5
+ Each page is the Markdown of the documentation at ds.tehq.dev for this version of the package, at the path of its page on the site. [AGENTS.md](AGENTS.md) names the page to read first.
6
+
7
+ ## Product
8
+
9
+ ### Introduction
10
+
11
+ - [FAQ](product/introduction/faq.md): Common questions about building with, and contributing to, Tempo Design System.
12
+ - [Getting Started](product/introduction/getting-started.md): Install Tempo Design System and render your first component.
13
+
14
+ ### Foundations
15
+
16
+ - [Accessibility](product/foundations/accessibility.md): The accessibility baseline for every Tempo component, and what you still own.
17
+ - [Agents](product/foundations/agents.md): How coding agents read these docs and the source, and the rules they follow.
18
+ - [Color](product/foundations/color.md): Color tokens for text, surfaces, borders, and status, with contrast rules.
19
+ - [Tone](product/foundations/content/tone.md): How Tempo's voice adjusts to the reader, from a first visit to an error.
20
+ - [Voice](product/foundations/content/voice.md): Tempo's personality in words, consistent across every product.
21
+ - [Writing Style](product/foundations/content/writing-style.md): How Tempo writes interface text: sentence case, a verb first, and plain words.
22
+ - [Iconography](product/foundations/iconography.md): Icons from the Tempo catalog, and how to size, color, and label them.
23
+ - [Building From Intent](product/foundations/intent.md): Choose each component by the job of its content, not by the markup it replaces.
24
+ - [Layout](product/foundations/layout.md): Page structure, grid, spacing, radius, and elevation.
25
+ - [Linter](product/foundations/linter.md): Oxlint rules that check how your app uses Tempo Design System.
26
+ - [Motion](product/foundations/motion.md): Easing curves, durations, and reduced-motion rules for state changes.
27
+ - [Radius and Padding](product/foundations/radius-and-padding.md): How corner radius and padding pair, from fields to modals.
28
+ - [Typography](product/foundations/typography.md): Type sets for titles, body text, values, and code.
29
+
30
+ ### Products
31
+
32
+ - [Tempo Console](product/products/tempo-console.md): Tempo Console is the web app for Tempo API projects, keys, usage, and billing.
33
+ - [Tempo Performance](product/products/tempo-performance.md): Tempo Performance is the public benchmark dashboard for the Tempo network.
34
+ - [Tempo Wallet](product/products/tempo-wallet.md): Tempo Wallet is the first-party wallet for balances, transfers, and deposits.
35
+
36
+ ### Patterns
37
+
38
+ - [Blockchain Values](product/patterns/blockchain-values.md): Formats addresses, hashes, amounts, and timestamps so people can verify them.
39
+ - [Dashboards](product/patterns/dashboards.md): Summarizes system metrics, such as throughput, in tiles, filters, and charts.
40
+ - [Destructive Actions](product/patterns/destructive-actions.md): Match the safeguard on a destructive action to its impact and its reversibility.
41
+ - [Empty States](product/patterns/empty-states.md): Explain why a region has nothing to show, and offer the next step that fills it.
42
+ - [Errors and Validation](product/patterns/errors-and-validation.md): Check values at the right moment, and state how to fix each problem.
43
+ - [Feedback and Status](product/patterns/feedback-and-status.md): Name each system state once, and choose Toast, Alert, or Banner by urgency.
44
+ - [Forms](product/patterns/forms.md): Order fields, labels, and actions so a person completes a form in one pass.
45
+ - [Loading](product/patterns/loading.md): Show that content or an action is on its way, with an indicator to fit the wait.
46
+ - [Navigation](product/patterns/navigation.md): Move between product areas, page views, and nested pages in one shared frame.
47
+ - [Payments](product/patterns/payments.md): Build send, receive, and deposit flows, from the amount to the receipt.
48
+ - [Responsive Layout](product/patterns/responsive-layout.md): Adapt layouts from a 320px phone to a wide desktop with shared breakpoints.
49
+ - [Tables and Lists](product/patterns/tables-and-lists.md): Present records, such as payments and API keys, to scan, compare, and act on.
50
+
51
+ ### Components
52
+
53
+ - [Overview](product/components.md): Components for building Tempo products, grouped by the job each one does.
54
+ - [Accordion](product/components/accordion.md): Stacks collapsible sections that each reveal a labelled panel.
55
+ - [AddressCard](product/components/address-card.md): Shows a wallet address to receive funds, with its QR code and networks.
56
+ - [AgentLogo](product/components/agent-logo.md): Shows the logo of an AI agent that works with a wallet.
57
+ - [AlertDialog](product/components/alert-dialog.md): Asks you to confirm a critical action before it happens.
58
+ - [Alert](product/components/alert.md): Shows an inline message tied to nearby content.
59
+ - [AmountInput](product/components/amount-input.md): Accepts a decimal amount, such as a payment or transfer value.
60
+ - [Amount](product/components/amount.md): Formats a number as money or a token amount.
61
+ - [AppShell](product/components/app-shell.md): Places a sticky sidebar beside the main content column.
62
+ - [AssetChip](product/components/asset-chip.md): Labels a supported asset or network in a small chip, which can also pick one.
63
+ - [Autocomplete](product/components/autocomplete.md): A text input that suggests values while people type.
64
+ - [Avatar](product/components/avatar.md): Represents a person, contact, or wallet with an image, initials, or an icon.
65
+ - [Badge](product/components/badge.md): Labels a status or category in a compact chip.
66
+ - [BadgedLogo](product/components/badged-logo.md): Marks a token or an app with a small badge on the corner of its logo.
67
+ - [Banner](product/components/banner.md): Shows a full-width message about the system or page.
68
+ - [BarChart](product/components/bar-chart.md): Shows values over time as stacked bars, such as the daily spend of each agent.
69
+ - [Breadcrumbs](product/components/breadcrumbs.md): Shows where the current page sits in the site hierarchy.
70
+ - [ButtonGroup](product/components/button-group.md): Lays out the actions at the foot of a dialog or focused flow.
71
+ - [Button](product/components/button.md): Triggers an action, such as submitting a form or sending a payment.
72
+ - [Calendar](product/components/calendar.md): A month grid for picking one date or a date range.
73
+ - [Callout](product/components/callout.md): Sets a short passage of body text apart in a subtle box.
74
+ - [CheckboxGroup](product/components/checkbox-group.md): Shares one value array across a group of checkboxes.
75
+ - [Checkbox](product/components/checkbox.md): Turns a single independent option on or off.
76
+ - [ChoiceGroup](product/components/choice-group.md): A segmented control for a few mutually exclusive options.
77
+ - [Choicebox](product/components/choicebox.md): A selectable tile with an optional icon, title, and description.
78
+ - [Code](product/components/code.md): Sets a command, identifier, or value apart inside a sentence.
79
+ - [Combobox](product/components/combobox.md): A text input that filters a list of fixed options while people type.
80
+ - [Container](product/components/container.md): Centers content at a maximum width.
81
+ - [CopyButton](product/components/copy-button.md): Copies a value to the clipboard and confirms the copy.
82
+ - [DatePicker](product/components/date-picker.md): Shows the selected date and opens a calendar in a popup.
83
+ - [Dialog](product/components/dialog.md): Opens a modal popup over the page.
84
+ - [Drawer](product/components/drawer.md): Slides a modal panel in from an edge of the viewport.
85
+ - [Empty](product/components/empty.md): Fills a region that has nothing to show yet.
86
+ - [Field](product/components/field.md): Links a label, description, and error message to a control.
87
+ - [Fieldset](product/components/fieldset.md): Groups related fields under a shared legend.
88
+ - [Frame](product/components/frame.md): Lays out a header, body, and footer in a column.
89
+ - [Gauge](product/components/gauge.md): Shows a measurement within a range as a ring.
90
+ - [GetStartedVisual](product/components/get-started-visual.md): Illustrates one step of a get started flow at the top of its card.
91
+ - [Grid](product/components/grid.md): Lays out children on a responsive grid.
92
+ - [HeroVisual](product/components/hero-visual.md): Shows animated streaks and a title beside the steps of a setup flow.
93
+ - [Hex](product/components/hex.md): Shows a hex string, such as an address, truncated to fit.
94
+ - [IconTile](product/components/icon-tile.md): Anchors a centered modal with one icon in a rounded square.
95
+ - [Identicon](product/components/identicon.md): Shows a unique gradient avatar derived from an address.
96
+ - [Inline](product/components/inline.md): Lays out children in a horizontal row.
97
+ - [Inset](product/components/inset.md): Pads content with spacing tokens.
98
+ - [Kbd](product/components/kbd.md): Shows a keyboard key or shortcut.
99
+ - [ListGroup](product/components/list-group.md): Stacks rows for details, pickers, checklists, and settings.
100
+ - [LoadingDots](product/components/loading-dots.md): Shows three pulsing dots for inline loading.
101
+ - [Menu](product/components/menu.md): Opens a list of actions from a button.
102
+ - [NativeSelect](product/components/native-select.md): A native select styled as a field, which opens the browser's own picker.
103
+ - [NetworkLogo](product/components/network-logo.md): Shows the logo of the network a token lives on.
104
+ - [NumberField](product/components/number-field.md): A numeric input with increment and decrement buttons.
105
+ - [OtpField](product/components/otp-field.md): Accepts a one-time passcode, one character per slot.
106
+ - [Pagination](product/components/pagination.md): Moves between pages of a long list.
107
+ - [Popover](product/components/popover.md): Opens a non-modal popup anchored to a trigger.
108
+ - [Progress](product/components/progress.md): Shows how far a task has advanced.
109
+ - [Qr](product/components/qr.md): Renders a value as a QR code.
110
+ - [RadioGroup](product/components/radio-group.md): Lets you pick a single option from a short list.
111
+ - [SecretValue](product/components/secret-value.md): Masks a secret and adds reveal and copy buttons.
112
+ - [Select](product/components/select.md): Opens a list of options for choosing one value.
113
+ - [Separator](product/components/separator.md): Draws a rule between groups of content.
114
+ - [SidebarMenu](product/components/sidebar-menu.md): Vertical navigation for sidebars and drawers.
115
+ - [Skeleton](product/components/skeleton.md): Holds the place of content while it loads.
116
+ - [Slider](product/components/slider.md): Picks a single value or a range by dragging.
117
+ - [Snippet](product/components/snippet.md): Shows a command or value with a copy button.
118
+ - [Spinner](product/components/spinner.md): Shows that something is loading.
119
+ - [SplitBar](product/components/split-bar.md): Splits one total between two parts, with a legend under the bar.
120
+ - [SplitButton](product/components/split-button.md): Pairs a primary action with a menu of alternatives.
121
+ - [Stack](product/components/stack.md): Lays out children in a vertical column.
122
+ - [StatusChip](product/components/status-chip.md): Names the status of a payment, an authorization, or a network.
123
+ - [StatusIndicator](product/components/status-indicator.md): Names the status of a system or a service with a dot and a label.
124
+ - [StatusRow](product/components/status-row.md): Follows the status of one payment or task while it runs.
125
+ - [Stepper](product/components/stepper.md): Shows progress through a fixed sequence of steps.
126
+ - [SuccessHero](product/components/success-hero.md): Confirms that a setup flow finished, on a dark card of animated streaks.
127
+ - [Surface](product/components/surface.md): A card container for grouping related content.
128
+ - [Switch](product/components/switch.md): Toggles a setting that applies immediately.
129
+ - [Table](product/components/table.md): Displays tabular data in rows and columns.
130
+ - [Tabs](product/components/tabs.md): Switches between related views.
131
+ - [TempoLogo](product/components/tempo-logo.md): Shows the Tempo brand logo.
132
+ - [TextInput](product/components/text-input.md): A text field with optional prefix, suffix, and clear button.
133
+ - [Textarea](product/components/textarea.md): A multi-line text field.
134
+ - [Toast](product/components/toast.md): Shows a brief notification that dismisses itself.
135
+ - [TokenLogo](product/components/token-logo.md): Shows a token logo by contract address or symbol.
136
+ - [Token](product/components/token.md): Shows which token an amount is in, and opens a picker to change it.
137
+ - [Tooltip](product/components/tooltip.md): Shows a short label for a control on hover or focus.
138
+ - [VerificationCode](product/components/verification-code.md): Shows a code that a person compares with the one another app shows.
139
+ - [Visual](product/components/visual.md): Illustrates the top of an onboarding or feature modal.
140
+
141
+ ## Marketing
142
+
143
+ ### Introduction
144
+
145
+ - [Getting Started](marketing/introduction/getting-started.md): Install the Marketing system and style your first section.
@@ -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.