@fusion.dev/helix-headless 0.199.0 → 0.200.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/types/jsx.d.ts CHANGED
@@ -105,6 +105,9 @@ import type {
105
105
  HelixHeadlessListItem,
106
106
  HelixHeadlessListbox,
107
107
  HelixHeadlessLoader,
108
+ HelixHeadlessLog,
109
+ HelixHeadlessLogGroup,
110
+ HelixHeadlessLogLine,
108
111
  HelixHeadlessMap,
109
112
  HelixHeadlessMapArea,
110
113
  HelixHeadlessMapBuildings,
@@ -19662,6 +19665,419 @@ progress. */
19662
19665
  textContent?: (string | number) | undefined;
19663
19666
  };
19664
19667
 
19668
+ /** `HelixHeadlessLogGroup` component event */
19669
+ export type HelixHeadlessLogGroupElementEvent<E = Event> = TypedEvent<
19670
+ HelixHeadlessLogGroup,
19671
+ E
19672
+ >;
19673
+ /** `helix-before-close` event type */
19674
+ export type HelixHeadlessLogGroupHelixBeforeCloseElementEvent =
19675
+ HelixHeadlessLogGroupElementEvent<HelixBeforeCloseEvent>;
19676
+ /** `helix-before-open` event type */
19677
+ export type HelixHeadlessLogGroupHelixBeforeOpenElementEvent =
19678
+ HelixHeadlessLogGroupElementEvent<HelixBeforeOpenEvent>;
19679
+ /** `toggle` event type */
19680
+ export type HelixHeadlessLogGroupToggleElementEvent =
19681
+ HelixHeadlessLogGroupElementEvent<ToggleEvent>;
19682
+
19683
+ export type HelixHeadlessLogGroupProps = {
19684
+ /** How long the step took, as it should read, such as `12s`. */
19685
+ duration?: (HelixHeadlessLogGroup["duration"]) | undefined;
19686
+ /** What the step is called. The `heading` slot replaces it. */
19687
+ heading?: (HelixHeadlessLogGroup["heading"]) | undefined;
19688
+ /** Where the step stands, which draws a mark before the heading. */
19689
+ status?: (HelixHeadlessLogGroup["status"]) | undefined;
19690
+ /** What a screen reader hears for the status, after the heading.
19691
+ `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`. */
19692
+ "status-label"?: (HelixHeadlessLogGroup["statusLabel"]) | undefined;
19693
+ /** What a screen reader hears for the status, after the heading.
19694
+ `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`. */
19695
+ statusLabel?: (HelixHeadlessLogGroup["statusLabel"]) | undefined;
19696
+ /** Whether the element starts open. Ignored once `open` is written. */
19697
+ "default-open"?: (HelixHeadlessLogGroup["defaultOpen"]) | undefined;
19698
+ /** Whether the element starts open. Ignored once `open` is written. */
19699
+ defaultOpen?: (HelixHeadlessLogGroup["defaultOpen"]) | undefined;
19700
+ /** Whether the element is open.
19701
+
19702
+ One property, not two, so `dialog.open` answers the question anyone
19703
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
19704
+ same statement in markup.
19705
+
19706
+ **Not reflected, and that is required rather than tidy.** Reflection
19707
+ writes the resolved state back as an attribute, so an element that opened
19708
+ itself would put `open` on its own host: cloned, serialized for
19709
+ hydration, or diffed by a framework, it comes back holding whatever the
19710
+ last reader did rather than what the author wrote. `:state(open)` carries
19711
+ the resolved state for stylesheets, which is what the mirror is for. */
19712
+ open?: (HelixHeadlessLogGroup["open"]) | undefined;
19713
+
19714
+ /** Fired before the group closes. Cancelable. */
19715
+ "onhelix-before-close"?: ((
19716
+ e: HelixHeadlessLogGroupHelixBeforeCloseElementEvent,
19717
+ ) => void) | undefined;
19718
+ /** Fired before the group opens. Cancelable. */
19719
+ "onhelix-before-open"?: ((
19720
+ e: HelixHeadlessLogGroupHelixBeforeOpenElementEvent,
19721
+ ) => void) | undefined;
19722
+ /** Fired after the group opens or closes, with `newState` and `oldState`. */
19723
+ ontoggle?: ((e: HelixHeadlessLogGroupToggleElementEvent) => void) | undefined;
19724
+ };
19725
+
19726
+ export type HelixHeadlessLogGroupSolidJsProps = {
19727
+ /** How long the step took, as it should read, such as `12s`. */
19728
+ "prop:duration"?: (HelixHeadlessLogGroup["duration"]) | undefined;
19729
+ /** What the step is called. The `heading` slot replaces it. */
19730
+ "prop:heading"?: (HelixHeadlessLogGroup["heading"]) | undefined;
19731
+ /** Where the step stands, which draws a mark before the heading. */
19732
+ "prop:status"?: (HelixHeadlessLogGroup["status"]) | undefined;
19733
+ /** What a screen reader hears for the status, after the heading.
19734
+ `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`. */
19735
+ "attr:status-label"?: (HelixHeadlessLogGroup["statusLabel"]) | undefined;
19736
+ /** What a screen reader hears for the status, after the heading.
19737
+ `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`. */
19738
+ "prop:statusLabel"?: (HelixHeadlessLogGroup["statusLabel"]) | undefined;
19739
+ /** Whether the element starts open. Ignored once `open` is written. */
19740
+ "bool:default-open"?: (HelixHeadlessLogGroup["defaultOpen"]) | undefined;
19741
+ /** Whether the element starts open. Ignored once `open` is written. */
19742
+ "prop:defaultOpen"?: (HelixHeadlessLogGroup["defaultOpen"]) | undefined;
19743
+ /** Whether the element is open.
19744
+
19745
+ One property, not two, so `dialog.open` answers the question anyone
19746
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
19747
+ same statement in markup.
19748
+
19749
+ **Not reflected, and that is required rather than tidy.** Reflection
19750
+ writes the resolved state back as an attribute, so an element that opened
19751
+ itself would put `open` on its own host: cloned, serialized for
19752
+ hydration, or diffed by a framework, it comes back holding whatever the
19753
+ last reader did rather than what the author wrote. `:state(open)` carries
19754
+ the resolved state for stylesheets, which is what the mirror is for. */
19755
+ "prop:open"?: (HelixHeadlessLogGroup["open"]) | undefined;
19756
+ /** Fired before the group closes. Cancelable. */
19757
+ "on:helix-before-close"?: ((
19758
+ e: HelixHeadlessLogGroupHelixBeforeCloseElementEvent,
19759
+ ) => void) | undefined;
19760
+ /** Fired before the group opens. Cancelable. */
19761
+ "on:helix-before-open"?: ((
19762
+ e: HelixHeadlessLogGroupHelixBeforeOpenElementEvent,
19763
+ ) => void) | undefined;
19764
+ /** Fired after the group opens or closes, with `newState` and `oldState`. */
19765
+ "on:toggle"?: ((e: HelixHeadlessLogGroupToggleElementEvent) => void) | undefined;
19766
+
19767
+ /** Set the innerHTML of the element */
19768
+ innerHTML?: (string) | undefined;
19769
+ /** Set the textContent of the element */
19770
+ textContent?: (string | number) | undefined;
19771
+ };
19772
+
19773
+ export type HelixHeadlessLogLineProps = {
19774
+ /** When the line was written: milliseconds since the epoch, or anything `Date` parses. */
19775
+ at?: (HelixHeadlessLogLine["at"]) | undefined;
19776
+ /** How much the line matters. Absent is `info`. */
19777
+ level?: (HelixHeadlessLogLine["level"]) | undefined;
19778
+ /** What a screen reader hears for the link on a line's number. `{number}` is the number. */
19779
+ "line-label"?: (HelixHeadlessLogLine["lineLabel"]) | undefined;
19780
+ /** What a screen reader hears for the link on a line's number. `{number}` is the number. */
19781
+ lineLabel?: (HelixHeadlessLogLine["lineLabel"]) | undefined;
19782
+ };
19783
+
19784
+ export type HelixHeadlessLogLineSolidJsProps = {
19785
+ /** When the line was written: milliseconds since the epoch, or anything `Date` parses. */
19786
+ "prop:at"?: (HelixHeadlessLogLine["at"]) | undefined;
19787
+ /** How much the line matters. Absent is `info`. */
19788
+ "prop:level"?: (HelixHeadlessLogLine["level"]) | undefined;
19789
+ /** What a screen reader hears for the link on a line's number. `{number}` is the number. */
19790
+ "attr:line-label"?: (HelixHeadlessLogLine["lineLabel"]) | undefined;
19791
+ /** What a screen reader hears for the link on a line's number. `{number}` is the number. */
19792
+ "prop:lineLabel"?: (HelixHeadlessLogLine["lineLabel"]) | undefined;
19793
+
19794
+ /** Set the innerHTML of the element */
19795
+ innerHTML?: (string) | undefined;
19796
+ /** Set the textContent of the element */
19797
+ textContent?: (string | number) | undefined;
19798
+ };
19799
+
19800
+ /** `HelixHeadlessLog` component event */
19801
+ export type HelixHeadlessLogElementEvent<E = Event> = TypedEvent<
19802
+ HelixHeadlessLog,
19803
+ E
19804
+ >;
19805
+ /** `helix-before-pin` event type */
19806
+ export type HelixHeadlessLogHelixBeforePinElementEvent =
19807
+ HelixHeadlessLogElementEvent<HelixBeforePinEvent>;
19808
+ /** `helix-expand` event type */
19809
+ export type HelixHeadlessLogHelixExpandElementEvent =
19810
+ HelixHeadlessLogElementEvent<HelixExpandEvent>;
19811
+ /** `helix-pin` event type */
19812
+ export type HelixHeadlessLogHelixPinElementEvent =
19813
+ HelixHeadlessLogElementEvent<HelixPinEvent>;
19814
+
19815
+ export type HelixHeadlessLogProps = {
19816
+ /** Whether the log opens following its newest line, when `pinned` is not set.
19817
+ `default-pinned="false"` opens it where it starts. */
19818
+ "default-pinned"?: (HelixHeadlessLog["defaultPinned"]) | undefined;
19819
+ /** Whether the log opens following its newest line, when `pinned` is not set.
19820
+ `default-pinned="false"` opens it where it starts. */
19821
+ defaultPinned?: (HelixHeadlessLog["defaultPinned"]) | undefined;
19822
+ /** Whether the run is over, which a screen reader is told once.
19823
+
19824
+ Set it when output you `write` is complete. A `source` sets it when the
19825
+ stream ends. */
19826
+ done?: (HelixHeadlessLog["done"]) | undefined;
19827
+ /** What a screen reader hears when the run is over. */
19828
+ "done-label"?: (HelixHeadlessLog["doneLabel"]) | undefined;
19829
+ /** What a screen reader hears when the run is over. */
19830
+ doneLabel?: (HelixHeadlessLog["doneLabel"]) | undefined;
19831
+ /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
19832
+ "dropped-label"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
19833
+ /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
19834
+ droppedLabel?: (HelixHeadlessLog["droppedLabel"]) | undefined;
19835
+ /** The text shown and announced when the log has no lines. */
19836
+ "empty-text"?: (HelixHeadlessLog["emptyText"]) | undefined;
19837
+ /** The text shown and announced when the log has no lines. */
19838
+ emptyText?: (HelixHeadlessLog["emptyText"]) | undefined;
19839
+ /** What a screen reader hears when lines at `error` arrive. `{count}` is how
19840
+ many arrived together and `{text}` is the first of them. */
19841
+ "error-label"?: (HelixHeadlessLog["errorLabel"]) | undefined;
19842
+ /** What a screen reader hears when lines at `error` arrive. `{count}` is how
19843
+ many arrived together and `{text}` is the first of them. */
19844
+ errorLabel?: (HelixHeadlessLog["errorLabel"]) | undefined;
19845
+ /** The log's name, read by screen readers, where `label` is empty. */
19846
+ "fallback-label"?: (HelixHeadlessLog["fallbackLabel"]) | undefined;
19847
+ /** The log's name, read by screen readers, where `label` is empty. */
19848
+ fallbackLabel?: (HelixHeadlessLog["fallbackLabel"]) | undefined;
19849
+ /** What a screen reader hears when a step finishes or fails. `{heading}` is
19850
+ the step's heading and `{status}` is `done` or `failed`. */
19851
+ "group-label"?: (HelixHeadlessLog["groupLabel"]) | undefined;
19852
+ /** What a screen reader hears when a step finishes or fails. `{heading}` is
19853
+ the step's heading and `{status}` is `done` or `failed`. */
19854
+ groupLabel?: (HelixHeadlessLog["groupLabel"]) | undefined;
19855
+ /** The log's name, read by screen readers. */
19856
+ label?: (HelixHeadlessLog["label"]) | undefined;
19857
+ /** The most lines kept, or 0 to keep them all. Past it the oldest lines are
19858
+ let go, and the line above the log says how many. */
19859
+ limit?: (HelixHeadlessLog["limit"]) | undefined;
19860
+ /** A link for each line number, with `{n}` where the number goes, such as
19861
+ `#L{n}`. Empty leaves the numbers as text. */
19862
+ "line-href"?: (HelixHeadlessLog["lineHref"]) | undefined;
19863
+ /** A link for each line number, with `{n}` where the number goes, such as
19864
+ `#L{n}`. Empty leaves the numbers as text. */
19865
+ lineHref?: (HelixHeadlessLog["lineHref"]) | undefined;
19866
+ /** What a screen reader hears for the link on a line's number, handed to each
19867
+ line the log draws. `{number}` is the number. */
19868
+ "line-label"?: (HelixHeadlessLog["lineLabel"]) | undefined;
19869
+ /** What a screen reader hears for the link on a line's number, handed to each
19870
+ line the log draws. `{number}` is the number. */
19871
+ lineLabel?: (HelixHeadlessLog["lineLabel"]) | undefined;
19872
+ /** Whether each line shows its number. */
19873
+ "line-numbers"?: (HelixHeadlessLog["lineNumbers"]) | undefined;
19874
+ /** Whether each line shows its number. */
19875
+ lineNumbers?: (HelixHeadlessLog["lineNumbers"]) | undefined;
19876
+ /** Lines to mark, as numbers and ranges such as `12, 40-44`. */
19877
+ "mark-lines"?: (HelixHeadlessLog["markLines"]) | undefined;
19878
+ /** Lines to mark, as numbers and ranges such as `12, 40-44`. */
19879
+ markLines?: (HelixHeadlessLog["markLines"]) | undefined;
19880
+ /** What a screen reader hears when `query` changes. `{count}` is how many lines match. */
19881
+ "matches-label"?: (HelixHeadlessLog["matchesLabel"]) | undefined;
19882
+ /** What a screen reader hears when `query` changes. `{count}` is how many lines match. */
19883
+ matchesLabel?: (HelixHeadlessLog["matchesLabel"]) | undefined;
19884
+ /** Whether the log follows its newest line.
19885
+
19886
+ The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
19887
+ consumer refusing it takes the decision and assigns their own value. Not
19888
+ reflected, for the reason `Chat` gives at its own `pinned`: a default of
19889
+ true would write the attribute on upgrade. */
19890
+ pinned?: (HelixHeadlessLog["pinned"]) | undefined;
19891
+ /** Text a line has to hold to be shown, ignoring case. Empty shows every line. */
19892
+ query?: (HelixHeadlessLog["query"]) | undefined;
19893
+ /** The words on the button that returns to the newest line, where `resume` is empty. */
19894
+ "resume-label"?: (HelixHeadlessLog["resumeLabel"]) | undefined;
19895
+ /** The words on the button that returns to the newest line, where `resume` is empty. */
19896
+ resumeLabel?: (HelixHeadlessLog["resumeLabel"]) | undefined;
19897
+ /** How near the newest line still counts as being at it, in pixels. */
19898
+ threshold?: (HelixHeadlessLog["threshold"]) | undefined;
19899
+ /** How each line shows its `at`: `absolute` on the clock, `relative` as the
19900
+ time since the first line. Absent shows no time. */
19901
+ timestamps?: (HelixHeadlessLog["timestamps"]) | undefined;
19902
+ /** Whether a line longer than the box wraps onto the next row. Otherwise the log scrolls sideways. */
19903
+ wrap?: (HelixHeadlessLog["wrap"]) | undefined;
19904
+ /** Whether the rows are still loading.
19905
+
19906
+ Reflected, because a stylesheet needs it: the rows that are already there
19907
+ are dimmed rather than removed while a new set arrives, and only CSS can
19908
+ say that without the component knowing what a row looks like. */
19909
+ loading?: (HelixHeadlessLog["loading"]) | undefined;
19910
+ /** The text shown and announced while the rows load. */
19911
+ "loading-text"?: (HelixHeadlessLog["loadingText"]) | undefined;
19912
+ /** The text shown and announced while the rows load. */
19913
+ loadingText?: (HelixHeadlessLog["loadingText"]) | undefined;
19914
+ /** The steps the lines from data name in `group`. A step stands where its
19915
+ first line is, and one with no line yet stands at the end.
19916
+
19917
+ Replaced rather than mutated, as `lines` is: a step finishing is a new
19918
+ array with its `status` changed. */
19919
+ groups?: (HelixHeadlessLog["groups"]) | undefined;
19920
+ /** The lines as data. Reading it gives every line kept, oldest first, with
19921
+ the line still being written left out.
19922
+
19923
+ Replaced rather than mutated: setting it starts the log over with these
19924
+ lines, and `write` adds to them. Set it or write children, not both. */
19925
+ lines?: (HelixHeadlessLog["lines"]) | undefined;
19926
+ /** Reads each finished line of written text: return the fields to set, such
19927
+ as `level` or `group`, or `null` to drop the line. Lines in `lines` are
19928
+ taken as they are. */
19929
+ parse?: (HelixHeadlessLog["parse"]) | undefined;
19930
+ /** Text to read as it arrives, to the end: a `ReadableStream` of text or
19931
+ bytes, such as a `fetch` response's body, or an async iterable. Bytes are
19932
+ read as UTF-8. The log sets `done` when it ends, and a new source stops
19933
+ reading the last one. */
19934
+ source?: (HelixHeadlessLog["source"]) | undefined;
19935
+
19936
+ /** Fired when the reader leaves the newest line by scrolling, or comes back to it. Cancelable. */
19937
+ "onhelix-before-pin"?: ((
19938
+ e: HelixHeadlessLogHelixBeforePinElementEvent,
19939
+ ) => void) | undefined;
19940
+ /** Fired after a reader opens or closes a group drawn from `groups`, with the `id` of every open group in `detail.value`, separated by commas. */
19941
+ "onhelix-expand"?: ((e: HelixHeadlessLogHelixExpandElementEvent) => void) | undefined;
19942
+ /** Fired after the log follows the newest line or lets go of it, with `true` or `false` in `detail.value`. */
19943
+ "onhelix-pin"?: ((e: HelixHeadlessLogHelixPinElementEvent) => void) | undefined;
19944
+ };
19945
+
19946
+ export type HelixHeadlessLogSolidJsProps = {
19947
+ /** Whether the log opens following its newest line, when `pinned` is not set.
19948
+ `default-pinned="false"` opens it where it starts. */
19949
+ "bool:default-pinned"?: (HelixHeadlessLog["defaultPinned"]) | undefined;
19950
+ /** Whether the log opens following its newest line, when `pinned` is not set.
19951
+ `default-pinned="false"` opens it where it starts. */
19952
+ "prop:defaultPinned"?: (HelixHeadlessLog["defaultPinned"]) | undefined;
19953
+ /** Whether the run is over, which a screen reader is told once.
19954
+
19955
+ Set it when output you `write` is complete. A `source` sets it when the
19956
+ stream ends. */
19957
+ "prop:done"?: (HelixHeadlessLog["done"]) | undefined;
19958
+ /** What a screen reader hears when the run is over. */
19959
+ "attr:done-label"?: (HelixHeadlessLog["doneLabel"]) | undefined;
19960
+ /** What a screen reader hears when the run is over. */
19961
+ "prop:doneLabel"?: (HelixHeadlessLog["doneLabel"]) | undefined;
19962
+ /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
19963
+ "attr:dropped-label"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
19964
+ /** What the line above the log says once `limit` has let lines go. `{count}` is how many. */
19965
+ "prop:droppedLabel"?: (HelixHeadlessLog["droppedLabel"]) | undefined;
19966
+ /** The text shown and announced when the log has no lines. */
19967
+ "attr:empty-text"?: (HelixHeadlessLog["emptyText"]) | undefined;
19968
+ /** The text shown and announced when the log has no lines. */
19969
+ "prop:emptyText"?: (HelixHeadlessLog["emptyText"]) | undefined;
19970
+ /** What a screen reader hears when lines at `error` arrive. `{count}` is how
19971
+ many arrived together and `{text}` is the first of them. */
19972
+ "attr:error-label"?: (HelixHeadlessLog["errorLabel"]) | undefined;
19973
+ /** What a screen reader hears when lines at `error` arrive. `{count}` is how
19974
+ many arrived together and `{text}` is the first of them. */
19975
+ "prop:errorLabel"?: (HelixHeadlessLog["errorLabel"]) | undefined;
19976
+ /** The log's name, read by screen readers, where `label` is empty. */
19977
+ "attr:fallback-label"?: (HelixHeadlessLog["fallbackLabel"]) | undefined;
19978
+ /** The log's name, read by screen readers, where `label` is empty. */
19979
+ "prop:fallbackLabel"?: (HelixHeadlessLog["fallbackLabel"]) | undefined;
19980
+ /** What a screen reader hears when a step finishes or fails. `{heading}` is
19981
+ the step's heading and `{status}` is `done` or `failed`. */
19982
+ "attr:group-label"?: (HelixHeadlessLog["groupLabel"]) | undefined;
19983
+ /** What a screen reader hears when a step finishes or fails. `{heading}` is
19984
+ the step's heading and `{status}` is `done` or `failed`. */
19985
+ "prop:groupLabel"?: (HelixHeadlessLog["groupLabel"]) | undefined;
19986
+ /** The log's name, read by screen readers. */
19987
+ "prop:label"?: (HelixHeadlessLog["label"]) | undefined;
19988
+ /** The most lines kept, or 0 to keep them all. Past it the oldest lines are
19989
+ let go, and the line above the log says how many. */
19990
+ "prop:limit"?: (HelixHeadlessLog["limit"]) | undefined;
19991
+ /** A link for each line number, with `{n}` where the number goes, such as
19992
+ `#L{n}`. Empty leaves the numbers as text. */
19993
+ "attr:line-href"?: (HelixHeadlessLog["lineHref"]) | undefined;
19994
+ /** A link for each line number, with `{n}` where the number goes, such as
19995
+ `#L{n}`. Empty leaves the numbers as text. */
19996
+ "prop:lineHref"?: (HelixHeadlessLog["lineHref"]) | undefined;
19997
+ /** What a screen reader hears for the link on a line's number, handed to each
19998
+ line the log draws. `{number}` is the number. */
19999
+ "attr:line-label"?: (HelixHeadlessLog["lineLabel"]) | undefined;
20000
+ /** What a screen reader hears for the link on a line's number, handed to each
20001
+ line the log draws. `{number}` is the number. */
20002
+ "prop:lineLabel"?: (HelixHeadlessLog["lineLabel"]) | undefined;
20003
+ /** Whether each line shows its number. */
20004
+ "bool:line-numbers"?: (HelixHeadlessLog["lineNumbers"]) | undefined;
20005
+ /** Whether each line shows its number. */
20006
+ "prop:lineNumbers"?: (HelixHeadlessLog["lineNumbers"]) | undefined;
20007
+ /** Lines to mark, as numbers and ranges such as `12, 40-44`. */
20008
+ "attr:mark-lines"?: (HelixHeadlessLog["markLines"]) | undefined;
20009
+ /** Lines to mark, as numbers and ranges such as `12, 40-44`. */
20010
+ "prop:markLines"?: (HelixHeadlessLog["markLines"]) | undefined;
20011
+ /** What a screen reader hears when `query` changes. `{count}` is how many lines match. */
20012
+ "attr:matches-label"?: (HelixHeadlessLog["matchesLabel"]) | undefined;
20013
+ /** What a screen reader hears when `query` changes. `{count}` is how many lines match. */
20014
+ "prop:matchesLabel"?: (HelixHeadlessLog["matchesLabel"]) | undefined;
20015
+ /** Whether the log follows its newest line.
20016
+
20017
+ The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
20018
+ consumer refusing it takes the decision and assigns their own value. Not
20019
+ reflected, for the reason `Chat` gives at its own `pinned`: a default of
20020
+ true would write the attribute on upgrade. */
20021
+ "prop:pinned"?: (HelixHeadlessLog["pinned"]) | undefined;
20022
+ /** Text a line has to hold to be shown, ignoring case. Empty shows every line. */
20023
+ "prop:query"?: (HelixHeadlessLog["query"]) | undefined;
20024
+ /** The words on the button that returns to the newest line, where `resume` is empty. */
20025
+ "attr:resume-label"?: (HelixHeadlessLog["resumeLabel"]) | undefined;
20026
+ /** The words on the button that returns to the newest line, where `resume` is empty. */
20027
+ "prop:resumeLabel"?: (HelixHeadlessLog["resumeLabel"]) | undefined;
20028
+ /** How near the newest line still counts as being at it, in pixels. */
20029
+ "prop:threshold"?: (HelixHeadlessLog["threshold"]) | undefined;
20030
+ /** How each line shows its `at`: `absolute` on the clock, `relative` as the
20031
+ time since the first line. Absent shows no time. */
20032
+ "prop:timestamps"?: (HelixHeadlessLog["timestamps"]) | undefined;
20033
+ /** Whether a line longer than the box wraps onto the next row. Otherwise the log scrolls sideways. */
20034
+ "prop:wrap"?: (HelixHeadlessLog["wrap"]) | undefined;
20035
+ /** Whether the rows are still loading.
20036
+
20037
+ Reflected, because a stylesheet needs it: the rows that are already there
20038
+ are dimmed rather than removed while a new set arrives, and only CSS can
20039
+ say that without the component knowing what a row looks like. */
20040
+ "prop:loading"?: (HelixHeadlessLog["loading"]) | undefined;
20041
+ /** The text shown and announced while the rows load. */
20042
+ "attr:loading-text"?: (HelixHeadlessLog["loadingText"]) | undefined;
20043
+ /** The text shown and announced while the rows load. */
20044
+ "prop:loadingText"?: (HelixHeadlessLog["loadingText"]) | undefined;
20045
+ /** The steps the lines from data name in `group`. A step stands where its
20046
+ first line is, and one with no line yet stands at the end.
20047
+
20048
+ Replaced rather than mutated, as `lines` is: a step finishing is a new
20049
+ array with its `status` changed. */
20050
+ "prop:groups"?: (HelixHeadlessLog["groups"]) | undefined;
20051
+ /** The lines as data. Reading it gives every line kept, oldest first, with
20052
+ the line still being written left out.
20053
+
20054
+ Replaced rather than mutated: setting it starts the log over with these
20055
+ lines, and `write` adds to them. Set it or write children, not both. */
20056
+ "prop:lines"?: (HelixHeadlessLog["lines"]) | undefined;
20057
+ /** Reads each finished line of written text: return the fields to set, such
20058
+ as `level` or `group`, or `null` to drop the line. Lines in `lines` are
20059
+ taken as they are. */
20060
+ "prop:parse"?: (HelixHeadlessLog["parse"]) | undefined;
20061
+ /** Text to read as it arrives, to the end: a `ReadableStream` of text or
20062
+ bytes, such as a `fetch` response's body, or an async iterable. Bytes are
20063
+ read as UTF-8. The log sets `done` when it ends, and a new source stops
20064
+ reading the last one. */
20065
+ "prop:source"?: (HelixHeadlessLog["source"]) | undefined;
20066
+ /** Fired when the reader leaves the newest line by scrolling, or comes back to it. Cancelable. */
20067
+ "on:helix-before-pin"?: ((
20068
+ e: HelixHeadlessLogHelixBeforePinElementEvent,
20069
+ ) => void) | undefined;
20070
+ /** Fired after a reader opens or closes a group drawn from `groups`, with the `id` of every open group in `detail.value`, separated by commas. */
20071
+ "on:helix-expand"?: ((e: HelixHeadlessLogHelixExpandElementEvent) => void) | undefined;
20072
+ /** Fired after the log follows the newest line or lets go of it, with `true` or `false` in `detail.value`. */
20073
+ "on:helix-pin"?: ((e: HelixHeadlessLogHelixPinElementEvent) => void) | undefined;
20074
+
20075
+ /** Set the innerHTML of the element */
20076
+ innerHTML?: (string) | undefined;
20077
+ /** Set the textContent of the element */
20078
+ textContent?: (string | number) | undefined;
20079
+ };
20080
+
19665
20081
  /** `HelixHeadlessMapArea` component event */
