@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.
- package/dist/docs/AGENTS.md +9 -0
- package/dist/docs/components/accordion.md +489 -0
- package/dist/docs/components/address-card.md +147 -0
- package/dist/docs/components/agent-logo.md +194 -0
- package/dist/docs/components/alert-dialog.md +631 -0
- package/dist/docs/components/alert.md +448 -0
- package/dist/docs/components/amount-input.md +305 -0
- package/dist/docs/components/amount.md +794 -0
- package/dist/docs/components/app-shell.md +559 -0
- package/dist/docs/components/asset-chip.md +294 -0
- package/dist/docs/components/autocomplete.md +619 -0
- package/dist/docs/components/avatar.md +321 -0
- package/dist/docs/components/badge.md +339 -0
- package/dist/docs/components/badged-logo.md +116 -0
- package/dist/docs/components/banner.md +379 -0
- package/dist/docs/components/bar-chart.md +208 -0
- package/dist/docs/components/breadcrumbs.md +380 -0
- package/dist/docs/components/button-group.md +286 -0
- package/dist/docs/components/button.md +650 -0
- package/dist/docs/components/calendar.md +375 -0
- package/dist/docs/components/callout.md +96 -0
- package/dist/docs/components/checkbox-group.md +521 -0
- package/dist/docs/components/checkbox.md +467 -0
- package/dist/docs/components/choice-group.md +516 -0
- package/dist/docs/components/choicebox.md +641 -0
- package/dist/docs/components/code.md +100 -0
- package/dist/docs/components/combobox.md +939 -0
- package/dist/docs/components/container.md +257 -0
- package/dist/docs/components/copy-button.md +642 -0
- package/dist/docs/components/date-picker.md +514 -0
- package/dist/docs/components/dialog.md +1332 -0
- package/dist/docs/components/drawer.md +966 -0
- package/dist/docs/components/empty.md +340 -0
- package/dist/docs/components/field.md +570 -0
- package/dist/docs/components/fieldset.md +398 -0
- package/dist/docs/components/frame.md +434 -0
- package/dist/docs/components/gauge.md +299 -0
- package/dist/docs/components/get-started-visual.md +117 -0
- package/dist/docs/components/grid.md +288 -0
- package/dist/docs/components/hero-visual.md +155 -0
- package/dist/docs/components/hex.md +487 -0
- package/dist/docs/components/icon-tile.md +292 -0
- package/dist/docs/components/identicon.md +371 -0
- package/dist/docs/components/inline.md +233 -0
- package/dist/docs/components/inset.md +225 -0
- package/dist/docs/components/kbd.md +423 -0
- package/dist/docs/components/list-group.md +981 -0
- package/dist/docs/components/loading-dots.md +237 -0
- package/dist/docs/components/menu.md +934 -0
- package/dist/docs/components/native-select.md +204 -0
- package/dist/docs/components/network-logo.md +248 -0
- package/dist/docs/components/number-field.md +543 -0
- package/dist/docs/components/otp-field.md +616 -0
- package/dist/docs/components/pagination.md +516 -0
- package/dist/docs/components/popover.md +544 -0
- package/dist/docs/components/progress.md +388 -0
- package/dist/docs/components/qr.md +314 -0
- package/dist/docs/components/radio-group.md +528 -0
- package/dist/docs/components/secret-value.md +406 -0
- package/dist/docs/components/select.md +751 -0
- package/dist/docs/components/separator.md +379 -0
- package/dist/docs/components/sidebar-menu.md +922 -0
- package/dist/docs/components/skeleton.md +517 -0
- package/dist/docs/components/slider.md +539 -0
- package/dist/docs/components/snippet.md +424 -0
- package/dist/docs/components/spinner.md +216 -0
- package/dist/docs/components/split-bar.md +139 -0
- package/dist/docs/components/split-button.md +464 -0
- package/dist/docs/components/stack.md +299 -0
- package/dist/docs/components/status-chip.md +226 -0
- package/dist/docs/components/status-indicator.md +119 -0
- package/dist/docs/components/status-row.md +174 -0
- package/dist/docs/components/stepper.md +451 -0
- package/dist/docs/components/success-hero.md +157 -0
- package/dist/docs/components/surface.md +639 -0
- package/dist/docs/components/switch.md +472 -0
- package/dist/docs/components/table.md +967 -0
- package/dist/docs/components/tabs.md +627 -0
- package/dist/docs/components/tempo-logo.md +185 -0
- package/dist/docs/components/text-input.md +624 -0
- package/dist/docs/components/textarea.md +352 -0
- package/dist/docs/components/toast.md +535 -0
- package/dist/docs/components/token-logo.md +371 -0
- package/dist/docs/components/token.md +247 -0
- package/dist/docs/components/tooltip.md +490 -0
- package/dist/docs/components/verification-code.md +116 -0
- package/dist/docs/components/visual.md +249 -0
- package/dist/docs/components.md +203 -0
- package/dist/docs/foundations/accessibility.md +377 -0
- package/dist/docs/foundations/agents.md +150 -0
- package/dist/docs/foundations/color.md +522 -0
- package/dist/docs/foundations/content/tone.md +194 -0
- package/dist/docs/foundations/content/voice.md +194 -0
- package/dist/docs/foundations/content/writing-style.md +406 -0
- package/dist/docs/foundations/iconography.md +282 -0
- package/dist/docs/foundations/intent.md +360 -0
- package/dist/docs/foundations/layout.md +508 -0
- package/dist/docs/foundations/linter.md +296 -0
- package/dist/docs/foundations/motion.md +151 -0
- package/dist/docs/foundations/radius-and-padding.md +86 -0
- package/dist/docs/foundations/typography.md +266 -0
- package/dist/docs/index.md +137 -0
- package/dist/docs/introduction/faq.md +132 -0
- package/dist/docs/introduction/getting-started.md +377 -0
- package/dist/docs/patterns/blockchain-values.md +709 -0
- package/dist/docs/patterns/dashboards.md +638 -0
- package/dist/docs/patterns/destructive-actions.md +626 -0
- package/dist/docs/patterns/empty-states.md +612 -0
- package/dist/docs/patterns/errors-and-validation.md +808 -0
- package/dist/docs/patterns/feedback-and-status.md +518 -0
- package/dist/docs/patterns/forms.md +679 -0
- package/dist/docs/patterns/loading.md +630 -0
- package/dist/docs/patterns/navigation.md +397 -0
- package/dist/docs/patterns/payments.md +765 -0
- package/dist/docs/patterns/responsive-layout.md +997 -0
- package/dist/docs/patterns/tables-and-lists.md +964 -0
- package/dist/docs/products/tempo-console.md +671 -0
- package/dist/docs/products/tempo-performance.md +437 -0
- package/dist/docs/products/tempo-wallet.md +438 -0
- package/dist/web/components/OtpField.css +1 -1
- package/dist/web/components/OtpField.d.ts +1 -1
- package/dist/web/components/OtpField.d.ts.map +1 -1
- package/dist/web/components/OtpField.js +3 -4
- package/dist/web/components/OtpField.js.map +1 -1
- package/dist/web/components/OtpField.js.zyzz.json +1 -1
- package/dist/web/index.js.zyzz.json +1 -1
- package/package.json +1 -1
- package/src/web/components/OtpField.tsx +2 -24
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
# Separator
|
|
2
|
+
|
|
3
|
+
Draws a rule between groups of content.
|
|
4
|
+
|
|
5
|
+
[View source and API](https://github.com/tempoxyz/ds/blob/main/src/web/components/Separator.tsx)
|
|
6
|
+
|
|
7
|
+
Figma: [Elements/Divider](https://www.figma.com/design/yE96kcymnNR88PJp6G1sPs?node-id=5227-3269)
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Separator renders a 1px rule between thematic groups, such as menu sections or toolbar clusters. A horizontal rule sits centered in a 16px row. With `children`, it centers a short label between two rules, such as `or` between two ways to sign in.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
|
|
15
|
+
### Basic
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { Separator, style } from '@tempoxyz/ds'
|
|
19
|
+
|
|
20
|
+
export const fill = true
|
|
21
|
+
export function Demo() {
|
|
22
|
+
return (
|
|
23
|
+
<div {...styles.stack()}>
|
|
24
|
+
<span>Above</span>
|
|
25
|
+
<Separator />
|
|
26
|
+
<span>Below</span>
|
|
27
|
+
</div>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
namespace styles {
|
|
32
|
+
export const stack = style({
|
|
33
|
+
display: 'flex',
|
|
34
|
+
flexDirection: 'column',
|
|
35
|
+
gap: '12',
|
|
36
|
+
maxWidth: '16rem !custom',
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Separator/Basic.tsx)
|
|
42
|
+
|
|
43
|
+
### Orientation
|
|
44
|
+
|
|
45
|
+
Set `orientation` to `horizontal` (default) or `vertical`.
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
import { Separator, style } from '@tempoxyz/ds'
|
|
49
|
+
|
|
50
|
+
export function Demo() {
|
|
51
|
+
return (
|
|
52
|
+
<div {...styles.row()}>
|
|
53
|
+
<span>Left</span>
|
|
54
|
+
<Separator orientation="vertical" />
|
|
55
|
+
<span>Right</span>
|
|
56
|
+
</div>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
namespace styles {
|
|
61
|
+
export const row = style({ alignItems: 'center', display: 'flex', gap: '12', height: '24' })
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Separator/Orientation.tsx)
|
|
66
|
+
|
|
67
|
+
### Label
|
|
68
|
+
|
|
69
|
+
Pass a short label as `children` to join two alternatives. A vertical separator ignores it.
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
import { Button, Separator, style } from '@tempoxyz/ds'
|
|
73
|
+
|
|
74
|
+
export function Demo() {
|
|
75
|
+
return (
|
|
76
|
+
<div {...styles.stack()}>
|
|
77
|
+
<Button variant="secondary">Continue with passkey</Button>
|
|
78
|
+
<Separator>or</Separator>
|
|
79
|
+
<Button variant="secondary">Continue with email</Button>
|
|
80
|
+
</div>
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
namespace styles {
|
|
85
|
+
export const stack = style({ display: 'grid', gap: '16', width: '320' })
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
[View example source](https://github.com/tempoxyz/ds/blob/main/docs/src/examples/demos/Separator/Label.tsx)
|
|
90
|
+
|
|
91
|
+
## Anatomy
|
|
92
|
+
|
|
93
|
+
Import the component and assemble its parts.
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
import { Separator } from '@tempoxyz/ds'
|
|
97
|
+
|
|
98
|
+
<Separator />
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Guidelines
|
|
102
|
+
|
|
103
|
+
### When to Use
|
|
104
|
+
|
|
105
|
+
* Divide groups that spacing alone does not separate, such as line items and a total.
|
|
106
|
+
* Divide clusters of toolbar controls, with `orientation="vertical"`.
|
|
107
|
+
* Join two alternatives with a label, such as `or` between two ways to sign in.
|
|
108
|
+
|
|
109
|
+
### When Not to Use
|
|
110
|
+
|
|
111
|
+
* Use [ListGroup](/docs/components/list-group) or [Table](/docs/components/table) for lists of records. They draw their own dividers.
|
|
112
|
+
* Use `SidebarMenu.Group` in a [SidebarMenu](/docs/components/sidebar-menu) and `Menu.Separator` in a [Menu](/docs/components/menu).
|
|
113
|
+
|
|
114
|
+
### Try Space First
|
|
115
|
+
|
|
116
|
+
A larger gap separates most groups, such as a [Stack](/docs/components/stack) with `gap="24"`. Add a separator only if the groups still run together, or one row must stand apart, such as a total.
|
|
117
|
+
|
|
118
|
+
**Do:** Separate the total from the line items above it.
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
/**
|
|
122
|
+
* Do example for "Try Space First" on the Separator page.
|
|
123
|
+
* Separate the total from the line items above it.
|
|
124
|
+
* @module
|
|
125
|
+
*/
|
|
126
|
+
import { Separator, style } from '@tempoxyz/ds'
|
|
127
|
+
|
|
128
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
129
|
+
export function Demo() {
|
|
130
|
+
return (
|
|
131
|
+
<div {...styles.summary()}>
|
|
132
|
+
<div {...styles.row()}>
|
|
133
|
+
<span>Amount</span>
|
|
134
|
+
<span>250.00 USDC</span>
|
|
135
|
+
</div>
|
|
136
|
+
<div {...styles.row()}>
|
|
137
|
+
<span>Network fee</span>
|
|
138
|
+
<span>0.01 USDC</span>
|
|
139
|
+
</div>
|
|
140
|
+
<Separator />
|
|
141
|
+
<div {...styles.total()}>
|
|
142
|
+
<span>Total</span>
|
|
143
|
+
<span>250.01 USDC</span>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
namespace styles {
|
|
150
|
+
export const row = style({
|
|
151
|
+
color: 'content.secondary',
|
|
152
|
+
display: 'flex',
|
|
153
|
+
justifyContent: 'space-between',
|
|
154
|
+
typography: 'body.b2',
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
export const summary = style({
|
|
158
|
+
display: 'flex',
|
|
159
|
+
flexDirection: 'column',
|
|
160
|
+
rowGap: '12',
|
|
161
|
+
width: '100% !custom',
|
|
162
|
+
})
|
|
163
|
+
|
|
164
|
+
export const total = style({
|
|
165
|
+
color: 'content.primary',
|
|
166
|
+
display: 'flex',
|
|
167
|
+
justifyContent: 'space-between',
|
|
168
|
+
typography: 'body.b2Strong',
|
|
169
|
+
})
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Don't:** Rule off every row.
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
/** Don't example for "Try Space First" on the Separator page. Don't rule off every row. @module */
|
|
177
|
+
import { Separator, style } from '@tempoxyz/ds'
|
|
178
|
+
|
|
179
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
180
|
+
export function Demo() {
|
|
181
|
+
return (
|
|
182
|
+
<div {...styles.summary()}>
|
|
183
|
+
<Separator />
|
|
184
|
+
<div {...styles.row()}>
|
|
185
|
+
<span>Amount</span>
|
|
186
|
+
<span>250.00 USDC</span>
|
|
187
|
+
</div>
|
|
188
|
+
<Separator />
|
|
189
|
+
<div {...styles.row()}>
|
|
190
|
+
<span>Network fee</span>
|
|
191
|
+
<span>0.01 USDC</span>
|
|
192
|
+
</div>
|
|
193
|
+
<Separator />
|
|
194
|
+
<div {...styles.total()}>
|
|
195
|
+
<span>Total</span>
|
|
196
|
+
<span>250.01 USDC</span>
|
|
197
|
+
</div>
|
|
198
|
+
<Separator />
|
|
199
|
+
</div>
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
namespace styles {
|
|
204
|
+
export const row = style({
|
|
205
|
+
color: 'content.secondary',
|
|
206
|
+
display: 'flex',
|
|
207
|
+
justifyContent: 'space-between',
|
|
208
|
+
typography: 'body.b2',
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
export const summary = style({
|
|
212
|
+
display: 'flex',
|
|
213
|
+
flexDirection: 'column',
|
|
214
|
+
rowGap: '12',
|
|
215
|
+
width: '100% !custom',
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
export const total = style({
|
|
219
|
+
color: 'content.primary',
|
|
220
|
+
display: 'flex',
|
|
221
|
+
justifyContent: 'space-between',
|
|
222
|
+
typography: 'body.b2Strong',
|
|
223
|
+
})
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Keep Rules Inside Containers
|
|
228
|
+
|
|
229
|
+
The edge of a [Surface](/docs/components/surface) or popup already ends the group.
|
|
230
|
+
|
|
231
|
+
**Do:** Place separators only between groups.
|
|
232
|
+
|
|
233
|
+
```tsx
|
|
234
|
+
/**
|
|
235
|
+
* Do example for "Keep Rules Inside Containers" on the Separator page.
|
|
236
|
+
* Place separators only between groups.
|
|
237
|
+
* @module
|
|
238
|
+
*/
|
|
239
|
+
import { Separator, style, Surface } from '@tempoxyz/ds'
|
|
240
|
+
|
|
241
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
242
|
+
export function Demo() {
|
|
243
|
+
return (
|
|
244
|
+
<div {...styles.canvas()}>
|
|
245
|
+
<Surface size="medium" {...styles.summary()}>
|
|
246
|
+
<div {...styles.row()}>
|
|
247
|
+
<span>Amount</span>
|
|
248
|
+
<span>250.00 USDC</span>
|
|
249
|
+
</div>
|
|
250
|
+
<div {...styles.row()}>
|
|
251
|
+
<span>Network fee</span>
|
|
252
|
+
<span>0.01 USDC</span>
|
|
253
|
+
</div>
|
|
254
|
+
<Separator />
|
|
255
|
+
<div {...styles.total()}>
|
|
256
|
+
<span>Total</span>
|
|
257
|
+
<span>250.01 USDC</span>
|
|
258
|
+
</div>
|
|
259
|
+
</Surface>
|
|
260
|
+
</div>
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
namespace styles {
|
|
265
|
+
export const canvas = style({
|
|
266
|
+
backgroundColor: 'background.primary',
|
|
267
|
+
borderRadius: 'sm',
|
|
268
|
+
boxSizing: 'border-box',
|
|
269
|
+
padding: '12',
|
|
270
|
+
width: '100% !custom',
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
export const row = style({
|
|
274
|
+
color: 'content.secondary',
|
|
275
|
+
display: 'flex',
|
|
276
|
+
justifyContent: 'space-between',
|
|
277
|
+
typography: 'body.b2',
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
export const summary = style({ display: 'flex', flexDirection: 'column', rowGap: '12' })
|
|
281
|
+
|
|
282
|
+
export const total = style({
|
|
283
|
+
color: 'content.primary',
|
|
284
|
+
display: 'flex',
|
|
285
|
+
justifyContent: 'space-between',
|
|
286
|
+
typography: 'body.b2Strong',
|
|
287
|
+
})
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Don't:** Place a separator at the top or bottom edge of a Surface.
|
|
292
|
+
|
|
293
|
+
```tsx
|
|
294
|
+
/**
|
|
295
|
+
* Don't example for "Keep Rules Inside Containers" on the Separator page.
|
|
296
|
+
* Don't place a separator at the top or bottom edge of a Surface.
|
|
297
|
+
* @module
|
|
298
|
+
*/
|
|
299
|
+
import { Separator, style, Surface } from '@tempoxyz/ds'
|
|
300
|
+
|
|
301
|
+
/** Renders the static preview, which the guideline card shows inert. */
|
|
302
|
+
export function Demo() {
|
|
303
|
+
return (
|
|
304
|
+
<div {...styles.canvas()}>
|
|
305
|
+
<Surface size="medium" {...styles.summary()}>
|
|
306
|
+
<Separator />
|
|
307
|
+
<div {...styles.row()}>
|
|
308
|
+
<span>Amount</span>
|
|
309
|
+
<span>250.00 USDC</span>
|
|
310
|
+
</div>
|
|
311
|
+
<div {...styles.row()}>
|
|
312
|
+
<span>Network fee</span>
|
|
313
|
+
<span>0.01 USDC</span>
|
|
314
|
+
</div>
|
|
315
|
+
<Separator />
|
|
316
|
+
<div {...styles.total()}>
|
|
317
|
+
<span>Total</span>
|
|
318
|
+
<span>250.01 USDC</span>
|
|
319
|
+
</div>
|
|
320
|
+
<Separator />
|
|
321
|
+
</Surface>
|
|
322
|
+
</div>
|
|
323
|
+
)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
namespace styles {
|
|
327
|
+
export const canvas = style({
|
|
328
|
+
backgroundColor: 'background.primary',
|
|
329
|
+
borderRadius: 'sm',
|
|
330
|
+
boxSizing: 'border-box',
|
|
331
|
+
padding: '12',
|
|
332
|
+
width: '100% !custom',
|
|
333
|
+
})
|
|
334
|
+
|
|
335
|
+
export const row = style({
|
|
336
|
+
color: 'content.secondary',
|
|
337
|
+
display: 'flex',
|
|
338
|
+
justifyContent: 'space-between',
|
|
339
|
+
typography: 'body.b2',
|
|
340
|
+
})
|
|
341
|
+
|
|
342
|
+
export const summary = style({ display: 'flex', flexDirection: 'column', rowGap: '12' })
|
|
343
|
+
|
|
344
|
+
export const total = style({
|
|
345
|
+
color: 'content.primary',
|
|
346
|
+
display: 'flex',
|
|
347
|
+
justifyContent: 'space-between',
|
|
348
|
+
typography: 'body.b2Strong',
|
|
349
|
+
})
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Accessibility
|
|
354
|
+
|
|
355
|
+
### Semantics
|
|
356
|
+
|
|
357
|
+
* **Element (separator):** Exposed as a boundary between groups. Some screen readers announce "separator", and others skip it.
|
|
358
|
+
* **Orientation (aria-orientation):** Follows `orientation`. A vertical separator stretches to the height of its row, at least 1em.
|
|
359
|
+
* **Label (div):** A separator hides its children from screen readers, so a labeled one renders a `div` without the role. Screen readers read the label in place, and the rules stay hidden.
|
|
360
|
+
* **No Focus:** Not focusable, with no keyboard behavior.
|
|
361
|
+
|
|
362
|
+
### Your Responsibilities
|
|
363
|
+
|
|
364
|
+
* **Use Headings for Structure (SC 1.3.1):** A separator does not [name the group](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) that follows it.
|
|
365
|
+
* **Separate Meaningful Groups:** Use it only between meaningful groups. Draw a decorative line with a CSS border.
|
|
366
|
+
|
|
367
|
+
## Related
|
|
368
|
+
|
|
369
|
+
[Stack](/docs/components/stack)
|
|
370
|
+
|
|
371
|
+
Use for spacing groups apart.
|
|
372
|
+
|
|
373
|
+
[ListGroup](/docs/components/list-group)
|
|
374
|
+
|
|
375
|
+
Use for divided lists.
|
|
376
|
+
|
|
377
|
+
[Menu](/docs/components/menu)
|
|
378
|
+
|
|
379
|
+
Use for separators between menu groups.
|