@neo-ui-kit/react 1.0.0 → 1.0.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.
Files changed (55) hide show
  1. package/README.md +12 -2
  2. package/dist/components/artwork/DatabaseArt/styles.css +58 -58
  3. package/dist/components/artwork/Landscape/styles.css +79 -79
  4. package/dist/components/artwork/Planet/styles.css +52 -52
  5. package/dist/components/artwork/QuantumField/UPSTREAM-LICENSE.txt +21 -21
  6. package/dist/components/artwork/ServerArt/styles.css +43 -43
  7. package/dist/components/artwork/Spectrum/styles.css +35 -35
  8. package/dist/components/controls/Autocomplete/styles.css +1 -1
  9. package/dist/components/controls/Checkbox/styles.css +58 -58
  10. package/dist/components/controls/InputBase/styles.css +374 -374
  11. package/dist/components/controls/Link/styles.css +50 -50
  12. package/dist/components/controls/SegmentedControl/styles.css +9 -9
  13. package/dist/components/controls/Switch/styles.css +54 -54
  14. package/dist/components/controls/Tabs/styles.css +239 -239
  15. package/dist/components/controls/ToggleButton/styles.css +49 -49
  16. package/dist/components/controls/shared.css +694 -694
  17. package/dist/components/editor/shared.css +1 -1
  18. package/dist/components/effects/Beacon/styles.css +38 -38
  19. package/dist/components/effects/Equalizer/styles.css +34 -34
  20. package/dist/components/effects/GlowText/styles.css +56 -56
  21. package/dist/components/effects/Marquee/styles.css +46 -46
  22. package/dist/components/effects/Reveal/styles.css +25 -25
  23. package/dist/components/effects/Shimmer/styles.css +48 -48
  24. package/dist/components/effects/Sparkles/styles.css +28 -28
  25. package/dist/components/effects/Spotlight/styles.css +45 -45
  26. package/dist/components/effects/Tilt/styles.css +67 -67
  27. package/dist/components/feedback/CollapsibleSection/styles.css +76 -76
  28. package/dist/components/feedback/DataTable/styles.css +522 -522
  29. package/dist/components/feedback/EmptyState/styles.css +80 -80
  30. package/dist/components/feedback/KeyValueList/styles.css +51 -51
  31. package/dist/components/feedback/MenuItem/styles.css +71 -71
  32. package/dist/components/feedback/Popover/styles.css +44 -44
  33. package/dist/components/feedback/Steps/styles.css +152 -152
  34. package/dist/components/feedback/Toast/styles.css +89 -89
  35. package/dist/components/forms/FormFields/styles.css +21 -21
  36. package/dist/components/foundation/ThemeProvider/styles.css +31 -31
  37. package/dist/components/layout/Avatar/styles.css +151 -151
  38. package/dist/components/layout/Card/styles.css +37 -37
  39. package/dist/components/layout/DialogActions/styles.css +31 -31
  40. package/dist/components/layout/DialogBody/styles.css +17 -17
  41. package/dist/components/layout/Illustration/styles.css +104 -104
  42. package/dist/components/layout/ScrollArea/styles.css +61 -61
  43. package/dist/components/layout/TabPanel/styles.css +16 -16
  44. package/dist/components/layout/shared.css +65 -65
  45. package/dist/components/media/AudioPlayer/styles.css +86 -86
  46. package/dist/components/media/LevelMeter/styles.css +30 -30
  47. package/dist/components/media/MelodyRoll/styles.css +196 -196
  48. package/dist/components/media/RotaryKnob/styles.css +319 -319
  49. package/dist/components/media/Sparkline/styles.css +69 -69
  50. package/dist/components/media/WaveDecoration/styles.css +1 -1
  51. package/dist/components/media/shared.css +7 -7
  52. package/dist/fonts/melodix.css +123 -123
  53. package/dist/index.js +2101 -2101
  54. package/dist/theme/base.css +210 -210
  55. package/package.json +1 -1