19666
20082
  export type HelixHeadlessMapAreaElementEvent<E = Event> = TypedEvent<
19667
20083
  HelixHeadlessMapArea,
@@ -54205,6 +54621,439 @@ export type CustomElements = {
54205
54621
  HelixHeadlessLoaderProps & BaseProps<HelixHeadlessLoader> & BaseEvents<HelixHeadlessLoader>
54206
54622
  >;
54207
54623
 
54624
+ /**
54625
+ * A group is a disclosure: its heading is a button that shows and hides the
54626
+ * lines inside it, and says whether they are shown with `aria-expanded`. Put
54627
+ * `Log.Line` elements inside it, and nest groups for steps within steps.
54628
+ *
54629
+ * `status` draws a mark before the heading, and a screen reader hears the
54630
+ * status after the heading (`status-label`). `duration` stands at the end of
54631
+ * the heading, as you write it, such as `12s`.
54632
+ *
54633
+ * A group starts shut. Write `default-open` on the step a reader should see,
54634
+ * such as the one that failed.
54635
+ *
54636
+ * ## Attributes & Properties
54637
+ *
54638
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
54639
+ *
54640
+ * - `duration`: How long the step took, as it should read, such as `12s`.
54641
+ * - `heading`: What the step is called. The `heading` slot replaces it.
54642
+ * - `status`: Where the step stands, which draws a mark before the heading.
54643
+ * - `status-label`/`statusLabel`: What a screen reader hears for the status, after the heading.
54644
+ * `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`.
54645
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
54646
+ * - `open`: Whether the element is open.
54647
+ *
54648
+ * One property, not two, so `dialog.open` answers the question anyone
54649
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
54650
+ * same statement in markup.
54651
+ *
54652
+ * **Not reflected, and that is required rather than tidy.** Reflection
54653
+ * writes the resolved state back as an attribute, so an element that opened
54654
+ * itself would put `open` on its own host: cloned, serialized for
54655
+ * hydration, or diffed by a framework, it comes back holding whatever the
54656
+ * last reader did rather than what the author wrote. `:state(open)` carries
54657
+ * the resolved state for stylesheets, which is what the mirror is for.
54658
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54659
+ *
54660
+ * **Named `whenSettled` because `settled` is taken four times over**, by
54661
+ * Image, Splitter and both color controls, none of them about transitions. A
54662
+ * base class takes the name every subclass then cannot use.
54663
+ *
54664
+ * **The state it reports cannot be watched, which is why this exists.** A
54665
+ * custom state is deliberately not in the DOM, so there is no
54666
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
54667
+ * instead.
54668
+ *
54669
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
54670
+ * the suppression is still active in. That is the distinction `readyToMove`
54671
+ * in `@fusion.dev/helix-testing` is written around.
54672
+ *
54673
+ * It never resolves where `requestAnimationFrame` never fires, which is a
54674
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
54675
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
54676
+ * browser harness's awaits it alone: a browser always runs the frame, and a
54677
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
54678
+ *
54679
+ * ## Events
54680
+ *
54681
+ * Events that will be emitted by the component.
54682
+ *
54683
+ * - `helix-before-close`: Fired before the group closes. Cancelable.
54684
+ * - `helix-before-open`: Fired before the group opens. Cancelable.
54685
+ * - `toggle`: Fired after the group opens or closes, with `newState` and `oldState`.
54686
+ *
54687
+ * ## Slots
54688
+ *
54689
+ * Areas where markup can be added to the component.
54690
+ *
54691
+ * - `(default)`: The lines of the step, and any groups inside it.
54692
+ * - `heading`: The heading, where it holds more than text. Defaults to `heading`.
54693
+ *
54694
+ * ## Methods
54695
+ *
54696
+ * Methods that can be called to access component functionality.
54697
+ *
54698
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
54699
+ * was applied.
54700
+ *
54701
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
54702
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
54703
+ * element opens or closes itself, whether or not a consumer declared
54704
+ * `open`: a declared property is a seed and a correction, and a consumer
54705
+ * who wants the decision for themselves refuses it and assigns their own.
54706
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
54707
+ *
54708
+ * ## CSS Parts
54709
+ *
54710
+ * Custom selectors for styling elements within the component.
54711
+ *
54712
+ * - `content`: The lines, hidden while the group is shut.
54713
+ * - `duration`: How long the step took.
54714
+ * - `heading`: The heading.
54715
+ * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
54716
+ * - `status`: The mark for the status, an `<svg>` you size.
54717
+ * - `summary`: The button that opens and closes the group.
54718
+ *
54719
+ * ## CSS States
54720
+ *
54721
+ * These can be used to apply styling when a component is in a given state.
54722
+ *
54723
+ * - `open`: The group shows its lines.
54724
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
54725
+ */
54726
+ "helix-headless-log-group": Partial<
54727
+ HelixHeadlessLogGroupProps & BaseProps<HelixHeadlessLogGroup> & BaseEvents<HelixHeadlessLogGroup>
54728
+ >;
54729
+
54730
+ /**
54731
+ * Write one for each line of a log you serve whole, inside a `Log` or a
54732
+ * `Log.Group`. The log numbers each line, counting the lines of every group,
54733
+ * and tells it whether to show its number and its time.
54734
+ *
54735
+ * `level` says how much a line matters, and the styled tier draws `warn` and
54736
+ * `error` lines apart. The text is the line's own content, so you can mark it
54737
+ * up yourself.
54738
+ *
54739
+ * ## Attributes & Properties
54740
+ *
54741
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
54742
+ *
54743
+ * - `at`: When the line was written: milliseconds since the epoch, or anything `Date` parses.
54744
+ * - `level`: How much the line matters. Absent is `info`.
54745
+ * - `line-label`/`lineLabel`: What a screen reader hears for the link on a line's number. `{number}` is the number.
54746
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54747
+ *
54748
+ * **Named `whenSettled` because `settled` is taken four times over**, by
54749
+ * Image, Splitter and both color controls, none of them about transitions. A
54750
+ * base class takes the name every subclass then cannot use.
54751
+ *
54752
+ * **The state it reports cannot be watched, which is why this exists.** A
54753
+ * custom state is deliberately not in the DOM, so there is no
54754
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
54755
+ * instead.
54756
+ *
54757
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
54758
+ * the suppression is still active in. That is the distinction `readyToMove`
54759
+ * in `@fusion.dev/helix-testing` is written around.
54760
+ *
54761
+ * It never resolves where `requestAnimationFrame` never fires, which is a
54762
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
54763
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
54764
+ * browser harness's awaits it alone: a browser always runs the frame, and a
54765
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
54766
+ *
54767
+ * ## Slots
54768
+ *
54769
+ * Areas where markup can be added to the component.
54770
+ *
54771
+ * - `(default)`: The text of the line.
54772
+ *
54773
+ * ## CSS Custom Properties
54774
+ *
54775
+ * CSS variables available for styling the component.
54776
+ *
54777
+ * - `--log-run-background-color`: Written on a `run` with a background, in the same form as `--log-run-color`.
54778
+ * - `--log-run-color`: Written on a `run` with a text color: one of the sixteen `--log-ansi-*` colors the log publishes, or the color itself.
54779
+ *
54780
+ * ## CSS Parts
54781
+ *
54782
+ * Custom selectors for styling elements within the component.
54783
+ *
54784
+ * - `line`: The row the number, the time, and the text sit in.
54785
+ * - `line-debug`: The row of a line at `debug`.
54786
+ * - `line-error`: The row of a line at `error`.
54787
+ * - `line-marked`: The row of a line `mark-lines` names on the log.
54788
+ * - `line-warn`: The row of a line at `warn`.
54789
+ * - `match`: Text that matches the log's `query`, in a line the log draws from data.
54790
+ * - `number`: The line's number, shown with `line-numbers`, and a link with `line-href`.
54791
+ * - `run`: A stretch of text drawn in an ANSI style, in a line the log draws from data. Its color is `--log-run-color` and its background `--log-run-background-color`.
54792
+ * - `run-bold`: A run drawn bold.
54793
+ * - `run-dim`: A run drawn faint.
54794
+ * - `run-italic`: A run drawn italic.
54795
+ * - `run-strike`: A run drawn struck through.
54796
+ * - `run-underline`: A run drawn underlined.
54797
+ * - `text`: The text of the line.
54798
+ * - `time`: When the line was written, shown with `timestamps`.
54799
+ *
54800
+ * ## CSS States
54801
+ *
54802
+ * These can be used to apply styling when a component is in a given state.
54803
+ *
54804
+ * - `filtered`: The log's `query` does not match the line, so it draws nothing.
54805
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
54806
+ */
54807
+ "helix-headless-log-line": Partial<
54808
+ HelixHeadlessLogLineProps & BaseProps<HelixHeadlessLogLine> & BaseEvents<HelixHeadlessLogLine>
54809
+ >;
54810
+
54811
+ /**
54812
+ * A log holds lines in the order they were written and keeps the reader at
54813
+ * the newest one, until they scroll up to read. It stays where they left it
54814
+ * while lines keep arriving, and a button returns them to the end
54815
+ * (`resume-label`, "Jump to latest").
54816
+ *
54817
+ * **Lines arrive two ways.** For a log you serve whole, write `Log.Line`
54818
+ * elements as children, inside `Log.Group` elements for the steps. For a log
54819
+ * that is still being written, hand it text: `write(chunk)` takes text as it
54820
+ * arrives, in pieces that need not end at a line break, and `source` takes a
54821
+ * `ReadableStream` or an async iterable and reads it to the end. `lines` takes
54822
+ * the lines as data. Text drawn from data is drawn one window at a time, so a
54823
+ * log of a hundred thousand lines holds a screenful of elements, and the log
54824
+ * needs a block size of its own. Do not use both ways at once.
54825
+ *
54826
+ * **Written text is read the way a terminal shows it.** A carriage return
54827
+ * starts the line over, so a progress bar stays one line, and the line still
54828
+ * being written is shown as it stands. ANSI colors and weights are drawn, in
54829
+ * the sixteen colors the styled tier takes from your theme, and every other
54830
+ * escape code is dropped. Give `parse` a function to read each finished line,
54831
+ * such as a level off its prefix or a group off a marker.
54832
+ *
54833
+ * **Steps fold.** Lines that name a group in `groups` stand under its heading,
54834
+ * which shows its status and how long it took and opens and closes the lines.
54835
+ * A group a reader opens or closes fires `helix-expand` with every open group.
54836
+ *
54837
+ * **Search with `query`.** The log shows only the lines that hold it, marks
54838
+ * each match, opens the groups that hold one, and says how many lines match.
54839
+ *
54840
+ * `line-numbers` numbers the lines from the first ever written, so a number
54841
+ * still names its line once `limit` has let older lines go, and `line-href`
54842
+ * makes each number a link, such as `#L{n}`. `scrollToLine(n)` takes a reader
54843
+ * to one. `timestamps` shows each line's `at`, on the clock or as the time
54844
+ * into the run. `mark-lines` marks lines, such as `12, 40-44`.
54845
+ *
54846
+ * **What a screen reader hears.** The log is a `log` and stays quiet as lines
54847
+ * arrive, since reading a build aloud line by line helps nobody. A separate
54848
+ * status region says each line at `error` once it arrives, each step once it
54849
+ * finishes or fails, and the end of the run once `done` is set or `source`
54850
+ * ends. Set `done` yourself when output you `write` is complete.
54851
+ *
54852
+ * The log scrolls on this tier. It carries `data-scroller`, so following the
54853
+ * newest line and drawing a window work with no stylesheet. Give the log a
54854
+ * block size, such as `helix-headless-log::part(log) { block-size: 20rem }`.
54855
+ *
54856
+ * ```js
54857
+ * import '@fusion.dev/helix/log'
54858
+ * ```
54859
+ *
54860
+ * ## Attributes & Properties
54861
+ *
54862
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
54863
+ *
54864
+ * - `default-pinned`/`defaultPinned`: Whether the log opens following its newest line, when `pinned` is not set.
54865
+ * `default-pinned="false"` opens it where it starts.
54866
+ * - `done`: Whether the run is over, which a screen reader is told once.
54867
+ *
54868
+ * Set it when output you `write` is complete. A `source` sets it when the
54869
+ * stream ends.
54870
+ * - `done-label`/`doneLabel`: What a screen reader hears when the run is over.
54871
+ * - `dropped-label`/`droppedLabel`: What the line above the log says once `limit` has let lines go. `{count}` is how many.
54872
+ * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines.
54873
+ * - `error-label`/`errorLabel`: What a screen reader hears when lines at `error` arrive. `{count}` is how
54874
+ * many arrived together and `{text}` is the first of them.
54875
+ * - `fallback-label`/`fallbackLabel`: The log's name, read by screen readers, where `label` is empty.
54876
+ * - `group-label`/`groupLabel`: What a screen reader hears when a step finishes or fails. `{heading}` is
54877
+ * the step's heading and `{status}` is `done` or `failed`.
54878
+ * - `label`: The log's name, read by screen readers.
54879
+ * - `limit`: The most lines kept, or 0 to keep them all. Past it the oldest lines are
54880
+ * let go, and the line above the log says how many.
54881
+ * - `line-href`/`lineHref`: A link for each line number, with `{n}` where the number goes, such as
54882
+ * `#L{n}`. Empty leaves the numbers as text.
54883
+ * - `line-label`/`lineLabel`: What a screen reader hears for the link on a line's number, handed to each
54884
+ * line the log draws. `{number}` is the number.
54885
+ * - `line-numbers`/`lineNumbers`: Whether each line shows its number.
54886
+ * - `mark-lines`/`markLines`: Lines to mark, as numbers and ranges such as `12, 40-44`.
54887
+ * - `matches-label`/`matchesLabel`: What a screen reader hears when `query` changes. `{count}` is how many lines match.
54888
+ * - `pinned`: Whether the log follows its newest line.
54889
+ *
54890
+ * The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
54891
+ * consumer refusing it takes the decision and assigns their own value. Not
54892
+ * reflected, for the reason `Chat` gives at its own `pinned`: a default of
54893
+ * true would write the attribute on upgrade.
54894
+ * - `query`: Text a line has to hold to be shown, ignoring case. Empty shows every line.
54895
+ * - `resume-label`/`resumeLabel`: The words on the button that returns to the newest line, where `resume` is empty.
54896
+ * - `threshold`: How near the newest line still counts as being at it, in pixels.
54897
+ * - `timestamps`: How each line shows its `at`: `absolute` on the clock, `relative` as the
54898
+ * time since the first line. Absent shows no time.
54899
+ * - `wrap`: Whether a line longer than the box wraps onto the next row. Otherwise the log scrolls sideways.
54900
+ * - `loading`: Whether the rows are still loading.
54901
+ *
54902
+ * Reflected, because a stylesheet needs it: the rows that are already there
54903
+ * are dimmed rather than removed while a new set arrives, and only CSS can
54904
+ * say that without the component knowing what a row looks like.
54905
+ * - `loading-text`/`loadingText`: The text shown and announced while the rows load.
54906
+ * - `groups`: The steps the lines from data name in `group`. A step stands where its
54907
+ * first line is, and one with no line yet stands at the end.
54908
+ *
54909
+ * Replaced rather than mutated, as `lines` is: a step finishing is a new
54910
+ * array with its `status` changed. (property only)
54911
+ * - `lines`: The lines as data. Reading it gives every line kept, oldest first, with
54912
+ * the line still being written left out.
54913
+ *
54914
+ * Replaced rather than mutated: setting it starts the log over with these
54915
+ * lines, and `write` adds to them. Set it or write children, not both. (property only)
54916
+ * - `parse`: Reads each finished line of written text: return the fields to set, such
54917
+ * as `level` or `group`, or `null` to drop the line. Lines in `lines` are
54918
+ * taken as they are. (property only)
54919
+ * - `source`: Text to read as it arrives, to the end: a `ReadableStream` of text or
54920
+ * bytes, such as a `fetch` response's body, or an async iterable. Bytes are
54921
+ * read as UTF-8. The log sets `done` when it ends, and a new source stops
54922
+ * reading the last one. (property only)
54923
+ * - `text`: Every line kept, as plain text with the escape codes taken out, one to a
54924
+ * row: what a download or a copy of the log should hold. (property only) (readonly)
54925
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
54926
+ *
54927
+ * **Named `whenSettled` because `settled` is taken four times over**, by
54928
+ * Image, Splitter and both color controls, none of them about transitions. A
54929
+ * base class takes the name every subclass then cannot use.
54930
+ *
54931
+ * **The state it reports cannot be watched, which is why this exists.** A
54932
+ * custom state is deliberately not in the DOM, so there is no
54933
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
54934
+ * instead.
54935
+ *
54936
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
54937
+ * the suppression is still active in. That is the distinction `readyToMove`
54938
+ * in `@fusion.dev/helix-testing` is written around.
54939
+ *
54940
+ * It never resolves where `requestAnimationFrame` never fires, which is a
54941
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
54942
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
54943
+ * browser harness's awaits it alone: a browser always runs the frame, and a
54944
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
54945
+ *
54946
+ * ## Events
54947
+ *
54948
+ * Events that will be emitted by the component.
54949
+ *
54950
+ * - `helix-before-pin`: Fired when the reader leaves the newest line by scrolling, or comes back to it. Cancelable.
54951
+ * - `helix-expand`: Fired after a reader opens or closes a group drawn from `groups`, with the `id` of every open group in `detail.value`, separated by commas.
54952
+ * - `helix-pin`: Fired after the log follows the newest line or lets go of it, with `true` or `false` in `detail.value`.
54953
+ *
54954
+ * ## Slots
54955
+ *
54956
+ * Areas where markup can be added to the component.
54957
+ *
54958
+ * - `(default)`: The lines, as `Log.Line` and `Log.Group` elements.
54959
+ * - `resume`: The control that returns to the newest line, shown while the reader is scrolled away. Defaults to a button named by `resume-label`.
54960
+ * - `toolbar`: Controls above the log, such as a search field or a button that wraps lines.
54961
+ *
54962
+ * ## Methods
54963
+ *
54964
+ * Methods that can be called to access component functionality.
54965
+ *
54966
+ * - `write(chunk: string) => void`: Adds text as it arrives. A line ends at each line break, and the text
54967
+ * after the last one is the line still being written.
54968
+ * - `clear() => void`: Lets every line go, and forgets which groups the reader opened, keeping
54969
+ * `groups`, `parse`, and `limit`.
54970
+ * - `resume() => void`: Puts the log back at its newest line, and follows it again.
54971
+ * - `scrollToLine(number: number, options: LogScrollOptions = {}) => Promise<boolean>`: Scrolls to line `number`, counted from the first line ever written, and
54972
+ * stops following the newest. Opens a shut group the line is in. Resolves
54973
+ * to whether the line is shown: false for a line `limit` let go or `query`
54974
+ * hides.
54975
+ *
54976
+ * ## CSS Custom Properties
54977
+ *
54978
+ * CSS variables available for styling the component.
54979
+ *
54980
+ * - `--log-ansi-background`: The background a run takes where ANSI swaps the colors and named none. Defaults to the log's own background on the styled tier.
54981
+ * - `--log-ansi-black`: The ANSI color black, which codes `30` and `40` draw.
54982
+ * - `--log-ansi-blue`: The ANSI color blue, which codes `34` and `44` draw.
54983
+ * - `--log-ansi-bright-black`: The ANSI color bright black, which codes `90` and `100` draw.
54984
+ * - `--log-ansi-bright-blue`: The ANSI color bright blue, which codes `94` and `104` draw.
54985
+ * - `--log-ansi-bright-cyan`: The ANSI color bright cyan, which codes `96` and `106` draw.
54986
+ * - `--log-ansi-bright-green`: The ANSI color bright green, which codes `92` and `102` draw.
54987
+ * - `--log-ansi-bright-magenta`: The ANSI color bright magenta, which codes `95` and `105` draw.
54988
+ * - `--log-ansi-bright-red`: The ANSI color bright red, which codes `91` and `101` draw.
54989
+ * - `--log-ansi-bright-white`: The ANSI color bright white, which codes `97` and `107` draw.
54990
+ * - `--log-ansi-bright-yellow`: The ANSI color bright yellow, which codes `93` and `103` draw.
54991
+ * - `--log-ansi-cyan`: The ANSI color cyan, which codes `36` and `46` draw.
54992
+ * - `--log-ansi-foreground`: The text color a run takes where ANSI swaps the colors and named none. Defaults to the log's own text color on the styled tier.
54993
+ * - `--log-ansi-green`: The ANSI color green, which codes `32` and `42` draw.
54994
+ * - `--log-ansi-magenta`: The ANSI color magenta, which codes `35` and `45` draw.
54995
+ * - `--log-ansi-red`: The ANSI color red, which codes `31` and `41` draw.
54996
+ * - `--log-ansi-white`: The ANSI color white, which codes `37` and `47` draw.
54997
+ * - `--log-ansi-yellow`: The ANSI color yellow, which codes `33` and `43` draw.
54998
+ * - `--log-digits`: Written on the `log`: how many digits the largest line number has, while `line-numbers` is set, so a stylesheet can size the column of numbers.
54999
+ *
55000
+ * ## CSS Parts
55001
+ *
55002
+ * Custom selectors for styling elements within the component.
55003
+ *
55004
+ * - `after`: The space the rows below the drawn ones would take. Only for lines drawn from data.
55005
+ * - `before`: The space the rows above the drawn ones would take. Only for lines drawn from data.
55006
+ * - `dropped`: The line above the log that says how many earlier lines `limit` let go.
55007
+ * - `empty`: Shown when the log has no lines.
55008
+ * - `group-content`: Not drawn: a group drawn from data stands for its heading, and its lines are rows beside it.
55009
+ * - `group-duration`: How long a step drawn from `groups` took.
55010
+ * - `group-heading`: The heading of a step drawn from `groups`.
55011
+ * - `group-mark`: The caret of a step drawn from `groups`.
55012
+ * - `group-status`: The status mark of a step drawn from `groups`.
55013
+ * - `group-summary`: The button that opens and closes a step drawn from `groups`.
55014
+ * - `group-summary-done`: The button of a step drawn from `groups` that is `done`.
55015
+ * - `group-summary-failed`: The button of a step drawn from `groups` that `failed`.
55016
+ * - `group-summary-pending`: The button of a step drawn from `groups` that is `pending`.
55017
+ * - `group-summary-running`: The button of a step drawn from `groups` that is `running`.
55018
+ * - `group-summary-skipped`: The button of a step drawn from `groups` that was `skipped`.
55019
+ * - `line`: The row of a line drawn from data.
55020
+ * - `line-debug`: The row of a line drawn from data at `debug`.
55021
+ * - `line-error`: The row of a line drawn from data at `error`.
55022
+ * - `line-marked`: The row of a line drawn from data that `mark-lines` names.
55023
+ * - `line-match`: Text in a line drawn from data that matches `query`.
55024
+ * - `line-number`: The number of a line drawn from data.
55025
+ * - `line-run`: A stretch of a line drawn from data in an ANSI style.
55026
+ * - `line-run-bold`: A run drawn bold.
55027
+ * - `line-run-dim`: A run drawn faint.
55028
+ * - `line-run-italic`: A run drawn italic.
55029
+ * - `line-run-strike`: A run drawn struck through.
55030
+ * - `line-run-underline`: A run drawn underlined.
55031
+ * - `line-text`: The text of a line drawn from data.
55032
+ * - `line-time`: The time of a line drawn from data.
55033
+ * - `line-warn`: The row of a line drawn from data at `warn`.
55034
+ * - `live`: The region where screen readers hear errors, finished steps, and the end of the run.
55035
+ * - `loading`: Shown while `loading` is set.
55036
+ * - `log`: The lines, which scroll. On this tier, it needs only a block size.
55037
+ * - `resume`: The control shown while the reader is scrolled away from the newest line.
55038
+ * - `resume-button`: The button the `resume` region shows when nothing is slotted into it.
55039
+ * - `resume-mark`: The arrow on the default `resume-button`.
55040
+ * - `row`: The wrapper around one row drawn from data, a line or a group's heading.
55041
+ * - `toolbar`: The `toolbar` slot, above the log.
55042
+ *
55043
+ * ## CSS States
55044
+ *
55045
+ * These can be used to apply styling when a component is in a given state.
55046
+ *
55047
+ * - `done`: The run is over: `done` is set, or `source` ended.
55048
+ * - `empty`: The log has no lines.
55049
+ * - `filtered`: `query` is set, so only matching lines are shown.
55050
+ * - `pinned`: The log follows its newest line.
55051
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
55052
+ */
55053
+ "helix-headless-log": Partial<
55054
+ HelixHeadlessLogProps & BaseProps<HelixHeadlessLog> & BaseEvents<HelixHeadlessLog>
55055
+ >;
55056
+
54208
55057
  /**
54209
55058
  * `connectMap` fills the shape as a layer of the map, under its place names.
54210
55059
  * The frame lists each area by its `label` and `description` for screen
@@ -86079,6 +86928,448 @@ export type CustomElementsSolidJs = {
86079
86928
  BaseEvents<HelixHeadlessLoader>
86080
86929
  >;
86081
86930
 
86931
+ /**
86932
+ * A group is a disclosure: its heading is a button that shows and hides the
86933
+ * lines inside it, and says whether they are shown with `aria-expanded`. Put
86934
+ * `Log.Line` elements inside it, and nest groups for steps within steps.
86935
+ *
86936
+ * `status` draws a mark before the heading, and a screen reader hears the
86937
+ * status after the heading (`status-label`). `duration` stands at the end of
86938
+ * the heading, as you write it, such as `12s`.
86939
+ *
86940
+ * A group starts shut. Write `default-open` on the step a reader should see,
86941
+ * such as the one that failed.
86942
+ *
86943
+ * ## Attributes & Properties
86944
+ *
86945
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
86946
+ *
86947
+ * - `duration`: How long the step took, as it should read, such as `12s`.
86948
+ * - `heading`: What the step is called. The `heading` slot replaces it.
86949
+ * - `status`: Where the step stands, which draws a mark before the heading.
86950
+ * - `status-label`/`statusLabel`: What a screen reader hears for the status, after the heading.
86951
+ * `{status}` is one of `pending`, `running`, `done`, `failed`, and `skipped`.
86952
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
86953
+ * - `open`: Whether the element is open.
86954
+ *
86955
+ * One property, not two, so `dialog.open` answers the question anyone
86956
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
86957
+ * same statement in markup.
86958
+ *
86959
+ * **Not reflected, and that is required rather than tidy.** Reflection
86960
+ * writes the resolved state back as an attribute, so an element that opened
86961
+ * itself would put `open` on its own host: cloned, serialized for
86962
+ * hydration, or diffed by a framework, it comes back holding whatever the
86963
+ * last reader did rather than what the author wrote. `:state(open)` carries
86964
+ * the resolved state for stylesheets, which is what the mirror is for.
86965
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
86966
+ *
86967
+ * **Named `whenSettled` because `settled` is taken four times over**, by
86968
+ * Image, Splitter and both color controls, none of them about transitions. A
86969
+ * base class takes the name every subclass then cannot use.
86970
+ *
86971
+ * **The state it reports cannot be watched, which is why this exists.** A
86972
+ * custom state is deliberately not in the DOM, so there is no
86973
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
86974
+ * instead.
86975
+ *
86976
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
86977
+ * the suppression is still active in. That is the distinction `readyToMove`
86978
+ * in `@fusion.dev/helix-testing` is written around.
86979
+ *
86980
+ * It never resolves where `requestAnimationFrame` never fires, which is a
86981
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
86982
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
86983
+ * browser harness's awaits it alone: a browser always runs the frame, and a
86984
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
86985
+ *
86986
+ * ## Events
86987
+ *
86988
+ * Events that will be emitted by the component.
86989
+ *
86990
+ * - `helix-before-close`: Fired before the group closes. Cancelable.
86991
+ * - `helix-before-open`: Fired before the group opens. Cancelable.
86992
+ * - `toggle`: Fired after the group opens or closes, with `newState` and `oldState`.
86993
+ *
86994
+ * ## Slots
86995
+ *
86996
+ * Areas where markup can be added to the component.
86997
+ *
86998
+ * - `(default)`: The lines of the step, and any groups inside it.
86999
+ * - `heading`: The heading, where it holds more than text. Defaults to `heading`.
87000
+ *
87001
+ * ## Methods
87002
+ *
87003
+ * Methods that can be called to access component functionality.
87004
+ *
87005
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
87006
+ * was applied.
87007
+ *
87008
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
87009
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
87010
+ * element opens or closes itself, whether or not a consumer declared
87011
+ * `open`: a declared property is a seed and a correction, and a consumer
87012
+ * who wants the decision for themselves refuses it and assigns their own.
87013
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
87014
+ *
87015
+ * ## CSS Parts
87016
+ *
87017
+ * Custom selectors for styling elements within the component.
87018
+ *
87019
+ * - `content`: The lines, hidden while the group is shut.
87020
+ * - `duration`: How long the step took.
87021
+ * - `heading`: The heading.
87022
+ * - `mark`: The caret that turns as the group opens, an `<svg>` you size.
87023
+ * - `status`: The mark for the status, an `<svg>` you size.
87024
+ * - `summary`: The button that opens and closes the group.
87025
+ *
87026
+ * ## CSS States
87027
+ *
87028
+ * These can be used to apply styling when a component is in a given state.
87029
+ *
87030
+ * - `open`: The group shows its lines.
87031
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
87032
+ */
87033
+ "helix-headless-log-group": Partial<
87034
+ HelixHeadlessLogGroupProps &
87035
+ HelixHeadlessLogGroupSolidJsProps &
87036
+ BaseProps<HelixHeadlessLogGroup> &
87037
+ BaseEvents<HelixHeadlessLogGroup>
87038
+ >;
87039
+
87040
+ /**
87041
+ * Write one for each line of a log you serve whole, inside a `Log` or a
87042
+ * `Log.Group`. The log numbers each line, counting the lines of every group,
87043
+ * and tells it whether to show its number and its time.
87044
+ *
87045
+ * `level` says how much a line matters, and the styled tier draws `warn` and
87046
+ * `error` lines apart. The text is the line's own content, so you can mark it
87047
+ * up yourself.
87048
+ *
87049
+ * ## Attributes & Properties
87050
+ *
87051
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
87052
+ *
87053
+ * - `at`: When the line was written: milliseconds since the epoch, or anything `Date` parses.
87054
+ * - `level`: How much the line matters. Absent is `info`.
87055
+ * - `line-label`/`lineLabel`: What a screen reader hears for the link on a line's number. `{number}` is the number.
87056
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
87057
+ *
87058
+ * **Named `whenSettled` because `settled` is taken four times over**, by
87059
+ * Image, Splitter and both color controls, none of them about transitions. A
87060
+ * base class takes the name every subclass then cannot use.
87061
+ *
87062
+ * **The state it reports cannot be watched, which is why this exists.** A
87063
+ * custom state is deliberately not in the DOM, so there is no
87064
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
87065
+ * instead.
87066
+ *
87067
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
87068
+ * the suppression is still active in. That is the distinction `readyToMove`
87069
+ * in `@fusion.dev/helix-testing` is written around.
87070
+ *
87071
+ * It never resolves where `requestAnimationFrame` never fires, which is a
87072
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
87073
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
87074
+ * browser harness's awaits it alone: a browser always runs the frame, and a
87075
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
87076
+ *
87077
+ * ## Slots
87078
+ *
87079
+ * Areas where markup can be added to the component.
87080
+ *
87081
+ * - `(default)`: The text of the line.
87082
+ *
87083
+ * ## CSS Custom Properties
87084
+ *
87085
+ * CSS variables available for styling the component.
87086
+ *
87087
+ * - `--log-run-background-color`: Written on a `run` with a background, in the same form as `--log-run-color`.
87088
+ * - `--log-run-color`: Written on a `run` with a text color: one of the sixteen `--log-ansi-*` colors the log publishes, or the color itself.
87089
+ *
87090
+ * ## CSS Parts
87091
+ *
87092
+ * Custom selectors for styling elements within the component.
87093
+ *
87094
+ * - `line`: The row the number, the time, and the text sit in.
87095
+ * - `line-debug`: The row of a line at `debug`.
87096
+ * - `line-error`: The row of a line at `error`.
87097
+ * - `line-marked`: The row of a line `mark-lines` names on the log.
87098
+ * - `line-warn`: The row of a line at `warn`.
87099
+ * - `match`: Text that matches the log's `query`, in a line the log draws from data.
87100
+ * - `number`: The line's number, shown with `line-numbers`, and a link with `line-href`.
87101
+ * - `run`: A stretch of text drawn in an ANSI style, in a line the log draws from data. Its color is `--log-run-color` and its background `--log-run-background-color`.
87102
+ * - `run-bold`: A run drawn bold.
87103
+ * - `run-dim`: A run drawn faint.
87104
+ * - `run-italic`: A run drawn italic.
87105
+ * - `run-strike`: A run drawn struck through.
87106
+ * - `run-underline`: A run drawn underlined.
87107
+ * - `text`: The text of the line.
87108
+ * - `time`: When the line was written, shown with `timestamps`.
87109
+ *
87110
+ * ## CSS States
87111
+ *
87112
+ * These can be used to apply styling when a component is in a given state.
87113
+ *
87114
+ * - `filtered`: The log's `query` does not match the line, so it draws nothing.
87115
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
87116
+ */
87117
+ "helix-headless-log-line": Partial<
87118
+ HelixHeadlessLogLineProps &
87119
+ HelixHeadlessLogLineSolidJsProps &
87120
+ BaseProps<HelixHeadlessLogLine> &
87121
+ BaseEvents<HelixHeadlessLogLine>
87122
+ >;
87123
+
87124
+ /**
87125
+ * A log holds lines in the order they were written and keeps the reader at
87126
+ * the newest one, until they scroll up to read. It stays where they left it
87127
+ * while lines keep arriving, and a button returns them to the end
87128
+ * (`resume-label`, "Jump to latest").
87129
+ *
87130
+ * **Lines arrive two ways.** For a log you serve whole, write `Log.Line`
87131
+ * elements as children, inside `Log.Group` elements for the steps. For a log
87132
+ * that is still being written, hand it text: `write(chunk)` takes text as it
87133
+ * arrives, in pieces that need not end at a line break, and `source` takes a
87134
+ * `ReadableStream` or an async iterable and reads it to the end. `lines` takes
87135
+ * the lines as data. Text drawn from data is drawn one window at a time, so a
87136
+ * log of a hundred thousand lines holds a screenful of elements, and the log
87137
+ * needs a block size of its own. Do not use both ways at once.
87138
+ *
87139
+ * **Written text is read the way a terminal shows it.** A carriage return
87140
+ * starts the line over, so a progress bar stays one line, and the line still
87141
+ * being written is shown as it stands. ANSI colors and weights are drawn, in
87142
+ * the sixteen colors the styled tier takes from your theme, and every other
87143
+ * escape code is dropped. Give `parse` a function to read each finished line,
87144
+ * such as a level off its prefix or a group off a marker.
87145
+ *
87146
+ * **Steps fold.** Lines that name a group in `groups` stand under its heading,
87147
+ * which shows its status and how long it took and opens and closes the lines.
87148
+ * A group a reader opens or closes fires `helix-expand` with every open group.
87149
+ *
87150
+ * **Search with `query`.** The log shows only the lines that hold it, marks
87151
+ * each match, opens the groups that hold one, and says how many lines match.
87152
+ *
87153
+ * `line-numbers` numbers the lines from the first ever written, so a number
87154
+ * still names its line once `limit` has let older lines go, and `line-href`
87155
+ * makes each number a link, such as `#L{n}`. `scrollToLine(n)` takes a reader
87156
+ * to one. `timestamps` shows each line's `at`, on the clock or as the time
87157
+ * into the run. `mark-lines` marks lines, such as `12, 40-44`.
87158
+ *
87159
+ * **What a screen reader hears.** The log is a `log` and stays quiet as lines
87160
+ * arrive, since reading a build aloud line by line helps nobody. A separate
87161
+ * status region says each line at `error` once it arrives, each step once it
87162
+ * finishes or fails, and the end of the run once `done` is set or `source`
87163
+ * ends. Set `done` yourself when output you `write` is complete.
87164
+ *
87165
+ * The log scrolls on this tier. It carries `data-scroller`, so following the
87166
+ * newest line and drawing a window work with no stylesheet. Give the log a
87167
+ * block size, such as `helix-headless-log::part(log) { block-size: 20rem }`.
87168
+ *
87169
+ * ```js
87170
+ * import '@fusion.dev/helix/log'
87171
+ * ```
87172
+ *
87173
+ * ## Attributes & Properties
87174
+ *
87175
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
87176
+ *
87177
+ * - `default-pinned`/`defaultPinned`: Whether the log opens following its newest line, when `pinned` is not set.
87178
+ * `default-pinned="false"` opens it where it starts.
87179
+ * - `done`: Whether the run is over, which a screen reader is told once.
87180
+ *
87181
+ * Set it when output you `write` is complete. A `source` sets it when the
87182
+ * stream ends.
87183
+ * - `done-label`/`doneLabel`: What a screen reader hears when the run is over.
87184
+ * - `dropped-label`/`droppedLabel`: What the line above the log says once `limit` has let lines go. `{count}` is how many.
87185
+ * - `empty-text`/`emptyText`: The text shown and announced when the log has no lines.
87186
+ * - `error-label`/`errorLabel`: What a screen reader hears when lines at `error` arrive. `{count}` is how
87187
+ * many arrived together and `{text}` is the first of them.
87188
+ * - `fallback-label`/`fallbackLabel`: The log's name, read by screen readers, where `label` is empty.
87189
+ * - `group-label`/`groupLabel`: What a screen reader hears when a step finishes or fails. `{heading}` is
87190
+ * the step's heading and `{status}` is `done` or `failed`.
87191
+ * - `label`: The log's name, read by screen readers.
87192
+ * - `limit`: The most lines kept, or 0 to keep them all. Past it the oldest lines are
87193
+ * let go, and the line above the log says how many.
87194
+ * - `line-href`/`lineHref`: A link for each line number, with `{n}` where the number goes, such as
87195
+ * `#L{n}`. Empty leaves the numbers as text.
87196
+ * - `line-label`/`lineLabel`: What a screen reader hears for the link on a line's number, handed to each
87197
+ * line the log draws. `{number}` is the number.
87198
+ * - `line-numbers`/`lineNumbers`: Whether each line shows its number.
87199
+ * - `mark-lines`/`markLines`: Lines to mark, as numbers and ranges such as `12, 40-44`.
87200
+ * - `matches-label`/`matchesLabel`: What a screen reader hears when `query` changes. `{count}` is how many lines match.
87201
+ * - `pinned`: Whether the log follows its newest line.
87202
+ *
87203
+ * The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
87204
+ * consumer refusing it takes the decision and assigns their own value. Not
87205
+ * reflected, for the reason `Chat` gives at its own `pinned`: a default of
87206
+ * true would write the attribute on upgrade.
87207
+ * - `query`: Text a line has to hold to be shown, ignoring case. Empty shows every line.
87208
+ * - `resume-label`/`resumeLabel`: The words on the button that returns to the newest line, where `resume` is empty.
87209
+ * - `threshold`: How near the newest line still counts as being at it, in pixels.
87210
+ * - `timestamps`: How each line shows its `at`: `absolute` on the clock, `relative` as the
87211
+ * time since the first line. Absent shows no time.
87212
+ * - `wrap`: Whether a line longer than the box wraps onto the next row. Otherwise the log scrolls sideways.
87213
+ * - `loading`: Whether the rows are still loading.
87214
+ *
87215
+ * Reflected, because a stylesheet needs it: the rows that are already there
87216
+ * are dimmed rather than removed while a new set arrives, and only CSS can
87217
+ * say that without the component knowing what a row looks like.
87218
+ * - `loading-text`/`loadingText`: The text shown and announced while the rows load.
87219
+ * - `groups`: The steps the lines from data name in `group`. A step stands where its
87220
+ * first line is, and one with no line yet stands at the end.
87221
+ *
87222
+ * Replaced rather than mutated, as `lines` is: a step finishing is a new
87223
+ * array with its `status` changed. (property only)
87224
+ * - `lines`: The lines as data. Reading it gives every line kept, oldest first, with
87225
+ * the line still being written left out.
87226
+ *
87227
+ * Replaced rather than mutated: setting it starts the log over with these
87228
+ * lines, and `write` adds to them. Set it or write children, not both. (property only)
87229
+ * - `parse`: Reads each finished line of written text: return the fields to set, such
87230
+ * as `level` or `group`, or `null` to drop the line. Lines in `lines` are
87231
+ * taken as they are. (property only)
87232
+ * - `source`: Text to read as it arrives, to the end: a `ReadableStream` of text or
87233
+ * bytes, such as a `fetch` response's body, or an async iterable. Bytes are
87234
+ * read as UTF-8. The log sets `done` when it ends, and a new source stops
87235
+ * reading the last one. (property only)
87236
+ * - `text`: Every line kept, as plain text with the escape codes taken out, one to a
87237
+ * row: what a download or a copy of the log should hold. (property only) (readonly)
87238
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
87239
+ *
87240
+ * **Named `whenSettled` because `settled` is taken four times over**, by
87241
+ * Image, Splitter and both color controls, none of them about transitions. A
87242
+ * base class takes the name every subclass then cannot use.
87243
+ *
87244
+ * **The state it reports cannot be watched, which is why this exists.** A
87245
+ * custom state is deliberately not in the DOM, so there is no
87246
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
87247
+ * instead.
87248
+ *
87249
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
87250
+ * the suppression is still active in. That is the distinction `readyToMove`
87251
+ * in `@fusion.dev/helix-testing` is written around.
87252
+ *
87253
+ * It never resolves where `requestAnimationFrame` never fires, which is a
87254
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
87255
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
87256
+ * browser harness's awaits it alone: a browser always runs the frame, and a
87257
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
87258
+ *
87259
+ * ## Events
87260
+ *
87261
+ * Events that will be emitted by the component.
87262
+ *
87263
+ * - `helix-before-pin`: Fired when the reader leaves the newest line by scrolling, or comes back to it. Cancelable.
87264
+ * - `helix-expand`: Fired after a reader opens or closes a group drawn from `groups`, with the `id` of every open group in `detail.value`, separated by commas.
87265
+ * - `helix-pin`: Fired after the log follows the newest line or lets go of it, with `true` or `false` in `detail.value`.
87266
+ *
87267
+ * ## Slots
87268
+ *
87269
+ * Areas where markup can be added to the component.
87270
+ *
87271
+ * - `(default)`: The lines, as `Log.Line` and `Log.Group` elements.
87272
+ * - `resume`: The control that returns to the newest line, shown while the reader is scrolled away. Defaults to a button named by `resume-label`.
87273
+ * - `toolbar`: Controls above the log, such as a search field or a button that wraps lines.
87274
+ *
87275
+ * ## Methods
87276
+ *
87277
+ * Methods that can be called to access component functionality.
87278
+ *
87279
+ * - `write(chunk: string) => void`: Adds text as it arrives. A line ends at each line break, and the text
87280
+ * after the last one is the line still being written.
87281
+ * - `clear() => void`: Lets every line go, and forgets which groups the reader opened, keeping
87282
+ * `groups`, `parse`, and `limit`.
87283
+ * - `resume() => void`: Puts the log back at its newest line, and follows it again.
87284
+ * - `scrollToLine(number: number, options: LogScrollOptions = {}) => Promise<boolean>`: Scrolls to line `number`, counted from the first line ever written, and
87285
+ * stops following the newest. Opens a shut group the line is in. Resolves
87286
+ * to whether the line is shown: false for a line `limit` let go or `query`
87287
+ * hides.
87288
+ *
87289
+ * ## CSS Custom Properties
87290
+ *
87291
+ * CSS variables available for styling the component.
87292
+ *
87293
+ * - `--log-ansi-background`: The background a run takes where ANSI swaps the colors and named none. Defaults to the log's own background on the styled tier.
87294
+ * - `--log-ansi-black`: The ANSI color black, which codes `30` and `40` draw.
87295
+ * - `--log-ansi-blue`: The ANSI color blue, which codes `34` and `44` draw.
87296
+ * - `--log-ansi-bright-black`: The ANSI color bright black, which codes `90` and `100` draw.
87297
+ * - `--log-ansi-bright-blue`: The ANSI color bright blue, which codes `94` and `104` draw.
87298
+ * - `--log-ansi-bright-cyan`: The ANSI color bright cyan, which codes `96` and `106` draw.
87299
+ * - `--log-ansi-bright-green`: The ANSI color bright green, which codes `92` and `102` draw.
87300
+ * - `--log-ansi-bright-magenta`: The ANSI color bright magenta, which codes `95` and `105` draw.
87301
+ * - `--log-ansi-bright-red`: The ANSI color bright red, which codes `91` and `101` draw.
87302
+ * - `--log-ansi-bright-white`: The ANSI color bright white, which codes `97` and `107` draw.
87303
+ * - `--log-ansi-bright-yellow`: The ANSI color bright yellow, which codes `93` and `103` draw.
87304
+ * - `--log-ansi-cyan`: The ANSI color cyan, which codes `36` and `46` draw.
87305
+ * - `--log-ansi-foreground`: The text color a run takes where ANSI swaps the colors and named none. Defaults to the log's own text color on the styled tier.
87306
+ * - `--log-ansi-green`: The ANSI color green, which codes `32` and `42` draw.
87307
+ * - `--log-ansi-magenta`: The ANSI color magenta, which codes `35` and `45` draw.
87308
+ * - `--log-ansi-red`: The ANSI color red, which codes `31` and `41` draw.
87309
+ * - `--log-ansi-white`: The ANSI color white, which codes `37` and `47` draw.
87310
+ * - `--log-ansi-yellow`: The ANSI color yellow, which codes `33` and `43` draw.
87311
+ * - `--log-digits`: Written on the `log`: how many digits the largest line number has, while `line-numbers` is set, so a stylesheet can size the column of numbers.
87312
+ *
87313
+ * ## CSS Parts
87314
+ *
87315
+ * Custom selectors for styling elements within the component.
87316
+ *
87317
+ * - `after`: The space the rows below the drawn ones would take. Only for lines drawn from data.
87318
+ * - `before`: The space the rows above the drawn ones would take. Only for lines drawn from data.
87319
+ * - `dropped`: The line above the log that says how many earlier lines `limit` let go.
87320
+ * - `empty`: Shown when the log has no lines.
87321
+ * - `group-content`: Not drawn: a group drawn from data stands for its heading, and its lines are rows beside it.
87322
+ * - `group-duration`: How long a step drawn from `groups` took.
87323
+ * - `group-heading`: The heading of a step drawn from `groups`.
87324
+ * - `group-mark`: The caret of a step drawn from `groups`.
87325
+ * - `group-status`: The status mark of a step drawn from `groups`.
87326
+ * - `group-summary`: The button that opens and closes a step drawn from `groups`.
87327
+ * - `group-summary-done`: The button of a step drawn from `groups` that is `done`.
87328
+ * - `group-summary-failed`: The button of a step drawn from `groups` that `failed`.
87329
+ * - `group-summary-pending`: The button of a step drawn from `groups` that is `pending`.
87330
+ * - `group-summary-running`: The button of a step drawn from `groups` that is `running`.
87331
+ * - `group-summary-skipped`: The button of a step drawn from `groups` that was `skipped`.
87332
+ * - `line`: The row of a line drawn from data.
87333
+ * - `line-debug`: The row of a line drawn from data at `debug`.
87334
+ * - `line-error`: The row of a line drawn from data at `error`.
87335
+ * - `line-marked`: The row of a line drawn from data that `mark-lines` names.
87336
+ * - `line-match`: Text in a line drawn from data that matches `query`.
87337
+ * - `line-number`: The number of a line drawn from data.
87338
+ * - `line-run`: A stretch of a line drawn from data in an ANSI style.
87339
+ * - `line-run-bold`: A run drawn bold.
87340
+ * - `line-run-dim`: A run drawn faint.
87341
+ * - `line-run-italic`: A run drawn italic.
87342
+ * - `line-run-strike`: A run drawn struck through.
87343
+ * - `line-run-underline`: A run drawn underlined.
87344
+ * - `line-text`: The text of a line drawn from data.
87345
+ * - `line-time`: The time of a line drawn from data.
87346
+ * - `line-warn`: The row of a line drawn from data at `warn`.
87347
+ * - `live`: The region where screen readers hear errors, finished steps, and the end of the run.
87348
+ * - `loading`: Shown while `loading` is set.
87349
+ * - `log`: The lines, which scroll. On this tier, it needs only a block size.
87350
+ * - `resume`: The control shown while the reader is scrolled away from the newest line.
87351
+ * - `resume-button`: The button the `resume` region shows when nothing is slotted into it.
87352
+ * - `resume-mark`: The arrow on the default `resume-button`.
87353
+ * - `row`: The wrapper around one row drawn from data, a line or a group's heading.
87354
+ * - `toolbar`: The `toolbar` slot, above the log.
87355
+ *
87356
+ * ## CSS States
87357
+ *
87358
+ * These can be used to apply styling when a component is in a given state.
87359
+ *
87360
+ * - `done`: The run is over: `done` is set, or `source` ended.
87361
+ * - `empty`: The log has no lines.
87362
+ * - `filtered`: `query` is set, so only matching lines are shown.
87363
+ * - `pinned`: The log follows its newest line.
87364
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
87365
+ */
87366
+ "helix-headless-log": Partial<
87367
+ HelixHeadlessLogProps &
87368
+ HelixHeadlessLogSolidJsProps &
87369
+ BaseProps<HelixHeadlessLog> &
87370
+ BaseEvents<HelixHeadlessLog>
87371
+ >;
87372
+
86082
87373
  /**
86083
87374
  * `connectMap` fills the shape as a layer of the map, under its place names.
86084
87375
  * The frame lists each area by its `label` and `description` for screen
@@ -103255,6 +104546,48 @@ export type CustomCssProperties = {
103255
104546
  "--list-first"?: (string) | undefined;
103256
104547
  /** What each row adds to the number before it: `1`, or `-1` where `reversed`. */
103257
104548
  "--list-step"?: (string) | undefined;
104549
+ /** Written on a `run` with a background, in the same form as `--log-run-color`. */
104550
+ "--log-run-background-color"?: (string) | undefined;
104551
+ /** Written on a `run` with a text color: one of the sixteen `--log-ansi-*` colors the log publishes, or the color itself. */
104552
+ "--log-run-color"?: (string) | undefined;
104553
+ /** The background a run takes where ANSI swaps the colors and named none. Defaults to the log's own background on the styled tier. */
104554
+ "--log-ansi-background"?: (string) | undefined;
104555
+ /** The ANSI color black, which codes `30` and `40` draw. */
104556
+ "--log-ansi-black"?: (string) | undefined;
104557
+ /** The ANSI color blue, which codes `34` and `44` draw. */
104558
+ "--log-ansi-blue"?: (string) | undefined;
104559
+ /** The ANSI color bright black, which codes `90` and `100` draw. */
104560
+ "--log-ansi-bright-black"?: (string) | undefined;
104561
+ /** The ANSI color bright blue, which codes `94` and `104` draw. */
104562
+ "--log-ansi-bright-blue"?: (string) | undefined;
104563
+ /** The ANSI color bright cyan, which codes `96` and `106` draw. */
104564
+ "--log-ansi-bright-cyan"?: (string) | undefined;
104565
+ /** The ANSI color bright green, which codes `92` and `102` draw. */
104566
+ "--log-ansi-bright-green"?: (string) | undefined;
104567
+ /** The ANSI color bright magenta, which codes `95` and `105` draw. */
104568
+ "--log-ansi-bright-magenta"?: (string) | undefined;
104569
+ /** The ANSI color bright red, which codes `91` and `101` draw. */
104570
+ "--log-ansi-bright-red"?: (string) | undefined;
104571
+ /** The ANSI color bright white, which codes `97` and `107` draw. */
104572
+ "--log-ansi-bright-white"?: (string) | undefined;
104573
+ /** The ANSI color bright yellow, which codes `93` and `103` draw. */
104574
+ "--log-ansi-bright-yellow"?: (string) | undefined;
104575
+ /** The ANSI color cyan, which codes `36` and `46` draw. */
104576
+ "--log-ansi-cyan"?: (string) | undefined;
104577
+ /** The text color a run takes where ANSI swaps the colors and named none. Defaults to the log's own text color on the styled tier. */
104578
+ "--log-ansi-foreground"?: (string) | undefined;
104579
+ /** The ANSI color green, which codes `32` and `42` draw. */
104580
+ "--log-ansi-green"?: (string) | undefined;
104581
+ /** The ANSI color magenta, which codes `35` and `45` draw. */
104582
+ "--log-ansi-magenta"?: (string) | undefined;
104583
+ /** The ANSI color red, which codes `31` and `41` draw. */
104584
+ "--log-ansi-red"?: (string) | undefined;
104585
+ /** The ANSI color white, which codes `37` and `47` draw. */
104586
+ "--log-ansi-white"?: (string) | undefined;
104587
+ /** The ANSI color yellow, which codes `33` and `43` draw. */
104588
+ "--log-ansi-yellow"?: (string) | undefined;
104589
+ /** Written on the `log`: how many digits the largest line number has, while `line-numbers` is set, so a stylesheet can size the column of numbers. */
104590
+ "--log-digits"?: (string) | undefined;
103258
104591
  /** How far the needle turns to point north, as an angle. The frame writes it from `bearing`. */
103259
104592
  "--map-needle-turn"?: (string) | undefined;
103260
104593
  /** The height of the panel this one took over from, written on the surface while it is open. */