@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.
Files changed (212) hide show
  1. package/README.md +7 -6
  2. package/dist/docs/AGENTS.md +8 -5
  3. package/dist/docs/index.md +143 -135
  4. package/dist/docs/marketing/introduction/getting-started.md +241 -0
  5. package/dist/docs/{components → product/components}/accordion.md +8 -8
  6. package/dist/docs/{components → product/components}/address-card.md +5 -5
  7. package/dist/docs/{components → product/components}/agent-logo.md +5 -5
  8. package/dist/docs/{components → product/components}/alert-dialog.md +11 -11
  9. package/dist/docs/{components → product/components}/alert.md +11 -11
  10. package/dist/docs/{components → product/components}/amount-input.md +13 -13
  11. package/dist/docs/{components → product/components}/amount.md +8 -8
  12. package/dist/docs/{components → product/components}/app-shell.md +13 -13
  13. package/dist/docs/{components → product/components}/asset-chip.md +11 -11
  14. package/dist/docs/{components → product/components}/autocomplete.md +10 -9
  15. package/dist/docs/{components → product/components}/avatar.md +8 -8
  16. package/dist/docs/{components → product/components}/badge.md +9 -9
  17. package/dist/docs/{components → product/components}/badged-logo.md +6 -6
  18. package/dist/docs/{components → product/components}/banner.md +8 -8
  19. package/dist/docs/{components → product/components}/bar-chart.md +7 -7
  20. package/dist/docs/{components → product/components}/breadcrumbs.md +8 -8
  21. package/dist/docs/{components → product/components}/button-group.md +8 -8
  22. package/dist/docs/{components → product/components}/button.md +17 -17
  23. package/dist/docs/{components → product/components}/calendar.md +8 -8
  24. package/dist/docs/{components → product/components}/callout.md +5 -5
  25. package/dist/docs/{components → product/components}/checkbox-group.md +13 -13
  26. package/dist/docs/{components → product/components}/checkbox.md +12 -12
  27. package/dist/docs/{components → product/components}/choice-group.md +14 -14
  28. package/dist/docs/{components → product/components}/choicebox.md +9 -9
  29. package/dist/docs/{components → product/components}/code.md +5 -5
  30. package/dist/docs/{components → product/components}/combobox.md +9 -9
  31. package/dist/docs/{components → product/components}/container.md +7 -7
  32. package/dist/docs/{components → product/components}/copy-button.md +13 -13
  33. package/dist/docs/{components → product/components}/date-picker.md +11 -11
  34. package/dist/docs/{components → product/components}/dialog.md +17 -17
  35. package/dist/docs/{components → product/components}/drawer.md +11 -11
  36. package/dist/docs/{components → product/components}/empty.md +9 -9
  37. package/dist/docs/{components → product/components}/field.md +14 -14
  38. package/dist/docs/{components → product/components}/fieldset.md +6 -6
  39. package/dist/docs/{components → product/components}/frame.md +9 -9
  40. package/dist/docs/{components → product/components}/gauge.md +7 -7
  41. package/dist/docs/{components → product/components}/get-started-visual.md +4 -4
  42. package/dist/docs/{components → product/components}/grid.md +7 -7
  43. package/dist/docs/{components → product/components}/hero-visual.md +4 -4
  44. package/dist/docs/{components → product/components}/hex.md +9 -9
  45. package/dist/docs/{components → product/components}/icon-tile.md +8 -8
  46. package/dist/docs/{components → product/components}/identicon.md +7 -7
  47. package/dist/docs/{components → product/components}/inline.md +7 -7
  48. package/dist/docs/{components → product/components}/inset.md +8 -8
  49. package/dist/docs/{components → product/components}/kbd.md +8 -8
  50. package/dist/docs/{components → product/components}/list-group.md +24 -24
  51. package/dist/docs/{components → product/components}/loading-dots.md +8 -8
  52. package/dist/docs/{components → product/components}/menu.md +14 -14
  53. package/dist/docs/{components → product/components}/native-select.md +7 -7
  54. package/dist/docs/{components → product/components}/network-logo.md +7 -7
  55. package/dist/docs/{components → product/components}/number-field.md +8 -8
  56. package/dist/docs/{components → product/components}/otp-field.md +9 -9
  57. package/dist/docs/{components → product/components}/pagination.md +8 -8
  58. package/dist/docs/{components → product/components}/popover.md +11 -11
  59. package/dist/docs/{components → product/components}/progress.md +10 -10
  60. package/dist/docs/{components → product/components}/qr.md +8 -8
  61. package/dist/docs/{components → product/components}/radio-group.md +10 -10
  62. package/dist/docs/{components → product/components}/secret-value.md +8 -8
  63. package/dist/docs/{components → product/components}/select.md +13 -13
  64. package/dist/docs/{components → product/components}/separator.md +7 -7
  65. package/dist/docs/{components → product/components}/sidebar-menu.md +11 -11
  66. package/dist/docs/{components → product/components}/skeleton.md +9 -9
  67. package/dist/docs/{components → product/components}/slider.md +8 -8
  68. package/dist/docs/{components → product/components}/snippet.md +10 -10
  69. package/dist/docs/{components → product/components}/spinner.md +12 -12
  70. package/dist/docs/{components → product/components}/split-bar.md +5 -5
  71. package/dist/docs/{components → product/components}/split-button.md +11 -11
  72. package/dist/docs/{components → product/components}/stack.md +8 -8
  73. package/dist/docs/{components → product/components}/status-chip.md +7 -7
  74. package/dist/docs/{components → product/components}/status-indicator.md +6 -6
  75. package/dist/docs/{components → product/components}/status-row.md +7 -7
  76. package/dist/docs/{components → product/components}/stepper.md +9 -9
  77. package/dist/docs/{components → product/components}/success-hero.md +5 -5
  78. package/dist/docs/{components → product/components}/surface.md +11 -11
  79. package/dist/docs/{components → product/components}/switch.md +11 -11
  80. package/dist/docs/{components → product/components}/table.md +16 -16
  81. package/dist/docs/{components → product/components}/tabs.md +11 -11
  82. package/dist/docs/{components → product/components}/tempo-logo.md +4 -4
  83. package/dist/docs/{components → product/components}/text-input.md +14 -14
  84. package/dist/docs/{components → product/components}/textarea.md +7 -7
  85. package/dist/docs/{components → product/components}/toast.md +11 -11
  86. package/dist/docs/{components → product/components}/token-logo.md +16 -16
  87. package/dist/docs/{components → product/components}/token.md +10 -10
  88. package/dist/docs/{components → product/components}/tooltip.md +11 -11
  89. package/dist/docs/{components → product/components}/verification-code.md +4 -4
  90. package/dist/docs/{components → product/components}/visual.md +5 -5
  91. package/dist/docs/product/components.md +203 -0
  92. package/dist/docs/{foundations → product/foundations}/accessibility.md +16 -16
  93. package/dist/docs/{foundations → product/foundations}/agents.md +17 -17
  94. package/dist/docs/{foundations → product/foundations}/color.md +7 -7
  95. package/dist/docs/{foundations → product/foundations}/content/tone.md +7 -7
  96. package/dist/docs/{foundations → product/foundations}/content/voice.md +2 -2
  97. package/dist/docs/{foundations → product/foundations}/content/writing-style.md +8 -8
  98. package/dist/docs/{foundations → product/foundations}/iconography.md +11 -11
  99. package/dist/docs/{foundations → product/foundations}/intent.md +28 -28
  100. package/dist/docs/{foundations → product/foundations}/layout.md +22 -22
  101. package/dist/docs/product/foundations/linter.md +496 -0
  102. package/dist/docs/{foundations → product/foundations}/motion.md +7 -7
  103. package/dist/docs/{foundations → product/foundations}/radius-and-padding.md +3 -3
  104. package/dist/docs/{foundations → product/foundations}/typography.md +4 -4
  105. package/dist/docs/{introduction → product/introduction}/faq.md +22 -21
  106. package/dist/docs/{introduction → product/introduction}/getting-started.md +4 -4
  107. package/dist/docs/{patterns → product/patterns}/blockchain-values.md +20 -20
  108. package/dist/docs/{patterns → product/patterns}/dashboards.md +28 -28
  109. package/dist/docs/{patterns → product/patterns}/destructive-actions.md +16 -16
  110. package/dist/docs/{patterns → product/patterns}/empty-states.md +14 -14
  111. package/dist/docs/{patterns → product/patterns}/errors-and-validation.md +23 -23
  112. package/dist/docs/{patterns → product/patterns}/feedback-and-status.md +31 -31
  113. package/dist/docs/{patterns → product/patterns}/forms.md +24 -24
  114. package/dist/docs/{patterns → product/patterns}/loading.md +19 -19
  115. package/dist/docs/{patterns → product/patterns}/navigation.md +23 -23
  116. package/dist/docs/{patterns → product/patterns}/payments.md +20 -20
  117. package/dist/docs/{patterns → product/patterns}/responsive-layout.md +23 -23
  118. package/dist/docs/{patterns → product/patterns}/tables-and-lists.md +19 -19
  119. package/dist/docs/{products → product/products}/tempo-console.md +12 -12
  120. package/dist/docs/{products → product/products}/tempo-performance.md +11 -11
  121. package/dist/docs/{products → product/products}/tempo-wallet.md +12 -12
  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
  211. package/dist/docs/components.md +0 -203
  212. package/dist/docs/foundations/linter.md +0 -296
