@neo-ui-kit/react 0.0.0-stage → 1.0.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/LICENSE +21 -0
- package/README.md +203 -2
- package/dist/artwork/icons.json.d.ts +2 -0
- package/dist/artwork/illustrations.json.d.ts +2 -0
- package/dist/chunks/chunk-347P6ZE4.js +104 -0
- package/dist/chunks/chunk-BJSFN52W.js +417 -0
- package/dist/chunks/chunk-FCOU3ODR.js +63 -0
- package/dist/chunks/chunk-JZ4GDTH5.js +87 -0
- package/dist/chunks/chunk-UGDRXR7P.js +3362 -0
- package/dist/chunks/chunk-VK6GHRLV.js +335 -0
- package/dist/chunks/chunk-YKCUOZ7V.js +777 -0
- package/dist/components/artwork/DatabaseArt/DatabaseArt.d.ts +6 -0
- package/dist/components/artwork/DatabaseArt/styles.css +58 -0
- package/dist/components/artwork/Landscape/Landscape.d.ts +7 -0
- package/dist/components/artwork/Landscape/styles.css +79 -0
- package/dist/components/artwork/NeonWaves/NeonWaves.d.ts +15 -0
- package/dist/components/artwork/NeonWaves/styles.css +48 -0
- package/dist/components/artwork/Planet/Planet.d.ts +4 -0
- package/dist/components/artwork/Planet/styles.css +52 -0
- package/dist/components/artwork/QuantumField/QuantumField.d.ts +42 -0
- package/dist/components/artwork/QuantumField/QuantumFieldExperience.d.ts +22 -0
- package/dist/components/artwork/QuantumField/UPSTREAM-LICENSE.txt +21 -0
- package/dist/components/artwork/QuantumField/audio.d.ts +15 -0
- package/dist/components/artwork/QuantumField/renderer.d.ts +24 -0
- package/dist/components/artwork/QuantumField/styles.css +77 -0
- package/dist/components/artwork/ServerArt/ServerArt.d.ts +8 -0
- package/dist/components/artwork/ServerArt/styles.css +43 -0
- package/dist/components/artwork/Spectrum/Spectrum.d.ts +7 -0
- package/dist/components/artwork/Spectrum/styles.css +35 -0
- package/dist/components/artwork/layers.d.ts +15 -0
- package/dist/components/artwork/useArtwork.d.ts +8 -0
- package/dist/components/controls/Autocomplete/Autocomplete.d.ts +2 -0
- package/dist/components/controls/Autocomplete/styles.css +1 -0
- package/dist/components/controls/Button/Button.d.ts +2 -0
- package/dist/components/controls/Button/styles.css +1 -0
- package/dist/components/controls/Checkbox/Checkbox.d.ts +2 -0
- package/dist/components/controls/Checkbox/styles.css +70 -0
- package/dist/components/controls/Chip/Chip.d.ts +21 -0
- package/dist/components/controls/Chip/styles.css +74 -0
- package/dist/components/controls/ChipField.d.ts +25 -0
- package/dist/components/controls/ColorPicker/ColorPicker.d.ts +16 -0
- package/dist/components/controls/ColorPicker/color.d.ts +9 -0
- package/dist/components/controls/ColorPicker/styles.css +103 -0
- package/dist/components/controls/DatePicker/DatePicker.d.ts +19 -0
- package/dist/components/controls/DatePicker/styles.css +69 -0
- package/dist/components/controls/FilePicker/FilePicker.d.ts +2 -0
- package/dist/components/controls/FilePicker/styles.css +149 -0
- package/dist/components/controls/IconButton/IconButton.d.ts +2 -0
- package/dist/components/controls/IconButton/styles.css +4 -0
- package/dist/components/controls/InputBase/InputBase.d.ts +21 -0
- package/dist/components/controls/InputBase/styles.css +379 -0
- package/dist/components/controls/Link/Link.d.ts +11 -0
- package/dist/components/controls/Link/styles.css +50 -0
- package/dist/components/controls/NumberField/NumberField.d.ts +2 -0
- package/dist/components/controls/NumberField/styles.css +1 -0
- package/dist/components/controls/PeoplePicker/PeoplePicker.d.ts +37 -0
- package/dist/components/controls/PeoplePicker/styles.css +7 -0
- package/dist/components/controls/SegmentedControl/SegmentedControl.d.ts +2 -0
- package/dist/components/controls/SegmentedControl/styles.css +9 -0
- package/dist/components/controls/Select/Select.d.ts +8 -0
- package/dist/components/controls/Select/styles.css +142 -0
- package/dist/components/controls/Slider/Slider.d.ts +3 -0
- package/dist/components/controls/Slider/styles.css +138 -0
- package/dist/components/controls/SplitButton/SplitButton.d.ts +2 -0
- package/dist/components/controls/SplitButton/styles.css +169 -0
- package/dist/components/controls/Switch/Switch.d.ts +2 -0
- package/dist/components/controls/Switch/styles.css +54 -0
- package/dist/components/controls/Tab/Tab.d.ts +2 -0
- package/dist/components/controls/Tab/styles.css +111 -0
- package/dist/components/controls/Tabs/Tabs.d.ts +2 -0
- package/dist/components/controls/Tabs/styles.css +239 -0
- package/dist/components/controls/TagInput/TagInput.d.ts +24 -0
- package/dist/components/controls/TagInput/styles.css +24 -0
- package/dist/components/controls/TextArea/TextArea.d.ts +2 -0
- package/dist/components/controls/TextArea/styles.css +15 -0
- package/dist/components/controls/TextField/TextField.d.ts +2 -0
- package/dist/components/controls/ThemePicker/ThemePicker.d.ts +24 -0
- package/dist/components/controls/ThemePicker/styles.css +128 -0
- package/dist/components/controls/ToggleButton/ToggleButton.d.ts +2 -0
- package/dist/components/controls/ToggleButton/styles.css +49 -0
- package/dist/components/controls/internal.d.ts +62 -0
- package/dist/components/controls/shared.css +694 -0
- package/dist/components/controls/shared.d.ts +204 -0
- package/dist/components/editor/PianoRoll/PianoRoll.d.ts +65 -0
- package/dist/components/editor/PianoRoll/styles.css +186 -0
- package/dist/components/editor/shared.css +1 -0
- package/dist/components/effects/AnimatedBorder/AnimatedBorder.d.ts +9 -0
- package/dist/components/effects/AnimatedBorder/styles.css +7 -0
- package/dist/components/effects/Beacon/Beacon.d.ts +9 -0
- package/dist/components/effects/Beacon/styles.css +38 -0
- package/dist/components/effects/Equalizer/Equalizer.d.ts +14 -0
- package/dist/components/effects/Equalizer/styles.css +38 -0
- package/dist/components/effects/GlowText/GlowText.d.ts +9 -0
- package/dist/components/effects/GlowText/styles.css +56 -0
- package/dist/components/effects/ImageShine/ImageShine.d.ts +13 -0
- package/dist/components/effects/ImageShine/styles.css +66 -0
- package/dist/components/effects/Marquee/Marquee.d.ts +9 -0
- package/dist/components/effects/Marquee/styles.css +46 -0
- package/dist/components/effects/MelodixText/MelodixText.d.ts +15 -0
- package/dist/components/effects/MelodixText/styles.css +28 -0
- package/dist/components/effects/Reveal/Reveal.d.ts +13 -0
- package/dist/components/effects/Reveal/styles.css +25 -0
- package/dist/components/effects/Shimmer/Shimmer.d.ts +10 -0
- package/dist/components/effects/Shimmer/styles.css +48 -0
- package/dist/components/effects/Sparkles/Sparkles.d.ts +9 -0
- package/dist/components/effects/Sparkles/styles.css +28 -0
- package/dist/components/effects/Spotlight/Spotlight.d.ts +11 -0
- package/dist/components/effects/Spotlight/styles.css +45 -0
- package/dist/components/effects/Tilt/Tilt.d.ts +11 -0
- package/dist/components/effects/Tilt/styles.css +67 -0
- package/dist/components/feedback/Badge/Badge.d.ts +3 -0
- package/dist/components/feedback/Badge/styles.css +91 -0
- package/dist/components/feedback/CollapsibleSection/CollapsibleSection.d.ts +2 -0
- package/dist/components/feedback/CollapsibleSection/styles.css +76 -0
- package/dist/components/feedback/DataTable/DataTable.d.ts +16 -0
- package/dist/components/feedback/DataTable/styles.css +522 -0
- package/dist/components/feedback/Dialog/Dialog.d.ts +2 -0
- package/dist/components/feedback/Dialog/styles.css +82 -0
- package/dist/components/feedback/EmptyState/EmptyState.d.ts +2 -0
- package/dist/components/feedback/EmptyState/styles.css +80 -0
- package/dist/components/feedback/KeyValueList/KeyValueList.d.ts +2 -0
- package/dist/components/feedback/KeyValueList/styles.css +51 -0
- package/dist/components/feedback/Menu/Menu.d.ts +2 -0
- package/dist/components/feedback/Menu/styles.css +123 -0
- package/dist/components/feedback/MenuItem/MenuItem.d.ts +2 -0
- package/dist/components/feedback/MenuItem/styles.css +71 -0
- package/dist/components/feedback/MessageBar/MessageBar.d.ts +2 -0
- package/dist/components/feedback/MessageBar/styles.css +116 -0
- package/dist/components/feedback/Popover/Popover.d.ts +2 -0
- package/dist/components/feedback/Popover/styles.css +44 -0
- package/dist/components/feedback/ProgressBar/ProgressBar.d.ts +2 -0
- package/dist/components/feedback/ProgressBar/styles.css +76 -0
- package/dist/components/feedback/SignalBars/SignalBars.d.ts +11 -0
- package/dist/components/feedback/SignalBars/styles.css +31 -0
- package/dist/components/feedback/StatusIndicator/StatusIndicator.d.ts +2 -0
- package/dist/components/feedback/StatusIndicator/styles.css +88 -0
- package/dist/components/feedback/Steps/Steps.d.ts +2 -0
- package/dist/components/feedback/Steps/styles.css +152 -0
- package/dist/components/feedback/Toast/Toast.d.ts +2 -0
- package/dist/components/feedback/Toast/styles.css +89 -0
- package/dist/components/feedback/Tooltip/Tooltip.d.ts +15 -0
- package/dist/components/feedback/Tooltip/styles.css +38 -0
- package/dist/components/feedback/shared.css +22 -0
- package/dist/components/feedback/shared.d.ts +231 -0
- package/dist/components/forms/Form/Form.d.ts +35 -0
- package/dist/components/forms/Form/styles.css +1 -0
- package/dist/components/forms/FormFields/FormFields.d.ts +20 -0
- package/dist/components/forms/FormFields/styles.css +72 -0
- package/dist/components/foundation/Loader/Loader.d.ts +30 -0
- package/dist/components/foundation/LoaderGenerator/LoaderGenerator.d.ts +38 -0
- package/dist/components/foundation/LoaderGenerator/styles.css +104 -0
- package/dist/components/foundation/ThemeEditor/ThemeEditor.d.ts +15 -0
- package/dist/components/foundation/ThemeEditor/styles.css +97 -0
- package/dist/components/foundation/ThemeEditor/themeConfig.d.ts +47 -0
- package/dist/components/foundation/ThemeProvider/ThemeProvider.d.ts +32 -0
- package/dist/components/foundation/ThemeProvider/styles.css +59 -0
- package/dist/components/foundation/Typography/Typography.d.ts +17 -0
- package/dist/components/foundation/Typography/styles.css +115 -0
- package/dist/components/layout/Avatar/Avatar.d.ts +2 -0
- package/dist/components/layout/Avatar/HostSeal.d.ts +5 -0
- package/dist/components/layout/Avatar/styles.css +166 -0
- package/dist/components/layout/BrandMark/BrandMark.d.ts +2 -0
- package/dist/components/layout/BrandMark/styles.css +39 -0
- package/dist/components/layout/ButtonGroup/ButtonGroup.d.ts +12 -0
- package/dist/components/layout/ButtonGroup/styles.css +36 -0
- package/dist/components/layout/Card/Card.d.ts +14 -0
- package/dist/components/layout/Card/styles.css +37 -0
- package/dist/components/layout/DialogActions/DialogActions.d.ts +12 -0
- package/dist/components/layout/DialogActions/styles.css +31 -0
- package/dist/components/layout/DialogBody/DialogBody.d.ts +12 -0
- package/dist/components/layout/DialogBody/styles.css +28 -0
- package/dist/components/layout/Divider/Divider.d.ts +2 -0
- package/dist/components/layout/Divider/styles.css +58 -0
- package/dist/components/layout/FloatingPanel/FloatingPanel.d.ts +15 -0
- package/dist/components/layout/FloatingPanel/styles.css +47 -0
- package/dist/components/layout/FloatingPanel/useFloatingPanel.d.ts +54 -0
- package/dist/components/layout/Grid/Grid.d.ts +24 -0
- package/dist/components/layout/Grid/styles.css +90 -0
- package/dist/components/layout/Header/Header.d.ts +2 -0
- package/dist/components/layout/Header/styles.css +42 -0
- package/dist/components/layout/Icon/Icon.d.ts +4 -0
- package/dist/components/layout/Icon/styles.css +62 -0
- package/dist/components/layout/Illustration/Illustration.d.ts +2 -0
- package/dist/components/layout/Illustration/styles.css +104 -0
- package/dist/components/layout/ScrollArea/ScrollArea.d.ts +2 -0
- package/dist/components/layout/ScrollArea/styles.css +61 -0
- package/dist/components/layout/Stack/Stack.d.ts +21 -0
- package/dist/components/layout/Stack/styles.css +53 -0
- package/dist/components/layout/StatTile/StatTile.d.ts +20 -0
- package/dist/components/layout/StatTile/styles.css +90 -0
- package/dist/components/layout/TabPanel/TabPanel.d.ts +2 -0
- package/dist/components/layout/TabPanel/styles.css +16 -0
- package/dist/components/layout/Text/Text.d.ts +2 -0
- package/dist/components/layout/Text/styles.css +29 -0
- package/dist/components/layout/Toolbar/Toolbar.d.ts +12 -0
- package/dist/components/layout/Toolbar/styles.css +7 -0
- package/dist/components/layout/shared.css +79 -0
- package/dist/components/layout/shared.d.ts +64 -0
- package/dist/components/media/AudioPlayer/AudioPlayer.d.ts +2 -0
- package/dist/components/media/AudioPlayer/styles.css +86 -0
- package/dist/components/media/KaraokeLyrics/KaraokeLyrics.d.ts +25 -0
- package/dist/components/media/KaraokeLyrics/styles.css +56 -0
- package/dist/components/media/LevelMeter/LevelMeter.d.ts +7 -0
- package/dist/components/media/LevelMeter/styles.css +30 -0
- package/dist/components/media/MediaCard/MediaCard.d.ts +24 -0
- package/dist/components/media/MediaCard/styles.css +108 -0
- package/dist/components/media/MelodyRoll/MelodyRoll.d.ts +48 -0
- package/dist/components/media/MelodyRoll/styles.css +196 -0
- package/dist/components/media/PianoKeyboard/PianoKeyboard.d.ts +24 -0
- package/dist/components/media/PianoKeyboard/styles.css +83 -0
- package/dist/components/media/RotaryKnob/RotaryKnob.d.ts +3 -0
- package/dist/components/media/RotaryKnob/styles.css +319 -0
- package/dist/components/media/Sparkline/Sparkline.d.ts +2 -0
- package/dist/components/media/Sparkline/styles.css +70 -0
- package/dist/components/media/WaveDecoration/WaveDecoration.d.ts +2 -0
- package/dist/components/media/WaveDecoration/styles.css +2 -0
- package/dist/components/media/Waveform/Waveform.d.ts +9 -0
- package/dist/components/media/Waveform/styles.css +375 -0
- package/dist/components/media/Waveform/useWaveformPeaks.d.ts +11 -0
- package/dist/components/media/shared.css +7 -0
- package/dist/components/media/shared.d.ts +80 -0
- package/dist/components/navigation/Router/Router.d.ts +32 -0
- package/dist/components/navigation/Router/styles.css +1 -0
- package/dist/components.css +102 -0
- package/dist/core/artwork.d.ts +17 -0
- package/dist/core/base.d.ts +65 -0
- package/dist/core/environment.d.ts +5 -0
- package/dist/core/i18n.d.ts +34 -0
- package/dist/core/messages.d.ts +1 -0
- package/dist/core/motion/hooks.d.ts +17 -0
- package/dist/core/motion-engine.d.ts +13 -0
- package/dist/core/noise.d.ts +20 -0
- package/dist/core/providers/context.d.ts +4 -0
- package/dist/core/responsive.d.ts +13 -0
- package/dist/core.d.ts +8 -0
- package/dist/core.js +56 -0
- package/dist/editor.d.ts +2 -0
- package/dist/editor.js +8 -0
- package/dist/fonts/melodix/Melodix-100.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-200.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-300.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-400.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-500.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-600.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-700.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-800.woff2 +0 -0
- package/dist/fonts/melodix/Melodix-900.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-100.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-200.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-300.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-400.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-500.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-600.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-700.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-800.woff2 +0 -0
- package/dist/fonts/melodix/MelodixText-900.woff2 +0 -0
- package/dist/fonts/melodix/OFL-PlayfairDisplay.txt +93 -0
- package/dist/fonts/melodix.css +123 -0
- package/dist/forms.d.ts +4 -0
- package/dist/forms.js +17 -0
- package/dist/index.d.ts +163 -0
- package/dist/index.js +9683 -0
- package/dist/router.d.ts +2 -0
- package/dist/router.js +11 -0
- package/dist/styles.css +2 -0
- package/dist/theme/base.css +221 -0
- package/dist/theme/tokens.css +196 -0
- package/dist/theme/typography.d.ts +24 -0
- package/dist/tokens.css +1 -0
- package/package.json +83 -4
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* Styles owned by KeyValueList: rows slide in one by one and highlight on hover. */
|
|
2
|
+
.ad-key-value-list {
|
|
3
|
+
display: grid;
|
|
4
|
+
gap: 0.125rem;
|
|
5
|
+
margin: 0;
|
|
6
|
+
font-size: 0.8125rem;
|
|
7
|
+
}
|
|
8
|
+
.ad-key-value-list > div {
|
|
9
|
+
display: grid;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
/* Neither column may push the list wider than its container. */
|
|
12
|
+
grid-template-columns: minmax(min(7.5rem, 40%), 1fr) minmax(0, 1.2fr);
|
|
13
|
+
align-items: center;
|
|
14
|
+
gap: 1.125rem;
|
|
15
|
+
padding: 0.45rem 0.6rem;
|
|
16
|
+
border-radius: 0.5rem;
|
|
17
|
+
transition: background 0.25s;
|
|
18
|
+
animation: ad-kv-row 0.5s cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
19
|
+
}
|
|
20
|
+
.ad-key-value-list > div:nth-child(2) {
|
|
21
|
+
animation-delay: 0.07s;
|
|
22
|
+
}
|
|
23
|
+
.ad-key-value-list > div:nth-child(3) {
|
|
24
|
+
animation-delay: 0.14s;
|
|
25
|
+
}
|
|
26
|
+
.ad-key-value-list > div:nth-child(n + 4) {
|
|
27
|
+
animation-delay: 0.21s;
|
|
28
|
+
}
|
|
29
|
+
.ad-key-value-list > div:hover {
|
|
30
|
+
background: #ffffff08;
|
|
31
|
+
}
|
|
32
|
+
.ad-key-value-list dt {
|
|
33
|
+
min-width: 0;
|
|
34
|
+
overflow-wrap: anywhere;
|
|
35
|
+
color: var(--ad-muted);
|
|
36
|
+
transition: color 0.25s;
|
|
37
|
+
}
|
|
38
|
+
.ad-key-value-list > div:hover dt {
|
|
39
|
+
color: var(--ad-pink);
|
|
40
|
+
}
|
|
41
|
+
.ad-key-value-list dd {
|
|
42
|
+
min-width: 0;
|
|
43
|
+
margin: 0;
|
|
44
|
+
overflow-wrap: anywhere;
|
|
45
|
+
}
|
|
46
|
+
@keyframes ad-kv-row {
|
|
47
|
+
from {
|
|
48
|
+
opacity: 0;
|
|
49
|
+
transform: translateX(-0.6rem);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* Premium floating action menu. */
|
|
2
|
+
.ad.ad-menu {
|
|
3
|
+
--ad-menu-radius: 1.08rem;
|
|
4
|
+
--ad-menu-caret-size: 0.72rem;
|
|
5
|
+
position: fixed;
|
|
6
|
+
inset: auto;
|
|
7
|
+
min-inline-size: min(clamp(16rem, 24vw, 21rem), var(--ad-popover-available-width, calc(100vw - 1.25rem)));
|
|
8
|
+
max-inline-size: min(26rem, var(--ad-popover-available-width, calc(100vw - 1.25rem)));
|
|
9
|
+
padding: 0.62rem;
|
|
10
|
+
border: 0.0625rem solid transparent;
|
|
11
|
+
border-radius: var(--ad-menu-radius);
|
|
12
|
+
color: var(--ad-text);
|
|
13
|
+
overflow: visible;
|
|
14
|
+
isolation: isolate;
|
|
15
|
+
backdrop-filter: blur(1.35rem) saturate(1.18);
|
|
16
|
+
background:
|
|
17
|
+
radial-gradient(
|
|
18
|
+
120% 92% at 50% -12%,
|
|
19
|
+
rgb(from var(--ad-primary-600) r g b / 0.23) 0%,
|
|
20
|
+
rgb(from var(--ad-primary-800) r g b / 0.16) 25%,
|
|
21
|
+
transparent 57%
|
|
22
|
+
)
|
|
23
|
+
padding-box,
|
|
24
|
+
radial-gradient(90% 120% at 0 100%, rgb(from var(--ad-primary-800) r g b / 0.13) 0%, transparent 65%)
|
|
25
|
+
padding-box,
|
|
26
|
+
linear-gradient(145deg, rgb(from var(--ad-neutral-850) r g b / 0.93), rgb(from var(--ad-neutral-900) r g b / 0.94) 56%, rgb(from var(--ad-neutral-850) r g b / 0.93)) padding-box,
|
|
27
|
+
linear-gradient(
|
|
28
|
+
140deg,
|
|
29
|
+
rgb(from var(--ad-secondary-200) r g b / 0.72) 0%,
|
|
30
|
+
rgb(from var(--ad-primary) r g b / 0.55) 14%,
|
|
31
|
+
rgb(from var(--ad-primary-700) r g b / 0.34) 40%,
|
|
32
|
+
rgb(from var(--ad-secondary) r g b / 0.63) 76%,
|
|
33
|
+
rgb(from var(--ad-primary-700) r g b / 0.34) 100%
|
|
34
|
+
)
|
|
35
|
+
border-box;
|
|
36
|
+
box-shadow:
|
|
37
|
+
inset 0 0.0625rem 0.125rem rgb(from var(--ad-neutral-200) r g b / 0.29),
|
|
38
|
+
inset 0 0 1.2rem rgb(from var(--ad-primary) r g b / 0.1),
|
|
39
|
+
0 0.9rem 2.8rem #000c,
|
|
40
|
+
0 0 1.35rem rgb(from var(--ad-primary) r g b / 0.23),
|
|
41
|
+
0 0 3rem rgb(from var(--ad-primary) r g b / 0.09);
|
|
42
|
+
transform-origin: var(--ad-popover-anchor-x, 50%) top;
|
|
43
|
+
animation: ad-menu-enter 0.19s cubic-bezier(0.18, 0.82, 0.28, 1) both;
|
|
44
|
+
}
|
|
45
|
+
.ad.ad-menu::after {
|
|
46
|
+
content: "";
|
|
47
|
+
position: absolute;
|
|
48
|
+
inset: 0.18rem;
|
|
49
|
+
border-radius: calc(var(--ad-menu-radius) - 0.18rem);
|
|
50
|
+
border: 0.0625rem solid #ffffff09;
|
|
51
|
+
box-shadow: inset 0 0.0625rem 0.1rem #ffffff18;
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
z-index: 4;
|
|
54
|
+
}
|
|
55
|
+
.ad.ad-menu::before {
|
|
56
|
+
content: "";
|
|
57
|
+
position: absolute;
|
|
58
|
+
z-index: -1;
|
|
59
|
+
inline-size: var(--ad-menu-caret-size);
|
|
60
|
+
block-size: var(--ad-menu-caret-size);
|
|
61
|
+
left: clamp(
|
|
62
|
+
1.3rem,
|
|
63
|
+
calc(var(--ad-popover-anchor-x, 50%) - var(--ad-menu-caret-size) / 2),
|
|
64
|
+
calc(100% - 2rem)
|
|
65
|
+
);
|
|
66
|
+
top: calc(var(--ad-menu-caret-size) * -0.49);
|
|
67
|
+
transform: rotate(45deg);
|
|
68
|
+
border-left: 0.0625rem solid rgb(from var(--ad-secondary) r g b / 0.56);
|
|
69
|
+
border-top: 0.0625rem solid rgb(from var(--ad-secondary-200) r g b / 0.69);
|
|
70
|
+
border-radius: 0.15rem 0 0 0;
|
|
71
|
+
background: linear-gradient(135deg, var(--ad-primary-800), var(--ad-neutral-850) 66%);
|
|
72
|
+
box-shadow: -0.18rem -0.18rem 0.65rem rgb(from var(--ad-primary) r g b / 0.23);
|
|
73
|
+
}
|
|
74
|
+
.ad.ad-menu[data-ad-side="above"] {
|
|
75
|
+
transform-origin: var(--ad-popover-anchor-x, 50%) bottom;
|
|
76
|
+
animation-name: ad-menu-enter-above;
|
|
77
|
+
}
|
|
78
|
+
.ad.ad-menu[data-ad-side="above"]::before {
|
|
79
|
+
top: auto;
|
|
80
|
+
bottom: calc(var(--ad-menu-caret-size) * -0.49);
|
|
81
|
+
transform: rotate(225deg);
|
|
82
|
+
}
|
|
83
|
+
.ad-menu > .ad-divider {
|
|
84
|
+
margin: 0.16rem 0.72rem;
|
|
85
|
+
inline-size: auto;
|
|
86
|
+
background: linear-gradient(
|
|
87
|
+
90deg,
|
|
88
|
+
transparent,
|
|
89
|
+
rgb(from var(--ad-primary) r g b / 0.17) 14%,
|
|
90
|
+
rgb(from var(--ad-secondary) r g b / 0.23) 50%,
|
|
91
|
+
rgb(from var(--ad-primary) r g b / 0.17) 86%,
|
|
92
|
+
transparent
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
@keyframes ad-menu-enter {
|
|
96
|
+
from {
|
|
97
|
+
opacity: 0;
|
|
98
|
+
transform: translateY(-0.38rem) scale(0.975);
|
|
99
|
+
filter: blur(0.08rem);
|
|
100
|
+
}
|
|
101
|
+
to {
|
|
102
|
+
opacity: 1;
|
|
103
|
+
transform: translateY(0) scale(1);
|
|
104
|
+
filter: blur(0);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
@keyframes ad-menu-enter-above {
|
|
108
|
+
from {
|
|
109
|
+
opacity: 0;
|
|
110
|
+
transform: translateY(0.38rem) scale(0.975);
|
|
111
|
+
filter: blur(0.08rem);
|
|
112
|
+
}
|
|
113
|
+
to {
|
|
114
|
+
opacity: 1;
|
|
115
|
+
transform: translateY(0) scale(1);
|
|
116
|
+
filter: blur(0);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
@media (prefers-reduced-motion: reduce) {
|
|
120
|
+
.ad.ad-menu {
|
|
121
|
+
animation: none;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* Menu row: plain icon and label, a soft highlight on hover or keyboard focus. */
|
|
2
|
+
.ad-menu-item {
|
|
3
|
+
--ad-menu-item-tone: var(--ad-neutral-200);
|
|
4
|
+
appearance: none;
|
|
5
|
+
inline-size: 100%;
|
|
6
|
+
min-inline-size: 0;
|
|
7
|
+
min-block-size: 2.5rem;
|
|
8
|
+
display: grid;
|
|
9
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
10
|
+
align-items: center;
|
|
11
|
+
gap: 0.7rem;
|
|
12
|
+
padding: 0.4rem 0.7rem;
|
|
13
|
+
border: 0;
|
|
14
|
+
border-radius: calc(var(--ad-radius) * 0.65);
|
|
15
|
+
background: transparent;
|
|
16
|
+
color: var(--ad-menu-item-tone);
|
|
17
|
+
text-align: left;
|
|
18
|
+
font-family: inherit;
|
|
19
|
+
font-size: var(--ad-font-size-body-sm);
|
|
20
|
+
font-weight: 600;
|
|
21
|
+
line-height: 1.2;
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
transition:
|
|
24
|
+
background 0.14s,
|
|
25
|
+
color 0.14s;
|
|
26
|
+
}
|
|
27
|
+
.ad-menu-item:hover:not(:disabled),
|
|
28
|
+
.ad-menu-item:focus-visible {
|
|
29
|
+
outline: 0;
|
|
30
|
+
background: #ffffff10;
|
|
31
|
+
color: #fff;
|
|
32
|
+
}
|
|
33
|
+
.ad-menu-item:active:not(:disabled) {
|
|
34
|
+
background: #ffffff1a;
|
|
35
|
+
}
|
|
36
|
+
.ad-menu-item:disabled {
|
|
37
|
+
opacity: 0.38;
|
|
38
|
+
cursor: not-allowed;
|
|
39
|
+
}
|
|
40
|
+
.ad-menu-item-icon,
|
|
41
|
+
.ad-menu-item-end {
|
|
42
|
+
display: grid;
|
|
43
|
+
place-items: center;
|
|
44
|
+
color: var(--ad-neutral-400);
|
|
45
|
+
}
|
|
46
|
+
.ad-menu-item-icon > .ad-icon {
|
|
47
|
+
--ad-icon-size: 1.15rem;
|
|
48
|
+
}
|
|
49
|
+
.ad-menu-item:hover:not(:disabled) .ad-menu-item-icon {
|
|
50
|
+
color: var(--ad-pink);
|
|
51
|
+
}
|
|
52
|
+
.ad-menu-item-label {
|
|
53
|
+
min-inline-size: 0;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
text-overflow: ellipsis;
|
|
56
|
+
white-space: nowrap;
|
|
57
|
+
}
|
|
58
|
+
.ad-menu-item-end > .ad-icon {
|
|
59
|
+
--ad-icon-size: 1rem;
|
|
60
|
+
}
|
|
61
|
+
.ad-menu-item[data-ad-tone="error"] {
|
|
62
|
+
--ad-menu-item-tone: var(--ad-secondary);
|
|
63
|
+
}
|
|
64
|
+
.ad-menu-item[data-ad-tone="error"] .ad-menu-item-icon {
|
|
65
|
+
color: var(--ad-secondary);
|
|
66
|
+
}
|
|
67
|
+
.ad-menu-item[data-ad-tone="error"]:hover:not(:disabled),
|
|
68
|
+
.ad-menu-item[data-ad-tone="error"]:focus-visible {
|
|
69
|
+
background: rgb(from var(--ad-primary) r g b / 0.13);
|
|
70
|
+
color: var(--ad-secondary-200);
|
|
71
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/* Styles owned by MessageBar: tone strip, glowing icon ring, a scan line on arrival. */
|
|
2
|
+
.ad-message-bar {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-wrap: wrap;
|
|
6
|
+
gap: 0.8rem;
|
|
7
|
+
align-items: center;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
padding: 0.7rem 1rem 0.7rem 1.1rem;
|
|
10
|
+
font-size: var(--ad-font-size-body-sm);
|
|
11
|
+
line-height: 1.5;
|
|
12
|
+
color: var(--ad-neutral-200);
|
|
13
|
+
border: 0.0625rem solid color-mix(in srgb, var(--ad-tone) 35%, transparent);
|
|
14
|
+
border-radius: calc(var(--ad-radius) * 0.8);
|
|
15
|
+
background:
|
|
16
|
+
linear-gradient(
|
|
17
|
+
90deg,
|
|
18
|
+
color-mix(in srgb, var(--ad-tone) 16%, transparent),
|
|
19
|
+
transparent 70%
|
|
20
|
+
),
|
|
21
|
+
rgb(from var(--ad-neutral-900) r g b / 0.95);
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
animation: ad-message-in 0.45s cubic-bezier(0.2, 0.9, 0.3, 1.15) both;
|
|
24
|
+
}
|
|
25
|
+
/* Tone strip on the leading edge. */
|
|
26
|
+
.ad-message-bar::before {
|
|
27
|
+
content: "";
|
|
28
|
+
position: absolute;
|
|
29
|
+
left: 0;
|
|
30
|
+
top: 0.45rem;
|
|
31
|
+
bottom: 0.45rem;
|
|
32
|
+
width: 0.1875rem;
|
|
33
|
+
border-radius: 0 999rem 999rem 0;
|
|
34
|
+
background: var(--ad-tone);
|
|
35
|
+
box-shadow: 0 0 0.75rem var(--ad-tone);
|
|
36
|
+
}
|
|
37
|
+
/* Scan line passing once when the message appears. */
|
|
38
|
+
.ad-message-bar::after {
|
|
39
|
+
content: "";
|
|
40
|
+
position: absolute;
|
|
41
|
+
inset: 0;
|
|
42
|
+
background: linear-gradient(
|
|
43
|
+
100deg,
|
|
44
|
+
transparent 30%,
|
|
45
|
+
color-mix(in srgb, var(--ad-tone) 30%, transparent) 50%,
|
|
46
|
+
transparent 70%
|
|
47
|
+
);
|
|
48
|
+
translate: -100% 0;
|
|
49
|
+
animation: ad-message-scan 1.1s 0.15s ease-out both;
|
|
50
|
+
pointer-events: none;
|
|
51
|
+
}
|
|
52
|
+
.ad-message-bar-icon {
|
|
53
|
+
display: grid;
|
|
54
|
+
place-items: center;
|
|
55
|
+
flex: none;
|
|
56
|
+
width: 2rem;
|
|
57
|
+
height: 2rem;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
color: var(--ad-tone);
|
|
60
|
+
background: color-mix(in srgb, var(--ad-tone) 14%, var(--ad-neutral-900));
|
|
61
|
+
box-shadow:
|
|
62
|
+
inset 0 0 0 0.0625rem color-mix(in srgb, var(--ad-tone) 50%, transparent),
|
|
63
|
+
0 0 0.75rem color-mix(in srgb, var(--ad-tone) 30%, transparent);
|
|
64
|
+
}
|
|
65
|
+
.ad-message-bar-icon > .ad-icon {
|
|
66
|
+
--ad-icon-size: 1.1rem;
|
|
67
|
+
}
|
|
68
|
+
.ad-message-bar-icon {
|
|
69
|
+
position: relative;
|
|
70
|
+
}
|
|
71
|
+
.ad-message-bar:is([data-ad-tone="error"], [data-ad-tone="warning"]) .ad-message-bar-icon::after {
|
|
72
|
+
content: "";
|
|
73
|
+
position: absolute;
|
|
74
|
+
inset: 0;
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
box-shadow: inset 0 0 0 0.0625rem var(--ad-tone), 0 0 1.1rem color-mix(in srgb, var(--ad-tone) 55%, transparent);
|
|
77
|
+
opacity: 0;
|
|
78
|
+
animation: ad-message-alert 2s ease-in-out infinite;
|
|
79
|
+
}
|
|
80
|
+
.ad-message-bar-text {
|
|
81
|
+
flex: 1 1 12ch;
|
|
82
|
+
min-width: 0;
|
|
83
|
+
overflow-wrap: anywhere;
|
|
84
|
+
}
|
|
85
|
+
.ad-message-bar-action {
|
|
86
|
+
flex: 0 1 auto;
|
|
87
|
+
max-width: 100%;
|
|
88
|
+
margin-inline-start: auto;
|
|
89
|
+
overflow-wrap: anywhere;
|
|
90
|
+
}
|
|
91
|
+
.ad-message-bar-action .ad-button {
|
|
92
|
+
max-width: 100%;
|
|
93
|
+
height: auto;
|
|
94
|
+
min-height: var(--ad-size-h);
|
|
95
|
+
padding-block: 0.5em;
|
|
96
|
+
white-space: normal;
|
|
97
|
+
}
|
|
98
|
+
.ad-message-bar-action .ad-button-label {
|
|
99
|
+
white-space: normal;
|
|
100
|
+
}
|
|
101
|
+
@keyframes ad-message-in {
|
|
102
|
+
from {
|
|
103
|
+
opacity: 0;
|
|
104
|
+
transform: translateY(-0.4rem);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
@keyframes ad-message-scan {
|
|
108
|
+
to {
|
|
109
|
+
translate: 100% 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
@keyframes ad-message-alert {
|
|
113
|
+
50% {
|
|
114
|
+
opacity: 1;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* Styles owned by Popover: unfolds from its anchor side, rows arrive in a quick cascade. */
|
|
2
|
+
.ad-popover {
|
|
3
|
+
min-width: min(14.6875rem, var(--ad-popover-available-width, calc(100vw - 1rem)));
|
|
4
|
+
max-width: min(21.875rem, var(--ad-popover-available-width, calc(100vw - 1rem)));
|
|
5
|
+
max-height: var(--ad-popover-available-height, calc(100dvh - 1rem));
|
|
6
|
+
overflow: auto;
|
|
7
|
+
overflow-wrap: anywhere;
|
|
8
|
+
transform-origin: var(--ad-popover-anchor-x, 50%) top;
|
|
9
|
+
animation: ad-popover-in 0.22s cubic-bezier(0.2, 0.9, 0.3, 1.2) both;
|
|
10
|
+
}
|
|
11
|
+
.ad-popover[data-ad-side="above"] {
|
|
12
|
+
transform-origin: var(--ad-popover-anchor-x, 50%) bottom;
|
|
13
|
+
}
|
|
14
|
+
:is(.ad-option-list, .ad-menu) > :is(.ad-option, .ad-menu-item) {
|
|
15
|
+
animation: ad-row-in 0.28s cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
16
|
+
}
|
|
17
|
+
:is(.ad-option-list, .ad-menu) > :nth-child(2) {
|
|
18
|
+
animation-delay: 0.03s;
|
|
19
|
+
}
|
|
20
|
+
:is(.ad-option-list, .ad-menu) > :nth-child(3) {
|
|
21
|
+
animation-delay: 0.06s;
|
|
22
|
+
}
|
|
23
|
+
:is(.ad-option-list, .ad-menu) > :nth-child(4) {
|
|
24
|
+
animation-delay: 0.09s;
|
|
25
|
+
}
|
|
26
|
+
:is(.ad-option-list, .ad-menu) > :nth-child(5) {
|
|
27
|
+
animation-delay: 0.12s;
|
|
28
|
+
}
|
|
29
|
+
:is(.ad-option-list, .ad-menu) > :nth-child(n + 6) {
|
|
30
|
+
animation-delay: 0.15s;
|
|
31
|
+
}
|
|
32
|
+
@keyframes ad-popover-in {
|
|
33
|
+
from {
|
|
34
|
+
opacity: 0;
|
|
35
|
+
transform: translateY(-0.35rem) scale(0.96);
|
|
36
|
+
filter: blur(0.25rem);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
@keyframes ad-row-in {
|
|
40
|
+
from {
|
|
41
|
+
opacity: 0;
|
|
42
|
+
transform: translateX(-0.4rem);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* Styles owned by ProgressBar: the fill glides to its value with a glint running through it. */
|
|
2
|
+
.ad-progress-bar {
|
|
3
|
+
height: 0.5625rem;
|
|
4
|
+
border: 0.0625rem solid var(--ad-primary-600);
|
|
5
|
+
border-radius: 0.5rem;
|
|
6
|
+
background: linear-gradient(var(--ad-neutral-900), var(--ad-neutral-900));
|
|
7
|
+
position: relative;
|
|
8
|
+
width: 100%;
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
}
|
|
11
|
+
.ad-progress-bar > span {
|
|
12
|
+
position: absolute;
|
|
13
|
+
left: 0;
|
|
14
|
+
top: 0;
|
|
15
|
+
bottom: 0;
|
|
16
|
+
border-radius: inherit;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
background: linear-gradient(90deg, var(--ad-primary), var(--ad-secondary));
|
|
19
|
+
box-shadow:
|
|
20
|
+
inset 0 0.0625rem 0.0625rem rgb(from var(--ad-secondary-200) r g b / 0.47),
|
|
21
|
+
0 0 0.6rem rgb(from var(--ad-primary) r g b / 0.33);
|
|
22
|
+
transition: width 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
23
|
+
}
|
|
24
|
+
/* The glint running through the fill. */
|
|
25
|
+
.ad-progress-bar > span::after {
|
|
26
|
+
content: "";
|
|
27
|
+
position: absolute;
|
|
28
|
+
inset: 0 auto 0 0;
|
|
29
|
+
width: 60%;
|
|
30
|
+
background: linear-gradient(100deg, transparent 30%, #ffffff66 50%, transparent 70%);
|
|
31
|
+
transform: translateX(-100%);
|
|
32
|
+
animation: ad-progress-glint 2.2s ease-in-out infinite;
|
|
33
|
+
}
|
|
34
|
+
.ad-progress-bar[data-indeterminate] > span {
|
|
35
|
+
animation: ad-progress-run 1.4s cubic-bezier(0.45, 0, 0.55, 1) infinite;
|
|
36
|
+
}
|
|
37
|
+
@keyframes ad-progress-glint {
|
|
38
|
+
to {
|
|
39
|
+
transform: translateX(270%);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
@keyframes ad-progress-run {
|
|
43
|
+
from {
|
|
44
|
+
transform: translateX(-100%);
|
|
45
|
+
}
|
|
46
|
+
to {
|
|
47
|
+
transform: translateX(290%);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/* Wave variant: the bars light up from the left as the work advances. */
|
|
51
|
+
.ad-progress-bar[data-variant="wave"] {
|
|
52
|
+
height: 1.75rem;
|
|
53
|
+
border: 0;
|
|
54
|
+
background: none;
|
|
55
|
+
overflow: visible;
|
|
56
|
+
}
|
|
57
|
+
.ad-progress-bar[data-variant="wave"] > svg {
|
|
58
|
+
display: block;
|
|
59
|
+
width: 100%;
|
|
60
|
+
height: 100%;
|
|
61
|
+
}
|
|
62
|
+
.ad-progress-wave-idle {
|
|
63
|
+
fill: rgb(from var(--ad-neutral-200) r g b / 0.18);
|
|
64
|
+
}
|
|
65
|
+
.ad-progress-wave-done {
|
|
66
|
+
fill: var(--ad-primary);
|
|
67
|
+
filter: drop-shadow(0 0 0.2rem rgb(from var(--ad-primary) r g b / 0.7));
|
|
68
|
+
}
|
|
69
|
+
.ad-progress-bar[data-variant="wave"][data-indeterminate] .ad-progress-wave-done {
|
|
70
|
+
animation: ad-progress-wave-run 1.6s ease-in-out infinite;
|
|
71
|
+
}
|
|
72
|
+
@keyframes ad-progress-wave-run {
|
|
73
|
+
50% {
|
|
74
|
+
opacity: 0.35;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CommonProps } from "../../../core/base";
|
|
2
|
+
export interface SignalBarsProps extends CommonProps {
|
|
3
|
+
/** How many bars are lit, 0…`bars`. */
|
|
4
|
+
level?: number;
|
|
5
|
+
bars?: number;
|
|
6
|
+
/** A weak or broken link: the lit bars turn to the warning colour. */
|
|
7
|
+
weak?: boolean;
|
|
8
|
+
label?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Signal strength as rising bars, like a phone's reception; the lit ones glow. */
|
|
11
|
+
export declare function SignalBars({ level, bars, weak, label, ...p }: SignalBarsProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* Styles owned by SignalBars: rising bars; lit ones glow, the top one breathes. */
|
|
2
|
+
.ad-signal-bars {
|
|
3
|
+
--ad-signal-tone: var(--ad-primary);
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: flex-end;
|
|
6
|
+
gap: 0.18em;
|
|
7
|
+
width: 1.4em;
|
|
8
|
+
height: 1.4em;
|
|
9
|
+
}
|
|
10
|
+
.ad-signal-bars[data-weak] {
|
|
11
|
+
--ad-signal-tone: var(--ad-warning);
|
|
12
|
+
}
|
|
13
|
+
.ad-signal-bars > i {
|
|
14
|
+
flex: 1;
|
|
15
|
+
border-radius: 0.12em;
|
|
16
|
+
background: rgb(from var(--ad-neutral-200) r g b / 0.16);
|
|
17
|
+
transition: background 0.4s, box-shadow 0.4s;
|
|
18
|
+
}
|
|
19
|
+
.ad-signal-bars > i[data-lit] {
|
|
20
|
+
background: linear-gradient(var(--ad-secondary-100), var(--ad-signal-tone));
|
|
21
|
+
box-shadow: 0 0 0.45em rgb(from var(--ad-signal-tone) r g b / 0.55);
|
|
22
|
+
}
|
|
23
|
+
.ad-signal-bars > i[data-lit]:has(+ i:not([data-lit])),
|
|
24
|
+
.ad-signal-bars > i[data-lit]:last-child {
|
|
25
|
+
animation: ad-signal-breathe 2.4s ease-in-out infinite;
|
|
26
|
+
}
|
|
27
|
+
@keyframes ad-signal-breathe {
|
|
28
|
+
50% {
|
|
29
|
+
opacity: 0.6;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* Styles owned by StatusIndicator: a live LED whose motion tells the state at a glance. */
|
|
2
|
+
.ad-status-indicator {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: 0.55rem;
|
|
6
|
+
font-size: var(--ad-font-size-body-sm);
|
|
7
|
+
min-width: 0;
|
|
8
|
+
color: var(--ad-neutral-300);
|
|
9
|
+
/* Short labels stay on one line; a long one wraps instead of pushing its container wider. */
|
|
10
|
+
overflow-wrap: anywhere;
|
|
11
|
+
}
|
|
12
|
+
.ad-status-dot {
|
|
13
|
+
position: relative;
|
|
14
|
+
display: grid;
|
|
15
|
+
place-items: center;
|
|
16
|
+
flex: none;
|
|
17
|
+
width: 1rem;
|
|
18
|
+
height: 1rem;
|
|
19
|
+
}
|
|
20
|
+
/* The LED itself. */
|
|
21
|
+
.ad-status-dot > i {
|
|
22
|
+
width: 0.5rem;
|
|
23
|
+
height: 0.5rem;
|
|
24
|
+
border-radius: 50%;
|
|
25
|
+
background: radial-gradient(circle at 35% 30%, #fff, var(--ad-tone) 55%);
|
|
26
|
+
box-shadow: 0 0 0.5rem var(--ad-tone);
|
|
27
|
+
}
|
|
28
|
+
/* Rings around it: radar for success, a spinning arc for processing. */
|
|
29
|
+
.ad-status-dot::before,
|
|
30
|
+
.ad-status-dot::after {
|
|
31
|
+
content: "";
|
|
32
|
+
position: absolute;
|
|
33
|
+
inset: 0;
|
|
34
|
+
border-radius: 50%;
|
|
35
|
+
}
|
|
36
|
+
[data-ad-tone="success"] > .ad-status-dot::before,
|
|
37
|
+
[data-ad-tone="success"] > .ad-status-dot::after {
|
|
38
|
+
border: 0.0625rem solid var(--ad-tone);
|
|
39
|
+
animation: ad-status-radar 2.4s ease-out infinite;
|
|
40
|
+
}
|
|
41
|
+
[data-ad-tone="success"] > .ad-status-dot::after {
|
|
42
|
+
animation-delay: 1.2s;
|
|
43
|
+
}
|
|
44
|
+
[data-ad-tone="processing"] > .ad-status-dot::before {
|
|
45
|
+
inset: -0.125rem;
|
|
46
|
+
background: conic-gradient(from 0deg, transparent 0 55%, var(--ad-tone));
|
|
47
|
+
mask: radial-gradient(closest-side, transparent 72%, #000 75%);
|
|
48
|
+
animation: ad-status-spin 0.9s linear infinite;
|
|
49
|
+
}
|
|
50
|
+
:is([data-ad-tone="error"], [data-ad-tone="warning"]) > .ad-status-dot > i {
|
|
51
|
+
animation: ad-status-blink 1.1s steps(2, jump-none) infinite;
|
|
52
|
+
}
|
|
53
|
+
[data-ad-tone="pending"] > .ad-status-dot > i {
|
|
54
|
+
animation: ad-status-breathe 2.4s ease-in-out infinite;
|
|
55
|
+
}
|
|
56
|
+
[data-ad-tone="offline"] > .ad-status-dot > i {
|
|
57
|
+
background: var(--ad-neutral-600);
|
|
58
|
+
box-shadow: none;
|
|
59
|
+
}
|
|
60
|
+
.ad-status-indicator[data-ad-tone="offline"] {
|
|
61
|
+
color: var(--ad-muted);
|
|
62
|
+
}
|
|
63
|
+
@keyframes ad-status-radar {
|
|
64
|
+
from {
|
|
65
|
+
opacity: 0.9;
|
|
66
|
+
scale: 0.4;
|
|
67
|
+
}
|
|
68
|
+
to {
|
|
69
|
+
opacity: 0;
|
|
70
|
+
scale: 1.8;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
@keyframes ad-status-spin {
|
|
74
|
+
to {
|
|
75
|
+
rotate: 1turn;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
@keyframes ad-status-blink {
|
|
79
|
+
50% {
|
|
80
|
+
opacity: 0.3;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
@keyframes ad-status-breathe {
|
|
84
|
+
50% {
|
|
85
|
+
scale: 0.7;
|
|
86
|
+
opacity: 0.55;
|
|
87
|
+
}
|
|
88
|
+
}
|