@fusion.dev/helix 0.0.0-dev → 0.0.2
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/custom-elements.json +5565 -5519
- package/dist/accordion/item/accordion-item.css.js +1 -19
- package/dist/accordion/root/accordion-root.css.js +1 -1
- package/dist/accordion/root/accordion-root.d.ts +1 -1
- package/dist/accordion/root/accordion-root.js +1 -1
- package/dist/announcement/root/announcement-root.css.js +1 -7
- package/dist/app-header/root/app-header-root.css.js +1 -7
- package/dist/app-header/root/app-header-root.d.ts +20 -23
- package/dist/app-header/root/app-header-root.js +4 -4
- package/dist/aura/root/aura-axis.d.ts +5 -7
- package/dist/aura/root/aura-axis.js +5 -7
- package/dist/aura/root/aura-root.css.js +1 -1
- package/dist/aura/root/aura-root.d.ts +75 -87
- package/dist/aura/root/aura-root.js +100 -109
- package/dist/aura/root/aura-shader.d.ts +10 -13
- package/dist/aura/root/aura-shader.js +165 -238
- package/dist/avatar/group/avatar-group.css.js +1 -1
- package/dist/avatar/root/avatar-root.css.js +1 -1
- package/dist/badge/root/badge-root.css.js +1 -13
- package/dist/badge/root/badge-root.d.ts +4 -5
- package/dist/bar-chart/root/bar-chart-root.css.js +1 -13
- package/dist/bar-chart/root/bar-chart-root.d.ts +51 -60
- package/dist/bar-chart/root/bar-chart-root.js +10 -17
- package/dist/blockquote/root/blockquote-root.css.js +1 -1
- package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +1 -7
- package/dist/breadcrumbs/root/breadcrumbs-root.css.js +1 -1
- package/dist/button/root/button-root.css.js +1 -7
- package/dist/button/root/button-root.d.ts +16 -25
- package/dist/button/root/button-root.js +3 -3
- package/dist/button-group/root/button-group-root.css.js +1 -1
- package/dist/button-group/root/button-group-root.d.ts +5 -7
- package/dist/callout/root/callout-root.css.js +1 -1
- package/dist/callout/root/callout-root.d.ts +4 -4
- package/dist/callout/root/callout-root.js +4 -4
- package/dist/card/root/card-root.css.js +2 -2
- package/dist/card/root/card-root.d.ts +38 -48
- package/dist/card/root/card-root.js +8 -11
- package/dist/carousel/root/carousel-root.css.js +1 -11
- package/dist/carousel/root/carousel-root.d.ts +39 -43
- package/dist/carousel/root/carousel-root.js +7 -7
- package/dist/chat/composer/chat-composer.css.js +1 -1
- package/dist/chat/message/chat-message.css.js +1 -7
- package/dist/chat/message/chat-message.d.ts +8 -13
- package/dist/chat/root/chat-root.css.js +1 -1
- package/dist/checkbox/root/checkbox-root.css.js +1 -14
- package/dist/checkbox-group/root/checkbox-group-root.css.js +1 -1
- package/dist/code/root/code-root.css.js +9 -7
- package/dist/code/root/code-root.d.ts +4 -0
- package/dist/code/root/code-root.js +4 -0
- package/dist/code-block/root/code-block-root.css.js +1 -1
- package/dist/color-input/root/color-input-root.css.js +2 -2
- package/dist/color-input/root/color-input-root.js +3 -3
- package/dist/color-picker/root/color-picker-root.css.js +1 -9
- package/dist/color-picker/root/color-picker-root.js +3 -3
- package/dist/combobox/root/combobox-root.css.js +1 -8
- package/dist/combobox/root/combobox-root.js +1 -1
- package/dist/command/root/command-root.css.js +1 -1
- package/dist/copy-button/root/copy-button-root.css.js +1 -1
- package/dist/data-table/root/data-table-root.css.js +9 -3
- package/dist/data-table/root/data-table-root.d.ts +4 -1
- package/dist/data-table/root/data-table-root.js +4 -1
- package/dist/date-input/root/date-input-root.css.js +1 -1
- package/dist/date-picker/root/date-picker-root.css.js +1 -7
- package/dist/date-picker/root/date-picker-root.d.ts +1 -1
- package/dist/date-picker/root/date-picker-root.js +1 -1
- package/dist/dialog/root/dialog-root.css.js +1 -1
- package/dist/dialog/root/dialog-root.d.ts +15 -20
- package/dist/dialog/root/dialog-root.js +2 -2
- package/dist/divider/root/divider-root.css.js +1 -1
- package/dist/donut-chart/root/donut-chart-root.css.js +2 -20
- package/dist/donut-chart/root/donut-chart-root.d.ts +14 -19
- package/dist/donut-chart/root/donut-chart-root.js +6 -7
- package/dist/drawer/root/drawer-root.css.js +1 -11
- package/dist/drawer/root/drawer-root.d.ts +3 -7
- package/dist/drilldown/item/drilldown-item.css.js +1 -1
- package/dist/drilldown/root/drilldown-root.css.js +1 -1
- package/dist/element-events.generated.js +1 -1
- package/dist/empty/root/empty-root.css.js +1 -1
- package/dist/file-input/root/file-input-root.css.js +1 -1
- package/dist/file-input/root/file-input-root.js +1 -2
- package/dist/flex/root/flex-root.css.js +1 -1
- package/dist/flex/root/flex-root.d.ts +6 -6
- package/dist/flex/root/flex-root.js +9 -9
- package/dist/format-date/root/format-date-root.css.js +1 -1
- package/dist/grid/root/grid-root.css.js +1 -1
- package/dist/grid/root/grid-root.d.ts +8 -8
- package/dist/grid/root/grid-root.js +8 -9
- package/dist/heatmap/root/heatmap-root.css.js +2 -2
- package/dist/heatmap/root/heatmap-root.d.ts +11 -12
- package/dist/heatmap/root/heatmap-root.js +11 -12
- package/dist/icon/glyph.css.js +1 -1
- package/dist/icon/root/icon-root.css.js +1 -1
- package/dist/icon-button/root/icon-button-root.css.js +1 -7
- package/dist/icon-button/root/icon-button-root.d.ts +10 -10
- package/dist/icon-button/root/icon-button-root.js +4 -4
- package/dist/image/root/image-root.css.js +1 -7
- package/dist/input/root/input-root.css.js +1 -9
- package/dist/kbd/root/kbd-root.css.js +1 -1
- package/dist/legend/root/legend-root.css.js +1 -1
- package/dist/legend/root/legend-root.d.ts +34 -37
- package/dist/legend/root/legend-root.js +10 -10
- package/dist/line-chart/root/line-chart-root.css.js +1 -8
- package/dist/line-chart/root/line-chart-root.d.ts +6 -9
- package/dist/list/item/list-item.css.js +1 -1
- package/dist/list/root/list-root.css.js +1 -1
- package/dist/list/root/list-root.d.ts +4 -7
- package/dist/listbox/root/listbox-root.css.js +3 -3
- package/dist/listbox/root/listbox-root.d.ts +2 -0
- package/dist/listbox/root/listbox-root.js +2 -0
- package/dist/loader/root/loader-root.css.js +1 -1
- package/dist/loader/root/loader-root.d.ts +5 -9
- package/dist/loader/root/loader-root.js +2 -2
- package/dist/megamenu/root/megamenu-root.css.js +3 -2
- package/dist/menu/item/menu-item.css.js +1 -7
- package/dist/menu/root/menu-root.css.js +1 -1
- package/dist/meter/root/meter-root.css.js +1 -14
- package/dist/meter/root/meter-root.d.ts +18 -18
- package/dist/meter/root/meter-root.js +6 -8
- package/dist/mixins/mixin-control-surface/mixin-control-surface.d.ts +1 -1
- package/dist/navigation/root/navigation-root.css.js +1 -7
- package/dist/notifications/notification/notification.css.js +1 -7
- package/dist/notifications/root/notifications-root.css.js +1 -1
- package/dist/number-input/root/number-input-root.css.js +1 -9
- package/dist/option/group/option-group.css.js +1 -1
- package/dist/option/root/option-root.css.js +1 -1
- package/dist/outline/root/outline-root.css.js +1 -14
- package/dist/outline/root/outline-root.d.ts +1 -1
- package/dist/outline/root/outline-root.js +1 -1
- package/dist/pagination/root/pagination-root.css.js +1 -12
- package/dist/pagination/size/pagination-size.css.js +1 -1
- package/dist/pagination/summary/pagination-summary.css.js +1 -1
- package/dist/pin-input/root/pin-input-root.css.js +1 -7
- package/dist/popover/root/popover-root.css.js +4 -2
- package/dist/progress/root/progress-root.css.js +1 -7
- package/dist/progress/root/progress-root.d.ts +10 -9
- package/dist/qr-code/root/qr-code-root.css.js +1 -1
- package/dist/qr-code/root/qr-code-root.d.ts +1 -1
- package/dist/qr-code/root/qr-code-root.js +1 -1
- package/dist/quote/root/quote-root.css.js +1 -1
- package/dist/radio/group/radio-group.css.js +1 -1
- package/dist/radio/root/radio-root.css.js +1 -14
- package/dist/radio/root/radio-root.d.ts +20 -18
- package/dist/radio/root/radio-root.js +5 -6
- package/dist/rating/root/rating-root.css.js +1 -1
- package/dist/rating/root/rating-root.d.ts +4 -5
- package/dist/sandbox/preview/sandbox-preview.css.js +1 -1
- package/dist/sandbox/preview/sandbox-preview.d.ts +48 -44
- package/dist/sandbox/preview/sandbox-preview.js +63 -50
- package/dist/sandbox/root/sandbox-root.css.js +1 -2
- package/dist/sandbox/root/sandbox-root.d.ts +50 -59
- package/dist/sandbox/root/sandbox-root.js +75 -91
- package/dist/sandbox/source/sandbox-source.css.js +1 -1
- package/dist/sandbox/source/sandbox-source.d.ts +21 -29
- package/dist/sandbox/source/sandbox-source.js +26 -34
- package/dist/sandbox/status-bar/sandbox-status-bar.css.js +1 -1
- package/dist/sandbox/terminal/sandbox-terminal.css.js +1 -1
- package/dist/sandbox/toolbar/sandbox-toolbar.css.js +1 -1
- package/dist/scroll-area/root/scroll-area-root.css.js +5 -5
- package/dist/select/root/select-root.css.js +2 -15
- package/dist/select/root/select-root.d.ts +4 -4
- package/dist/select/root/select-root.js +5 -7
- package/dist/shared/chart/series.css.js +1 -1
- package/dist/shared/chart/terminus.css.js +1 -1
- package/dist/shared/field/field-inline.css.js +1 -1
- package/dist/shared/field/field-stacked.css.js +1 -1
- package/dist/shared/field/field.css.js +1 -1
- package/dist/skeleton/root/skeleton-root.css.js +1 -1
- package/dist/slider/root/slider-root.css.js +1 -3
- package/dist/sparkline/root/sparkline-root.css.js +1 -1
- package/dist/sparkline/root/sparkline-root.d.ts +22 -24
- package/dist/sparkline/root/sparkline-root.js +6 -6
- package/dist/speed-dial/item/speed-dial-item.css.js +1 -7
- package/dist/speed-dial/root/speed-dial-root.css.js +1 -1
- package/dist/splitter/root/splitter-root.css.js +1 -14
- package/dist/stat/group/stat-group.css.js +1 -1
- package/dist/stat/root/stat-root.css.js +1 -1
- package/dist/steps/root/steps-root.css.js +1 -1
- package/dist/steps/step/step.css.js +1 -8
- package/dist/steps/step/step.js +1 -1
- package/dist/switch/root/switch-root.css.js +1 -8
- package/dist/table/cell/table-cell.css.js +1 -1
- package/dist/table/column/table-column.css.js +1 -1
- package/dist/table/root/table-root.css.js +1 -1
- package/dist/table/row/table-row.css.js +1 -1
- package/dist/tabs/panel/tab-panel.css.js +1 -1
- package/dist/tabs/root/tabs-root.css.js +1 -7
- package/dist/tabs/tab/tab.css.js +2 -8
- package/dist/tag/root/tag-root.css.js +1 -1
- package/dist/tag/root/tag-root.d.ts +10 -19
- package/dist/tag/root/tag-root.js +3 -3
- package/dist/text/root/text-root.css.js +1 -1
- package/dist/text/root/text-root.d.ts +13 -14
- package/dist/text/root/text-root.js +6 -6
- package/dist/textarea/root/textarea-root.css.js +1 -7
- package/dist/time-input/root/time-input-root.css.js +1 -1
- package/dist/time-input/root/time-input-root.js +1 -1
- package/dist/time-picker/root/time-picker-root.css.js +1 -7
- package/dist/time-picker/root/time-picker-root.js +1 -1
- package/dist/timeline/item/timeline-item.css.js +1 -1
- package/dist/timeline/root/timeline-root.css.js +1 -1
- package/dist/toast/item/toast-item.css.js +1 -1
- package/dist/toast/root/toast-root.css.js +1 -1
- package/dist/toggle/group/toggle-group.css.js +1 -7
- package/dist/toggle/group/toggle-group.d.ts +6 -9
- package/dist/toggle/root/toggle-root.css.js +1 -1
- package/dist/toolbar/root/toolbar-root.css.js +1 -1
- package/dist/tooltip/root/tooltip-root.css.js +1 -1
- package/dist/tooltip/root/tooltip-root.d.ts +6 -7
- package/dist/tour/root/tour-root.css.js +1 -7
- package/dist/tour/stop/tour-stop.css.js +2 -2
- package/dist/tree/item/tree-item.css.js +1 -17
- package/dist/tree/root/tree-root.css.js +1 -1
- package/dist/tree/root/tree-root.d.ts +0 -2
- package/dist/trend/root/trend-root.css.js +1 -1
- package/dist/trend/root/trend-root.d.ts +4 -7
- package/dist/trend/root/trend-root.js +4 -7
- package/dist/video/root/video-root.css.js +1 -12
- package/dist/video/root/video-root.d.ts +3 -8
- package/dist/video-playlist/item/video-playlist-item.css.js +1 -7
- package/dist/video-playlist/menu/video-playlist-menu.css.js +1 -1
- package/dist/video-playlist/root/video-playlist-root.css.js +1 -1
- package/dist/virtual-list/root/virtual-list-root.css.js +1 -1
- package/elements.css +4 -5
- package/helix.css +31 -0
- package/jsx.d.ts +11625 -14561
- package/package.json +10 -8
- package/vue.d.ts +3594 -4231
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated from src/accordion/item/accordion-item.css by `
|
|
1
|
+
// Generated from src/accordion/item/accordion-item.css by `turbo run styles`. Do not edit.
|
|
2
2
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
3
|
export const styles = createSheet(`:host {
|
|
4
4
|
display: block;
|
|
@@ -40,12 +40,6 @@ margin-inline-start: auto;
|
|
|
40
40
|
transform: scaleY(-1);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
@media (prefers-reduced-motion: reduce) {
|
|
44
|
-
[part="chevron"] {
|
|
45
|
-
transition: none;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
43
|
[part="trigger"]:hover [part="chevron"] {
|
|
50
44
|
color: var(--helix-color-foreground);
|
|
51
45
|
}
|
|
@@ -77,16 +71,4 @@ display: block;
|
|
|
77
71
|
line-height: var(--helix-leading-normal);
|
|
78
72
|
padding: var(--accordion-item-padding, var(--helix-space-sm) var(--helix-space-md));
|
|
79
73
|
padding-block-start: 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
@media (prefers-reduced-motion: reduce) {
|
|
83
|
-
[part="content"] {
|
|
84
|
-
transition: none;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
@media (prefers-reduced-motion: reduce) {
|
|
89
|
-
[part="trigger"] {
|
|
90
|
-
transition: none;
|
|
91
|
-
}
|
|
92
74
|
}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated from src/accordion/root/accordion-root.css by `
|
|
1
|
+
// Generated from src/accordion/root/accordion-root.css by `turbo run styles`. Do not edit.
|
|
2
2
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
3
|
export const styles = createSheet(`:host {
|
|
4
4
|
display: block;
|
|
@@ -4,7 +4,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
4
4
|
* @summary Groups collapsible sections, one open at a time by default.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
* Items share one rule between
|
|
7
|
+
* Items share one rule between neighbors rather than each drawing its own, so
|
|
8
8
|
* the seam between two items is one pixel and not two. Those seams are what
|
|
9
9
|
* carry the grouping, which is why the surrounding frame is opt-in rather than
|
|
10
10
|
* the default: an accordion is a list, where a card is a surface.
|
|
@@ -12,7 +12,7 @@ import { styles } from './accordion-root.css.js';
|
|
|
12
12
|
* @summary Groups collapsible sections, one open at a time by default.
|
|
13
13
|
*
|
|
14
14
|
* @description
|
|
15
|
-
* Items share one rule between
|
|
15
|
+
* Items share one rule between neighbors rather than each drawing its own, so
|
|
16
16
|
* the seam between two items is one pixel and not two. Those seams are what
|
|
17
17
|
* carry the grouping, which is why the surrounding frame is opt-in rather than
|
|
18
18
|
* the default: an accordion is a list, where a card is a surface.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated from src/announcement/root/announcement-root.css by `
|
|
1
|
+
// Generated from src/announcement/root/announcement-root.css by `turbo run styles`. Do not edit.
|
|
2
2
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
3
|
export const styles = createSheet(`:host {
|
|
4
4
|
|
|
@@ -127,12 +127,6 @@ outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
|
|
|
127
127
|
outline-offset: var(--helix-size-focus-offset);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
@media (prefers-reduced-motion: reduce) {
|
|
131
|
-
[part="dismiss"] {
|
|
132
|
-
transition: none;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
130
|
[part="actions"][data-empty] {
|
|
137
131
|
display: none;
|
|
138
132
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated from src/app-header/root/app-header-root.css by `
|
|
1
|
+
// Generated from src/app-header/root/app-header-root.css by `turbo run styles`. Do not edit.
|
|
2
2
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
3
|
export const styles = createSheet(`:host {
|
|
4
4
|
|
|
@@ -99,12 +99,6 @@ overflow-x: auto;
|
|
|
99
99
|
justify-content: flex-start;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
@media (prefers-reduced-motion: reduce) {
|
|
103
|
-
:host {
|
|
104
|
-
transition: none;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
102
|
@media print {
|
|
109
103
|
:host {
|
|
110
104
|
display: none;
|
|
@@ -6,10 +6,10 @@ import type { CSSResultGroup } from 'lit';
|
|
|
6
6
|
* @description
|
|
7
7
|
* Flat, opaque, and in the flow. Both of the interesting things a banner can do
|
|
8
8
|
* are opt-in: `sticky` because following the reader is a decision about the
|
|
9
|
-
* page rather than about the bar, and `
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* page rather than about the bar, and `material` because a backdrop filter
|
|
10
|
+
* makes the header a containing block for `position: fixed` descendants, so an
|
|
11
|
+
* overlay rendered inside a material header is placed against the header rather
|
|
12
|
+
* than the viewport.
|
|
13
13
|
*
|
|
14
14
|
* The separating rule appears only once the page has scrolled, which keeps the
|
|
15
15
|
* banner flat against a hero and lifts it off the content afterwards. There is
|
|
@@ -39,38 +39,35 @@ export declare class HelixAppHeader extends HelixHeadlessAppHeader {
|
|
|
39
39
|
* What the banner is made of, which is how much of what is behind it shows
|
|
40
40
|
* through.
|
|
41
41
|
*
|
|
42
|
-
* One axis,
|
|
43
|
-
*
|
|
42
|
+
* One axis, and absent is opaque, per the rule that a reflected property
|
|
43
|
+
* takes no default.
|
|
44
44
|
*
|
|
45
45
|
* - Absent is opaque. The page stops at the bar, which is what an application
|
|
46
46
|
* wants: the bar is chrome and chrome does not need to be interesting.
|
|
47
47
|
* - `glass` is translucent and blurred, so content passing underneath stays
|
|
48
48
|
* visible and goes soft. The page reads as one surface with a bar floating
|
|
49
49
|
* over it.
|
|
50
|
+
* - `frosted` is the same pair turned up: less shows through and the blur is
|
|
51
|
+
* heavier.
|
|
50
52
|
* - `transparent` has no fill at all until something has scrolled under it,
|
|
51
53
|
* and then it takes the glass. For a banner over a hero, where the art
|
|
52
54
|
* should reach the top of the window and the bar should only become a
|
|
53
55
|
* surface once it has to be legible over moving content.
|
|
54
56
|
*
|
|
55
|
-
* **This
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* different times.
|
|
57
|
+
* **This belongs to `material` and not to a shape or an appearance.** The
|
|
58
|
+
* library's test is the one `Card` states: `separation` is where a surface
|
|
59
|
+
* ends, `tone` is what it means, `material` is what it is made of, and a
|
|
60
|
+
* property belongs to `material` when it can be true at the same time as the
|
|
61
|
+
* other two. Every value here varies exactly one quantity, translucency. The
|
|
62
|
+
* proof is inside the component: scrolled, `transparent` emits the same two
|
|
63
|
+
* declarations `glass` does, so two of the points are the same material
|
|
64
|
+
* arriving at different times.
|
|
64
65
|
*
|
|
65
66
|
* **One axis rather than two, and that is the whole reason it stays an
|
|
66
|
-
* enum.** The
|
|
67
|
-
* see-through. Splitting the glass out
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* The vocabulary got more coherent on the way. `flat` is a word about shape,
|
|
72
|
-
* `material` was a word about categories and `transparent` a word about
|
|
73
|
-
* light; opaque, glass and transparent are three points in one language.
|
|
67
|
+
* enum.** The values are mutually exclusive: a bar cannot be opaque and
|
|
68
|
+
* see-through. Splitting the glass out onto a second property would make
|
|
69
|
+
* `material="glass"` and a transparent flag sayable together, which is a
|
|
70
|
+
* state with nothing to mean, where an enum makes it unsayable.
|
|
74
71
|
*
|
|
75
72
|
* **`material` makes the header a containing block for `position: fixed`
|
|
76
73
|
* descendants**, which is worth knowing and is narrower than it sounds. Every
|
|
@@ -14,10 +14,10 @@ import { styles } from './app-header-root.css.js';
|
|
|
14
14
|
* @description
|
|
15
15
|
* Flat, opaque, and in the flow. Both of the interesting things a banner can do
|
|
16
16
|
* are opt-in: `sticky` because following the reader is a decision about the
|
|
17
|
-
* page rather than about the bar, and `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* page rather than about the bar, and `material` because a backdrop filter
|
|
18
|
+
* makes the header a containing block for `position: fixed` descendants, so an
|
|
19
|
+
* overlay rendered inside a material header is placed against the header rather
|
|
20
|
+
* than the viewport.
|
|
21
21
|
*
|
|
22
22
|
* The separating rule appears only once the page has scrolled, which keeps the
|
|
23
23
|
* banner flat against a hero and lifts it off the content afterwards. There is
|
|
@@ -8,11 +8,9 @@
|
|
|
8
8
|
* output is a uniform, and what that uniform does is a WebGL draw.
|
|
9
9
|
*
|
|
10
10
|
* That guard is the whole reason this file exists. `terminus` was wrong twice
|
|
11
|
-
* while its docstring said otherwise,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* arithmetic lived inside a getter, beside a sentence describing different
|
|
15
|
-
* arithmetic, and nothing compared them. See 155.
|
|
11
|
+
* while its docstring said otherwise, the arithmetic living inside a getter
|
|
12
|
+
* beside a sentence describing different arithmetic with nothing comparing the
|
|
13
|
+
* two.
|
|
16
14
|
*
|
|
17
15
|
* **`exitOf` mirrors the shader step by step rather than stating the closed
|
|
18
16
|
* form**, which is deliberate and is what makes the round trip worth running.
|
|
@@ -51,8 +49,8 @@ export declare const exitOf: (tilt: number, aspect: number) => number;
|
|
|
51
49
|
* steps gives `terminus = 0.5 + tan(tilt) / (2 * aspect^2)`, and rearranging
|
|
52
50
|
* for the tilt gives what is below.
|
|
53
51
|
*
|
|
54
|
-
*
|
|
55
|
-
* `
|
|
52
|
+
* The contract `terminus` claims: `0` is the left edge, `0.5` the middle and
|
|
53
|
+
* `1` the right edge, in every box.
|
|
56
54
|
*
|
|
57
55
|
* @param terminus - The crossing wanted, as a fraction of the width.
|
|
58
56
|
* @param aspect - The box's width over its height.
|
|
@@ -8,11 +8,9 @@
|
|
|
8
8
|
* output is a uniform, and what that uniform does is a WebGL draw.
|
|
9
9
|
*
|
|
10
10
|
* That guard is the whole reason this file exists. `terminus` was wrong twice
|
|
11
|
-
* while its docstring said otherwise,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* arithmetic lived inside a getter, beside a sentence describing different
|
|
15
|
-
* arithmetic, and nothing compared them. See 155.
|
|
11
|
+
* while its docstring said otherwise, the arithmetic living inside a getter
|
|
12
|
+
* beside a sentence describing different arithmetic with nothing comparing the
|
|
13
|
+
* two.
|
|
16
14
|
*
|
|
17
15
|
* **`exitOf` mirrors the shader step by step rather than stating the closed
|
|
18
16
|
* form**, which is deliberate and is what makes the round trip worth running.
|
|
@@ -58,8 +56,8 @@ export const exitOf = (tilt, aspect) => {
|
|
|
58
56
|
* steps gives `terminus = 0.5 + tan(tilt) / (2 * aspect^2)`, and rearranging
|
|
59
57
|
* for the tilt gives what is below.
|
|
60
58
|
*
|
|
61
|
-
*
|
|
62
|
-
* `
|
|
59
|
+
* The contract `terminus` claims: `0` is the left edge, `0.5` the middle and
|
|
60
|
+
* `1` the right edge, in every box.
|
|
63
61
|
*
|
|
64
62
|
* @param terminus - The crossing wanted, as a fraction of the width.
|
|
65
63
|
* @param aspect - The box's width over its height.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated from src/aura/root/aura-root.css by `
|
|
1
|
+
// Generated from src/aura/root/aura-root.css by `turbo run styles`. Do not edit.
|
|
2
2
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
3
|
export const styles = createSheet(`:host {
|
|
4
4
|
position: relative;
|
|
@@ -54,21 +54,9 @@ import type { CSSResultGroup, TemplateResult } from 'lit';
|
|
|
54
54
|
export declare class HelixAura extends HelixElement {
|
|
55
55
|
static styles: CSSResultGroup;
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* Reflected because the fallback gradient selects on it, and given no default
|
|
60
|
-
* for the same reason every axis here has none: a default on a reflected
|
|
61
|
-
* property writes the attribute onto every host anybody renders.
|
|
62
|
-
*
|
|
63
|
-
* **`variant` and not `shape`, which it was until 26 Aug 2026.** `shape` is
|
|
64
|
-
* an axis about geometry, `circle` against `square`, `arc` against `ring`,
|
|
65
|
-
* and it is registered as one now. Aurora, braid and caustics are not
|
|
66
|
-
* geometries; they are eleven names for a look, which is what `variant` is
|
|
67
|
-
* for by the rule the registry already states. Renamed rather than
|
|
68
|
-
* grandfathered because nothing is published yet: there is no `helix-v` tag,
|
|
69
|
-
* so this costs an edit today and a deprecation later. See 236.
|
|
57
|
+
* How soft the falloff is, `0` tight and `1` diffuse.
|
|
70
58
|
*/
|
|
71
|
-
|
|
59
|
+
bloom: number;
|
|
72
60
|
/**
|
|
73
61
|
* How far the settings wander on their own, `0` still and `1` restless.
|
|
74
62
|
*
|
|
@@ -84,6 +72,10 @@ export declare class HelixAura extends HelixElement {
|
|
|
84
72
|
* a timer.
|
|
85
73
|
*/
|
|
86
74
|
drift: number;
|
|
75
|
+
/**
|
|
76
|
+
* Overall brightness, as a multiplier on the field.
|
|
77
|
+
*/
|
|
78
|
+
gain: number;
|
|
87
79
|
/**
|
|
88
80
|
* What the pointer does, where the shape's own answer is not wanted.
|
|
89
81
|
*
|
|
@@ -91,21 +83,13 @@ export declare class HelixAura extends HelixElement {
|
|
|
91
83
|
* of: braid leans, rays are occluded, threads pinch, particles scatter. The
|
|
92
84
|
* named options are generic, and are a deliberate step down in meaning. A
|
|
93
85
|
* response made of the same material as the shape says something about that
|
|
94
|
-
* shape; a lamp following the cursor says the same nothing on
|
|
86
|
+
* shape; a lamp following the cursor says the same nothing on every one.
|
|
95
87
|
*
|
|
96
88
|
* They exist because a consumer may want the quieter, more conventional
|
|
97
89
|
* answer, and because `none` is a real requirement. Not because any of them
|
|
98
90
|
* is the better default.
|
|
99
91
|
*/
|
|
100
92
|
interaction?: 'light' | 'none' | 'ripple' | 'shadow';
|
|
101
|
-
/**
|
|
102
|
-
* How far the pointer reaches into the field, `0` upward.
|
|
103
|
-
*
|
|
104
|
-
* Multiplied into the presence the pointer already fades in and out with, so
|
|
105
|
-
* it scales the whole response rather than any one part of it, whichever
|
|
106
|
-
* interaction is in play.
|
|
107
|
-
*/
|
|
108
|
-
reach: number;
|
|
109
93
|
/**
|
|
110
94
|
* Whether the pointer shifts and lifts the field.
|
|
111
95
|
*
|
|
@@ -116,13 +100,13 @@ export declare class HelixAura extends HelixElement {
|
|
|
116
100
|
*/
|
|
117
101
|
interactive: boolean;
|
|
118
102
|
/**
|
|
119
|
-
* How
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
*
|
|
103
|
+
* How far the pointer reaches into the field, `0` upward.
|
|
104
|
+
*
|
|
105
|
+
* Multiplied into the presence the pointer already fades in and out with, so
|
|
106
|
+
* it scales the whole response rather than any one part of it, whichever
|
|
107
|
+
* interaction is in play.
|
|
124
108
|
*/
|
|
125
|
-
|
|
109
|
+
reach: number;
|
|
126
110
|
/**
|
|
127
111
|
* Feature size, as a multiplier on the sampled coordinates.
|
|
128
112
|
*/
|
|
@@ -131,10 +115,6 @@ export declare class HelixAura extends HelixElement {
|
|
|
131
115
|
* How fast it drifts, as a multiplier on time.
|
|
132
116
|
*/
|
|
133
117
|
speed: number;
|
|
134
|
-
/**
|
|
135
|
-
* The field's rotation, in degrees.
|
|
136
|
-
*/
|
|
137
|
-
tilt: number;
|
|
138
118
|
/**
|
|
139
119
|
* Where the axis crosses the top edge, as a fraction of the width.
|
|
140
120
|
*
|
|
@@ -152,20 +132,16 @@ export declare class HelixAura extends HelixElement {
|
|
|
152
132
|
* the angle really is the point, which is what an aura in a square tile
|
|
153
133
|
* wants.
|
|
154
134
|
*
|
|
155
|
-
* **The fraction is measured across the whole width, and for a while it was
|
|
156
|
-
* not.** The first expression corrected for the aspect once in the wrong
|
|
157
|
-
* direction and never subtracted the center, so the value read as an offset
|
|
158
|
-
* from the middle that also moved with the box: on a 1440 by 1800 hero `0.5`
|
|
159
|
-
* put the axis at 81.3% of the width and `0` was the only value that reached
|
|
160
|
-
* the middle. The contract above is now solved against what the shader draws
|
|
161
|
-
* rather than asserted beside it.
|
|
162
|
-
*
|
|
163
135
|
* Derived from the box the resize observer already keeps, so it costs no
|
|
164
136
|
* layout read per frame, and the drift is applied to the result rather than
|
|
165
137
|
* to the angle behind it: the field still wanders, around a bearing that
|
|
166
138
|
* holds the exit where it was put.
|
|
167
139
|
*/
|
|
168
140
|
terminus?: number;
|
|
141
|
+
/**
|
|
142
|
+
* The field's rotation, in degrees.
|
|
143
|
+
*/
|
|
144
|
+
tilt: number;
|
|
169
145
|
/**
|
|
170
146
|
* How much the members of a population differ from one another, `0` a set
|
|
171
147
|
* that is uniform and `1` the resting amount. Clamped to that range: these
|
|
@@ -182,6 +158,20 @@ export declare class HelixAura extends HelixElement {
|
|
|
182
158
|
* those four this is inert.
|
|
183
159
|
*/
|
|
184
160
|
variance: number;
|
|
161
|
+
/**
|
|
162
|
+
* Which form the light takes. Absent is `braid`.
|
|
163
|
+
*
|
|
164
|
+
* Reflected because the fallback gradient selects on it, and given no default
|
|
165
|
+
* for the same reason every axis here has none: a default on a reflected
|
|
166
|
+
* property writes the attribute onto every host anybody renders.
|
|
167
|
+
*
|
|
168
|
+
* **`variant` and not `shape`.** `shape` is an axis about geometry, `circle`
|
|
169
|
+
* against `square`, `arc` against `ring`, and it is registered as one.
|
|
170
|
+
* Aurora, braid and caustics are not geometries; they are eleven names for a
|
|
171
|
+
* look, which is what `variant` is for by the rule the registry already
|
|
172
|
+
* states.
|
|
173
|
+
*/
|
|
174
|
+
variant?: 'aurora' | 'braid' | 'caustics' | 'flow' | 'fracture' | 'lattice' | 'particles' | 'rays' | 'streaks' | 'threads' | 'waves';
|
|
185
175
|
/** Repaints when the palette moves, which no re-render would do on its own. */
|
|
186
176
|
private readonly tokens;
|
|
187
177
|
/**
|
|
@@ -235,7 +225,12 @@ export declare class HelixAura extends HelixElement {
|
|
|
235
225
|
* ending at P to ending at P, P, which is the same shape, and nothing jumps.
|
|
236
226
|
*/
|
|
237
227
|
private readonly head;
|
|
238
|
-
/**
|
|
228
|
+
/**
|
|
229
|
+
* Where the pointer is, and where the field has got to. The gap is weight.
|
|
230
|
+
*
|
|
231
|
+
* `presence`, not `reach`: the eased value is how far the pointer has faded
|
|
232
|
+
* in, and `reach` is the consumer's amplitude. The two multiply.
|
|
233
|
+
*/
|
|
239
234
|
private readonly target;
|
|
240
235
|
private readonly eased;
|
|
241
236
|
private motion;
|
|
@@ -243,12 +238,12 @@ export declare class HelixAura extends HelixElement {
|
|
|
243
238
|
/**
|
|
244
239
|
* The element's box, cached.
|
|
245
240
|
*
|
|
246
|
-
* **
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
241
|
+
* **Never read per event.** `getBoundingClientRect` forces a synchronous
|
|
242
|
+
* layout, and a pointer emits events far faster than the display refreshes: a
|
|
243
|
+
* 1000Hz mouse flushed layout a thousand times a second to compute a number
|
|
244
|
+
* that only changes when the page reflows. Refreshed from the resize observer
|
|
245
|
+
* and from scroll, both of which are exactly when it can go stale, and never
|
|
246
|
+
* from the handler that reads it.
|
|
252
247
|
*/
|
|
253
248
|
private box;
|
|
254
249
|
/** Watches the element's own size, so no frame has to ask for it. */
|
|
@@ -265,9 +260,8 @@ export declare class HelixAura extends HelixElement {
|
|
|
265
260
|
* scales: it opens coarse and tightens, which reads as the background zooming
|
|
266
261
|
* out on load rather than as a background.
|
|
267
262
|
*
|
|
268
|
-
* Refusing the degenerate 0 by 0 box
|
|
269
|
-
*
|
|
270
|
-
* that is simply not the last one.
|
|
263
|
+
* Refusing the degenerate 0 by 0 box leaves the ordinary case: a first real
|
|
264
|
+
* box that is simply not the last one.
|
|
271
265
|
*
|
|
272
266
|
* So the opening frame waits for the box to stop moving. Nothing paints until
|
|
273
267
|
* a measurement has stood unchanged for one animation frame, which is the
|
|
@@ -293,17 +287,16 @@ export declare class HelixAura extends HelixElement {
|
|
|
293
287
|
/**
|
|
294
288
|
* The context and the program, from whatever canvas can still give one.
|
|
295
289
|
*
|
|
296
|
-
* **A canvas whose context was force-lost never yields a working one again
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
* `
|
|
300
|
-
*
|
|
301
|
-
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
* answering `null`, twice per element.
|
|
290
|
+
* **A canvas whose context was force-lost never yields a working one again.**
|
|
291
|
+
* `getContext` hands back the very same dead object, which reports
|
|
292
|
+
* `isContextLost()` and answers `null` to every `getShaderParameter`, so
|
|
293
|
+
* `link` fails, `start` returns before installing a single observer, and the
|
|
294
|
+
* element sits connected and permanently blind, holding whatever buffer it
|
|
295
|
+
* last painted. Measured on the landing page, where one remove-and-reinsert
|
|
296
|
+
* was enough: the frozen frame was the 2x2 the first `measure` took before
|
|
297
|
+
* layout, stretched across two screens as a gray smear that reads as a broken
|
|
298
|
+
* gradient rather than as a dead component. The only sound in the console was
|
|
299
|
+
* `getShaderInfoLog` answering `null`, twice per element.
|
|
307
300
|
*
|
|
308
301
|
* A spent canvas is therefore replaced rather than re-asked. `restoreContext`
|
|
309
302
|
* is the other way and is not reachable from here: it needs the `webglcontextlost`
|
|
@@ -385,12 +378,10 @@ export declare class HelixAura extends HelixElement {
|
|
|
385
378
|
* `/helix/aura`, where it is a toggle a reader chose. So the cap applies where
|
|
386
379
|
* nothing is being followed and lifts where something is.
|
|
387
380
|
*
|
|
388
|
-
* **
|
|
389
|
-
*
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
* because each instance draws once per callback. Capping the two that nobody
|
|
393
|
-
* points at is most of that back.
|
|
381
|
+
* **The cost scales with the count.** Three fields run on the landing page,
|
|
382
|
+
* one per transparent run, and with the frame limiter off they drew 2,654
|
|
383
|
+
* times in three seconds against 1,276 for one: each instance draws once per
|
|
384
|
+
* callback. Capping the two that nobody points at is most of that back.
|
|
394
385
|
*/
|
|
395
386
|
private static readonly CAPPED;
|
|
396
387
|
private readonly tick;
|
|
@@ -403,12 +394,9 @@ export declare class HelixAura extends HelixElement {
|
|
|
403
394
|
* business knowing when: it is read once per frame from numbers already
|
|
404
395
|
* there.
|
|
405
396
|
*
|
|
406
|
-
* The solve is `tiltFor` in `aura-axis.ts` rather than an expression here,
|
|
407
|
-
*
|
|
408
|
-
*
|
|
409
|
-
* arithmetic, and nothing in the repository could tell they disagreed. It is
|
|
410
|
-
* callable now, and `aura-root.dom.spec.ts` runs it against a model of the
|
|
411
|
-
* shader in both directions. See 155.
|
|
397
|
+
* The solve is `tiltFor` in `aura-axis.ts` rather than an expression here, so
|
|
398
|
+
* it is callable and `aura-root.dom.spec.ts` runs it against a model of the
|
|
399
|
+
* shader in both directions.
|
|
412
400
|
*/
|
|
413
401
|
private get bearing();
|
|
414
402
|
private drifted;
|
|
@@ -418,19 +406,19 @@ export declare class HelixAura extends HelixElement {
|
|
|
418
406
|
/**
|
|
419
407
|
* Keeps the head of the wake on the cursor, and commits it as it travels.
|
|
420
408
|
*
|
|
421
|
-
* **The head
|
|
422
|
-
* Marks are spaced by distance so eight slots
|
|
423
|
-
* last few milliseconds of one, but
|
|
424
|
-
*
|
|
425
|
-
* pointer
|
|
426
|
-
* for one reason.
|
|
427
|
-
*
|
|
428
|
-
* So the slot at `trailNext` is
|
|
429
|
-
*
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
409
|
+
* **The head is provisional, never a committed mark**, and holding it in the
|
|
410
|
+
* ring is two faults at once. Marks are spaced by distance so eight slots
|
|
411
|
+
* cover a gesture rather than the last few milliseconds of one, but if
|
|
412
|
+
* committing is also the only time the stroke grows, its leading end sits up
|
|
413
|
+
* to a full gate behind the pointer and catches up in jumps of exactly that
|
|
414
|
+
* size. Latent, and jagged, for one reason.
|
|
415
|
+
*
|
|
416
|
+
* So the slot at `trailNext` is rewritten every frame to wherever the field
|
|
417
|
+
* has actually eased to, which is where the cursor looks like it is, so the
|
|
418
|
+
* stroke always reaches the pointer. Crossing the gate does not move the head,
|
|
419
|
+
* it just stops the previous position from being overwritten, and a new
|
|
420
|
+
* provisional head starts from there. The wake grows continuously and is still
|
|
421
|
+
* only ever eight points.
|
|
434
422
|
*
|
|
435
423
|
* Measured against `eased` rather than `target`, or the stroke would reach a
|
|
436
424
|
* place the field has not arrived at yet and lead its own parallax.
|