@@ -10,13 +10,13 @@ An error message states what happened and how to fix it, beside the problem. It
10
10
  * **Network Failure:** A request did not complete, so nothing changed. Show it beside the failed action.
11
11
  * **Transaction Failure (Failed):** The network received a transaction and rejected it, such as a transfer without funds for its fee.
12
12
 
13
- [Forms](/docs/patterns/forms) covers layout. [Feedback and Status](/docs/patterns/feedback-and-status) defines the Couldn't load and Failed states.
13
+ [Forms](forms.md) covers layout. [Feedback and Status](feedback-and-status.md) defines the Couldn't load and Failed states.
14
14
 
15
15
  ## Structure
16
16
 
17
17
  1. **Field errors:** Each invalid field shows its own `Field.Error`, which replaces the field's description.
18
- 2. **Summary:** If a submit finds two or more problems, a negative [Alert](/docs/components/alert) at the top lists them.
19
- 3. **Failed request:** The form keeps its values, and an [Alert](/docs/components/alert) above the actions states the failure.
18
+ 2. **Summary:** If a submit finds two or more problems, a negative [Alert](../components/alert.md) at the top lists them.
19
+ 3. **Failed request:** The form keeps its values, and an [Alert](../components/alert.md) above the actions states the failure.
20
20
  4. **Retry:** The primary action stays enabled, so a second press retries.
21
21
 
