@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.
Files changed (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -2
  3. package/dist/artwork/icons.json.d.ts +2 -0
  4. package/dist/artwork/illustrations.json.d.ts +2 -0
  5. package/dist/chunks/chunk-347P6ZE4.js +104 -0
  6. package/dist/chunks/chunk-BJSFN52W.js +417 -0
  7. package/dist/chunks/chunk-FCOU3ODR.js +63 -0
  8. package/dist/chunks/chunk-JZ4GDTH5.js +87 -0
  9. package/dist/chunks/chunk-UGDRXR7P.js +3362 -0
  10. package/dist/chunks/chunk-VK6GHRLV.js +335 -0
  11. package/dist/chunks/chunk-YKCUOZ7V.js +777 -0
  12. package/dist/components/artwork/DatabaseArt/DatabaseArt.d.ts +6 -0
  13. package/dist/components/artwork/DatabaseArt/styles.css +58 -0
  14. package/dist/components/artwork/Landscape/Landscape.d.ts +7 -0
  15. package/dist/components/artwork/Landscape/styles.css +79 -0
  16. package/dist/components/artwork/NeonWaves/NeonWaves.d.ts +15 -0
  17. package/dist/components/artwork/NeonWaves/styles.css +48 -0
  18. package/dist/components/artwork/Planet/Planet.d.ts +4 -0
  19. package/dist/components/artwork/Planet/styles.css +52 -0
  20. package/dist/components/artwork/QuantumField/QuantumField.d.ts +42 -0
  21. package/dist/components/artwork/QuantumField/QuantumFieldExperience.d.ts +22 -0
  22. package/dist/components/artwork/QuantumField/UPSTREAM-LICENSE.txt +21 -0
  23. package/dist/components/artwork/QuantumField/audio.d.ts +15 -0
  24. package/dist/components/artwork/QuantumField/renderer.d.ts +24 -0
  25. package/dist/components/artwork/QuantumField/styles.css +77 -0
  26. package/dist/components/artwork/ServerArt/ServerArt.d.ts +8 -0
  27. package/dist/components/artwork/ServerArt/styles.css +43 -0
  28. package/dist/components/artwork/Spectrum/Spectrum.d.ts +7 -0
  29. package/dist/components/artwork/Spectrum/styles.css +35 -0
  30. package/dist/components/artwork/layers.d.ts +15 -0
  31. package/dist/components/artwork/useArtwork.d.ts +8 -0
  32. package/dist/components/controls/Autocomplete/Autocomplete.d.ts +2 -0
  33. package/dist/components/controls/Autocomplete/styles.css +1 -0
  34. package/dist/components/controls/Button/Button.d.ts +2 -0
  35. package/dist/components/controls/Button/styles.css +1 -0
  36. package/dist/components/controls/Checkbox/Checkbox.d.ts +2 -0
  37. package/dist/components/controls/Checkbox/styles.css +70 -0
  38. package/dist/components/controls/Chip/Chip.d.ts +21 -0
  39. package/dist/components/controls/Chip/styles.css +74 -0
  40. package/dist/components/controls/ChipField.d.ts +25 -0
  41. package/dist/components/controls/ColorPicker/ColorPicker.d.ts +16 -0
  42. package/dist/components/controls/ColorPicker/color.d.ts +9 -0
  43. package/dist/components/controls/ColorPicker/styles.css +103 -0
  44. package/dist/components/controls/DatePicker/DatePicker.d.ts +19 -0
  45. package/dist/components/controls/DatePicker/styles.css +69 -0
  46. package/dist/components/controls/FilePicker/FilePicker.d.ts +2 -0
  47. package/dist/components/controls/FilePicker/styles.css +149 -0
  48. package/dist/components/controls/IconButton/IconButton.d.ts +2 -0
  49. package/dist/components/controls/IconButton/styles.css +4 -0
  50. package/dist/components/controls/InputBase/InputBase.d.ts +21 -0
  51. package/dist/components/controls/InputBase/styles.css +379 -0
  52. package/dist/components/controls/Link/Link.d.ts +11 -0
  53. package/dist/components/controls/Link/styles.css +50 -0
  54. package/dist/components/controls/NumberField/NumberField.d.ts +2 -0
  55. package/dist/components/controls/NumberField/styles.css +1 -0
  56. package/dist/components/controls/PeoplePicker/PeoplePicker.d.ts +37 -0
  57. package/dist/components/controls/PeoplePicker/styles.css +7 -0
  58. package/dist/components/controls/SegmentedControl/SegmentedControl.d.ts +2 -0
  59. package/dist/components/controls/SegmentedControl/styles.css +9 -0
  60. package/dist/components/controls/Select/Select.d.ts +8 -0
  61. package/dist/components/controls/Select/styles.css +142 -0
  62. package/dist/components/controls/Slider/Slider.d.ts +3 -0
  63. package/dist/components/controls/Slider/styles.css +138 -0
  64. package/dist/components/controls/SplitButton/SplitButton.d.ts +2 -0
  65. package/dist/components/controls/SplitButton/styles.css +169 -0
  66. package/dist/components/controls/Switch/Switch.d.ts +2 -0
  67. package/dist/components/controls/Switch/styles.css +54 -0
  68. package/dist/components/controls/Tab/Tab.d.ts +2 -0
  69. package/dist/components/controls/Tab/styles.css +111 -0
  70. package/dist/components/controls/Tabs/Tabs.d.ts +2 -0
  71. package/dist/components/controls/Tabs/styles.css +239 -0
  72. package/dist/components/controls/TagInput/TagInput.d.ts +24 -0
  73. package/dist/components/controls/TagInput/styles.css +24 -0
  74. package/dist/components/controls/TextArea/TextArea.d.ts +2 -0
  75. package/dist/components/controls/TextArea/styles.css +15 -0
  76. package/dist/components/controls/TextField/TextField.d.ts +2 -0
  77. package/dist/components/controls/ThemePicker/ThemePicker.d.ts +24 -0
  78. package/dist/components/controls/ThemePicker/styles.css +128 -0
  79. package/dist/components/controls/ToggleButton/ToggleButton.d.ts +2 -0
  80. package/dist/components/controls/ToggleButton/styles.css +49 -0
  81. package/dist/components/controls/internal.d.ts +62 -0
  82. package/dist/components/controls/shared.css +694 -0
  83. package/dist/components/controls/shared.d.ts +204 -0
  84. package/dist/components/editor/PianoRoll/PianoRoll.d.ts +65 -0
  85. package/dist/components/editor/PianoRoll/styles.css +186 -0
  86. package/dist/components/editor/shared.css +1 -0
  87. package/dist/components/effects/AnimatedBorder/AnimatedBorder.d.ts +9 -0
  88. package/dist/components/effects/AnimatedBorder/styles.css +7 -0
  89. package/dist/components/effects/Beacon/Beacon.d.ts +9 -0
  90. package/dist/components/effects/Beacon/styles.css +38 -0
  91. package/dist/components/effects/Equalizer/Equalizer.d.ts +14 -0
  92. package/dist/components/effects/Equalizer/styles.css +38 -0
  93. package/dist/components/effects/GlowText/GlowText.d.ts +9 -0
  94. package/dist/components/effects/GlowText/styles.css +56 -0
  95. package/dist/components/effects/ImageShine/ImageShine.d.ts +13 -0
  96. package/dist/components/effects/ImageShine/styles.css +66 -0
  97. package/dist/components/effects/Marquee/Marquee.d.ts +9 -0
  98. package/dist/components/effects/Marquee/styles.css +46 -0
  99. package/dist/components/effects/MelodixText/MelodixText.d.ts +15 -0
  100. package/dist/components/effects/MelodixText/styles.css +28 -0
  101. package/dist/components/effects/Reveal/Reveal.d.ts +13 -0
  102. package/dist/components/effects/Reveal/styles.css +25 -0
  103. package/dist/components/effects/Shimmer/Shimmer.d.ts +10 -0
  104. package/dist/components/effects/Shimmer/styles.css +48 -0
  105. package/dist/components/effects/Sparkles/Sparkles.d.ts +9 -0
  106. package/dist/components/effects/Sparkles/styles.css +28 -0
  107. package/dist/components/effects/Spotlight/Spotlight.d.ts +11 -0
  108. package/dist/components/effects/Spotlight/styles.css +45 -0
  109. package/dist/components/effects/Tilt/Tilt.d.ts +11 -0
  110. package/dist/components/effects/Tilt/styles.css +67 -0
  111. package/dist/components/feedback/Badge/Badge.d.ts +3 -0
  112. package/dist/components/feedback/Badge/styles.css +91 -0
  113. package/dist/components/feedback/CollapsibleSection/CollapsibleSection.d.ts +2 -0
  114. package/dist/components/feedback/CollapsibleSection/styles.css +76 -0
  115. package/dist/components/feedback/DataTable/DataTable.d.ts +16 -0
  116. package/dist/components/feedback/DataTable/styles.css +522 -0
  117. package/dist/components/feedback/Dialog/Dialog.d.ts +2 -0
  118. package/dist/components/feedback/Dialog/styles.css +82 -0
  119. package/dist/components/feedback/EmptyState/EmptyState.d.ts +2 -0
  120. package/dist/components/feedback/EmptyState/styles.css +80 -0
  121. package/dist/components/feedback/KeyValueList/KeyValueList.d.ts +2 -0
  122. package/dist/components/feedback/KeyValueList/styles.css +51 -0
  123. package/dist/components/feedback/Menu/Menu.d.ts +2 -0
  124. package/dist/components/feedback/Menu/styles.css +123 -0
  125. package/dist/components/feedback/MenuItem/MenuItem.d.ts +2 -0
  126. package/dist/components/feedback/MenuItem/styles.css +71 -0
  127. package/dist/components/feedback/MessageBar/MessageBar.d.ts +2 -0
  128. package/dist/components/feedback/MessageBar/styles.css +116 -0
  129. package/dist/components/feedback/Popover/Popover.d.ts +2 -0
  130. package/dist/components/feedback/Popover/styles.css +44 -0
  131. package/dist/components/feedback/ProgressBar/ProgressBar.d.ts +2 -0
  132. package/dist/components/feedback/ProgressBar/styles.css +76 -0
  133. package/dist/components/feedback/SignalBars/SignalBars.d.ts +11 -0
  134. package/dist/components/feedback/SignalBars/styles.css +31 -0
  135. package/dist/components/feedback/StatusIndicator/StatusIndicator.d.ts +2 -0
  136. package/dist/components/feedback/StatusIndicator/styles.css +88 -0
  137. package/dist/components/feedback/Steps/Steps.d.ts +2 -0
  138. package/dist/components/feedback/Steps/styles.css +152 -0
  139. package/dist/components/feedback/Toast/Toast.d.ts +2 -0
  140. package/dist/components/feedback/Toast/styles.css +89 -0
  141. package/dist/components/feedback/Tooltip/Tooltip.d.ts +15 -0
  142. package/dist/components/feedback/Tooltip/styles.css +38 -0
  143. package/dist/components/feedback/shared.css +22 -0
  144. package/dist/components/feedback/shared.d.ts +231 -0
  145. package/dist/components/forms/Form/Form.d.ts +35 -0
  146. package/dist/components/forms/Form/styles.css +1 -0
  147. package/dist/components/forms/FormFields/FormFields.d.ts +20 -0
  148. package/dist/components/forms/FormFields/styles.css +72 -0
  149. package/dist/components/foundation/Loader/Loader.d.ts +30 -0
  150. package/dist/components/foundation/LoaderGenerator/LoaderGenerator.d.ts +38 -0
  151. package/dist/components/foundation/LoaderGenerator/styles.css +104 -0
  152. package/dist/components/foundation/ThemeEditor/ThemeEditor.d.ts +15 -0
  153. package/dist/components/foundation/ThemeEditor/styles.css +97 -0
  154. package/dist/components/foundation/ThemeEditor/themeConfig.d.ts +47 -0
  155. package/dist/components/foundation/ThemeProvider/ThemeProvider.d.ts +32 -0
  156. package/dist/components/foundation/ThemeProvider/styles.css +59 -0
  157. package/dist/components/foundation/Typography/Typography.d.ts +17 -0
  158. package/dist/components/foundation/Typography/styles.css +115 -0
  159. package/dist/components/layout/Avatar/Avatar.d.ts +2 -0
  160. package/dist/components/layout/Avatar/HostSeal.d.ts +5 -0
  161. package/dist/components/layout/Avatar/styles.css +166 -0
  162. package/dist/components/layout/BrandMark/BrandMark.d.ts +2 -0
  163. package/dist/components/layout/BrandMark/styles.css +39 -0
  164. package/dist/components/layout/ButtonGroup/ButtonGroup.d.ts +12 -0
  165. package/dist/components/layout/ButtonGroup/styles.css +36 -0
  166. package/dist/components/layout/Card/Card.d.ts +14 -0
  167. package/dist/components/layout/Card/styles.css +37 -0
  168. package/dist/components/layout/DialogActions/DialogActions.d.ts +12 -0
  169. package/dist/components/layout/DialogActions/styles.css +31 -0
  170. package/dist/components/layout/DialogBody/DialogBody.d.ts +12 -0
  171. package/dist/components/layout/DialogBody/styles.css +28 -0
  172. package/dist/components/layout/Divider/Divider.d.ts +2 -0
  173. package/dist/components/layout/Divider/styles.css +58 -0
  174. package/dist/components/layout/FloatingPanel/FloatingPanel.d.ts +15 -0
  175. package/dist/components/layout/FloatingPanel/styles.css +47 -0
  176. package/dist/components/layout/FloatingPanel/useFloatingPanel.d.ts +54 -0
  177. package/dist/components/layout/Grid/Grid.d.ts +24 -0
  178. package/dist/components/layout/Grid/styles.css +90 -0
  179. package/dist/components/layout/Header/Header.d.ts +2 -0
  180. package/dist/components/layout/Header/styles.css +42 -0
  181. package/dist/components/layout/Icon/Icon.d.ts +4 -0
  182. package/dist/components/layout/Icon/styles.css +62 -0
  183. package/dist/components/layout/Illustration/Illustration.d.ts +2 -0
  184. package/dist/components/layout/Illustration/styles.css +104 -0
  185. package/dist/components/layout/ScrollArea/ScrollArea.d.ts +2 -0
  186. package/dist/components/layout/ScrollArea/styles.css +61 -0
  187. package/dist/components/layout/Stack/Stack.d.ts +21 -0
  188. package/dist/components/layout/Stack/styles.css +53 -0
  189. package/dist/components/layout/StatTile/StatTile.d.ts +20 -0
  190. package/dist/components/layout/StatTile/styles.css +90 -0
  191. package/dist/components/layout/TabPanel/TabPanel.d.ts +2 -0
  192. package/dist/components/layout/TabPanel/styles.css +16 -0
  193. package/dist/components/layout/Text/Text.d.ts +2 -0
  194. package/dist/components/layout/Text/styles.css +29 -0
  195. package/dist/components/layout/Toolbar/Toolbar.d.ts +12 -0
  196. package/dist/components/layout/Toolbar/styles.css +7 -0
  197. package/dist/components/layout/shared.css +79 -0
  198. package/dist/components/layout/shared.d.ts +64 -0
  199. package/dist/components/media/AudioPlayer/AudioPlayer.d.ts +2 -0
  200. package/dist/components/media/AudioPlayer/styles.css +86 -0
  201. package/dist/components/media/KaraokeLyrics/KaraokeLyrics.d.ts +25 -0
  202. package/dist/components/media/KaraokeLyrics/styles.css +56 -0
  203. package/dist/components/media/LevelMeter/LevelMeter.d.ts +7 -0
  204. package/dist/components/media/LevelMeter/styles.css +30 -0
  205. package/dist/components/media/MediaCard/MediaCard.d.ts +24 -0
  206. package/dist/components/media/MediaCard/styles.css +108 -0
  207. package/dist/components/media/MelodyRoll/MelodyRoll.d.ts +48 -0
  208. package/dist/components/media/MelodyRoll/styles.css +196 -0
  209. package/dist/components/media/PianoKeyboard/PianoKeyboard.d.ts +24 -0
  210. package/dist/components/media/PianoKeyboard/styles.css +83 -0
  211. package/dist/components/media/RotaryKnob/RotaryKnob.d.ts +3 -0
  212. package/dist/components/media/RotaryKnob/styles.css +319 -0
  213. package/dist/components/media/Sparkline/Sparkline.d.ts +2 -0
  214. package/dist/components/media/Sparkline/styles.css +70 -0
  215. package/dist/components/media/WaveDecoration/WaveDecoration.d.ts +2 -0
  216. package/dist/components/media/WaveDecoration/styles.css +2 -0
  217. package/dist/components/media/Waveform/Waveform.d.ts +9 -0
  218. package/dist/components/media/Waveform/styles.css +375 -0
  219. package/dist/components/media/Waveform/useWaveformPeaks.d.ts +11 -0
  220. package/dist/components/media/shared.css +7 -0
  221. package/dist/components/media/shared.d.ts +80 -0
  222. package/dist/components/navigation/Router/Router.d.ts +32 -0
  223. package/dist/components/navigation/Router/styles.css +1 -0
  224. package/dist/components.css +102 -0
  225. package/dist/core/artwork.d.ts +17 -0
  226. package/dist/core/base.d.ts +65 -0
  227. package/dist/core/environment.d.ts +5 -0
  228. package/dist/core/i18n.d.ts +34 -0
  229. package/dist/core/messages.d.ts +1 -0
  230. package/dist/core/motion/hooks.d.ts +17 -0
  231. package/dist/core/motion-engine.d.ts +13 -0
  232. package/dist/core/noise.d.ts +20 -0
  233. package/dist/core/providers/context.d.ts +4 -0
  234. package/dist/core/responsive.d.ts +13 -0
  235. package/dist/core.d.ts +8 -0
  236. package/dist/core.js +56 -0
  237. package/dist/editor.d.ts +2 -0
  238. package/dist/editor.js +8 -0
  239. package/dist/fonts/melodix/Melodix-100.woff2 +0 -0
  240. package/dist/fonts/melodix/Melodix-200.woff2 +0 -0
  241. package/dist/fonts/melodix/Melodix-300.woff2 +0 -0
  242. package/dist/fonts/melodix/Melodix-400.woff2 +0 -0
  243. package/dist/fonts/melodix/Melodix-500.woff2 +0 -0
  244. package/dist/fonts/melodix/Melodix-600.woff2 +0 -0
  245. package/dist/fonts/melodix/Melodix-700.woff2 +0 -0
  246. package/dist/fonts/melodix/Melodix-800.woff2 +0 -0
  247. package/dist/fonts/melodix/Melodix-900.woff2 +0 -0
  248. package/dist/fonts/melodix/MelodixText-100.woff2 +0 -0
  249. package/dist/fonts/melodix/MelodixText-200.woff2 +0 -0
  250. package/dist/fonts/melodix/MelodixText-300.woff2 +0 -0
  251. package/dist/fonts/melodix/MelodixText-400.woff2 +0 -0
  252. package/dist/fonts/melodix/MelodixText-500.woff2 +0 -0
  253. package/dist/fonts/melodix/MelodixText-600.woff2 +0 -0
  254. package/dist/fonts/melodix/MelodixText-700.woff2 +0 -0
  255. package/dist/fonts/melodix/MelodixText-800.woff2 +0 -0
  256. package/dist/fonts/melodix/MelodixText-900.woff2 +0 -0
  257. package/dist/fonts/melodix/OFL-PlayfairDisplay.txt +93 -0
  258. package/dist/fonts/melodix.css +123 -0
  259. package/dist/forms.d.ts +4 -0
  260. package/dist/forms.js +17 -0
  261. package/dist/index.d.ts +163 -0
  262. package/dist/index.js +9683 -0
  263. package/dist/router.d.ts +2 -0
  264. package/dist/router.js +11 -0
  265. package/dist/styles.css +2 -0
  266. package/dist/theme/base.css +221 -0
  267. package/dist/theme/tokens.css +196 -0
  268. package/dist/theme/typography.d.ts +24 -0
  269. package/dist/tokens.css +1 -0
  270. package/package.json +83 -4
@@ -0,0 +1,9 @@
1
+ import { type WaveformProps } from "../shared";
2
+ /**
3
+ * Seekable waveform drawn the way studio editors show audio: a dense, symmetric track with
4
+ * translucent peaks around a solid core of average loudness. The played part burns ruby
5
+ * and brightens towards the light-beam cursor; hovering previews the seek point and its
6
+ * time. Click or drag to seek, arrows step 5 s, Home/End jump to the edges. Peaks come
7
+ * from `points` or are decoded from `src`.
8
+ */
9
+ export declare function Waveform({ duration: total, position: controlled, defaultPosition, onSeek, points, src, bins, color, label, disabled, ...p }: WaveformProps): import("react").JSX.Element;
@@ -0,0 +1,375 @@
1
+ /* Styles owned by Waveform: a studio-style track in brushed silver; the played part burns
2
+ ruby, glows and catches a passing sheen, a light beam marks the position. */
3
+ .ad-waveform {
4
+ position: relative;
5
+ contain: layout;
6
+ flex: 1;
7
+ min-width: 3rem;
8
+ height: clamp(3.25rem, 2.6rem + 1.8vw, 4.75rem);
9
+ border-radius: 0.5rem;
10
+ cursor: pointer;
11
+ touch-action: none;
12
+ outline: none;
13
+ }
14
+ .ad-waveform:focus-visible {
15
+ box-shadow: 0 0 0 0.125rem color-mix(in srgb, var(--ad-pink) 70%, transparent);
16
+ }
17
+ .ad-waveform[aria-disabled] {
18
+ cursor: not-allowed;
19
+ filter: saturate(0.4);
20
+ opacity: 0.6;
21
+ }
22
+ .ad-waveform > svg.ad-waveform-base {
23
+ position: relative;
24
+ display: block;
25
+ width: 100%;
26
+ height: 100%;
27
+ overflow: visible;
28
+ transform-origin: 50% 50%;
29
+ animation: ad-waveform-rise 1.1s cubic-bezier(0.16, 1, 0.3, 1) both;
30
+ }
31
+ /* Arrival: the track grows out of the midline in a wave running left to right. */
32
+ @keyframes ad-waveform-rise {
33
+ from {
34
+ clip-path: inset(0 100% 0 0);
35
+ transform: scaleY(0.15);
36
+ opacity: 0;
37
+ }
38
+ 40% {
39
+ opacity: 1;
40
+ }
41
+ }
42
+ /* Light spilling from the played part onto the surface beneath it (stretched, never redrawn). */
43
+ .ad-waveform-floor {
44
+ position: absolute;
45
+ inset: 12% 0;
46
+ border-radius: 50%;
47
+ background: radial-gradient(
48
+ ellipse 100% 100% at 100% 50%,
49
+ color-mix(in srgb, var(--ad-wave-color, var(--ad-red)) 40%, transparent),
50
+ transparent 75%
51
+ );
52
+ transform: scaleX(var(--ad-wave-progress, 0));
53
+ transform-origin: left;
54
+ opacity: 0.8;
55
+ pointer-events: none;
56
+ }
57
+ /* Layers over the track: still pictures (masks) with content moved or stretched by transform. */
58
+ .ad-waveform-overlay,
59
+ .ad-waveform-layer,
60
+ .ad-waveform-follow {
61
+ position: absolute;
62
+ inset: 0;
63
+ width: 100%;
64
+ height: 100%;
65
+ overflow: visible;
66
+ pointer-events: none;
67
+ }
68
+ .ad-waveform-layer {
69
+ mask-size: 100% 100%;
70
+ -webkit-mask-size: 100% 100%;
71
+ mask-repeat: no-repeat;
72
+ -webkit-mask-repeat: no-repeat;
73
+ animation: ad-waveform-rise-layer 1.1s cubic-bezier(0.16, 1, 0.3, 1) both;
74
+ }
75
+ @keyframes ad-waveform-rise-layer {
76
+ from {
77
+ transform: scaleY(0.15);
78
+ opacity: 0;
79
+ }
80
+ }
81
+ .ad-waveform-lit > i,
82
+ .ad-waveform-bloom > i {
83
+ position: absolute;
84
+ inset: 0;
85
+ background: linear-gradient(90deg, var(--ad-primary-700), var(--ad-wave-color, var(--ad-red)) 60%, var(--ad-secondary-100));
86
+ transform: scaleX(var(--ad-wave-progress, 0));
87
+ transform-origin: left;
88
+ }
89
+ /* The window shows only the played part: it slides right while its content slides back. */
90
+ .ad-waveform-window {
91
+ position: absolute;
92
+ inset: 0;
93
+ overflow: hidden;
94
+ transform: translateX(calc(var(--ad-wave-played, 0%) - 100%));
95
+ }
96
+ .ad-waveform-window-inner {
97
+ position: absolute;
98
+ inset: 0;
99
+ transform: translateX(calc(100% - var(--ad-wave-played, 0%)));
100
+ }
101
+ /* Anything that sits at the position rides a full-width layer moved by it. */
102
+ .ad-waveform-follow {
103
+ transform: translateX(var(--ad-wave-played, 0%));
104
+ }
105
+ /* Engraved edge: a hairline traces the peaks so the shape reads crisp. */
106
+ .ad-waveform-edge {
107
+ fill: none;
108
+ stroke: #fff;
109
+ stroke-width: 0.75;
110
+ stroke-opacity: 0.14;
111
+ vector-effect: non-scaling-stroke;
112
+ }
113
+ .ad-waveform-axis {
114
+ stroke: color-mix(in srgb, var(--ad-pink) 30%, transparent);
115
+ stroke-width: 1;
116
+ vector-effect: non-scaling-stroke;
117
+ }
118
+ /* Unplayed: smoked graphite, translucent peaks around a denser core of average loudness. */
119
+ .ad-waveform-peaks {
120
+ opacity: 0.12;
121
+ transition: opacity 0.4s;
122
+ }
123
+ .ad-waveform-core {
124
+ opacity: 0.24;
125
+ transition: opacity 0.4s;
126
+ }
127
+ .ad-waveform:hover .ad-waveform-peaks {
128
+ opacity: 0.18;
129
+ }
130
+ .ad-waveform:hover .ad-waveform-core {
131
+ opacity: 0.34;
132
+ }
133
+ /* Between the cursor and the pointer: where a click would take you. */
134
+ .ad-waveform-ahead > path {
135
+ fill: color-mix(in srgb, var(--ad-pink) 60%, #fff);
136
+ opacity: 0.18;
137
+ }
138
+ /* Played: ruby light, glowing, with the core burning brightest. */
139
+ .ad-waveform-lit {
140
+ opacity: 0.5;
141
+ }
142
+ .ad-waveform-lit-core {
143
+ opacity: 1;
144
+ }
145
+ .ad-waveform-bloom {
146
+ opacity: 0.9;
147
+ }
148
+ /* Lit from above: the upper half catches light, the lower sinks into shadow. */
149
+ .ad-waveform-layer.ad-waveform-depth {
150
+ background: linear-gradient(#ffffff29, #fff0 42%, #0000 56%, #0009);
151
+ }
152
+ /* A soft band of light drifts across the played part now and then. */
153
+ .ad-waveform-sheen {
154
+ position: absolute;
155
+ inset: 0 auto 0 0;
156
+ width: 16%;
157
+ background: #fff;
158
+ opacity: 0.16;
159
+ transform: translateX(-125%) skewX(-18deg);
160
+ animation: ad-waveform-sheen 5.5s cubic-bezier(0.45, 0, 0.2, 1) infinite;
161
+ }
162
+ @keyframes ad-waveform-sheen {
163
+ 0%,
164
+ 35% {
165
+ transform: translateX(-125%) skewX(-18deg);
166
+ }
167
+ 100% {
168
+ transform: translateX(690%) skewX(-18deg);
169
+ }
170
+ }
171
+ /* A spot of light at the position, inside the track's shape. */
172
+ .ad-waveform-spot {
173
+ position: absolute;
174
+ top: -50%;
175
+ left: 0;
176
+ width: 12%;
177
+ height: 200%;
178
+ translate: -50% 0;
179
+ border-radius: 50%;
180
+ background: radial-gradient(closest-side, #ffffffe6, rgb(from var(--ad-primary) r g b / 0));
181
+ opacity: 0.55;
182
+ }
183
+ .ad-waveform-depth {
184
+ pointer-events: none;
185
+ }
186
+ /* The position: a thin beam of light with a halo. */
187
+ .ad-waveform-cursor {
188
+ position: absolute;
189
+ top: -0.2rem;
190
+ bottom: -0.1rem;
191
+ left: 0;
192
+ width: 0.125rem;
193
+ translate: -50% 0;
194
+ border-radius: 999rem;
195
+ background: linear-gradient(
196
+ transparent,
197
+ var(--ad-secondary-100) 20%,
198
+ #fff 50%,
199
+ var(--ad-secondary-100) 80%,
200
+ transparent
201
+ );
202
+ box-shadow:
203
+ 0 0 0.45rem var(--ad-primary),
204
+ 0 0 1.2rem rgb(from var(--ad-primary) r g b / 0.6);
205
+ pointer-events: none;
206
+ }
207
+ .ad-waveform-cursor::after {
208
+ content: "";
209
+ position: absolute;
210
+ top: 50%;
211
+ left: 50%;
212
+ width: 0.45rem;
213
+ height: 0.45rem;
214
+ translate: -50% -50%;
215
+ border-radius: 50%;
216
+ background: #fff;
217
+ box-shadow:
218
+ 0 0 0 0.18rem rgb(from var(--ad-primary) r g b / 0.33),
219
+ 0 0 0.7rem var(--ad-primary);
220
+ transition: scale 0.25s cubic-bezier(0.34, 1.56, 0.5, 1);
221
+ }
222
+ /* Anamorphic flare: a thin horizontal streak through the cursor, as in film. */
223
+ .ad-waveform-cursor::before {
224
+ content: "";
225
+ position: absolute;
226
+ top: 50%;
227
+ left: 50%;
228
+ width: 7rem;
229
+ height: 0.125rem;
230
+ translate: -50% -50%;
231
+ border-radius: 999rem;
232
+ background: linear-gradient(
233
+ 90deg,
234
+ transparent,
235
+ rgb(from var(--ad-secondary) r g b / 0.6) 30%,
236
+ #fff 50%,
237
+ rgb(from var(--ad-secondary) r g b / 0.6) 70%,
238
+ transparent
239
+ );
240
+ filter: blur(0.04rem);
241
+ opacity: 0.75;
242
+ animation: ad-waveform-flare 3.2s ease-in-out infinite;
243
+ }
244
+ @keyframes ad-waveform-flare {
245
+ 50% {
246
+ scale: 1.29 1;
247
+ opacity: 0.45;
248
+ }
249
+ }
250
+ /* Sparks fly off the cursor while the track plays. */
251
+ .ad-waveform-sparks {
252
+ position: absolute;
253
+ top: 50%;
254
+ left: 50%;
255
+ opacity: 0;
256
+ transition: opacity 0.4s;
257
+ }
258
+ .ad-waveform[data-playing] .ad-waveform-sparks {
259
+ opacity: 1;
260
+ }
261
+ .ad-waveform-sparks > i {
262
+ position: absolute;
263
+ width: 0.2rem;
264
+ height: 0.2rem;
265
+ margin: -0.1rem;
266
+ border-radius: 50%;
267
+ background: #fff;
268
+ box-shadow: 0 0 0.35rem var(--ad-primary);
269
+ opacity: 0;
270
+ animation: ad-waveform-spark 1.6s ease-out infinite;
271
+ }
272
+ .ad-waveform-sparks > i:nth-child(1) {
273
+ --dx: -1.4rem;
274
+ --dy: -1.5rem;
275
+ animation-delay: 0s;
276
+ }
277
+ .ad-waveform-sparks > i:nth-child(2) {
278
+ --dx: -2.2rem;
279
+ --dy: 0.9rem;
280
+ animation-delay: 0.2s;
281
+ }
282
+ .ad-waveform-sparks > i:nth-child(3) {
283
+ --dx: -0.8rem;
284
+ --dy: 1.6rem;
285
+ animation-delay: 0.4s;
286
+ }
287
+ .ad-waveform-sparks > i:nth-child(4) {
288
+ --dx: -2.6rem;
289
+ --dy: -0.6rem;
290
+ animation-delay: 0.6s;
291
+ }
292
+ .ad-waveform-sparks > i:nth-child(5) {
293
+ --dx: -1.1rem;
294
+ --dy: -2rem;
295
+ animation-delay: 0.8s;
296
+ }
297
+ .ad-waveform-sparks > i:nth-child(6) {
298
+ --dx: -1.9rem;
299
+ --dy: 1.8rem;
300
+ animation-delay: 1s;
301
+ }
302
+ .ad-waveform-sparks > i:nth-child(7) {
303
+ --dx: -3rem;
304
+ --dy: 0.2rem;
305
+ animation-delay: 1.2s;
306
+ }
307
+ .ad-waveform-sparks > i:nth-child(8) {
308
+ --dx: -0.6rem;
309
+ --dy: -1.1rem;
310
+ animation-delay: 1.4s;
311
+ }
312
+ @keyframes ad-waveform-spark {
313
+ 10% {
314
+ opacity: 1;
315
+ }
316
+ to {
317
+ opacity: 0;
318
+ transform: translate(var(--dx), var(--dy)) scale(0.3);
319
+ }
320
+ }
321
+ .ad-waveform:hover .ad-waveform-cursor::after,
322
+ .ad-waveform:focus-visible .ad-waveform-cursor::after {
323
+ scale: 1.4;
324
+ }
325
+ /* Hover: a faint line and the time you would jump to. */
326
+ .ad-waveform-hover {
327
+ position: absolute;
328
+ top: 0;
329
+ bottom: 0;
330
+ left: var(--ad-wave-hover);
331
+ width: 0.0625rem;
332
+ background: linear-gradient(transparent, #ffffff99 30%, transparent);
333
+ pointer-events: none;
334
+ }
335
+ /* A soft spotlight follows the pointer across the track. */
336
+ .ad-waveform-hover::before {
337
+ content: "";
338
+ position: absolute;
339
+ top: -15%;
340
+ bottom: -15%;
341
+ left: 50%;
342
+ width: 8rem;
343
+ translate: -50% 0;
344
+ background: radial-gradient(closest-side, #ffffff1f, transparent);
345
+ }
346
+ .ad-waveform-tip {
347
+ position: absolute;
348
+ bottom: calc(100% + 0.35rem);
349
+ left: 50%;
350
+ translate: -50% 0;
351
+ padding: 0.1rem 0.4rem;
352
+ border-radius: 0.35rem;
353
+ background: rgb(from var(--ad-neutral-850) r g b / 0.9);
354
+ box-shadow: inset 0 0 0 0.0625rem rgb(from var(--ad-secondary) r g b / 0.4);
355
+ color: #fff;
356
+ font-size: var(--ad-font-size-caption);
357
+ font-variant-numeric: tabular-nums;
358
+ white-space: nowrap;
359
+ animation: ad-waveform-tip 0.18s ease-out both;
360
+ }
361
+ @keyframes ad-waveform-tip {
362
+ from {
363
+ opacity: 0;
364
+ translate: -50% 0.2rem;
365
+ }
366
+ }
367
+ /* Loading: a sheen sweeps the placeholder silhouette. */
368
+ .ad-waveform[data-loading] :is(.ad-waveform-peaks, .ad-waveform-core) {
369
+ animation: ad-waveform-wait 1.4s ease-in-out infinite;
370
+ }
371
+ @keyframes ad-waveform-wait {
372
+ 50% {
373
+ opacity: 0.4;
374
+ }
375
+ }
@@ -0,0 +1,11 @@
1
+ /** Per slice of the track: the loudest sample (peak) and the average loudness (RMS), 0..1. */
2
+ export interface WaveformData {
3
+ peaks: number[];
4
+ rms: number[];
5
+ }
6
+ /**
7
+ * Peaks and average loudness of an audio file for a waveform, decoded in the browser.
8
+ * `null` while loading, empty arrays when the file cannot be read; nothing is fetched
9
+ * without a source. Superseded work is aborted, and measuring samples yields to input.
10
+ */
11
+ export declare function useWaveformPeaks(src?: string | Blob | null, bins?: number): WaveformData | null;
@@ -0,0 +1,7 @@
1
+ /* Shared only by sibling components. */
2
+ .ad-wave-decoration {
3
+ width: 100%;
4
+ height: 8.125rem;
5
+ display: block;
6
+ pointer-events: none;
7
+ }
@@ -0,0 +1,80 @@
1
+ import type { CommonProps } from "../../core/base";
2
+ export interface WaveformProps extends CommonProps {
3
+ duration?: number;
4
+ position?: number;
5
+ defaultPosition?: number;
6
+ onSeek?: (time: number) => void;
7
+ /** Ready peaks (any scale, any count); an empty array is silence. Without them the shape is read from `src`. */
8
+ points?: readonly number[];
9
+ /** An audio file (URL, File or Blob) whose peaks are decoded in the browser. */
10
+ src?: string | Blob | null;
11
+ /** How many bars to decode from `src` (clamped to 1–10,000; non-finite values use 600). */
12
+ bins?: number;
13
+ color?: string;
14
+ label?: string;
15
+ disabled?: boolean;
16
+ }
17
+ export interface AudioPlayerProps extends CommonProps {
18
+ src?: string;
19
+ duration?: number;
20
+ /** Use an external audio engine instead of creating an HTMLAudioElement. */
21
+ playing?: boolean;
22
+ /** Current position supplied by an external audio engine. */
23
+ position?: number;
24
+ disabled?: boolean;
25
+ onTimeChange?: (time: number) => void;
26
+ onPlayingChange?: (playing: boolean) => void;
27
+ points?: number[];
28
+ volume?: number;
29
+ defaultVolume?: number;
30
+ /** Requested output volume, 0–1; pair with `volume` for controlled playback engines. */
31
+ onVolumeChange?: (volume: number) => void;
32
+ showVolume?: boolean;
33
+ }
34
+ export interface LevelMeterProps extends CommonProps {
35
+ /** Current level, 0–100; change it as often as you like. */
36
+ value?: number;
37
+ /** A live input (e.g. from getUserMedia) the meter listens to by itself; overrides `value`. */
38
+ stream?: MediaStream | null;
39
+ /** Off (muted, disconnected): the wave settles and dims. */
40
+ active?: boolean;
41
+ /** Small pill-sized meter for lists and participant rows. */
42
+ compact?: boolean;
43
+ label?: string;
44
+ }
45
+ export interface RotaryKnobProps extends CommonProps {
46
+ value?: number;
47
+ defaultValue?: number;
48
+ onValueChange?: (value: number) => void;
49
+ onValueCommit?: (value: number) => void;
50
+ disabled?: boolean;
51
+ readOnly?: boolean;
52
+ step?: number;
53
+ fineStep?: number;
54
+ resetValue?: number;
55
+ /** Value range; 0–100 (percent) by default. */
56
+ min?: number;
57
+ max?: number;
58
+ /** The readout and typed input show value × this (e.g. 100 for a 0–2 gain shown as 0–200 %). */
59
+ displayScale?: number;
60
+ /** Unit after the shown number; "%" by default. */
61
+ suffix?: string;
62
+ label?: string;
63
+ /** Print the label under the knob (otherwise it is only read out and shown on hover). */
64
+ showLabel?: boolean;
65
+ showValue?: boolean;
66
+ diameter?: number;
67
+ }
68
+ export type RotaryKnobController = {
69
+ get value(): number;
70
+ setValue(next: number, notify?: boolean): void;
71
+ reset(): void;
72
+ };
73
+ export interface SparklineProps extends CommonProps {
74
+ /** An empty array leaves the chart empty; omit for the demo series. */
75
+ values?: number[];
76
+ /** Scale to the values' own range instead of from zero, so small changes fill the height. */
77
+ fit?: boolean;
78
+ color?: string;
79
+ label?: string;
80
+ }
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from "react";
2
+ export interface RouteAccessContext {
3
+ pathname: string;
4
+ params: Record<string, string>;
5
+ context?: unknown;
6
+ }
7
+ export interface RouteDefinition {
8
+ path: string;
9
+ element?: ReactNode | ((match: RouteMatch) => ReactNode);
10
+ redirectTo?: string;
11
+ access?: (value: RouteAccessContext) => boolean;
12
+ denied?: ReactNode | ((match: RouteMatch) => ReactNode);
13
+ }
14
+ export interface RouteMatch {
15
+ route: RouteDefinition;
16
+ pathname: string;
17
+ params: Record<string, string>;
18
+ }
19
+ export interface RouterValue extends RouteMatch {
20
+ navigate: (to: string, replace?: boolean) => void;
21
+ }
22
+ export interface RouterProps {
23
+ routes: readonly RouteDefinition[];
24
+ fallback?: ReactNode;
25
+ context?: unknown;
26
+ mode?: "hash" | "history";
27
+ /** Opt into native view transitions. Captured views may temporarily pause pointer interaction. Default: false. */
28
+ transition?: boolean;
29
+ }
30
+ export declare function matchRoute(routes: readonly RouteDefinition[], pathname: string): RouteMatch | null;
31
+ export declare function Router({ routes, fallback, context, mode, transition, }: RouterProps): import("react").JSX.Element | null;
32
+ export declare function useRouter(): RouterValue;
@@ -0,0 +1 @@
1
+ /* Router is behavior-only. */
@@ -0,0 +1,102 @@
1
+ @import "./fonts/melodix.css";
2
+ /* Entry for all component styles. Add a new component styles.css here. */
3
+ @import "./theme/base.css";
4
+ @import "./components/layout/shared.css";
5
+ @import "./components/controls/shared.css";
6
+ @import "./components/feedback/shared.css";
7
+ @import "./components/media/shared.css";
8
+ @import "./components/editor/shared.css";
9
+ @import "./components/controls/Autocomplete/styles.css";
10
+ @import "./components/controls/Button/styles.css";
11
+ @import "./components/controls/Checkbox/styles.css";
12
+ @import "./components/controls/InputBase/styles.css";
13
+ @import "./components/controls/Link/styles.css";
14
+ @import "./components/controls/FilePicker/styles.css";
15
+ @import "./components/controls/IconButton/styles.css";
16
+ @import "./components/controls/NumberField/styles.css";
17
+ @import "./components/controls/SegmentedControl/styles.css";
18
+ @import "./components/controls/Select/styles.css";
19
+ @import "./components/controls/Slider/styles.css";
20
+ @import "./components/controls/SplitButton/styles.css";
21
+ @import "./components/controls/Switch/styles.css";
22
+ @import "./components/controls/Tab/styles.css";
23
+ @import "./components/controls/Tabs/styles.css";
24
+ @import "./components/controls/TextArea/styles.css";
25
+ @import "./components/controls/ThemePicker/styles.css";
26
+ @import "./components/controls/ToggleButton/styles.css";
27
+ @import "./components/editor/PianoRoll/styles.css";
28
+ @import "./components/effects/AnimatedBorder/styles.css";
29
+ @import "./components/effects/Marquee/styles.css";
30
+ @import "./components/effects/Beacon/styles.css";
31
+ @import "./components/effects/Sparkles/styles.css";
32
+ @import "./components/effects/Shimmer/styles.css";
33
+ @import "./components/feedback/SignalBars/styles.css";
34
+ @import "./components/effects/ImageShine/styles.css";
35
+ @import "./components/effects/Equalizer/styles.css";
36
+ @import "./components/effects/GlowText/styles.css";
37
+ @import "./components/effects/Reveal/styles.css";
38
+ @import "./components/effects/Tilt/styles.css";
39
+ @import "./components/effects/Spotlight/styles.css";
40
+ @import "./components/feedback/Badge/styles.css";
41
+ @import "./components/feedback/CollapsibleSection/styles.css";
42
+ @import "./components/feedback/DataTable/styles.css";
43
+ @import "./components/feedback/Dialog/styles.css";
44
+ @import "./components/feedback/EmptyState/styles.css";
45
+ @import "./components/feedback/KeyValueList/styles.css";
46
+ @import "./components/feedback/Menu/styles.css";
47
+ @import "./components/feedback/MenuItem/styles.css";
48
+ @import "./components/feedback/MessageBar/styles.css";
49
+ @import "./components/feedback/Popover/styles.css";
50
+ @import "./components/feedback/ProgressBar/styles.css";
51
+ @import "./components/feedback/StatusIndicator/styles.css";
52
+ @import "./components/feedback/Steps/styles.css";
53
+ @import "./components/feedback/Toast/styles.css";
54
+ @import "./components/feedback/Tooltip/styles.css";
55
+ @import "./components/foundation/ThemeProvider/styles.css";
56
+ @import "./components/foundation/Typography/styles.css";
57
+ @import "./components/layout/Avatar/styles.css";
58
+ @import "./components/layout/BrandMark/styles.css";
59
+ @import "./components/layout/ButtonGroup/styles.css";
60
+ @import "./components/layout/Card/styles.css";
61
+ @import "./components/foundation/LoaderGenerator/styles.css";
62
+ @import "./components/effects/MelodixText/styles.css";
63
+ @import "./components/foundation/ThemeEditor/styles.css";
64
+ @import "./components/controls/Chip/styles.css";
65
+ @import "./components/controls/TagInput/styles.css";
66
+ @import "./components/controls/PeoplePicker/styles.css";
67
+ @import "./components/controls/ColorPicker/styles.css";
68
+ @import "./components/controls/DatePicker/styles.css";
69
+ @import "./components/layout/StatTile/styles.css";
70
+ @import "./components/media/MediaCard/styles.css";
71
+ @import "./components/layout/DialogActions/styles.css";
72
+ @import "./components/layout/DialogBody/styles.css";
73
+ @import "./components/layout/Divider/styles.css";
74
+ @import "./components/layout/Grid/styles.css";
75
+ @import "./components/layout/Header/styles.css";
76
+ @import "./components/layout/Icon/styles.css";
77
+ @import "./components/layout/Illustration/styles.css";
78
+ @import "./components/layout/ScrollArea/styles.css";
79
+ @import "./components/layout/Stack/styles.css";
80
+ @import "./components/layout/TabPanel/styles.css";
81
+ @import "./components/layout/Text/styles.css";
82
+ @import "./components/layout/Toolbar/styles.css";
83
+ @import "./components/media/AudioPlayer/styles.css";
84
+ @import "./components/media/LevelMeter/styles.css";
85
+ @import "./components/media/RotaryKnob/styles.css";
86
+ @import "./components/media/PianoKeyboard/styles.css";
87
+ @import "./components/media/MelodyRoll/styles.css";
88
+ @import "./components/media/KaraokeLyrics/styles.css";
89
+ @import "./components/layout/FloatingPanel/styles.css";
90
+ @import "./components/media/Sparkline/styles.css";
91
+ @import "./components/media/WaveDecoration/styles.css";
92
+ @import "./components/media/Waveform/styles.css";
93
+ @import "./components/navigation/Router/styles.css";
94
+ @import "./components/forms/Form/styles.css";
95
+ @import "./components/forms/FormFields/styles.css";
96
+ @import "./components/artwork/Landscape/styles.css";
97
+ @import "./components/artwork/Planet/styles.css";
98
+ @import "./components/artwork/NeonWaves/styles.css";
99
+ @import "./components/artwork/QuantumField/styles.css";
100
+ @import "./components/artwork/Spectrum/styles.css";
101
+ @import "./components/artwork/DatabaseArt/styles.css";
102
+ @import "./components/artwork/ServerArt/styles.css";
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ /** React's id made safe for SVG references such as `url(#id)`. */
3
+ export declare const useSvgId: () => string;
4
+ import type { VectorNode } from "./base";
5
+ /** Artwork JSON already stores React-ready SVG props; only ids are rewritten. */
6
+ export declare function vectorElement(node: VectorNode | string, prefix: string, key?: string | number): React.ReactNode;
7
+ export interface SvgAssetProps {
8
+ /** Trusted React-ready SVG tree. Repeated copies receive independent ids and references. */
9
+ node: VectorNode;
10
+ className?: string;
11
+ style?: React.CSSProperties;
12
+ /** Accessible image name. Decorative SVG trees should set aria-hidden in node.props. */
13
+ label?: string;
14
+ /** Optional data-ad-component attribute for styling and diagnostics. */
15
+ component?: string;
16
+ }
17
+ export declare function SvgAsset({ node, className, style, label, component }: SvgAssetProps): React.ReactElement<Record<string, unknown>, string | React.JSXElementConstructor<any>>;