@hyalo/angular 0.0.0-stage → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/LICENSE +21 -0
- package/README.md +45 -2
- package/fesm2022/hyalo-angular-accordion.mjs +230 -0
- package/fesm2022/hyalo-angular-accordion.mjs.map +1 -0
- package/fesm2022/hyalo-angular-alert.mjs +171 -0
- package/fesm2022/hyalo-angular-alert.mjs.map +1 -0
- package/fesm2022/hyalo-angular-aspect-ratio.mjs +64 -0
- package/fesm2022/hyalo-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/hyalo-angular-avatar.mjs +169 -0
- package/fesm2022/hyalo-angular-avatar.mjs.map +1 -0
- package/fesm2022/hyalo-angular-badge.mjs +268 -0
- package/fesm2022/hyalo-angular-badge.mjs.map +1 -0
- package/fesm2022/hyalo-angular-bento.mjs +132 -0
- package/fesm2022/hyalo-angular-bento.mjs.map +1 -0
- package/fesm2022/hyalo-angular-blocks.mjs +985 -0
- package/fesm2022/hyalo-angular-blocks.mjs.map +1 -0
- package/fesm2022/hyalo-angular-border-beam.mjs +73 -0
- package/fesm2022/hyalo-angular-border-beam.mjs.map +1 -0
- package/fesm2022/hyalo-angular-breadcrumb.mjs +77 -0
- package/fesm2022/hyalo-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/hyalo-angular-button-group.mjs +90 -0
- package/fesm2022/hyalo-angular-button-group.mjs.map +1 -0
- package/fesm2022/hyalo-angular-button.mjs +204 -0
- package/fesm2022/hyalo-angular-button.mjs.map +1 -0
- package/fesm2022/hyalo-angular-card.mjs +221 -0
- package/fesm2022/hyalo-angular-card.mjs.map +1 -0
- package/fesm2022/hyalo-angular-carousel.mjs +709 -0
- package/fesm2022/hyalo-angular-carousel.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chapter-nav.mjs +336 -0
- package/fesm2022/hyalo-angular-chapter-nav.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs +5 -0
- package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chart.mjs +391 -0
- package/fesm2022/hyalo-angular-chart.mjs.map +1 -0
- package/fesm2022/hyalo-angular-choice.mjs +789 -0
- package/fesm2022/hyalo-angular-choice.mjs.map +1 -0
- package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs +40 -0
- package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs.map +1 -0
- package/fesm2022/hyalo-angular-code-block.mjs +161 -0
- package/fesm2022/hyalo-angular-code-block.mjs.map +1 -0
- package/fesm2022/hyalo-angular-command.mjs +193 -0
- package/fesm2022/hyalo-angular-command.mjs.map +1 -0
- package/fesm2022/hyalo-angular-copy.mjs +138 -0
- package/fesm2022/hyalo-angular-copy.mjs.map +1 -0
- package/fesm2022/hyalo-angular-core.mjs +424 -0
- package/fesm2022/hyalo-angular-core.mjs.map +1 -0
- package/fesm2022/hyalo-angular-description-list.mjs +57 -0
- package/fesm2022/hyalo-angular-description-list.mjs.map +1 -0
- package/fesm2022/hyalo-angular-dialog.mjs +600 -0
- package/fesm2022/hyalo-angular-dialog.mjs.map +1 -0
- package/fesm2022/hyalo-angular-divider.mjs +66 -0
- package/fesm2022/hyalo-angular-divider.mjs.map +1 -0
- package/fesm2022/hyalo-angular-empty-state.mjs +123 -0
- package/fesm2022/hyalo-angular-empty-state.mjs.map +1 -0
- package/fesm2022/hyalo-angular-field.mjs +344 -0
- package/fesm2022/hyalo-angular-field.mjs.map +1 -0
- package/fesm2022/hyalo-angular-filter.mjs +309 -0
- package/fesm2022/hyalo-angular-filter.mjs.map +1 -0
- package/fesm2022/hyalo-angular-hotspot.mjs +225 -0
- package/fesm2022/hyalo-angular-hotspot.mjs.map +1 -0
- package/fesm2022/hyalo-angular-hover-card.mjs +233 -0
- package/fesm2022/hyalo-angular-hover-card.mjs.map +1 -0
- package/fesm2022/hyalo-angular-icon.mjs +385 -0
- package/fesm2022/hyalo-angular-icon.mjs.map +1 -0
- package/fesm2022/hyalo-angular-image-compare.mjs +168 -0
- package/fesm2022/hyalo-angular-image-compare.mjs.map +1 -0
- package/fesm2022/hyalo-angular-interaction.mjs +446 -0
- package/fesm2022/hyalo-angular-interaction.mjs.map +1 -0
- package/fesm2022/hyalo-angular-kbd.mjs +41 -0
- package/fesm2022/hyalo-angular-kbd.mjs.map +1 -0
- package/fesm2022/hyalo-angular-lightbox.mjs +228 -0
- package/fesm2022/hyalo-angular-lightbox.mjs.map +1 -0
- package/fesm2022/hyalo-angular-link.mjs +42 -0
- package/fesm2022/hyalo-angular-link.mjs.map +1 -0
- package/fesm2022/hyalo-angular-list.mjs +131 -0
- package/fesm2022/hyalo-angular-list.mjs.map +1 -0
- package/fesm2022/hyalo-angular-marquee.mjs +197 -0
- package/fesm2022/hyalo-angular-marquee.mjs.map +1 -0
- package/fesm2022/hyalo-angular-menu.mjs +423 -0
- package/fesm2022/hyalo-angular-menu.mjs.map +1 -0
- package/fesm2022/hyalo-angular-mesh.mjs +126 -0
- package/fesm2022/hyalo-angular-mesh.mjs.map +1 -0
- package/fesm2022/hyalo-angular-motion.mjs +620 -0
- package/fesm2022/hyalo-angular-motion.mjs.map +1 -0
- package/fesm2022/hyalo-angular-navbar.mjs +343 -0
- package/fesm2022/hyalo-angular-navbar.mjs.map +1 -0
- package/fesm2022/hyalo-angular-navigation-menu.mjs +222 -0
- package/fesm2022/hyalo-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/hyalo-angular-number-ticker.mjs +174 -0
- package/fesm2022/hyalo-angular-number-ticker.mjs.map +1 -0
- package/fesm2022/hyalo-angular-overlay.mjs +163 -0
- package/fesm2022/hyalo-angular-overlay.mjs.map +1 -0
- package/fesm2022/hyalo-angular-pagination.mjs +187 -0
- package/fesm2022/hyalo-angular-pagination.mjs.map +1 -0
- package/fesm2022/hyalo-angular-popover-overlay-kit-6wPwnxln.mjs +3 -0
- package/fesm2022/hyalo-angular-popover.mjs +516 -0
- package/fesm2022/hyalo-angular-popover.mjs.map +1 -0
- package/fesm2022/hyalo-angular-progress.mjs +209 -0
- package/fesm2022/hyalo-angular-progress.mjs.map +1 -0
- package/fesm2022/hyalo-angular-progressive-blur.mjs +73 -0
- package/fesm2022/hyalo-angular-progressive-blur.mjs.map +1 -0
- package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs +186 -0
- package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs.map +1 -0
- package/fesm2022/hyalo-angular-refraction.mjs +178 -0
- package/fesm2022/hyalo-angular-refraction.mjs.map +1 -0
- package/fesm2022/hyalo-angular-scroll-area.mjs +93 -0
- package/fesm2022/hyalo-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/hyalo-angular-scroll-to-top.mjs +127 -0
- package/fesm2022/hyalo-angular-scroll-to-top.mjs.map +1 -0
- package/fesm2022/hyalo-angular-segmented.mjs +223 -0
- package/fesm2022/hyalo-angular-segmented.mjs.map +1 -0
- package/fesm2022/hyalo-angular-select.mjs +561 -0
- package/fesm2022/hyalo-angular-select.mjs.map +1 -0
- package/fesm2022/hyalo-angular-sidebar.mjs +241 -0
- package/fesm2022/hyalo-angular-sidebar.mjs.map +1 -0
- package/fesm2022/hyalo-angular-skeleton.mjs +131 -0
- package/fesm2022/hyalo-angular-skeleton.mjs.map +1 -0
- package/fesm2022/hyalo-angular-sparkline.mjs +110 -0
- package/fesm2022/hyalo-angular-sparkline.mjs.map +1 -0
- package/fesm2022/hyalo-angular-split-text.mjs +126 -0
- package/fesm2022/hyalo-angular-split-text.mjs.map +1 -0
- package/fesm2022/hyalo-angular-stat.mjs +193 -0
- package/fesm2022/hyalo-angular-stat.mjs.map +1 -0
- package/fesm2022/hyalo-angular-stepper.mjs +254 -0
- package/fesm2022/hyalo-angular-stepper.mjs.map +1 -0
- package/fesm2022/hyalo-angular-table.mjs +335 -0
- package/fesm2022/hyalo-angular-table.mjs.map +1 -0
- package/fesm2022/hyalo-angular-tabs.mjs +324 -0
- package/fesm2022/hyalo-angular-tabs.mjs.map +1 -0
- package/fesm2022/hyalo-angular-theme.mjs +94 -0
- package/fesm2022/hyalo-angular-theme.mjs.map +1 -0
- package/fesm2022/hyalo-angular-timeline.mjs +157 -0
- package/fesm2022/hyalo-angular-timeline.mjs.map +1 -0
- package/fesm2022/hyalo-angular-toast.mjs +323 -0
- package/fesm2022/hyalo-angular-toast.mjs.map +1 -0
- package/fesm2022/hyalo-angular.mjs +2 -0
- package/package.json +329 -3
- package/styles/hyalo-core.css +25 -0
- package/styles/hyalo.css +17 -0
- package/styles/overlays/dialog.css +9 -0
- package/styles/overlays/popover.css +9 -0
- package/styles/overlays/select.css +9 -0
- package/styles/overlays/toast.css +8 -0
- package/styles/palettes/aurora.css +47 -0
- package/styles/palettes/ember.css +47 -0
- package/styles/palettes/graphite.css +47 -0
- package/styles/palettes/ocean.css +47 -0
- package/styles/palettes/orchid.css +47 -0
- package/styles/palettes/rose.css +47 -0
- package/styles/parts/card.css +49 -0
- package/styles/parts/dialog.css +116 -0
- package/styles/parts/drawer.css +124 -0
- package/styles/parts/field.css +44 -0
- package/styles/parts/glass.css +139 -0
- package/styles/parts/motion.css +101 -0
- package/styles/parts/navbar.css +55 -0
- package/styles/parts/popover.css +27 -0
- package/styles/parts/presence.css +55 -0
- package/styles/parts/reset.css +42 -0
- package/styles/parts/select.css +46 -0
- package/styles/parts/themes.css +105 -0
- package/styles/parts/toast.css +128 -0
- package/styles/parts/tokens.css +151 -0
- package/styles/parts/typography.css +81 -0
- package/types/hyalo-angular-accordion.d.ts +74 -0
- package/types/hyalo-angular-alert.d.ts +47 -0
- package/types/hyalo-angular-aspect-ratio.d.ts +13 -0
- package/types/hyalo-angular-avatar.d.ts +39 -0
- package/types/hyalo-angular-badge.d.ts +82 -0
- package/types/hyalo-angular-bento.d.ts +25 -0
- package/types/hyalo-angular-blocks.d.ts +272 -0
- package/types/hyalo-angular-border-beam.d.ts +15 -0
- package/types/hyalo-angular-breadcrumb.d.ts +22 -0
- package/types/hyalo-angular-button-group.d.ts +19 -0
- package/types/hyalo-angular-button.d.ts +89 -0
- package/types/hyalo-angular-card.d.ts +61 -0
- package/types/hyalo-angular-carousel.d.ts +147 -0
- package/types/hyalo-angular-chapter-nav.d.ts +79 -0
- package/types/hyalo-angular-chart.d.ts +90 -0
- package/types/hyalo-angular-choice.d.ts +259 -0
- package/types/hyalo-angular-code-block.d.ts +46 -0
- package/types/hyalo-angular-command.d.ts +41 -0
- package/types/hyalo-angular-copy.d.ts +39 -0
- package/types/hyalo-angular-core.d.ts +210 -0
- package/types/hyalo-angular-description-list.d.ts +16 -0
- package/types/hyalo-angular-dialog.d.ts +171 -0
- package/types/hyalo-angular-divider.d.ts +12 -0
- package/types/hyalo-angular-empty-state.d.ts +30 -0
- package/types/hyalo-angular-field.d.ts +141 -0
- package/types/hyalo-angular-filter.d.ts +122 -0
- package/types/hyalo-angular-hotspot.d.ts +70 -0
- package/types/hyalo-angular-hover-card.d.ts +47 -0
- package/types/hyalo-angular-icon.d.ts +122 -0
- package/types/hyalo-angular-image-compare.d.ts +55 -0
- package/types/hyalo-angular-interaction.d.ts +131 -0
- package/types/hyalo-angular-kbd.d.ts +5 -0
- package/types/hyalo-angular-lightbox.d.ts +67 -0
- package/types/hyalo-angular-link.d.ts +5 -0
- package/types/hyalo-angular-list.d.ts +30 -0
- package/types/hyalo-angular-marquee.d.ts +48 -0
- package/types/hyalo-angular-menu.d.ts +105 -0
- package/types/hyalo-angular-mesh.d.ts +36 -0
- package/types/hyalo-angular-motion.d.ts +218 -0
- package/types/hyalo-angular-navbar.d.ts +110 -0
- package/types/hyalo-angular-navigation-menu.d.ts +47 -0
- package/types/hyalo-angular-number-ticker.d.ts +52 -0
- package/types/hyalo-angular-overlay.d.ts +40 -0
- package/types/hyalo-angular-pagination.d.ts +59 -0
- package/types/hyalo-angular-popover.d.ts +152 -0
- package/types/hyalo-angular-progress.d.ts +46 -0
- package/types/hyalo-angular-progressive-blur.d.ts +14 -0
- package/types/hyalo-angular-refraction.d.ts +46 -0
- package/types/hyalo-angular-scroll-area.d.ts +18 -0
- package/types/hyalo-angular-scroll-to-top.d.ts +31 -0
- package/types/hyalo-angular-segmented.d.ts +79 -0
- package/types/hyalo-angular-select.d.ts +176 -0
- package/types/hyalo-angular-sidebar.d.ts +57 -0
- package/types/hyalo-angular-skeleton.d.ts +34 -0
- package/types/hyalo-angular-sparkline.d.ts +19 -0
- package/types/hyalo-angular-split-text.d.ts +24 -0
- package/types/hyalo-angular-stat.d.ts +56 -0
- package/types/hyalo-angular-stepper.d.ts +63 -0
- package/types/hyalo-angular-table.d.ts +125 -0
- package/types/hyalo-angular-tabs.d.ts +102 -0
- package/types/hyalo-angular-theme.d.ts +46 -0
- package/types/hyalo-angular-timeline.d.ts +36 -0
- package/types/hyalo-angular-toast.d.ts +79 -0
- package/types/hyalo-angular.d.ts +2 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Tooltip, popover and select panels render in CDK overlays. They enter and
|
|
3
|
+
* leave through data-state (see HyPresence): `closed` and `closing` are the
|
|
4
|
+
* hidden pose, `open` the shown one. CDK sets transform-origin on each panel
|
|
5
|
+
* to the side that faces its trigger, so the scale grows out of the trigger.
|
|
6
|
+
*
|
|
7
|
+
* Transitions rather than keyframes, so a panel reopened mid-exit turns
|
|
8
|
+
* around from where it is. With reduced motion only the fade is left.
|
|
9
|
+
*/
|
|
10
|
+
:is(.hy-tooltip, .hy-popover, .hy-select__panel) {
|
|
11
|
+
transition:
|
|
12
|
+
opacity var(--hy-dur-enter) var(--hy-ease-out),
|
|
13
|
+
scale var(--hy-dur-enter) var(--hy-ease-out);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:is(.hy-tooltip, .hy-popover, .hy-select__panel):is([data-state='closed'], [data-state='closing']) {
|
|
17
|
+
opacity: 0;
|
|
18
|
+
scale: calc(1 - 0.06 * var(--hy-move));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:is(.hy-popover, .hy-select__panel) {
|
|
22
|
+
transition:
|
|
23
|
+
opacity var(--hy-dur-enter) var(--hy-ease-out),
|
|
24
|
+
scale var(--hy-dur-enter) var(--hy-ease-out),
|
|
25
|
+
backdrop-filter var(--hy-dur-enter) var(--hy-ease-out),
|
|
26
|
+
-webkit-backdrop-filter var(--hy-dur-enter) var(--hy-ease-out);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* The glass materialises: the blur grows in with the panel. */
|
|
30
|
+
:is(.hy-popover, .hy-select__panel):is([data-state='closed'], [data-state='closing']) {
|
|
31
|
+
backdrop-filter: blur(0) saturate(100%);
|
|
32
|
+
-webkit-backdrop-filter: blur(0) saturate(100%);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* CDK can attach a panel before its overlay is rendered, so the closed pose
|
|
37
|
+
* set first is never seen. The starting style gives the open state a pose
|
|
38
|
+
* to transition from on its first frame.
|
|
39
|
+
*/
|
|
40
|
+
@starting-style {
|
|
41
|
+
:is(.hy-tooltip, .hy-popover, .hy-select__panel)[data-state='open'] {
|
|
42
|
+
opacity: 0;
|
|
43
|
+
scale: calc(1 - 0.06 * var(--hy-move));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:is(.hy-popover, .hy-select__panel)[data-state='open'] {
|
|
47
|
+
backdrop-filter: blur(0) saturate(100%);
|
|
48
|
+
-webkit-backdrop-filter: blur(0) saturate(100%);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:is(.hy-tooltip, .hy-popover, .hy-select__panel)[data-state='closing'] {
|
|
53
|
+
transition-duration: var(--hy-dur-exit);
|
|
54
|
+
transition-timing-function: var(--hy-ease-inout);
|
|
55
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* A small reset. It sits in the lowest layer so any app style wins over it. */
|
|
2
|
+
*,
|
|
3
|
+
*::before,
|
|
4
|
+
*::after {
|
|
5
|
+
box-sizing: border-box;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
body {
|
|
9
|
+
margin: 0;
|
|
10
|
+
background: var(--hy-bg);
|
|
11
|
+
color: var(--hy-ink);
|
|
12
|
+
font-family: var(--hy-font-body);
|
|
13
|
+
font-size: var(--hy-step-0);
|
|
14
|
+
line-height: var(--hy-leading);
|
|
15
|
+
-webkit-font-smoothing: antialiased;
|
|
16
|
+
text-rendering: optimizeLegibility;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:where(h1, h2, h3, h4, h5, h6) {
|
|
20
|
+
font-family: var(--hy-font-display);
|
|
21
|
+
line-height: var(--hy-leading-tight);
|
|
22
|
+
text-wrap: balance;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where(p) {
|
|
26
|
+
text-wrap: pretty;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where(img, svg, video, canvas) {
|
|
30
|
+
display: block;
|
|
31
|
+
max-inline-size: 100%;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where(button, input, select, textarea) {
|
|
35
|
+
font: inherit;
|
|
36
|
+
color: inherit;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(:focus-visible) {
|
|
40
|
+
outline: 2px solid var(--hy-primary);
|
|
41
|
+
outline-offset: 2px;
|
|
42
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* The select dropdown renders in a CDK overlay, outside the component. */
|
|
2
|
+
.hy-select__panel {
|
|
3
|
+
/* The pane is a flex row sized to the trigger; fill it. */
|
|
4
|
+
flex: 1;
|
|
5
|
+
max-block-size: min(20rem, 60vh);
|
|
6
|
+
overflow-y: auto;
|
|
7
|
+
padding: var(--hy-space-1);
|
|
8
|
+
border-radius: var(--hy-select-panel-radius, var(--hy-radius-m));
|
|
9
|
+
outline: none;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.hy-select__option {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: space-between;
|
|
16
|
+
gap: var(--hy-space-3);
|
|
17
|
+
min-block-size: 2.5rem;
|
|
18
|
+
padding-inline: var(--hy-space-3);
|
|
19
|
+
border-radius: var(--hy-select-option-radius, var(--hy-radius-s));
|
|
20
|
+
color: var(--hy-ink);
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.hy-select__option[data-active='true'] {
|
|
25
|
+
background: color-mix(in srgb, var(--hy-ink) 8%, transparent);
|
|
26
|
+
outline: 2px solid var(--hy-primary);
|
|
27
|
+
outline-offset: -2px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.hy-select__option[aria-selected='true'] {
|
|
31
|
+
font-weight: 600;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.hy-select__check {
|
|
35
|
+
visibility: hidden;
|
|
36
|
+
color: var(--hy-primary);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.hy-select__option[aria-selected='true'] .hy-select__check {
|
|
40
|
+
visibility: visible;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.hy-select__option[aria-disabled='true'] {
|
|
44
|
+
opacity: 0.45;
|
|
45
|
+
cursor: not-allowed;
|
|
46
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Dark theme ("obsidian"). Set data-hy-theme="dark" on <html> to force it,
|
|
3
|
+
* data-hy-theme="light" to opt out, or leave it unset to follow the OS.
|
|
4
|
+
* The same values are repeated for both selectors because CSS has no mixins.
|
|
5
|
+
*/
|
|
6
|
+
:root {
|
|
7
|
+
color-scheme: light;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:root[data-hy-theme='dark'],
|
|
11
|
+
.hy-theme-dark {
|
|
12
|
+
color-scheme: dark;
|
|
13
|
+
--hy-bg: #0a0c11;
|
|
14
|
+
--hy-surface-1: #13161d;
|
|
15
|
+
--hy-surface-2: #1a1e26;
|
|
16
|
+
--hy-surface-3: #222731;
|
|
17
|
+
--hy-surface-4: #2c323e;
|
|
18
|
+
--hy-ink: #eef1f6;
|
|
19
|
+
--hy-ink-2: #b9c2ce;
|
|
20
|
+
--hy-ink-3: #8f99a8;
|
|
21
|
+
--hy-ink-2-glass: #cdd4de;
|
|
22
|
+
--hy-ink-3-glass: #a7b1be;
|
|
23
|
+
--hy-line: rgb(238 241 246 / 0.12);
|
|
24
|
+
--hy-line-strong: rgb(238 241 246 / 0.26);
|
|
25
|
+
--hy-primary: #8e9cff;
|
|
26
|
+
--hy-primary-hover: #a5b0ff;
|
|
27
|
+
--hy-primary-ink: #0a0c11;
|
|
28
|
+
--hy-primary-wash: rgb(142 156 255 / 0.16);
|
|
29
|
+
--hy-success: #4fd1a5;
|
|
30
|
+
--hy-success-wash: rgb(79 209 165 / 0.14);
|
|
31
|
+
--hy-warning: #f2b45a;
|
|
32
|
+
--hy-warning-wash: rgb(242 180 90 / 0.14);
|
|
33
|
+
--hy-danger: #ff7a70;
|
|
34
|
+
--hy-danger-ink: #0a0c11;
|
|
35
|
+
--hy-danger-wash: rgb(255 122 112 / 0.15);
|
|
36
|
+
--hy-scrim: rgb(0 0 0 / 0.55);
|
|
37
|
+
--hy-glass-tint: 255 255 255;
|
|
38
|
+
--hy-glass-fill-top: 0.12;
|
|
39
|
+
--hy-glass-fill-bottom: 0.06;
|
|
40
|
+
--hy-glass-edge: inset 0 1px 0 rgb(255 255 255 / 0.16), inset 0 0 0 1px rgb(255 255 255 / 0.07);
|
|
41
|
+
--hy-glass-border: rgb(255 255 255 / 0.08);
|
|
42
|
+
--hy-glass-shadow: 0 1px 2px rgb(0 0 0 / 0.3), 0 16px 40px -16px rgb(0 0 0 / 0.6);
|
|
43
|
+
--hy-glass-shadow-thin: 0 1px 2px rgb(0 0 0 / 0.3), 0 6px 16px -8px rgb(0 0 0 / 0.5);
|
|
44
|
+
--hy-glass-shadow-thick: 0 2px 4px rgb(0 0 0 / 0.3), 0 28px 72px -20px rgb(0 0 0 / 0.7);
|
|
45
|
+
--hy-glass-reflection: linear-gradient(
|
|
46
|
+
to bottom,
|
|
47
|
+
rgb(255 255 255 / 0.08),
|
|
48
|
+
rgb(255 255 255 / 0) 40%
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@media (prefers-color-scheme: dark) {
|
|
53
|
+
:root:not([data-hy-theme='light']) {
|
|
54
|
+
color-scheme: dark;
|
|
55
|
+
--hy-bg: #0a0c11;
|
|
56
|
+
--hy-surface-1: #13161d;
|
|
57
|
+
--hy-surface-2: #1a1e26;
|
|
58
|
+
--hy-surface-3: #222731;
|
|
59
|
+
--hy-surface-4: #2c323e;
|
|
60
|
+
--hy-ink: #eef1f6;
|
|
61
|
+
--hy-ink-2: #b9c2ce;
|
|
62
|
+
--hy-ink-3: #8f99a8;
|
|
63
|
+
--hy-ink-2-glass: #cdd4de;
|
|
64
|
+
--hy-ink-3-glass: #a7b1be;
|
|
65
|
+
--hy-line: rgb(238 241 246 / 0.12);
|
|
66
|
+
--hy-line-strong: rgb(238 241 246 / 0.26);
|
|
67
|
+
--hy-primary: #8e9cff;
|
|
68
|
+
--hy-primary-hover: #a5b0ff;
|
|
69
|
+
--hy-primary-ink: #0a0c11;
|
|
70
|
+
--hy-primary-wash: rgb(142 156 255 / 0.16);
|
|
71
|
+
--hy-success: #4fd1a5;
|
|
72
|
+
--hy-success-wash: rgb(79 209 165 / 0.14);
|
|
73
|
+
--hy-warning: #f2b45a;
|
|
74
|
+
--hy-warning-wash: rgb(242 180 90 / 0.14);
|
|
75
|
+
--hy-danger: #ff7a70;
|
|
76
|
+
--hy-danger-ink: #0a0c11;
|
|
77
|
+
--hy-danger-wash: rgb(255 122 112 / 0.15);
|
|
78
|
+
--hy-scrim: rgb(0 0 0 / 0.55);
|
|
79
|
+
--hy-glass-tint: 255 255 255;
|
|
80
|
+
--hy-glass-fill-top: 0.12;
|
|
81
|
+
--hy-glass-fill-bottom: 0.06;
|
|
82
|
+
--hy-glass-edge: inset 0 1px 0 rgb(255 255 255 / 0.16), inset 0 0 0 1px rgb(255 255 255 / 0.07);
|
|
83
|
+
--hy-glass-border: rgb(255 255 255 / 0.08);
|
|
84
|
+
--hy-glass-shadow: 0 1px 2px rgb(0 0 0 / 0.3), 0 16px 40px -16px rgb(0 0 0 / 0.6);
|
|
85
|
+
--hy-glass-shadow-thin: 0 1px 2px rgb(0 0 0 / 0.3), 0 6px 16px -8px rgb(0 0 0 / 0.5);
|
|
86
|
+
--hy-glass-shadow-thick: 0 2px 4px rgb(0 0 0 / 0.3), 0 28px 72px -20px rgb(0 0 0 / 0.7);
|
|
87
|
+
--hy-glass-reflection: linear-gradient(
|
|
88
|
+
to bottom,
|
|
89
|
+
rgb(255 255 255 / 0.08),
|
|
90
|
+
rgb(255 255 255 / 0) 40%
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* Higher contrast: stronger lines, no see-through surfaces. The selector has
|
|
97
|
+
* the same weight as the dark theme selectors above, so it wins in both themes.
|
|
98
|
+
*/
|
|
99
|
+
@media (prefers-contrast: more) {
|
|
100
|
+
:root:is([data-hy-theme], :not([data-hy-theme])),
|
|
101
|
+
.hy-theme-dark {
|
|
102
|
+
--hy-line: var(--hy-line-strong);
|
|
103
|
+
--hy-ink-3: var(--hy-ink-2);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* The toast stack renders in a CDK overlay at the bottom inline-end corner. */
|
|
2
|
+
.hy-toast-pane {
|
|
3
|
+
z-index: var(--hy-z-toast);
|
|
4
|
+
pointer-events: none;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.hy-toast-list {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
align-items: flex-end;
|
|
11
|
+
gap: var(--hy-space-2);
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: var(--hy-space-4);
|
|
14
|
+
padding-block-end: max(var(--hy-space-4), env(safe-area-inset-bottom));
|
|
15
|
+
list-style: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.hy-toast {
|
|
19
|
+
--_c: var(--hy-ink-2);
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: flex-start;
|
|
22
|
+
gap: var(--hy-space-3);
|
|
23
|
+
inline-size: min(var(--hy-toast-width, 24rem), calc(100vw - 2 * var(--hy-space-4)));
|
|
24
|
+
padding-block: var(--hy-space-3);
|
|
25
|
+
padding-inline: var(--hy-space-4) var(--hy-space-3);
|
|
26
|
+
border-radius: var(--hy-toast-radius, var(--hy-radius-m));
|
|
27
|
+
color: var(--hy-ink);
|
|
28
|
+
pointer-events: auto;
|
|
29
|
+
touch-action: pan-y;
|
|
30
|
+
animation: hy-toast-in var(--hy-dur-enter) var(--hy-ease-out);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.hy-toast[data-tone='info'] {
|
|
34
|
+
--_c: var(--hy-primary);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.hy-toast[data-tone='success'] {
|
|
38
|
+
--_c: var(--hy-success);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.hy-toast[data-tone='warning'] {
|
|
42
|
+
--_c: var(--hy-warning);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.hy-toast[data-tone='danger'] {
|
|
46
|
+
--_c: var(--hy-danger);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* Only the exit transitions. A swipe writes translate and opacity on every
|
|
51
|
+
* frame from a spring, and a transition there would make the toast trail
|
|
52
|
+
* the finger.
|
|
53
|
+
*/
|
|
54
|
+
.hy-toast[data-leaving] {
|
|
55
|
+
opacity: 0;
|
|
56
|
+
translate: 0 calc(0.5rem * var(--hy-move));
|
|
57
|
+
transition:
|
|
58
|
+
opacity var(--hy-dur-exit) var(--hy-ease-out),
|
|
59
|
+
translate var(--hy-dur-exit) var(--hy-ease-out);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.hy-toast__icon {
|
|
63
|
+
margin-block-start: 0.125rem;
|
|
64
|
+
color: var(--_c);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.hy-toast__text {
|
|
68
|
+
flex: 1;
|
|
69
|
+
min-inline-size: 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.hy-toast__title,
|
|
73
|
+
.hy-toast__message {
|
|
74
|
+
margin: 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.hy-toast__title {
|
|
78
|
+
font-weight: 620;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.hy-toast__message {
|
|
82
|
+
color: var(--hy-ink-2);
|
|
83
|
+
font-size: var(--hy-step--1);
|
|
84
|
+
letter-spacing: var(--hy-tracking-small);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.hy-toast__title + .hy-toast__message {
|
|
88
|
+
margin-block-start: 0.125rem;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.hy-toast__action,
|
|
92
|
+
.hy-toast__close {
|
|
93
|
+
flex: none;
|
|
94
|
+
display: inline-grid;
|
|
95
|
+
place-items: center;
|
|
96
|
+
min-block-size: 2rem;
|
|
97
|
+
min-inline-size: 2rem;
|
|
98
|
+
padding-inline: var(--hy-space-2);
|
|
99
|
+
border: 0;
|
|
100
|
+
border-radius: var(--hy-radius-s);
|
|
101
|
+
background: transparent;
|
|
102
|
+
color: var(--hy-ink-2);
|
|
103
|
+
font-weight: 600;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.hy-toast__action {
|
|
108
|
+
color: var(--hy-primary);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.hy-toast__action:hover,
|
|
112
|
+
.hy-toast__close:hover {
|
|
113
|
+
background: color-mix(in srgb, var(--hy-ink) 8%, transparent);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.hy-toast__action:focus-visible,
|
|
117
|
+
.hy-toast__close:focus-visible {
|
|
118
|
+
outline: none;
|
|
119
|
+
box-shadow: var(--hy-focus-ring);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@keyframes hy-toast-in {
|
|
123
|
+
from {
|
|
124
|
+
opacity: 0;
|
|
125
|
+
translate: 0 calc(1rem * var(--hy-move));
|
|
126
|
+
scale: calc(1 - 0.03 * var(--hy-move));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Design tokens. Every Hyalo component reads these, and a theme is only a
|
|
3
|
+
* different set of values for the same names. All names start with --hy-.
|
|
4
|
+
*/
|
|
5
|
+
:root {
|
|
6
|
+
/* Colour (light theme is the default) */
|
|
7
|
+
--hy-bg: #eef1f4;
|
|
8
|
+
--hy-surface-1: #ffffff;
|
|
9
|
+
--hy-surface-2: #f6f8fa;
|
|
10
|
+
--hy-surface-3: #e9edf1;
|
|
11
|
+
--hy-surface-4: #dce2e8;
|
|
12
|
+
--hy-ink: #0f1a24;
|
|
13
|
+
--hy-ink-2: #3b4856;
|
|
14
|
+
--hy-ink-3: #596775;
|
|
15
|
+
/* Secondary text on glass. Darker, because the backdrop keeps changing. */
|
|
16
|
+
--hy-ink-2-glass: #2c3845;
|
|
17
|
+
--hy-ink-3-glass: #45525f;
|
|
18
|
+
--hy-line: rgb(15 26 36 / 0.12);
|
|
19
|
+
--hy-line-strong: rgb(15 26 36 / 0.24);
|
|
20
|
+
--hy-primary: #3a4cd0;
|
|
21
|
+
--hy-primary-hover: #3141b8;
|
|
22
|
+
--hy-primary-ink: #ffffff;
|
|
23
|
+
--hy-primary-wash: rgb(58 76 208 / 0.12);
|
|
24
|
+
/*
|
|
25
|
+
* Secondary is optional, so it is not set here. Set --hy-secondary and
|
|
26
|
+
* --hy-secondary-ink to give a theme a second brand colour; until then,
|
|
27
|
+
* everything that reads them falls back to the primary pair.
|
|
28
|
+
*/
|
|
29
|
+
--hy-success: #12735a;
|
|
30
|
+
--hy-success-wash: rgb(18 115 90 / 0.12);
|
|
31
|
+
--hy-warning: #8f5400;
|
|
32
|
+
--hy-warning-wash: rgb(143 84 0 / 0.12);
|
|
33
|
+
--hy-danger: #b93029;
|
|
34
|
+
--hy-danger-ink: #ffffff;
|
|
35
|
+
--hy-danger-wash: rgb(185 48 41 / 0.12);
|
|
36
|
+
--hy-scrim: rgb(9 14 20 / 0.38);
|
|
37
|
+
|
|
38
|
+
/* Glass */
|
|
39
|
+
--hy-glass-tint: 255 255 255;
|
|
40
|
+
--hy-glass-fill-top: 0.64;
|
|
41
|
+
--hy-glass-fill-bottom: 0.36;
|
|
42
|
+
--hy-glass-blur: 25px;
|
|
43
|
+
--hy-glass-saturate: 180%;
|
|
44
|
+
--hy-glass-edge: inset 0 1px 0 rgb(255 255 255 / 0.85), inset 0 0 0 1px rgb(255 255 255 / 0.4);
|
|
45
|
+
--hy-glass-border: rgb(15 26 36 / 0.08);
|
|
46
|
+
--hy-glass-shadow: 0 1px 2px rgb(15 26 36 / 0.06), 0 12px 32px -12px rgb(15 26 36 / 0.22);
|
|
47
|
+
/* Small chips read as thin glass, sheets and dialogs as thick. */
|
|
48
|
+
--hy-glass-shadow-thin: 0 1px 2px rgb(15 26 36 / 0.06), 0 4px 12px -6px rgb(15 26 36 / 0.16);
|
|
49
|
+
--hy-glass-shadow-thick: 0 2px 4px rgb(15 26 36 / 0.06), 0 24px 64px -20px rgb(15 26 36 / 0.32);
|
|
50
|
+
--hy-glass-reflection: linear-gradient(
|
|
51
|
+
to bottom,
|
|
52
|
+
rgb(255 255 255 / 0.5),
|
|
53
|
+
rgb(255 255 255 / 0) 42%
|
|
54
|
+
);
|
|
55
|
+
--hy-glass-glow: 255 255 255;
|
|
56
|
+
|
|
57
|
+
/* Type */
|
|
58
|
+
--hy-font-display: 'Inter Display', 'Inter', ui-sans-serif, system-ui, sans-serif;
|
|
59
|
+
--hy-font-body: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
|
|
60
|
+
--hy-font-mono: 'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
|
|
61
|
+
--hy-font-fa: 'Vazirmatn', 'Estedad', Tahoma, sans-serif;
|
|
62
|
+
--hy-step--1: clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem);
|
|
63
|
+
--hy-step-0: clamp(0.9375rem, 0.91rem + 0.15vw, 1rem);
|
|
64
|
+
--hy-step-1: clamp(1.0625rem, 1.02rem + 0.25vw, 1.1875rem);
|
|
65
|
+
--hy-step-2: clamp(1.25rem, 1.17rem + 0.4vw, 1.5rem);
|
|
66
|
+
--hy-step-3: clamp(1.5rem, 1.36rem + 0.7vw, 2rem);
|
|
67
|
+
--hy-step-4: clamp(1.875rem, 1.6rem + 1.3vw, 2.75rem);
|
|
68
|
+
--hy-step-5: clamp(2.25rem, 1.8rem + 2.2vw, 3.75rem);
|
|
69
|
+
--hy-step-6: clamp(2.75rem, 2rem + 3.6vw, 5.25rem);
|
|
70
|
+
--hy-leading-tight: 1.15;
|
|
71
|
+
--hy-leading: 1.55;
|
|
72
|
+
/* Small text opens up a little to stay legible. Headings tighten instead. */
|
|
73
|
+
--hy-tracking-small: 0.01em;
|
|
74
|
+
|
|
75
|
+
/* Shape and space (4px base) */
|
|
76
|
+
--hy-radius-s: 8px;
|
|
77
|
+
--hy-radius-m: 14px;
|
|
78
|
+
--hy-radius-l: 22px;
|
|
79
|
+
--hy-radius-pill: 999px;
|
|
80
|
+
--hy-space-1: 0.25rem;
|
|
81
|
+
--hy-space-2: 0.5rem;
|
|
82
|
+
--hy-space-3: 0.75rem;
|
|
83
|
+
--hy-space-4: 1rem;
|
|
84
|
+
--hy-space-5: 1.25rem;
|
|
85
|
+
--hy-space-6: 1.5rem;
|
|
86
|
+
--hy-space-7: 1.75rem;
|
|
87
|
+
--hy-space-8: 2rem;
|
|
88
|
+
--hy-space-9: 2.5rem;
|
|
89
|
+
--hy-space-10: 3rem;
|
|
90
|
+
--hy-space-11: 4rem;
|
|
91
|
+
--hy-space-12: 5rem;
|
|
92
|
+
--hy-container: 72rem;
|
|
93
|
+
--hy-gutter: clamp(1rem, 0.6rem + 2vw, 2rem);
|
|
94
|
+
|
|
95
|
+
/* Controls */
|
|
96
|
+
--hy-control-sm: 2rem;
|
|
97
|
+
--hy-control-md: 2.5rem;
|
|
98
|
+
--hy-control-lg: 3rem;
|
|
99
|
+
--hy-focus-ring: 0 0 0 2px var(--hy-bg), 0 0 0 4px var(--hy-primary);
|
|
100
|
+
|
|
101
|
+
/* Motion. Matches the MOTION constants in TypeScript. */
|
|
102
|
+
--hy-dur-quick: 0.22s;
|
|
103
|
+
--hy-dur-settle: 0.44s;
|
|
104
|
+
--hy-dur-scene: 0.9s;
|
|
105
|
+
--hy-ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);
|
|
106
|
+
--hy-ease-inout: cubic-bezier(0.65, 0, 0.35, 1);
|
|
107
|
+
--hy-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
108
|
+
/*
|
|
109
|
+
* Overlays enter and leave with these. With reduced motion they turn into
|
|
110
|
+
* short cross-fades instead of disappearing: --hy-move scales every slide
|
|
111
|
+
* and scale in the overlay keyframes down to nothing.
|
|
112
|
+
*/
|
|
113
|
+
--hy-dur-enter: 0.44s;
|
|
114
|
+
--hy-dur-exit: 0.22s;
|
|
115
|
+
--hy-move: 1;
|
|
116
|
+
|
|
117
|
+
/* Layers */
|
|
118
|
+
--hy-z-sticky: 100;
|
|
119
|
+
--hy-z-overlay: 1000;
|
|
120
|
+
--hy-z-toast: 1100;
|
|
121
|
+
--hy-z-tooltip: 1200;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Persian and Arabic text gets its own family. Sizes stay the same or larger. */
|
|
125
|
+
:lang(fa),
|
|
126
|
+
:lang(ar) {
|
|
127
|
+
--hy-font-body: var(--hy-font-fa);
|
|
128
|
+
--hy-font-display: var(--hy-font-fa);
|
|
129
|
+
--hy-leading: 1.75;
|
|
130
|
+
--hy-tracking-small: 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@media (prefers-reduced-motion: reduce) {
|
|
134
|
+
:root:not([data-hy-motion='full']) {
|
|
135
|
+
--hy-dur-quick: 1ms;
|
|
136
|
+
--hy-dur-settle: 1ms;
|
|
137
|
+
--hy-dur-scene: 1ms;
|
|
138
|
+
--hy-dur-enter: 0.2s;
|
|
139
|
+
--hy-dur-exit: 0.15s;
|
|
140
|
+
--hy-move: 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
:root[data-hy-motion='reduced'] {
|
|
145
|
+
--hy-dur-quick: 1ms;
|
|
146
|
+
--hy-dur-settle: 1ms;
|
|
147
|
+
--hy-dur-scene: 1ms;
|
|
148
|
+
--hy-dur-enter: 0.2s;
|
|
149
|
+
--hy-dur-exit: 0.15s;
|
|
150
|
+
--hy-move: 0;
|
|
151
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* Typography helpers. */
|
|
2
|
+
.hy-display {
|
|
3
|
+
font-family: var(--hy-font-display);
|
|
4
|
+
font-size: var(--hy-step-6);
|
|
5
|
+
line-height: 1.02;
|
|
6
|
+
letter-spacing: -0.03em;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.hy-h1 {
|
|
10
|
+
font-size: var(--hy-step-5);
|
|
11
|
+
letter-spacing: -0.025em;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.hy-h2 {
|
|
15
|
+
font-size: var(--hy-step-4);
|
|
16
|
+
letter-spacing: -0.02em;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.hy-h3 {
|
|
20
|
+
font-size: var(--hy-step-3);
|
|
21
|
+
letter-spacing: -0.015em;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.hy-lead {
|
|
25
|
+
font-size: var(--hy-step-1);
|
|
26
|
+
color: var(--hy-ink-2);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.hy-muted {
|
|
30
|
+
color: var(--hy-ink-3);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Letter spacing hurts connected scripts, so it is removed for them. */
|
|
34
|
+
:lang(fa) :is(.hy-display, .hy-h1, .hy-h2, .hy-h3),
|
|
35
|
+
:lang(ar) :is(.hy-display, .hy-h1, .hy-h2, .hy-h3) {
|
|
36
|
+
letter-spacing: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.hy-clamp {
|
|
40
|
+
display: -webkit-box;
|
|
41
|
+
-webkit-box-orient: vertical;
|
|
42
|
+
-webkit-line-clamp: var(--hy-lines, 2);
|
|
43
|
+
line-clamp: var(--hy-lines, 2);
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.hy-visually-hidden {
|
|
48
|
+
position: absolute;
|
|
49
|
+
inline-size: 1px;
|
|
50
|
+
block-size: 1px;
|
|
51
|
+
padding: 0;
|
|
52
|
+
margin: -1px;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
clip-path: inset(50%);
|
|
55
|
+
white-space: nowrap;
|
|
56
|
+
border: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.hy-mesh {
|
|
60
|
+
background:
|
|
61
|
+
radial-gradient(60% 50% at 15% 10%, rgb(34 197 140 / 0.28), transparent 70%),
|
|
62
|
+
radial-gradient(55% 55% at 90% 20%, rgb(88 101 242 / 0.3), transparent 70%),
|
|
63
|
+
radial-gradient(50% 60% at 60% 100%, rgb(56 189 248 / 0.22), transparent 70%), var(--hy-bg);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.hljs-keyword,
|
|
67
|
+
.hljs-selector-tag,
|
|
68
|
+
.hljs-literal {
|
|
69
|
+
color: var(--hy-primary);
|
|
70
|
+
}
|
|
71
|
+
.hljs-string,
|
|
72
|
+
.hljs-attr {
|
|
73
|
+
color: var(--hy-success);
|
|
74
|
+
}
|
|
75
|
+
.hljs-number,
|
|
76
|
+
.hljs-type {
|
|
77
|
+
color: var(--hy-warning);
|
|
78
|
+
}
|
|
79
|
+
.hljs-comment {
|
|
80
|
+
color: var(--hy-ink-3);
|
|
81
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@angular/aria/accordion";
|
|
3
|
+
import * as i2 from "@hyalo/angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* One collapsible section. The panel content stays in the DOM while closed
|
|
6
|
+
* (marked `inert`), so in-page search and FAQ structured data still see it.
|
|
7
|
+
*/
|
|
8
|
+
export declare class HyAccordionItem {
|
|
9
|
+
/** Text of the header button. */
|
|
10
|
+
readonly heading: import("@angular/core").InputSignal<string>;
|
|
11
|
+
/** Heading level of the header, 2 to 6. Pick the one that fits the page outline. */
|
|
12
|
+
readonly headingLevel: import("@angular/core").InputSignalWithTransform<number, unknown>;
|
|
13
|
+
/** Whether the section is open. Two-way bindable. */
|
|
14
|
+
readonly expanded: import("@angular/core").ModelSignal<boolean>;
|
|
15
|
+
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HyAccordionItem, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HyAccordionItem, "hy-accordion-item", never, {
|
|
18
|
+
"heading": {
|
|
19
|
+
"alias": "heading";
|
|
20
|
+
"required": false;
|
|
21
|
+
"isSignal": true;
|
|
22
|
+
};
|
|
23
|
+
"headingLevel": {
|
|
24
|
+
"alias": "headingLevel";
|
|
25
|
+
"required": false;
|
|
26
|
+
"isSignal": true;
|
|
27
|
+
};
|
|
28
|
+
"expanded": {
|
|
29
|
+
"alias": "expanded";
|
|
30
|
+
"required": false;
|
|
31
|
+
"isSignal": true;
|
|
32
|
+
};
|
|
33
|
+
"disabled": {
|
|
34
|
+
"alias": "disabled";
|
|
35
|
+
"required": false;
|
|
36
|
+
"isSignal": true;
|
|
37
|
+
};
|
|
38
|
+
}, {
|
|
39
|
+
"expanded": "expandedChange";
|
|
40
|
+
}, never, ["[hyAccordionHeading]", "*"], true, never>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A stack of collapsible sections on Angular Aria. Arrow keys move between
|
|
44
|
+
* headers, Home and End jump to the ends, Enter or Space toggles.
|
|
45
|
+
*
|
|
46
|
+
* ```html
|
|
47
|
+
* <hy-accordion>
|
|
48
|
+
* <hy-accordion-item heading="How long does delivery take?">Three to five working days.</hy-accordion-item>
|
|
49
|
+
* <hy-accordion-item heading="Can I return it?">Within 30 days, free of charge.</hy-accordion-item>
|
|
50
|
+
* </hy-accordion>
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* Only one section is open at a time unless `multiple` is set. Opening and
|
|
54
|
+
* closing animate the height with CSS grid, which costs no layout script.
|
|
55
|
+
*/
|
|
56
|
+
export declare class HyAccordion {
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HyAccordion, never>;
|
|
58
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HyAccordion, "hy-accordion", never, {}, {}, never, ["*"], true, [{
|
|
59
|
+
directive: typeof i1.AccordionGroup;
|
|
60
|
+
inputs: {
|
|
61
|
+
"multiExpandable": "multiple";
|
|
62
|
+
"disabled": "disabled";
|
|
63
|
+
};
|
|
64
|
+
outputs: {};
|
|
65
|
+
}, {
|
|
66
|
+
directive: typeof i2.HyMaterialDirective;
|
|
67
|
+
inputs: {
|
|
68
|
+
"hyMaterial": "material";
|
|
69
|
+
};
|
|
70
|
+
outputs: {};
|
|
71
|
+
}]>;
|
|
72
|
+
}
|
|
73
|
+
/** Everything needed to build an accordion. */
|
|
74
|
+
export declare const HY_ACCORDION: readonly [typeof HyAccordion, typeof HyAccordionItem];
|