@fusion.dev/helix 0.59.4 → 0.60.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.
@@ -13284,7 +13284,7 @@
13284
13284
  "type": {
13285
13285
  "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
13286
13286
  },
13287
- "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
13287
+ "description": "Which side of the slides the arrows sit on.\n\nThe same five places as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. The four edges and the slides are the whole of where a\ncarousel's chrome can go, and `indicatorPlacement` names the same five: the\ndots were short of this one until #389, which is how a hero ended up with\nits arrows on the picture and its dots in a band below.",
13288
13288
  "attribute": "controls-placement",
13289
13289
  "reflects": true
13290
13290
  },
@@ -13302,9 +13302,9 @@
13302
13302
  "kind": "field",
13303
13303
  "name": "indicatorPlacement",
13304
13304
  "type": {
13305
- "text": "'start' | 'end' | 'top' | 'bottom' | undefined"
13305
+ "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
13306
13306
  },
13307
- "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
13307
+ "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\n**`overlay` is the fifth place, and it is the slides themselves**, which is\nwhere a run of dots belongs on a full-bleed carousel: the picture is the\npage and the chrome is on it rather than in a band beneath it. The arrows\nhave always had this and the dots did not, so a hero carousel put its\ncontrols over the picture and left its dots stranded in a bar under it,\nwhich is the one arrangement nobody designs on purpose.\n\n**The run takes a surface, where the arrows take one each.** Over a\nphotograph a gray dot and a primary one are both legible against about half\nof it, which is the reason the arrows already carry a ground and a shadow.\nOne ground under the whole run rather than one per dot, because the dots are\na single object with gaps too small to be edges, where the arrows are two\ntargets at opposite ends of the picture with the slide showing between them.\nInside it the dots keep the colors they have everywhere else, so what a\nreader learned from a carousel in a card still reads on one over a picture.\n\n**`indicatorAlign` still says where along the edge**, unchanged, because\nthis placement puts the run on the block-end edge like the other four.\n`controlsPlacement`'s own `overlay` reinterprets its alignment, that bar\nbeing stretched across the middle of the picture rather than sitting on an\nedge, and the two differ for that reason rather than by oversight.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
13308
13308
  "attribute": "indicator-placement",
13309
13309
  "reflects": true
13310
13310
  },
@@ -14326,7 +14326,7 @@
14326
14326
  "type": {
14327
14327
  "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
14328
14328
  },
14329
- "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
14329
+ "description": "Which side of the slides the arrows sit on.\n\nThe same five places as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. The four edges and the slides are the whole of where a\ncarousel's chrome can go, and `indicatorPlacement` names the same five: the\ndots were short of this one until #389, which is how a hero ended up with\nits arrows on the picture and its dots in a band below.",
14330
14330
  "fieldName": "controlsPlacement"
14331
14331
  },