@@ -1 +1 @@
1
- /* Shared only by sibling components. */
1
+ /* Shared only by sibling components. */
@@ -1,38 +1,38 @@
1
- /* Styles owned by Beacon. */
2
- .ad-beacon {
3
- --ad-beacon: var(--ad-red);
4
- position: relative;
5
- contain: layout;
6
- display: inline-grid;
7
- place-items: center;
8
- isolation: isolate;
9
- }
10
- .ad-beacon > i {
11
- position: absolute;
12
- z-index: -1;
13
- inset: 0;
14
- border-radius: 50%;
15
- border: 0.125rem solid var(--ad-beacon);
16
- box-shadow: 0 0 1rem var(--ad-beacon);
17
- opacity: 0;
18
- pointer-events: none;
19
- }
20
- .ad-beacon[data-active] > i {
21
- animation: ad-beacon-ring 2.4s cubic-bezier(0.2, 0.6, 0.3, 1) infinite;
22
- }
23
- .ad-beacon[data-active] > i:nth-child(2) {
24
- animation-delay: 0.8s;
25
- }
26
- .ad-beacon[data-active] > i:nth-child(3) {
27
- animation-delay: 1.6s;
28
- }
29
- @keyframes ad-beacon-ring {
30
- from {
31
- opacity: 0.85;
32
- scale: 0.9;
33
- }
34
- to {
35
- opacity: 0;
36
- scale: 2.2;
37
- }
38
- }
1
+ /* Styles owned by Beacon. */
2
+ .ad-beacon {
3
+ --ad-beacon: var(--ad-red);
4
+ position: relative;
5
+ contain: layout;
6
+ display: inline-grid;
7
+ place-items: center;
8
+ isolation: isolate;
9
+ }
10
+ .ad-beacon > i {
11
+ position: absolute;
12
+ z-index: -1;
13
+ inset: 0;
14
+ border-radius: 50%;
15
+ border: 0.125rem solid var(--ad-beacon);
16
+ box-shadow: 0 0 1rem var(--ad-beacon);
17
+ opacity: 0;
18
+ pointer-events: none;
19
+ }
20
+ .ad-beacon[data-active] > i {
21
+ animation: ad-beacon-ring 2.4s cubic-bezier(0.2, 0.6, 0.3, 1) infinite;
22
+ }
23
+ .ad-beacon[data-active] > i:nth-child(2) {
24
+ animation-delay: 0.8s;
25
+ }
26
+ .ad-beacon[data-active] > i:nth-child(3) {
27
+ animation-delay: 1.6s;
28
+ }
29
+ @keyframes ad-beacon-ring {
30
+ from {
31
+ opacity: 0.85;
32
+ scale: 0.9;
33
+ }
34
+ to {
35
+ opacity: 0;
36
+ scale: 2.2;
37
+ }
38
+ }
@@ -1,37 +1,37 @@
1
- /* Styles owned by Equalizer. Size follows the font size. */
2
- .ad-equalizer {
3
- display: inline-flex;
4
- align-items: flex-end;
5
- gap: 0.15em;
6
- height: 1.25em;
7
- }
8
- .ad-equalizer > i {
9
- width: 0.22em;
10
- height: 100%;
11
- border-radius: 999rem;
12
- background: linear-gradient(0deg, var(--ad-primary), var(--ad-secondary-100));
13
- box-shadow: 0 0 0.35em rgb(from var(--ad-primary) r g b / 0.53);
14
- transform-origin: bottom;
15
- scale: 1 0.25;
16
- transition: scale 0.3s;
17
- }
18
- .ad-equalizer[data-playing] > i {
19
- animation: ad-eq-bounce 0.8s ease-in-out infinite alternate;
20
- }
21
- @keyframes ad-eq-bounce {
22
- 0% {
23
- scale: 1 0.2;
24
- }
25
- 40% {
26
- scale: 1 0.9;
27
- }
28
- 70% {
29
- scale: 1 0.45;
30
- }
31
- 100% {
32
- scale: 1 1;
33
- }
34
- }
1
+ /* Styles owned by Equalizer. Size follows the font size. */
2
+ .ad-equalizer {
3
+ display: inline-flex;
4
+ align-items: flex-end;
5
+ gap: 0.15em;
6
+ height: 1.25em;
7
+ }
8
+ .ad-equalizer > i {
9
+ width: 0.22em;
10
+ height: 100%;
11
+ border-radius: 999rem;
12
+ background: linear-gradient(0deg, var(--ad-primary), var(--ad-secondary-100));
13
+ box-shadow: 0 0 0.35em rgb(from var(--ad-primary) r g b / 0.53);
14
+ transform-origin: bottom;
15
+ scale: 1 0.25;
16
+ transition: scale 0.3s;
17
+ }
18
+ .ad-equalizer[data-playing] > i {
19
+ animation: ad-eq-bounce 0.8s ease-in-out infinite alternate;
20
+ }
21
+ @keyframes ad-eq-bounce {
22
+ 0% {
23
+ scale: 1 0.2;
24
+ }
25
+ 40% {
26
+ scale: 1 0.9;
27
+ }
28
+ 70% {
29
+ scale: 1 0.45;
30
+ }
31
+ 100% {
32
+ scale: 1 1;
33
+ }
34
+ }
35
35
  /* Driven by a live spectrum: the bars follow it closely instead of bouncing. */
