@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.
Files changed (262) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +10 -2
  3. package/dist/accordion.d.ts +561 -0
  4. package/dist/accordion.js +24 -0
  5. package/dist/agent.d.ts +2 -0
  6. package/dist/agent.js +7 -0
  7. package/dist/alert-dialog.d.ts +231 -0
  8. package/dist/alert-dialog.js +33 -0
  9. package/dist/async-options.d.ts +18 -0
  10. package/dist/async-options.js +40 -0
  11. package/dist/autocomplete.d.ts +384 -0
  12. package/dist/autocomplete.js +344 -0
  13. package/dist/avatar.d.ts +40 -0
  14. package/dist/avatar.js +28 -0
  15. package/dist/button.d.ts +52 -0
  16. package/dist/button.js +43 -0
  17. package/dist/calendar-context.d.ts +10 -0
  18. package/dist/calendar-context.js +7 -0
  19. package/dist/calendar.d.ts +311 -0
  20. package/dist/calendar.js +349 -0
  21. package/dist/carousel.d.ts +236 -0
  22. package/dist/carousel.js +204 -0
  23. package/dist/checkbox.d.ts +211 -0
  24. package/dist/checkbox.js +151 -0
  25. package/dist/children.d.ts +41 -0
  26. package/dist/children.js +135 -0
  27. package/dist/collapsible.d.ts +54 -0
  28. package/dist/collapsible.js +18 -0
  29. package/dist/color-picker.d.ts +187 -0
  30. package/dist/color-picker.js +158 -0
  31. package/dist/color.d.ts +2 -0
  32. package/dist/color.js +21 -0
  33. package/dist/combobox.d.ts +517 -0
  34. package/dist/combobox.js +531 -0
  35. package/dist/command.d.ts +322 -0
  36. package/dist/command.js +345 -0
  37. package/dist/controller-target.d.ts +49 -0
  38. package/dist/controller-target.js +112 -0
  39. package/dist/create-parts.d.ts +126 -0
  40. package/dist/create-parts.js +206 -0
  41. package/dist/date-input.d.ts +133 -0
  42. package/dist/date-input.js +31 -0
  43. package/dist/date-picker.d.ts +328 -0
  44. package/dist/date-picker.js +354 -0
  45. package/dist/date.d.ts +2 -0
  46. package/dist/date.js +59 -0
  47. package/dist/dialog-parts.d.ts +259 -0
  48. package/dist/dialog-parts.js +300 -0
  49. package/dist/dialog.d.ts +251 -0
  50. package/dist/dialog.js +25 -0
  51. package/dist/drawer.d.ts +304 -0
  52. package/dist/drawer.js +373 -0
  53. package/dist/editor-context.d.ts +4 -0
  54. package/dist/editor-context.js +5 -0
  55. package/dist/field-context.d.ts +26 -0
  56. package/dist/field-context.js +44 -0
  57. package/dist/field.d.ts +154 -0
  58. package/dist/field.js +240 -0
  59. package/dist/file-input.d.ts +212 -0
  60. package/dist/file-input.js +255 -0
  61. package/dist/form-inputs.d.ts +16 -0
  62. package/dist/form-inputs.js +25 -0
  63. package/dist/gesture.d.ts +1 -0
  64. package/dist/gesture.js +15 -0
  65. package/dist/history.d.ts +2 -0
  66. package/dist/history.js +11 -0
  67. package/dist/hover-card.d.ts +137 -0
  68. package/dist/hover-card.js +153 -0
  69. package/dist/image-cropper.d.ts +74 -0
  70. package/dist/image-cropper.js +36 -0
  71. package/dist/image.d.ts +2 -0
  72. package/dist/image.js +5 -0
  73. package/dist/index.d.ts +59 -0
  74. package/dist/index.js +60 -0
  75. package/dist/input.d.ts +120 -0
  76. package/dist/input.js +73 -0
  77. package/dist/item-icon.d.ts +34 -0
  78. package/dist/item-icon.js +63 -0
  79. package/dist/label.d.ts +16 -0
  80. package/dist/label.js +8 -0
  81. package/dist/lifecycle.d.ts +11 -0
  82. package/dist/lifecycle.js +91 -0
  83. package/dist/list-items.d.ts +38 -0
  84. package/dist/list-items.js +59 -0
  85. package/dist/list-text.d.ts +7 -0
  86. package/dist/list-text.js +15 -0
  87. package/dist/listbox.d.ts +273 -0
  88. package/dist/listbox.js +126 -0
  89. package/dist/menu.d.ts +678 -0
  90. package/dist/menu.js +607 -0
  91. package/dist/menubar-context.d.ts +5 -0
  92. package/dist/menubar-context.js +5 -0
  93. package/dist/menubar.d.ts +61 -0
  94. package/dist/menubar.js +48 -0
  95. package/dist/meter.d.ts +41 -0
  96. package/dist/meter.js +37 -0
  97. package/dist/navigation-menu.d.ts +228 -0
  98. package/dist/navigation-menu.js +195 -0
  99. package/dist/number-input.d.ts +176 -0
  100. package/dist/number-input.js +231 -0
  101. package/dist/number.d.ts +2 -0
  102. package/dist/number.js +39 -0
  103. package/dist/nuxt/entries.json +977 -0
  104. package/dist/nuxt/module.d.ts +18 -0
  105. package/dist/nuxt/module.js +31 -0
  106. package/dist/nuxt/registrations.d.ts +22 -0
  107. package/dist/nuxt/registrations.js +22 -0
  108. package/dist/observe.d.ts +2 -0
  109. package/dist/observe.js +7 -0
  110. package/dist/otp-input.d.ts +142 -0
  111. package/dist/otp-input.js +130 -0
  112. package/dist/overlays.d.ts +40 -0
  113. package/dist/overlays.js +118 -0
  114. package/dist/pagination.d.ts +201 -0
  115. package/dist/pagination.js +146 -0
  116. package/dist/password-input.d.ts +144 -0
  117. package/dist/password-input.js +134 -0
  118. package/dist/popover.d.ts +211 -0
  119. package/dist/popover.js +258 -0
  120. package/dist/popup.d.ts +60 -0
  121. package/dist/popup.js +89 -0
  122. package/dist/preferences.d.ts +44 -0
  123. package/dist/preferences.js +102 -0
  124. package/dist/primitive.d.ts +2 -0
  125. package/dist/primitive.js +11 -0
  126. package/dist/progress.d.ts +41 -0
  127. package/dist/progress.js +37 -0
  128. package/dist/radio.d.ts +164 -0
  129. package/dist/radio.js +145 -0
  130. package/dist/rating.d.ts +149 -0
  131. package/dist/rating.js +146 -0
  132. package/dist/renderless.d.ts +4 -0
  133. package/dist/renderless.js +28 -0
  134. package/dist/resizable.d.ts +54 -0
  135. package/dist/resizable.js +22 -0
  136. package/dist/scroll-area.d.ts +72 -0
  137. package/dist/scroll-area.js +77 -0
  138. package/dist/segmented-control.d.ts +151 -0
  139. package/dist/segmented-control.js +110 -0
  140. package/dist/segmented-input.d.ts +76 -0
  141. package/dist/segmented-input.js +115 -0
  142. package/dist/select.d.ts +458 -0
  143. package/dist/select.js +468 -0
  144. package/dist/separator.d.ts +14 -0
  145. package/dist/separator.js +8 -0
  146. package/dist/shortcuts.d.ts +32 -0
  147. package/dist/shortcuts.js +56 -0
  148. package/dist/slider.d.ts +65 -0
  149. package/dist/slider.js +194 -0
  150. package/dist/switch.d.ts +103 -0
  151. package/dist/switch.js +71 -0
  152. package/dist/tabs.d.ts +338 -0
  153. package/dist/tabs.js +27 -0
  154. package/dist/text-control.d.ts +89 -0
  155. package/dist/text-control.js +51 -0
  156. package/dist/text-match.d.ts +2 -0
  157. package/dist/text-match.js +7 -0
  158. package/dist/textarea.d.ts +106 -0
  159. package/dist/textarea.js +68 -0
  160. package/dist/time-input.d.ts +131 -0
  161. package/dist/time-input.js +32 -0
  162. package/dist/timeline.d.ts +81 -0
  163. package/dist/timeline.js +30 -0
  164. package/dist/toast-parts.d.ts +203 -0
  165. package/dist/toast-parts.js +270 -0
  166. package/dist/toast.d.ts +2 -0
  167. package/dist/toast.js +21 -0
  168. package/dist/toggle-props.d.ts +22 -0
  169. package/dist/toggle-props.js +14 -0
  170. package/dist/toggle.d.ts +199 -0
  171. package/dist/toggle.js +129 -0
  172. package/dist/token-input.d.ts +136 -0
  173. package/dist/token-input.js +214 -0
  174. package/dist/toolbar-context.d.ts +7 -0
  175. package/dist/toolbar-context.js +20 -0
  176. package/dist/toolbar.d.ts +120 -0
  177. package/dist/toolbar.js +77 -0
  178. package/dist/tooltip.d.ts +160 -0
  179. package/dist/tooltip.js +224 -0
  180. package/dist/tree.d.ts +300 -0
  181. package/dist/tree.js +209 -0
  182. package/dist/trigger-menu.d.ts +452 -0
  183. package/dist/trigger-menu.js +254 -0
  184. package/dist/use-primitive.d.ts +132 -0
  185. package/dist/use-primitive.js +462 -0
  186. package/dist/waterfall.d.ts +201 -0
  187. package/dist/waterfall.js +171 -0
  188. package/docs/README.md +89 -0
  189. package/docs/agents.md +1523 -0
  190. package/docs/components/accordion.md +1369 -0
  191. package/docs/components/alert-dialog.md +799 -0
  192. package/docs/components/autocomplete.md +1857 -0
  193. package/docs/components/avatar.md +272 -0
  194. package/docs/components/button.md +435 -0
  195. package/docs/components/calendar.md +1589 -0
  196. package/docs/components/carousel.md +1171 -0
  197. package/docs/components/checkbox.md +1008 -0
  198. package/docs/components/collapsible.md +536 -0
  199. package/docs/components/color-picker.md +706 -0
  200. package/docs/components/combobox.md +3504 -0
  201. package/docs/components/command.md +1481 -0
  202. package/docs/components/date-input.md +536 -0
  203. package/docs/components/date-picker.md +1244 -0
  204. package/docs/components/dialog.md +1397 -0
  205. package/docs/components/drawer.md +1166 -0
  206. package/docs/components/field.md +538 -0
  207. package/docs/components/file-input.md +611 -0
  208. package/docs/components/hover-card.md +505 -0
  209. package/docs/components/image-cropper.md +556 -0
  210. package/docs/components/input.md +306 -0
  211. package/docs/components/label.md +203 -0
  212. package/docs/components/listbox.md +1004 -0
  213. package/docs/components/menu.md +1229 -0
  214. package/docs/components/menubar.md +443 -0
  215. package/docs/components/meter.md +315 -0
  216. package/docs/components/navigation-menu.md +1523 -0
  217. package/docs/components/number-input.md +1029 -0
  218. package/docs/components/otp-input.md +512 -0
  219. package/docs/components/pagination.md +613 -0
  220. package/docs/components/password-input.md +649 -0
  221. package/docs/components/popover.md +1448 -0
  222. package/docs/components/preferences.md +208 -0
  223. package/docs/components/progress.md +423 -0
  224. package/docs/components/radio.md +785 -0
  225. package/docs/components/rating.md +416 -0
  226. package/docs/components/resizable.md +910 -0
  227. package/docs/components/scroll-area.md +915 -0
  228. package/docs/components/segmented-control.md +435 -0
  229. package/docs/components/select.md +2015 -0
  230. package/docs/components/separator.md +229 -0
  231. package/docs/components/slider.md +1084 -0
  232. package/docs/components/switch.md +565 -0
  233. package/docs/components/tabs.md +944 -0
  234. package/docs/components/textarea.md +299 -0
  235. package/docs/components/time-input.md +224 -0
  236. package/docs/components/timeline.md +654 -0
  237. package/docs/components/toast.md +1224 -0
  238. package/docs/components/toggle.md +500 -0
  239. package/docs/components/token-input.md +953 -0
  240. package/docs/components/toolbar.md +739 -0
  241. package/docs/components/tooltip.md +818 -0
  242. package/docs/components/tree.md +1306 -0
  243. package/docs/components/trigger-menu.md +1223 -0
  244. package/docs/components/waterfall.md +717 -0
  245. package/docs/controllers.md +71 -0
  246. package/docs/core.md +8027 -0
  247. package/docs/custom-parts.md +89 -0
  248. package/docs/first-component.md +83 -0
  249. package/docs/forms.md +122 -0
  250. package/docs/installation.md +72 -0
  251. package/docs/introduction.md +32 -0
  252. package/docs/lists-and-menus.md +122 -0
  253. package/docs/llms.txt +1502 -0
  254. package/docs/parts-and-composition.md +85 -0
  255. package/docs/popups.md +108 -0
  256. package/docs/rendering.md +56 -0
  257. package/docs/server-rendering.md +180 -0
  258. package/docs/state-and-events.md +100 -0
  259. package/docs/styling-and-animation.md +148 -0
  260. package/docs/utilities/async-options.md +348 -0
  261. package/docs/utilities/shortcuts.md +159 -0
  262. 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.