@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,6 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export interface DatabaseArtProps extends CommonProps {
3
+ label?: string;
4
+ }
5
+ /** Neon database cylinder: light orbits run along its rings, sparks twinkle around it. */
6
+ export declare function DatabaseArt({ label, ...p }: DatabaseArtProps): import("react").JSX.Element;
@@ -0,0 +1,58 @@
1
+ /* Styles owned by DatabaseArt. Orbit, spark and aura animations are shared with ServerArt. */
2
+ .ad-database-art {
3
+ display: block;
4
+ width: 100%;
5
+ max-width: 11rem;
6
+ aspect-ratio: 170 / 179;
7
+ height: auto;
8
+ position: relative;
9
+ overflow: visible;
10
+ }
11
+ /* An artwork stack (see layers.tsx): drawings laid exactly over each other. */
12
+ :is(.ad-database-art, .ad-server-art) > .ad-art-layer {
13
+ position: absolute;
14
+ inset: 0;
15
+ display: block;
16
+ width: 100%;
17
+ height: 100%;
18
+ overflow: visible;
19
+ pointer-events: none;
20
+ }
21
+ /* The orbits are the only drawing that repaints: three thin dashes, with no filter. */
22
+ .ad-art-orbit {
23
+ stroke-dasharray: 14 86;
24
+ stroke-linecap: round;
25
+ animation: ad-art-orbit 4s linear infinite;
26
+ }
27
+ /* The same pulses on whole layers: the compositor scales and fades them, nothing repaints.
28
+ Each layer scales about its own point (set inline from the drawing). */
29
+ .ad-art-spark-layer {
30
+ animation: ad-art-spark 4s ease-in-out var(--ad-delay, 0s) infinite;
31
+ will-change: transform, opacity;
32
+ }
33
+ .ad-art-aura-layer {
34
+ animation: ad-art-aura 5s ease-in-out infinite;
35
+ will-change: transform, opacity;
36
+ }
37
+ @keyframes ad-art-orbit {
38
+ to {
39
+ stroke-dashoffset: -100;
40
+ }
41
+ }
42
+ @keyframes ad-art-spark {
43
+ 0%,
44
+ 100% {
45
+ opacity: 0.35;
46
+ transform: scale(0.7);
47
+ }
48
+ 50% {
49
+ opacity: 1;
50
+ transform: scale(1);
51
+ }
52
+ }
53
+ @keyframes ad-art-aura {
54
+ 50% {
55
+ opacity: 0.6;
56
+ transform: scale(1.08);
57
+ }
58
+ }
@@ -0,0 +1,7 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export interface LandscapeProps extends CommonProps {
3
+ /** Darken the left side so text placed over it stays readable. */
4
+ shade?: boolean;
5
+ }
6
+ /** Procedural night landscape with a planet; children are laid over it. */
7
+ export declare function Landscape({ shade, children, ...p }: LandscapeProps): import("react").JSX.Element;
@@ -0,0 +1,79 @@
1
+ /* Styles owned by Landscape: the painting fades in, the horizon glow pulses and the frame drifts slowly. */
2
+ .ad-landscape {
3
+ position: relative;
4
+ isolation: isolate;
5
+ overflow: hidden;
6
+ min-height: 7rem;
7
+ aspect-ratio: 1220 / 168;
8
+ border-radius: var(--ad-radius);
9
+ background: var(--ad-neutral-900);
10
+ }
11
+ .ad-landscape > canvas {
12
+ /* Painted in ruby; turned to the theme hue. */
13
+ filter: hue-rotate(var(--ad-hue-shift, 0deg));
14
+ position: absolute;
15
+ inset: 0;
16
+ width: 100%;
17
+ height: 100%;
18
+ object-fit: cover;
19
+ object-position: 70% 50%;
20
+ opacity: 0;
21
+ transition: opacity 1.2s ease-out;
22
+ animation: ad-landscape-drift 24s ease-in-out infinite alternate;
23
+ }
24
+ .ad-landscape > canvas[data-ready] {
25
+ opacity: 0.8;
26
+ }
27
+ .ad-landscape[data-shade]::before {
28
+ content: "";
29
+ position: absolute;
30
+ inset: 0;
31
+ z-index: 1;
32
+ background: linear-gradient(
33
+ 90deg,
34
+ rgb(from var(--ad-neutral-900) r g b / 0.94) 0%,
35
+ rgb(from var(--ad-neutral-900) r g b / 0.67) 32%,
36
+ rgb(from var(--ad-neutral-900) r g b / 0.15) 70%,
37
+ rgb(from var(--ad-neutral-900) r g b / 0.04)
38
+ );
39
+ pointer-events: none;
40
+ }
41
+ /* Breathing glow where the planet meets the ridge. */
42
+ .ad-landscape-glow {
43
+ position: absolute;
44
+ z-index: 1;
45
+ left: 58%;
46
+ bottom: -10%;
47
+ width: 28%;
48
+ aspect-ratio: 2;
49
+ border-radius: 50%;
50
+ background: radial-gradient(closest-side, rgb(from var(--ad-primary) r g b / 0.33), transparent);
51
+ mix-blend-mode: screen;
52
+ animation: ad-landscape-glow 5s ease-in-out infinite;
53
+ pointer-events: none;
54
+ }
55
+ .ad-landscape-content {
56
+ position: relative;
57
+ z-index: 2;
58
+ height: 100%;
59
+ padding: clamp(0.75rem, 2vw, 1.5rem);
60
+ }
61
+ @keyframes ad-landscape-drift {
62
+ from {
63
+ transform: scale(1.02) translateX(0);
64
+ }
65
+ to {
66
+ transform: scale(1.08) translateX(-1.5%);
67
+ }
68
+ }
69
+ @keyframes ad-landscape-glow {
70
+ 0%,
71
+ 100% {
72
+ opacity: 0.5;
73
+ scale: 0.9;
74
+ }
75
+ 50% {
76
+ opacity: 1;
77
+ scale: 1.1;
78
+ }
79
+ }
@@ -0,0 +1,15 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export interface NeonWavesProps extends CommonProps {
3
+ /** Number of strands in the bundle. */
4
+ strands?: number;
5
+ /** Scatter faint stars around the strands. */
6
+ stars?: boolean;
7
+ /** Shifts the wave shape, so neighbouring instances do not move in step. */
8
+ phase?: number;
9
+ /** "twist" braids the strands across; "ridge" lays them low on the left and lifts them into a mountain peak on the right. */
10
+ shape?: "twist" | "ridge";
11
+ /** Sparks of light that run along the strands. */
12
+ comets?: number;
13
+ }
14
+ /** A bundle of neon strands that flow and twist slowly, with faint stars around them. */
15
+ export declare function NeonWaves({ strands, stars, phase, shape, comets, ...p }: NeonWavesProps): import("react").JSX.Element;
@@ -0,0 +1,48 @@
1
+ /* Styles owned by NeonWaves: the strands move by script; the stars twinkle on their own and the comets are moved by script. */
2
+ .ad-neon-waves {
3
+ position: relative;
4
+ display: block;
5
+ width: 100%;
6
+ height: clamp(4.5rem, 3rem + 6vw, 7.5rem);
7
+ overflow: visible;
8
+ pointer-events: none;
9
+ }
10
+ /* The large wrappers stay unpromoted; only the small comet children need moving layers. */
11
+ .ad-neon-waves-strands,
12
+ .ad-neon-waves-comets {
13
+ position: absolute;
14
+ inset: 0;
15
+ width: 100%;
16
+ height: 100%;
17
+ overflow: visible;
18
+ }
19
+ .ad-neon-waves-star {
20
+ position: absolute;
21
+ aspect-ratio: 1;
22
+ border-radius: 50%;
23
+ background: var(--ad-pink);
24
+ translate: -50% -50%;
25
+ animation: ad-neon-twinkle 4s ease-in-out infinite;
26
+ }
27
+ @keyframes ad-neon-twinkle {
28
+ 50% {
29
+ opacity: 0.05;
30
+ }
31
+ }
32
+ /* A comet is a short bright dash with a glow. Its glow is drawn once on its own layer; the
33
+ script only moves and fades it, so a running comet costs no repaint and no live filter. */
34
+ .ad-neon-waves-comet {
35
+ position: absolute;
36
+ top: 0;
37
+ left: 0;
38
+ width: 0;
39
+ height: 1.6px;
40
+ border-radius: 0.8px;
41
+ background: var(--ad-secondary-100, #ffb9cb);
42
+ box-shadow:
43
+ 0 0 0.2rem var(--ad-pink),
44
+ 0 0 0.5rem var(--ad-primary),
45
+ 0 0 0.7rem rgb(from var(--ad-primary) r g b / 0.5);
46
+ opacity: 0;
47
+ will-change: transform, opacity;
48
+ }
@@ -0,0 +1,4 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export type PlanetProps = CommonProps;
3
+ /** Planet horizon banner; children are laid over the dark side. */
4
+ export declare function Planet({ children, ...p }: PlanetProps): import("react").JSX.Element;
@@ -0,0 +1,52 @@
1
+ /* Styles owned by Planet: the planet fades in and its rim breathes with light. */
2
+ .ad-planet {
3
+ position: relative;
4
+ isolation: isolate;
5
+ overflow: hidden;
6
+ min-height: 6rem;
7
+ aspect-ratio: 515 / 114;
8
+ border-radius: var(--ad-radius);
9
+ background:
10
+ radial-gradient(ellipse 60% 120% at 100% 100%, rgb(from var(--ad-primary) r g b / 0.08), transparent 70%),
11
+ var(--ad-neutral-900);
12
+ }
13
+ .ad-planet > canvas {
14
+ /* Painted in ruby; turned to the theme hue (a static filter, applied once). */
15
+ filter: hue-rotate(var(--ad-hue-shift, 0deg));
16
+ position: absolute;
17
+ inset: 0;
18
+ width: 100%;
19
+ height: 100%;
20
+ object-fit: cover;
21
+ object-position: 100% 100%;
22
+ opacity: 0;
23
+ transition: opacity 1.2s ease-out;
24
+ }
25
+ /* The rim breathes: a light over the planet's edge swells and settles (opacity only; the painted
26
+ canvas is never re-filtered and nothing is blended). */
27
+ .ad-planet::after {
28
+ content: "";
29
+ position: absolute;
30
+ inset: 0;
31
+ z-index: 0;
32
+ background: radial-gradient(ellipse 70% 120% at 100% 100%, transparent 38%, rgb(from var(--ad-secondary) r g b / 0.16) 52%, transparent 66%);
33
+ opacity: 0;
34
+ animation: ad-planet-rim 6s ease-in-out infinite;
35
+ pointer-events: none;
36
+ /* A layer of its own: the painted canvas under it is never redrawn by the breath. */
37
+ will-change: opacity;
38
+ }
39
+ .ad-planet > canvas[data-ready] {
40
+ opacity: 1;
41
+ }
42
+ .ad-planet-content {
43
+ position: relative;
44
+ z-index: 1;
45
+ height: 100%;
46
+ padding: clamp(0.75rem, 2vw, 1.5rem);
47
+ }
48
+ @keyframes ad-planet-rim {
49
+ 50% {
50
+ opacity: 1;
51
+ }
52
+ }
@@ -0,0 +1,42 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ /** Seven deliberately different three-dimensional compositions. */
3
+ export declare const quantumFieldModes: readonly ["orbit", "vortex", "lattice", "wave", "bloom", "helix", "terrain"];
4
+ export type QuantumFieldMode = (typeof quantumFieldModes)[number];
5
+ export type QuantumFieldQuality = "auto" | "low" | "high";
6
+ export interface QuantumAudioFrame {
7
+ /** Seven normalized bands from bass to air, each 0–1. */
8
+ bands: readonly number[];
9
+ energy?: number;
10
+ beat?: number;
11
+ }
12
+ type AudioInput = QuantumAudioFrame | Pick<AnalyserNode, "frequencyBinCount" | "getByteFrequencyData"> | (() => QuantumAudioFrame);
13
+ export interface QuantumFieldProps extends CommonProps {
14
+ /** The field is visible on first paint; no start screen or keyboard gate. */
15
+ mode?: QuantumFieldMode;
16
+ quality?: QuantumFieldQuality;
17
+ /** 0–1. Capped internally to keep third-party pages responsive. */
18
+ density?: number;
19
+ /** 0 pauses its drift, 1 is the normal cinematic pace. */
20
+ speed?: number;
21
+ /** Supply an AnalyserNode, seven-band frame, or a callback reading the latest frame. */
22
+ audio?: AudioInput;
23
+ /** Optional microphone/loopback stream obtained after an explicit user action. */
24
+ stream?: MediaStream;
25
+ /** Override just this instance; otherwise it follows the nearest ThemeProvider/CSS tokens. */
26
+ palette?: readonly [string, string];
27
+ interactive?: boolean;
28
+ paused?: boolean;
29
+ }
30
+ /** Caps both backing-store size and DPR; large monitors never create huge canvases. */
31
+ export declare function quantumFieldResolution(width: number, height: number, dpr: number, quality: QuantumFieldQuality): {
32
+ width: number;
33
+ height: number;
34
+ };
35
+ /** Reads an analyser into a caller-owned scratch buffer, then reduces it to stable log-spaced bands. */
36
+ export declare function quantumFieldAudio(analyser: Pick<AnalyserNode, "frequencyBinCount" | "getByteFrequencyData">, scratch: Uint8Array, frame?: {
37
+ bands: number[];
38
+ energy: number;
39
+ }): QuantumAudioFrame;
40
+ /** Theme-native, audio-reactive 3D field with a lightweight 2D fallback. */
41
+ export declare function QuantumField({ mode, quality, density, speed, audio, stream, palette, interactive, paused, ...p }: QuantumFieldProps): import("react").JSX.Element;
42
+ export {};
@@ -0,0 +1,22 @@
1
+ import { type HTMLAttributes } from "react";
2
+ type Control = {
3
+ key: string;
4
+ label: string;
5
+ value: number | boolean | string;
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ options?: readonly string[];
10
+ };
11
+ export declare const quantumFieldExperienceControls: readonly {
12
+ id: string;
13
+ label: string;
14
+ controls: readonly Control[];
15
+ }[];
16
+ export type QuantumFieldExperienceProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
17
+ /** Maximum number of visible particles across both field layers. Adaptive quality may draw fewer. */
18
+ particleBudget?: number;
19
+ };
20
+ /** Full MIT-licensed renderer; the host kit owns the controls and theme. */
21
+ export declare function QuantumFieldExperience({ className, particleBudget, ...props }: QuantumFieldExperienceProps): import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Quantum Fields Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,15 @@
1
+ /** Optional transport for a QuantumField. Nothing records, plays, or requests permission until called. */
2
+ export declare function createQuantumFieldAudio(): {
3
+ analyser: AnalyserNode;
4
+ readonly media: HTMLAudioElement | null;
5
+ /** Replaces the current source; playback starts only when play() is called. */
6
+ loadFile(file: Blob): HTMLAudioElement;
7
+ /** Connects an app-owned stream. The app remains responsible for its tracks. */
8
+ connectStream: (stream: MediaStream) => void;
9
+ /** Explicit user-gesture operation; only streams created here are stopped by the controller. */
10
+ requestMicrophone(): Promise<MediaStream>;
11
+ play(): Promise<void>;
12
+ pause(): void;
13
+ seek(seconds: number): void;
14
+ dispose(): Promise<void>;
15
+ };
@@ -0,0 +1,24 @@
1
+ import type { QuantumAudioFrame, QuantumFieldMode } from "./QuantumField";
2
+ /** Four floats per particle: true x/y/z and a stable band/accent seed. */
3
+ export declare function quantumFieldGeometry(mode: QuantumFieldMode, count: number): Float32Array<ArrayBuffer>;
4
+ /** Short connected paths share the same 3D grammar as the points, but stay sparse at rest. */
5
+ export declare function quantumFieldFilaments(mode: QuantumFieldMode, strands: number, steps: number): Float32Array<ArrayBuffer>;
6
+ /** A tiny, deterministic proximity graph; only this small buffer changes every two seconds. */
7
+ export declare function quantumFieldNetwork(mode: QuantumFieldMode, nodes: number, epoch: number): Float32Array<ArrayBuffer>;
8
+ /** Exponential wheel response is independent of mouse notch size and safely bounded. */
9
+ export declare const quantumFieldZoom: (distance: number, deltaY: number) => number;
10
+ /** One static GPU buffer, two inexpensive point passes, no texture uploads or postprocessing. */
11
+ export declare function createQuantumFieldRenderer(canvas: HTMLCanvasElement, mode: QuantumFieldMode, count: number): {
12
+ setPalette(main: string, light: string): void;
13
+ resize(width: number, height: number): void;
14
+ draw(time: number, camera: {
15
+ zoom: number;
16
+ yaw: number;
17
+ pitch: number;
18
+ }, audio?: QuantumAudioFrame, pointer?: {
19
+ x: number;
20
+ y: number;
21
+ active: boolean;
22
+ }): void;
23
+ dispose(): void;
24
+ } | null;
@@ -0,0 +1,77 @@
1
+ .ad-quantum-field {
2
+ position: relative;
3
+ display: block;
4
+ width: 100%;
5
+ height: clamp(12rem, 24vw, 28rem);
6
+ overflow: hidden;
7
+ isolation: isolate;
8
+ background: transparent;
9
+ }
10
+ .ad-quantum-field > canvas {
11
+ display: block;
12
+ width: 100%;
13
+ height: 100%;
14
+ pointer-events: none;
15
+ }
16
+ .ad-quantum-field[data-interactive="true"] {
17
+ cursor: grab;
18
+ touch-action: none;
19
+ }
20
+ .ad-quantum-field[data-interactive="true"]:active { cursor: grabbing; }
21
+ .ad-quantum-field > :not(canvas) {
22
+ position: relative;
23
+ z-index: 1;
24
+ }
25
+
26
+ .ad-quantum-field-experience {
27
+ width: 100%;
28
+ overflow: hidden;
29
+ border-radius: var(--ad-radius-lg, 1rem);
30
+ background: transparent;
31
+ }
32
+ .ad-qf-controls {
33
+ display: grid;
34
+ gap: 0.75rem;
35
+ padding: 0.75rem 0;
36
+ }
37
+ .ad-qf-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.625rem; }
38
+ .ad-qf-toolbar > .ad-file-picker { flex: none; }
39
+ .ad-qf-toolbar > .ad-file-picker > small { display: none; }
40
+ .ad-qf-toolbar > .ad-file-picker > .ad-button { max-width: 11rem; }
41
+ .ad-qf-toolbar > .ad-file-picker .ad-button-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
42
+ .ad-qf-toolbar > .ad-audio-player { flex: 1 1 13rem; min-width: min(100%, 13rem); padding: 0.35rem 0.5rem; }
43
+ .ad-qf-toolbar .ad-player-play > .ad-icon-button { --ad-size-h: 2.25rem; width: 2.25rem; height: 2.25rem; }
44
+ .ad-qf-actions { display: flex; align-items: center; gap: 0.25rem; }
45
+ .ad-qf-actions > .ad-tooltip-trigger { display: inline-flex; }
46
+ .ad-qf-controls nav { max-width: 100%; overflow-x: auto; }
47
+ .ad-qf-controls .ad-collapse-content { display: grid; gap: 0.75rem; }
48
+ .ad-qf-control-panel { display: grid; gap: 0.75rem; }
49
+ .ad-qf-setting-grid {
50
+ display: grid;
51
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
52
+ gap: 0.75rem 1rem;
53
+ align-items: center;
54
+ }
55
+ .ad-qf-essentials { flex: 1 1 18rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
56
+ .ad-qf-setting { display: flex; align-items: end; gap: 0.5rem; min-width: 0; }
57
+ .ad-qf-setting > .ad-slider-field { flex: 1; min-width: 0; }
58
+ .ad-qf-setting > output { min-width: 3ch; padding-bottom: 0.55rem; color: var(--ad-muted); font-variant-numeric: tabular-nums; text-align: end; }
59
+ .ad-qf-fps, .ad-qf-status { color: var(--ad-muted); font-size: 0.75rem; }
60
+ .ad-qf-status { min-height: 1em; }
61
+ .ad-qf-viewport {
62
+ position: relative;
63
+ width: 100%;
64
+ height: clamp(18rem, 42vh, 27rem);
65
+ background: transparent;
66
+ }
67
+ .ad-qf-viewport > .ad-quantum-field {
68
+ height: 100%;
69
+ }
70
+ .ad-qf-viewport > iframe {
71
+ display: block;
72
+ width: 100%;
73
+ height: 100%;
74
+ border: 0;
75
+ background: transparent;
76
+ color-scheme: dark;
77
+ }
@@ -0,0 +1,8 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export interface ServerArtProps extends CommonProps {
3
+ /** Show an upload cloud above the rack (deployment scenes). */
4
+ upload?: boolean;
5
+ label?: string;
6
+ }
7
+ /** Neon server rack: LEDs blink, a light runs along its edge, a spark twinkles above. */
8
+ export declare function ServerArt({ upload, label, ...p }: ServerArtProps): import("react").JSX.Element;
@@ -0,0 +1,43 @@
1
+ /* Styles owned by ServerArt. The layer stack, spark and aura pulses come from DatabaseArt. */
2
+ .ad-server-art {
3
+ display: block;
4
+ width: 100%;
5
+ max-width: 11rem;
6
+ aspect-ratio: 180 / 170;
7
+ height: auto;
8
+ position: relative;
9
+ overflow: visible;
10
+ }
11
+ .ad-server-led,
12
+ .ad-server-glow {
13
+ stroke: var(--ad-red);
14
+ animation: ad-server-led 3.4s ease-in-out infinite;
15
+ }
16
+ /* A status dot is a layer of its own: its glow is drawn once and the layer only fades. */
17
+ .ad-server-dot {
18
+ fill: var(--ad-pink);
19
+ filter: drop-shadow(0 0 0.2rem var(--ad-red));
20
+ animation: ad-server-led 3.4s ease-in-out infinite;
21
+ will-change: opacity;
22
+ }
23
+ .ad-server-orbit {
24
+ stroke: color-mix(in srgb, var(--ad-pink) 72%, #fff);
25
+ stroke-width: 1px;
26
+ stroke-dasharray: 7 93;
27
+ stroke-linecap: round;
28
+ animation: ad-art-orbit 6.4s linear infinite;
29
+ }
30
+ .ad-server-cloud {
31
+ animation: ad-server-cloud 3s ease-in-out infinite;
32
+ will-change: transform;
33
+ }
34
+ @keyframes ad-server-led {
35
+ 50% {
36
+ opacity: 0.35;
37
+ }
38
+ }
39
+ @keyframes ad-server-cloud {
40
+ 50% {
41
+ transform: translateY(-0.2rem);
42
+ }
43
+ }
@@ -0,0 +1,7 @@
1
+ import { type CommonProps } from "../../../core/base";
2
+ export interface SpectrumProps extends CommonProps {
3
+ /** Segmented level columns, or smooth glowing bars in a bell shape. */
4
+ variant?: "segmented" | "bars";
5
+ }
6
+ /** A living audio spectrum used as decoration behind level and monitoring panels. */
7
+ export declare function Spectrum({ variant, ...p }: SpectrumProps): import("react").JSX.Element;
@@ -0,0 +1,35 @@
1
+ /* Styles owned by Spectrum. */
2
+ .ad-spectrum {
3
+ display: block;
4
+ width: 100%;
5
+ max-width: 21rem;
6
+ aspect-ratio: 325 / 232;
7
+ height: auto;
8
+ pointer-events: none;
9
+ }
10
+ .ad-spectrum[data-variant="bars"] {
11
+ max-width: 12rem;
12
+ aspect-ratio: 163 / 140;
13
+ }
14
+ .ad-spectrum[data-variant="segmented"] {
15
+ position: relative;
16
+ overflow: hidden;
17
+ }
18
+ .ad-spectrum[data-variant="segmented"] rect {
19
+ fill: var(--ad-primary-600);
20
+ }
21
+ /* A column is a window over its rows: both slide by transform on layers of their own. */
22
+ .ad-spectrum-column {
23
+ position: absolute;
24
+ top: 0;
25
+ height: 100%;
26
+ overflow: hidden;
27
+ transform: translateY(100%);
28
+ will-change: transform;
29
+ }
30
+ .ad-spectrum-column > svg {
31
+ display: block;
32
+ width: 100%;
33
+ height: 100%;
34
+ will-change: transform;
35
+ }
@@ -0,0 +1,15 @@
1
+ import type { CSSProperties, ReactNode } from "react";
2
+ /**
3
+ * One drawing of an artwork stack. A stack splits an SVG picture in its own paint order: the
4
+ * static parts (with their blurs) are painted once, and every part that pulses, twinkles or
5
+ * floats becomes a layer of its own that is only moved or faded on the compositor. Gradients
6
+ * and filters are declared once, in the bottom drawing; the others refer to them by id.
7
+ */
8
+ export declare function ArtLayer({ viewBox, className, origin, style, children, }: {
9
+ viewBox: string;
10
+ className?: string;
11
+ /** The point (in drawing units) a pulsing layer scales about. */
12
+ origin?: [number, number];
13
+ style?: CSSProperties;
14
+ children: ReactNode;
15
+ }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { type RefObject } from "react";
2
+ import { type Painting } from "../../core/noise";
3
+ /**
4
+ * Paints a procedural picture at the resolution its canvas is actually shown at (the box
5
+ * it covers times the screen's pixel density), so nothing is upscaled into blocks or
6
+ * stair-stepped edges. Repaints sharper when the box grows; reveals the canvas when ready.
7
+ */
8
+ export declare function useArtwork(ref: RefObject<HTMLCanvasElement | null>, key: string, width: number, height: number, painting: Painting): void;
@@ -0,0 +1,2 @@
1
+ import type { AutocompleteProps } from "../shared";
2
+ export declare const Autocomplete: ({ options, onOptionSelect, value, defaultValue, onValueChange, label, description, error, startAdornment, endAdornment, clearable, inputRef, className, size, variant, labelPlacement, tone: _tone, material: _material, style, children: _children, ...input }: AutocompleteProps) => import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ /* Styles owned by Autocomplete; the option list lives in Select/styles.css. */
@@ -0,0 +1,2 @@
1
+ import { type ButtonProps } from "../shared";
2
+ export declare const Button: import("react").ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1 @@
1
+ /* Styles owned by Button. */
@@ -0,0 +1,2 @@
1
+ import { type BooleanProps } from "../shared";
2
+ export declare const Checkbox: (p: BooleanProps) => import("react").JSX.Element;