@fusion.dev/helix-headless 0.51.0 → 0.52.0

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.
@@ -9988,7 +9988,7 @@
9988
9988
  }
9989
9989
  }
9990
9990
  ],
9991
- "description": "The leading padding the track keeps for a slide to draw its own edge in.\n\nA styled track carries one so a slide's shadow and focus ring have\nsomewhere to go: a scroll container clips at its padding box, and a slide\nflush against that edge loses whatever it paints outside itself. The\nheadless tier has no stylesheet and so no padding, and this reads zero\nthere, which is why both tiers can share the arithmetic below.\n\nPhysical sides rather than logical, to match the physical `offsetLeft` and\n`offsetTop` it is subtracted from. The bleed is one length on all four\nsides, so the two agree whatever the writing mode; if that stops being\ntrue, this is the method that has to know."
9991
+ "description": "The leading padding the track keeps for a slide to draw its own edge in.\n\nA styled track carries one so a slide's shadow and focus ring have\nsomewhere to go: a scroll container clips at its padding box, and a slide\nflush against that edge loses whatever it paints outside itself. The\nheadless tier has no stylesheet and so no padding, and this reads zero\nthere, which is why both tiers can share the arithmetic below.\n\nPhysical sides rather than logical, to match the physical `offsetLeft` and\n`offsetTop` it is subtracted from.\n\n**The side read is the side the track scrolls on, and not one side standing\nfor four.** They are one length on a track laid out at the defaults and\nstop being one the moment a consumer raises `--carousel-bleed`, which the\nhook exists to invite: a slide on `--helix-shadow-lg` reaches 44px and is\ntold to ask for it. So a horizontal track's room is its inline padding and\na vertical one's is its block padding, and each sheet puts the bleed where\nthe scroller clips. Reading one side for both would have a vertical track\nmeasuring a length nothing on its axis was laid out with."
9992
9992
  },