22
22
  ```tsx
@@ -205,16 +205,16 @@ namespace styles {
205
205
 
206
206
  [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/PaymentValidation.tsx)
207
207
 
208
- This reference layout uses [Field](/docs/components/field), [AmountInput](/docs/components/amount-input), and [Alert](/docs/components/alert). A short address shows a format error on Tab. An empty amount on submit shows the summary.
208
+ This reference layout uses [Field](../components/field.md), [AmountInput](../components/amount-input.md), and [Alert](../components/alert.md). A short address shows a format error on Tab. An empty amount on submit shows the summary.
209
209
 
210
210
  ## Guidelines
211
211
 
212
212
  ### Place Errors Near Their Cause
213
213
 
214
- * **One Field (Field.Error):** Set `invalid` on the [Field](/docs/components/field), with the error below.
215
- * **A Section or Action (Alert):** Show a negative [Alert](/docs/components/alert) above what it describes.
216
- * **The Whole Page (Banner):** Show a negative [Banner](/docs/components/banner) at the top of the page.
217
- * **A Background Task (Toast):** Show a [Toast](/docs/components/toast). If a retry exists, add it as an action.
214
+ * **One Field (Field.Error):** Set `invalid` on the [Field](../components/field.md), with the error below.
215
+ * **A Section or Action (Alert):** Show a negative [Alert](../components/alert.md) above what it describes.
216
+ * **The Whole Page (Banner):** Show a negative [Banner](../components/banner.md) at the top of the page.
217
+ * **A Background Task (Toast):** Show a [Toast](../components/toast.md). If a retry exists, add it as an action.
218
218
 
219
219
  ### Validate at the Right Moment
220
220
 
@@ -380,7 +380,7 @@ namespace styles {
380
380
  ### Summarize Several Errors
381
381
 
382
382
  * **One problem:** On submit, move focus to its field.
383
- * **Two or more:** Render a negative [Alert](/docs/components/alert) at the top of the form. It names the count, lists each error as a link that focuses its field, and receives focus.
383
+ * **Two or more:** Render a negative [Alert](../components/alert.md) at the top of the form. It names the count, lists each error as a link that focuses its field, and receives focus.
384
384
 
385
385
  **Do:** Keep each `Field.Error` beside its field, and link each summary item to it.
386
386
 
@@ -486,7 +486,7 @@ namespace styles {
486
486
 
487
487
  ### Report Failed Requests Where They Happen
488
488
 
489
- If a submit fails on the network, keep the form open with its values, so a retry takes one press. State the failure in a negative [Alert](/docs/components/alert) above the actions.
489
+ If a submit fails on the network, keep the form open with its values, so a retry takes one press. State the failure in a negative [Alert](../components/alert.md) above the actions.
490
490
 
491
491
  * **Outcome First:** Lead with what did not happen, such as "Payment not sent".
492
492
  * **Say Where the Money Is:** For payments, always state whether funds moved. An unsure reader often pays twice.
@@ -544,13 +544,13 @@ namespace styles {
544
544
  }
545
545
  ```
546
546
 
547
- Do not report a failed payment only in a [Toast](/docs/components/toast). It dismisses itself before the reader decides what to do.
547
+ Do not report a failed payment only in a [Toast](../components/toast.md). It dismisses itself before the reader decides what to do.
548
548
 
549
549
  ### Report Page-Wide Errors in a Banner
550
550
 
551
- If a problem affects the whole page, such as a lost connection, keep the [Banner](/docs/components/banner) visible until the problem resolves.
551
+ If a problem affects the whole page, such as a lost connection, keep the [Banner](../components/banner.md) visible until the problem resolves.
552
552
 
553
- **Do:** Use a [Banner](/docs/components/banner) for a problem that affects the whole page.
553
+ **Do:** Use a [Banner](../components/banner.md) for a problem that affects the whole page.
554
554
 
555
555
  ```tsx
556
556
  <Banner intent="negative">
@@ -558,7 +558,7 @@ If a problem affects the whole page, such as a lost connection, keep the [Banner
558
558
  </Banner>
559
559
  ```
560
560
 
561
- **Don't:** Report a field error in a [Banner](/docs/components/banner), away from the field.
561
+ **Don't:** Report a field error in a [Banner](../components/banner.md), away from the field.
562
562
 
