PageSourceSearch

https://hideaway.chat/assets/ghost-signal-showcase-DWRcRDQK.js

js hideaway.chat collected 2026-10-09 17:51:34 UTC 4,203 bytes, 1 lines download raw bytes

1import{i as r,j as e}from"./vendor-react-B5Pseaix.js";import{G as d}from"./GhostSignal-C1cOgE16.js";const c=["idle","listening","thinking","speaking","waiting","complete","failure"],l=[{form:"sphere",state:"idle",label:"Planet",description:"A calm field of atoms held in orbit."},{form:"waveform",state:"listening",label:"Wave",description:"A live sound surface rising and falling as Ghost hears you."},{form:"mountain",state:"thinking",label:"Mountain",description:"A landscape assembled from the same limitless material."},{form:"person",state:"speaking",label:"Person",description:"An anonymous head and upper-body field moves subtly with Ghost’s voice."},{form:"dna",state:"thinking",label:"DNA",description:"Two computing strands carrying motion and light."},{form:"orbit",state:"waiting",label:"Orbit",description:"Suspended rings that hold attention without freezing."},{form:"sandfall",state:"waiting",label:"Time",description:"The idle field widens, drizzles like sand, and settles as one body."},{form:"bloom",state:"complete",label:"Complete",description:"The material resolves into one calm field with a few quiet particle bursts."},{form:"fracture",state:"failure",label:"Fracture",description:"The orb breaks into displaced shards under tension."}];function f(){const[s,o]=r.useState(0),[n,m]=r.useState(!0),i=l[s];return r.useEffect(()=>{if(!n||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const t=window.setTimeout(()=>{o(a=>(a+1)%l.length)},4200);return()=>window.clearTimeout(t)},[s,n]),e.jsxs("main",{className:"min-h-screen bg-void px-4 py-8 text-snow md:px-8",children:[e.jsx("h1",{className:"font-display text-4xl tracking-[-0.035em]",children:"Ghost material"}),e.jsx("p",{className:"mt-2 max-w-2xl font-body text-sm leading-6 text-silver/65",children:"One field of local atoms that can become a signal, landscape, person, system, or state."}),e.jsx("section",{"aria-label":"Transforming Ghost material study",className:"mt-8 overflow-hidden rounded-[28px] border border-white/[0.09] bg-white/[0.025]",children:e.jsxs("div",{className:"grid min-h-[30rem] items-center md:grid-cols-[minmax(0,1.4fr)_minmax(18rem,0.6fr)]",children:[e.jsx("div",{className:"relative grid min-h-[24rem] place-items-center overflow-hidden bg-[radial-gradient(circle_at_center,rgba(255,255,255,0.045),transparent_58%)]",children:e.jsx(d,{state:i.state,form:i.form,audioLevel:i.state==="listening"||i.state==="speaking"?.72:0,className:"h-[min(52vw,28rem)] w-[min(78vw,42rem)]"})}),e.jsxs("div",{className:"border-t border-white/[0.07] p-6 md:border-l md:border-t-0 md:p-8",children:[e.jsx("h2",{className:"font-display text-3xl tracking-[-0.03em]","aria-live":"polite",children:i.label}),e.jsx("p",{className:"mt-3 min-h-12 font-body text-sm leading-6 text-silver/65",children:i.description}),e.jsx("div",{className:"mt-6 flex flex-wrap gap-2","aria-label":"Choose Ghost material form",children:l.map((t,a)=>e.jsx("button",{type:"button",onClick:()=>{o(a),m(!1)},className:`rounded-full border px-3 py-1.5 font-body text-xs transition-[border-color,background-color,color] ${a===s?"border-white/28 bg-white text-black":"border-white/[0.09] text-silver/72 hover:border-white/18 hover:text-snow"}`,"aria-pressed":a===s,children:t.label},t.form))}),e.jsx("p",{className:"mt-6 font-body text-[11px] leading-5 text-silver/42",children:"Move across the particles to bend the field. Light and color continue traveling while the geometry transforms."})]})]})}),e.jsx("h2",{className:"mt-12 font-display text-2xl tracking-[-0.025em]",children:"State language"}),e.jsx("p",{className:"mt-2 max-w-xl font-body text-sm text-silver/60",children:"The same material becomes readable product feedback without turning into a fixed mascot."}),e.jsx("div",{className:"mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4",children:c.map(t=>e.jsxs("section",{"aria-label":`${t} Ghost state`,className:"rounded-2xl border border-white/[0.08] bg-white/[0.025] p-4",children:[e.jsx(d,{state:t,audioLevel:t==="listening"||t==="speaking"?.72:0,className:"h-44 w-full"}),e.jsx("p",{className:"mt-2 text-center font-body text-sm capitalize text-silver",children:t})]},t))})]})}export{f as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.