@fusion.dev/helix 0.49.1 → 0.51.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.49.1",
4
+ "version": "0.51.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "bugs": "https://github.com/project-fusion/fusion/issues",
49
49
  "dependencies": {
50
- "@fusion.dev/helix-core": "0.49.1",
51
- "@fusion.dev/helix-headless": "0.49.1",
52
- "@fusion.dev/helix-styles": "0.49.1"
50
+ "@fusion.dev/helix-core": "0.51.0",
51
+ "@fusion.dev/helix-headless": "0.51.0",
52
+ "@fusion.dev/helix-styles": "0.51.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.49.1",
57
- "@fusion.dev/helix-testing": "0.49.1",
56
+ "@fusion.dev/helix-cem": "0.51.0",
57
+ "@fusion.dev/helix-testing": "0.51.0",
58
58
  "@fusion.dev/scripts": "0.0.0-dev",
59
59
  "@happy-dom/global-registrator": "^20.0.0",
60
60
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -2838,6 +2838,29 @@ attribute is the one answer to how wide a pane is.
2838
2838
  A value the track cannot honor is taken to the nearest one it can, by
2839
2839
  `across`, and both tiers read that rather than this.
2840
2840
 
2841
+ **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
2842
+ apiece, and nothing is written onto the track: the count is the sheet's,
2843
+ and the sheet's alone, because it is the one number here CSS can work out
2844
+ for itself. Everything it takes is a length the sheet already has, so the
2845
+ panes are laid out at their final width by the first rule that runs, on a
2846
+ server's markup as on the client's, and no script is waited on. That is the
2847
+ whole reason a declared count was ever the only option: a carousel that
2848
+ asks how wide its container is can only ask on the client, so the panes go
2849
+ down at one width and move to another when the answer arrives. Written
2850
+ inline the count would outrank the sheet that computes it, which is why an
2851
+ `auto` track is handed nothing. A count stays for the design that calls for
2852
+ exactly three.
2853
+
2854
+ The styled sheet says how it divides, and the headless `auto` example
2855
+ carries the same three lines for a consumer writing their own.
2856
+
2857
+ **A value rather than the resting behavior**, which is what the
2858
+ responsiveness policy asks of every axis that a box decides: a splitter
2859
+ turns on `orientation="auto"` and a plain one does not turn at all. Fitting
2860
+ changes what the carousel *does*, since how many are across is how many
2861
+ places the track can stop, so a carousel that had not asked for it would
2862
+ find its position count moving with the window.
2863
+
2841
2864
  No default, because it reflects. A reflected property with a value writes
2842
2865
  its attribute on upgrade, and the host then carries something a consumer's
2843
2866
  server markup never had, which React reports as a mismatch. The one-across
@@ -2875,6 +2898,29 @@ attribute is the one answer to how wide a pane is.
2875
2898
  A value the track cannot honor is taken to the nearest one it can, by
2876
2899
  `across`, and both tiers read that rather than this.
2877
2900
 
2901
+ **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
2902
+ apiece, and nothing is written onto the track: the count is the sheet's,
2903
+ and the sheet's alone, because it is the one number here CSS can work out
2904
+ for itself. Everything it takes is a length the sheet already has, so the
2905
+ panes are laid out at their final width by the first rule that runs, on a
2906
+ server's markup as on the client's, and no script is waited on. That is the
2907
+ whole reason a declared count was ever the only option: a carousel that
2908
+ asks how wide its container is can only ask on the client, so the panes go
2909
+ down at one width and move to another when the answer arrives. Written
2910
+ inline the count would outrank the sheet that computes it, which is why an
2911
+ `auto` track is handed nothing. A count stays for the design that calls for
2912
+ exactly three.
2913
+
2914
+ The styled sheet says how it divides, and the headless `auto` example
2915
+ carries the same three lines for a consumer writing their own.
2916
+
2917
+ **A value rather than the resting behavior**, which is what the
2918
+ responsiveness policy asks of every axis that a box decides: a splitter
2919
+ turns on `orientation="auto"` and a plain one does not turn at all. Fitting
2920
+ changes what the carousel *does*, since how many are across is how many
2921
+ places the track can stop, so a carousel that had not asked for it would
2922
+ find its position count moving with the window.
2923
+
2878
2924
  No default, because it reflects. A reflected property with a value writes
2879
2925
  its attribute on upgrade, and the host then carries something a consumer's
2880
2926
  server markup never had, which React reports as a mismatch. The one-across
@@ -3111,6 +3157,29 @@ attribute is the one answer to how wide a pane is.
3111
3157
  A value the track cannot honor is taken to the nearest one it can, by
3112
3158
  `across`, and both tiers read that rather than this.
3113
3159
 
3160
+ **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
3161
+ apiece, and nothing is written onto the track: the count is the sheet's,
3162
+ and the sheet's alone, because it is the one number here CSS can work out
3163
+ for itself. Everything it takes is a length the sheet already has, so the
3164
+ panes are laid out at their final width by the first rule that runs, on a
3165
+ server's markup as on the client's, and no script is waited on. That is the
3166
+ whole reason a declared count was ever the only option: a carousel that
3167
+ asks how wide its container is can only ask on the client, so the panes go
3168
+ down at one width and move to another when the answer arrives. Written
3169
+ inline the count would outrank the sheet that computes it, which is why an
3170
+ `auto` track is handed nothing. A count stays for the design that calls for
3171
+ exactly three.
3172
+
3173
+ The styled sheet says how it divides, and the headless `auto` example
3174
+ carries the same three lines for a consumer writing their own.
3175
+
3176
+ **A value rather than the resting behavior**, which is what the
3177
+ responsiveness policy asks of every axis that a box decides: a splitter
3178
+ turns on `orientation="auto"` and a plain one does not turn at all. Fitting
3179
+ changes what the carousel *does*, since how many are across is how many
3180
+ places the track can stop, so a carousel that had not asked for it would
3181
+ find its position count moving with the window.
3182
+
3114
3183
  No default, because it reflects. A reflected property with a value writes
3115
3184
  its attribute on upgrade, and the host then carries something a consumer's
3116
3185
  server markup never had, which React reports as a mismatch. The one-across
@@ -3148,6 +3217,29 @@ attribute is the one answer to how wide a pane is.
3148
3217
  A value the track cannot honor is taken to the nearest one it can, by
3149
3218
  `across`, and both tiers read that rather than this.
3150
3219
 
3220
+ **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
3221
+ apiece, and nothing is written onto the track: the count is the sheet's,
3222
+ and the sheet's alone, because it is the one number here CSS can work out
3223
+ for itself. Everything it takes is a length the sheet already has, so the
3224
+ panes are laid out at their final width by the first rule that runs, on a
3225
+ server's markup as on the client's, and no script is waited on. That is the
3226
+ whole reason a declared count was ever the only option: a carousel that
3227
+ asks how wide its container is can only ask on the client, so the panes go
3228
+ down at one width and move to another when the answer arrives. Written
3229
+ inline the count would outrank the sheet that computes it, which is why an
3230
+ `auto` track is handed nothing. A count stays for the design that calls for
3231
+ exactly three.
3232
+
3233
+ The styled sheet says how it divides, and the headless `auto` example
3234
+ carries the same three lines for a consumer writing their own.
3235
+
3236
+ **A value rather than the resting behavior**, which is what the
3237
+ responsiveness policy asks of every axis that a box decides: a splitter
3238
+ turns on `orientation="auto"` and a plain one does not turn at all. Fitting
3239
+ changes what the carousel *does*, since how many are across is how many
3240
+ places the track can stop, so a carousel that had not asked for it would
3241
+ find its position count moving with the window.
3242
+
3151
3243
  No default, because it reflects. A reflected property with a value writes
3152
3244
  its attribute on upgrade, and the host then carries something a consumer's
3153
3245
  server markup never had, which React reports as a mismatch. The one-across
@@ -4348,7 +4440,13 @@ holds a model beside its value, which Date Picker and Time Picker do not:
4348
4440
  `moved` is the HSB the square is drawn from, and it is written before the
4349
4441
  value is requested. Gating only the request would leave the square under
4350
4442
  the reader's pointer and the value where it was, which is a control that
4351
- refuses and looks like it accepted. */
4443
+ refuses and looks like it accepted.
4444
+
4445
+ **Two controls are refused whole rather than at either seam**, because
4446
+ both do something before they ask. The syntax toggle rewrites the value, so
4447
+ letting it move would show `rgb` over a hex it is no longer allowed to
4448
+ restate. The eyedropper clears the screen and runs a system sampler, so
4449
+ letting it open would take a color from the reader and drop it. */
4352
4450
  readonly?: (HelixColorPicker["readOnly"]) | undefined;
4353
4451
  /** Whether the control refuses changes while still submitting its value.
4354
4452
 
@@ -4367,7 +4465,13 @@ holds a model beside its value, which Date Picker and Time Picker do not:
4367
4465
  `moved` is the HSB the square is drawn from, and it is written before the
4368
4466
  value is requested. Gating only the request would leave the square under
4369
4467
  the reader's pointer and the value where it was, which is a control that
4370
- refuses and looks like it accepted. */
4468
+ refuses and looks like it accepted.
4469
+
4470
+ **Two controls are refused whole rather than at either seam**, because
4471
+ both do something before they ask. The syntax toggle rewrites the value, so
4472
+ letting it move would show `rgb` over a hex it is no longer allowed to
4473
+ restate. The eyedropper clears the screen and runs a system sampler, so
4474
+ letting it open would take a color from the reader and drop it. */
4371
4475
  readOnly?: (HelixColorPicker["readOnly"]) | undefined;
4372
4476
  /** Whether the form refuses to submit while no color is chosen.
4373
4477
 
@@ -4529,7 +4633,13 @@ holds a model beside its value, which Date Picker and Time Picker do not:
4529
4633
  `moved` is the HSB the square is drawn from, and it is written before the
4530
4634
  value is requested. Gating only the request would leave the square under
4531
4635
  the reader's pointer and the value where it was, which is a control that
4532
- refuses and looks like it accepted. */
4636
+ refuses and looks like it accepted.
4637
+
4638
+ **Two controls are refused whole rather than at either seam**, because
4639
+ both do something before they ask. The syntax toggle rewrites the value, so
4640
+ letting it move would show `rgb` over a hex it is no longer allowed to
4641
+ restate. The eyedropper clears the screen and runs a system sampler, so
4642
+ letting it open would take a color from the reader and drop it. */
4533
4643
  "bool:readonly"?: (HelixColorPicker["readOnly"]) | undefined;
4534
4644
  /** Whether the control refuses changes while still submitting its value.
4535
4645
 
@@ -4548,7 +4658,13 @@ holds a model beside its value, which Date Picker and Time Picker do not:
4548
4658
  `moved` is the HSB the square is drawn from, and it is written before the
4549
4659
  value is requested. Gating only the request would leave the square under
4550
4660
  the reader's pointer and the value where it was, which is a control that
4551
- refuses and looks like it accepted. */
4661
+ refuses and looks like it accepted.
4662
+
4663
+ **Two controls are refused whole rather than at either seam**, because
4664
+ both do something before they ask. The syntax toggle rewrites the value, so
4665
+ letting it move would show `rgb` over a hex it is no longer allowed to
4666
+ restate. The eyedropper clears the screen and runs a system sampler, so
4667
+ letting it open would take a color from the reader and drop it. */
4552
4668
  "prop:readOnly"?: (HelixColorPicker["readOnly"]) | undefined;
4553
4669
  /** Whether the form refuses to submit while no color is chosen.
4554
4670
 
@@ -14575,13 +14691,27 @@ attribute at all. */
14575
14691
 
14576
14692
  Zero closes it outright. A panel whose contents include the control that
14577
14693
  reopens it, a row of tabs being the usual one, wants that row left showing,
14578
- and only whoever slotted it knows how tall that is. */
14694
+ and only whoever slotted it knows how tall that is.
14695
+
14696
+ **A floor rather than a second state**, which is what keeps `panel-size` the
14697
+ whole truth about the panel: a divider driven to the end lands here and
14698
+ `panel-size` reads this number, so "closed" is something a consumer already
14699
+ stores rather than a property they have to learn. The splitter inside has a
14700
+ `collapsed` of its own and it is refused, for the reason `handleCollapse`
14701
+ gives. */
14579
14702
  "panel-collapsed-size"?: (HelixSandbox["panelCollapsedSize"] | `${number}`) | undefined;
14580
14703
  /** What the panel's height becomes when it is closed.
14581
14704
 
14582
14705
  Zero closes it outright. A panel whose contents include the control that
14583
14706
  reopens it, a row of tabs being the usual one, wants that row left showing,
14584
- and only whoever slotted it knows how tall that is. */
14707
+ and only whoever slotted it knows how tall that is.
14708
+
14709
+ **A floor rather than a second state**, which is what keeps `panel-size` the
14710
+ whole truth about the panel: a divider driven to the end lands here and
14711
+ `panel-size` reads this number, so "closed" is something a consumer already
14712
+ stores rather than a property they have to learn. The splitter inside has a
14713
+ `collapsed` of its own and it is refused, for the reason `handleCollapse`
14714
+ gives. */
14585
14715
  panelCollapsedSize?: (HelixSandbox["panelCollapsedSize"]) | undefined;
14586
14716
  /** Accessible name for the panel's divider. */
14587
14717
  "panel-label"?: (HelixSandbox["panelLabel"]) | undefined;
@@ -14600,7 +14730,7 @@ and only whoever slotted it knows how tall that is. */
14600
14730
 
14601
14731
  /** Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves. */
14602
14732
  "onhelix-before-edit"?: ((e: HelixSandboxHelixBeforeEditElementEvent) => void) | undefined;
14603
- /** Fired before the panel's divider is let go, with its height in pixels. Cancelable: refusing it takes the decision and nothing moves. */
14733
+ /** Fired before the panel's divider is let go, with its height in pixels, and a panel driven shut arrives as `panel-collapsed-size`, which is the least it goes to. Cancelable: refusing it takes the decision and nothing moves. */
14604
14734
  "onhelix-before-panel-resize"?: ((
14605
14735
  e: HelixSandboxHelixBeforePanelResizeElementEvent,
14606
14736
  ) => void) | undefined;
@@ -14680,13 +14810,27 @@ attribute at all. */
14680
14810
 
14681
14811
  Zero closes it outright. A panel whose contents include the control that
14682
14812
  reopens it, a row of tabs being the usual one, wants that row left showing,
14683
- and only whoever slotted it knows how tall that is. */
14813
+ and only whoever slotted it knows how tall that is.
14814
+
14815
+ **A floor rather than a second state**, which is what keeps `panel-size` the
14816
+ whole truth about the panel: a divider driven to the end lands here and
14817
+ `panel-size` reads this number, so "closed" is something a consumer already
14818
+ stores rather than a property they have to learn. The splitter inside has a
14819
+ `collapsed` of its own and it is refused, for the reason `handleCollapse`
14820
+ gives. */
14684
14821
  "attr:panel-collapsed-size"?: (HelixSandbox["panelCollapsedSize"] | `${number}`) | undefined;
14685
14822
  /** What the panel's height becomes when it is closed.
14686
14823
 
14687
14824
  Zero closes it outright. A panel whose contents include the control that
14688
14825
  reopens it, a row of tabs being the usual one, wants that row left showing,
14689
- and only whoever slotted it knows how tall that is. */
14826
+ and only whoever slotted it knows how tall that is.
14827
+
14828
+ **A floor rather than a second state**, which is what keeps `panel-size` the
14829
+ whole truth about the panel: a divider driven to the end lands here and
14830
+ `panel-size` reads this number, so "closed" is something a consumer already
14831
+ stores rather than a property they have to learn. The splitter inside has a
14832
+ `collapsed` of its own and it is refused, for the reason `handleCollapse`
14833
+ gives. */
14690
14834
  "prop:panelCollapsedSize"?: (HelixSandbox["panelCollapsedSize"]) | undefined;
14691
14835
  /** Accessible name for the panel's divider. */
14692
14836
  "attr:panel-label"?: (HelixSandbox["panelLabel"]) | undefined;
@@ -14704,7 +14848,7 @@ and only whoever slotted it knows how tall that is. */
14704
14848
  "prop:split"?: (HelixSandbox["split"]) | undefined;
14705
14849
  /** Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves. */
14706
14850
  "on:helix-before-edit"?: ((e: HelixSandboxHelixBeforeEditElementEvent) => void) | undefined;
14707
- /** Fired before the panel's divider is let go, with its height in pixels. Cancelable: refusing it takes the decision and nothing moves. */
14851
+ /** Fired before the panel's divider is let go, with its height in pixels, and a panel driven shut arrives as `panel-collapsed-size`, which is the least it goes to. Cancelable: refusing it takes the decision and nothing moves. */
14708
14852
  "on:helix-before-panel-resize"?: ((
14709
14853
  e: HelixSandboxHelixBeforePanelResizeElementEvent,
14710
14854
  ) => void) | undefined;
@@ -16039,11 +16183,11 @@ has an honest answer. */
16039
16183
  /** How far one arrow press moves it, as a percentage. */
16040
16184
  step?: (HelixSplitter["step"]) | undefined;
16041
16185
 
16042
- /** Fired before a pane shuts or reopens, and only where the position it is derived from stood. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it. */
16186
+ /** Fired before a pane shuts or reopens, whether or not the resize that reached it was allowed, and carrying its own position: a shut pane sits at `collapsed-size` rather than at the number the resize named. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it. */
16043
16187
  "onhelix-before-collapse"?: ((
16044
16188
  e: HelixSplitterHelixBeforeCollapseElementEvent,
16045
16189
  ) => void) | undefined;
16046
- /** Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the whole of where the gesture ended, so no collapse follows from it either. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own. */
16190
+ /** Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the position and leaves the rest of the gesture, so a collapse the gesture reached is still announced and still yours to refuse. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own. */
16047
16191
  "onhelix-before-resize"?: ((
16048
16192
  e: HelixSplitterHelixBeforeResizeElementEvent,
16049
16193
  ) => void) | undefined;
@@ -16159,11 +16303,11 @@ has an honest answer. */
16159
16303
  "prop:orientation"?: (HelixSplitter["orientation"]) | undefined;
16160
16304
  /** How far one arrow press moves it, as a percentage. */
16161
16305
  "prop:step"?: (HelixSplitter["step"]) | undefined;
16162
- /** Fired before a pane shuts or reopens, and only where the position it is derived from stood. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it. */
16306
+ /** Fired before a pane shuts or reopens, whether or not the resize that reached it was allowed, and carrying its own position: a shut pane sits at `collapsed-size` rather than at the number the resize named. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it. */
16163
16307
  "on:helix-before-collapse"?: ((
16164
16308
  e: HelixSplitterHelixBeforeCollapseElementEvent,
16165
16309
  ) => void) | undefined;
16166
- /** Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the whole of where the gesture ended, so no collapse follows from it either. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own. */
16310
+ /** Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the position and leaves the rest of the gesture, so a collapse the gesture reached is still announced and still yours to refuse. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own. */
16167
16311
  "on:helix-before-resize"?: ((
16168
16312
  e: HelixSplitterHelixBeforeResizeElementEvent,
16169
16313
  ) => void) | undefined;
@@ -22995,6 +23139,29 @@ export type CustomElements = {
22995
23139
  * A value the track cannot honor is taken to the nearest one it can, by
22996
23140
  * `across`, and both tiers read that rather than this.
22997
23141
  *
23142
+ * **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
23143
+ * apiece, and nothing is written onto the track: the count is the sheet's,
23144
+ * and the sheet's alone, because it is the one number here CSS can work out
23145
+ * for itself. Everything it takes is a length the sheet already has, so the
23146
+ * panes are laid out at their final width by the first rule that runs, on a
23147
+ * server's markup as on the client's, and no script is waited on. That is the
23148
+ * whole reason a declared count was ever the only option: a carousel that
23149
+ * asks how wide its container is can only ask on the client, so the panes go
23150
+ * down at one width and move to another when the answer arrives. Written
23151
+ * inline the count would outrank the sheet that computes it, which is why an
23152
+ * `auto` track is handed nothing. A count stays for the design that calls for
23153
+ * exactly three.
23154
+ *
23155
+ * The styled sheet says how it divides, and the headless `auto` example
23156
+ * carries the same three lines for a consumer writing their own.
23157
+ *
23158
+ * **A value rather than the resting behavior**, which is what the
23159
+ * responsiveness policy asks of every axis that a box decides: a splitter
23160
+ * turns on `orientation="auto"` and a plain one does not turn at all. Fitting
23161
+ * changes what the carousel *does*, since how many are across is how many
23162
+ * places the track can stop, so a carousel that had not asked for it would
23163
+ * find its position count moving with the window.
23164
+ *
22998
23165
  * No default, because it reflects. A reflected property with a value writes
22999
23166
  * its attribute on upgrade, and the host then carries something a consumer's
23000
23167
  * server markup never had, which React reports as a mismatch. The one-across
@@ -23004,7 +23171,11 @@ export type CustomElements = {
23004
23171
  * A window of `perView` slides sliding one at a time over `n` of them stops
23005
23172
  * `n - perView + 1` times, so six slides four across is three: 0 to 3, 1 to 4,
23006
23173
  * 2 to 5. One at minimum, since a carousel showing everything it has still
23007
- * has the one place to be. (property only) (readonly)
23174
+ * has the one place to be.
23175
+ *
23176
+ * One across until a fitted track has been laid out, which is the same answer
23177
+ * a carousel that has never been told anything gives, and the dots are
23178
+ * withheld rather than counted from it. See `across`. (property only) (readonly)
23008
23179
  * - `slides`: The slides, in light-DOM order. Empty on the server, which has no tree. (property only) (readonly)
23009
23180
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
23010
23181
  *
@@ -23053,8 +23224,9 @@ export type CustomElements = {
23053
23224
  * - `--carousel-block-size`: Height of a vertical track. (default: `undefined`)
23054
23225
  * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
23055
23226
  * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
23056
- * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. (default: `undefined`)
23227
+ * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. Under `per-view="auto"` the component writes nothing and the sheet declares it instead, so the same name answers in both modes. See `perView`. (default: `undefined`)
23057
23228
  * - `--carousel-run-end`: How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. (default: `undefined`)
23229
+ * - `--carousel-slide-min`: The narrowest a slide may be laid out, which is what `per-view="auto"` fits the track with. A length, since the sheet divides by it. Unset is the whole track, which is one across. (default: `undefined`)
23058
23230
  *
23059
23231
  * ## CSS Parts
23060
23232
  *
@@ -24385,6 +24557,12 @@ export type CustomElements = {
24385
24557
  * value is requested. Gating only the request would leave the square under
24386
24558
  * the reader's pointer and the value where it was, which is a control that
24387
24559
  * refuses and looks like it accepted.
24560
+ *
24561
+ * **Two controls are refused whole rather than at either seam**, because
24562
+ * both do something before they ask. The syntax toggle rewrites the value, so
24563
+ * letting it move would show `rgb` over a hex it is no longer allowed to
24564
+ * restate. The eyedropper clears the screen and runs a system sampler, so
24565
+ * letting it open would take a color from the reader and drop it.
24388
24566
  * - `required`: Whether the form refuses to submit while no color is chosen.
24389
24567
  *
24390
24568
  * **A color is exactly as requirable as a date**, which is the comparison
@@ -33839,6 +34017,13 @@ export type CustomElements = {
33839
34017
  * Zero closes it outright. A panel whose contents include the control that
33840
34018
  * reopens it, a row of tabs being the usual one, wants that row left showing,
33841
34019
  * and only whoever slotted it knows how tall that is.
34020
+ *
34021
+ * **A floor rather than a second state**, which is what keeps `panel-size` the
34022
+ * whole truth about the panel: a divider driven to the end lands here and
34023
+ * `panel-size` reads this number, so "closed" is something a consumer already
34024
+ * stores rather than a property they have to learn. The splitter inside has a
34025
+ * `collapsed` of its own and it is refused, for the reason `handleCollapse`
34026
+ * gives.
33842
34027
  * - `panel-label`/`panelLabel`: Accessible name for the panel's divider.
33843
34028
  * - `panel-size`/`panelSize`: Height of the panel, in pixels.
33844
34029
  * - `separator-label`/`separatorLabel`: Accessible name for the divider.
@@ -33869,7 +34054,7 @@ export type CustomElements = {
33869
34054
  * Events that will be emitted by the component.
33870
34055
  *
33871
34056
  * - `helix-before-edit`: Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves.
33872
- * - `helix-before-panel-resize`: Fired before the panel's divider is let go, with its height in pixels. Cancelable: refusing it takes the decision and nothing moves.
34057
+ * - `helix-before-panel-resize`: Fired before the panel's divider is let go, with its height in pixels, and a panel driven shut arrives as `panel-collapsed-size`, which is the least it goes to. Cancelable: refusing it takes the decision and nothing moves.
33873
34058
  * - `helix-before-split`: Fired before the panes' divider is let go, with the lead pane's share. Cancelable: refusing it takes the decision and nothing moves.
33874
34059
  * - `helix-caret`: Fired when the cursor moves in the source, by the source pane and heard here.
33875
34060
  * - `helix-console`: Relayed from the frame by the preview pane, one per console call.
@@ -35624,8 +35809,8 @@ export type CustomElements = {
35624
35809
  *
35625
35810
  * Events that will be emitted by the component.
35626
35811
  *
35627
- * - `helix-before-collapse`: Fired before a pane shuts or reopens, and only where the position it is derived from stood. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it.
35628
- * - `helix-before-resize`: Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the whole of where the gesture ended, so no collapse follows from it either. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own.
35812
+ * - `helix-before-collapse`: Fired before a pane shuts or reopens, whether or not the resize that reached it was allowed, and carrying its own position: a shut pane sits at `collapsed-size` rather than at the number the resize named. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it.
35813
+ * - `helix-before-resize`: Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the position and leaves the rest of the gesture, so a collapse the gesture reached is still announced and still yours to refuse. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own.
35629
35814
  *
35630
35815
  * ## Slots
35631
35816
  *
@@ -42437,6 +42622,29 @@ export type CustomElementsSolidJs = {
42437
42622
  * A value the track cannot honor is taken to the nearest one it can, by
42438
42623
  * `across`, and both tiers read that rather than this.
42439
42624
  *
42625
+ * **`auto` fits as many as the track can hold**, at `--carousel-slide-min`
42626
+ * apiece, and nothing is written onto the track: the count is the sheet's,
42627
+ * and the sheet's alone, because it is the one number here CSS can work out
42628
+ * for itself. Everything it takes is a length the sheet already has, so the
42629
+ * panes are laid out at their final width by the first rule that runs, on a
42630
+ * server's markup as on the client's, and no script is waited on. That is the
42631
+ * whole reason a declared count was ever the only option: a carousel that
42632
+ * asks how wide its container is can only ask on the client, so the panes go
42633
+ * down at one width and move to another when the answer arrives. Written
42634
+ * inline the count would outrank the sheet that computes it, which is why an
42635
+ * `auto` track is handed nothing. A count stays for the design that calls for
42636
+ * exactly three.
42637
+ *
42638
+ * The styled sheet says how it divides, and the headless `auto` example
42639
+ * carries the same three lines for a consumer writing their own.
42640
+ *
42641
+ * **A value rather than the resting behavior**, which is what the
42642
+ * responsiveness policy asks of every axis that a box decides: a splitter
42643
+ * turns on `orientation="auto"` and a plain one does not turn at all. Fitting
42644
+ * changes what the carousel *does*, since how many are across is how many
42645
+ * places the track can stop, so a carousel that had not asked for it would
42646
+ * find its position count moving with the window.
42647
+ *
42440
42648
  * No default, because it reflects. A reflected property with a value writes
42441
42649
  * its attribute on upgrade, and the host then carries something a consumer's
42442
42650
  * server markup never had, which React reports as a mismatch. The one-across
@@ -42446,7 +42654,11 @@ export type CustomElementsSolidJs = {
42446
42654
  * A window of `perView` slides sliding one at a time over `n` of them stops
42447
42655
  * `n - perView + 1` times, so six slides four across is three: 0 to 3, 1 to 4,
42448
42656
  * 2 to 5. One at minimum, since a carousel showing everything it has still
42449
- * has the one place to be. (property only) (readonly)
42657
+ * has the one place to be.
42658
+ *
42659
+ * One across until a fitted track has been laid out, which is the same answer
42660
+ * a carousel that has never been told anything gives, and the dots are
42661
+ * withheld rather than counted from it. See `across`. (property only) (readonly)
42450
42662
  * - `slides`: The slides, in light-DOM order. Empty on the server, which has no tree. (property only) (readonly)
42451
42663
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
42452
42664
  *
@@ -42495,8 +42707,9 @@ export type CustomElementsSolidJs = {
42495
42707
  * - `--carousel-block-size`: Height of a vertical track. (default: `undefined`)
42496
42708
  * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
42497
42709
  * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
42498
- * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. (default: `undefined`)
42710
+ * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. Under `per-view="auto"` the component writes nothing and the sheet declares it instead, so the same name answers in both modes. See `perView`. (default: `undefined`)
42499
42711
  * - `--carousel-run-end`: How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. (default: `undefined`)
42712
+ * - `--carousel-slide-min`: The narrowest a slide may be laid out, which is what `per-view="auto"` fits the track with. A length, since the sheet divides by it. Unset is the whole track, which is one across. (default: `undefined`)
42500
42713
  *
42501
42714
  * ## CSS Parts
42502
42715
  *
@@ -43852,6 +44065,12 @@ export type CustomElementsSolidJs = {
43852
44065
  * value is requested. Gating only the request would leave the square under
43853
44066
  * the reader's pointer and the value where it was, which is a control that
43854
44067
  * refuses and looks like it accepted.
44068
+ *
44069
+ * **Two controls are refused whole rather than at either seam**, because
44070
+ * both do something before they ask. The syntax toggle rewrites the value, so
44071
+ * letting it move would show `rgb` over a hex it is no longer allowed to
44072
+ * restate. The eyedropper clears the screen and runs a system sampler, so
44073
+ * letting it open would take a color from the reader and drop it.
43855
44074
  * - `required`: Whether the form refuses to submit while no color is chosen.
43856
44075
  *
43857
44076
  * **A color is exactly as requirable as a date**, which is the comparison
@@ -53498,6 +53717,13 @@ export type CustomElementsSolidJs = {
53498
53717
  * Zero closes it outright. A panel whose contents include the control that
53499
53718
  * reopens it, a row of tabs being the usual one, wants that row left showing,
53500
53719
  * and only whoever slotted it knows how tall that is.
53720
+ *
53721
+ * **A floor rather than a second state**, which is what keeps `panel-size` the
53722
+ * whole truth about the panel: a divider driven to the end lands here and
53723
+ * `panel-size` reads this number, so "closed" is something a consumer already
53724
+ * stores rather than a property they have to learn. The splitter inside has a
53725
+ * `collapsed` of its own and it is refused, for the reason `handleCollapse`
53726
+ * gives.
53501
53727
  * - `panel-label`/`panelLabel`: Accessible name for the panel's divider.
53502
53728
  * - `panel-size`/`panelSize`: Height of the panel, in pixels.
53503
53729
  * - `separator-label`/`separatorLabel`: Accessible name for the divider.
@@ -53528,7 +53754,7 @@ export type CustomElementsSolidJs = {
53528
53754
  * Events that will be emitted by the component.
53529
53755
  *
53530
53756
  * - `helix-before-edit`: Fired before the source is edited, by the source pane and heard here. Cancelable: refusing it takes the decision and nothing moves.
53531
- * - `helix-before-panel-resize`: Fired before the panel's divider is let go, with its height in pixels. Cancelable: refusing it takes the decision and nothing moves.
53757
+ * - `helix-before-panel-resize`: Fired before the panel's divider is let go, with its height in pixels, and a panel driven shut arrives as `panel-collapsed-size`, which is the least it goes to. Cancelable: refusing it takes the decision and nothing moves.
53532
53758
  * - `helix-before-split`: Fired before the panes' divider is let go, with the lead pane's share. Cancelable: refusing it takes the decision and nothing moves.
53533
53759
  * - `helix-caret`: Fired when the cursor moves in the source, by the source pane and heard here.
53534
53760
  * - `helix-console`: Relayed from the frame by the preview pane, one per console call.
@@ -55325,8 +55551,8 @@ export type CustomElementsSolidJs = {
55325
55551
  *
55326
55552
  * Events that will be emitted by the component.
55327
55553
  *
55328
- * - `helix-before-collapse`: Fired before a pane shuts or reopens, and only where the position it is derived from stood. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it.
55329
- * - `helix-before-resize`: Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the whole of where the gesture ended, so no collapse follows from it either. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own.
55554
+ * - `helix-before-collapse`: Fired before a pane shuts or reopens, whether or not the resize that reached it was allowed, and carrying its own position: a shut pane sits at `collapsed-size` rather than at the number the resize named. Cancelable: refusing it leaves the pane as it was and the divider where the gesture put it.
55555
+ * - `helix-before-resize`: Fired before the divider settles, and only where the gesture moved it: a press that moved nothing, a drag that came back, an arrow with nowhere left to go and a corner that moved the other divider are all silent on this one. Cancelable: refusing it takes the position and leaves the rest of the gesture, so a collapse the gesture reached is still announced and still yours to refuse. A drag has already drawn itself by then and holds where it was dropped until the consumer assigns their own.
55330
55556
  *
55331
55557
  * ## Slots
55332
55558
  *
@@ -59974,10 +60200,12 @@ export type CustomCssProperties = {
59974
60200
  "--carousel-gap"?: (string) | undefined;
59975
60201
  /** The size one pane is laid out at. A sheet sets it and the component measures the run with it. */
59976
60202
  "--carousel-pane"?: (string) | undefined;
59977
- /** How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. */
60203
+ /** How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. Under `per-view="auto"` the component writes nothing and the sheet declares it instead, so the same name answers in both modes. See `perView`. */
59978
60204
  "--carousel-per-view"?: (string) | undefined;
59979
60205
  /** How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. */
59980
60206
  "--carousel-run-end"?: (string) | undefined;
60207
+ /** The narrowest a slide may be laid out, which is what `per-view="auto"` fits the track with. A length, since the sheet divides by it. Unset is the whole track, which is one across. */
60208
+ "--carousel-slide-min"?: (string) | undefined;
59981
60209
  /** Fill behind the composer. */
59982
60210
  "--chat-composer-background-color"?: (string) | undefined;
59983
60211
  /** The composer's edge, so a theme can remove it. */