563
563
  ```tsx
564
564
  <Banner intent="negative">
@@ -568,7 +568,7 @@ If a problem affects the whole page, such as a lost connection, keep the [Banner
568
568
 
569
569
  ### Explain Transaction Failures
570
570
 
571
- A transaction that reached the network and failed differs from a request that never arrived. Mark it Failed with a [Badge](/docs/components/badge) and keep it in activity. A failed transfer moves no funds, but its network fee may still be charged, so state both.
571
+ A transaction that reached the network and failed differs from a request that never arrived. Mark it Failed with a [Badge](../components/badge.md) and keep it in activity. A failed transfer moves no funds, but its network fee may still be charged, so state both.
572
572
 
573
573
  **Do:** Show the reason a transaction failed beside its Failed status.
574
574
 
@@ -772,37 +772,37 @@ A disabled button states no reason. An enabled one lets the reader submit and re
772
772
  * **Default:** Fields with descriptions and no errors. Nothing is checked before interaction.
773
773
  * **Loading (loading):** Earlier errors stay visible while a check or request runs.
774
774
  * **Disabled:** Skip validation for disabled fields. Screen readers do not announce an error on a disabled control.
775
- * **Success:** After a successful submit, confirm the result with a [Toast](/docs/components/toast) or the next screen.
775
+ * **Success:** After a successful submit, confirm the result with a [Toast](../components/toast.md) or the next screen.
776
776
 
777
777
  ## Accessibility
778
778
 
779
779
  * **Linked Errors (aria-describedby):** A shown error is read when its control takes focus. `invalid` sets `aria-invalid`. `success` sets no state.
780
780
  * **Summary Links:** A negative alert announces the summary on render. Each link moves focus to its field.
781
781
 
782
- [Feedback and Status](/docs/patterns/feedback-and-status#accessibility) covers how alerts and banners announce.
782
+ [Feedback and Status](feedback-and-status.md#accessibility) covers how alerts and banners announce.
783
783
 
784
784
  ## Related
785
785
 
786
- [Field](/docs/components/field)
786
+ [Field](../components/field.md)
787
787
 
788
788
  Use for labels and error messages.
789
789
 
790
- [Alert](/docs/components/alert)
790
+ [Alert](../components/alert.md)
791
791
 
792
792
  Use for summaries and failures.
793
793
 
794
- [Toast](/docs/components/toast)
794
+ [Toast](../components/toast.md)
795
795
 
796
796
  Use for background failures.
797
797
 
798
- [Forms](/docs/patterns/forms)
798
+ [Forms](forms.md)
799
799
 
800
800
  Covers layout and actions.
801
801
 
802
- [Feedback and Status](/docs/patterns/feedback-and-status)
802
+ [Feedback and Status](feedback-and-status.md)
803
803
 
804
804
  Covers the Failed and Couldn't load states.
805
805
 
806
- [Empty States](/docs/patterns/empty-states)
806
+ [Empty States](empty-states.md)
807
807
 
808
808
  Covers regions that couldn't load.
@@ -1,23 +1,23 @@
1
1
  # Feedback and Status
2
2
 
3
- Name each system state once, and choose [Toast](/docs/components/toast), [Alert](/docs/components/alert), or [Banner](/docs/components/banner) by urgency.
3
+ Name each system state once, and choose [Toast](../components/toast.md), [Alert](../components/alert.md), or [Banner](../components/banner.md) by urgency.
4
4
 
5
5
  ## Overview
6
6
 
7
7
  Every action needs a response, and every change of state needs a visible result. Two questions pick the component: what the message describes (one action, one section, or the whole product), and how soon the reader must act. Match the weight of the message to the weight of the event, since overused loud feedback trains people to ignore it.
8
8
 
9
- [Loading](/docs/patterns/loading) and [Empty States](/docs/patterns/empty-states) cover the states before content arrives.
9
+ [Loading](loading.md) and [Empty States](empty-states.md) cover the states before content arrives.
10
10
 
11
11
  ## Components
12
12
 
13
13
  | Component | Scope | Lifetime | Typical use |
14
14
  | --- | --- | --- | --- |
15
- | [Field](/docs/components/field) `Field.Error` | One value | Until corrected | Enter 1,250.00 USDC or less |
16
- | [Badge](/docs/components/badge), or `status` on a [Table](/docs/components/table) cell | One record | While the state holds | A transaction or a webhook delivery |
17
- | [Toast](/docs/components/toast) | One action | Seconds | The result of an action the reader started |
18
- | [Alert](/docs/components/alert) | One section | Until resolved | Couldn't load older activity |
19
- | [Banner](/docs/components/banner) | Whole product | Until resolved or dismissed | Testnet faucets are paused for maintenance |
20
- | [AlertDialog](/docs/components/alert-dialog) | One decision | Until answered | Revoke this API key? |
15
+ | [Field](../components/field.md) `Field.Error` | One value | Until corrected | Enter 1,250.00 USDC or less |
16
+ | [Badge](../components/badge.md), or `status` on a [Table](../components/table.md) cell | One record | While the state holds | A transaction or a webhook delivery |
17
+ | [Toast](../components/toast.md) | One action | Seconds | The result of an action the reader started |
18
+ | [Alert](../components/alert.md) | One section | Until resolved | Couldn't load older activity |
19
+ | [Banner](../components/banner.md) | Whole product | Until resolved or dismissed | Testnet faucets are paused for maintenance |
20
+ | [AlertDialog](../components/alert-dialog.md) | One decision | Until answered | Revoke this API key? |
21
21
 
22
22
  * **Toast:** Dismisses itself after five seconds by default, so never put information in it that the reader must keep or act on. Offer its action elsewhere too. Set `timeout: 0` for a toast with Undo, and show critical errors inline instead.
23
23
  * **Alert:** Sits beside the decision it affects, with one action at most. Do not use it for a passing confirmation such as Address copied.
@@ -28,13 +28,13 @@ Every action needs a response, and every change of state needs a visible result.
28
28
  Each state has one word, one component, and one icon.
29
29
 
30
30
  * **Unavailable (No icon):** The value does not exist now, such as a missing price. Show Unavailable in gray in its place.
31
- * **Couldn't Load (AlertCircle):** A request for the region's content failed. Use a negative [Alert](/docs/components/alert) or an [Empty](/docs/components/empty) state, with a retry.
32
- * **Pending (Pending):** Submitted and waiting for inclusion in a block. Use a [Badge](/docs/components/badge) with the icon.
33
- * **Confirmed (CheckCircle):** Included in a block. Use a [Badge](/docs/components/badge) with the icon.
34
- * **Failed (AlertCircle):** Rejected or reverted by the network. Use a [Badge](/docs/components/badge) with the icon, and the reason nearby.
31
+ * **Couldn't Load (AlertCircle):** A request for the region's content failed. Use a negative [Alert](../components/alert.md) or an [Empty](../components/empty.md) state, with a retry.
32
+ * **Pending (Pending):** Submitted and waiting for inclusion in a block. Use a [Badge](../components/badge.md) with the icon.
33
+ * **Confirmed (CheckCircle):** Included in a block. Use a [Badge](../components/badge.md) with the icon.
34
+ * **Failed (AlertCircle):** Rejected or reverted by the network. Use a [Badge](../components/badge.md) with the icon, and the reason nearby.
35
35
  * **Amount Hidden (EyeOff):** The reader hid amounts on this device. Show a fixed mask, read aloud as Amount hidden.
36
36
 
37
- In a [Table](/docs/components/table), set `status` on `Table.Cell` to `warning`, `positive`, or `negative` for Pending, Confirmed, and Failed. The cell colors its text, so keep the same word.
37
+ In a [Table](../components/table.md), set `status` on `Table.Cell` to `warning`, `positive`, or `negative` for Pending, Confirmed, and Failed. The cell colors its text, so keep the same word.
38
38
 
39
39
  ```tsx
