@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,66 @@
|
|
|
1
|
+
/* Styles owned by ImageShine: the light sweeps, the picture breathes, the glow pulses.
|
|
2
|
+
Every layer animates transform or opacity only; the glow's blur is drawn once. */
|
|
3
|
+
.ad-image-shine {
|
|
4
|
+
position: relative;
|
|
5
|
+
display: block;
|
|
6
|
+
width: 100%;
|
|
7
|
+
aspect-ratio: 1;
|
|
8
|
+
}
|
|
9
|
+
.ad-image-shine > img,
|
|
10
|
+
.ad-image-shine-sweep {
|
|
11
|
+
position: absolute;
|
|
12
|
+
inset: 0;
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
object-fit: contain;
|
|
16
|
+
user-select: none;
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
}
|
|
19
|
+
.ad-image-shine-glow {
|
|
20
|
+
filter: blur(1.4rem) brightness(1.4) saturate(1.3);
|
|
21
|
+
opacity: 0.45;
|
|
22
|
+
will-change: opacity;
|
|
23
|
+
animation: ad-image-shine-glow 2.6s ease-in-out infinite;
|
|
24
|
+
}
|
|
25
|
+
.ad-image-shine-picture {
|
|
26
|
+
will-change: transform;
|
|
27
|
+
}
|
|
28
|
+
.ad-image-shine[data-glow] > .ad-image-shine-picture {
|
|
29
|
+
animation: ad-image-shine-breathe 2.6s ease-in-out infinite;
|
|
30
|
+
}
|
|
31
|
+
/* The band of light, seen only through the picture's own shape. */
|
|
32
|
+
.ad-image-shine-sweep {
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
mask: var(--ad-shine-src) center / contain no-repeat;
|
|
35
|
+
}
|
|
36
|
+
.ad-image-shine-sweep > i {
|
|
37
|
+
position: absolute;
|
|
38
|
+
inset: 0 auto 0 0;
|
|
39
|
+
width: 50%;
|
|
40
|
+
background: linear-gradient(
|
|
41
|
+
90deg,
|
|
42
|
+
transparent,
|
|
43
|
+
rgb(from var(--ad-secondary) r g b / 0.4) 42%,
|
|
44
|
+
rgb(from var(--ad-secondary-100) r g b / 0.75) 50%,
|
|
45
|
+
rgb(from var(--ad-secondary) r g b / 0.4) 58%,
|
|
46
|
+
transparent
|
|
47
|
+
);
|
|
48
|
+
transform: translateX(-100%);
|
|
49
|
+
will-change: transform;
|
|
50
|
+
animation: ad-image-shine-sweep 2.2s ease-in-out infinite;
|
|
51
|
+
}
|
|
52
|
+
@keyframes ad-image-shine-glow {
|
|
53
|
+
50% {
|
|
54
|
+
opacity: 0.95;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
@keyframes ad-image-shine-sweep {
|
|
58
|
+
to {
|
|
59
|
+
transform: translateX(200%);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
@keyframes ad-image-shine-breathe {
|
|
63
|
+
50% {
|
|
64
|
+
transform: scale(1.035);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CommonProps } from "../../../core/base";
|
|
2
|
+
export interface MarqueeProps extends CommonProps {
|
|
3
|
+
/** Seconds for one full loop. */
|
|
4
|
+
duration?: number;
|
|
5
|
+
/** Scroll to the right instead of the left. */
|
|
6
|
+
reverse?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Endless ticker with faded edges; pauses while hovered so it can be read. */
|
|
9
|
+
export declare function Marquee({ duration, reverse, style, children, ...p }: MarqueeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* Styles owned by Marquee. */
|
|
2
|
+
.ad-marquee {
|
|
3
|
+
overflow: hidden;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
|
|
6
|
+
}
|
|
7
|
+
.ad-marquee-track {
|
|
8
|
+
display: flex;
|
|
9
|
+
width: max-content;
|
|
10
|
+
animation: ad-marquee var(--ad-marquee-time) linear infinite;
|
|
11
|
+
}
|
|
12
|
+
.ad-marquee[data-reverse] .ad-marquee-track {
|
|
13
|
+
animation-direction: reverse;
|
|
14
|
+
}
|
|
15
|
+
.ad-marquee:is(:hover, :focus-within) .ad-marquee-track {
|
|
16
|
+
animation-play-state: paused;
|
|
17
|
+
}
|
|
18
|
+
.ad-marquee[data-static] {
|
|
19
|
+
mask: none;
|
|
20
|
+
}
|
|
21
|
+
.ad-marquee[data-static] .ad-marquee-track {
|
|
22
|
+
animation: none;
|
|
23
|
+
width: 100%;
|
|
24
|
+
}
|
|
25
|
+
.ad-marquee[data-static] .ad-marquee-group {
|
|
26
|
+
flex: 1;
|
|
27
|
+
min-width: 0;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
padding: 0;
|
|
30
|
+
overflow-wrap: anywhere;
|
|
31
|
+
}
|
|
32
|
+
.ad-marquee[data-static] .ad-marquee-group[aria-hidden] {
|
|
33
|
+
display: none;
|
|
34
|
+
}
|
|
35
|
+
.ad-marquee-group {
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: var(--ad-space-6);
|
|
39
|
+
padding-right: var(--ad-space-6);
|
|
40
|
+
flex: none;
|
|
41
|
+
}
|
|
42
|
+
@keyframes ad-marquee {
|
|
43
|
+
to {
|
|
44
|
+
transform: translateX(-50%);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ElementType } from "react";
|
|
2
|
+
import { type CommonProps } from "../../../core/base";
|
|
3
|
+
export interface MelodixTextProps extends CommonProps {
|
|
4
|
+
children: string;
|
|
5
|
+
as?: ElementType;
|
|
6
|
+
/** "silver": brushed-metal letters under a blue neon; "theme": the theme's colours; "ink": plain text colour. */
|
|
7
|
+
finish?: "silver" | "theme" | "ink";
|
|
8
|
+
/** A neon halo round the letters. */
|
|
9
|
+
glow?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A title set in Melodix, the library's musical typeface: records, keys, notes and clefs are
|
|
13
|
+
* part of the letters themselves. In brushed silver, in the theme's colours, or plain.
|
|
14
|
+
*/
|
|
15
|
+
export declare function MelodixText({ children, as, finish, glow, ...p }: MelodixTextProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Styles owned by MelodixText: the Melodix typeface in brushed silver (or the theme's colours)
|
|
2
|
+
under a still neon halo; nothing here animates. */
|
|
3
|
+
.ad-melodix-text {
|
|
4
|
+
--ad-melodix-glow: #3d8bff;
|
|
5
|
+
--ad-melodix-top: #ffffff;
|
|
6
|
+
--ad-melodix-mid: #c9d3e3;
|
|
7
|
+
--ad-melodix-low: #7f8ca6;
|
|
8
|
+
display: inline-block;
|
|
9
|
+
max-inline-size: 100%;
|
|
10
|
+
overflow-wrap: anywhere;
|
|
11
|
+
font-family: var(--ad-font-family-melodix);
|
|
12
|
+
line-height: 1.25;
|
|
13
|
+
letter-spacing: 0.06em;
|
|
14
|
+
}
|
|
15
|
+
.ad-melodix-text:not([data-finish="ink"]) {
|
|
16
|
+
color: transparent;
|
|
17
|
+
background: linear-gradient(180deg, var(--ad-melodix-top) 10%, var(--ad-melodix-mid) 46%, var(--ad-melodix-low) 58%, var(--ad-melodix-top) 92%);
|
|
18
|
+
background-clip: text;
|
|
19
|
+
-webkit-background-clip: text;
|
|
20
|
+
}
|
|
21
|
+
.ad-melodix-text[data-finish="theme"] {
|
|
22
|
+
--ad-melodix-glow: var(--ad-primary);
|
|
23
|
+
--ad-melodix-mid: var(--ad-secondary-100);
|
|
24
|
+
--ad-melodix-low: var(--ad-primary);
|
|
25
|
+
}
|
|
26
|
+
.ad-melodix-text[data-glow] {
|
|
27
|
+
filter: drop-shadow(0 0 0.05em rgb(from var(--ad-melodix-glow) r g b / 0.85)) drop-shadow(0 0 0.25em rgb(from var(--ad-melodix-glow) r g b / 0.4));
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ElementType, type ReactElement } from "react";
|
|
2
|
+
import { type CommonProps } from "../../../core/base";
|
|
3
|
+
export interface RevealProps extends CommonProps {
|
|
4
|
+
as?: ElementType;
|
|
5
|
+
/** How children arrive. */
|
|
6
|
+
effect?: "rise" | "fade" | "zoom" | "blur";
|
|
7
|
+
/** Delay between consecutive children, ms. */
|
|
8
|
+
stagger?: number;
|
|
9
|
+
/** Play again every time the block re-enters the viewport. */
|
|
10
|
+
repeat?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Children arrive one after another when the block scrolls into view. */
|
|
13
|
+
export declare function Reveal({ as, effect, stagger, repeat, style, children, ...p }: RevealProps): ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* Styles owned by Reveal. */
|
|
2
|
+
.ad-reveal {
|
|
3
|
+
display: grid;
|
|
4
|
+
gap: var(--ad-space-3);
|
|
5
|
+
}
|
|
6
|
+
.ad-reveal > * {
|
|
7
|
+
transition:
|
|
8
|
+
opacity 0.6s ease-out,
|
|
9
|
+
transform 0.7s cubic-bezier(0.2, 0.9, 0.3, 1.15),
|
|
10
|
+
filter 0.6s ease-out;
|
|
11
|
+
transition-delay: calc(var(--ad-reveal-i, 0) * var(--ad-reveal-stagger));
|
|
12
|
+
}
|
|
13
|
+
.ad-reveal:not([data-shown]) > * {
|
|
14
|
+
opacity: 0;
|
|
15
|
+
}
|
|
16
|
+
.ad-reveal[data-effect="rise"]:not([data-shown]) > * {
|
|
17
|
+
transform: translateY(1.5rem);
|
|
18
|
+
}
|
|
19
|
+
.ad-reveal[data-effect="zoom"]:not([data-shown]) > * {
|
|
20
|
+
transform: scale(0.85);
|
|
21
|
+
}
|
|
22
|
+
.ad-reveal[data-effect="blur"]:not([data-shown]) > * {
|
|
23
|
+
filter: blur(0.75rem);
|
|
24
|
+
transform: scale(1.05);
|
|
25
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type CommonProps } from "../../../core/base";
|
|
2
|
+
export interface ShimmerProps extends CommonProps {
|
|
3
|
+
/** Text lines to imitate. */
|
|
4
|
+
lines?: number;
|
|
5
|
+
/** Add a round placeholder, e.g. for an avatar. */
|
|
6
|
+
circle?: boolean;
|
|
7
|
+
label?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Loading placeholder: the shape of the coming content with a light running over it. */
|
|
10
|
+
export declare function Shimmer({ lines, circle, label, ...p }: ShimmerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* Styles owned by Shimmer. */
|
|
2
|
+
.ad-shimmer {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--ad-space-3);
|
|
6
|
+
min-width: 0;
|
|
7
|
+
}
|
|
8
|
+
.ad-shimmer-lines {
|
|
9
|
+
display: grid;
|
|
10
|
+
gap: 0.6rem;
|
|
11
|
+
flex: 1;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
}
|
|
14
|
+
.ad-shimmer i {
|
|
15
|
+
position: relative;
|
|
16
|
+
display: block;
|
|
17
|
+
height: 0.75rem;
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
border-radius: 999rem;
|
|
20
|
+
background: #ffffff10;
|
|
21
|
+
}
|
|
22
|
+
/* The sweep: a light 60% as wide as the line, slid across it on its own layer (no repaint). */
|
|
23
|
+
.ad-shimmer i::after {
|
|
24
|
+
content: "";
|
|
25
|
+
position: absolute;
|
|
26
|
+
inset: 0;
|
|
27
|
+
width: 60%;
|
|
28
|
+
background: linear-gradient(
|
|
29
|
+
100deg,
|
|
30
|
+
transparent 30%,
|
|
31
|
+
rgb(from var(--ad-secondary) r g b / 0.2) 50%,
|
|
32
|
+
transparent 70%
|
|
33
|
+
);
|
|
34
|
+
transform: translateX(-100%);
|
|
35
|
+
animation: ad-shimmer-run 1.6s ease-in-out infinite;
|
|
36
|
+
will-change: transform;
|
|
37
|
+
}
|
|
38
|
+
.ad-shimmer-circle {
|
|
39
|
+
flex: none;
|
|
40
|
+
width: 2.75rem !important;
|
|
41
|
+
height: 2.75rem !important;
|
|
42
|
+
}
|
|
43
|
+
@keyframes ad-shimmer-run {
|
|
44
|
+
to {
|
|
45
|
+
/* From 60% of the line left of it to just past its right edge, as the old background ran. */
|
|
46
|
+
transform: translateX(166.667%);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CommonProps } from "../../../core/base";
|
|
2
|
+
export interface SparklesProps extends CommonProps {
|
|
3
|
+
/** Number of sparks. */
|
|
4
|
+
count?: number;
|
|
5
|
+
/** Spark colour; defaults to a warm white. */
|
|
6
|
+
color?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Twinkling four-point stars scattered around the content. */
|
|
9
|
+
export declare function Sparkles({ count, color, style, children, ...p }: SparklesProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Styles owned by Sparkles. */
|
|
2
|
+
.ad-sparkles {
|
|
3
|
+
--ad-sparkle: var(--ad-neutral-200);
|
|
4
|
+
position: relative;
|
|
5
|
+
contain: layout;
|
|
6
|
+
display: inline-block;
|
|
7
|
+
}
|
|
8
|
+
.ad-sparkle {
|
|
9
|
+
position: absolute;
|
|
10
|
+
aspect-ratio: 1;
|
|
11
|
+
translate: -50% -50%;
|
|
12
|
+
fill: var(--ad-sparkle);
|
|
13
|
+
filter: drop-shadow(0 0 0.25em var(--ad-primary));
|
|
14
|
+
pointer-events: none;
|
|
15
|
+
scale: 0;
|
|
16
|
+
animation: ad-sparkle-twinkle 2.4s ease-in-out infinite;
|
|
17
|
+
}
|
|
18
|
+
@keyframes ad-sparkle-twinkle {
|
|
19
|
+
0%,
|
|
20
|
+
100% {
|
|
21
|
+
scale: 0;
|
|
22
|
+
rotate: 0deg;
|
|
23
|
+
}
|
|
24
|
+
50% {
|
|
25
|
+
scale: 1;
|
|
26
|
+
rotate: 90deg;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ElementType } from "react";
|
|
2
|
+
import { type CommonProps } from "../../../core/base";
|
|
3
|
+
export interface SpotlightProps extends CommonProps {
|
|
4
|
+
as?: ElementType;
|
|
5
|
+
/** Light colour; defaults to the theme accent. */
|
|
6
|
+
color?: string;
|
|
7
|
+
/** Radius of the light circle, any CSS length. */
|
|
8
|
+
radius?: string;
|
|
9
|
+
}
|
|
10
|
+
/** A light that follows the pointer across the surface and lights the edge nearest to it. */
|
|
11
|
+
export declare function Spotlight({ as, color, radius, style, children, ...p }: SpotlightProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* Styles owned by Spotlight. */
|
|
2
|
+
.ad-spotlight {
|
|
3
|
+
--ad-spot-color: var(--ad-red);
|
|
4
|
+
--ad-spot-r: 18rem;
|
|
5
|
+
position: relative;
|
|
6
|
+
isolation: isolate;
|
|
7
|
+
border-radius: var(--ad-radius);
|
|
8
|
+
}
|
|
9
|
+
.ad-spotlight::before,
|
|
10
|
+
.ad-spotlight::after {
|
|
11
|
+
content: "";
|
|
12
|
+
position: absolute;
|
|
13
|
+
inset: 0;
|
|
14
|
+
border-radius: inherit;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transition: opacity 0.35s;
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
}
|
|
19
|
+
/* Glow over the surface. */
|
|
20
|
+
.ad-spotlight::before {
|
|
21
|
+
z-index: 1;
|
|
22
|
+
background: radial-gradient(
|
|
23
|
+
var(--ad-spot-r) circle at var(--ad-spot-x, 50%) var(--ad-spot-y, 50%),
|
|
24
|
+
color-mix(in srgb, var(--ad-spot-color) 18%, transparent),
|
|
25
|
+
transparent 65%
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
/* Edge that lights up near the pointer. */
|
|
29
|
+
.ad-spotlight::after {
|
|
30
|
+
z-index: 2;
|
|
31
|
+
padding: 0.0625rem;
|
|
32
|
+
background: radial-gradient(
|
|
33
|
+
calc(var(--ad-spot-r) * 0.6) circle at var(--ad-spot-x, 50%)
|
|
34
|
+
var(--ad-spot-y, 50%),
|
|
35
|
+
color-mix(in srgb, var(--ad-spot-color) 90%, #fff),
|
|
36
|
+
transparent 70%
|
|
37
|
+
);
|
|
38
|
+
mask:
|
|
39
|
+
linear-gradient(#000 0 0) content-box exclude,
|
|
40
|
+
linear-gradient(#000 0 0);
|
|
41
|
+
}
|
|
42
|
+
.ad-spotlight:hover::before,
|
|
43
|
+
.ad-spotlight:hover::after {
|
|
44
|
+
opacity: 1;
|
|
45
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ElementType } from "react";
|
|
2
|
+
import { type CommonProps } from "../../../core/base";
|
|
3
|
+
export interface TiltProps extends CommonProps {
|
|
4
|
+
as?: ElementType;
|
|
5
|
+
/** Largest tilt in degrees. */
|
|
6
|
+
max?: number;
|
|
7
|
+
/** Show a glare that follows the pointer. */
|
|
8
|
+
glare?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** Leans toward the pointer in 3D, with a glossy glare, and springs back when left. */
|
|
11
|
+
export declare function Tilt({ as, max, glare, children, ...p }: TiltProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* Styles owned by Tilt: floats gently on its own, leans toward the pointer with depth and glare. */
|
|
2
|
+
.ad-tilt {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: block;
|
|
5
|
+
border-radius: var(--ad-radius);
|
|
6
|
+
perspective: 50rem;
|
|
7
|
+
transform-style: preserve-3d;
|
|
8
|
+
animation: ad-tilt-float 6s ease-in-out infinite;
|
|
9
|
+
}
|
|
10
|
+
.ad-tilt:hover {
|
|
11
|
+
animation-play-state: paused;
|
|
12
|
+
}
|
|
13
|
+
.ad-tilt > * {
|
|
14
|
+
transform: rotateX(var(--ad-tilt-x, 0deg)) rotateY(var(--ad-tilt-y, 0deg));
|
|
15
|
+
transform-style: preserve-3d;
|
|
16
|
+
transition:
|
|
17
|
+
transform 0.7s cubic-bezier(0.34, 1.45, 0.5, 1),
|
|
18
|
+
scale 0.5s cubic-bezier(0.34, 1.45, 0.5, 1),
|
|
19
|
+
box-shadow 0.4s;
|
|
20
|
+
will-change: transform;
|
|
21
|
+
}
|
|
22
|
+
.ad-tilt:hover > * {
|
|
23
|
+
scale: 1.03;
|
|
24
|
+
transition-duration: 0.12s, 0.5s, 0.4s;
|
|
25
|
+
box-shadow:
|
|
26
|
+
0 1.4rem 2.6rem #000c,
|
|
27
|
+
0 0 1.6rem rgb(from var(--ad-primary) r g b / 0.2);
|
|
28
|
+
}
|
|
29
|
+
.ad-tilt[data-glare]::after {
|
|
30
|
+
content: "";
|
|
31
|
+
position: absolute;
|
|
32
|
+
inset: 0;
|
|
33
|
+
z-index: 3;
|
|
34
|
+
border-radius: inherit;
|
|
35
|
+
background: radial-gradient(
|
|
36
|
+
circle at var(--ad-glare-x, 50%) var(--ad-glare-y, 50%),
|
|
37
|
+
#ffffff44,
|
|
38
|
+
rgb(from var(--ad-secondary-200) r g b / 0.1) 30%,
|
|
39
|
+
transparent 60%
|
|
40
|
+
);
|
|
41
|
+
mix-blend-mode: screen;
|
|
42
|
+
opacity: 0;
|
|
43
|
+
transition: opacity 0.3s;
|
|
44
|
+
pointer-events: none;
|
|
45
|
+
}
|
|
46
|
+
.ad-tilt[data-glare]:hover::after {
|
|
47
|
+
opacity: 1;
|
|
48
|
+
}
|
|
49
|
+
.ad-tilt[data-ad-motion="off"],
|
|
50
|
+
.ad-tilt[data-ad-motion="off"] > * {
|
|
51
|
+
animation: none;
|
|
52
|
+
transform: none;
|
|
53
|
+
translate: none;
|
|
54
|
+
scale: none;
|
|
55
|
+
will-change: auto;
|
|
56
|
+
}
|
|
57
|
+
@keyframes ad-tilt-float {
|
|
58
|
+
0%,
|
|
59
|
+
100% {
|
|
60
|
+
transform: perspective(50rem) rotateX(3deg) rotateY(-4deg);
|
|
61
|
+
translate: 0 0;
|
|
62
|
+
}
|
|
63
|
+
50% {
|
|
64
|
+
transform: perspective(50rem) rotateX(-3deg) rotateY(4deg);
|
|
65
|
+
translate: 0 -0.35rem;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* Styles owned by Badge: a chamfered neon tag; a light sweep crosses it now and then. */
|
|
2
|
+
.ad-badge:not([data-ad-tone]) {
|
|
3
|
+
--ad-tone: var(--ad-pink);
|
|
4
|
+
}
|
|
5
|
+
.ad-badge {
|
|
6
|
+
--ad-badge-cut: 0.3rem;
|
|
7
|
+
position: relative;
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
align-items: center;
|
|
12
|
+
gap: 0.4em;
|
|
13
|
+
padding: 0.18rem 0.6rem;
|
|
14
|
+
font-size: 0.6875rem;
|
|
15
|
+
line-height: 1.1rem;
|
|
16
|
+
font-weight: 700;
|
|
17
|
+
letter-spacing: 0.02em;
|
|
18
|
+
white-space: normal;
|
|
19
|
+
overflow-wrap: anywhere;
|
|
20
|
+
color: color-mix(in srgb, var(--ad-tone) 25%, var(--ad-text));
|
|
21
|
+
clip-path: polygon(
|
|
22
|
+
var(--ad-badge-cut) 0,
|
|
23
|
+
100% 0,
|
|
24
|
+
100% calc(100% - var(--ad-badge-cut)),
|
|
25
|
+
calc(100% - var(--ad-badge-cut)) 100%,
|
|
26
|
+
0 100%,
|
|
27
|
+
0 var(--ad-badge-cut)
|
|
28
|
+
);
|
|
29
|
+
background: linear-gradient(
|
|
30
|
+
180deg,
|
|
31
|
+
color-mix(in srgb, var(--ad-tone) 30%, var(--ad-neutral-900)),
|
|
32
|
+
color-mix(in srgb, var(--ad-tone) 14%, var(--ad-neutral-900))
|
|
33
|
+
);
|
|
34
|
+
box-shadow:
|
|
35
|
+
inset 0 0 0 0.0625rem color-mix(in srgb, var(--ad-tone) 55%, transparent),
|
|
36
|
+
inset 0 0.0625rem 0 #ffffff26;
|
|
37
|
+
}
|
|
38
|
+
/* The light sweep: a slanted glint that slides across now and then (moved, never repainted). */
|
|
39
|
+
.ad-badge::after {
|
|
40
|
+
content: "";
|
|
41
|
+
position: absolute;
|
|
42
|
+
inset: 0;
|
|
43
|
+
background: linear-gradient(105deg, transparent 40%, #ffffff40 50%, transparent 60%);
|
|
44
|
+
transform: translateX(-100%);
|
|
45
|
+
animation: ad-badge-sweep 6s ease-in-out infinite;
|
|
46
|
+
pointer-events: none;
|
|
47
|
+
}
|
|
48
|
+
/* Sizes scale the type, padding, chamfer and dot together. */
|
|
49
|
+
.ad-badge[data-ad-size="xs"] {
|
|
50
|
+
--ad-badge-cut: 0.2rem;
|
|
51
|
+
padding: 0.05rem 0.4rem;
|
|
52
|
+
font-size: 0.5625rem;
|
|
53
|
+
line-height: 0.9rem;
|
|
54
|
+
}
|
|
55
|
+
.ad-badge[data-ad-size="sm"] {
|
|
56
|
+
--ad-badge-cut: 0.25rem;
|
|
57
|
+
padding: 0.12rem 0.5rem;
|
|
58
|
+
font-size: 0.625rem;
|
|
59
|
+
line-height: 1rem;
|
|
60
|
+
}
|
|
61
|
+
.ad-badge[data-ad-size="lg"] {
|
|
62
|
+
--ad-badge-cut: 0.4rem;
|
|
63
|
+
padding: 0.3rem 0.85rem;
|
|
64
|
+
font-size: 0.8125rem;
|
|
65
|
+
line-height: 1.35rem;
|
|
66
|
+
}
|
|
67
|
+
.ad-badge-dot {
|
|
68
|
+
width: 0.58em;
|
|
69
|
+
height: 0.58em;
|
|
70
|
+
border-radius: 50%;
|
|
71
|
+
background: var(--ad-tone);
|
|
72
|
+
box-shadow: 0 0 0.35rem var(--ad-tone);
|
|
73
|
+
flex: none;
|
|
74
|
+
}
|
|
75
|
+
.ad-badge:is([data-ad-tone="success"], [data-ad-tone="processing"]) .ad-badge-dot {
|
|
76
|
+
animation: ad-badge-pulse 1.8s ease-in-out infinite;
|
|
77
|
+
}
|
|
78
|
+
@keyframes ad-badge-sweep {
|
|
79
|
+
0%,
|
|
80
|
+
70% {
|
|
81
|
+
transform: translateX(-100%);
|
|
82
|
+
}
|
|
83
|
+
100% {
|
|
84
|
+
transform: translateX(100%);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
@keyframes ad-badge-pulse {
|
|
88
|
+
50% {
|
|
89
|
+
opacity: 0.35;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* Styles owned by CollapsibleSection: the body unfolds smoothly, the chevron turns, content rises in. */
|
|
2
|
+
.ad-collapsible-section {
|
|
3
|
+
border-radius: 0.9375rem;
|
|
4
|
+
interpolate-size: allow-keywords;
|
|
5
|
+
transition: box-shadow 0.35s;
|
|
6
|
+
}
|
|
7
|
+
.ad-collapsible-section[open] {
|
|
8
|
+
box-shadow: 0 0 1.2rem rgb(from var(--ad-primary) r g b / 0.13);
|
|
9
|
+
}
|
|
10
|
+
.ad-collapsible-section summary {
|
|
11
|
+
position: relative;
|
|
12
|
+
padding: 1rem 1.25rem;
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: 0.875rem;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
list-style: none;
|
|
18
|
+
font-size: 1rem;
|
|
19
|
+
font-weight: 600;
|
|
20
|
+
border-radius: inherit;
|
|
21
|
+
transition:
|
|
22
|
+
background 0.25s,
|
|
23
|
+
color 0.25s;
|
|
24
|
+
}
|
|
25
|
+
.ad-collapsible-section summary::-webkit-details-marker {
|
|
26
|
+
display: none;
|
|
27
|
+
}
|
|
28
|
+
.ad-collapsible-section summary:hover {
|
|
29
|
+
background: #ffffff08;
|
|
30
|
+
}
|
|
31
|
+
.ad-collapse-heading {
|
|
32
|
+
display: grid;
|
|
33
|
+
flex: 1;
|
|
34
|
+
gap: 0.15rem;
|
|
35
|
+
min-width: 0;
|
|
36
|
+
}
|
|
37
|
+
.ad-collapse-heading > small {
|
|
38
|
+
color: var(--ad-muted);
|
|
39
|
+
font-size: var(--ad-font-size-caption);
|
|
40
|
+
font-weight: 400;
|
|
41
|
+
}
|
|
42
|
+
.ad-collapsible-section summary > .ad-icon:first-child {
|
|
43
|
+
transition:
|
|
44
|
+
transform 0.4s cubic-bezier(0.34, 1.56, 0.5, 1),
|
|
45
|
+
color 0.25s;
|
|
46
|
+
}
|
|
47
|
+
.ad-collapsible-section summary:hover > .ad-icon:first-child,
|
|
48
|
+
.ad-collapsible-section[open] summary > .ad-icon:first-child {
|
|
49
|
+
transform: scale(1.12) rotate(-8deg);
|
|
50
|
+
color: var(--ad-pink);
|
|
51
|
+
}
|
|
52
|
+
/* Smooth height where supported (::details-content); elsewhere it opens instantly. */
|
|
53
|
+
.ad-collapsible-section::details-content {
|
|
54
|
+
block-size: 0;
|
|
55
|
+
overflow: hidden;
|
|
56
|
+
transition:
|
|
57
|
+
block-size 0.45s cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
58
|
+
content-visibility 0.45s allow-discrete;
|
|
59
|
+
}
|
|
60
|
+
.ad-collapsible-section[open]::details-content {
|
|
61
|
+
block-size: auto;
|
|
62
|
+
}
|
|
63
|
+
.ad-collapse-content {
|
|
64
|
+
padding: 0 1.25rem 1.25rem;
|
|
65
|
+
font-size: 0.8125rem;
|
|
66
|
+
color: var(--ad-muted);
|
|
67
|
+
}
|
|
68
|
+
.ad-collapsible-section[open] .ad-collapse-content {
|
|
69
|
+
animation: ad-collapse-in 0.5s 0.05s cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
70
|
+
}
|
|
71
|
+
@keyframes ad-collapse-in {
|
|
72
|
+
from {
|
|
73
|
+
opacity: 0;
|
|
74
|
+
transform: translateY(-0.5rem);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DataTableColumn, DataTableFilter, DataTableProps, DataTableRow } from "../shared";
|
|
2
|
+
/** The filter editor in a column header's popover. */
|
|
3
|
+
export declare function FilterEditor({ kind, options, filter, onChange, }: {
|
|
4
|
+
kind: "text" | "values" | "range";
|
|
5
|
+
options: string[];
|
|
6
|
+
filter?: DataTableFilter;
|
|
7
|
+
onChange: (filter: DataTableFilter | undefined) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
/** Export the filtered, sorted rows with the same columns the reader can see. */
|
|
10
|
+
export declare const dataTableCsv: <T extends DataTableRow>(columns: DataTableColumn<T>[], rows: T[]) => string;
|
|
11
|
+
/**
|
|
12
|
+
* A data table: sortable columns, row selection with "select all", search, pages, a sticky
|
|
13
|
+
* header when it scrolls, loading and empty states. Plain `columns: string[]` with array
|
|
14
|
+
* rows still works.
|
|
15
|
+
*/
|
|
16
|
+
export declare function DataTable<T extends DataTableRow = DataTableRow>({ columns: providedColumns, rows, caption, rowKey, sort: controlledSort, defaultSort, onSortChange, sorting: controlledSorting, defaultSorting, onSortingChange, selectable, selected: controlledSelection, defaultSelected, onSelectionChange, searchable, query: controlledQuery, defaultQuery, onQueryChange, filterable, filters: controlledFilters, defaultFilters, onFiltersChange, groupable, groupBy: controlledGroupBy, defaultGroupBy, onGroupByChange, pageSize, pageSizeOptions, pagination: controlledPagination, defaultPagination, onPaginationChange, manualFiltering, manualSorting, manualPagination, rowCount, columnOrder: controlledColumnOrder, defaultColumnOrder, onColumnOrderChange, columnPinning: controlledColumnPinning, defaultColumnPinning, onColumnPinningChange, resizableColumns, maxHeight, virtualize, estimatedRowHeight, overscan, renderRowDetails, expandedRows: controlledExpandedRows, defaultExpandedRows, onExpandedRowsChange, renderRowActions, rowActionsWidth, rowNumbers, dense: controlledDense, densityToggle, onDenseChange, striped, loading, empty: providedEmpty, onRowClick, ...p }: DataTableProps<T>): import("react").JSX.Element;
|