@nous-research/ui 0.2.7 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -3
- package/dist/fonts.d.ts +1 -0
- package/dist/fonts.d.ts.map +1 -0
- package/dist/fonts.js.map +1 -1
- package/dist/hooks/use-capped-frame.d.ts +1 -0
- package/dist/hooks/use-capped-frame.d.ts.map +1 -0
- package/dist/hooks/use-capped-frame.js.map +1 -1
- package/dist/hooks/use-css-var-dims.d.ts +1 -0
- package/dist/hooks/use-css-var-dims.d.ts.map +1 -0
- package/dist/hooks/use-css-var-dims.js.map +1 -1
- package/dist/hooks/use-gpu-tier.d.ts +1 -0
- package/dist/hooks/use-gpu-tier.d.ts.map +1 -0
- package/dist/hooks/use-gpu-tier.js.map +1 -1
- package/dist/hooks/use-smooth-controls.d.ts +1 -0
- package/dist/hooks/use-smooth-controls.d.ts.map +1 -0
- package/dist/hooks/use-smooth-controls.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -6
- package/dist/index.js.map +1 -1
- package/dist/ui/basic-page.d.ts +1 -0
- package/dist/ui/basic-page.d.ts.map +1 -0
- package/dist/ui/basic-page.js.map +1 -1
- package/dist/ui/components/animated-count.d.ts +1 -0
- package/dist/ui/components/animated-count.d.ts.map +1 -0
- package/dist/ui/components/animated-count.js.map +1 -1
- package/dist/ui/components/ascii.d.ts +1 -0
- package/dist/ui/components/ascii.d.ts.map +1 -0
- package/dist/ui/components/ascii.js.map +1 -1
- package/dist/ui/components/badge.d.ts +1 -0
- package/dist/ui/components/badge.d.ts.map +1 -0
- package/dist/ui/components/badge.js.map +1 -1
- package/dist/ui/components/badges/nous-girl.d.ts +1 -0
- package/dist/ui/components/badges/nous-girl.d.ts.map +1 -0
- package/dist/ui/components/badges/nous-girl.js.map +1 -1
- package/dist/ui/components/blend-mode.d.ts +1 -0
- package/dist/ui/components/blend-mode.d.ts.map +1 -0
- package/dist/ui/components/blend-mode.js.map +1 -1
- package/dist/ui/components/blink.d.ts +1 -0
- package/dist/ui/components/blink.d.ts.map +1 -0
- package/dist/ui/components/blink.js.map +1 -1
- package/dist/ui/components/button.d.ts +1 -0
- package/dist/ui/components/button.d.ts.map +1 -0
- package/dist/ui/components/button.js.map +1 -1
- package/dist/ui/components/command-block.d.ts +25 -0
- package/dist/ui/components/command-block.d.ts.map +1 -0
- package/dist/ui/components/command-block.js +27 -0
- package/dist/ui/components/command-block.js.map +1 -0
- package/dist/ui/components/cursor.d.ts +1 -0
- package/dist/ui/components/cursor.d.ts.map +1 -0
- package/dist/ui/components/cursor.js.map +1 -1
- package/dist/ui/components/dropdown-menu.d.ts +1 -0
- package/dist/ui/components/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/components/dropdown-menu.js.map +1 -1
- package/dist/ui/components/fit-text/index.d.ts +1 -0
- package/dist/ui/components/fit-text/index.d.ts.map +1 -0
- package/dist/ui/components/fit-text/index.js.map +1 -1
- package/dist/ui/components/graphs/bar-chart.d.ts +1 -0
- package/dist/ui/components/graphs/bar-chart.d.ts.map +1 -0
- package/dist/ui/components/graphs/bar-chart.js.map +1 -1
- package/dist/ui/components/graphs/index.d.ts +1 -0
- package/dist/ui/components/graphs/index.d.ts.map +1 -0
- package/dist/ui/components/graphs/index.js.map +1 -1
- package/dist/ui/components/graphs/line-chart.d.ts +1 -0
- package/dist/ui/components/graphs/line-chart.d.ts.map +1 -0
- package/dist/ui/components/graphs/line-chart.js.map +1 -1
- package/dist/ui/components/graphs/utils.d.ts +1 -0
- package/dist/ui/components/graphs/utils.d.ts.map +1 -0
- package/dist/ui/components/graphs/utils.js.map +1 -1
- package/dist/ui/components/grid/index.d.ts +1 -0
- package/dist/ui/components/grid/index.d.ts.map +1 -0
- package/dist/ui/components/grid/index.js.map +1 -1
- package/dist/ui/components/hover-bg.d.ts +1 -0
- package/dist/ui/components/hover-bg.d.ts.map +1 -0
- package/dist/ui/components/hover-bg.js.map +1 -1
- package/dist/ui/components/icons/arrow.d.ts +1 -0
- package/dist/ui/components/icons/arrow.d.ts.map +1 -0
- package/dist/ui/components/icons/arrow.js.map +1 -1
- package/dist/ui/components/icons/chevron.d.ts +1 -0
- package/dist/ui/components/icons/chevron.d.ts.map +1 -0
- package/dist/ui/components/icons/chevron.js.map +1 -1
- package/dist/ui/components/icons/eye.d.ts +1 -0
- package/dist/ui/components/icons/eye.d.ts.map +1 -0
- package/dist/ui/components/icons/eye.js.map +1 -1
- package/dist/ui/components/icons/gear.d.ts +1 -0
- package/dist/ui/components/icons/gear.d.ts.map +1 -0
- package/dist/ui/components/icons/gear.js.map +1 -1
- package/dist/ui/components/icons/hamburger.d.ts +7 -0
- package/dist/ui/components/icons/hamburger.d.ts.map +1 -0
- package/dist/ui/components/icons/hamburger.js +6 -0
- package/dist/ui/components/icons/hamburger.js.map +1 -0
- package/dist/ui/components/icons/heart.d.ts +1 -0
- package/dist/ui/components/icons/heart.d.ts.map +1 -0
- package/dist/ui/components/icons/heart.js.map +1 -1
- package/dist/ui/components/icons/index.d.ts +2 -0
- package/dist/ui/components/icons/index.d.ts.map +1 -0
- package/dist/ui/components/icons/index.js +1 -0
- package/dist/ui/components/icons/index.js.map +1 -1
- package/dist/ui/components/icons/link.d.ts +1 -0
- package/dist/ui/components/icons/link.d.ts.map +1 -0
- package/dist/ui/components/icons/link.js.map +1 -1
- package/dist/ui/components/icons/minus.d.ts +1 -0
- package/dist/ui/components/icons/minus.d.ts.map +1 -0
- package/dist/ui/components/icons/minus.js.map +1 -1
- package/dist/ui/components/icons/search.d.ts +1 -0
- package/dist/ui/components/icons/search.d.ts.map +1 -0
- package/dist/ui/components/icons/search.js.map +1 -1
- package/dist/ui/components/image-distortion.d.ts +15 -0
- package/dist/ui/components/image-distortion.d.ts.map +1 -0
- package/dist/ui/components/image-distortion.js +278 -0
- package/dist/ui/components/image-distortion.js.map +1 -0
- package/dist/ui/components/leva-client.d.ts +1 -0
- package/dist/ui/components/leva-client.d.ts.map +1 -0
- package/dist/ui/components/leva-client.js.map +1 -1
- package/dist/ui/components/modal/index.d.ts +1 -0
- package/dist/ui/components/modal/index.d.ts.map +1 -0
- package/dist/ui/components/modal/index.js.map +1 -1
- package/dist/ui/components/overlays/glitch.d.ts +1 -0
- package/dist/ui/components/overlays/glitch.d.ts.map +1 -0
- package/dist/ui/components/overlays/glitch.js.map +1 -1
- package/dist/ui/components/overlays/greys.d.ts +1 -0
- package/dist/ui/components/overlays/greys.d.ts.map +1 -0
- package/dist/ui/components/overlays/greys.js.map +1 -1
- package/dist/ui/components/overlays/index.d.ts +1 -0
- package/dist/ui/components/overlays/index.d.ts.map +1 -0
- package/dist/ui/components/overlays/index.js.map +1 -1
- package/dist/ui/components/overlays/noise.d.ts +1 -0
- package/dist/ui/components/overlays/noise.d.ts.map +1 -0
- package/dist/ui/components/overlays/noise.js.map +1 -1
- package/dist/ui/components/overlays/vignette.d.ts +1 -0
- package/dist/ui/components/overlays/vignette.d.ts.map +1 -0
- package/dist/ui/components/overlays/vignette.js.map +1 -1
- package/dist/ui/components/progress.d.ts +1 -0
- package/dist/ui/components/progress.d.ts.map +1 -0
- package/dist/ui/components/progress.js.map +1 -1
- package/dist/ui/components/scene-canvas.d.ts +1 -0
- package/dist/ui/components/scene-canvas.d.ts.map +1 -0
- package/dist/ui/components/scene-canvas.js.map +1 -1
- package/dist/ui/components/scramble.d.ts +1 -0
- package/dist/ui/components/scramble.d.ts.map +1 -0
- package/dist/ui/components/scramble.js.map +1 -1
- package/dist/ui/components/selection-switcher.d.ts +1 -0
- package/dist/ui/components/selection-switcher.d.ts.map +1 -0
- package/dist/ui/components/selection-switcher.js.map +1 -1
- package/dist/ui/components/shader.d.ts +1 -0
- package/dist/ui/components/shader.d.ts.map +1 -0
- package/dist/ui/components/shader.js.map +1 -1
- package/dist/ui/components/stats.d.ts +1 -0
- package/dist/ui/components/stats.d.ts.map +1 -0
- package/dist/ui/components/stats.js.map +1 -1
- package/dist/ui/components/terminal-demo.d.ts +33 -0
- package/dist/ui/components/terminal-demo.d.ts.map +1 -0
- package/dist/ui/components/terminal-demo.js +79 -0
- package/dist/ui/components/terminal-demo.js.map +1 -0
- package/dist/ui/components/theme-toggle.d.ts +7 -0
- package/dist/ui/components/theme-toggle.d.ts.map +1 -0
- package/dist/ui/components/theme-toggle.js +10 -0
- package/dist/ui/components/theme-toggle.js.map +1 -0
- package/dist/ui/components/tv.d.ts +1 -0
- package/dist/ui/components/tv.d.ts.map +1 -0
- package/dist/ui/components/tv.js.map +1 -1
- package/dist/ui/components/typography/h1.d.ts +1 -0
- package/dist/ui/components/typography/h1.d.ts.map +1 -0
- package/dist/ui/components/typography/h1.js.map +1 -1
- package/dist/ui/components/typography/h2.d.ts +1 -0
- package/dist/ui/components/typography/h2.d.ts.map +1 -0
- package/dist/ui/components/typography/h2.js.map +1 -1
- package/dist/ui/components/typography/index.d.ts +1 -0
- package/dist/ui/components/typography/index.d.ts.map +1 -0
- package/dist/ui/components/typography/index.js.map +1 -1
- package/dist/ui/components/typography/legend.d.ts +1 -0
- package/dist/ui/components/typography/legend.d.ts.map +1 -0
- package/dist/ui/components/typography/legend.js.map +1 -1
- package/dist/ui/components/typography/small.d.ts +1 -0
- package/dist/ui/components/typography/small.d.ts.map +1 -0
- package/dist/ui/components/typography/small.js.map +1 -1
- package/dist/ui/components/watchlist.d.ts +1 -0
- package/dist/ui/components/watchlist.d.ts.map +1 -0
- package/dist/ui/components/watchlist.js.map +1 -1
- package/dist/ui/footer.d.ts +6 -1
- package/dist/ui/footer.d.ts.map +1 -0
- package/dist/ui/footer.js +2 -3
- package/dist/ui/footer.js.map +1 -1
- package/dist/ui/header.d.ts +6 -1
- package/dist/ui/header.d.ts.map +1 -0
- package/dist/ui/header.js +2 -3
- package/dist/ui/header.js.map +1 -1
- package/dist/ui/layout-wrapper.d.ts +1 -0
- package/dist/ui/layout-wrapper.d.ts.map +1 -0
- package/dist/ui/layout-wrapper.js.map +1 -1
- package/dist/utils/color.d.ts +1 -0
- package/dist/utils/color.d.ts.map +1 -0
- package/dist/utils/color.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/poly.d.ts +1 -0
- package/dist/utils/poly.d.ts.map +1 -0
- package/dist/utils/poly.js.map +1 -1
- package/package.json +17 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/ui/components/progress.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AAE/D,eAAO,MAAM,QAAQ,GAAI,oEAQtB,aAAa,4CAoCf,CAAA;AAED,UAAU,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/ui/components/progress.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAwB,MAAM,cAAc,CAAA;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,OAAO,GAAG,IAAI,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,GAAG,GAAG,EACX,KAAK,EACL,GAAG,KAAK,EACM,EAAE,EAAE,CAAC,CACnB,eACE,SAAS,EAAE,EAAE,CACX,2EAA2E,EAC3E,SAAS,CACV,KACG,KAAK,aAET,KAAC,UAAU,OACL,QAAQ,EACZ,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,iBAAiB,EACjB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC1B,QAAQ,EAAE,SAAS,CACpB,EACD,IAAI,QACJ,KAAK,EAAE;gBACL,GAAG,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBAChE,KAAK,EAAE,GAAG,KAAK,GAAG;gBAClB,GAAG,QAAQ,EAAE,KAAK;aACnB,YAEA,QAAQ,GACE,EAEb,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EACH;gBACE,KAAK,EAAE,OAAO;gBACd,eAAe,EAAE,wJAAwJ;aACnJ,GAE1B,IACE,CACP,CAAA"}
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/ui/components/progress.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAwB,MAAM,cAAc,CAAA;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,OAAO,GAAG,IAAI,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,GAAG,GAAG,EACX,KAAK,EACL,GAAG,KAAK,EACM,EAAE,EAAE,CAAC,CACnB,eACE,SAAS,EAAE,EAAE,CACX,2EAA2E,EAC3E,SAAS,CACV,KACG,KAAK,aAET,KAAC,UAAU,OACL,QAAQ,EACZ,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,iBAAiB,EACjB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAC1B,QAAQ,EAAE,SAAS,CACpB,EACD,IAAI,QACJ,KAAK,EAAE;gBACL,GAAG,CAAC,OAAO,IAAI,EAAE,UAAU,EAAE,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBAChE,KAAK,EAAE,GAAG,KAAK,GAAG;gBAClB,GAAG,QAAQ,EAAE,KAAK;aACnB,YAEA,QAAQ,GACE,EAEb,cACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EACH;gBACE,KAAK,EAAE,OAAO;gBACd,eAAe,EAAE,wJAAwJ;aACnJ,GAE1B,IACE,CACP,CAAA","sourcesContent":["import { cn } from '../../utils'\n\nimport { Typography, type TypographyProps } from './typography'\n\nexport const Progress = ({\n animate = true,\n barProps,\n children,\n className,\n speed = 0.4,\n value,\n ...props\n}: ProgressProps) => (\n <div\n className={cn(\n 'relative flex min-h-[2.3rem] min-w-0 flex-1 items-stretch overflow-hidden',\n className\n )}\n {...props}\n >\n <Typography\n {...barProps}\n className={cn(\n 'shrink-0 translate-y-0.5 truncate py-2',\n 'bg-midground/20',\n children ? 'px-2' : 'px-0',\n barProps?.className\n )}\n mono\n style={{\n ...(animate && { transition: `width ${speed}s steps(10, end)` }),\n width: `${value}%`,\n ...barProps?.style\n }}\n >\n {children}\n </Typography>\n\n <div\n className=\"flex-1\"\n style={\n {\n '--x': '.5rem',\n backgroundImage: `repeating-linear-gradient(to right, transparent 0 var(--x), color-mix(in srgb, var(--color-midground) 17%, transparent) var(--x) calc(var(--x) + 1px))`\n } as React.CSSProperties\n }\n />\n </div>\n)\n\ninterface ProgressProps extends React.ComponentProps<'div'> {\n animate?: boolean\n barProps?: TypographyProps<'span'>\n speed?: number\n value: number\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-canvas.d.ts","sourceRoot":"","sources":["../../../src/ui/components/scene-canvas.tsx"],"names":[],"mappings":"AAqHA,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACN,EAAE,gBAAgB,2CAwFlB;AAED,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,QAAQ,EAAE,MAAM,KAAK,CAAC,SAAS,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-canvas.js","sourceRoot":"","sources":["../../../src/ui/components/scene-canvas.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,MAAM,EACN,QAAQ,EACT,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,MAAM;IACxB,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,KAAK;CACN,CAAA;AAEV,MAAM,GAAG,GAAG;IACV,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IAC3B,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IACxB,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IACxB,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;IACxB,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE;CAC3B,CAAA;AAID,SAAS,SAAS,CAAC,MAA0B;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAE1C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAA;YACxC,MAAM,CAAC,OAAO,GAAG;gBACf,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;gBAC9B,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO;gBAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAA;QACH,CAAC,CAAA;QAED,OAAO,EAAE,CAAA;QAET,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;QACtC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7D,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,UAAU,EAAE,CAAA;YACf,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAQ,EAIR;IACA,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7C,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAA;QAExB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAA;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAA;QAEpC,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAC7C,CAAA;QAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/D,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAEtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE1D,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;QAED,MAAM,IAAI,GAAI,MAA2C,CAAC,IAAI,IAAI,CAAC,CAAA;QAEnE,CAAC,CAAC,KAAK,CAAC,SAAS,CACf,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,EACvC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAC3C,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,gBAAO,GAAG,EAAE,GAAG,YAAG,QAAQ,GAAS,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACY;IACjB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,CAAA;IAEpC,MAAM,MAAM,GAAG,SAAS,CACtB,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACtD,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;QAEpD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;QAE1D,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAE5C,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;YAC3C,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACjD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEpC,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,CAAC;QACL,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG;QACvB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG;QAC1B,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAA8B;QACtE,IAAI,EAAE,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC,CAAC,EACF,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAC9B,CAAA;IAED,MAAM,MAAM,GAAG,CACb,KAAC,MAAM,IACL,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACX,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAC5C,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7D,EAAE,EAAE,EAAE,EACN,YAAY,QACZ,KAAK,EACH,SAAS;YACP,CAAC,CAAC;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,GAAG,KAAK;aACT;YACH,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,YAGhD,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAChD,QAAQ,EAAE,GACK,CACnB,CAAC,CAAC,CAAC,CACF,QAAQ,EAAE,CACX,GACM,CACV,CAAA;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,CACjB,MAAC,QAAQ,eACP,cACE,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;oBACL,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBACzC,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,CAAC;iBACV,GACD,EACD,MAAM,IACE,CACZ,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"scene-canvas.js","sourceRoot":"","sources":["../../../src/ui/components/scene-canvas.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EACP,MAAM,EACN,QAAQ,EACT,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,EAAE,GAAG;IACT,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,MAAM;IACxB,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,KAAK;CACN,CAAA;AAEV,MAAM,GAAG,GAAG;IACV,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IAC3B,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IACxB,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;IACxB,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE;IACxB,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE;CAC3B,CAAA;AAID,SAAS,SAAS,CAAC,MAA0B;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAE1C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAA;YACxC,MAAM,CAAC,OAAO,GAAG;gBACf,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;gBAC9B,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO;gBAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAA;QACH,CAAC,CAAA;QAED,OAAO,EAAE,CAAA;QAET,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;QACtC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7D,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,UAAU,EAAE,CAAA;YACf,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,QAAQ,EAIR;IACA,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7C,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAA;QAExB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACb,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAA;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAA;QAEpC,GAAG,CAAC,GAAG,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAC7C,CAAA;QAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/D,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAEtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QAE1D,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;QAED,MAAM,IAAI,GAAI,MAA2C,CAAC,IAAI,IAAI,CAAC,CAAA;QAEnE,CAAC,CAAC,KAAK,CAAC,SAAS,CACf,IAAI,CAAC,GAAG,CACN,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,EACvC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAC3C,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,gBAAO,GAAG,EAAE,GAAG,YAAG,QAAQ,GAAS,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACY;IACjB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,MAAM,EAAE,IAAI,IAAI,GAAG,CAAA;IAEpC,MAAM,MAAM,GAAG,SAAS,CACtB,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACtD,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;QAEpD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;QAE1D,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAE5C,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;YAC3C,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACjD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEpC,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,CAAC;QACL,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG;QACvB,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG;QAC1B,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAA8B;QACtE,IAAI,EAAE,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACrC,CAAC,EACF,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAC9B,CAAA;IAED,MAAM,MAAM,GAAG,CACb,KAAC,MAAM,IACL,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACX,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAC5C,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7D,EAAE,EAAE,EAAE,EACN,YAAY,QACZ,KAAK,EACH,SAAS;YACP,CAAC,CAAC;gBACE,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE,MAAM;gBACrB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,CAAC;gBACT,GAAG,KAAK;aACT;YACH,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,YAGhD,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAChD,QAAQ,EAAE,GACK,CACnB,CAAC,CAAC,CAAC,CACF,QAAQ,EAAE,CACX,GACM,CACV,CAAA;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,CACjB,MAAC,QAAQ,eACP,cACE,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE;oBACL,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,CAAC;oBACR,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBACzC,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,CAAC;iBACV,GACD,EACD,MAAM,IACE,CACZ,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CAAA;AACH,CAAC","sourcesContent":["'use client'\n\nimport { Canvas, useFrame, useThree } from '@react-three/fiber'\nimport {\n Suspense,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} from 'react'\nimport * as THREE from 'three'\n\nconst GL = {\n alpha: true,\n antialias: true,\n depth: true,\n outputColorSpace: 'srgb',\n powerPreference: 'high-performance',\n stencil: false\n} as const\n\nconst tmp = {\n camDir: new THREE.Vector3(),\n hit: new THREE.Vector3(),\n ndc: new THREE.Vector2(),\n origin: new THREE.Vector3(0, 0, 0),\n plane: new THREE.Plane(),\n ray: new THREE.Raycaster()\n}\n\ntype Bounds = { height: number; pageX: number; pageY: number; width: number }\n\nfunction useBounds(target: HTMLElement | null) {\n const bounds = useRef<Bounds | null>(null)\n\n useLayoutEffect(() => {\n if (!target) {\n return\n }\n\n const measure = () => {\n const b = target.getBoundingClientRect()\n bounds.current = {\n height: b.height,\n pageX: b.left + window.scrollX,\n pageY: b.top + window.scrollY,\n width: b.width\n }\n }\n\n measure()\n\n const ro = new ResizeObserver(measure)\n ro.observe(target)\n ro.observe(document.body)\n window.addEventListener('resize', measure, { passive: true })\n\n return () => {\n ro.disconnect()\n window.removeEventListener('resize', measure)\n }\n }, [target])\n\n return bounds\n}\n\nfunction PositionedGroup({\n baseZoom,\n bounds,\n children\n}: React.PropsWithChildren<{\n baseZoom: number\n bounds: React.RefObject<Bounds | null>\n}>) {\n const ref = useRef<THREE.Group>(null)\n const { camera, size, viewport } = useThree()\n\n useFrame(() => {\n const g = ref.current\n const b = bounds.current\n\n if (!g || !b) {\n return\n }\n\n const left = b.pageX - window.scrollX\n const top = b.pageY - window.scrollY\n\n tmp.ndc.set(\n ((left + b.width / 2) / size.width) * 2 - 1,\n 1 - ((top + b.height / 2) / size.height) * 2\n )\n\n camera.getWorldDirection(tmp.camDir)\n tmp.plane.setFromNormalAndCoplanarPoint(tmp.camDir, tmp.origin)\n tmp.ray.setFromCamera(tmp.ndc, camera)\n\n const hit = tmp.ray.ray.intersectPlane(tmp.plane, tmp.hit)\n\n if (hit) {\n g.position.copy(hit)\n }\n\n const zoom = (camera as THREE.Camera & { zoom?: number }).zoom ?? 1\n\n g.scale.setScalar(\n Math.min(\n (b.width / size.width) * viewport.width,\n (b.height / size.height) * viewport.height\n ) * (baseZoom > 0 ? zoom / baseZoom : 1)\n )\n })\n\n return <group ref={ref}>{children}</group>\n}\n\nexport function SceneCanvas({\n camera,\n children,\n className,\n contained,\n noEvents,\n style\n}: SceneCanvasProps) {\n const [container, setContainer] = useState<HTMLDivElement | null>(null)\n const baseZoom = camera?.zoom ?? 150\n\n const bounds = useBounds(\n contained ? (container?.parentElement ?? null) : null\n )\n\n useEffect(() => {\n const el = contained && !noEvents ? container : null\n\n if (!el) {\n return\n }\n\n const lock = () => (document.body.style.userSelect = 'none')\n const unlock = () => (document.body.style.userSelect = '')\n\n el.addEventListener('pointerdown', lock)\n window.addEventListener('pointerup', unlock)\n\n return () => {\n el.removeEventListener('pointerdown', lock)\n window.removeEventListener('pointerup', unlock)\n }\n }, [container, contained, noEvents])\n\n const cam = useMemo(\n () => ({\n far: camera?.far ?? 100,\n near: camera?.near ?? -100,\n position: camera?.position ?? ([0, 0, 10] as [number, number, number]),\n zoom: baseZoom * (contained ? 1 : 2)\n }),\n [baseZoom, camera, contained]\n )\n\n const canvas = (\n <Canvas\n camera={cam}\n className={className}\n dpr={[1, 2]}\n eventPrefix={contained ? 'client' : 'offset'}\n eventSource={contained ? (container ?? undefined) : undefined}\n gl={GL}\n orthographic\n style={\n contained\n ? {\n height: '100dvh',\n inset: 0,\n pointerEvents: 'none',\n position: 'fixed',\n width: '100dvw',\n zIndex: 0,\n ...style\n }\n : { height: '100%', width: '100%', ...style }\n }\n >\n {contained ? (\n <PositionedGroup baseZoom={baseZoom} bounds={bounds}>\n {children()}\n </PositionedGroup>\n ) : (\n children()\n )}\n </Canvas>\n )\n\n return contained ? (\n <Suspense>\n <div\n ref={setContainer}\n style={{\n height: '100%',\n inset: 0,\n pointerEvents: noEvents ? 'none' : 'auto',\n position: 'absolute',\n width: '100%',\n zIndex: 1\n }}\n />\n {canvas}\n </Suspense>\n ) : (\n canvas\n )\n}\n\ninterface SceneCanvasProps {\n camera?: {\n far?: number\n near?: number\n position?: [number, number, number]\n zoom?: number\n }\n children: () => React.ReactNode\n className?: string\n contained?: boolean\n noEvents?: boolean\n style?: React.CSSProperties\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scramble.d.ts","sourceRoot":"","sources":["../../../src/ui/components/scramble.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,GAAS,EACT,MAAU,EACV,MAAM,EACP,EAAE,aAAa,2CA2Ef;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scramble.js","sourceRoot":"","sources":["../../../src/ui/components/scramble.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scramble.js","sourceRoot":"","sources":["../../../src/ui/components/scramble.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\nimport type { RefObject } from 'react'\n\nconst CHARS = '.,·-─~+:;=*π\"\"┐┌┘┴┬╗╔╝╚╬╠╣╩╦║░▒▓█▄▀▌▐■!?&#$@0123456789*'\n\nexport function Scramble({\n children,\n dur = 666,\n spread = 1,\n target\n}: ScrambleProps) {\n const text = String(children)\n const len = text.length\n const [display, setDisplay] = useState(text)\n const frame = useRef<null | number>(null)\n const waves = useRef<{ pos: number; time: number }[]>([])\n\n useEffect(() => {\n const el = target?.current\n\n if (!el) {\n return\n }\n\n const animate = () => {\n const t = Date.now()\n waves.current = waves.current.filter(w => t - w.time < dur)\n\n if (!waves.current.length) {\n setDisplay(text)\n frame.current = null\n\n return\n }\n\n setDisplay(\n text\n .split('')\n .map((c, i) => {\n if (c === ' ') {\n return c\n }\n\n for (const w of waves.current) {\n const age = t - w.time\n\n const rad =\n (Math.min(age / dur, 1) *\n (Math.max(w.pos, len - w.pos - 1) + 5)) /\n spread\n\n const dist = Math.abs(i - w.pos)\n const int = rad - dist\n\n if (dist <= rad && int > 0 && int <= 3) {\n return CHARS[(dist * 3 + ((age / 40) | 0)) % CHARS.length]\n }\n }\n\n return c\n })\n .join('')\n )\n\n frame.current = requestAnimationFrame(animate)\n }\n\n const onEnter = () => {\n waves.current.push({ pos: len >> 1, time: Date.now() })\n frame.current ??= requestAnimationFrame(animate)\n }\n\n el.addEventListener('mouseenter', onEnter)\n\n return () => {\n el.removeEventListener('mouseenter', onEnter)\n frame.current && cancelAnimationFrame(frame.current)\n }\n }, [target, text, len, dur, spread])\n\n useEffect(() => {\n setDisplay(text)\n }, [text])\n\n return <>{display}</>\n}\n\ninterface ScrambleProps {\n children: string\n dur?: number\n spread?: number\n target?: RefObject<HTMLElement | null>\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-switcher.d.ts","sourceRoot":"","sources":["../../../src/ui/components/selection-switcher.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,iBAAiB,SAyBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-switcher.js","sourceRoot":"","sources":["../../../src/ui/components/selection-switcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,MAAM,GAAG;IACb,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;CACZ,CAAA;AAEV,MAAM,UAAU,iBAAiB;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAErB,IAAI,GAAG,GAAG,CAAC,CAAA;QAEX,MAAM,KAAK,GAAG,GAAG,EAAE,CACjB,qBAAqB,CAAC,GAAG,EAAE,CACzB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,gBAAgB,EAChB,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAC1C,CACF,CAAA;QAEH,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,CACjC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAA;QAEpE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAEvD,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"selection-switcher.js","sourceRoot":"","sources":["../../../src/ui/components/selection-switcher.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,MAAM,GAAG;IACb,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;CACZ,CAAA;AAEV,MAAM,UAAU,iBAAiB;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAErB,IAAI,GAAG,GAAG,CAAC,CAAA;QAEX,MAAM,KAAK,GAAG,GAAG,EAAE,CACjB,qBAAqB,CAAC,GAAG,EAAE,CACzB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CACxC,gBAAgB,EAChB,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAC1C,CACF,CAAA;QAEH,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE,CACjC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAA;QAEpE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAEvD,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["'use client'\n\nimport { useEffect } from 'react'\n\nconst colors = [\n 'oklch(85% 0.12 330)',\n 'oklch(85% 0.12 300)',\n 'oklch(85% 0.12 270)',\n 'oklch(85% 0.12 230)',\n 'oklch(85% 0.12 180)',\n 'oklch(85% 0.12 150)',\n 'oklch(85% 0.12 120)',\n 'oklch(85% 0.12 90)',\n 'oklch(85% 0.12 60)',\n 'oklch(85% 0.12 30)',\n 'oklch(88% 0.10 80)'\n] as const\n\nexport function SelectionSwitcher() {\n useEffect(() => {\n const ac = new AbortController()\n const { signal } = ac\n\n let idx = 0\n\n const cycle = () =>\n requestAnimationFrame(() =>\n document.documentElement.style.setProperty(\n '--selection-bg',\n colors[(idx = (idx + 1) % colors.length)]\n )\n )\n\n const onKey = (e: KeyboardEvent) =>\n e.key.toLowerCase() === 'a' && (e.metaKey || e.ctrlKey) && cycle()\n\n document.addEventListener('selectstart', cycle, { signal })\n document.addEventListener('keydown', onKey, { signal })\n\n return () => ac.abort()\n }, [])\n\n return null\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../src/ui/components/shader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,oBAAoB,CAAA;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAUtC,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,WAAW,2UAmDb;AAED,UAAU,WACR,SAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,EAC7C,IAAI,CACF,aAAa,CAAC,gBAAgB,CAAC,EAC/B,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,UAAU,GAAG,cAAc,CACzE;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,SAAS,CAAA;CAC5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader.js","sourceRoot":"","sources":["../../../src/ui/components/shader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAsB,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACnD,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5B,CAAA;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,GAAG,KAAK,EACI;IACZ,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAChD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAElC,MAAM,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,eAAe;QAClB,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;KACpB,CAAC,CAAA;IAEF,cAAc,CACZ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;QAEpC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAA;QACxD,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CACxC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAC7C,CAAA;IACH,CAAC,EACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAClB,CAAA;IAED,SAAS,CACP,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EACrE,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1E,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,SAAS;QACT,cAAc;QACd,IAAI,EAAE,KAAK,CAAC,UAAU;QACtB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,WAAW,CAAC,OAAO;QAC7B,YAAY;KAC6B,CAAA;IAE3C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,4BAAoB,aAAa,GAAI,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CACL,mBAAU,KAAK,aACZ,QAAQ,IAAI,yBAAiB,EAC9B,4BAAoB,aAAa,GAAI,IAChC,CACR,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"shader.js","sourceRoot":"","sources":["../../../src/ui/components/shader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAsB,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACnD,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CAC5B,CAAA;AAED,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,GAAG,KAAK,EACI;IACZ,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAChD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAElC,MAAM,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,eAAe;QAClB,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;KACpB,CAAC,CAAA;IAEF,cAAc,CACZ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;QAEpC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAA;QACxD,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CACxC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAC7C,CAAA;IACH,CAAC,EACD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAClB,CAAA;IAED,SAAS,CACP,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EACrE,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1E,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,SAAS;QACT,cAAc;QACd,IAAI,EAAE,KAAK,CAAC,UAAU;QACtB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,WAAW,CAAC,OAAO;QAC7B,YAAY;KAC6B,CAAA;IAE3C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,4BAAoB,aAAa,GAAI,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CACL,mBAAU,KAAK,aACZ,QAAQ,IAAI,yBAAiB,EAC9B,4BAAoB,aAAa,GAAI,IAChC,CACR,CAAA;AACH,CAAC","sourcesContent":["'use client'\n\nimport { type ThreeElements, useThree } from '@react-three/fiber'\nimport { useEffect, useRef } from 'react'\nimport type { ReactNode } from 'react'\nimport * as THREE from 'three'\n\nimport { useCappedFrame } from '../../hooks/use-capped-frame'\n\nconst defaultUniforms = {\n uResolution: new THREE.Uniform(new THREE.Vector4()),\n uTime: new THREE.Uniform(0)\n}\n\nexport function Shader({\n children,\n defines,\n depthTest,\n fragmentShader,\n uniforms,\n vertexShader,\n ...props\n}: ShaderProps) {\n const invalidate = useThree(st => st.invalidate)\n const { size, viewport } = useThree()\n\n const isMobile = size.width < 1024\n\n const uniformsRef = useRef({\n ...defaultUniforms,\n ...(uniforms ?? {})\n })\n\n useCappedFrame(\n ({ clock }) => {\n const w = size.width * viewport.dpr\n const h = size.height * viewport.dpr\n\n uniformsRef.current.uTime.value = clock.getElapsedTime()\n uniformsRef.current.uResolution.value.copy(\n new THREE.Vector4(w, h, w / h, viewport.dpr)\n )\n },\n isMobile ? 0 : 80\n )\n\n useEffect(\n () => void (uniforms && Object.assign(uniformsRef.current, uniforms)),\n [uniforms]\n )\n\n useEffect(() => void (isMobile && invalidate(80)), [invalidate, isMobile])\n\n const materialProps = {\n defines: defines ?? {},\n depthTest,\n fragmentShader,\n side: THREE.DoubleSide,\n transparent: true,\n uniforms: uniformsRef.current,\n vertexShader\n } satisfies ThreeElements['shaderMaterial']\n\n if (typeof children === 'function') {\n return children(<shaderMaterial {...materialProps} />)\n }\n\n return (\n <mesh {...props}>\n {children ?? <planeGeometry />}\n <shaderMaterial {...materialProps} />\n </mesh>\n )\n}\n\ninterface ShaderProps\n extends Omit<ThreeElements['mesh'], 'children'>,\n Pick<\n ThreeElements['shaderMaterial'],\n 'defines' | 'depthTest' | 'fragmentShader' | 'uniforms' | 'vertexShader'\n > {\n children?: ((material: ReactNode) => ReactNode) | ReactNode\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/ui/components/stats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMxC,wBAAgB,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAsCrE;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACtD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,GAAG;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,SAAS,CAAA;SAAC,CAAA;QAC9C,KAAK,EAAE,MAAM,GAAG;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,SAAS,CAAA;SAAC,CAAA;KAC/C,EAAE,CAAA;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/ui/components/stats.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAc;IACpE,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAAM,KAAK,YACnE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,CAChB,KAAC,UAAU,IACT,SAAS,EAAC,uCAAuC,EACjD,QAAQ,kBAEP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GACpC,CACd,CAAA;YACD,MAAM,SAAS,GAAG,CAChB,KAAC,UAAU,IAAC,SAAS,EAAC,0CAA0C,EAAC,IAAI,kBAClE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GACpC,CACd,CAAA;YAED,OAAO,CACL,eACE,SAAS,EAAC,8EAA8E,aAGvF,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAE7B,KAAC,UAAU,IACT,SAAS,EAAC,+EAA+E,EACzF,QAAQ,kBAEP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GACL,EAEZ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAXxB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,KAAK,GAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAYzG,CACP,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/ui/components/stats.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,UAAU,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAc;IACpE,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAAM,KAAK,YACnE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,CAChB,KAAC,UAAU,IACT,SAAS,EAAC,uCAAuC,EACjD,QAAQ,kBAEP,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GACpC,CACd,CAAA;YACD,MAAM,SAAS,GAAG,CAChB,KAAC,UAAU,IAAC,SAAS,EAAC,0CAA0C,EAAC,IAAI,kBAClE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GACpC,CACd,CAAA;YAED,OAAO,CACL,eACE,SAAS,EAAC,8EAA8E,aAGvF,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAE7B,KAAC,UAAU,IACT,SAAS,EAAC,+EAA+E,EACzF,QAAQ,kBAEP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GACL,EAEZ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAXxB,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,KAAK,GAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAYzG,CACP,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC","sourcesContent":["import React, { ReactNode } from 'react'\n\nimport { cn } from '../../utils'\n\nimport { Typography } from './typography'\n\nexport function Stats({ className, items, flip, ...props }: StatsProps) {\n return (\n <div className={cn('flex w-full flex-col gap-5', className)} {...props}>\n {items.map(({ label, value }) => {\n const valueText = (\n <Typography\n className=\"text-xs leading-[1.4] tracking-widest\"\n expanded\n >\n {typeof value === 'string' ? value : value.node}\n </Typography>\n )\n const labelText = (\n <Typography className=\"leading-none tracking-[0.2em] opacity-60\" mono>\n {typeof label === 'string' ? label : label.node}\n </Typography>\n )\n\n return (\n <div\n className=\"text-midground grid grid-cols-[auto_1fr_auto] items-center gap-2.5 uppercase\"\n key={(typeof label === 'string' ? label : label.key ) + '@@@'+(typeof value === 'string' ? value : value.key)}\n >\n {flip ? labelText : valueText}\n\n <Typography\n className=\"min-w-0 overflow-hidden text-[13px] leading-[1.4] tracking-[0.4em] opacity-20\"\n expanded\n >\n {'·'.repeat(100)}\n </Typography>\n\n {flip ? valueText : labelText}\n </div>\n )\n })}\n </div>\n )\n}\n\ninterface StatsProps extends React.ComponentProps<'div'> {\n items: {\n label: string | {key: string, node: ReactNode}\n value: string | {key: string, node: ReactNode}\n }[]\n flip?: boolean\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare function TerminalDemo({ ariaLabel, className, height, label, loopDelayMs, outputLineDelayMs, sequence }: TerminalDemoProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
interface ClearStep {
|
|
3
|
+
type: 'clear';
|
|
4
|
+
}
|
|
5
|
+
interface OutputStep {
|
|
6
|
+
lines: string[];
|
|
7
|
+
type: 'output';
|
|
8
|
+
}
|
|
9
|
+
interface PauseStep {
|
|
10
|
+
ms: number;
|
|
11
|
+
type: 'pause';
|
|
12
|
+
}
|
|
13
|
+
interface PromptStep {
|
|
14
|
+
text: string;
|
|
15
|
+
type: 'prompt';
|
|
16
|
+
}
|
|
17
|
+
interface TerminalDemoProps {
|
|
18
|
+
ariaLabel?: string;
|
|
19
|
+
className?: string;
|
|
20
|
+
height?: number | string;
|
|
21
|
+
label?: string;
|
|
22
|
+
loopDelayMs?: number;
|
|
23
|
+
outputLineDelayMs?: number;
|
|
24
|
+
sequence: TerminalDemoStep[];
|
|
25
|
+
}
|
|
26
|
+
export type TerminalDemoStep = ClearStep | OutputStep | PauseStep | PromptStep | TypeStep;
|
|
27
|
+
interface TypeStep {
|
|
28
|
+
delay?: number;
|
|
29
|
+
text: string;
|
|
30
|
+
type: 'type';
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=terminal-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-demo.d.ts","sourceRoot":"","sources":["../../../src/ui/components/terminal-demo.tsx"],"names":[],"mappings":"AAUA,wBAAgB,YAAY,CAAC,EAC3B,SAA2B,EAC3B,SAAS,EACT,MAAY,EACZ,KAAkB,EAClB,WAAkB,EAClB,iBAAsB,EACtB,QAAQ,EACT,EAAE,iBAAiB,2CAgInB;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,QAAQ,CAAA;CACf;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,CAAA;CACd;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf;AAED,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,GACV,QAAQ,CAAA;AAEZ,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { cn } from '../../utils';
|
|
5
|
+
function sleep(ms) {
|
|
6
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
7
|
+
}
|
|
8
|
+
export function TerminalDemo({ ariaLabel = 'Terminal Demo', className, height = 320, label = 'Terminal', loopDelayMs = 1000, outputLineDelayMs = 50, sequence }) {
|
|
9
|
+
const bodyRef = useRef(null);
|
|
10
|
+
const startedRef = useRef(false);
|
|
11
|
+
const [html, setHtml] = useState('');
|
|
12
|
+
const runDemo = useCallback(async () => {
|
|
13
|
+
if (startedRef.current) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
startedRef.current = true;
|
|
17
|
+
let content = '';
|
|
18
|
+
const render = (h) => {
|
|
19
|
+
content = h;
|
|
20
|
+
setHtml(h);
|
|
21
|
+
};
|
|
22
|
+
for (;;) {
|
|
23
|
+
for (const step of sequence) {
|
|
24
|
+
switch (step.type) {
|
|
25
|
+
case 'clear':
|
|
26
|
+
content = '';
|
|
27
|
+
render('');
|
|
28
|
+
break;
|
|
29
|
+
case 'output':
|
|
30
|
+
for (const line of step.lines) {
|
|
31
|
+
render(content + '\n' + line);
|
|
32
|
+
await sleep(outputLineDelayMs);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case 'pause':
|
|
36
|
+
await sleep(step.ms);
|
|
37
|
+
break;
|
|
38
|
+
case 'prompt':
|
|
39
|
+
render(content + `<span class="text-midground">${step.text}</span>`);
|
|
40
|
+
break;
|
|
41
|
+
case 'type':
|
|
42
|
+
for (const char of step.text) {
|
|
43
|
+
render(content + char);
|
|
44
|
+
await sleep(step.delay ?? 30);
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
content = '';
|
|
50
|
+
render('');
|
|
51
|
+
await sleep(loopDelayMs);
|
|
52
|
+
}
|
|
53
|
+
}, [loopDelayMs, outputLineDelayMs, sequence]);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
const el = bodyRef.current?.closest('[data-demo-root]');
|
|
56
|
+
if (!el) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const observer = new IntersectionObserver(entries => {
|
|
60
|
+
entries.forEach(entry => {
|
|
61
|
+
if (entry.isIntersecting) {
|
|
62
|
+
runDemo();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}, { threshold: 0.3 });
|
|
66
|
+
observer.observe(el);
|
|
67
|
+
return () => observer.disconnect();
|
|
68
|
+
}, [runDemo]);
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (bodyRef.current) {
|
|
71
|
+
bodyRef.current.scrollTop = bodyRef.current.scrollHeight;
|
|
72
|
+
}
|
|
73
|
+
}, [html]);
|
|
74
|
+
return (_jsxs("div", { "aria-label": ariaLabel, className: cn('border-4 border-double border-inherit', className), "data-demo-root": true, role: "img", children: [_jsxs("div", { className: "flex items-center gap-3 border-b border-current/10 px-3 py-2", children: [_jsxs("div", { className: "flex gap-1.5", children: [_jsx("span", { className: "bg-midground size-2 rounded-full", style: { mixBlendMode: 'plus-lighter' } }), _jsx("span", { className: "bg-midground/60 size-2 rounded-full" }), _jsx("span", { className: "bg-midground/30 size-2 rounded-full" })] }), _jsx("span", { className: "font-courier text-[0.625rem] tracking-widest uppercase opacity-50", children: label })] }), _jsx("div", { className: cn('overflow-x-hidden overflow-y-auto whitespace-pre-wrap', 'font-courier p-4 text-[0.75rem] leading-[1.7] normal-case'), dangerouslySetInnerHTML: {
|
|
75
|
+
__html: html +
|
|
76
|
+
'<span class="blink inline-block dither ml-0.5 h-[1em] w-[1ch]"></span>'
|
|
77
|
+
}, ref: bodyRef, style: { height } })] }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=terminal-demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-demo.js","sourceRoot":"","sources":["../../../src/ui/components/terminal-demo.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { cn } from '../../utils'\n\nfunction sleep(ms: number) {\n return new Promise<void>(resolve => setTimeout(resolve, ms))\n}\n\nexport function TerminalDemo({\n ariaLabel = 'Terminal Demo',\n className,\n height = 320,\n label = 'Terminal',\n loopDelayMs = 1000,\n outputLineDelayMs = 50,\n sequence\n}: TerminalDemoProps) {\n const bodyRef = useRef<HTMLDivElement>(null)\n const startedRef = useRef(false)\n const [html, setHtml] = useState('')\n\n const runDemo = useCallback(async () => {\n if (startedRef.current) {\n return\n }\n\n startedRef.current = true\n let content = ''\n\n const render = (h: string) => {\n content = h\n setHtml(h)\n }\n\n for (;;) {\n for (const step of sequence) {\n switch (step.type) {\n case 'clear':\n content = ''\n render('')\n\n break\n\n case 'output':\n for (const line of step.lines) {\n render(content + '\\n' + line)\n await sleep(outputLineDelayMs)\n }\n\n break\n\n case 'pause':\n await sleep(step.ms)\n\n break\n\n case 'prompt':\n render(content + `<span class=\"text-midground\">${step.text}</span>`)\n\n break\n\n case 'type':\n for (const char of step.text) {\n render(content + char)\n await sleep(step.delay ?? 30)\n }\n\n break\n }\n }\n\n content = ''\n render('')\n await sleep(loopDelayMs)\n }\n }, [loopDelayMs, outputLineDelayMs, sequence])\n\n useEffect(() => {\n const el = bodyRef.current?.closest('[data-demo-root]')\n\n if (!el) {\n return\n }\n\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n runDemo()\n }\n })\n },\n { threshold: 0.3 }\n )\n\n observer.observe(el)\n\n return () => observer.disconnect()\n }, [runDemo])\n\n useEffect(() => {\n if (bodyRef.current) {\n bodyRef.current.scrollTop = bodyRef.current.scrollHeight\n }\n }, [html])\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn('border-4 border-double border-inherit', className)}\n data-demo-root\n role=\"img\"\n >\n <div className=\"flex items-center gap-3 border-b border-current/10 px-3 py-2\">\n <div className=\"flex gap-1.5\">\n <span\n className=\"bg-midground size-2 rounded-full\"\n style={{ mixBlendMode: 'plus-lighter' }}\n />\n\n <span className=\"bg-midground/60 size-2 rounded-full\" />\n <span className=\"bg-midground/30 size-2 rounded-full\" />\n </div>\n\n <span className=\"font-courier text-[0.625rem] tracking-widest uppercase opacity-50\">\n {label}\n </span>\n </div>\n\n <div\n className={cn(\n 'overflow-x-hidden overflow-y-auto whitespace-pre-wrap',\n 'font-courier p-4 text-[0.75rem] leading-[1.7] normal-case'\n )}\n dangerouslySetInnerHTML={{\n __html:\n html +\n '<span class=\"blink inline-block dither ml-0.5 h-[1em] w-[1ch]\"></span>'\n }}\n ref={bodyRef}\n style={{ height }}\n />\n </div>\n )\n}\n\ninterface ClearStep {\n type: 'clear'\n}\n\ninterface OutputStep {\n lines: string[]\n type: 'output'\n}\n\ninterface PauseStep {\n ms: number\n type: 'pause'\n}\n\ninterface PromptStep {\n text: string\n type: 'prompt'\n}\n\ninterface TerminalDemoProps {\n ariaLabel?: string\n className?: string\n height?: number | string\n label?: string\n loopDelayMs?: number\n outputLineDelayMs?: number\n sequence: TerminalDemoStep[]\n}\n\nexport type TerminalDemoStep =\n | ClearStep\n | OutputStep\n | PauseStep\n | PromptStep\n | TypeStep\n\ninterface TypeStep {\n delay?: number\n text: string\n type: 'type'\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.d.ts","sourceRoot":"","sources":["../../../src/ui/components/theme-toggle.tsx"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,gBAAgB,2CAoDjE;AAED,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useStore } from '@nanostores/react';
|
|
4
|
+
import { cn } from '../../utils';
|
|
5
|
+
import { $lightMode, toggleLens } from './overlays';
|
|
6
|
+
export function ThemeToggle({ className, style }) {
|
|
7
|
+
const light = useStore($lightMode);
|
|
8
|
+
return (_jsxs("button", { "aria-label": light ? 'Switch to dark mode' : 'Switch to light mode', className: cn('relative flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full', 'border border-current/25 bg-current/8 transition-colors', 'hover:bg-current/15', className), onClick: toggleLens, style: style, type: "button", children: [_jsxs("svg", { className: "absolute left-1 size-3.5 opacity-40", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, viewBox: "0 0 24 24", children: [_jsx("circle", { cx: 12, cy: 12, r: 5 }), _jsx("path", { d: "M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42" })] }), _jsx("svg", { className: "absolute right-1 size-3.5 opacity-40", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, viewBox: "0 0 24 24", children: _jsx("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }), _jsx("span", { "aria-hidden": true, className: cn('bg-midground absolute size-4 rounded-full', 'transition-transform duration-200 ease-out'), style: { transform: `translateX(${light ? 2 : 22}px)` } })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=theme-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.js","sourceRoot":"","sources":["../../../src/ui/components/theme-toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAoB;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;IAElC,OAAO,CACL,gCACc,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,EAClE,SAAS,EAAE,EAAE,CACX,0EAA0E,EAC1E,yDAAyD,EACzD,qBAAqB,EACrB,SAAS,CACV,EACD,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,QAAQ,aAEb,eACE,SAAS,EAAC,qCAAqC,EAC/C,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,OAAO,EAAC,WAAW,aAEnB,iBAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAI,EAEhC,eAAM,CAAC,EAAC,oHAAoH,GAAG,IAC3H,EAEN,cACE,SAAS,EAAC,sCAAsC,EAChD,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,OAAO,EAAC,WAAW,YAEnB,eAAM,CAAC,EAAC,iDAAiD,GAAG,GACxD,EAEN,oCAEE,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,4CAA4C,CAC7C,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GACvD,IACK,CACV,CAAA;AACH,CAAC","sourcesContent":["'use client'\n\nimport { useStore } from '@nanostores/react'\n\nimport { cn } from '../../utils'\n\nimport { $lightMode, toggleLens } from './overlays'\n\nexport function ThemeToggle({ className, style }: ThemeToggleProps) {\n const light = useStore($lightMode)\n\n return (\n <button\n aria-label={light ? 'Switch to dark mode' : 'Switch to light mode'}\n className={cn(\n 'relative flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full',\n 'border border-current/25 bg-current/8 transition-colors',\n 'hover:bg-current/15',\n className\n )}\n onClick={toggleLens}\n style={style}\n type=\"button\"\n >\n <svg\n className=\"absolute left-1 size-3.5 opacity-40\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <circle cx={12} cy={12} r={5} />\n\n <path d=\"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\" />\n </svg>\n\n <svg\n className=\"absolute right-1 size-3.5 opacity-40\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n\n <span\n aria-hidden\n className={cn(\n 'bg-midground absolute size-4 rounded-full',\n 'transition-transform duration-200 ease-out'\n )}\n style={{ transform: `translateX(${light ? 2 : 22}px)` }}\n />\n </button>\n )\n}\n\ninterface ThemeToggleProps {\n className?: string\n style?: React.CSSProperties\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tv.d.ts","sourceRoot":"","sources":["../../../src/ui/components/tv.tsx"],"names":[],"mappings":"AAuLA,wBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAqCvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tv.js","sourceRoot":"","sources":["../../../src/ui/components/tv.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,MAAM,IAAI,GAAG,UAAU,CAAC,wDAAwD,CAAA;AAEhF,MAAM,IAAI,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiGtB,CAAA;AAEF,SAAS,KAAK,CAAC,GAA8C;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAA;QAErB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAM;QACR,CAAC;QAED,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAEhC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAM;QACR,CAAC;QAED,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAE,CAAA;YAChC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACvB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;YAEnB,OAAO,CAAC,CAAA;QACV,CAAC,CAAA;QAED,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,EAAG,CAAA;QAC7B,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;QAC9C,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAA;QAChD,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACjB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAEhB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;QACjD,EAAE,CAAC,UAAU,CACX,EAAE,CAAC,YAAY,EACf,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9C,EAAE,CAAC,WAAW,CACf,CAAA;QAED,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACtC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAA;QAC7B,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAExC,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,CAAA;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAEzC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;YAC1B,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;YAE5B,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QACtC,CAAC,CAAA;QAED,MAAM,EAAE,CAAA;QAER,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QACrC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEb,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAE5B,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;YAChD,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;YACnC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAEtC,GAAG,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC,CAAA;QAED,GAAG,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAEzC,OAAO,GAAG,EAAE;YACV,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACjC,EAAE,CAAC,UAAU,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;AACX,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,EAAE,SAAS,EAA0B;IACtD,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IACjD,KAAK,CAAC,SAAS,CAAC,CAAA;IAEhB,OAAO,CACL,eAAK,SAAS,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAC/D,eAAK,SAAS,EAAC,wBAAwB,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,aAAa,aACvE,eACE,CAAC,EAAC,iUAAiU,EACnU,IAAI,EAAC,SAAS,EACd,MAAM,EAAC,SAAS,EAChB,WAAW,EAAC,MAAM,GAClB,EAEF,eACE,CAAC,EAAC,iEAAiE,EACnE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,WAAW,EAAC,KAAK,GACjB,EAEF,eACE,CAAC,EAAC,8DAA8D,EAChE,IAAI,EAAC,SAAS,GACd,IACE,EAEN,iBACE,SAAS,EAAC,gCAAgC,EAC1C,GAAG,EAAE,SAAS,EACd,KAAK,EAAE;oBACL,QAAQ,EACN,iEAAiE;iBACpE,GACD,IACE,CACP,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"tv.js","sourceRoot":"","sources":["../../../src/ui/components/tv.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useRef } from 'react'\n\nconst VERT = /* glsl */ `attribute vec2 a;void main(){gl_Position=vec4(a,0,1);}`\n\nconst FRAG = /* glsl */ `precision highp float;\nuniform float t;\nuniform vec2 r;\n\nconst float FBM_STR = .08;\n\nfloat h(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }\n\nfloat n2(vec2 p) {\n vec2 i = floor(p), f = fract(p);\n f = f * f * (3. - 2. * f);\n\n return mix(\n mix(h(i), h(i + vec2(1, 0)), f.x),\n mix(h(i + vec2(0, 1)), h(i + vec2(1, 1)), f.x),\n f.y\n );\n}\n\nfloat fbm(vec2 p) {\n float v = 0., a = .5;\n\n for (int i = 0; i < 4; i++) {\n v += a * n2(p);\n p *= 2.1;\n a *= .45;\n }\n\n return v;\n}\n\nfloat drift(float speed, float s) {\n return fract(t * speed + s + .02 * sin(t * .4 + s * 3.));\n}\n\nfloat brushAt(vec2 uv, float y, float th, float s) {\n float hw = .34 + .08 * h(vec2(s, 77.));\n float cx = .5;\n float xn = (uv.x - (cx - hw)) / (2. * hw);\n float env = smoothstep(0., .03, xn) * smoothstep(1., .97, xn);\n float localTh = th * env;\n\n if (localTh < .002) return 0.;\n\n float morph = floor(t * 8.) * .7 + s;\n float top = y - localTh * .5 + fbm(vec2(uv.x * 6., morph)) * FBM_STR;\n float bot = y + localTh * .5 - fbm(vec2(uv.x * 6., morph + 30.)) * FBM_STR;\n float x0 = cx - hw + fbm(vec2(uv.y * 8., morph + 60.)) * FBM_STR;\n float x1 = cx + hw - fbm(vec2(uv.y * 8., morph + 90.)) * FBM_STR;\n\n float dMin = min(min(uv.y - top, bot - uv.y), min(uv.x - x0, x1 - uv.x));\n\n float bristle = n2(vec2(uv.x * 60., uv.y * 8. + s)) * .4\n + n2(vec2(uv.x * 25., (uv.y - y) * 120. + s)) * .35\n + n2(vec2(uv.x * 90., uv.y * 3. + s * 2.)) * .25;\n\n float eaten = smoothstep(.03, 0., dMin) * (1. - smoothstep(.2, .5, bristle));\n\n return clamp(smoothstep(0., .003, dMin) * (1. - eaten), 0., 1.);\n}\n\nvoid main() {\n vec2 uv = gl_FragCoord.xy / r;\n uv = vec2(uv.x * cos(.095) - uv.y * sin(.095), uv.x * sin(.095) + uv.y * cos(.095));\n uv += vec2(fbm(uv * 4. + t * .06), fbm(uv * 4. + 8. + t * .05)) * .012;\n\n vec3 c = vec3(.992, .992, .051);\n\n float smScroll = -drift(.04, 5.) * 2.;\n float sm = 0.;\n\n for (int i = 0; i < 20; i++) {\n sm = max(sm, brushAt(uv, mod(float(i) * .1 + smScroll, 2.) - .5, .04, float(i) + 10.));\n }\n\n float d1 = drift(.15, 1.), d2 = drift(.15, 1.37), d3 = drift(.15, 1.58), d4 = drift(.15, 1.82);\n float big = max(\n max(brushAt(uv, 1.1 - d1 * 1.4, .28, 1.), brushAt(uv, 1.1 - d2 * 1.4, .18, 2.)),\n max(brushAt(uv, 1.1 - d3 * 1.4, .3, 3.), brushAt(uv, 1.1 - d4 * 1.4, .15, 4.))\n );\n\n c = mix(c, vec3(0.), clamp(max(sm, big), 0., 1.));\n c *= .94 + .06 * sin(uv.y * r.y * 6.283);\n\n vec2 raw = gl_FragCoord.xy / r;\n float dx = min(raw.x - .22, .90 - raw.x);\n float dy = min(raw.y - .29, .86 - raw.y);\n float cycle = floor(t * .4);\n float edge = mix(smoothstep(.22, 0., max(min(dx, dy), 0.)), 1., step(.75, h(vec2(cycle, 13.))))\n * smoothstep(.85, 1., sin(t * 2.5) * .5 + .5)\n * (.7 + .3 * h(vec2(cycle, 7.)));\n\n float scanY = floor(gl_FragCoord.y);\n float rowNoise = h(vec2(scanY, floor(t * 30.)));\n c *= 1. - edge * max(step(.45, rowNoise), step(.3, h(vec2(gl_FragCoord.x + scanY * 7., floor(t * 45.)))) * step(.2, rowNoise));\n\n gl_FragColor = vec4(clamp(c, 0., 1.), 1.);\n}`\n\nfunction useGL(ref: React.RefObject<HTMLCanvasElement | null>) {\n const raf = useRef(0)\n\n useEffect(() => {\n const c = ref.current\n\n if (!c) {\n return\n }\n\n const gl = c.getContext('webgl')\n\n if (!gl) {\n return\n }\n\n const sh = (type: number, src: string) => {\n const s = gl.createShader(type)!\n gl.shaderSource(s, src)\n gl.compileShader(s)\n\n return s\n }\n\n const p = gl.createProgram()!\n gl.attachShader(p, sh(gl.VERTEX_SHADER, VERT))\n gl.attachShader(p, sh(gl.FRAGMENT_SHADER, FRAG))\n gl.linkProgram(p)\n gl.useProgram(p)\n\n gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer())\n gl.bufferData(\n gl.ARRAY_BUFFER,\n new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]),\n gl.STATIC_DRAW\n )\n\n const a = gl.getAttribLocation(p, 'a')\n gl.enableVertexAttribArray(a)\n gl.vertexAttribPointer(a, 2, gl.FLOAT, false, 0, 0)\n\n const uT = gl.getUniformLocation(p, 't')\n const uR = gl.getUniformLocation(p, 'r')\n\n const resize = () => {\n const rect = c.getBoundingClientRect()\n const dpr = Math.min(devicePixelRatio, 2)\n\n c.width = rect.width * dpr\n c.height = rect.height * dpr\n\n gl.viewport(0, 0, c.width, c.height)\n }\n\n resize()\n\n const ro = new ResizeObserver(resize)\n ro.observe(c)\n\n const t0 = performance.now()\n\n const loop = () => {\n gl.uniform1f(uT, (performance.now() - t0) / 1e3)\n gl.uniform2f(uR, c.width, c.height)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4)\n\n raf.current = requestAnimationFrame(loop)\n }\n\n raf.current = requestAnimationFrame(loop)\n\n return () => {\n cancelAnimationFrame(raf.current)\n ro.disconnect()\n }\n }, [ref])\n}\n\nexport function TV({ className }: { className?: string }) {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n useGL(canvasRef)\n\n return (\n <div className={['relative', className].filter(Boolean).join(' ')}>\n <svg className=\"relative h-full w-full\" fill=\"none\" viewBox=\"0 0 210 173\">\n <path\n d=\"M30.8342 2.44471 6.08268 36.683c-.24437.338-.38254.7412-.39689 1.158L1.57754 157.126c-.03891 1.129.82339 2.087 1.95096 2.167l162.4835 11.463c.433.031.866-.074 1.238-.3l35.718-21.69c.607-.369.986-1.02 1.008-1.73l4.102-130.9871c.035-1.1269-.826-2.0806-1.951-2.1604L32.6847 1.58029c-.7248-.05144-1.4247.27551-1.8505.86442Z\"\n fill=\"#FDFD0D\"\n stroke=\"#FDFD0D\"\n strokeWidth=\"3.15\"\n />\n\n <path\n d=\"M203.09 17.1483 35.6844 5.83395l-4.2 121.94805 168.4906 13.076z\"\n fill=\"#000\"\n stroke=\"#FDFD0D\"\n strokeWidth=\"4.2\"\n />\n\n <path\n d=\"M190.491 29.7483 48.2859 18.434l-4.2 98.848 143.2901 10.976z\"\n fill=\"#FDFD0D\"\n />\n </svg>\n\n <canvas\n className=\"absolute inset-0 h-full w-full\"\n ref={canvasRef}\n style={{\n clipPath:\n 'polygon(23% 10.65%, 90.71% 17.2%, 89.23% 74.13%, 20.99% 67.79%)'\n }}\n />\n </div>\n )\n}\n"]}
|
|
@@ -9,3 +9,4 @@ export declare const H1: import("react").ForwardRefExoticComponent<{
|
|
|
9
9
|
sans?: boolean | null | undefined;
|
|
10
10
|
variant?: "lg" | "md" | "sm" | "xl" | null | undefined;
|
|
11
11
|
} & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">, "as" | "expanded" | "compressed" | "courier" | "mondwest" | "mono" | "sans" | "variant"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
12
|
+
//# sourceMappingURL=h1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h1.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/typography/h1.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,EAAE;;;;;;;;;;8QAWd,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h1.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/h1.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,OAAO,EAAC,IAAI,EACN,GAAG,EAAE,GAAG,KAAK,GACnB,CACH,CAAA;AACH,CAAC,CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"h1.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/h1.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,OAAO,EAAC,IAAI,EACN,GAAG,EAAE,GAAG,KAAK,GACnB,CACH,CAAA;AACH,CAAC,CACF,CAAA","sourcesContent":["import { forwardRef } from 'react'\n\nimport { cn } from '../../../utils'\n\nimport { Typography, type TypographyProps } from '.'\n\nexport const H1 = forwardRef<HTMLHeadingElement, TypographyProps<'h1'>>(\n ({ className, ...props }, ref) => {\n return (\n <Typography\n as=\"h1\"\n className={cn('font-bold', className)}\n variant=\"xl\"\n {...{ ref, ...props }}\n />\n )\n }\n)\n"]}
|
|
@@ -9,3 +9,4 @@ export declare const H2: import("react").ForwardRefExoticComponent<{
|
|
|
9
9
|
sans?: boolean | null | undefined;
|
|
10
10
|
variant?: "lg" | "md" | "sm" | "xl" | null | undefined;
|
|
11
11
|
} & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, "ref">, "as" | "expanded" | "compressed" | "courier" | "mondwest" | "mono" | "sans" | "variant"> & import("react").RefAttributes<HTMLHeadingElement>>;
|
|
12
|
+
//# sourceMappingURL=h2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"h2.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/typography/h2.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,EAAE;;;;;;;;;;8QAWd,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h2.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/h2.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,OAAO,EAAC,IAAI,EACN,GAAG,EAAE,GAAG,KAAK,GACnB,CACH,CAAA;AACH,CAAC,CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"h2.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/h2.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAC,IAAI,EACP,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,OAAO,EAAC,IAAI,EACN,GAAG,EAAE,GAAG,KAAK,GACnB,CACH,CAAA;AACH,CAAC,CACF,CAAA","sourcesContent":["import { forwardRef } from 'react'\n\nimport { cn } from '../../../utils'\n\nimport { Typography, type TypographyProps } from '.'\n\nexport const H2 = forwardRef<HTMLHeadingElement, TypographyProps<'h2'>>(\n ({ className, ...props }, ref) => {\n return (\n <Typography\n as=\"h2\"\n className={cn('font-bold', className)}\n variant=\"lg\"\n {...{ ref, ...props }}\n />\n )\n }\n)\n"]}
|
|
@@ -13,3 +13,4 @@ export declare const Typography: import("../../..").PolyComponent<"span", OwnPro
|
|
|
13
13
|
type OwnProps = VariantProps<typeof typographyVariants>;
|
|
14
14
|
export type TypographyProps<T extends React.ElementType = 'span'> = PolyProps<T, OwnProps>;
|
|
15
15
|
export {};
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/typography/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAM,KAAK,SAAS,EAAW,MAAM,gBAAgB,CAAA;AAE5D,QAAA,MAAM,kBAAkB;;;;;;;;8EAetB,CAAA;AAEF,eAAO,MAAM,UAAU,oDAwBtB,CAAA;AAED,KAAK,QAAQ,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEvD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,IAAI,SAAS,CAC3E,CAAC,EACD,QAAQ,CACT,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,EAAE,EAAkB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE;IAC1C,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;QACvC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;QACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;QACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE;QACxD,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,OAAO,EAAE;YACP,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,+CAA+C;SACpD;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,CACE,EACE,EAAE,EACF,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,IAAI,EACR,EACD,GAAG,EACH,EAAE;IACF,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC/D,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;IAE3E,OAAO,aAAa,CAAC,CAAC,EAAE,IAAI,MAAM,CAAsB,EAAE;QACxD,GAAG,IAAI;QACP,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC;QACzE,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC,CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,EAAE,EAAkB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE;IAC1C,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;QACvC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;QACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;QACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE;QACxD,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,OAAO,EAAE;YACP,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,kDAAkD;YACtD,EAAE,EAAE,+CAA+C;SACpD;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAC/B,CACE,EACE,EAAE,EACF,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,IAAI,EACR,EACD,GAAG,EACH,EAAE;IACF,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC/D,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;IAE3E,OAAO,aAAa,CAAC,CAAC,EAAE,IAAI,MAAM,CAAsB,EAAE;QACxD,GAAG,IAAI;QACP,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC;QACzE,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC,CACF,CAAA","sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport { createElement } from 'react'\n\nimport { cn, type PolyProps, polyRef } from '../../../utils'\n\nconst typographyVariants = cva('font-sans', {\n variants: {\n compressed: { true: 'font-compressed' },\n courier: { true: 'font-courier' },\n expanded: { true: 'font-expanded' },\n mondwest: { true: 'font-mondwest tracking-[0.1875rem]' },\n mono: { true: 'font-mono' },\n sans: { true: 'font-sans' },\n variant: {\n lg: 'text-[2.625rem] leading-[1] tracking-[0.0525rem]',\n md: 'text-[2.625rem] leading-[1] tracking-[0.0525rem]',\n sm: 'leading-1.4 text-[.9375rem] tracking-[0.1875rem]',\n xl: 'text-[4.5rem] leading-[1] tracking-[0.135rem]'\n }\n }\n})\n\nexport const Typography = polyRef<'span', OwnProps>(\n (\n {\n as,\n className,\n compressed,\n courier,\n expanded,\n mondwest,\n mono,\n variant,\n ...rest\n },\n ref\n ) => {\n const fonts = { compressed, courier, expanded, mondwest, mono }\n const fontVariant = { ...fonts, sans: !Object.values(fonts).some(Boolean) }\n\n return createElement((as ?? 'span') as React.ElementType, {\n ...rest,\n className: cn(typographyVariants({ ...fontVariant, variant }), className),\n ref\n })\n }\n)\n\ntype OwnProps = VariantProps<typeof typographyVariants>\n\nexport type TypographyProps<T extends React.ElementType = 'span'> = PolyProps<\n T,\n OwnProps\n>\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/typography/legend.tsx"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,2CAQb;AAED,UAAU,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legend.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/legend.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACI;IACZ,OAAO,CACL,kBAAQ,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,KAAK,aAChE,KAAC,KAAK,cAAE,KAAK,GAAS,EACrB,GAAG,IAAI,MAAC,KAAK,IAAC,SAAS,EAAC,YAAY,mBAAI,GAAG,IAAS,EACpD,QAAQ,IACF,CACV,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"legend.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/legend.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACI;IACZ,OAAO,CACL,kBAAQ,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAAM,KAAK,aAChE,KAAC,KAAK,cAAE,KAAK,GAAS,EACrB,GAAG,IAAI,MAAC,KAAK,IAAC,SAAS,EAAC,YAAY,mBAAI,GAAG,IAAS,EACpD,QAAQ,IACF,CACV,CAAA;AACH,CAAC","sourcesContent":["import { cn } from '../../../utils'\n\nimport { Small } from './small'\n\nexport function Legend({\n children,\n className,\n label,\n sub,\n ...props\n}: LegendProps) {\n return (\n <hgroup className={cn('flex flex-col gap-2', className)} {...props}>\n <Small>{label}</Small>\n {sub && <Small className=\"opacity-50\">- {sub}</Small>}\n {children}\n </hgroup>\n )\n}\n\ninterface LegendProps extends React.ComponentProps<'hgroup'> {\n label: React.ReactNode\n sub?: React.ReactNode\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"small.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/typography/small.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,GAAG,CAAA;AAEpD,eAAO,MAAM,KAAK,+HAMjB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"small.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/small.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAC7B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,OAAO,CACL,KAAC,UAAU,IAAC,EAAE,EAAC,OAAO,EAAC,QAAQ,QAAC,OAAO,EAAC,IAAI,EAAO,GAAG,EAAE,GAAG,KAAK,GAAM,CACvE,CAAA;AACH,CAAC,CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"small.js","sourceRoot":"","sources":["../../../../src/ui/components/typography/small.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,UAAU,EAAwB,MAAM,GAAG,CAAA;AAEpD,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAC7B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,OAAO,CACL,KAAC,UAAU,IAAC,EAAE,EAAC,OAAO,EAAC,QAAQ,QAAC,OAAO,EAAC,IAAI,EAAO,GAAG,EAAE,GAAG,KAAK,GAAM,CACvE,CAAA;AACH,CAAC,CACF,CAAA","sourcesContent":["import { forwardRef } from 'react'\n\nimport { Typography, type TypographyProps } from '.'\n\nexport const Small = forwardRef<HTMLSpanElement, TypographyProps<any>>(\n (props, ref) => {\n return (\n <Typography as=\"small\" mondwest variant=\"sm\" {...{ ref, ...props }} />\n )\n }\n)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchlist.d.ts","sourceRoot":"","sources":["../../../src/ui/components/watchlist.tsx"],"names":[],"mappings":"AAWA,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,OAAe,EACf,KAAK,EACL,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,cAAc,2CAiFhB;AAED,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchlist.js","sourceRoot":"","sources":["../../../src/ui/components/watchlist.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watchlist.js","sourceRoot":"","sources":["../../../src/ui/components/watchlist.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { cn } from '../../utils'\n\nimport { Scramble } from './ascii'\nimport { LinkIcon } from './icons'\nimport { Typography } from './typography'\n\nconst ETH_RE = /^0x[a-fA-F0-9]{40}$/\nconst truncate = (a: string) => `${a.slice(0, 6)}${'·'.repeat(8)}${a.slice(-4)}`\n\nexport function Watchlist({\n className,\n counter = false,\n items,\n scramble = false,\n ...props\n}: WatchlistProps) {\n return (\n <div className={cn('flex flex-col gap-3', className)} {...props}>\n {items.map(({ label, right, url }, i) => {\n const isStr = typeof label === 'string'\n const eth = isStr && ETH_RE.test(label)\n const text = eth ? truncate(label) : (label as string)\n\n return (\n <a\n className={cn(\n 'grid items-center gap-2.5 px-2.5 py-1.5',\n 'leading-[1.4] uppercase',\n 'hover:bg-midground/10! hover:ring-2 hover:ring-current/20',\n 'transition-all duration-500 hover:duration-0',\n 'opacity-(--midground-alpha)'\n )}\n href={url}\n key={i}\n rel=\"noopener noreferrer\"\n style={{\n background: `color-mix(in oklch, var(--color-midground) ${10 * Math.max(0, 1 - i / 9)}%, transparent)`,\n gridTemplateColumns: [\n counter && 'auto auto',\n '1fr',\n right && 'auto',\n url && 'auto auto'\n ]\n .filter(Boolean)\n .join(' ')\n }}\n target=\"_blank\"\n >\n {counter && (\n <>\n <Typography\n className=\"text-lg tracking-[0.35em] opacity-40\"\n compressed\n >\n {String(i + 1).padStart(2, '0')}\n </Typography>\n\n <span className=\"text-[0.8125rem] font-bold tracking-[0.4em] opacity-20\">\n :\n </span>\n </>\n )}\n\n {isStr ? (\n <Typography\n className=\"min-w-0 overflow-hidden text-lg font-bold tracking-[0.35em]\"\n {...(eth ? { mono: true } : { compressed: true })}\n >\n {scramble ? <Scramble delay={i * 80} text={text} /> : text}\n </Typography>\n ) : (\n label\n )}\n\n {right && (\n <Typography\n className=\"text-right text-sm tracking-widest opacity-40\"\n mono\n >\n {right}\n </Typography>\n )}\n\n {url && (\n <>\n <span className=\"text-[0.8125rem] tracking-[0.4em] opacity-20\">\n :\n </span>\n <LinkIcon className=\"text-midground size-3.5\" />\n </>\n )}\n </a>\n )\n })}\n </div>\n )\n}\n\ninterface WatchlistProps extends React.ComponentProps<'div'> {\n counter?: boolean\n items: { label?: React.ReactNode; right?: React.ReactNode; url?: string }[]\n scramble?: boolean\n}\n"]}
|
package/dist/ui/footer.d.ts
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
export declare function Footer(): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export declare function Footer({ LinkComponent }: FooterProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
interface FooterProps {
|
|
3
|
+
LinkComponent?: React.ElementType;
|
|
4
|
+
}
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../src/ui/footer.tsx"],"names":[],"mappings":"AAeA,wBAAgB,MAAM,CAAC,EAAE,aAAmB,EAAE,EAAE,WAAW,2CA8B1D;AAED,UAAU,WAAW;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;CAClC"}
|
package/dist/ui/footer.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Link } from 'next-view-transitions';
|
|
4
3
|
import { useRef } from 'react';
|
|
5
4
|
import { useCssVarDims } from '../hooks/use-css-var-dims';
|
|
6
5
|
import { Cell, Grid } from './components/grid';
|
|
@@ -11,9 +10,9 @@ const GROUPS = [
|
|
|
11
10
|
{ label: 'Company', links: ['About', 'Careers', 'Contact'] },
|
|
12
11
|
{ label: 'Legal', links: ['Privacy', 'Terms', 'License'] }
|
|
13
12
|
];
|
|
14
|
-
export function Footer() {
|
|
13
|
+
export function Footer({ LinkComponent = 'a' }) {
|
|
15
14
|
const ref = useRef(null);
|
|
16
15
|
useCssVarDims('footer', ref);
|
|
17
|
-
return (_jsxs(Grid, { as: "footer", ref, children: [_jsx(Cell, { children: _jsxs(Small, { className: "opacity-50", children: ["\u00A9", new Date().getFullYear()] }) }), GROUPS.map(({ label, links }) => (_jsxs(Cell, { children: [_jsx(Small, { className: "opacity-50", children: label }), _jsx("nav", { className: "mt-3 flex flex-col gap-2", children: links.map(link => (_jsx(Small, { as:
|
|
16
|
+
return (_jsxs(Grid, { as: "footer", ref, children: [_jsx(Cell, { children: _jsxs(Small, { className: "opacity-50", children: ["\u00A9", new Date().getFullYear()] }) }), GROUPS.map(({ label, links }) => (_jsxs(Cell, { children: [_jsx(Small, { className: "opacity-50", children: label }), _jsx("nav", { className: "mt-3 flex flex-col gap-2", children: links.map(link => (_jsx(Small, { as: LinkComponent, className: "underline", href: `/${link.toLowerCase()}`, children: link }, link))) })] }, label)))] }));
|
|
18
17
|
}
|
|
19
18
|
//# sourceMappingURL=footer.js.map
|
package/dist/ui/footer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../src/ui/footer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../src/ui/footer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAA;AAErD,MAAM,MAAM,GAAG;IACb,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;IAChE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;IAC1D,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;IAC5D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE;CAC3D,CAAA;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,aAAa,GAAG,GAAG,EAAe;IACzD,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAE5B,OAAO,CACL,MAAC,IAAI,IAAC,EAAE,EAAC,QAAQ,EAAO,GAAG,aACzB,KAAC,IAAI,cACH,MAAC,KAAK,IAAC,SAAS,EAAC,YAAY,uBAAQ,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAS,GACjE,EAEN,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAChC,MAAC,IAAI,eACH,KAAC,KAAK,IAAC,SAAS,EAAC,YAAY,YAAE,KAAK,GAAS,EAE7C,cAAK,SAAS,EAAC,0BAA0B,YACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACjB,KAAC,KAAK,IACJ,EAAE,EAAE,aAAa,EACjB,SAAS,EAAC,WAAW,EACrB,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,YAG7B,IAAI,IAFA,IAAI,CAGH,CACT,CAAC,GACE,KAdG,KAAK,CAeT,CACR,CAAC,IACG,CACR,CAAA;AACH,CAAC","sourcesContent":["'use client'\n\nimport { useRef } from 'react'\n\nimport { useCssVarDims } from '../hooks/use-css-var-dims'\nimport { Cell, Grid } from './components/grid'\nimport { Small } from './components/typography/small'\n\nconst GROUPS = [\n { label: 'Product', links: ['Overview', 'Features', 'Pricing'] },\n { label: 'Resources', links: ['Docs', 'Blog', 'Support'] },\n { label: 'Company', links: ['About', 'Careers', 'Contact'] },\n { label: 'Legal', links: ['Privacy', 'Terms', 'License'] }\n]\n\nexport function Footer({ LinkComponent = 'a' }: FooterProps) {\n const ref = useRef<HTMLElement>(null)\n useCssVarDims('footer', ref)\n\n return (\n <Grid as=\"footer\" {...{ ref }}>\n <Cell>\n <Small className=\"opacity-50\">©{new Date().getFullYear()}</Small>\n </Cell>\n\n {GROUPS.map(({ label, links }) => (\n <Cell key={label}>\n <Small className=\"opacity-50\">{label}</Small>\n\n <nav className=\"mt-3 flex flex-col gap-2\">\n {links.map(link => (\n <Small\n as={LinkComponent}\n className=\"underline\"\n href={`/${link.toLowerCase()}`}\n key={link}\n >\n {link}\n </Small>\n ))}\n </nav>\n </Cell>\n ))}\n </Grid>\n )\n}\n\ninterface FooterProps {\n LinkComponent?: React.ElementType\n}\n"]}
|