1import{o as e}from"./chunk-94642797-1-81-19.js";import{t}from"./chunk-108386687-1-81-19.js";import{n as o,r as n}from"./chunk-1117061659-1-81-19.js";import"./chunk-3710-1-81-19.js";import"./chunk-3598564-1-81-19.js";import"./chunk-1354792126-1-81-19.js";import"./chunk-780346297-1-81-19.js";import{d as r,r as a}from"./chunk-1470840250-1-81-19.js";import"./chunk-1440818477-1-81-19.js";import"./chunk-110844025-1-81-19.js";import"./chunk-158249119-1-81-19.js";import"./chunk-1898235293-1-81-19.js";import"./chunk-621705861-1-81-19.js";import{i,r as s}from"./chunk-1537635183-1-81-19.js";import{t as l}from"./chunk-1787342421-1-81-19.js";var c=e(t()),d=`${a(r.worldbuilders)} worldbuilders.`,u=[{author:"Tomes of the Untold",source:"@Untold_Tomes on X",content:"Absolutely addicted to @inkarnaterpg. To any DM with a bit of time to spare or any world builder out there, I genuinely cannot recommend this service enough for accessibility and versatility."},{author:"S.",source:"on Intercom",content:"Inkarnate has been a pleasure to work with. It's intuitive, I have a wide selection of options, and it just. looks. GORGEOUS! So thank you for all the hard work and effort you all have put into this program."},{author:"HipButts",source:"@niphuts on X",content:"@inkarnaterpg love using this program. The free version is better than many paid services I've seen."},{author:"TheMaharishi66",source:"on Twitch",content:"I spent a lot of money on two other map tools, and I went back to GIMP because they were terrible. I got Inkarnate last week and LOVE IT! it is so amazingly easy and intuitive."},{author:"Alex",source:"on Intercom",content:"Inkarnate remains one of my favorite tools. Not just useful, not just easy to use, but also fun. I'll legitimately make maps to wind down after a tough day. Y'all have made--and are continuing to support--something special.\nThank you!"},{author:"BlobOfAwe",source:"on Reddit",content:"I love Inkarnate! I use it for all my world-scale maps. I've used it for battle maps in the past."},{author:"kittentarentino",source:"on Reddit",content:"I ride or die for Inkarnate. If you enjoy making maps, like if that is fun for you, Inkarnate is awesome."},{author:"DaddyChil101",source:"on Reddit",content:"It's definitely worth it and is constantly being improved upon as well. The devs actually listen to fan feedback too."},{author:"Deruz0r",source:"on Reddit",content:"I have it and I love it. You can also download and edit community maps, which is always a plus if you're short on time."},{author:"FluffyGoblins",source:"on Reddit",content:"Inkarnate is still a great tool for 'okay' maps to brew up very quickly. If I have half an hour before a DnD session, I can quickly make something."},{author:"Willow H. Wood",source:"on WillowHWood.com",content:"My players love looking at this to orientate themselves, and I sure as heck love showing it to them."},{author:"The Great Khan",source:"@TheGreatKhanJ on X",content:"You can get decently far using Inkarnate's free options for maps."}],QuoteIcon=()=>n("svg",{width:"32",height:"32",viewBox:"0 0 48 48","aria-hidden":"true",children:[o("defs",{children:n("linearGradient",{id:"testimonial-quote-gold",x1:"0",y1:"0",x2:"0",y2:"1",children:[o("stop",{offset:"0",stopColor:"var(--color-beige-200)"}),o("stop",{offset:"1",stopColor:"var(--color-beige-500)"})]})}),o("path",{d:"M6 39H15L21 27V9H3V27H12L6 39ZM30 39H39L45 27V9H27V27H36L30 39Z",fill:"url(#testimonial-quote-gold)"})]}),TestimonialCard=e=>n("div",{className:"flex h-full flex-col gap-3 rounded-2x-large border border-border-thumbnail bg-black-100/62 p-5 text-left shadow-glass backdrop-blur-2xl",children:[o(QuoteIcon,{}),o("p",{className:"font-crimson text-body-big leading-[26px] text-beige-50",children:e.content}),n("p",{className:`mt-auto text-body-big leading-[22px] font-bold ${i}`,children:[e.author,o("br",{}),e.source]})]}),MarqueeRow=({items:e,direction:t,speed:n,isSlowedRef:r,prefersReducedMotion:a})=>{const i=(0,c.useRef)(null),s=(0,c.useRef)(null),l=(0,c.useRef)(null),[d,u]=(0,c.useState)(4);(0,c.useEffect)(()=>{if(a)return;const e=i.current,t=l.current;if(!e||!t)return;const measure=()=>{t.offsetWidth>0&&u(Math.ceil(e.offsetWidth/t.offsetWidth)+1)};measure();const o=new ResizeObserver(measure);return o.observe(e),o.observe(t),()=>o.disconnect()},[a]),(0,c.useEffect)(()=>
1{if(a)return;const e=s.current,o=l.current;if(!e||!o)return;let i=0,c=1,d=performance.now(),u=requestAnimationFrame(function step(a){const s=Math.min(a-d,100)/1e3;d=a;const l=r.current?0:1;c+=(l-c)*(1-Math.exp(-s/.4)),i+=t*n*c*s;const h=o.offsetWidth;if(h>0){const t=(i%h+h)%h;e.style.transform=`translate3d(${-t}px, 0, 0)`}u=requestAnimationFrame(step)});return()=>{cancelAnimationFrame(u),e.style.transform=""}},[t,n,r,a]);const h=a?1:d;return o("div",{ref:i,className:a?"overflow-x-auto px-4":"overflow-hidden",children:o("div",{ref:s,className:"flex w-max",children:Array.from({length:h},(t,n)=>o("div",{ref:0===n?l:void 0,"aria-hidden":n>0||void 0,className:"flex gap-6 pr-6",children:e.map(e=>o("div",{className:"w-[min(78vw,320px)] shrink-0",children:o(TestimonialCard,{...e})},e.author))},n))})})};const Testimonials=()=>{const e=l(),t=(0,c.useRef)(!1),r=Math.ceil(u.length/2);return n("section",{className:"py-16 lp-md:py-20",children:[o("div",{className:"mx-auto mb-8 max-w-landing px-4 lp-md:mb-12",children:n(s,{children:[d,o("br",{}),"One very long table."]})}),n("div",{className:"relative flex flex-col gap-6",onPointerEnter:()=>t.current=!0,onPointerLeave:()=>t.current=!1,children:[o(MarqueeRow,{items:u.slice(0,r),direction:1,speed:26,isSlowedRef:t,prefersReducedMotion:e}),o(MarqueeRow,{items:u.slice(r),direction:-1,speed:21,isSlowedRef:t,prefersReducedMotion:e}),o("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-y-0 left-0 w-[6%] bg-[linear-gradient(to_right,var(--color-surface-page-primary),transparent)]"}),o("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-y-0 right-0 w-[6%] bg-[linear-gradient(to_left,var(--color-surface-page-primary),transparent)]"})]})]})};export{Testimonials}; 2//# sourceMappingURL=chunk-361808852-1-81-19.js.map
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.