@nous-research/ui 0.13.2 → 0.14.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.
- package/README.md +16 -0
- package/dist/assets/filler-bg0.webp +0 -0
- package/dist/assets.d.ts +38 -0
- package/dist/fonts.d.ts +0 -1
- package/dist/fonts.js +5 -7
- package/dist/hooks/use-capped-frame.d.ts +0 -1
- package/dist/hooks/use-capped-frame.js +12 -13
- package/dist/hooks/use-css-var-dims.d.ts +0 -1
- package/dist/hooks/use-css-var-dims.js +26 -21
- package/dist/hooks/use-gpu-tier.d.ts +0 -1
- package/dist/hooks/use-gpu-tier.js +90 -110
- package/dist/hooks/use-render-loop.d.ts +0 -1
- package/dist/hooks/use-render-loop.js +58 -58
- package/dist/hooks/use-smooth-controls.d.ts +0 -1
- package/dist/hooks/use-smooth-controls.js +204 -206
- package/dist/index.d.ts +0 -1
- package/dist/index.js +84 -58
- package/dist/ui/basic-page.d.ts +1 -2
- package/dist/ui/basic-page.js +15 -7
- package/dist/ui/build.css +1 -0
- package/dist/ui/components/animated-count.d.ts +1 -2
- package/dist/ui/components/animated-count.js +109 -85
- package/dist/ui/components/ascii.d.ts +2 -3
- package/dist/ui/components/ascii.js +75 -59
- package/dist/ui/components/badge.d.ts +1 -2
- package/dist/ui/components/badge.js +35 -18
- package/dist/ui/components/badges/nous-girl.d.ts +1 -2
- package/dist/ui/components/badges/nous-girl.js +80 -3
- package/dist/ui/components/blend-mode.d.ts +1 -2
- package/dist/ui/components/blend-mode.js +55 -63
- package/dist/ui/components/blink.d.ts +1 -2
- package/dist/ui/components/blink.js +15 -6
- package/dist/ui/components/button.d.ts +2 -3
- package/dist/ui/components/button.js +139 -90
- package/dist/ui/components/command-block.d.ts +2 -3
- package/dist/ui/components/command-block.js +52 -24
- package/dist/ui/components/cursor.d.ts +1 -2
- package/dist/ui/components/cursor.js +93 -54
- package/dist/ui/components/dropdown-menu.d.ts +1 -2
- package/dist/ui/components/dropdown-menu.js +99 -51
- package/dist/ui/components/fit-text/index.d.ts +0 -1
- package/dist/ui/components/fit-text/index.js +21 -13
- package/dist/ui/components/graphs/bar-chart.d.ts +1 -2
- package/dist/ui/components/graphs/bar-chart.js +116 -63
- package/dist/ui/components/graphs/index.d.ts +0 -1
- package/dist/ui/components/graphs/index.js +3 -4
- package/dist/ui/components/graphs/line-chart.d.ts +1 -2
- package/dist/ui/components/graphs/line-chart.js +159 -102
- package/dist/ui/components/graphs/utils.d.ts +2 -3
- package/dist/ui/components/graphs/utils.js +147 -114
- package/dist/ui/components/grid/index.d.ts +0 -1
- package/dist/ui/components/grid/index.js +12 -9
- package/dist/ui/components/hover-bg.d.ts +0 -1
- package/dist/ui/components/hover-bg.js +11 -6
- package/dist/ui/components/icons/arrow.d.ts +1 -2
- package/dist/ui/components/icons/arrow.js +42 -5
- package/dist/ui/components/icons/chevron.d.ts +1 -2
- package/dist/ui/components/icons/chevron.js +49 -5
- package/dist/ui/components/icons/discord.d.ts +1 -2
- package/dist/ui/components/icons/discord.js +12 -4
- package/dist/ui/components/icons/eye.d.ts +1 -2
- package/dist/ui/components/icons/eye.js +5 -3
- package/dist/ui/components/icons/gear.d.ts +1 -2
- package/dist/ui/components/icons/gear.js +28 -14
- package/dist/ui/components/icons/github.d.ts +1 -2
- package/dist/ui/components/icons/github.js +12 -4
- package/dist/ui/components/icons/hamburger.d.ts +1 -2
- package/dist/ui/components/icons/hamburger.js +54 -5
- package/dist/ui/components/icons/heart.d.ts +1 -2
- package/dist/ui/components/icons/heart.js +8 -3
- package/dist/ui/components/icons/index.d.ts +0 -1
- package/dist/ui/components/icons/index.js +11 -12
- package/dist/ui/components/icons/link.d.ts +1 -2
- package/dist/ui/components/icons/link.js +10 -3
- package/dist/ui/components/icons/minus.d.ts +1 -2
- package/dist/ui/components/icons/minus.js +10 -3
- package/dist/ui/components/icons/search.d.ts +1 -2
- package/dist/ui/components/icons/search.js +30 -3
- package/dist/ui/components/image-distortion.d.ts +1 -2
- package/dist/ui/components/image-distortion.js +300 -265
- package/dist/ui/components/leva-client.d.ts +1 -2
- package/dist/ui/components/leva-client.js +9 -10
- package/dist/ui/components/list-item.d.ts +0 -1
- package/dist/ui/components/list-item.js +26 -10
- package/dist/ui/components/modal/index.d.ts +1 -2
- package/dist/ui/components/modal/index.js +33 -14
- package/dist/ui/components/overlays/blend-modes.d.ts +0 -1
- package/dist/ui/components/overlays/blend-modes.js +11 -12
- package/dist/ui/components/overlays/glitch.d.ts +1 -2
- package/dist/ui/components/overlays/glitch.js +115 -110
- package/dist/ui/components/overlays/greys.d.ts +1 -2
- package/dist/ui/components/overlays/greys.js +200 -179
- package/dist/ui/components/overlays/index.d.ts +1 -2
- package/dist/ui/components/overlays/index.js +31 -17
- package/dist/ui/components/overlays/lens-layers.d.ts +1 -2
- package/dist/ui/components/overlays/lens-layers.js +89 -65
- package/dist/ui/components/overlays/lens.d.ts +0 -1
- package/dist/ui/components/overlays/lens.js +46 -52
- package/dist/ui/components/overlays/noise.d.ts +1 -2
- package/dist/ui/components/overlays/noise.js +112 -113
- package/dist/ui/components/overlays/vignette.d.ts +1 -2
- package/dist/ui/components/overlays/vignette.js +44 -38
- package/dist/ui/components/poster.d.ts +1 -2
- package/dist/ui/components/poster.js +240 -87
- package/dist/ui/components/progress.d.ts +1 -2
- package/dist/ui/components/progress.js +52 -12
- package/dist/ui/components/scene-canvas.d.ts +1 -2
- package/dist/ui/components/scene-canvas.js +169 -119
- package/dist/ui/components/scramble.d.ts +1 -2
- package/dist/ui/components/scramble.js +60 -59
- package/dist/ui/components/segmented.d.ts +2 -3
- package/dist/ui/components/segmented.js +47 -12
- package/dist/ui/components/select.d.ts +1 -2
- package/dist/ui/components/select.js +207 -120
- package/dist/ui/components/selection-switcher.d.ts +0 -1
- package/dist/ui/components/selection-switcher.js +29 -25
- package/dist/ui/components/shader.d.ts +1 -2
- package/dist/ui/components/shader.js +56 -38
- package/dist/ui/components/socials.d.ts +1 -2
- package/dist/ui/components/socials.js +18 -7
- package/dist/ui/components/spinner.d.ts +1 -2
- package/dist/ui/components/spinner.js +36 -25
- package/dist/ui/components/stats.d.ts +1 -2
- package/dist/ui/components/stats.js +33 -9
- package/dist/ui/components/switch.d.ts +0 -1
- package/dist/ui/components/switch.js +35 -11
- package/dist/ui/components/tabs.d.ts +3 -4
- package/dist/ui/components/tabs.js +38 -12
- package/dist/ui/components/terminal-demo.d.ts +1 -2
- package/dist/ui/components/terminal-demo.js +119 -74
- package/dist/ui/components/theme-toggle.d.ts +1 -2
- package/dist/ui/components/theme-toggle.js +63 -8
- package/dist/ui/components/tier-card.d.ts +1 -2
- package/dist/ui/components/tier-card.js +144 -24
- package/dist/ui/components/tv.d.ts +1 -2
- package/dist/ui/components/tv.js +138 -90
- package/dist/ui/components/typography/h1.d.ts +0 -1
- package/dist/ui/components/typography/h1.js +17 -8
- package/dist/ui/components/typography/h2.d.ts +0 -1
- package/dist/ui/components/typography/h2.js +17 -8
- package/dist/ui/components/typography/index.d.ts +0 -1
- package/dist/ui/components/typography/index.js +35 -24
- package/dist/ui/components/typography/legend.d.ts +1 -2
- package/dist/ui/components/typography/legend.js +18 -6
- package/dist/ui/components/typography/small.d.ts +0 -1
- package/dist/ui/components/typography/small.js +8 -7
- package/dist/ui/components/watchlist.d.ts +1 -2
- package/dist/ui/components/watchlist.js +77 -25
- package/dist/ui/fonts.css +7 -7
- package/dist/ui/footer.d.ts +1 -2
- package/dist/ui/footer.js +61 -25
- package/dist/ui/globals.css +5 -1
- package/dist/ui/header.d.ts +1 -2
- package/dist/ui/header.js +255 -60
- package/dist/ui/layout-wrapper.d.ts +1 -2
- package/dist/ui/layout-wrapper.js +5 -4
- package/dist/utils/color.d.ts +0 -1
- package/dist/utils/color.js +8 -9
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +37 -38
- package/dist/utils/poly.d.ts +0 -1
- package/dist/utils/poly.js +1 -2
- package/package.json +42 -24
- package/dist/assets/filler-bg0.jpg +0 -0
- package/dist/fonts.d.ts.map +0 -1
- package/dist/fonts.js.map +0 -1
- package/dist/hooks/use-capped-frame.d.ts.map +0 -1
- package/dist/hooks/use-capped-frame.js.map +0 -1
- package/dist/hooks/use-css-var-dims.d.ts.map +0 -1
- package/dist/hooks/use-css-var-dims.js.map +0 -1
- package/dist/hooks/use-gpu-tier.d.ts.map +0 -1
- package/dist/hooks/use-gpu-tier.js.map +0 -1
- package/dist/hooks/use-render-loop.d.ts.map +0 -1
- package/dist/hooks/use-render-loop.js.map +0 -1
- package/dist/hooks/use-smooth-controls.d.ts.map +0 -1
- package/dist/hooks/use-smooth-controls.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ui/basic-page.d.ts.map +0 -1
- package/dist/ui/basic-page.js.map +0 -1
- package/dist/ui/components/animated-count.d.ts.map +0 -1
- package/dist/ui/components/animated-count.js.map +0 -1
- package/dist/ui/components/ascii.d.ts.map +0 -1
- package/dist/ui/components/ascii.js.map +0 -1
- package/dist/ui/components/badge.d.ts.map +0 -1
- package/dist/ui/components/badge.js.map +0 -1
- package/dist/ui/components/badges/nous-girl.d.ts.map +0 -1
- package/dist/ui/components/badges/nous-girl.js.map +0 -1
- package/dist/ui/components/blend-mode.d.ts.map +0 -1
- package/dist/ui/components/blend-mode.js.map +0 -1
- package/dist/ui/components/blink.d.ts.map +0 -1
- package/dist/ui/components/blink.js.map +0 -1
- package/dist/ui/components/button.d.ts.map +0 -1
- package/dist/ui/components/button.js.map +0 -1
- package/dist/ui/components/command-block.d.ts.map +0 -1
- package/dist/ui/components/command-block.js.map +0 -1
- package/dist/ui/components/cursor.d.ts.map +0 -1
- package/dist/ui/components/cursor.js.map +0 -1
- package/dist/ui/components/dropdown-menu.d.ts.map +0 -1
- package/dist/ui/components/dropdown-menu.js.map +0 -1
- package/dist/ui/components/fit-text/index.d.ts.map +0 -1
- package/dist/ui/components/fit-text/index.js.map +0 -1
- package/dist/ui/components/graphs/bar-chart.d.ts.map +0 -1
- package/dist/ui/components/graphs/bar-chart.js.map +0 -1
- package/dist/ui/components/graphs/index.d.ts.map +0 -1
- package/dist/ui/components/graphs/index.js.map +0 -1
- package/dist/ui/components/graphs/line-chart.d.ts.map +0 -1
- package/dist/ui/components/graphs/line-chart.js.map +0 -1
- package/dist/ui/components/graphs/utils.d.ts.map +0 -1
- package/dist/ui/components/graphs/utils.js.map +0 -1
- package/dist/ui/components/grid/index.d.ts.map +0 -1
- package/dist/ui/components/grid/index.js.map +0 -1
- package/dist/ui/components/hover-bg.d.ts.map +0 -1
- package/dist/ui/components/hover-bg.js.map +0 -1
- package/dist/ui/components/icons/arrow.d.ts.map +0 -1
- package/dist/ui/components/icons/arrow.js.map +0 -1
- package/dist/ui/components/icons/chevron.d.ts.map +0 -1
- package/dist/ui/components/icons/chevron.js.map +0 -1
- package/dist/ui/components/icons/discord.d.ts.map +0 -1
- package/dist/ui/components/icons/discord.js.map +0 -1
- package/dist/ui/components/icons/eye.d.ts.map +0 -1
- package/dist/ui/components/icons/eye.js.map +0 -1
- package/dist/ui/components/icons/gear.d.ts.map +0 -1
- package/dist/ui/components/icons/gear.js.map +0 -1
- package/dist/ui/components/icons/github.d.ts.map +0 -1
- package/dist/ui/components/icons/github.js.map +0 -1
- package/dist/ui/components/icons/hamburger.d.ts.map +0 -1
- package/dist/ui/components/icons/hamburger.js.map +0 -1
- package/dist/ui/components/icons/heart.d.ts.map +0 -1
- package/dist/ui/components/icons/heart.js.map +0 -1
- package/dist/ui/components/icons/index.d.ts.map +0 -1
- package/dist/ui/components/icons/index.js.map +0 -1
- package/dist/ui/components/icons/link.d.ts.map +0 -1
- package/dist/ui/components/icons/link.js.map +0 -1
- package/dist/ui/components/icons/minus.d.ts.map +0 -1
- package/dist/ui/components/icons/minus.js.map +0 -1
- package/dist/ui/components/icons/search.d.ts.map +0 -1
- package/dist/ui/components/icons/search.js.map +0 -1
- package/dist/ui/components/image-distortion.d.ts.map +0 -1
- package/dist/ui/components/image-distortion.js.map +0 -1
- package/dist/ui/components/leva-client.d.ts.map +0 -1
- package/dist/ui/components/leva-client.js.map +0 -1
- package/dist/ui/components/list-item.d.ts.map +0 -1
- package/dist/ui/components/list-item.js.map +0 -1
- package/dist/ui/components/modal/index.d.ts.map +0 -1
- package/dist/ui/components/modal/index.js.map +0 -1
- package/dist/ui/components/overlays/blend-modes.d.ts.map +0 -1
- package/dist/ui/components/overlays/blend-modes.js.map +0 -1
- package/dist/ui/components/overlays/glitch.d.ts.map +0 -1
- package/dist/ui/components/overlays/glitch.js.map +0 -1
- package/dist/ui/components/overlays/greys.d.ts.map +0 -1
- package/dist/ui/components/overlays/greys.js.map +0 -1
- package/dist/ui/components/overlays/index.d.ts.map +0 -1
- package/dist/ui/components/overlays/index.js.map +0 -1
- package/dist/ui/components/overlays/lens-layers.d.ts.map +0 -1
- package/dist/ui/components/overlays/lens-layers.js.map +0 -1
- package/dist/ui/components/overlays/lens.d.ts.map +0 -1
- package/dist/ui/components/overlays/lens.js.map +0 -1
- package/dist/ui/components/overlays/noise.d.ts.map +0 -1
- package/dist/ui/components/overlays/noise.js.map +0 -1
- package/dist/ui/components/overlays/vignette.d.ts.map +0 -1
- package/dist/ui/components/overlays/vignette.js.map +0 -1
- package/dist/ui/components/poster.d.ts.map +0 -1
- package/dist/ui/components/poster.js.map +0 -1
- package/dist/ui/components/progress.d.ts.map +0 -1
- package/dist/ui/components/progress.js.map +0 -1
- package/dist/ui/components/scene-canvas.d.ts.map +0 -1
- package/dist/ui/components/scene-canvas.js.map +0 -1
- package/dist/ui/components/scramble.d.ts.map +0 -1
- package/dist/ui/components/scramble.js.map +0 -1
- package/dist/ui/components/segmented.d.ts.map +0 -1
- package/dist/ui/components/segmented.js.map +0 -1
- package/dist/ui/components/select.d.ts.map +0 -1
- package/dist/ui/components/select.js.map +0 -1
- package/dist/ui/components/selection-switcher.d.ts.map +0 -1
- package/dist/ui/components/selection-switcher.js.map +0 -1
- package/dist/ui/components/shader.d.ts.map +0 -1
- package/dist/ui/components/shader.js.map +0 -1
- package/dist/ui/components/socials.d.ts.map +0 -1
- package/dist/ui/components/socials.js.map +0 -1
- package/dist/ui/components/spinner.d.ts.map +0 -1
- package/dist/ui/components/spinner.js.map +0 -1
- package/dist/ui/components/stats.d.ts.map +0 -1
- package/dist/ui/components/stats.js.map +0 -1
- package/dist/ui/components/switch.d.ts.map +0 -1
- package/dist/ui/components/switch.js.map +0 -1
- package/dist/ui/components/tabs.d.ts.map +0 -1
- package/dist/ui/components/tabs.js.map +0 -1
- package/dist/ui/components/terminal-demo.d.ts.map +0 -1
- package/dist/ui/components/terminal-demo.js.map +0 -1
- package/dist/ui/components/theme-toggle.d.ts.map +0 -1
- package/dist/ui/components/theme-toggle.js.map +0 -1
- package/dist/ui/components/tier-card.d.ts.map +0 -1
- package/dist/ui/components/tier-card.js.map +0 -1
- package/dist/ui/components/tv.d.ts.map +0 -1
- package/dist/ui/components/tv.js.map +0 -1
- package/dist/ui/components/typography/h1.d.ts.map +0 -1
- package/dist/ui/components/typography/h1.js.map +0 -1
- package/dist/ui/components/typography/h2.d.ts.map +0 -1
- package/dist/ui/components/typography/h2.js.map +0 -1
- package/dist/ui/components/typography/index.d.ts.map +0 -1
- package/dist/ui/components/typography/index.js.map +0 -1
- package/dist/ui/components/typography/legend.d.ts.map +0 -1
- package/dist/ui/components/typography/legend.js.map +0 -1
- package/dist/ui/components/typography/small.d.ts.map +0 -1
- package/dist/ui/components/typography/small.js.map +0 -1
- package/dist/ui/components/watchlist.d.ts.map +0 -1
- package/dist/ui/components/watchlist.js.map +0 -1
- package/dist/ui/footer.d.ts.map +0 -1
- package/dist/ui/footer.js.map +0 -1
- package/dist/ui/header.d.ts.map +0 -1
- package/dist/ui/header.js.map +0 -1
- package/dist/ui/layout-wrapper.d.ts.map +0 -1
- package/dist/ui/layout-wrapper.js.map +0 -1
- package/dist/utils/color.d.ts.map +0 -1
- package/dist/utils/color.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/poly.d.ts.map +0 -1
- package/dist/utils/poly.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
export function LayoutWrapper({
|
|
3
|
-
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
export function LayoutWrapper({
|
|
3
|
+
children
|
|
4
|
+
}) {
|
|
5
|
+
return /* @__PURE__ */ jsx("html", { lang: "en", children: /* @__PURE__ */ jsx("body", { className: "text-midground font-mondwest bg-black uppercase antialiased", children }) });
|
|
4
6
|
}
|
|
5
|
-
//# sourceMappingURL=layout-wrapper.js.map
|
package/dist/utils/color.d.ts
CHANGED
|
@@ -2,4 +2,3 @@ export declare const hexToRgb: (hex: string) => number[];
|
|
|
2
2
|
export declare const rgbToHex: (r: number, g: number, b: number) => string;
|
|
3
3
|
export declare const colorDodge: (base: string, blend: string) => string;
|
|
4
4
|
export declare const colorMix: (color: string, alpha: number) => string;
|
|
5
|
-
//# sourceMappingURL=color.d.ts.map
|
package/dist/utils/color.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
export const hexToRgb = (hex) => [
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
parseInt(hex.slice(1, 3), 16),
|
|
3
|
+
parseInt(hex.slice(3, 5), 16),
|
|
4
|
+
parseInt(hex.slice(5, 7), 16)
|
|
5
5
|
];
|
|
6
|
-
export const rgbToHex = (r, g, b) => `#${[r, g, b].map(v => v.toString(16).padStart(2,
|
|
6
|
+
export const rgbToHex = (r, g, b) => `#${[r, g, b].map((v) => v.toString(16).padStart(2, "0")).join("")}`;
|
|
7
7
|
export const colorDodge = (base, blend) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const [br, bg, bb] = hexToRgb(base);
|
|
9
|
+
const [lr, lg, lb] = hexToRgb(blend);
|
|
10
|
+
const d = (b, l) => l === 255 ? 255 : Math.min(255, Math.floor(b * 255 / (255 - l)));
|
|
11
|
+
return rgbToHex(d(br, lr), d(bg, lg), d(bb, lb));
|
|
12
12
|
};
|
|
13
13
|
export const colorMix = (color, alpha) => `color-mix(in srgb, ${color} ${Math.round(alpha * 100)}%, transparent)`;
|
|
14
|
-
//# sourceMappingURL=color.js.map
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -1,48 +1,47 @@
|
|
|
1
|
-
import { clsx } from
|
|
2
|
-
import sanitize from
|
|
3
|
-
import { twMerge } from
|
|
4
|
-
import * as THREE from
|
|
5
|
-
import { hexToRgb, rgbToHex } from
|
|
6
|
-
import { polyRef } from
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import sanitize from "sanitize-html";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
import { hexToRgb, rgbToHex } from "./color.js";
|
|
6
|
+
import { polyRef } from "./poly.js";
|
|
7
7
|
export { hexToRgb, polyRef, rgbToHex };
|
|
8
8
|
export const cn = (...inputs) => twMerge(clsx(inputs));
|
|
9
9
|
export const clamp = (v, min = 0, max = 1) => Math.min(max, Math.max(min, Number.isFinite(v) ? v : min));
|
|
10
10
|
export const smoothstep = (edge0, edge1, x) => {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const t = clamp((x - edge0) / (edge1 - edge0));
|
|
12
|
+
return t * t * (3 - 2 * t);
|
|
13
13
|
};
|
|
14
14
|
export const hexToVec3 = (hex) => {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const [r, g, b] = hexToRgb(hex);
|
|
16
|
+
return new THREE.Vector3(r / 255, g / 255, b / 255);
|
|
17
17
|
};
|
|
18
18
|
export const truncate = (text, options) => text.length > options.length ? `${text.slice(0, options.length)}...` : text;
|
|
19
19
|
export const stripWpStyles = (html) => sanitize(html, {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
20
|
+
allowedAttributes: {
|
|
21
|
+
a: ["href", "target", "rel", "name"],
|
|
22
|
+
audio: ["src", "controls"],
|
|
23
|
+
iframe: ["src", "width", "height", "frameborder", "allowfullscreen"],
|
|
24
|
+
img: ["src", "alt", "width", "height", "loading"],
|
|
25
|
+
source: ["src", "type", "srcset"],
|
|
26
|
+
td: ["colspan", "rowspan"],
|
|
27
|
+
th: ["colspan", "rowspan"],
|
|
28
|
+
video: ["src", "controls", "width", "height", "poster"]
|
|
29
|
+
},
|
|
30
|
+
allowedIframeHostnames: [
|
|
31
|
+
"www.youtube.com",
|
|
32
|
+
"youtube.com",
|
|
33
|
+
"player.vimeo.com"
|
|
34
|
+
],
|
|
35
|
+
allowedSchemes: ["http", "https", "mailto"],
|
|
36
|
+
allowedTags: [
|
|
37
|
+
...sanitize.defaults.allowedTags,
|
|
38
|
+
"img",
|
|
39
|
+
"figure",
|
|
40
|
+
"figcaption",
|
|
41
|
+
"iframe",
|
|
42
|
+
"video",
|
|
43
|
+
"audio",
|
|
44
|
+
"source",
|
|
45
|
+
"picture"
|
|
46
|
+
]
|
|
47
47
|
});
|
|
48
|
-
//# sourceMappingURL=index.js.map
|
package/dist/utils/poly.d.ts
CHANGED
|
@@ -6,4 +6,3 @@ export type PolyComponent<D extends React.ElementType, Own extends object = obje
|
|
|
6
6
|
ref?: PolyRef<T>;
|
|
7
7
|
}) => null | React.ReactElement;
|
|
8
8
|
export declare const polyRef: <D extends React.ElementType, Own extends object = object>(render: <T extends React.ElementType = D>(props: PolyProps<T, Own>, ref: PolyRef<T>) => null | React.ReactElement) => PolyComponent<D, Own>;
|
|
9
|
-
//# sourceMappingURL=poly.d.ts.map
|
package/dist/utils/poly.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nous-research/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"sideEffects": [
|
|
@@ -33,50 +33,63 @@
|
|
|
33
33
|
"types": "./dist/hooks/*.d.ts",
|
|
34
34
|
"import": "./dist/hooks/*.js"
|
|
35
35
|
},
|
|
36
|
+
"./fonts/*": "./dist/fonts/*",
|
|
36
37
|
"./assets/*": "./dist/assets/*",
|
|
38
|
+
"./styles/fonts.css": "./dist/ui/fonts.css",
|
|
37
39
|
"./styles/globals.css": "./dist/ui/globals.css"
|
|
38
40
|
},
|
|
39
41
|
"scripts": {
|
|
40
42
|
"dev": "storybook dev -p 6006",
|
|
41
43
|
"prepublishOnly": "pnpm build",
|
|
42
|
-
"build": "
|
|
43
|
-
"build:watch": "
|
|
44
|
+
"build": "unbuild",
|
|
45
|
+
"build:watch": "unbuild --watch",
|
|
44
46
|
"build-storybook": "storybook build -o storybook-static",
|
|
45
47
|
"test": "pnpm type-check",
|
|
48
|
+
"test-storybook": "vitest --project=storybook",
|
|
46
49
|
"type-check": "tsc -p tsconfig.build.json --noEmit"
|
|
47
50
|
},
|
|
48
51
|
"dependencies": {
|
|
49
|
-
"@nanostores/react": "^1.
|
|
52
|
+
"@nanostores/react": "^1.1.0",
|
|
50
53
|
"class-variance-authority": "^0.7.1",
|
|
51
54
|
"clsx": "^2.1.1",
|
|
52
|
-
"nanostores": "^1.0
|
|
53
|
-
"sanitize-html": "^2.
|
|
54
|
-
"tailwind-merge": "^3.
|
|
55
|
+
"nanostores": "^1.3.0",
|
|
56
|
+
"sanitize-html": "^2.17.4",
|
|
57
|
+
"tailwind-merge": "^3.6.0",
|
|
55
58
|
"tw-animate-css": "^1.4.0",
|
|
56
59
|
"unicode-animations": "^1.0.3"
|
|
57
60
|
},
|
|
58
61
|
"devDependencies": {
|
|
59
62
|
"@observablehq/plot": "^0.6.17",
|
|
60
|
-
"@react-three/fiber": "^9.
|
|
61
|
-
"@storybook/addon-a11y": "^10.
|
|
62
|
-
"@storybook/addon-docs": "^10.
|
|
63
|
-
"@storybook/
|
|
64
|
-
"@
|
|
65
|
-
"@tailwindcss/
|
|
66
|
-
"@
|
|
67
|
-
"@types/
|
|
63
|
+
"@react-three/fiber": "^9.6.1",
|
|
64
|
+
"@storybook/addon-a11y": "^10.4.0",
|
|
65
|
+
"@storybook/addon-docs": "^10.4.0",
|
|
66
|
+
"@storybook/addon-vitest": "^10.4.0",
|
|
67
|
+
"@storybook/react-vite": "^10.4.0",
|
|
68
|
+
"@tailwindcss/cli": "^4.3.0",
|
|
69
|
+
"@tailwindcss/vite": "^4.3.0",
|
|
70
|
+
"@types/node": "25.8.0",
|
|
71
|
+
"@types/react": "^19.2.14",
|
|
68
72
|
"@types/react-dom": "^19.2.3",
|
|
69
|
-
"@types/sanitize-html": "^2.16.
|
|
70
|
-
"@types/three": "^0.
|
|
71
|
-
"@vitejs/plugin-react": "^
|
|
72
|
-
"
|
|
73
|
+
"@types/sanitize-html": "^2.16.1",
|
|
74
|
+
"@types/three": "^0.184.1",
|
|
75
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
76
|
+
"@vitest/browser-playwright": "^4.1.6",
|
|
77
|
+
"glob": "^13.0.6",
|
|
78
|
+
"gsap": "^3.15.0",
|
|
73
79
|
"leva": "^0.10.1",
|
|
80
|
+
"mockdate": "^3.0.5",
|
|
74
81
|
"motion": "^12.38.0",
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
82
|
+
"msw": "^2.14.6",
|
|
83
|
+
"msw-storybook-addon": "^2.0.7",
|
|
84
|
+
"playwright": "^1.60.0",
|
|
85
|
+
"storybook": "^10.4.0",
|
|
86
|
+
"tailwindcss": "^4.3.0",
|
|
87
|
+
"three": "^0.184.0",
|
|
88
|
+
"typescript": "^6.0.3",
|
|
89
|
+
"unbuild": "^3.6.1",
|
|
90
|
+
"vite": "^8.0.13",
|
|
91
|
+
"vite-plugin-static-copy": "^4.1.0",
|
|
92
|
+
"vitest": "^4.1.6"
|
|
80
93
|
},
|
|
81
94
|
"peerDependencies": {
|
|
82
95
|
"@observablehq/plot": "^0.6.17",
|
|
@@ -104,5 +117,10 @@
|
|
|
104
117
|
"gsap": {
|
|
105
118
|
"optional": true
|
|
106
119
|
}
|
|
120
|
+
},
|
|
121
|
+
"msw": {
|
|
122
|
+
"workerDirectory": [
|
|
123
|
+
"public"
|
|
124
|
+
]
|
|
107
125
|
}
|
|
108
126
|
}
|
|
Binary file
|
package/dist/fonts.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,eAAO,MAAM,SAAS,gBAAgB,CAAA;AACtC,eAAO,MAAM,SAAS,gBAAgB,CAAA;AACtC,eAAO,MAAM,qBAAqB,4BAA4B,CAAA;AAC9D,eAAO,MAAM,mBAAmB,0BAA0B,CAAA;AAC1D,eAAO,MAAM,aAAa,oBAAoB,CAAA"}
|
package/dist/fonts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAA;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAA;AACtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAA;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAA;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAA","sourcesContent":["/** CSS variable names for the design language fonts. Set automatically by fonts.css. */\nexport const FONT_SANS = '--font-sans'\nexport const FONT_MONO = '--font-mono'\nexport const FONT_RULES_COMPRESSED = '--font-rules-compressed'\nexport const FONT_RULES_EXPANDED = '--font-rules-expanded'\nexport const FONT_MONDWEST = '--font-mondwest'\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-capped-frame.d.ts","sourceRoot":"","sources":["../../src/hooks/use-capped-frame.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGxD,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,QAW9D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-capped-frame.js","sourceRoot":"","sources":["../../src/hooks/use-capped-frame.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,MAAM,UAAU,cAAc,CAAC,EAAkB,EAAE,GAAY;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAE9D,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YAChC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACf,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["'use client'\n\nimport { useFrame, useThree } from '@react-three/fiber'\nimport type { RenderCallback } from '@react-three/fiber'\nimport { useRef } from 'react'\n\nexport function useCappedFrame(cb: RenderCallback, max?: number) {\n const last = useRef(performance.now())\n const { size } = useThree()\n const interval = 1e3 / (max ?? (size.width < 1024 ? 60 : 120))\n\n useFrame((st, delta) => {\n if (performance.now() - last.current > interval) {\n last.current = performance.now()\n cb(st, delta)\n }\n })\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-css-var-dims.d.ts","sourceRoot":"","sources":["../../src/hooks/use-css-var-dims.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAgCzC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-css-var-dims.js","sourceRoot":"","sources":["../../src/hooks/use-css-var-dims.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAAwC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;YAC/C,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,KAAK,IAAI,QAAQ,EACjB,GAAG,KAAK,IAAI,CACb,CAAA;YAED,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,KAAK,IAAI,SAAS,EAClB,GAAG,MAAM,IAAI,CACd,CAAA;QACH,CAAC,CAAA;QAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;QAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAErB,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAEvB,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;AACjB,CAAC","sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\n\nexport function useCssVarDims(\n name: string,\n ref: React.RefObject<HTMLElement | null>\n) {\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const update = (width: number, height: number) => {\n document.documentElement.style.setProperty(\n `--${name}-width`,\n `${width}px`\n )\n\n document.documentElement.style.setProperty(\n `--${name}-height`,\n `${height}px`\n )\n }\n\n const { height, width } = ref.current.getBoundingClientRect()\n update(width, height)\n\n const ro = new ResizeObserver(entries => {\n for (const entry of entries) {\n update(entry.contentRect.width, entry.contentRect.height)\n }\n })\n\n ro.observe(ref.current)\n\n return () => ro.disconnect()\n }, [name, ref])\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-gpu-tier.d.ts","sourceRoot":"","sources":["../../src/hooks/use-gpu-tier.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,QAAQ,mEAAmB,CAAA;AAuIxC,wBAAgB,UAAU,YAEzB;AAED,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-gpu-tier.js","sourceRoot":"","sources":["../../src/hooks/use-gpu-tier.ts"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useStore } from '@nanostores/react'\nimport { atom } from 'nanostores'\n\n/**\n * Tiers:\n * 0 — no WebGL / software renderer / prefers-reduced-motion / WebGL ctx creation failed\n * 1 — low-end GPU (integrated, mobile, or failed perf benchmark)\n * 2 — capable GPU (discrete / high-end integrated)\n *\n * Detection runs **synchronously** the first time this module is evaluated\n * on the client (see the IIFE at the bottom of the file). That means any\n * consumer reading `$gpuTier` during its first render already sees the\n * post-detection value, so WebGL components can avoid trying to create a\n * `THREE.WebGLRenderer` on hardware where context creation will fail.\n *\n * The previous version ran the probe inside `nanostores`'s `onMount`\n * lifecycle, which fires from a microtask after the first listener\n * subscribes — i.e. after the first React commit. By that point overlay\n * components had already executed `new THREE.WebGLRenderer(...)` against\n * the optimistic default, logged `Error creating WebGL context`, and only\n * unmounted on a follow-up render. Eager module-load detection closes that\n * race.\n */\nexport const $gpuTier = atom<GpuTier>(2)\n\nconst SOFTWARE_PATTERNS =\n /swiftshader|llvmpipe|softpipe|software|microsoft basic/i\n\nconst LOW_END_PATTERNS =\n /intel.*hd|intel.*uhd|intel.*iris|mali|adreno\\s?[1-5]|powervr|apple gpu/i\n\nlet detected = false\n\nfunction detectGpuTier() {\n if (detected || typeof window === 'undefined') {\n return\n }\n\n detected = true\n\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n $gpuTier.set(0)\n\n return\n }\n\n let gl: null | WebGLRenderingContext = null\n\n try {\n const canvas = document.createElement('canvas')\n gl = (canvas.getContext('webgl') ||\n canvas.getContext('experimental-webgl')) as null | WebGLRenderingContext\n } catch {\n // Some sandboxed / hardened contexts throw on getContext rather than\n // returning null (e.g. certain corporate browser policies). Treat as\n // \"no WebGL available\".\n $gpuTier.set(0)\n\n return\n }\n\n if (!gl) {\n $gpuTier.set(0)\n\n return\n }\n\n const ext = gl.getExtension('WEBGL_debug_renderer_info')\n const renderer = String(\n ext\n ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL)\n : gl.getParameter(gl.RENDERER)\n )\n\n if (SOFTWARE_PATTERNS.test(renderer)) {\n $gpuTier.set(0)\n gl.getExtension('WEBGL_lose_context')?.loseContext()\n\n return\n }\n\n if (LOW_END_PATTERNS.test(renderer)) {\n $gpuTier.set(1)\n gl.getExtension('WEBGL_lose_context')?.loseContext()\n\n return\n }\n\n $gpuTier.set(2)\n\n runBenchmark(gl)\n .then(fps => $gpuTier.set(fps < 30 ? 1 : 2))\n .catch(() => $gpuTier.set(1))\n .finally(() => gl?.getExtension('WEBGL_lose_context')?.loseContext())\n}\n\nif (typeof window !== 'undefined') {\n detectGpuTier()\n}\n\nfunction runBenchmark(gl: WebGLRenderingContext): Promise<number> {\n return new Promise(resolve => {\n const vs = gl.createShader(gl.VERTEX_SHADER)!\n const fs = gl.createShader(gl.FRAGMENT_SHADER)!\n gl.shaderSource(\n vs,\n 'attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}'\n )\n gl.shaderSource(\n fs,\n 'precision highp float;uniform float t;void main(){float v=0.;for(int i=0;i<64;i++)v+=sin(float(i)*t*.01);gl_FragColor=vec4(v*.001);}'\n )\n gl.compileShader(vs)\n gl.compileShader(fs)\n\n const prog = gl.createProgram()!\n gl.attachShader(prog, vs)\n gl.attachShader(prog, fs)\n gl.linkProgram(prog)\n gl.useProgram(prog)\n\n const buf = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, buf)\n gl.bufferData(\n gl.ARRAY_BUFFER,\n new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]),\n gl.STATIC_DRAW\n )\n const a = gl.getAttribLocation(prog, 'a')\n gl.enableVertexAttribArray(a)\n gl.vertexAttribPointer(a, 2, gl.FLOAT, false, 0, 0)\n\n const uT = gl.getUniformLocation(prog, 't')\n let frames = 0\n const start = performance.now()\n\n const tick = () => {\n gl.uniform1f(uT, frames)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4)\n gl.finish()\n frames++\n\n if (performance.now() - start < 200) {\n requestAnimationFrame(tick)\n } else {\n const elapsed = performance.now() - start\n gl.deleteProgram(prog)\n gl.deleteShader(vs)\n gl.deleteShader(fs)\n gl.deleteBuffer(buf)\n resolve((frames / elapsed) * 1000)\n }\n }\n\n requestAnimationFrame(tick)\n })\n}\n\nexport function useGpuTier() {\n return useStore($gpuTier)\n}\n\ntype GpuTier = 0 | 1 | 2\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-loop.d.ts","sourceRoot":"","sources":["../../src/hooks/use-render-loop.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,UAAU,oBAAoB;IAC5B;iEAC6D;IAC7D,EAAE,EAAE,OAAO,CAAA;IACX;0DACsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;0EAEsE;IACtE,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,wBAAgB,aAAa,CAAC,EAC5B,EAAE,EACF,aAAiB,EACjB,OAAO,EACR,EAAE,oBAAoB,cAyEtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-render-loop.js","sourceRoot":"","sources":["../../src/hooks/use-render-loop.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AA2CZ,MAAM,UAAU,aAAa,CAAC,EAC5B,EAAE,EACF,aAAa,GAAG,CAAC,EACjB,OAAO,EACc;IACrB,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAC5B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,KAAgD,CAAA;IAEpD,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAA;QAE1B,mEAAmE;QACnE,+DAA+D;QAC/D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YACxB,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAA;IAED,MAAM,EAAE,GAAG,IAAI,oBAAoB,CACjC,OAAO,CAAC,EAAE;QACR,MAAM,SAAS,GAAG,MAAM,CAAA;QACxB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;QAE5C,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YACxB,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,EACD,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAA;IAED,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACd,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;IAE3D,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,mEAAmE;YACnE,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;QACjC,IAAI,GAAG,GAAG,CAAA;QAEV,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,QAAQ,EAAE,CAAA;IACZ,CAAC,CAAA;IAED,SAAS,QAAQ;QACf,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;YAAE,OAAM;QAE3C,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;QACzC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,CAAA;IAEV,OAAO,GAAG,EAAE;QACV,OAAO,GAAG,KAAK,CAAA;QACf,EAAE,CAAC,UAAU,EAAE,CAAA;QACf,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;QAC9D,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;AACH,CAAC","sourcesContent":["'use client'\n\n/**\n * Visibility- and intersection-aware render-loop helper for the WebGL\n * overlays.\n *\n * The overlays were previously running fragment shaders at 60fps for the\n * entire lifetime of the page — including when the tab was hidden, the\n * canvas had been scrolled out of view, or the user had been idle for\n * hours. On retina laptops the compositor cost of mix-blend-mode on a\n * full-viewport canvas plus continuous WebGL rasterisation is enough to\n * keep the GPU hot indefinitely, which is what manifests as \"fans go\n * crazy after 2 hours of idle\".\n *\n * `runRenderLoop` wraps a frame callback so that it:\n *\n * 1. Pauses entirely when `document.hidden` is true (background tab,\n * minimised window, screen locked).\n * 2. Pauses when the canvas's bounding rect is offscreen (we tell\n * `IntersectionObserver` to look at the canvas itself).\n * 3. Optionally caps the frame rate via a min-interval — the previous\n * `gpuTier === 1 ? setTimeout(loop, 100) : raf` trick is preserved\n * and extended so even tier-2 GPUs cap at e.g. 30fps for overlays\n * that don't need 60.\n *\n * The callback receives the *delta* time in seconds since the last call\n * (so `uTime` advances correctly across pauses without ever skipping\n * forward by hours).\n */\n\ninterface RunRenderLoopOptions {\n /** Element to observe with IntersectionObserver. When fully out of\n * view, the loop pauses. Pass the canvas element itself. */\n el: Element\n /** Min ms between frames. 0 = no cap (uses requestAnimationFrame).\n * Anything > 0 uses setTimeout-driven scheduling. */\n minIntervalMs?: number\n /** Frame callback. Receives the elapsed seconds since the previous\n * *executed* frame (not since the previous scheduled frame), so\n * uniforms keyed off this value will not jump after a long pause. */\n onFrame: (deltaSeconds: number) => void\n}\n\nexport function runRenderLoop({\n el,\n minIntervalMs = 0,\n onFrame\n}: RunRenderLoopOptions) {\n let running = true\n let visible = !document.hidden\n let inView = true\n let last = performance.now()\n let raf = 0\n let timer: ReturnType<typeof setTimeout> | undefined\n\n const onVisibility = () => {\n visible = !document.hidden\n\n // When we come back from a hidden tab, reset the clock so the next\n // frame's delta is ~one frame, not \"hours since I was hidden\".\n if (visible) {\n last = performance.now()\n schedule()\n }\n }\n\n const io = new IntersectionObserver(\n entries => {\n const wasInView = inView\n inView = entries.some(e => e.isIntersecting)\n\n if (!wasInView && inView) {\n last = performance.now()\n schedule()\n }\n },\n { threshold: 0 }\n )\n\n io.observe(el)\n document.addEventListener('visibilitychange', onVisibility)\n\n const tick = () => {\n if (!running) return\n\n if (!visible || !inView) {\n // Don't reschedule — we'll be re-kicked by visibilitychange or IO.\n return\n }\n\n const now = performance.now()\n const delta = (now - last) / 1000\n last = now\n\n onFrame(delta)\n schedule()\n }\n\n function schedule() {\n if (!running || !visible || !inView) return\n\n if (minIntervalMs > 0) {\n timer = setTimeout(tick, minIntervalMs)\n } else {\n raf = requestAnimationFrame(tick)\n }\n }\n\n schedule()\n\n return () => {\n running = false\n io.disconnect()\n document.removeEventListener('visibilitychange', onVisibility)\n cancelAnimationFrame(raf)\n\n if (timer !== undefined) {\n clearTimeout(timer)\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-smooth-controls.d.ts","sourceRoot":"","sources":["../../src/hooks/use-smooth-controls.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,WAAW,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAqBpD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,wBAAwB,EAClC,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAEpC,CAAC;WAAoC,MAAM,CAAC;iBAoPzD;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,GAAG,GAAG,EACpC,OAAO,MAAM,EACb,KAAK,MAAM,KACV,SAAS,GAAG,YAAY,CAAC,CAAC,CACqC,CAAA;AAElE,eAAO,MAAM,eAAe,GAAI,CAAC,GAAG,GAAG,EACrC,OAAO,MAAM,EACb,KAAK,MAAM,EACX,OAAO,CAAC,EACR,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,SAwBnD,CAAA;AAED,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-smooth-controls.js","sourceRoot":"","sources":["../../src/hooks/use-smooth-controls.ts"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport gsap from 'gsap'\nimport { buttonGroup, useControls } from 'leva'\nimport { atom, type WritableAtom } from 'nanostores'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nconst atomRegistry = new Map<string, Map<string, WritableAtom<any>>>()\n\nconst val = (v: any) =>\n v && typeof v === 'object' && 'value' in v ? v.value : v\n\nconst isHex = (v: any) =>\n /color/i.test(v?.type) || /^#[0-9a-f]{3,8}$/i.test(val(v))\n\nconst randHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padStart(6, '0')}`\n\nconst randNum = (v: any) =>\n typeof v === 'object' && ('min' in v || 'max' in v)\n ? gsap.utils.random(v.min ?? 0, v.max ?? 1, v.step ?? 0.01)\n : gsap.utils.random(0, 1)\n\nexport function useSmoothControls<T extends Record<string, any>>(\n label: string,\n initialArgs: T,\n options?: UseSmoothControlsOptions,\n dependencies?: Parameters<typeof useControls>[3]\n) {\n type R = { [K in keyof T]: T[K] extends { value: infer V } ? V : never }\n\n const entries = useMemo(\n () => Object.entries(initialArgs ?? {}),\n [initialArgs]\n )\n\n const values = useMemo(\n () => entries.filter(([, v]) => !/button|folder/i.test(v?.type)),\n [entries]\n )\n\n // Tracks whether this component instance has mounted yet. When a remount\n // happens (e.g. Storybook changing a `key` prop to force a lens reset), we\n // want the module-scoped atoms to be reseeded from the new `initialArgs` so\n // the first paint reflects the newly-selected preset — not leftover values\n // from the previous mount.\n const mountedRef = useRef(false)\n\n const atoms = useMemo(() => {\n const map = atomRegistry.get(label) ?? new Map<string, WritableAtom<any>>()\n\n if (!atomRegistry.has(label)) {\n atomRegistry.set(label, map)\n }\n\n const freshMount = !mountedRef.current\n\n entries.forEach(([k, v]) => {\n if (v?.schema) {\n Object.keys(v.schema).forEach(sk => {\n const key = `${k}.${sk}`\n\n if (!map.has(key)) {\n map.set(key, atom(val(v.schema[sk])))\n } else if (freshMount) {\n map.get(key)!.set(val(v.schema[sk]))\n }\n })\n } else if (!map.has(k)) {\n map.set(k, atom(val(v)))\n } else if (freshMount) {\n map.get(k)!.set(val(v))\n }\n })\n\n return map\n }, [label, entries])\n\n useEffect(() => {\n mountedRef.current = true\n }, [])\n\n const hydrate = useCallback(\n () =>\n Object.fromEntries(\n entries.flatMap(([k, v]) =>\n v?.schema\n ? Object.entries(v.schema).map(([k0, v0]: [string, any]) => [\n k0,\n atoms.get(`${k}.${k0}`)?.get() ?? val(v0)\n ])\n : [[k, atoms.get(k)?.get() ?? val(v)]]\n )\n ) as R,\n [entries, atoms]\n )\n\n const [args, update] = useState<R>(hydrate)\n const setRef = useRef<((values: Partial<R>) => void) | null>(null)\n const atomVals = useRef<Record<string, any>>({})\n const fromAtom = useRef(false)\n const fromControl = useRef<Set<string>>(new Set())\n\n useEffect(() => {\n if (Object.keys(args).length !== Object.keys(initialArgs).length) {\n update(hydrate)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initialArgs, args])\n\n useEffect(() => {\n if (!setRef.current) {\n return\n }\n\n const unsubs: Array<() => void> = []\n let ready = false\n const initTimeout = setTimeout(() => (ready = true), 100)\n\n const subscribe = (fullKey: string, updateFn: (v: any) => void) => {\n const a = atoms.get(fullKey)\n\n if (!a) {\n return\n }\n\n unsubs.push(\n a.subscribe(v => {\n const prev = atomVals.current[fullKey]\n atomVals.current[fullKey] = v\n\n if (\n setRef.current &&\n ready &&\n prev !== v &&\n !fromControl.current.has(fullKey)\n ) {\n fromAtom.current = true\n\n try {\n updateFn(v)\n } catch {\n //\n }\n\n setTimeout(() => (fromAtom.current = false), 0)\n }\n })\n )\n\n atomVals.current[fullKey] = a.get()\n }\n\n entries.forEach(([k, v]) => {\n if (v?.schema) {\n Object.keys(v.schema).forEach(sk => {\n subscribe(`${k}.${sk}`, v => {\n try {\n setRef.current!({\n [k]: { ...((args[k] as any) ?? {}), [sk]: v }\n } as Partial<R>)\n } catch {\n //\n }\n\n update(st => ({\n ...st,\n [k]: { ...((st[k] as any) ?? {}), [sk]: v }\n }))\n })\n })\n } else {\n subscribe(k, v => {\n try {\n setRef.current!({ [k]: v } as Partial<R>)\n } catch {\n //\n }\n\n update(st => ({ ...st, [k]: v }))\n })\n }\n })\n\n return () => {\n clearTimeout(initTimeout)\n unsubs.forEach(fn => fn())\n }\n }, [label, entries, atoms, args])\n\n const onChange =\n (k: string, orig?: (e: any, k0?: string) => void) =>\n (e: any, k0?: string) => {\n if (fromAtom.current) {\n return orig?.(e, k0)\n }\n\n const key = k0?.split('.')?.pop() ?? k\n const fullKey = k0 ?? k\n const a = atoms.get(fullKey)\n\n fromControl.current.add(fullKey)\n\n const sync = (v: any) => {\n update(st => ({ ...st, [key]: v }))\n a?.set(v)\n orig?.(v, k0)\n }\n\n if (typeof e === 'number' && args[key] !== e) {\n gsap.to(args, {\n duration: options?.duration ?? 0.35,\n ease: 'circ.out',\n [key]: e,\n onComplete: () => void fromControl.current.delete(fullKey),\n onUpdate: () => {\n fromControl.current.add(fullKey)\n sync(args[key])\n setTimeout(() => fromControl.current.delete(fullKey), 0)\n }\n })\n } else {\n sync(e)\n setTimeout(() => fromControl.current.delete(fullKey), 0)\n }\n }\n\n const [, set] = useControls(\n label,\n () => ({\n ...Object.fromEntries(\n entries.map(([k, v]) =>\n v?.schema\n ? [\n k,\n {\n ...v,\n schema: Object.fromEntries(\n Object.entries(v.schema).map(([sk, sv]: [string, any]) => [\n sk,\n { ...sv!, onChange: onChange(k, sv?.onChange) }\n ])\n )\n }\n ]\n : [k, { ...v, onChange: onChange(k, v?.onChange) }]\n )\n ),\n\n ' ': buttonGroup({\n flatten: () =>\n void set(Object.fromEntries(values.map(([k]) => [k, 0]))),\n randomize: () => {\n set(\n Object.fromEntries(\n values.map(([k, v]) => [k, isHex(v) ? randHex() : randNum(v)])\n )\n )\n options?.onRandomize?.()\n },\n reset: () => {\n set(Object.fromEntries(values.map(([k, v]) => [k, val(v)])))\n options?.onReset?.()\n }\n })\n }),\n { collapsed: true, ...options },\n dependencies ?? []\n )\n\n setRef.current = set\n\n return args\n}\n\nexport const getControlAtom = <T = any>(\n label: string,\n key: string\n): undefined | WritableAtom<T> =>\n atomRegistry.get(label)?.get(key) as undefined | WritableAtom<T>\n\nexport const setControlValue = <T = any>(\n label: string,\n key: string,\n value: T,\n options?: { animate?: boolean; duration?: number }\n) => {\n const a = getControlAtom<T>(label, key)\n\n if (!a) {\n return\n }\n\n if (\n options?.animate &&\n typeof value === 'number' &&\n typeof a.get() === 'number'\n ) {\n const t = { v: a.get() }\n\n gsap.to(t, {\n duration: options.duration ?? 0.35,\n ease: 'circ.out',\n onUpdate: () => a.set(t.v),\n v: value\n })\n } else {\n a.set(value)\n }\n}\n\ntype UseSmoothControlsOptions = Parameters<typeof useControls>[2] & {\n duration?: number\n onRandomize?: () => void\n onReset?: () => void\n}\n"]}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export { AnimatedCount, useAnimatedCount } from './ui/components/animated-count'\nexport { AsciiSkeleton, Scramble as AsciiScramble } from './ui/components/ascii'\nexport { Badge } from './ui/components/badge'\nexport { NousGirlBadge } from './ui/components/badges/nous-girl'\nexport { BlendMode, useBlendMode, withBlendMode } from './ui/components/blend-mode'\nexport type { BlendModeProps } from './ui/components/blend-mode'\nexport { Blink } from './ui/components/blink'\nexport { Button } from './ui/components/button'\nexport { CommandBlock, CopyButton } from './ui/components/command-block'\nexport { Cursor } from './ui/components/cursor'\nexport { DropdownMenu } from './ui/components/dropdown-menu'\nexport { FitText } from './ui/components/fit-text'\nexport { BarChart, LineChart } from './ui/components/graphs'\nexport { Cell, Grid } from './ui/components/grid'\nexport { HoverBg } from './ui/components/hover-bg'\nexport * as Icons from './ui/components/icons'\nexport { DiscordIcon } from './ui/components/icons/discord'\nexport { GitHubIcon } from './ui/components/icons/github'\nexport { ImageDistortion } from './ui/components/image-distortion'\nexport type { AutoPlayPattern } from './ui/components/image-distortion'\nexport { LevaClient } from './ui/components/leva-client'\nexport { ListItem } from './ui/components/list-item'\nexport { Modal } from './ui/components/modal'\nexport { FilterGroup, Segmented } from './ui/components/segmented'\nexport { Switch } from './ui/components/switch'\nexport { Tabs, TabsList, TabsTrigger } from './ui/components/tabs'\nexport { Poster } from './ui/components/poster'\nexport type {\n PosterAspect,\n PosterProps,\n PosterVariant\n} from './ui/components/poster'\nexport {\n applyLens,\n BLEND_MODES,\n LENSES,\n LENS_0,\n LENS_5I,\n lens0,\n lens5i,\n toggleLens,\n $lightMode\n} from './ui/components/overlays'\nexport {\n Glitch,\n Greys,\n Lens,\n Noise,\n Overlays,\n Vignette\n} from './ui/components/overlays'\nexport type { LensPreset } from './ui/components/overlays'\nexport { Progress } from './ui/components/progress'\nexport { SceneCanvas } from './ui/components/scene-canvas'\nexport { Scramble } from './ui/components/scramble'\nexport { Select, SelectOption } from './ui/components/select'\nexport { SelectionSwitcher } from './ui/components/selection-switcher'\nexport { Spinner } from './ui/components/spinner'\nexport { Stats } from './ui/components/stats'\nexport { TerminalDemo } from './ui/components/terminal-demo'\nexport type { TerminalDemoStep } from './ui/components/terminal-demo'\nexport { ThemeToggle } from './ui/components/theme-toggle'\nexport { TierCard } from './ui/components/tier-card'\nexport type { TierCardPrice, TierCardProps } from './ui/components/tier-card'\nexport { TV } from './ui/components/tv'\nexport { Watchlist } from './ui/components/watchlist'\n\nexport { Typography } from './ui/components/typography'\nexport type { TypographyProps } from './ui/components/typography'\nexport { H1 } from './ui/components/typography/h1'\nexport { H2 } from './ui/components/typography/h2'\nexport { Legend } from './ui/components/typography/legend'\nexport { Small } from './ui/components/typography/small'\n\nexport { BasicPage } from './ui/basic-page'\nexport { Header } from './ui/header'\nexport type { HeaderLink, HeaderProps, HeaderSocial } from './ui/header'\nexport { Footer } from './ui/footer'\nexport type {\n FooterGroup,\n FooterLink,\n FooterProps\n} from './ui/footer'\nexport { Socials } from './ui/components/socials'\nexport type { SocialLink } from './ui/components/socials'\nexport { LayoutWrapper } from './ui/layout-wrapper'\n\nexport {\n FONT_SANS,\n FONT_MONO,\n FONT_RULES_COMPRESSED,\n FONT_RULES_EXPANDED,\n FONT_MONDWEST\n} from './fonts'\n\nexport { cn, clamp, smoothstep, hexToVec3, truncate, stripWpStyles } from './utils'\nexport { polyRef } from './utils'\nexport type { PolyComponent, PolyProps, PolyRef } from './utils'\nexport { hexToRgb, rgbToHex, colorDodge, colorMix } from './utils/color'\n\nexport { useCappedFrame } from './hooks/use-capped-frame'\nexport { useCssVarDims } from './hooks/use-css-var-dims'\nexport { $gpuTier, useGpuTier } from './hooks/use-gpu-tier'\nexport {\n useSmoothControls,\n getControlAtom,\n setControlValue\n} from './hooks/use-smooth-controls'\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-page.d.ts","sourceRoot":"","sources":["../../src/ui/basic-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,cAAc,2CAqBtE;AAED,UAAU,cAAe,SAAQ,KAAK,CAAC,iBAAiB;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-page.js","sourceRoot":"","sources":["../../src/ui/basic-page.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AAErD,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAkB;IACrE,OAAO,CACL,8BACE,KAAC,IAAI,cACH,KAAC,IAAI,cACH,KAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,GAAI,GACjB,GACF,EAEP,MAAC,IAAI,IAAC,SAAS,EAAC,gCAAgC,aAC9C,KAAC,IAAI,IAAC,SAAS,EAAC,UAAU,YACxB,eAAK,SAAS,EAAC,kCAAkC,aAC9C,KAAK,CAAC,CAAC,CAAC,KAAC,EAAE,IAAC,SAAS,EAAC,wBAAwB,YAAE,KAAK,GAAM,CAAC,CAAC,CAAC,IAAI,EAClE,QAAQ,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,SAAS,EAAC,YAAY,YAAE,QAAQ,GAAS,CAAC,CAAC,CAAC,IAAI,IAC/D,GACD,EAEP,KAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,YAAE,QAAQ,GAAQ,IAChD,IACN,CACJ,CAAA;AACH,CAAC","sourcesContent":["import type { ReactNode } from 'react'\n\nimport { Cell, Grid } from './components/grid'\nimport { Progress } from './components/progress'\nimport { H1 } from './components/typography/h1'\nimport { Small } from './components/typography/small'\n\nexport function BasicPage({ children, subtitle, title }: BasicPageProps) {\n return (\n <>\n <Grid>\n <Cell>\n <Progress value={0} />\n </Cell>\n </Grid>\n\n <Grid className=\"lg:grid-cols-[max-content_1fr]\">\n <Cell className=\"-order-1\">\n <div className=\"sticky top-4 flex flex-col gap-4\">\n {title ? <H1 className=\"-mb-2 pr-10 opacity-90\">{title}</H1> : null}\n {subtitle ? <Small className=\"opacity-60\">{subtitle}</Small> : null}\n </div>\n </Cell>\n\n <Cell className=\"post bg-current/3\">{children}</Cell>\n </Grid>\n </>\n )\n}\n\ninterface BasicPageProps extends React.PropsWithChildren {\n subtitle?: string\n title?: ReactNode\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"animated-count.d.ts","sourceRoot":"","sources":["../../../src/ui/components/animated-count.tsx"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,OAAa,EACf,QAAQ,CAAC,EAAE,IAAI,UAiDhB;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAQ,EACR,KAAK,EACN,EAAE,KAAK,2CA2FP;AAED,UAAU,KAAK;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"animated-count.js","sourceRoot":"","sources":["../../../src/ui/components/animated-count.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\n\nconst ease = (t: number) => (t < 0.5 ? 4 * t ** 3 : 1 - (-2 * t + 2) ** 3 / 2)\nconst easeD = (t: number) => (t < 0.5 ? 12 * t ** 2 : 6 * (-2 * t + 2) ** 2)\n\nexport function useAnimatedCount(\n from: number,\n rate: number,\n ts = new Date(),\n pausedAt?: Date\n) {\n const [value, setValue] = useState(from)\n const current = useRef(from)\n\n useEffect(() => {\n if (!rate) {\n return\n }\n\n let raf: number\n let prev = Date.now()\n let last = current.current\n\n const target = () =>\n from +\n Math.floor(\n ((pausedAt\n ? Math.max(0, pausedAt.getTime() - ts.getTime())\n : Date.now() - ts.getTime()) /\n 1e3) *\n rate *\n 0.9\n )\n\n const tick = () => {\n const now = Date.now()\n current.current +=\n (target() - current.current) * Math.min(1, ((now - prev) / 1e3) * 3)\n prev = now\n\n const rounded = Math.round(current.current)\n\n if (rounded !== last) {\n last = rounded\n setValue(rounded)\n }\n\n if (!pausedAt || Math.abs(current.current - target()) > 0.5) {\n raf = requestAnimationFrame(tick)\n }\n }\n\n raf = requestAnimationFrame(tick)\n\n return () => cancelAnimationFrame(raf)\n }, [from, ts, rate, pausedAt])\n\n return value\n}\n\nexport function AnimatedCount({\n damping = 1,\n duration,\n pausedAt,\n rate = 0,\n value\n}: Props) {\n const id = useRef(Math.random().toString(36).slice(2, 9))\n const prev = useRef(value)\n const [display, setDisplay] = useState(value)\n const [velocity, setVelocity] = useState(rate)\n\n useEffect(() => {\n if (!duration) {\n prev.current = value\n return\n }\n\n const start = prev.current\n const delta = value - start\n const dur = duration * damping\n prev.current = value\n\n if (!delta) {\n setVelocity(0)\n return\n }\n\n const t0 = performance.now()\n\n const tick = (now: number) => {\n const t = Math.min((now - t0) / dur, 1)\n setDisplay(Math.round(start + delta * ease(t)))\n setVelocity(Math.abs((delta * easeD(t)) / dur) * 1000)\n t < 1 ? requestAnimationFrame(tick) : setVelocity(0)\n }\n\n const raf = requestAnimationFrame(tick)\n\n return () => cancelAnimationFrame(raf)\n }, [value, duration, rate, damping])\n\n const digits = Math.round(duration ? display : value).toLocaleString().split('')\n const v = duration ? velocity : rate\n const paused = !duration && pausedAt\n\n const blurred = new Set(\n digits\n .map((c, i) => {\n if (!/\\d/.test(c) || v <= 0 || paused) {\n return -1\n }\n\n const pos =\n digits.filter(x => /\\d/.test(x)).length -\n digits.slice(0, i + 1).filter(x => /\\d/.test(x)).length\n\n return (10 ** Math.max(0, pos) / v) * 1e3 < 500 ? i : -1\n })\n .filter(i => i >= 0)\n )\n\n return (\n <>\n <svg className=\"pointer-events-none absolute size-0\">\n <defs>\n {digits.map((_, i) => (\n <filter\n id={`blur-${id.current}-${i}`}\n key={i}\n suppressHydrationWarning\n >\n <feGaussianBlur\n stdDeviation={`0 ${blurred.has(i) ? 1 + [...blurred].indexOf(i) * 0.6 : 0}`}\n />\n </filter>\n ))}\n </defs>\n </svg>\n\n <span className=\"inline-flex tabular-nums\">\n {digits.map((c, i) => (\n <span\n className=\"inline-block text-center\"\n key={i}\n style={{\n filter: blurred.has(i) ? `url(#blur-${id.current}-${i})` : 'none',\n width: c === ',' ? '0.4ch' : '1ch'\n }}\n suppressHydrationWarning\n >\n {c}\n </span>\n ))}\n </span>\n </>\n )\n}\n\ninterface Props {\n damping?: number\n duration?: number\n pausedAt?: Date\n rate?: number\n value: number\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ascii.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ascii.tsx"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CAAC,EACvB,KAAS,EACT,IAAI,EACL,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb,2CAiCA;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAc,EACd,IAAS,EACT,IAAQ,EACR,KAAU,EACX,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,2CAiDA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../../src/ui/components/ascii.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\n\nconst BLOCK = '░▒▓█▄▀▐▌─│┌┐└┘├┤┬┴┼╌╎⣀⣤⣶⣿'\nconst ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*'\n\nconst rand = (chars: string) => chars[(Math.random() * chars.length) | 0]\n\nexport function Scramble({\n delay = 0,\n text\n}: {\n delay?: number\n text: string\n}) {\n const [display, setDisplay] = useState(text)\n const iter = useRef(0)\n\n useEffect(() => {\n iter.current = 0\n\n const timeout = setTimeout(() => {\n const interval = setInterval(() => {\n setDisplay(\n text\n .split('')\n .map((c, i) =>\n c === ' ' ? ' ' : i < iter.current ? text[i] : rand(ALPHA)\n )\n .join('')\n )\n\n iter.current += 1 / 3\n\n if (iter.current >= text.length) {\n clearInterval(interval)\n setDisplay(text)\n }\n }, 30)\n\n return () => clearInterval(interval)\n }, delay)\n\n return () => clearTimeout(timeout)\n }, [text, delay])\n\n return <>{display}</>\n}\n\nexport function AsciiSkeleton({\n className = '',\n cols = 12,\n rows = 1,\n speed = 80\n}: {\n className?: string\n cols?: number\n rows?: number\n speed?: number\n}) {\n const ref = useRef<HTMLSpanElement>(null)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) {\n return\n }\n\n const total = cols * rows\n let frame = 0\n\n const tick = () => {\n let text = ''\n\n for (let i = 0; i < total; i++) {\n const x = i % cols\n const shimmer = (x - frame * 0.5 + cols * 2) % (cols * 2)\n\n text += shimmer < 6 ? ' ' : rand(BLOCK)\n\n if (rows > 1 && x === cols - 1) {\n text += '\\n'\n }\n }\n\n el.textContent = text\n frame++\n }\n\n tick()\n const id = setInterval(tick, speed)\n\n return () => clearInterval(id)\n }, [cols, rows, speed])\n\n return (\n <span\n aria-hidden\n className={`inline-block leading-tight opacity-20 select-none ${className}`}\n ref={ref}\n style={{\n fontFamily: 'monospace',\n fontSize: 'inherit',\n letterSpacing: '0.05em'\n }}\n />\n )\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/ui/components/badge.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,GAAI,sCAKnB,UAAU,4CAyBZ,CAAA;AAED,KAAK,IAAI,GACL,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,CAAA;AAEb,UAAU,UACR,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC5D,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/ui/components/badge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAA;AAE7D,MAAM,OAAO,GACX,4FAA4F,CAAA;AAE9F,MAAM,YAAY,GAA6C;IAC7D,WAAW,EACT,iEAAiE;IACnE,OAAO,EAAE,6DAA6D;IACtE,SAAS,EAAE,0DAA0D;IACrE,OAAO,EAAE,qDAAqD;IAC9D,OAAO,EAAE,qDAAqD;CAC/D,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EACpB,SAAS,EACT,KAAK,EACL,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACG,EAAE,EAAE;IACf,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,SAAS,IACR,EAAE,EAAC,MAAM,EACT,UAAU,EAAC,UAAU,EACrB,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EACjC,KAAK,EAAC,IAAI,EACV,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,KAAK,EAAE,KACjD,KAAgC,GACrC,CACH,CAAA;IACH,CAAC;IAED,uEAAuE;IACvE,qEAAqE;IACrE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EACrD,KAAK,EAAE,KAAK,KACP,KAA+C,GACpD,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { cn } from '../../utils'\n\nimport { BlendMode, type BlendModeProps } from './blend-mode'\n\nconst BASE_CN =\n 'inline-flex items-center font-compressed px-2 py-1 leading-none tracking-[0.2em] uppercase'\n\nconst TONE_CLASSES: Record<Exclude<Tone, 'default'>, string> = {\n destructive:\n 'border border-destructive/30 bg-destructive/15 text-destructive',\n outline: 'border border-midground/30 bg-transparent text-midground/80',\n secondary: 'border border-midground/15 bg-midground/8 text-midground',\n success: 'border border-success/30 bg-success/15 text-success',\n warning: 'border border-warning/30 bg-warning/15 text-warning'\n}\n\nexport const Badge = ({\n className,\n style,\n tone = 'default',\n ...props\n}: BadgeProps) => {\n // `tone=\"default\"` keeps the original Lens-aware BlendMode treatment so\n // existing brand-style consumers (nousnet-web etc.) render unchanged.\n if (tone === 'default') {\n return (\n <BlendMode\n as=\"span\"\n background=\"mg/0.075\"\n className={cn(BASE_CN, className)}\n color=\"mg\"\n style={{ opacity: 'var(--midground-alpha)', ...style }}\n {...(props as BlendModeProps<'span'>)}\n />\n )\n }\n\n // Semantic tones bypass BlendMode and use --color-* tokens directly so\n // red stays red and green stays green regardless of the active Lens.\n return (\n <span\n className={cn(BASE_CN, TONE_CLASSES[tone], className)}\n style={style}\n {...(props as React.HTMLAttributes<HTMLSpanElement>)}\n />\n )\n}\n\ntype Tone =\n | 'default'\n | 'destructive'\n | 'outline'\n | 'secondary'\n | 'success'\n | 'warning'\n\ninterface BadgeProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'> {\n tone?: Tone\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nous-girl.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/badges/nous-girl.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,2CAiD3D"}
|