14332
14332
  {
@@ -14340,9 +14340,9 @@
14340
14340
  {
14341
14341
  "name": "indicator-placement",
14342
14342
  "type": {
14343
- "text": "'start' | 'end' | 'top' | 'bottom' | undefined"
14343
+ "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
14344
14344
  },
14345
- "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
14345
+ "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\n**`overlay` is the fifth place, and it is the slides themselves**, which is\nwhere a run of dots belongs on a full-bleed carousel: the picture is the\npage and the chrome is on it rather than in a band beneath it. The arrows\nhave always had this and the dots did not, so a hero carousel put its\ncontrols over the picture and left its dots stranded in a bar under it,\nwhich is the one arrangement nobody designs on purpose.\n\n**The run takes a surface, where the arrows take one each.** Over a\nphotograph a gray dot and a primary one are both legible against about half\nof it, which is the reason the arrows already carry a ground and a shadow.\nOne ground under the whole run rather than one per dot, because the dots are\na single object with gaps too small to be edges, where the arrows are two\ntargets at opposite ends of the picture with the slide showing between them.\nInside it the dots keep the colors they have everywhere else, so what a\nreader learned from a carousel in a card still reads on one over a picture.\n\n**`indicatorAlign` still says where along the edge**, unchanged, because\nthis placement puts the run on the block-end edge like the other four.\n`controlsPlacement`'s own `overlay` reinterprets its alignment, that bar\nbeing stretched across the middle of the picture rather than sitting on an\nedge, and the two differ for that reason rather than by oversight.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
14346
14346
  "fieldName": "indicatorPlacement"
14347
14347
  },
14348
14348
  {
@@ -14495,7 +14495,7 @@
14495
14495
  "slug": "events"
14496
14496
  },
14497
14497
  {
14498
- "description": "Full-bleed slides with the controls over the picture.",
14498
+ "description": "Full-bleed slides with the chrome over the picture.",
14499
14499
  "slug": "hero"
14500
14500
  },
14501
14501
  {
@@ -80373,11 +80373,8 @@
80373
80373
  {
80374
80374
  "kind": "variable",
80375
80375
  "name": "ORB_STATES",
80376
- "type": {
80377
- "text": "[\n 'waiting',\n 'connecting',\n 'thinking',\n 'fetching',\n 'listening',\n 'working',\n 'done',\n]"
80378
- },
80379
- "default": "[ 'waiting', 'connecting', 'thinking', 'fetching', 'listening', 'working', 'done', ]",
80380
- "description": "The states an orb can be in, in the order a task tends to pass through them.\n\nExported so the component can validate an attribute against the same list the\ngenerator reads, rather than keeping a second copy that drifts."
80376
+ "default": "Object.keys(ORDER)",
80377
+ "description": "The same states as a list, in that order.\n\nExported so the component can validate an attribute against one list rather\nthan a second copy that drifts. String keys come back in insertion order,\nwhich the object above is written in."
80381
80378
  },
80382
80379
  {
80383
80380
  "kind": "variable",
@@ -89,6 +89,10 @@ padding-inline: var(--helix-space-none);
89
89
  --_carousel-controls-along: center;
90
90
  }
91
91
 
92
+ :host([indicator-placement="overlay"]) [part="indicators"] {
93
+ --_carousel-indicators-along: center;
94
+ }
95
+
92
96
  :host([indicator-align="start"]) [part="indicators"] {
93
97
  --_carousel-indicators-along: start;
94
98
  }
@@ -308,6 +312,29 @@ box-shadow: var(--helix-shadow-md);
308
312
  pointer-events: auto;
309
313
  }
310
314
 
315
+ :host([indicator-placement="overlay"]) [part="indicators"] {
316
+ align-self: end;
317
+ grid-area: 2 / 2;
318
+ z-index: var(--helix-layer-raised);
319
+ }
320
+
321
+ :host([indicator-placement="overlay"]) [part="indicators"] {
322
+ background-color: var(--helix-color-surface-overlay);
323
+ border-radius: var(--helix-radii-full);
324
+ box-shadow: var(--helix-shadow-md);
325
+ margin-block-end: calc(var(--_carousel-bleed) + var(--helix-space-md));
326
+ padding-block: var(--helix-space-2xs);
327
+ padding-inline: var(--helix-space-xs);
328
+ }
329
+
330
+ :host([indicator-placement="overlay"]) [part~="indicator"] {
331
+ background-color: var(--helix-color-foreground-muted);
332
+ }
333
+
334
+ :host([indicator-placement="overlay"]) [part~="indicator"][data-current] {
335
+ background-color: var(--helix-color-primary);
336
+ }
337
+
311
338
  :host([controls-placement="overlay"]) [part="next"] {
312
339
  margin-inline-start: auto;
313
340
  }
@@ -39,7 +39,7 @@ export declare class HelixCarousel extends HelixHeadlessCarousel {
39
39
  /**
40
40
  * Which side of the slides the arrows sit on.
41
41
  *
42
- * The same four sides as `indicatorPlacement` and the same default, so a
42
+ * The same five places as `indicatorPlacement` and the same default, so a
43
43
  * carousel that moves only one of them keeps the other where it was. `start`
44
44
  * or `end` stacks the arrows into a column, which is what a vertical track
45
45
  * usually wants.
@@ -53,8 +53,10 @@ export declare class HelixCarousel extends HelixHeadlessCarousel {
53
53
  * **It is a value here rather than an axis of its own.** "The controls are
54
54
  * over the content" is the whole of what a `hero` appearance would say, and
55
55
  * the surface, the edge-to-edge arrows and the bar that catches no presses all
56
- * follow from it. These two placements are the whole of where a carousel's
57
- * chrome can go.
56
+ * follow from it. The four edges and the slides are the whole of where a
57
+ * carousel's chrome can go, and `indicatorPlacement` names the same five: the
58
+ * dots were short of this one until #389, which is how a hero ended up with
59
+ * its arrows on the picture and its dots in a band below.
58
60
  */
59
61
  controlsPlacement?: 'start' | 'end' | 'top' | 'bottom' | 'overlay';
60
62
  /**
@@ -101,12 +103,34 @@ export declare class HelixCarousel extends HelixHeadlessCarousel {
101
103
  * vocabulary across the three is worth more than each family's own: a
102
104
  * consumer who has placed a drawer knows where a carousel's dots go.
103
105
  *
106
+ * **`overlay` is the fifth place, and it is the slides themselves**, which is
107
+ * where a run of dots belongs on a full-bleed carousel: the picture is the
108
+ * page and the chrome is on it rather than in a band beneath it. The arrows
109
+ * have always had this and the dots did not, so a hero carousel put its
110
+ * controls over the picture and left its dots stranded in a bar under it,
111
+ * which is the one arrangement nobody designs on purpose.
112
+ *
113
+ * **The run takes a surface, where the arrows take one each.** Over a
114
+ * photograph a gray dot and a primary one are both legible against about half
115
+ * of it, which is the reason the arrows already carry a ground and a shadow.
116
+ * One ground under the whole run rather than one per dot, because the dots are
117
+ * a single object with gaps too small to be edges, where the arrows are two
118
+ * targets at opposite ends of the picture with the slide showing between them.
119
+ * Inside it the dots keep the colors they have everywhere else, so what a
120
+ * reader learned from a carousel in a card still reads on one over a picture.
121
+ *
122
+ * **`indicatorAlign` still says where along the edge**, unchanged, because
123
+ * this placement puts the run on the block-end edge like the other four.
124
+ * `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
125
+ * being stretched across the middle of the picture rather than sitting on an
126
+ * edge, and the two differ for that reason rather than by oversight.
127
+ *
104
128
  * Independent of `controlsPlacement`. Both default to the bottom, where they
105
129
  * share the row and split it, dots to the start and arrows to the end,
106
130
  * arrived at by two defaults rather than by a rule about the pair, so moving
107
131
  * one leaves the other alone.
108
132
  */
109
- indicatorPlacement?: 'start' | 'end' | 'top' | 'bottom';
133
+ indicatorPlacement?: 'start' | 'end' | 'top' | 'bottom' | 'overlay';
110
134
  static styles: CSSResultGroup;
111
135
  }
112
136
  declare global {
@@ -1,12 +1,23 @@
1
1
  /**
2
- * The states an orb can be in, in the order a task tends to pass through them.
2
+ * What the agent is doing.
3
3
  *
4
- * Exported so the component can validate an attribute against the same list the
5
- * generator reads, rather than keeping a second copy that drifts.
4
+ * **Written out rather than derived from the array below**, which is the other
5
+ * way round from where this started. The manifest records a property's type as
6
+ * the text somebody wrote, so `(typeof ORB_STATES)[number]` reached it as a name
7
+ * with no values in it and the reference page listed none: a reader was told the
8
+ * attribute takes an `OrbState` and left to find out what one is. A union on one
9
+ * line is what every reader of this repository's sources can resolve, the `axes`
10
+ * rule included, and no type system is needed to do it.
6
11
  */
7
- export declare const ORB_STATES: readonly ['waiting', 'connecting', 'thinking', 'fetching', 'listening', 'working', 'done'];
8
- /** What the agent is doing. */
9
- export type OrbState = (typeof ORB_STATES)[number];
12
+ export type OrbState = 'waiting' | 'connecting' | 'thinking' | 'fetching' | 'listening' | 'working' | 'done';
13
+ /**
14
+ * The same states as a list, in that order.
15
+ *
16
+ * Exported so the component can validate an attribute against one list rather
17
+ * than a second copy that drifts. String keys come back in insertion order,
18
+ * which the object above is written in.
19
+ */
20
+ export declare const ORB_STATES: readonly OrbState[];
10
21
  /**
11
22
  * The numbers one state is made of.
12
23
  *
@@ -1,12 +1,13 @@
1
- export const ORB_STATES = [
2
- 'waiting',
3
- 'connecting',
4
- 'thinking',
5
- 'fetching',
6
- 'listening',
7
- 'working',
8
- 'done',
9
- ];
1
+ const ORDER = {
2
+ connecting: 1,
3
+ done: 6,
4
+ fetching: 3,
5
+ listening: 4,
6
+ thinking: 2,
7
+ waiting: 0,
8
+ working: 5,
9
+ };
10
+ export const ORB_STATES = Object.keys(ORDER);
10
11
  export const ORB_PARAMS = {
11
12
  connecting: {
12
13
  belt: 0.32,
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.59.4",
4
+ "version": "0.60.1",
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.59.4",
51
- "@fusion.dev/helix-headless": "0.59.4",
52
- "@fusion.dev/helix-styles": "0.59.4"
50
+ "@fusion.dev/helix-core": "0.60.1",
51
+ "@fusion.dev/helix-headless": "0.60.1",
52
+ "@fusion.dev/helix-styles": "0.60.1"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.59.4",
57
- "@fusion.dev/helix-testing": "0.59.4",
56
+ "@fusion.dev/helix-cem": "0.60.1",
57
+ "@fusion.dev/helix-testing": "0.60.1",
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
@@ -2655,7 +2655,7 @@ where an arrow over a photograph belongs. */
2655
2655
  controlsAlign?: (HelixCarousel["controlsAlign"]) | undefined;
2656
2656
  /** Which side of the slides the arrows sit on.
2657
2657
 
2658
- The same four sides as `indicatorPlacement` and the same default, so a
2658
+ The same five places as `indicatorPlacement` and the same default, so a
2659
2659
  carousel that moves only one of them keeps the other where it was. `start`
2660
2660
  or `end` stacks the arrows into a column, which is what a vertical track
2661
2661
  usually wants.
@@ -2669,12 +2669,14 @@ photograph is legible against about half of one.
2669
2669
  **It is a value here rather than an axis of its own.** "The controls are
2670
2670
  over the content" is the whole of what a `hero` appearance would say, and
2671
2671
  the surface, the edge-to-edge arrows and the bar that catches no presses all
2672
- follow from it. These two placements are the whole of where a carousel's
2673
- chrome can go. */
2672
+ follow from it. The four edges and the slides are the whole of where a
2673
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
2674
+ dots were short of this one until #389, which is how a hero ended up with
2675
+ its arrows on the picture and its dots in a band below. */
2674
2676
  "controls-placement"?: (HelixCarousel["controlsPlacement"]) | undefined;
2675
2677
  /** Which side of the slides the arrows sit on.
2676
2678
 
2677
- The same four sides as `indicatorPlacement` and the same default, so a
2679
+ The same five places as `indicatorPlacement` and the same default, so a
2678
2680
  carousel that moves only one of them keeps the other where it was. `start`
2679
2681
  or `end` stacks the arrows into a column, which is what a vertical track
2680
2682
  usually wants.
@@ -2688,8 +2690,10 @@ photograph is legible against about half of one.
2688
2690
  **It is a value here rather than an axis of its own.** "The controls are
2689
2691
  over the content" is the whole of what a `hero` appearance would say, and
2690
2692
  the surface, the edge-to-edge arrows and the bar that catches no presses all
2691
- follow from it. These two placements are the whole of where a carousel's
2692
- chrome can go. */
2693
+ follow from it. The four edges and the slides are the whole of where a
2694
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
2695
+ dots were short of this one until #389, which is how a hero ended up with
2696
+ its arrows on the picture and its dots in a band below. */
2693
2697
  controlsPlacement?: (HelixCarousel["controlsPlacement"]) | undefined;
2694
2698
  /** Where along that side the dots sit.
2695
2699
 
@@ -2757,6 +2761,28 @@ and `block-start` would be jargon standing in for it.
2757
2761
  vocabulary across the three is worth more than each family's own: a
2758
2762
  consumer who has placed a drawer knows where a carousel's dots go.
2759
2763
 
2764
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
2765
+ where a run of dots belongs on a full-bleed carousel: the picture is the
2766
+ page and the chrome is on it rather than in a band beneath it. The arrows
2767
+ have always had this and the dots did not, so a hero carousel put its
2768
+ controls over the picture and left its dots stranded in a bar under it,
2769
+ which is the one arrangement nobody designs on purpose.
2770
+
2771
+ **The run takes a surface, where the arrows take one each.** Over a
2772
+ photograph a gray dot and a primary one are both legible against about half
2773
+ of it, which is the reason the arrows already carry a ground and a shadow.
2774
+ One ground under the whole run rather than one per dot, because the dots are
2775
+ a single object with gaps too small to be edges, where the arrows are two
2776
+ targets at opposite ends of the picture with the slide showing between them.
2777
+ Inside it the dots keep the colors they have everywhere else, so what a
2778
+ reader learned from a carousel in a card still reads on one over a picture.
2779
+
2780
+ **`indicatorAlign` still says where along the edge**, unchanged, because
2781
+ this placement puts the run on the block-end edge like the other four.
2782
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
2783
+ being stretched across the middle of the picture rather than sitting on an
2784
+ edge, and the two differ for that reason rather than by oversight.
2785
+
2760
2786
  Independent of `controlsPlacement`. Both default to the bottom, where they
2761
2787
  share the row and split it, dots to the start and arrows to the end,
2762
2788
  arrived at by two defaults rather than by a rule about the pair, so moving
@@ -2778,6 +2804,28 @@ and `block-start` would be jargon standing in for it.
2778
2804
  vocabulary across the three is worth more than each family's own: a
2779
2805
  consumer who has placed a drawer knows where a carousel's dots go.
2780
2806
 
2807
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
2808
+ where a run of dots belongs on a full-bleed carousel: the picture is the
2809
+ page and the chrome is on it rather than in a band beneath it. The arrows
2810
+ have always had this and the dots did not, so a hero carousel put its
2811
+ controls over the picture and left its dots stranded in a bar under it,
2812
+ which is the one arrangement nobody designs on purpose.
2813
+
2814
+ **The run takes a surface, where the arrows take one each.** Over a
2815
+ photograph a gray dot and a primary one are both legible against about half
2816
+ of it, which is the reason the arrows already carry a ground and a shadow.
2817
+ One ground under the whole run rather than one per dot, because the dots are
2818
+ a single object with gaps too small to be edges, where the arrows are two
2819
+ targets at opposite ends of the picture with the slide showing between them.
2820
+ Inside it the dots keep the colors they have everywhere else, so what a
2821
+ reader learned from a carousel in a card still reads on one over a picture.
2822
+
2823
+ **`indicatorAlign` still says where along the edge**, unchanged, because
2824
+ this placement puts the run on the block-end edge like the other four.
2825
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
2826
+ being stretched across the middle of the picture rather than sitting on an
2827
+ edge, and the two differ for that reason rather than by oversight.
2828
+
2781
2829
  Independent of `controlsPlacement`. Both default to the bottom, where they
2782
2830
  share the row and split it, dots to the start and arrows to the end,
2783
2831
  arrived at by two defaults rather than by a rule about the pair, so moving
@@ -2987,7 +3035,7 @@ where an arrow over a photograph belongs. */
2987
3035
  "prop:controlsAlign"?: (HelixCarousel["controlsAlign"]) | undefined;
2988
3036
  /** Which side of the slides the arrows sit on.
2989
3037
 
2990
- The same four sides as `indicatorPlacement` and the same default, so a
3038
+ The same five places as `indicatorPlacement` and the same default, so a
2991
3039
  carousel that moves only one of them keeps the other where it was. `start`
2992
3040
  or `end` stacks the arrows into a column, which is what a vertical track
2993
3041
  usually wants.
@@ -3001,12 +3049,14 @@ photograph is legible against about half of one.
3001
3049
  **It is a value here rather than an axis of its own.** "The controls are
3002
3050
  over the content" is the whole of what a `hero` appearance would say, and
3003
3051
  the surface, the edge-to-edge arrows and the bar that catches no presses all
3004
- follow from it. These two placements are the whole of where a carousel's
3005
- chrome can go. */
3052
+ follow from it. The four edges and the slides are the whole of where a
3053
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
3054
+ dots were short of this one until #389, which is how a hero ended up with
3055
+ its arrows on the picture and its dots in a band below. */
3006
3056
  "attr:controls-placement"?: (HelixCarousel["controlsPlacement"]) | undefined;
3007
3057
  /** Which side of the slides the arrows sit on.
3008
3058
 
3009
- The same four sides as `indicatorPlacement` and the same default, so a
3059
+ The same five places as `indicatorPlacement` and the same default, so a
3010
3060
  carousel that moves only one of them keeps the other where it was. `start`
3011
3061
  or `end` stacks the arrows into a column, which is what a vertical track
3012
3062
  usually wants.
@@ -3020,8 +3070,10 @@ photograph is legible against about half of one.
3020
3070
  **It is a value here rather than an axis of its own.** "The controls are
3021
3071
  over the content" is the whole of what a `hero` appearance would say, and
3022
3072
  the surface, the edge-to-edge arrows and the bar that catches no presses all
3023
- follow from it. These two placements are the whole of where a carousel's
3024
- chrome can go. */
3073
+ follow from it. The four edges and the slides are the whole of where a
3074
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
3075
+ dots were short of this one until #389, which is how a hero ended up with
3076
+ its arrows on the picture and its dots in a band below. */
3025
3077
  "prop:controlsPlacement"?: (HelixCarousel["controlsPlacement"]) | undefined;
3026
3078
  /** Where along that side the dots sit.
3027
3079
 
@@ -3089,6 +3141,28 @@ and `block-start` would be jargon standing in for it.
3089
3141
  vocabulary across the three is worth more than each family's own: a
3090
3142
  consumer who has placed a drawer knows where a carousel's dots go.
3091
3143
 
3144
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
3145
+ where a run of dots belongs on a full-bleed carousel: the picture is the
3146
+ page and the chrome is on it rather than in a band beneath it. The arrows
3147
+ have always had this and the dots did not, so a hero carousel put its
3148
+ controls over the picture and left its dots stranded in a bar under it,
3149
+ which is the one arrangement nobody designs on purpose.
3150
+
3151
+ **The run takes a surface, where the arrows take one each.** Over a
3152
+ photograph a gray dot and a primary one are both legible against about half
3153
+ of it, which is the reason the arrows already carry a ground and a shadow.
3154
+ One ground under the whole run rather than one per dot, because the dots are
3155
+ a single object with gaps too small to be edges, where the arrows are two
3156
+ targets at opposite ends of the picture with the slide showing between them.
3157
+ Inside it the dots keep the colors they have everywhere else, so what a
3158
+ reader learned from a carousel in a card still reads on one over a picture.
3159
+
3160
+ **`indicatorAlign` still says where along the edge**, unchanged, because
3161
+ this placement puts the run on the block-end edge like the other four.
3162
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
3163
+ being stretched across the middle of the picture rather than sitting on an
3164
+ edge, and the two differ for that reason rather than by oversight.
3165
+
3092
3166
  Independent of `controlsPlacement`. Both default to the bottom, where they
3093
3167
  share the row and split it, dots to the start and arrows to the end,
3094
3168
  arrived at by two defaults rather than by a rule about the pair, so moving
@@ -3110,6 +3184,28 @@ and `block-start` would be jargon standing in for it.
3110
3184
  vocabulary across the three is worth more than each family's own: a
3111
3185
  consumer who has placed a drawer knows where a carousel's dots go.
3112
3186
 
3187
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
3188
+ where a run of dots belongs on a full-bleed carousel: the picture is the
3189
+ page and the chrome is on it rather than in a band beneath it. The arrows
3190
+ have always had this and the dots did not, so a hero carousel put its
3191
+ controls over the picture and left its dots stranded in a bar under it,
3192
+ which is the one arrangement nobody designs on purpose.
3193
+
3194
+ **The run takes a surface, where the arrows take one each.** Over a
3195
+ photograph a gray dot and a primary one are both legible against about half
3196
+ of it, which is the reason the arrows already carry a ground and a shadow.
3197
+ One ground under the whole run rather than one per dot, because the dots are
3198
+ a single object with gaps too small to be edges, where the arrows are two
3199
+ targets at opposite ends of the picture with the slide showing between them.
3200
+ Inside it the dots keep the colors they have everywhere else, so what a
3201
+ reader learned from a carousel in a card still reads on one over a picture.
3202
+
3203
+ **`indicatorAlign` still says where along the edge**, unchanged, because
3204
+ this placement puts the run on the block-end edge like the other four.
3205
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
3206
+ being stretched across the middle of the picture rather than sitting on an
3207
+ edge, and the two differ for that reason rather than by oversight.
3208
+
3113
3209
  Independent of `controlsPlacement`. Both default to the bottom, where they
3114
3210
  share the row and split it, dots to the start and arrows to the end,
3115
3211
  arrived at by two defaults rather than by a rule about the pair, so moving
@@ -23564,7 +23660,7 @@ export type CustomElements = {
23564
23660
  * where an arrow over a photograph belongs.
23565
23661
  * - `controls-placement`/`controlsPlacement`: Which side of the slides the arrows sit on.
23566
23662
  *
23567
- * The same four sides as `indicatorPlacement` and the same default, so a
23663
+ * The same five places as `indicatorPlacement` and the same default, so a
23568
23664
  * carousel that moves only one of them keeps the other where it was. `start`
23569
23665
  * or `end` stacks the arrows into a column, which is what a vertical track
23570
23666
  * usually wants.
@@ -23578,8 +23674,10 @@ export type CustomElements = {
23578
23674
  * **It is a value here rather than an axis of its own.** "The controls are
23579
23675
  * over the content" is the whole of what a `hero` appearance would say, and
23580
23676
  * the surface, the edge-to-edge arrows and the bar that catches no presses all
23581
- * follow from it. These two placements are the whole of where a carousel's
23582
- * chrome can go.
23677
+ * follow from it. The four edges and the slides are the whole of where a
23678
+ * carousel's chrome can go, and `indicatorPlacement` names the same five: the
23679
+ * dots were short of this one until #389, which is how a hero ended up with
23680
+ * its arrows on the picture and its dots in a band below.
23583
23681
  * - `indicator-align`/`indicatorAlign`: Where along that side the dots sit.
23584
23682
  *
23585
23683
  * The second half of the answer to "where do they go". `indicatorPlacement`
@@ -23620,6 +23718,28 @@ export type CustomElements = {
23620
23718
  * vocabulary across the three is worth more than each family's own: a
23621
23719
  * consumer who has placed a drawer knows where a carousel's dots go.
23622
23720
  *
23721
+ * **`overlay` is the fifth place, and it is the slides themselves**, which is
23722
+ * where a run of dots belongs on a full-bleed carousel: the picture is the
23723
+ * page and the chrome is on it rather than in a band beneath it. The arrows
23724
+ * have always had this and the dots did not, so a hero carousel put its
23725
+ * controls over the picture and left its dots stranded in a bar under it,
23726
+ * which is the one arrangement nobody designs on purpose.
23727
+ *
23728
+ * **The run takes a surface, where the arrows take one each.** Over a
23729
+ * photograph a gray dot and a primary one are both legible against about half
23730
+ * of it, which is the reason the arrows already carry a ground and a shadow.
23731
+ * One ground under the whole run rather than one per dot, because the dots are
23732
+ * a single object with gaps too small to be edges, where the arrows are two
23733
+ * targets at opposite ends of the picture with the slide showing between them.
23734
+ * Inside it the dots keep the colors they have everywhere else, so what a
23735
+ * reader learned from a carousel in a card still reads on one over a picture.
23736
+ *
23737
+ * **`indicatorAlign` still says where along the edge**, unchanged, because
23738
+ * this placement puts the run on the block-end edge like the other four.
23739
+ * `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
23740
+ * being stretched across the middle of the picture rather than sitting on an
23741
+ * edge, and the two differ for that reason rather than by oversight.
23742
+ *
23623
23743
  * Independent of `controlsPlacement`. Both default to the bottom, where they
23624
23744
  * share the row and split it, dots to the start and arrows to the end,
23625
23745
  * arrived at by two defaults rather than by a rule about the pair, so moving
@@ -43248,7 +43368,7 @@ export type CustomElementsSolidJs = {
43248
43368
  * where an arrow over a photograph belongs.
43249
43369
  * - `controls-placement`/`controlsPlacement`: Which side of the slides the arrows sit on.
43250
43370
  *
43251
- * The same four sides as `indicatorPlacement` and the same default, so a
43371
+ * The same five places as `indicatorPlacement` and the same default, so a
43252
43372
  * carousel that moves only one of them keeps the other where it was. `start`
43253
43373
  * or `end` stacks the arrows into a column, which is what a vertical track
43254
43374
  * usually wants.
@@ -43262,8 +43382,10 @@ export type CustomElementsSolidJs = {
43262
43382
  * **It is a value here rather than an axis of its own.** "The controls are
43263
43383
  * over the content" is the whole of what a `hero` appearance would say, and
43264
43384
  * the surface, the edge-to-edge arrows and the bar that catches no presses all
43265
- * follow from it. These two placements are the whole of where a carousel's
43266
- * chrome can go.
43385
+ * follow from it. The four edges and the slides are the whole of where a
43386
+ * carousel's chrome can go, and `indicatorPlacement` names the same five: the
43387
+ * dots were short of this one until #389, which is how a hero ended up with
43388
+ * its arrows on the picture and its dots in a band below.
43267
43389
  * - `indicator-align`/`indicatorAlign`: Where along that side the dots sit.
43268
43390
  *
43269
43391
  * The second half of the answer to "where do they go". `indicatorPlacement`
@@ -43304,6 +43426,28 @@ export type CustomElementsSolidJs = {
43304
43426
  * vocabulary across the three is worth more than each family's own: a
43305
43427
  * consumer who has placed a drawer knows where a carousel's dots go.
43306
43428
  *
43429
+ * **`overlay` is the fifth place, and it is the slides themselves**, which is
43430
+ * where a run of dots belongs on a full-bleed carousel: the picture is the
43431
+ * page and the chrome is on it rather than in a band beneath it. The arrows
43432
+ * have always had this and the dots did not, so a hero carousel put its
43433
+ * controls over the picture and left its dots stranded in a bar under it,
43434
+ * which is the one arrangement nobody designs on purpose.
43435
+ *
43436
+ * **The run takes a surface, where the arrows take one each.** Over a
43437
+ * photograph a gray dot and a primary one are both legible against about half
43438
+ * of it, which is the reason the arrows already carry a ground and a shadow.
43439
+ * One ground under the whole run rather than one per dot, because the dots are
43440
+ * a single object with gaps too small to be edges, where the arrows are two
43441
+ * targets at opposite ends of the picture with the slide showing between them.
43442
+ * Inside it the dots keep the colors they have everywhere else, so what a
43443
+ * reader learned from a carousel in a card still reads on one over a picture.
43444
+ *
43445
+ * **`indicatorAlign` still says where along the edge**, unchanged, because
43446
+ * this placement puts the run on the block-end edge like the other four.
43447
+ * `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
43448
+ * being stretched across the middle of the picture rather than sitting on an
43449
+ * edge, and the two differ for that reason rather than by oversight.
43450
+ *
43307
43451
  * Independent of `controlsPlacement`. Both default to the bottom, where they
43308
43452
  * share the row and split it, dots to the start and arrows to the end,
43309
43453
  * arrived at by two defaults rather than by a rule about the pair, so moving
package/types/vue.d.ts CHANGED
@@ -1365,7 +1365,7 @@ where an arrow over a photograph belongs. */
1365
1365
  controlsAlign?: (HelixCarousel["controlsAlign"]) | undefined;
1366
1366
  /** Which side of the slides the arrows sit on.
1367
1367
 
1368
- The same four sides as `indicatorPlacement` and the same default, so a
1368
+ The same five places as `indicatorPlacement` and the same default, so a
1369
1369
  carousel that moves only one of them keeps the other where it was. `start`
1370
1370
  or `end` stacks the arrows into a column, which is what a vertical track
1371
1371
  usually wants.
@@ -1379,12 +1379,14 @@ photograph is legible against about half of one.
1379
1379
  **It is a value here rather than an axis of its own.** "The controls are
1380
1380
  over the content" is the whole of what a `hero` appearance would say, and
1381
1381
  the surface, the edge-to-edge arrows and the bar that catches no presses all
1382
- follow from it. These two placements are the whole of where a carousel's
1383
- chrome can go. */
1382
+ follow from it. The four edges and the slides are the whole of where a
1383
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
1384
+ dots were short of this one until #389, which is how a hero ended up with
1385
+ its arrows on the picture and its dots in a band below. */
1384
1386
  "controls-placement"?: (HelixCarousel["controlsPlacement"]) | undefined;
1385
1387
  /** Which side of the slides the arrows sit on.
1386
1388
 
1387
- The same four sides as `indicatorPlacement` and the same default, so a
1389
+ The same five places as `indicatorPlacement` and the same default, so a
1388
1390
  carousel that moves only one of them keeps the other where it was. `start`
1389
1391
  or `end` stacks the arrows into a column, which is what a vertical track
1390
1392
  usually wants.
@@ -1398,8 +1400,10 @@ photograph is legible against about half of one.
1398
1400
  **It is a value here rather than an axis of its own.** "The controls are
1399
1401
  over the content" is the whole of what a `hero` appearance would say, and
1400
1402
  the surface, the edge-to-edge arrows and the bar that catches no presses all
1401
- follow from it. These two placements are the whole of where a carousel's
1402
- chrome can go. */
1403
+ follow from it. The four edges and the slides are the whole of where a
1404
+ carousel's chrome can go, and `indicatorPlacement` names the same five: the
1405
+ dots were short of this one until #389, which is how a hero ended up with
1406
+ its arrows on the picture and its dots in a band below. */
1403
1407
  controlsPlacement?: (HelixCarousel["controlsPlacement"]) | undefined;
1404
1408
  /** Where along that side the dots sit.
1405
1409
 
@@ -1467,6 +1471,28 @@ and `block-start` would be jargon standing in for it.
1467
1471
  vocabulary across the three is worth more than each family's own: a
1468
1472
  consumer who has placed a drawer knows where a carousel's dots go.
1469
1473
 
1474
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
1475
+ where a run of dots belongs on a full-bleed carousel: the picture is the
1476
+ page and the chrome is on it rather than in a band beneath it. The arrows
1477
+ have always had this and the dots did not, so a hero carousel put its
1478
+ controls over the picture and left its dots stranded in a bar under it,
1479
+ which is the one arrangement nobody designs on purpose.
1480
+
1481
+ **The run takes a surface, where the arrows take one each.** Over a
1482
+ photograph a gray dot and a primary one are both legible against about half
1483
+ of it, which is the reason the arrows already carry a ground and a shadow.
1484
+ One ground under the whole run rather than one per dot, because the dots are
1485
+ a single object with gaps too small to be edges, where the arrows are two
1486
+ targets at opposite ends of the picture with the slide showing between them.
1487
+ Inside it the dots keep the colors they have everywhere else, so what a
1488
+ reader learned from a carousel in a card still reads on one over a picture.
1489
+
1490
+ **`indicatorAlign` still says where along the edge**, unchanged, because
1491
+ this placement puts the run on the block-end edge like the other four.
1492
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
1493
+ being stretched across the middle of the picture rather than sitting on an
1494
+ edge, and the two differ for that reason rather than by oversight.
1495
+
1470
1496
  Independent of `controlsPlacement`. Both default to the bottom, where they
1471
1497
  share the row and split it, dots to the start and arrows to the end,
1472
1498
  arrived at by two defaults rather than by a rule about the pair, so moving
@@ -1488,6 +1514,28 @@ and `block-start` would be jargon standing in for it.
1488
1514
  vocabulary across the three is worth more than each family's own: a
1489
1515
  consumer who has placed a drawer knows where a carousel's dots go.
1490
1516
 
1517
+ **`overlay` is the fifth place, and it is the slides themselves**, which is
1518
+ where a run of dots belongs on a full-bleed carousel: the picture is the
1519
+ page and the chrome is on it rather than in a band beneath it. The arrows
1520
+ have always had this and the dots did not, so a hero carousel put its
1521
+ controls over the picture and left its dots stranded in a bar under it,
1522
+ which is the one arrangement nobody designs on purpose.
1523
+
1524
+ **The run takes a surface, where the arrows take one each.** Over a
1525
+ photograph a gray dot and a primary one are both legible against about half
1526
+ of it, which is the reason the arrows already carry a ground and a shadow.
1527
+ One ground under the whole run rather than one per dot, because the dots are
1528
+ a single object with gaps too small to be edges, where the arrows are two
1529
+ targets at opposite ends of the picture with the slide showing between them.
1530
+ Inside it the dots keep the colors they have everywhere else, so what a
1531
+ reader learned from a carousel in a card still reads on one over a picture.
1532
+
1533
+ **`indicatorAlign` still says where along the edge**, unchanged, because
1534
+ this placement puts the run on the block-end edge like the other four.
1535
+ `controlsPlacement`'s own `overlay` reinterprets its alignment, that bar
1536
+ being stretched across the middle of the picture rather than sitting on an
1537
+ edge, and the two differ for that reason rather than by oversight.
1538
+
1491
1539
  Independent of `controlsPlacement`. Both default to the bottom, where they
1492
1540
  share the row and split it, dots to the start and arrows to the end,
1493
1541
  arrived at by two defaults rather than by a rule about the pair, so moving