@ui-sdk/vue 0.0.0-stage → 0.1.0-beta.1
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/LICENSE +202 -0
- package/README.md +10 -2
- package/dist/accordion.d.ts +561 -0
- package/dist/accordion.js +24 -0
- package/dist/agent.d.ts +2 -0
- package/dist/agent.js +7 -0
- package/dist/alert-dialog.d.ts +231 -0
- package/dist/alert-dialog.js +33 -0
- package/dist/async-options.d.ts +18 -0
- package/dist/async-options.js +40 -0
- package/dist/autocomplete.d.ts +384 -0
- package/dist/autocomplete.js +344 -0
- package/dist/avatar.d.ts +40 -0
- package/dist/avatar.js +28 -0
- package/dist/button.d.ts +52 -0
- package/dist/button.js +43 -0
- package/dist/calendar-context.d.ts +10 -0
- package/dist/calendar-context.js +7 -0
- package/dist/calendar.d.ts +311 -0
- package/dist/calendar.js +349 -0
- package/dist/carousel.d.ts +236 -0
- package/dist/carousel.js +204 -0
- package/dist/checkbox.d.ts +211 -0
- package/dist/checkbox.js +151 -0
- package/dist/children.d.ts +41 -0
- package/dist/children.js +135 -0
- package/dist/collapsible.d.ts +54 -0
- package/dist/collapsible.js +18 -0
- package/dist/color-picker.d.ts +187 -0
- package/dist/color-picker.js +158 -0
- package/dist/color.d.ts +2 -0
- package/dist/color.js +21 -0
- package/dist/combobox.d.ts +517 -0
- package/dist/combobox.js +531 -0
- package/dist/command.d.ts +322 -0
- package/dist/command.js +345 -0
- package/dist/controller-target.d.ts +49 -0
- package/dist/controller-target.js +112 -0
- package/dist/create-parts.d.ts +126 -0
- package/dist/create-parts.js +206 -0
- package/dist/date-input.d.ts +133 -0
- package/dist/date-input.js +31 -0
- package/dist/date-picker.d.ts +328 -0
- package/dist/date-picker.js +354 -0
- package/dist/date.d.ts +2 -0
- package/dist/date.js +59 -0
- package/dist/dialog-parts.d.ts +259 -0
- package/dist/dialog-parts.js +300 -0
- package/dist/dialog.d.ts +251 -0
- package/dist/dialog.js +25 -0
- package/dist/drawer.d.ts +304 -0
- package/dist/drawer.js +373 -0
- package/dist/editor-context.d.ts +4 -0
- package/dist/editor-context.js +5 -0
- package/dist/field-context.d.ts +26 -0
- package/dist/field-context.js +44 -0
- package/dist/field.d.ts +154 -0
- package/dist/field.js +240 -0
- package/dist/file-input.d.ts +212 -0
- package/dist/file-input.js +255 -0
- package/dist/form-inputs.d.ts +16 -0
- package/dist/form-inputs.js +25 -0
- package/dist/gesture.d.ts +1 -0
- package/dist/gesture.js +15 -0
- package/dist/history.d.ts +2 -0
- package/dist/history.js +11 -0
- package/dist/hover-card.d.ts +137 -0
- package/dist/hover-card.js +153 -0
- package/dist/image-cropper.d.ts +74 -0
- package/dist/image-cropper.js +36 -0
- package/dist/image.d.ts +2 -0
- package/dist/image.js +5 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.js +60 -0
- package/dist/input.d.ts +120 -0
- package/dist/input.js +73 -0
- package/dist/item-icon.d.ts +34 -0
- package/dist/item-icon.js +63 -0
- package/dist/label.d.ts +16 -0
- package/dist/label.js +8 -0
- package/dist/lifecycle.d.ts +11 -0
- package/dist/lifecycle.js +91 -0
- package/dist/list-items.d.ts +38 -0
- package/dist/list-items.js +59 -0
- package/dist/list-text.d.ts +7 -0
- package/dist/list-text.js +15 -0
- package/dist/listbox.d.ts +273 -0
- package/dist/listbox.js +126 -0
- package/dist/menu.d.ts +678 -0
- package/dist/menu.js +607 -0
- package/dist/menubar-context.d.ts +5 -0
- package/dist/menubar-context.js +5 -0
- package/dist/menubar.d.ts +61 -0
- package/dist/menubar.js +48 -0
- package/dist/meter.d.ts +41 -0
- package/dist/meter.js +37 -0
- package/dist/navigation-menu.d.ts +228 -0
- package/dist/navigation-menu.js +195 -0
- package/dist/number-input.d.ts +176 -0
- package/dist/number-input.js +231 -0
- package/dist/number.d.ts +2 -0
- package/dist/number.js +39 -0
- package/dist/nuxt/entries.json +977 -0
- package/dist/nuxt/module.d.ts +18 -0
- package/dist/nuxt/module.js +31 -0
- package/dist/nuxt/registrations.d.ts +22 -0
- package/dist/nuxt/registrations.js +22 -0
- package/dist/observe.d.ts +2 -0
- package/dist/observe.js +7 -0
- package/dist/otp-input.d.ts +142 -0
- package/dist/otp-input.js +130 -0
- package/dist/overlays.d.ts +40 -0
- package/dist/overlays.js +118 -0
- package/dist/pagination.d.ts +201 -0
- package/dist/pagination.js +146 -0
- package/dist/password-input.d.ts +144 -0
- package/dist/password-input.js +134 -0
- package/dist/popover.d.ts +211 -0
- package/dist/popover.js +258 -0
- package/dist/popup.d.ts +60 -0
- package/dist/popup.js +89 -0
- package/dist/preferences.d.ts +44 -0
- package/dist/preferences.js +102 -0
- package/dist/primitive.d.ts +2 -0
- package/dist/primitive.js +11 -0
- package/dist/progress.d.ts +41 -0
- package/dist/progress.js +37 -0
- package/dist/radio.d.ts +164 -0
- package/dist/radio.js +145 -0
- package/dist/rating.d.ts +149 -0
- package/dist/rating.js +146 -0
- package/dist/renderless.d.ts +4 -0
- package/dist/renderless.js +28 -0
- package/dist/resizable.d.ts +54 -0
- package/dist/resizable.js +22 -0
- package/dist/scroll-area.d.ts +72 -0
- package/dist/scroll-area.js +77 -0
- package/dist/segmented-control.d.ts +151 -0
- package/dist/segmented-control.js +110 -0
- package/dist/segmented-input.d.ts +76 -0
- package/dist/segmented-input.js +115 -0
- package/dist/select.d.ts +458 -0
- package/dist/select.js +468 -0
- package/dist/separator.d.ts +14 -0
- package/dist/separator.js +8 -0
- package/dist/shortcuts.d.ts +32 -0
- package/dist/shortcuts.js +56 -0
- package/dist/slider.d.ts +65 -0
- package/dist/slider.js +194 -0
- package/dist/switch.d.ts +103 -0
- package/dist/switch.js +71 -0
- package/dist/tabs.d.ts +338 -0
- package/dist/tabs.js +27 -0
- package/dist/text-control.d.ts +89 -0
- package/dist/text-control.js +51 -0
- package/dist/text-match.d.ts +2 -0
- package/dist/text-match.js +7 -0
- package/dist/textarea.d.ts +106 -0
- package/dist/textarea.js +68 -0
- package/dist/time-input.d.ts +131 -0
- package/dist/time-input.js +32 -0
- package/dist/timeline.d.ts +81 -0
- package/dist/timeline.js +30 -0
- package/dist/toast-parts.d.ts +203 -0
- package/dist/toast-parts.js +270 -0
- package/dist/toast.d.ts +2 -0
- package/dist/toast.js +21 -0
- package/dist/toggle-props.d.ts +22 -0
- package/dist/toggle-props.js +14 -0
- package/dist/toggle.d.ts +199 -0
- package/dist/toggle.js +129 -0
- package/dist/token-input.d.ts +136 -0
- package/dist/token-input.js +214 -0
- package/dist/toolbar-context.d.ts +7 -0
- package/dist/toolbar-context.js +20 -0
- package/dist/toolbar.d.ts +120 -0
- package/dist/toolbar.js +77 -0
- package/dist/tooltip.d.ts +160 -0
- package/dist/tooltip.js +224 -0
- package/dist/tree.d.ts +300 -0
- package/dist/tree.js +209 -0
- package/dist/trigger-menu.d.ts +452 -0
- package/dist/trigger-menu.js +254 -0
- package/dist/use-primitive.d.ts +132 -0
- package/dist/use-primitive.js +462 -0
- package/dist/waterfall.d.ts +201 -0
- package/dist/waterfall.js +171 -0
- package/docs/README.md +89 -0
- package/docs/agents.md +1523 -0
- package/docs/components/accordion.md +1369 -0
- package/docs/components/alert-dialog.md +799 -0
- package/docs/components/autocomplete.md +1857 -0
- package/docs/components/avatar.md +272 -0
- package/docs/components/button.md +435 -0
- package/docs/components/calendar.md +1589 -0
- package/docs/components/carousel.md +1171 -0
- package/docs/components/checkbox.md +1008 -0
- package/docs/components/collapsible.md +536 -0
- package/docs/components/color-picker.md +706 -0
- package/docs/components/combobox.md +3504 -0
- package/docs/components/command.md +1481 -0
- package/docs/components/date-input.md +536 -0
- package/docs/components/date-picker.md +1244 -0
- package/docs/components/dialog.md +1397 -0
- package/docs/components/drawer.md +1166 -0
- package/docs/components/field.md +538 -0
- package/docs/components/file-input.md +611 -0
- package/docs/components/hover-card.md +505 -0
- package/docs/components/image-cropper.md +556 -0
- package/docs/components/input.md +306 -0
- package/docs/components/label.md +203 -0
- package/docs/components/listbox.md +1004 -0
- package/docs/components/menu.md +1229 -0
- package/docs/components/menubar.md +443 -0
- package/docs/components/meter.md +315 -0
- package/docs/components/navigation-menu.md +1523 -0
- package/docs/components/number-input.md +1029 -0
- package/docs/components/otp-input.md +512 -0
- package/docs/components/pagination.md +613 -0
- package/docs/components/password-input.md +649 -0
- package/docs/components/popover.md +1448 -0
- package/docs/components/preferences.md +208 -0
- package/docs/components/progress.md +423 -0
- package/docs/components/radio.md +785 -0
- package/docs/components/rating.md +416 -0
- package/docs/components/resizable.md +910 -0
- package/docs/components/scroll-area.md +915 -0
- package/docs/components/segmented-control.md +435 -0
- package/docs/components/select.md +2015 -0
- package/docs/components/separator.md +229 -0
- package/docs/components/slider.md +1084 -0
- package/docs/components/switch.md +565 -0
- package/docs/components/tabs.md +944 -0
- package/docs/components/textarea.md +299 -0
- package/docs/components/time-input.md +224 -0
- package/docs/components/timeline.md +654 -0
- package/docs/components/toast.md +1224 -0
- package/docs/components/toggle.md +500 -0
- package/docs/components/token-input.md +953 -0
- package/docs/components/toolbar.md +739 -0
- package/docs/components/tooltip.md +818 -0
- package/docs/components/tree.md +1306 -0
- package/docs/components/trigger-menu.md +1223 -0
- package/docs/components/waterfall.md +717 -0
- package/docs/controllers.md +71 -0
- package/docs/core.md +8027 -0
- package/docs/custom-parts.md +89 -0
- package/docs/first-component.md +83 -0
- package/docs/forms.md +122 -0
- package/docs/installation.md +72 -0
- package/docs/introduction.md +32 -0
- package/docs/lists-and-menus.md +122 -0
- package/docs/llms.txt +1502 -0
- package/docs/parts-and-composition.md +85 -0
- package/docs/popups.md +108 -0
- package/docs/rendering.md +56 -0
- package/docs/server-rendering.md +180 -0
- package/docs/state-and-events.md +100 -0
- package/docs/styling-and-animation.md +148 -0
- package/docs/utilities/async-options.md +348 -0
- package/docs/utilities/shortcuts.md +159 -0
- package/package.json +352 -3
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Separator
|
|
2
|
+
|
|
3
|
+
Divide groups of content with a horizontal or vertical line.
|
|
4
|
+
|
|
5
|
+
Use a separator between groups of content that a reader should take as separate, like a profile's header and its bio.
|
|
6
|
+
|
|
7
|
+
```vue title="basic.vue"
|
|
8
|
+
<script setup lang="ts">
|
|
9
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<div data-slot="stack">
|
|
14
|
+
<div data-slot="stack">
|
|
15
|
+
<h3>Hollis Grant</h3>
|
|
16
|
+
<p data-slot="hint">hollis@example.com</p>
|
|
17
|
+
</div>
|
|
18
|
+
<Separator />
|
|
19
|
+
<p>
|
|
20
|
+
Designs the billing and onboarding flows, and reviews every new pricing
|
|
21
|
+
page.
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
24
|
+
</template>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Read the profile with a screen reader. It announces a separator between Hollis Grant's name and email and the bio below.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install @ui-sdk/vue @ui-sdk/core
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
Import the separator and put it between two groups of content:
|
|
38
|
+
|
|
39
|
+
```vue
|
|
40
|
+
<script setup lang="ts">
|
|
41
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
<section>
|
|
46
|
+
<h2>Hollis Grant</h2>
|
|
47
|
+
<Separator />
|
|
48
|
+
<p>Designs the billing and onboarding flows.</p>
|
|
49
|
+
</section>
|
|
50
|
+
</template>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Build Your Own
|
|
54
|
+
|
|
55
|
+
`@ui-sdk/vue/separator` comes with a ready-made Separator. If you'd like to build your own, with your own name, start from the `separator` primitive in `@ui-sdk/core`:
|
|
56
|
+
|
|
57
|
+
```ts title="divider.ts"
|
|
58
|
+
import { separator } from "@ui-sdk/core/separator"
|
|
59
|
+
import { createParts } from "@ui-sdk/vue/primitive"
|
|
60
|
+
|
|
61
|
+
const { Root: Divider } = createParts(separator, { root: "div" })
|
|
62
|
+
|
|
63
|
+
export { Divider }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```vue
|
|
67
|
+
<template>
|
|
68
|
+
<Divider orientation="vertical" />
|
|
69
|
+
</template>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`Divider` keeps the behavior, state and data attributes of the ready-made Separator: the `separator` role, `aria-orientation` and `data-orientation`. See [Rendering](../rendering.md) and [Custom Parts](../custom-parts.md) for more.
|
|
73
|
+
|
|
74
|
+
## Vertical
|
|
75
|
+
|
|
76
|
+
Set `orientation="vertical"` for a line between items in a row. It takes the row's height.
|
|
77
|
+
|
|
78
|
+
```vue title="vertical.vue"
|
|
79
|
+
<script setup lang="ts">
|
|
80
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
81
|
+
</script>
|
|
82
|
+
|
|
83
|
+
<template>
|
|
84
|
+
<nav aria-label="Legal" data-slot="row">
|
|
85
|
+
<a href="#">Privacy</a>
|
|
86
|
+
<Separator orientation="vertical" />
|
|
87
|
+
<a href="#">Terms</a>
|
|
88
|
+
<Separator orientation="vertical" />
|
|
89
|
+
<a href="#">Cookies</a>
|
|
90
|
+
</nav>
|
|
91
|
+
</template>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Read across Privacy, Terms and Cookies. A screen reader announces a vertical separator between each link.
|
|
95
|
+
|
|
96
|
+
## Stacked Content
|
|
97
|
+
|
|
98
|
+
A vertical separator stretches to the tallest item in its row, so it spans a number and its label.
|
|
99
|
+
|
|
100
|
+
```vue title="menu.vue"
|
|
101
|
+
<script setup lang="ts">
|
|
102
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<template>
|
|
106
|
+
<div data-slot="row">
|
|
107
|
+
<div data-slot="stack">
|
|
108
|
+
<span>24</span>
|
|
109
|
+
<span data-slot="hint">Projects</span>
|
|
110
|
+
</div>
|
|
111
|
+
<Separator orientation="vertical" />
|
|
112
|
+
<div data-slot="stack">
|
|
113
|
+
<span>1,280</span>
|
|
114
|
+
<span data-slot="hint">Followers</span>
|
|
115
|
+
</div>
|
|
116
|
+
<Separator orientation="vertical" />
|
|
117
|
+
<div data-slot="stack">
|
|
118
|
+
<span>312</span>
|
|
119
|
+
<span data-slot="hint">Following</span>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</template>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Compare the lines with the stats. Each one runs the full height of Projects, Followers and Following.
|
|
126
|
+
|
|
127
|
+
## Rows
|
|
128
|
+
|
|
129
|
+
Put a separator between each pair of rows to divide a list of details.
|
|
130
|
+
|
|
131
|
+
```vue title="list.vue"
|
|
132
|
+
<script setup lang="ts">
|
|
133
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
134
|
+
</script>
|
|
135
|
+
|
|
136
|
+
<template>
|
|
137
|
+
<div data-slot="stack">
|
|
138
|
+
<dl>
|
|
139
|
+
<dt>Plan</dt>
|
|
140
|
+
<dd>Pro</dd>
|
|
141
|
+
</dl>
|
|
142
|
+
<Separator />
|
|
143
|
+
<dl>
|
|
144
|
+
<dt>Seats</dt>
|
|
145
|
+
<dd>8 of 10</dd>
|
|
146
|
+
</dl>
|
|
147
|
+
<Separator />
|
|
148
|
+
<dl>
|
|
149
|
+
<dt>Renews</dt>
|
|
150
|
+
<dd>December 1, 2026</dd>
|
|
151
|
+
</dl>
|
|
152
|
+
</div>
|
|
153
|
+
</template>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Read the plan details with a screen reader. It announces a separator between Plan, Seats and Renews.
|
|
157
|
+
|
|
158
|
+
## Decorative
|
|
159
|
+
|
|
160
|
+
Set `decorative` when the line adds no information. Here, the word “or” already says the two ways to sign in are separate, so a screen reader skips the lines.
|
|
161
|
+
|
|
162
|
+
```vue title="decorative.vue"
|
|
163
|
+
<script setup lang="ts">
|
|
164
|
+
import { Separator } from "@ui-sdk/vue/separator"
|
|
165
|
+
</script>
|
|
166
|
+
|
|
167
|
+
<template>
|
|
168
|
+
<div data-slot="stack">
|
|
169
|
+
<button type="button" data-variant="solid">Sign In with Passkey</button>
|
|
170
|
+
<div data-slot="row">
|
|
171
|
+
<Separator decorative />
|
|
172
|
+
<span>or</span>
|
|
173
|
+
<Separator decorative />
|
|
174
|
+
</div>
|
|
175
|
+
<button type="button">Email Me a Link</button>
|
|
176
|
+
</div>
|
|
177
|
+
</template>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Read from Sign In with Passkey to Email Me a Link with a screen reader. It reads “or” and skips the lines.
|
|
181
|
+
|
|
182
|
+
A decorative separator gets `role="none"` and no `aria-orientation`. It keeps `data-orientation` for styling.
|
|
183
|
+
|
|
184
|
+
## Custom Rendering
|
|
185
|
+
|
|
186
|
+
Use the `#render` slot to use a different element, such as an `<hr>`, and bind the supplied `props` to it. See [Parts and Composition](../parts-and-composition.md) for reading the separator's state.
|
|
187
|
+
|
|
188
|
+
## Styling
|
|
189
|
+
|
|
190
|
+
The separator is unstyled. Give it a background, a height when it's horizontal and a width when it's vertical, and use `data-orientation` to tell them apart. A vertical line takes its row's height with `align-self: stretch`.
|
|
191
|
+
|
|
192
|
+
The separator has a `data-slot` of `separator`, and its `data-orientation` is listed under [Data Attributes](#data-attributes).
|
|
193
|
+
|
|
194
|
+
## Data Attributes
|
|
195
|
+
|
|
196
|
+
### Separator
|
|
197
|
+
`[data-slot="separator"]`
|
|
198
|
+
|
|
199
|
+
- `data-orientation` (`horizontal`, `vertical`): Which way the line runs.
|
|
200
|
+
|
|
201
|
+
## API Reference
|
|
202
|
+
|
|
203
|
+
Props are the same as below.
|
|
204
|
+
|
|
205
|
+
### Separator
|
|
206
|
+
|
|
207
|
+
- `orientation?` (`SeparatorOrientation`): Which way the line runs. A vertical separator divides items in a row.
|
|
208
|
+
- `decorative?` (`boolean`): Hides the separator from assistive technology with `role="none"`, for a line that's only visual. Leave it off when the separator divides content a screen reader should hear as separate, like groups of menu items.
|
|
209
|
+
- `debug?` (`boolean`): Logs every state change with its reason to the console, in development builds.
|
|
210
|
+
|
|
211
|
+
### State
|
|
212
|
+
|
|
213
|
+
What render functions and state-based class names receive.
|
|
214
|
+
|
|
215
|
+
- `orientation` (`SeparatorOrientation`): Which way the line runs.
|
|
216
|
+
|
|
217
|
+
## Accessibility
|
|
218
|
+
|
|
219
|
+
The component follows the [WAI-ARIA separator role](https://www.w3.org/TR/wai-aria-1.2/#separator). A separator divides content a screen reader should hear as separate, and it's announced with `role="separator"` and its `aria-orientation`. A decorative separator is only visual: it gets `role="none"`, so screen readers skip it. Use `decorative` only when the surrounding content already conveys the division. Either way, a separator never takes focus, so Tab moves past it.
|
|
220
|
+
|
|
221
|
+
### Tested Behavior
|
|
222
|
+
|
|
223
|
+
Every line below is an automated test.
|
|
224
|
+
|
|
225
|
+
- A separator is announced with its orientation.
|
|
226
|
+
- A separator can't be focused.
|
|
227
|
+
- A separator carries its orientation for styling.
|
|
228
|
+
|
|
229
|
+
Runs in React, Vue and web components.
|