36
36
  .ad-equalizer[data-live] > i {
37
37
  transition: scale 0.08s linear;
@@ -1,56 +1,56 @@
1
- /* Styles owned by GlowText. */
2
- .ad-glow-text {
3
- display: inline-block;
4
- margin: 0;
5
- font-weight: 800;
6
- letter-spacing: -0.01em;
7
- color: transparent;
8
- background: linear-gradient(
9
- 100deg,
10
- var(--ad-primary),
11
- var(--ad-secondary-200) 30%,
12
- #fff 45%,
13
- var(--ad-secondary-200) 60%,
14
- var(--ad-primary) 80%,
15
- var(--ad-primary)
16
- )
17
- 0 0 / 250% 100%;
18
- background-clip: text;
19
- -webkit-background-clip: text;
20
- position: relative;
21
- isolation: isolate;
22
- animation: ad-glow-flow 5s linear infinite;
23
- }
24
- .ad-glow-text-halo {
25
- position: absolute;
26
- inset: 0;
27
- z-index: -1;
28
- color: transparent;
29
- text-shadow: 0 0 0.35em rgb(from var(--ad-primary) r g b / 0.53), 0 0 1em rgb(from var(--ad-primary) r g b / 0.27);
30
- pointer-events: none;
31
- user-select: none;
32
- will-change: transform;
33
- }
34
- .ad-glow-text[data-flicker] {
35
- animation:
36
- ad-glow-flow 5s linear infinite,
37
- ad-glow-flicker 4.5s steps(1, end) infinite;
38
- }
39
- @keyframes ad-glow-flow {
40
- to {
41
- background-position: -250% 0;
42
- }
43
- }
44
- @keyframes ad-glow-flicker {
45
- 0%,
46
- 41%,
47
- 44%,
48
- 47%,
49
- 100% {
50
- opacity: 1;
51
- }
52
- 42%,
53
- 46% {
54
- opacity: 0.35;
55
- }
56
- }
1
+ /* Styles owned by GlowText. */
2
+ .ad-glow-text {
3
+ display: inline-block;
4
+ margin: 0;
5
+ font-weight: 800;
6
+ letter-spacing: -0.01em;
7
+ color: transparent;
8
+ background: linear-gradient(
9
+ 100deg,
10
+ var(--ad-primary),
11
+ var(--ad-secondary-200) 30%,
12
+ #fff 45%,
13
+ var(--ad-secondary-200) 60%,
14
+ var(--ad-primary) 80%,
15
+ var(--ad-primary)
16
+ )
17
+ 0 0 / 250% 100%;
18
+ background-clip: text;
19
+ -webkit-background-clip: text;
20
+ position: relative;
21
+ isolation: isolate;
22
+ animation: ad-glow-flow 5s linear infinite;
23
+ }
24
+ .ad-glow-text-halo {
25
+ position: absolute;
26
+ inset: 0;
27
+ z-index: -1;
28
+ color: transparent;
29
+ text-shadow: 0 0 0.35em rgb(from var(--ad-primary) r g b / 0.53), 0 0 1em rgb(from var(--ad-primary) r g b / 0.27);
30
+ pointer-events: none;
31
+ user-select: none;
32
+ will-change: transform;
33
+ }
34
+ .ad-glow-text[data-flicker] {
35
+ animation:
36
+ ad-glow-flow 5s linear infinite,
37
+ ad-glow-flicker 4.5s steps(1, end) infinite;
38
+ }
39
+ @keyframes ad-glow-flow {
40
+ to {
41
+ background-position: -250% 0;
42
+ }
43
+ }
44
+ @keyframes ad-glow-flicker {
45
+ 0%,
46
+ 41%,
47
+ 44%,
48
+ 47%,
49
+ 100% {
50
+ opacity: 1;
51
+ }
52
+ 42%,
53
+ 46% {
54
+ opacity: 0.35;
55
+ }
56
+ }
@@ -1,46 +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
- }
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
+ }
@@ -1,25 +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
- }
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
+ }
@@ -1,48 +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
- }
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
+ }
@@ -1,28 +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
- }
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
+ }
@@ -1,45 +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
- }
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
+ }