40
40
  import { Alert, Badge, ListGroup, style, Surface } from '@tempoxyz/ds'
@@ -145,13 +145,13 @@ namespace styles {
145
145
 
146
146
  [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/StatusVocabulary.tsx)
147
147
 
148
- This reference layout shows five of the states, built from [Surface](/docs/components/surface), [ListGroup](/docs/components/list-group), [Badge](/docs/components/badge), and [Alert](/docs/components/alert).
148
+ This reference layout shows five of the states, built from [Surface](../components/surface.md), [ListGroup](../components/list-group.md), [Badge](../components/badge.md), and [Alert](../components/alert.md).
149
149
 
150
150
  * **Unavailable:** Keep the rest of the row, since the token balance is still known. If the reason helps the reader act, state it nearby.
151
- * **Couldn't load:** Name the content, such as Couldn't load activity. If part of a region failed, keep what loaded and use an alert. If all of it failed, use an [empty state](/docs/patterns/empty-states) with Try again.
152
- * **Pending:** Keep the transaction in activity with its amount and recipient, from submission until inclusion in a block (see [Loading](/docs/patterns/loading#show-pending-transactions)).
153
- * **Failed:** Keep the row in activity and state the reason (see [Errors and Validation](/docs/patterns/errors-and-validation#explain-transaction-failures)).
154
- * **Amount hidden:** Mask every amount, as [Blockchain Values](/docs/patterns/blockchain-values#hidden-amounts) describes.
151
+ * **Couldn't load:** Name the content, such as Couldn't load activity. If part of a region failed, keep what loaded and use an alert. If all of it failed, use an [empty state](empty-states.md) with Try again.
152
+ * **Pending:** Keep the transaction in activity with its amount and recipient, from submission until inclusion in a block (see [Loading](loading.md#show-pending-transactions)).
153
+ * **Failed:** Keep the row in activity and state the reason (see [Errors and Validation](errors-and-validation.md#explain-transaction-failures)).
154
+ * **Amount hidden:** Mask every amount, as [Blockchain Values](blockchain-values.md#hidden-amounts) describes.
155
155
 
156
156
  ## Urgency
157
157
 
@@ -160,11 +160,11 @@ Rank each message before you choose how to show it.
160
160
  * **Low (Toast):** An expected confirmation, such as Address copied.
161
161
  * **Medium (Alert):** Information that affects a decision. Place it beside the decision.
162
162
  * **High (Banner or Alert):** A condition that blocks work or puts funds at risk. Keep it until the condition clears.
163
- * **Critical (AlertDialog):** A decision the reader must make first (see [Destructive Actions](/docs/patterns/destructive-actions)).
163
+ * **Critical (AlertDialog):** A decision the reader must make first (see [Destructive Actions](destructive-actions.md)).
164
164
 
165
165
  ## Intent
166
166
 
167
- Choose the intent from the meaning of the message. Keep it consistent across [Toast](/docs/components/toast), [Alert](/docs/components/alert), and [Banner](/docs/components/banner).
167
+ Choose the intent from the meaning of the message. Keep it consistent across [Toast](../components/toast.md), [Alert](../components/alert.md), and [Banner](../components/banner.md).
168
168
 
169
169
  * **Neutral (neutral):** General information with no judgment.
170
170
  * **Tip (tip):** Helpful context that does not need action.
@@ -471,8 +471,8 @@ namespace styles {
471
471
 
472
472
  * **Default:** No message. Records show their status badge.
473
473
  * **Error:** Couldn't load for a failed request, Failed for a rejected transaction, and a field error for a bad value.
474
- * **Empty:** An empty state that states the cause (see [Empty States](/docs/patterns/empty-states)).
475
- * **Success:** Confirmed on the record, and a positive [Toast](/docs/components/toast) for a finished action.
474
+ * **Empty:** An empty state that states the cause (see [Empty States](empty-states.md)).
475
+ * **Success:** Confirmed on the record, and a positive [Toast](../components/toast.md) for a finished action.
476
476
 
477
477
  ## Content
478
478
 
@@ -484,35 +484,35 @@ namespace styles {
484
484
 
485
485
  * **Toasts (F6):** Toasts are announced, and hover or focus pauses their timers. Pass `priority: 'high'` only for urgent toasts.
486
486
  * **Alerts (alert or status):** Warning and negative alerts interrupt the screen reader. Info and positive alerts announce politely.
487
- * **Banners (role):** A [Banner](/docs/components/banner) renders no live region. Add `role="status"` or `role="alert"` only if it renders after page load.
488
- * **Status Changes:** A change from Pending to Confirmed is not announced. If the reader started the transaction in this session, use a [Toast](/docs/components/toast).
487
+ * **Banners (role):** A [Banner](../components/banner.md) renders no live region. Add `role="status"` or `role="alert"` only if it renders after page load.
488
+ * **Status Changes:** A change from Pending to Confirmed is not announced. If the reader started the transaction in this session, use a [Toast](../components/toast.md).
489
489
 
490
490
  ## Related
491
491
 
492
- [Badge](/docs/components/badge)
492
+ [Badge](../components/badge.md)
493
493
 
494
494
  Use for record status.
495
495
 
496
- [Alert](/docs/components/alert)
496
+ [Alert](../components/alert.md)
497
497
 
498
498
  Use for section messages.
499
499
 
500
- [Banner](/docs/components/banner)
500
+ [Banner](../components/banner.md)
501
501
 
502
502
  Use for product-wide messages.
503
503
 
504
- [Toast](/docs/components/toast)
504
+ [Toast](../components/toast.md)
505
505
 
506
506
  Use for confirmations.
507
507
 
508
- [SecretValue](/docs/components/secret-value)
508
+ [SecretValue](../components/secret-value.md)
509
509
 
510
510
  Use for masked secrets.
511
511
 
512
- [Loading](/docs/patterns/loading)
512
+ [Loading](loading.md)
513
513
 
514
514
  Covers Pending transactions.
515
515
 
516
- [Blockchain Values](/docs/patterns/blockchain-values)
516
+ [Blockchain Values](blockchain-values.md)
517
517
 
518
518
  Covers amounts and addresses.
@@ -6,18 +6,18 @@ Order fields, labels, and actions so a person completes a form in one pass.
6
6
 
7
7
  Ask only for the values the task needs. Remove every field you can derive, default, or ask for later.
8
8
 
9
- This page covers layout, labels, save models, and actions. [Errors and Validation](/docs/patterns/errors-and-validation) covers checking values and reporting problems.
9
+ This page covers layout, labels, save models, and actions. [Errors and Validation](errors-and-validation.md) covers checking values and reporting problems.
10
10
 
11
11
  ## Choosing a Control
12
12
 
13
13
  Choose the control from the shape of the value, not from its look.
14
14
 
15
- * **Free Text (TextInput):** For a name or address. Use a [Textarea](/docs/components/textarea) for a longer memo.
16
- * **An Amount of Money (AmountInput):** [AmountInput](/docs/components/amount-input) sets a decimal keyboard and rejects anything that is not a number.
17
- * **Five or Fewer Options (RadioGroup):** A [RadioGroup](/docs/components/radio-group) keeps every choice visible.
18
- * **Many Options (Select):** A [Select](/docs/components/select). If people need to search, use a [Combobox](/docs/components/combobox).
15
+ * **Free Text (TextInput):** For a name or address. Use a [Textarea](../components/textarea.md) for a longer memo.
16
+ * **An Amount of Money (AmountInput):** [AmountInput](../components/amount-input.md) sets a decimal keyboard and rejects anything that is not a number.
17
+ * **Five or Fewer Options (RadioGroup):** A [RadioGroup](../components/radio-group.md) keeps every choice visible.
18
+ * **Many Options (Select):** A [Select](../components/select.md). If people need to search, use a [Combobox](../components/combobox.md).
19
19
 
20
- **Do:** Show a short set of exclusive options in a [RadioGroup](/docs/components/radio-group).
20
+ **Do:** Show a short set of exclusive options in a [RadioGroup](../components/radio-group.md).
21
21
 
22
22
  ```tsx
23
23
  <Fieldset.Root>
@@ -39,7 +39,7 @@ Choose the control from the shape of the value, not from its look.
39
39
  </Fieldset.Root>
40
40
  ```
41
41
 
42
- **Don't:** Use a [Checkbox](/docs/components/checkbox) for options that exclude each other.
42
+ **Don't:** Use a [Checkbox](../components/checkbox.md) for options that exclude each other.
43
43
 
44
44
  ```tsx
45
45
  <Fieldset.Root>
@@ -225,7 +225,7 @@ namespace styles {
225
225
 
226
226
  [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/WebhookForm.tsx)
227
227
 
228
- This reference layout uses [Surface](/docs/components/surface), [Frame](/docs/components/frame), [Fieldset](/docs/components/fieldset), and [Field](/docs/components/field). Submit an empty URL to show the error, then fix the URL to clear it.
228
+ This reference layout uses [Surface](../components/surface.md), [Frame](../components/frame.md), [Fieldset](../components/fieldset.md), and [Field](../components/field.md). Submit an empty URL to show the error, then fix the URL to clear it.
229
229
 
230
230
  ### Use One Column
231
231
 
@@ -321,7 +321,7 @@ namespace styles {
321
321
 
322
322
  ### Group Related Fields
323
323
 
324
- Wrap the parts of one idea, such as an address, in a [Fieldset](/docs/components/fieldset) with a `Fieldset.Legend`. Set `variant` once on the fieldset, which passes it to every nested `Field.Root`. If a form outgrows two or three groups, split it into steps with a [Stepper](/docs/components/stepper).
324
+ Wrap the parts of one idea, such as an address, in a [Fieldset](../components/fieldset.md) with a `Fieldset.Legend`. Set `variant` once on the fieldset, which passes it to every nested `Field.Root`. If a form outgrows two or three groups, split it into steps with a [Stepper](../components/stepper.md).
325
325
 
326
326
  **Do:** Group related fields under one legend and one variant.
327
327
 
@@ -369,7 +369,7 @@ Every control needs a visible `Field.Label`, written as a short noun. Put format
369
369
 
370
370
  ### Put Labels Above Fields
371
371
 
372
- [Field](/docs/components/field) puts the label 12px above every control. The label stays visible during input, and long labels wrap without narrowing the control.
372
+ [Field](../components/field.md) puts the label 12px above every control. The label stays visible during input, and long labels wrap without narrowing the control.
373
373
 
374
374
  * **Text Field (TextInput):** The label sits above the field, and the message below it.
375
375
  * **Switch (Switch):** The label sits above the switch, as it does above a text field.
@@ -505,11 +505,11 @@ namespace styles {
505
505
  ### Choose a Save Model
506
506
 
507
507
  * **Save on Submit (Checkbox):** For values that work together. Nothing changes until you press the primary action.
508
- * **Save on Change (Switch):** For independent settings. Confirm each change with a [Toast](/docs/components/toast), and revert it if it fails.
508
+ * **Save on Change (Switch):** For independent settings. Confirm each change with a [Toast](../components/toast.md), and revert it if it fails.
509
509
 
510
- Do not mix the two in one section. If a person leaves a long form with unsaved changes, confirm the discard (see [Destructive Actions](/docs/patterns/destructive-actions)).
510
+ Do not mix the two in one section. If a person leaves a long form with unsaved changes, confirm the discard (see [Destructive Actions](destructive-actions.md)).
511
511
 
512
- **Do:** Use a [Switch](/docs/components/switch) for a setting that applies immediately.
512
+ **Do:** Use a [Switch](../components/switch.md) for a setting that applies immediately.
513
513
 
514
514
  ```tsx
515
515
  <Field.Root>
@@ -532,7 +532,7 @@ Do not mix the two in one section. If a person leaves a long form with unsaved c
532
532
 
533
533
  ## Submitting
534
534
 
535
- Keep the submit button enabled and validate on press (see [Errors and Validation](/docs/patterns/errors-and-validation#keep-submit-buttons-enabled)). Set `loading` on it while the request runs, to block a second submit.
535
+ Keep the submit button enabled and validate on press (see [Errors and Validation](errors-and-validation.md#keep-submit-buttons-enabled)). Set `loading` on it while the request runs, to block a second submit.
536
536
 
537
537
  ### Order Actions
538
538
 
@@ -631,10 +631,10 @@ Use one primary button, so Enter submits the form. Label it with the result, suc
631
631
  ## States
632
632
 
633
633
  * **Default:** Prefill a value when it is known, such as the connected address.
634
- * **Loading (Skeleton):** Wrap each control in a [Skeleton](/docs/components/skeleton) while saved values load.
635
- * **Error (Field.Error):** An error under each invalid field (see [Errors and Validation](/docs/patterns/errors-and-validation)).
634
+ * **Loading (Skeleton):** Wrap each control in a [Skeleton](../components/skeleton.md) while saved values load.
635
+ * **Error (Field.Error):** An error under each invalid field (see [Errors and Validation](errors-and-validation.md)).
636
636
  * **Disabled (disabled):** Set it on a fieldset to disable a whole group, and state the reason nearby.
637
- * **Success (success):** Close the form and confirm with a [Toast](/docs/components/toast). `success` sets no ARIA state, so confirm in text too.
637
+ * **Success (success):** Close the form and confirm with a [Toast](../components/toast.md). `success` sets no ARIA state, so confirm in text too.
638
638
 
639
639
  ## Content
640
640
 
@@ -650,30 +650,30 @@ Use one primary button, so Enter submits the form. Label it with the result, suc
650
650
 
651
651
  ## Related
652
652
 
653
- [Field](/docs/components/field)
653
+ [Field](../components/field.md)
654
654
 
655
655
  Use for labels, descriptions, and errors.
656
656
 
657
- [Fieldset](/docs/components/fieldset)
657
+ [Fieldset](../components/fieldset.md)
658
658
 
659
659
  Use for grouping fields.
660
660
 
661
- [TextInput](/docs/components/text-input)
661
+ [TextInput](../components/text-input.md)
662
662
 
663
663
  Use for text.
664
664
 
665
- [AmountInput](/docs/components/amount-input)
665
+ [AmountInput](../components/amount-input.md)
666
666
 
667
667
  Use for amounts of money.
668
668
 
669
- [Button](/docs/components/button)
669
+ [Button](../components/button.md)
670
670
 
671
671
  Use for submit and cancel actions.
672
672
 
673
- [Errors and Validation](/docs/patterns/errors-and-validation)
673
+ [Errors and Validation](errors-and-validation.md)
674
674
 
675
675
  Covers checking values.
676
676
 
677
- [Loading](/docs/patterns/loading)
677
+ [Loading](loading.md)
678
678
 
679
679
  Covers submit and load states.
@@ -6,10 +6,10 @@ Show that content or an action is on its way, with an indicator to fit the wait.
6
6
 
7
7
  Loading applies at three scales: a region that fetches data, an action that waits for a response, and a transaction that waits for a block. At each scale, keep the layout still, block duplicate requests, and end in a result or an error.
8
8
 
9
- * **Shape Known (Skeleton):** The shape is known, such as a balance or a row value. Outline it with [Skeleton](/docs/components/skeleton).
10
- * **Shape Unknown (Spinner):** Only the arrival is known, such as for search results. Center one named [Spinner](/docs/components/spinner) in the region.
11
- * **Inside a Control (loading):** An action runs in place. Use a busy [Button](/docs/components/button), or [LoadingDots](/docs/components/loading-dots) inside a sentence.
12
- * **Progress Known (Progress):** The work is countable, such as months exported or files uploaded. Show [Progress](/docs/components/progress).
9
+ * **Shape Known (Skeleton):** The shape is known, such as a balance or a row value. Outline it with [Skeleton](../components/skeleton.md).
10
+ * **Shape Unknown (Spinner):** Only the arrival is known, such as for search results. Center one named [Spinner](../components/spinner.md) in the region.
11
+ * **Inside a Control (loading):** An action runs in place. Use a busy [Button](../components/button.md), or [LoadingDots](../components/loading-dots.md) inside a sentence.
12
+ * **Progress Known (Progress):** The work is countable, such as months exported or files uploaded. Show [Progress](../components/progress.md).
13
13
 
14
14
  ## Structure
15
15
 
@@ -112,7 +112,7 @@ namespace styles {
112
112
 
113
113
  [View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Patterns/BalanceSkeleton.tsx)
114
114
 
115
- This reference layout uses [Skeleton](/docs/components/skeleton) for the total and for each token value in [ListGroup](/docs/components/list-group), so the token labels stay on screen. A refresh keeps the old values on screen.
115
+ This reference layout uses [Skeleton](../components/skeleton.md) for the total and for each token value in [ListGroup](../components/list-group.md), so the token labels stay on screen. A refresh keeps the old values on screen.
116
116
 
117
117
  ## Timing
118
118
 
@@ -127,7 +127,7 @@ Set `loading` on a pressed button immediately, whatever the wait.
127
127
 
128
128
  ## Skeleton
129
129
 
130
- Wrap the real content in a [Skeleton](/docs/components/skeleton) and set `show={false}` on arrival, instead of swapping elements. The skeleton takes the exact size of the content.
130
+ Wrap the real content in a [Skeleton](../components/skeleton.md) and set `show={false}` on arrival, instead of swapping elements. The skeleton takes the exact size of the content.
131
131
 
132
132
  **Do:** Shape skeletons like the content, so the layout holds still when it arrives.
133
133
 
@@ -287,7 +287,7 @@ namespace styles {
287
287
 
288
288
  ## Pending Actions
289
289
 
290
- Show the pending state on the pressed [Button](/docs/components/button) itself. Inside a line of text, such as a balance that refreshes beside its label, use [LoadingDots](/docs/components/loading-dots).
290
+ Show the pending state on the pressed [Button](../components/button.md) itself. Inside a line of text, such as a balance that refreshes beside its label, use [LoadingDots](../components/loading-dots.md).
291
291
 
292
292
  **Do:** Set `loading` on the button that started the action.
293
293
 
@@ -306,7 +306,7 @@ Show the pending state on the pressed [Button](/docs/components/button) itself.
306
306
 
307
307
  ### Update Optimistically Only When You Can Undo It
308
308
 
309
- Apply a change before the server confirms it only if the change is low-risk, easy to reverse, and almost always succeeds, such as renaming an API key or flipping a notification [Switch](/docs/components/switch).
309
+ Apply a change before the server confirms it only if the change is low-risk, easy to reverse, and almost always succeeds, such as renaming an API key or flipping a notification [Switch](../components/switch.md).
310
310
 
311
311
  * **Restore on Failure (Toast):** Restore the previous value and state the failure, such as Couldn't rename key.
312
312
  * **Never for Onchain State:** Never update onchain state, such as balances, optimistically. Show the transaction as Pending.
@@ -526,7 +526,7 @@ namespace styles {
526
526
 
527
527
  ## Progress
528
528
 
529
- Use [Progress](/docs/components/progress) when the work is measurable, such as files uploaded or steps completed. Use `value={null}` only if the remaining work is unknown.
529
+ Use [Progress](../components/progress.md) when the work is measurable, such as files uploaded or steps completed. Use `value={null}` only if the remaining work is unknown.
530
530
 
531
531
  **Do:** Show how much of a long task is done.
532
532
 
@@ -582,9 +582,9 @@ namespace styles {
582
582
  ## States
583
583
 
584
584
  * **Error:** Couldn't load in place of the placeholder, with Try again. Never leave an indicator spinning after a failure.
585
- * **Empty:** An [Empty](/docs/components/empty) state after loading finishes with no content. Never show it while loading.
585
+ * **Empty:** An [Empty](../components/empty.md) state after loading finishes with no content. Never show it while loading.
586
586
  * **Disabled:** Controls that depend on the data stay disabled until it arrives, such as Send before balances load.
587
- * **Success:** The content replaces the placeholder. Confirm finished actions with a [Toast](/docs/components/toast).
587
+ * **Success:** The content replaces the placeholder. Confirm finished actions with a [Toast](../components/toast.md).
588
588
 
589
589
  ## Content
590
590
 
@@ -593,7 +593,7 @@ namespace styles {
593
593
 
594
594
  ## Accessibility
595
595
 
596
- * **Named Indicators (aria-label):** [Spinner](/docs/components/spinner), [LoadingDots](/docs/components/loading-dots), and the row loaders are named Loading. Pass `aria-label` to name what loads.
596
+ * **Named Indicators (aria-label):** [Spinner](../components/spinner.md), [LoadingDots](../components/loading-dots.md), and the row loaders are named Loading. Pass `aria-label` to name what loads.
597
597
  * **Skeleton (aria-busy):** Marks the region busy, blocks pointer input, and hides placeholder text from screen readers.
598
598
  * **Busy Buttons (aria-busy):** A loading button is marked busy. Announce the result separately, such as in a toast.
599
599
  * **Reduced Motion (prefers-reduced-motion):** Every sweep, rotation, and pulse stops. The indicators still mark work in progress.
@@ -601,30 +601,30 @@ namespace styles {
601
601
 
602
602
  ## Related
603
603
 
604
- [Skeleton](/docs/components/skeleton)
604
+ [Skeleton](../components/skeleton.md)
605
605
 
606
606
  Use for content with a known shape.
607
607
 
608
- [Spinner](/docs/components/spinner)
608
+ [Spinner](../components/spinner.md)
609
609
 
610
610
  Use for content with an unknown shape.
611
611
 
612
- [Progress](/docs/components/progress)
612
+ [Progress](../components/progress.md)
613
613
 
614
614
  Use for measurable work.
615
615
 
616
- [Button](/docs/components/button)
616
+ [Button](../components/button.md)
617
617
 
618
618
  Use for the `loading` state.
619
619
 
620
- [Feedback and Status](/docs/patterns/feedback-and-status)
620
+ [Feedback and Status](feedback-and-status.md)
621
621
 
622
622
  Covers Pending and Confirmed.
623
623
 
624
- [Empty States](/docs/patterns/empty-states)
624
+ [Empty States](empty-states.md)
625
625
 
626
626
  Covers what follows an empty result.
627
627
 
628
- [Payments](/docs/patterns/payments)
628
+ [Payments](payments.md)
629
629
 
630
630
  Covers the send and review flow.