9993
9993
  {
9994
9994
  "kind": "method",
@@ -10594,7 +10594,7 @@
10594
10594
  "helix": {
10595
10595
  "category": "layout",
10596
10596
  "since": "0.1.0",
10597
- "status": "experimental",
10597
+ "status": "stable",
10598
10598
  "documentation": "https://fusion.dev/helix/components/carousel",
10599
10599
  "aliases": [
10600
10600
  "Slider",
@@ -80928,7 +80928,7 @@
80928
80928
  "declarations": [
80929
80929
  {
80930
80930
  "kind": "class",
80931
- "description": "**One axis, and nesting is how you get two.** A splitter inside a splitter\ngives back the cross, and gives the three-pane and four-pane arrangements a\nsingle divider never had.\n\n**Where two of them cross there is a corner, and it moves both.** A splitter\nslotted into a pane of another, at right angles to it, grows a handle at the\ncrossing: `move` under the pointer, both arrow axes on the keyboard, and a\ndrag that carries the two positions at once. It appears at `firstUpdated`\nrather than in the served markup, being an affordance rather than content,\nand a splitter with no corner yet is a splitter with two working dividers.\n\n**The divider is a real `role=\"separator\"` with `aria-valuenow`**, moved by\nthe arrow keys as well as by pointer, with `Home` and `End` taking it to its\nbounds. A drag in progress is a state rather than `:hover`, so both dividers\na corner moves are lit for as long as it moves them.\n\n**It goes where it is put, all the way to either end.** `min` and `max` are\nnothing and everything unless a consumer says otherwise, because a divider\nthat stops short of the edge gives a reader no way to put a pane away.\n\n**A pane can be shut, and that is not the same as a divider at the edge.**\nThe geometry is identical and the knowledge is not: only a shut pane knows\nwhere to open back to. So `collapsed` is a second state rather than a reading\nof the position, and the position it opens to is the one collapsing never\noverwrote. `collapsed-size` keeps a sliver showing where a pane has a tab\nstrip worth leaving, and collapse overrides `min` and `max`, which is what\nthose are for.",
80931
+ "description": "**One axis, and nesting is how you get two.** A splitter inside a splitter\ngives back the cross, and gives the three-pane and four-pane arrangements a\nsingle divider never had.\n\n**Where two of them cross there is a corner, and it moves both.** A splitter\nslotted into a pane of another, at right angles to it, grows a handle at the\ncrossing: `move` under the pointer, both arrow axes on the keyboard, and a\ndrag that carries the two positions at once. It appears at `firstUpdated`\nrather than in the served markup, being an affordance rather than content,\nand a splitter with no corner yet is a splitter with two working dividers.\n\n**The divider is a real `role=\"separator\"` with `aria-valuenow`**, moved by\nthe arrow keys as well as by pointer, with `Home` and `End` taking it to its\nbounds. A drag in progress is a state rather than `:hover`, so both dividers\na corner moves are lit for as long as it moves them.\n\n**It goes where it is put, all the way to either end.** `min` and `max` are\nnothing and everything unless a consumer says otherwise, because a divider\nthat stops short of the edge gives a reader no way to put a pane away.\n\n**A pane can be shut, and that is not the same as a divider at the edge.**\nThe geometry is identical and the knowledge is not: only a shut pane knows\nwhere to open back to. So `collapsed` is a second state rather than a reading\nof the position, and the position it opens to is where the gesture that shut\nit began, whichever gesture that was: a drag takes its reading on the press,\nand every other door takes it in `settle`, nothing having been applied there\nyet. `collapsed-size` keeps a sliver showing where a pane has a tab strip\nworth leaving, and collapse overrides `min` and `max`, which is what those\nare for.",
80932
80932
  "name": "HelixHeadlessSplitter",
80933
80933
  "cssProperties": [
80934
80934
  {
@@ -81149,7 +81149,7 @@
81149
81149
  },
81150
81150
  "privacy": "private",
81151
81151
  "default": "undefined",
81152
- "description": "Where the divider was before the gesture that may be about to shut it.\n\nA drag writes a position on every pointer move, so by the time it reaches\nthe edge the number it started from is gone. Taken once, on the press, and\nwritten back if the gesture ends shut, so the pane opens to where it was\nrather than to the edge it was dragged against."
81152
+ "description": "Where the divider was before the gesture that may be about to shut it.\n\nA drag writes a position on every pointer move, so by the time it reaches\nthe edge the number it started from is gone. Taken once, on the press, and\nwritten back if the gesture ends shut, so the pane opens to where it was\nrather than to the edge it was dragged against.\n\n**A pointer gesture only, because it is the only one that loses it**, and\n`settle` answers for the rest from `began`: a key and a double click apply\nnothing before they settle, so where the divider is at the top of that\nmethod is where it was. Read once and cleared there, exactly as `began` is,\nand for the second reason as well as the first. Left standing it measured\nthe next gesture against the last one's press, so a collapse pressed from\n20 reopened at the 60 a drag had started from an hour earlier."
81153
81153
  },
81154
81154
  {
81155
81155
  "kind": "field",
@@ -81399,7 +81399,7 @@
81399
81399
  }
81400
81400
  }
81401
81401
  ],
81402
- "description": "Says the arrangement has settled, so a consumer can keep it.\n\nThrough the audited path, so a consumer who owns `position` is told what was\nasked for and decides, and one who does not has already had it applied.\n\n**A refused resize ends the resize and not the gesture.** `shutAt` reads the\nposition the gesture ended on, so the collapse is computed from a number the\nconsumer may have declined, and the reading this replaces was that the two\nare therefore one decision: refuse the first and the second cannot stand.\nThat is a reasonable thing to believe about a splitter nobody else owns, and\nit takes \"no\" to mean the gesture is over. What it misses is that a consumer\nwho owns the position refuses in order to *take* the decision, not to end\nit. The sandbox two folders away refuses every `helix-before-resize` from\nthe splitter inside it, re-announces the same move in its own vocabulary and\nwrites the answer back through `position`, which is what makes it the single\ndecision point; returning on its refusal left `panel-collapsed-size` inert\nthere, the shipped `with-a-panel` example measuring a 0px panel against the\n36 its summary promises. So the collapse is reached either way and is\nrefused, or not, on its own.\n\n**Which is honest because the collapse carries its own position.** A shut\npane sits at `collapsed-size`, which is where `position` reads it from once\n`collapsed` is set, and never at the number the resize named: refuse a drag\nto 100 on a splitter with `collapsed-size=\"10\"`, allow the collapse, and the\ndivider is at 90. Nothing writes the refused number either, `requestChange`\napplying nothing when it is refused and the collapse below writing the open\nposition back over whatever a drag had already drawn, so a consumer who says\nno to the position and yes to the collapse gets the pane shut and keeps the\nnumber they had to reopen to. The two coincide only where `collapsed-size`\nis zero, and the states differ even there: a shut pane knows where to open\nback to and a divider parked at the edge does not.\n\nRefusing the collapse alone still leaves the resize, which is the other way\nround and is coherent: the divider goes where the drag put it and the pane\nis not declared shut.\n\n**A gesture that moved nothing announces nothing, and this is the one place\nthat can say so.** A change carrying the position the divider already had\nrewrites a consumer's stored value from a gesture that moved nothing:\nharmless where the value round-trips exactly, and not where it does not,\nwhich is any consumer storing pixels and dividing by a box. The separator's\n`pointerup` held that as an early return of its own and was the only door\nwith one. There are five: the separator's pointer and arrows, the corner's\npointer and arrows, and a double click through `reset`, and `moveTo` is a\nsixth a consumer can open. Measured in Chromium 17 Sep 2026 on the built\nbundle, every door but the guarded one announced a move of zero: a corner\npress with nothing between announced on both splitters, `Home` on a divider\nalready at its minimum announced, and a double click on one already at its\ndefault announced.\n\n**Measured against where the gesture began, and not against `position`.**\n`move` applies as it goes, so by the time a drag settles the position is\nalready the number about to be announced, and comparing those two would\nsilence every drag there is. `began` is the press; a discrete path takes\nnone and compares against the position, which for it is the same thing.\n\n**Per divider rather than per gesture, which is the corner's question.** The\ncorner drives two at once, so \"moved nothing\" cannot mean \"neither moved\":\na drag along one axis moves one of them, and the other would be announcing\na number nobody asked to change. Each settles on its own and guards on its\nown, so the one that moved still announces while the one that did not stays\nquiet. That is also why the guard cannot live in `handleCornerUp`, which\nonly ever sees the pair.\n\n**The collapse counts as movement, because a refusal can leave the two\ndisagreeing.** A consumer who refuses `helix-before-collapse` has a pane at\nthe edge that is not declared shut, and a guard reading the position alone\nwould then never offer the collapse again: `Home` is already at the\nminimum, so every later press is a move of zero."
81402
+ "description": "Says the arrangement has settled, so a consumer can keep it.\n\nThrough the audited path, so a consumer who owns `position` is told what was\nasked for and decides, and one who does not has already had it applied.\n\n**A refused resize ends the resize and not the gesture.** `shutAt` reads the\nposition the gesture ended on, so the collapse is computed from a number the\nconsumer may have declined, and the reading this replaces was that the two\nare therefore one decision: refuse the first and the second cannot stand.\nThat is a reasonable thing to believe about a splitter nobody else owns, and\nit takes \"no\" to mean the gesture is over. What it misses is that a consumer\nwho owns the position refuses in order to *take* the decision, not to end\nit. The sandbox two folders away refuses every `helix-before-resize` from\nthe splitter inside it, re-announces the same move in its own vocabulary and\nwrites the answer back through `position`, which is what makes it the single\ndecision point; returning on its refusal left `panel-collapsed-size` inert\nthere, the shipped `with-a-panel` example measuring a 0px panel against the\n36 it asks for. So the collapse is reached either way and is refused, or\nnot, on its own.\n\n**Which is honest because the collapse carries its own position.** A shut\npane sits at `collapsed-size`, which is where `position` reads it from once\n`collapsed` is set, and never at the number the resize named: refuse a drag\nto 100 on a splitter with `collapsed-size=\"10\"`, allow the collapse, and the\ndivider is at 90. Nothing writes the refused number either, `requestChange`\napplying nothing when it is refused and the collapse below writing the open\nposition back over whatever a drag had already drawn, so a consumer who says\nno to the position and yes to the collapse gets the pane shut and keeps the\nnumber they had to reopen to. The two coincide only where `collapsed-size`\nis zero, and the states differ even there: a shut pane knows where to open\nback to and a divider parked at the edge does not.\n\nRefusing the collapse alone still leaves the resize, which is the other way\nround and is coherent: the divider goes where the drag put it and the pane\nis not declared shut.\n\n**The open position is taken here for every door but the pointer's, which\nis the same split `began` makes and for the same reason.** A drag has\noverwritten the position on the way to the edge, so it reads it on the\npress; a key, a double click and `moveTo` apply nothing until the request\nbelow, so where the divider is at the top of this method is where it was.\nCaptured on the press alone, the class docstring's promise that a shut pane\nknows where to open back to held for a drag and for nothing else: measured\n17 Sep 2026, `Home` on a splitter resting at 60 shut the start pane and\nreopened it at 0, the resize above having written the edge and the collapse\nhaving nothing to put back. Stale, it was worse than absent, `opened` never\nbeing cleared: a press at 60, then a key collapse from 20, reopened at 60.\n\n**A gesture that moved nothing announces nothing, and this is the one place\nthat can say so.** A change carrying the position the divider already had\nrewrites a consumer's stored value from a gesture that moved nothing:\nharmless where the value round-trips exactly, and not where it does not,\nwhich is any consumer storing pixels and dividing by a box. The separator's\n`pointerup` held that as an early return of its own and was the only door\nwith one. There are five: the separator's pointer and arrows, the corner's\npointer and arrows, and a double click through `reset`, and `moveTo` is a\nsixth a consumer can open. Measured in Chromium 17 Sep 2026 on the built\nbundle, every door but the guarded one announced a move of zero: a corner\npress with nothing between announced on both splitters, `Home` on a divider\nalready at its minimum announced, and a double click on one already at its\ndefault announced.\n\n**Measured against where the gesture began, and not against `position`.**\n`move` applies as it goes, so by the time a drag settles the position is\nalready the number about to be announced, and comparing those two would\nsilence every drag there is. `began` is the press; a discrete path takes\nnone and compares against the position, which for it is the same thing.\n\n**Per divider rather than per gesture, which is the corner's question.** The\ncorner drives two at once, so \"moved nothing\" cannot mean \"neither moved\":\na drag along one axis moves one of them, and the other would be announcing\na number nobody asked to change. Each settles on its own and guards on its\nown, so the one that moved still announces while the one that did not stays\nquiet. That is also why the guard cannot live in `handleCornerUp`, which\nonly ever sees the pair.\n\n**The collapse counts as movement, because a refusal can leave the two\ndisagreeing.** A consumer who refuses `helix-before-collapse` has a pane at\nthe edge that is not declared shut, and a guard reading the position alone\nwould then never offer the collapse again: `Home` is already at the\nminimum, so every later press is a move of zero."
81403
81403
  },
81404
81404
  {
81405
81405
  "kind": "field",
@@ -82021,7 +82021,7 @@
82021
82021
  "helix": {
82022
82022
  "category": "layout",
82023
82023
  "since": "0.1.0",
82024
- "status": "experimental",
82024
+ "status": "stable",
82025
82025
  "documentation": "https://fusion.dev/helix/components/splitter",
82026
82026
  "aliases": [
82027
82027
  "SplitPane",
@@ -20,7 +20,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
20
20
  * performs, and it is first in the tab order.
21
21
  *
22
22
  * @since 0.1.0
23
- * @status experimental
23
+ * @status stable
24
24
  * @category layout
25
25
  * @aliases Slider, Gallery, Slideshow
26
26
  * @documentation https://fusion.dev/helix/components/carousel
@@ -390,9 +390,16 @@ export declare class HelixHeadlessCarousel extends HelixElement {
390
390
  * there, which is why both tiers can share the arithmetic below.
391
391
  *
392
392
  * Physical sides rather than logical, to match the physical `offsetLeft` and
393
- * `offsetTop` it is subtracted from. The bleed is one length on all four
394
- * sides, so the two agree whatever the writing mode; if that stops being
395
- * true, this is the method that has to know.
393
+ * `offsetTop` it is subtracted from.
394
+ *
395
+ * **The side read is the side the track scrolls on, and not one side standing
396
+ * for four.** They are one length on a track laid out at the defaults and
397
+ * stop being one the moment a consumer raises `--carousel-bleed`, which the
398
+ * hook exists to invite: a slide on `--helix-shadow-lg` reaches 44px and is
399
+ * told to ask for it. So a horizontal track's room is its inline padding and
400
+ * a vertical one's is its block padding, and each sheet puts the bleed where
401
+ * the scroller clips. Reading one side for both would have a vertical track
402
+ * measuring a length nothing on its axis was laid out with.
396
403
  */
397
404
  private bleed;
398
405
  /**
@@ -297,15 +297,14 @@ let HelixHeadlessCarousel = class HelixHeadlessCarousel extends HelixElement {
297
297
  }
298
298
  updated(changed) {
299
299
  super.updated(changed);
300
- const count = this.slides.length;
301
300
  const drawn = this.renderRoot.querySelectorAll('[part="slide"]').length;
302
301
  if (changed.has('index') || (this.scrolledFor === 0 && drawn > 0)) {
303
302
  this.scrollToIndex();
304
303
  }
305
304
  this.scrolledFor = drawn;
306
305
  this.runTimer();
307
- if (count > 0 && this.index > count - 1) {
308
- this.goTo(count - 1);
306
+ if (this.slides.length > 0 && this.index > this.positions - 1) {
307
+ this.goTo(this.positions - 1);
309
308
  }
310
309
  this.watchPane();
311
310
  this.assign();
@@ -27,13 +27,15 @@ import { type PropertyValues, type TemplateResult } from 'lit';
27
27
  * **A pane can be shut, and that is not the same as a divider at the edge.**
28
28
  * The geometry is identical and the knowledge is not: only a shut pane knows
29
29
  * where to open back to. So `collapsed` is a second state rather than a reading
30
- * of the position, and the position it opens to is the one collapsing never
31
- * overwrote. `collapsed-size` keeps a sliver showing where a pane has a tab
32
- * strip worth leaving, and collapse overrides `min` and `max`, which is what
33
- * those are for.
30
+ * of the position, and the position it opens to is where the gesture that shut
31
+ * it began, whichever gesture that was: a drag takes its reading on the press,
32
+ * and every other door takes it in `settle`, nothing having been applied there
33
+ * yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
34
+ * worth leaving, and collapse overrides `min` and `max`, which is what those
35
+ * are for.
34
36
  *
35
37
  * @since 0.1.0
36
- * @status experimental
38
+ * @status stable
37
39
  * @category layout
38
40
  * @aliases SplitPane, Resizable, SplitView
39
41
  * @documentation https://fusion.dev/helix/components/splitter
@@ -181,6 +183,14 @@ export declare class HelixHeadlessSplitter extends HelixElement {
181
183
  * the edge the number it started from is gone. Taken once, on the press, and
182
184
  * written back if the gesture ends shut, so the pane opens to where it was
183
185
  * rather than to the edge it was dragged against.
186
+ *
187
+ * **A pointer gesture only, because it is the only one that loses it**, and
188
+ * `settle` answers for the rest from `began`: a key and a double click apply
189
+ * nothing before they settle, so where the divider is at the top of that
190
+ * method is where it was. Read once and cleared there, exactly as `began` is,
191
+ * and for the second reason as well as the first. Left standing it measured
192
+ * the next gesture against the last one's press, so a collapse pressed from
193
+ * 20 reopened at the 60 a drag had started from an hour earlier.
184
194
  */
185
195
  private opened;
186
196
  /**
@@ -343,8 +353,8 @@ export declare class HelixHeadlessSplitter extends HelixElement {
343
353
  * writes the answer back through `position`, which is what makes it the single
344
354
  * decision point; returning on its refusal left `panel-collapsed-size` inert
345
355
  * there, the shipped `with-a-panel` example measuring a 0px panel against the
346
- * 36 its summary promises. So the collapse is reached either way and is
347
- * refused, or not, on its own.
356
+ * 36 it asks for. So the collapse is reached either way and is refused, or
357
+ * not, on its own.
348
358
  *
349
359
  * **Which is honest because the collapse carries its own position.** A shut
350
360
  * pane sits at `collapsed-size`, which is where `position` reads it from once
@@ -362,6 +372,18 @@ export declare class HelixHeadlessSplitter extends HelixElement {
362
372
  * round and is coherent: the divider goes where the drag put it and the pane
363
373
  * is not declared shut.
364
374
  *
375
+ * **The open position is taken here for every door but the pointer's, which
376
+ * is the same split `began` makes and for the same reason.** A drag has
377
+ * overwritten the position on the way to the edge, so it reads it on the
378
+ * press; a key, a double click and `moveTo` apply nothing until the request
379
+ * below, so where the divider is at the top of this method is where it was.
380
+ * Captured on the press alone, the class docstring's promise that a shut pane
381
+ * knows where to open back to held for a drag and for nothing else: measured
382
+ * 17 Sep 2026, `Home` on a splitter resting at 60 shut the start pane and
383
+ * reopened it at 0, the resize above having written the edge and the collapse
384
+ * having nothing to put back. Stale, it was worse than absent, `opened` never
385
+ * being cleared: a press at 60, then a key collapse from 20, reopened at 60.
386
+ *
365
387
  * **A gesture that moved nothing announces nothing, and this is the one place
366
388
  * that can say so.** A change carrying the position the divider already had
367
389
  * rewrites a consumer's stored value from a gesture that moved nothing:
@@ -302,6 +302,8 @@ let HelixHeadlessSplitter = HelixHeadlessSplitter_1 = class HelixHeadlessSplitte
302
302
  const shut = this.shutAt(wanted);
303
303
  const began = this.began ?? this.position;
304
304
  this.began = undefined;
305
+ const opened = this.opened ?? (this.collapsed ? undefined : began);
306
+ this.opened = undefined;
305
307
  if (wanted === began && shut === this.collapsed) {
306
308
  return;
307
309
  }
@@ -319,8 +321,8 @@ let HelixHeadlessSplitter = HelixHeadlessSplitter_1 = class HelixHeadlessSplitte
319
321
  requestChange({
320
322
  apply: (value) => {
321
323
  const previous = this.collapsed;
322
- if (value !== '' && this.opened !== undefined) {
323
- this.positionState = this.opened;
324
+ if (value !== '' && opened !== undefined) {
325
+ this.positionState = opened;
324
326
  }
325
327
  this.collapsedState = value === '' ? 'none' : value;
326
328
  this.requestUpdate('collapsed', previous);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-headless",
3
3
  "description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
4
- "version": "0.51.0",
4
+ "version": "0.52.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -46,14 +46,14 @@
46
46
  },
47
47
  "bugs": "https://github.com/project-fusion/fusion/issues",
48
48
  "dependencies": {
49
- "@fusion.dev/helix-core": "0.51.0",
50
- "@fusion.dev/helix-icons": "0.51.0",
49
+ "@fusion.dev/helix-core": "0.52.0",
50
+ "@fusion.dev/helix-icons": "0.52.0",
51
51
  "uqr": "^0.1.3"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@custom-elements-manifest/analyzer": "^0.11.0",
55
- "@fusion.dev/helix-cem": "0.51.0",
56
- "@fusion.dev/helix-testing": "0.51.0",
55
+ "@fusion.dev/helix-cem": "0.52.0",
56
+ "@fusion.dev/helix-testing": "0.52.0",
57
57
  "@fusion.dev/scripts": "0.0.0-dev",
58
58
  "@happy-dom/global-registrator": "^20.0.0",
59
59
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -31187,10 +31187,12 @@ export type CustomElements = {
31187
31187
  * **A pane can be shut, and that is not the same as a divider at the edge.**
31188
31188
  * The geometry is identical and the knowledge is not: only a shut pane knows
31189
31189
  * where to open back to. So `collapsed` is a second state rather than a reading
31190
- * of the position, and the position it opens to is the one collapsing never
31191
- * overwrote. `collapsed-size` keeps a sliver showing where a pane has a tab
31192
- * strip worth leaving, and collapse overrides `min` and `max`, which is what
31193
- * those are for.
31190
+ * of the position, and the position it opens to is where the gesture that shut
31191
+ * it began, whichever gesture that was: a drag takes its reading on the press,
31192
+ * and every other door takes it in `settle`, nothing having been applied there
31193
+ * yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
31194
+ * worth leaving, and collapse overrides `min` and `max`, which is what those
31195
+ * are for.
31194
31196
  *
31195
31197
  * ## Attributes & Properties
31196
31198
  *
@@ -49269,10 +49271,12 @@ export type CustomElementsSolidJs = {
49269
49271
  * **A pane can be shut, and that is not the same as a divider at the edge.**
49270
49272
  * The geometry is identical and the knowledge is not: only a shut pane knows
49271
49273
  * where to open back to. So `collapsed` is a second state rather than a reading
49272
- * of the position, and the position it opens to is the one collapsing never
49273
- * overwrote. `collapsed-size` keeps a sliver showing where a pane has a tab
49274
- * strip worth leaving, and collapse overrides `min` and `max`, which is what
49275
- * those are for.
49274
+ * of the position, and the position it opens to is where the gesture that shut
49275
+ * it began, whichever gesture that was: a drag takes its reading on the press,
49276
+ * and every other door takes it in `settle`, nothing having been applied there
49277
+ * yet. `collapsed-size` keeps a sliver showing where a pane has a tab strip
49278
+ * worth leaving, and collapse overrides `min` and `max`, which is what those
49279
+ * are for.
49276
49280
  *
49277
49281
  * ## Attributes & Properties
49278
49282
  *
package/types/vue.d.ts CHANGED
@@ -9793,7 +9793,7 @@ export interface WcToolkitVueGlobalComponents {
9793
9793
  HelixHeadlessSpeedDialVueProps,
9794
9794
  HelixHeadlessSpeedDialVueEvents
9795
9795
  >;
9796
- /** **One axis, and nesting is how you get two.** A splitter inside a splitter gives back the cross, and gives the three-pane and four-pane arrangements a single divider never had. **Where two of them cross there is a corner, and it moves both.** A splitter slotted into a pane of another, at right angles to it, grows a handle at the crossing: 'move' under the pointer, both arrow axes on the keyboard, and a drag that carries the two positions at once. It appears at 'firstUpdated' rather than in the served markup, being an affordance rather than content, and a splitter with no corner yet is a splitter with two working dividers. **The divider is a real 'role="separator"' with 'aria-valuenow'**, moved by the arrow keys as well as by pointer, with 'Home' and 'End' taking it to its bounds. A drag in progress is a state rather than ':hover', so both dividers a corner moves are lit for as long as it moves them. **It goes where it is put, all the way to either end.** 'min' and 'max' are nothing and everything unless a consumer says otherwise, because a divider that stops short of the edge gives a reader no way to put a pane away. **A pane can be shut, and that is not the same as a divider at the edge.** The geometry is identical and the knowledge is not: only a shut pane knows where to open back to. So 'collapsed' is a second state rather than a reading of the position, and the position it opens to is the one collapsing never overwrote. 'collapsed-size' keeps a sliver showing where a pane has a tab strip worth leaving, and collapse overrides 'min' and 'max', which is what those are for. */
9796
+ /** **One axis, and nesting is how you get two.** A splitter inside a splitter gives back the cross, and gives the three-pane and four-pane arrangements a single divider never had. **Where two of them cross there is a corner, and it moves both.** A splitter slotted into a pane of another, at right angles to it, grows a handle at the crossing: 'move' under the pointer, both arrow axes on the keyboard, and a drag that carries the two positions at once. It appears at 'firstUpdated' rather than in the served markup, being an affordance rather than content, and a splitter with no corner yet is a splitter with two working dividers. **The divider is a real 'role="separator"' with 'aria-valuenow'**, moved by the arrow keys as well as by pointer, with 'Home' and 'End' taking it to its bounds. A drag in progress is a state rather than ':hover', so both dividers a corner moves are lit for as long as it moves them. **It goes where it is put, all the way to either end.** 'min' and 'max' are nothing and everything unless a consumer says otherwise, because a divider that stops short of the edge gives a reader no way to put a pane away. **A pane can be shut, and that is not the same as a divider at the edge.** The geometry is identical and the knowledge is not: only a shut pane knows where to open back to. So 'collapsed' is a second state rather than a reading of the position, and the position it opens to is where the gesture that shut it began, whichever gesture that was: a drag takes its reading on the press, and every other door takes it in 'settle', nothing having been applied there yet. 'collapsed-size' keeps a sliver showing where a pane has a tab strip worth leaving, and collapse overrides 'min' and 'max', which is what those are for. */
9797
9797
  "helix-headless-splitter": DefineCustomElement<
9798
9798
  HelixHeadlessSplitter,
9799
9799
  HelixHeadlessSplitterVueProps,