\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\t\x3CCircle ref={div5Ref}>\n\t\t\t\t\t\t\x3CTbBrandGithubFilled />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\x3C/div>\n\t\t\t\t\x3Cdiv class=\"flex flex-row items-center justify-between\">\n\t\t\t\t\t\x3CCircle ref={div2Ref}>\n\t\t\t\t\t\t\x3CTbBrandApple />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\t\x3CCircle ref={div4Ref}>\n\t\t\t\t\t\t\x3CTbBrandAmongUs size=\"24\" />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\t\x3CCircle ref={div6Ref}>\n\t\t\t\t\t\t\x3CTbBrandAppstore />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\x3C/div>\n\t\t\t\t\x3Cdiv class=\"flex flex-row items-center justify-between\">\n\t\t\t\t\t\x3CCircle ref={div3Ref}>\n\t\t\t\t\t\t\x3CTbBrand4chan />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\t\x3CCircle ref={div7Ref}>\n\t\t\t\t\t\t\x3CTbBrandAbstract />\n\t\t\t\t\t\x3C/Circle>\n\t\t\t\t\x3C/div>\n\t\t\t\x3C/div>\n\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div1Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t\tcurvature={-75}\n\t\t\t\tendYOffset={-10}\n\t\t\t/>\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div2Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t/>\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div3Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t\tcurvature={75}\n\t\t\t\tendYOffset={10}\n\t\t\t/>\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div5Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t\tcurvature={-75}\n\t\t\t\tendYOffset={-10}\n\t\t\t\treverse\n\t\t\t/>\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div6Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t\treverse\n\t\t\t/>\n\t\t\t\x3CAnimatedBeam\n\t\t\t\tcontainerRef={containerRef}\n\t\t\t\tfromRef={div7Ref}\n\t\t\t\ttoRef={div4Ref}\n\t\t\t\tcurvature={75}\n\t\t\t\tendYOffset={10}\n\t\t\t\treverse\n\t\t\t/>\n\t\t\x3C/div>\n\t);\n}\n",html:"\x3Cpre class=\"shiki vesper\" style=\"background-color:#101010;color:#FFF\" tabindex=\"0\">\x3Ccode>\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> { cn } \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"@/lib/utils\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> { AnimatedBeam } \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"@/ui/animated-beam\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrand4chan,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandAbstract,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandAdobe,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandAmongUs,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandApple,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandAppstore,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tTbBrandGithubFilled,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">} \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"solid-icons/tb\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> type\x3C/span>\x3Cspan style=\"color:#FFF\"> { ParentComponent } \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"solid-js\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">const\x3C/span>\x3Cspan style=\"color:#FFC799\"> Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">:\x3C/span>\x3Cspan style=\"color:#FFC799\"> ParentComponent\x3C/span>\x3Cspan style=\"color:#FFF\"><{ class\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> string\x3C/span>\x3Cspan style=\"color:#FFF\">; ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\"> }> \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> (\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tprops,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">) \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\treturn\x3C/span>\x3Cspan style=\"color:#FFF\"> (\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tref={\x3C/span>\x3Cspan style=\"color:#FFF\">props.ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tclass={\x3C/span>\x3Cspan style=\"color:#FFC799\">cn\x3C/span>\x3Cspan style=\"color:#FFF\">(\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#99FFE4\">\t\t\t\t\"z-10 flex size-12 items-center justify-center rounded-full border-2 bg-white p-3 shadow-[0_0_20px_-12px_rgba(0,0,0,0.8)]\"\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tprops.class,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t)\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t{\x3C/span>\x3Cspan style=\"color:#FFF\">props.children\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">};\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">export\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> default\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> function\x3C/span>\x3Cspan style=\"color:#FFC799\"> AnimatedBeamDemo\x3C/span>\x3Cspan style=\"color:#FFF\">() {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div1Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div2Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div3Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div5Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div6Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> div7Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLDivElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\treturn\x3C/span>\x3Cspan style=\"color:#FFF\"> (\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> class=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"relative w-full mx-auto max-w-sm my-6\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> class=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"flex size-full flex-col max-w-lg max-h-[200px] items-stretch justify-between gap-10\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> class=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"flex flex-row items-center justify-between\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div1Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandAdobe\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div5Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandGithubFilled\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> class=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"flex flex-row items-center justify-between\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div2Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandApple\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandAmongUs\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> size=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"24\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div6Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandAppstore\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> class=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"flex flex-row items-center justify-between\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div3Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrand4chan\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> ref={\x3C/span>\x3Cspan style=\"color:#FFF\">div7Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">TbBrandAbstract\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">Circle\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div1Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcurvature={-\x3C/span>\x3Cspan style=\"color:#FFC799\">75\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tendYOffset={-\x3C/span>\x3Cspan style=\"color:#FFC799\">10\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div2Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div3Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcurvature={\x3C/span>\x3Cspan style=\"color:#FFC799\">75\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tendYOffset={\x3C/span>\x3Cspan style=\"color:#FFC799\">10\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div5Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcurvature={-\x3C/span>\x3Cspan style=\"color:#FFC799\">75\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tendYOffset={-\x3C/span>\x3Cspan style=\"color:#FFC799\">10\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\treverse\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div6Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\treverse\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeam\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcontainerRef={\x3C/span>\x3Cspan style=\"color:#FFF\">containerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tfromRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div7Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\ttoRef={\x3C/span>\x3Cspan style=\"color:#FFF\">div4Ref\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tcurvature={\x3C/span>\x3Cspan style=\"color:#FFC799\">75\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tendYOffset={\x3C/span>\x3Cspan style=\"color:#FFC799\">10\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\treverse\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">div\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\x3C/code>\x3C/pre>"});_$HY.r["000000010000011000000000100300081000100030000001000200000200100"]=$R[8]=$R[1]();_$HY.r["000000010000011000000000100300081000100030000001000201000200100"]=$R[9]=$R[1]();$R[6]($R[4],$R[10]={id:"animated-beam",dependencies:$R[11]=["motion"],content:"import { cn } from \"@/lib/utils\";\nimport { animate } from \"motion\";\nimport {\n\ttype Component,\n\tcreateEffect,\n\tcreateSignal,\n\tcreateUniqueId,\n\tmergeProps,\n\tonCleanup,\n\tonMount,\n} from \"solid-js\";\n\nexport interface AnimatedBeamProps {\n\tclass?: string;\n\tcontainerRef: HTMLElement;\n\tfromRef: HTMLElement;\n\ttoRef: HTMLElement;\n\tcurvature?: number;\n\treverse?: boolean;\n\tpathColor?: string;\n\tpathWidth?: number;\n\tpathOpacity?: number;\n\tgradientStartColor?: string;\n\tgradientStopColor?: string;\n\tdelay?: number;\n\tduration?: number;\n\tstartXOffset?: number;\n\tstartYOffset?: number;\n\tendXOffset?: number;\n\tendYOffset?: number;\n}\n\nexport const AnimatedBeam: Component\x3CAnimatedBeamProps> = (props) => {\n\tconst localProps = mergeProps(\n\t\t{\n\t\t\tcurvature: 0,\n\t\t\treverse: false,\n\t\t\tduration: Math.random() * 3 + 4,\n\t\t\tdelay: 0,\n\t\t\tpathColor: \"gray\",\n\t\t\tpathWidth: 2,\n\t\t\tpathOpacity: 0.2,\n\t\t\tgradientStartColor: \"#ffaa40\",\n\t\t\tgradientStopColor: \"#9c40ff\",\n\t\t\tstartXOffset: 0,\n\t\t\tstartYOffset: 0,\n\t\t\tendXOffset: 0,\n\t\t\tendYOffset: 0,\n\t\t},\n\t\tprops,\n\t);\n\n\tconst id = createUniqueId();\n\tconst [pathD, setPathD] = createSignal(\"\");\n\tconst [svgDimensions, setSvgDimensions] = createSignal({\n\t\twidth: 0,\n\t\theight: 0,\n\t});\n\n\t// Calculate the gradient coordinates based on the reverse prop\n\tconst gradientCoordinates = localProps.reverse\n\t\t? {\n\t\t\t\tx1: [\"90%\", \"-10%\"],\n\t\t\t\tx2: [\"100%\", \"0%\"],\n\t\t\t\ty1: [\"0%\", \"0%\"],\n\t\t\t\ty2: [\"0%\", \"0%\"],\n\t\t\t}\n\t\t: {\n\t\t\t\tx1: [\"10%\", \"110%\"],\n\t\t\t\tx2: [\"0%\", \"100%\"],\n\t\t\t\ty1: [\"0%\", \"0%\"],\n\t\t\t\ty2: [\"0%\", \"0%\"],\n\t\t\t};\n\n\tcreateEffect(() => {\n\t\tconst updatePath = () => {\n\t\t\tif (localProps.containerRef && localProps.fromRef && localProps.toRef) {\n\t\t\t\tconst containerRect = localProps.containerRef.getBoundingClientRect();\n\t\t\t\tconst rectA = localProps.fromRef.getBoundingClientRect();\n\t\t\t\tconst rectB = localProps.toRef.getBoundingClientRect();\n\n\t\t\t\tconst svgWidth = containerRect.width;\n\t\t\t\tconst svgHeight = containerRect.height;\n\t\t\t\tsetSvgDimensions({ width: svgWidth, height: svgHeight });\n\n\t\t\t\tconst startX =\n\t\t\t\t\trectA.left -\n\t\t\t\t\tcontainerRect.left +\n\t\t\t\t\trectA.width / 2 +\n\t\t\t\t\tlocalProps.startXOffset;\n\t\t\t\tconst startY =\n\t\t\t\t\trectA.top -\n\t\t\t\t\tcontainerRect.top +\n\t\t\t\t\trectA.height / 2 +\n\t\t\t\t\tlocalProps.startYOffset;\n\t\t\t\tconst endX =\n\t\t\t\t\trectB.left -\n\t\t\t\t\tcontainerRect.left +\n\t\t\t\t\trectB.width / 2 +\n\t\t\t\t\tlocalProps.endXOffset;\n\t\t\t\tconst endY =\n\t\t\t\t\trectB.top -\n\t\t\t\t\tcontainerRect.top +\n\t\t\t\t\trectB.height / 2 +\n\t\t\t\t\tlocalProps.endYOffset;\n\n\t\t\t\tconst controlY = startY - localProps.curvature;\n\t\t\t\tconst d = `M ${startX},${startY} Q ${\n\t\t\t\t\t(startX + endX) / 2\n\t\t\t\t},${controlY} ${endX},${endY}`;\n\t\t\t\tsetPathD(d);\n\t\t\t}\n\t\t};\n\n\t\t// Initialize ResizeObserver\n\t\tconst resizeObserver = new ResizeObserver((entries) => {\n\t\t\t// For all entries, recalculate the path\n\t\t\tfor (const entry of entries) {\n\t\t\t\tupdatePath();\n\t\t\t}\n\t\t});\n\n\t\t// Observe the container element\n\t\tif (localProps.containerRef) {\n\t\t\tresizeObserver.observe(localProps.containerRef);\n\t\t}\n\n\t\t// Call the updatePath initially to set the initial path\n\t\tupdatePath();\n\n\t\t// Clean up the observer on component unmount\n\t\tonCleanup(() => resizeObserver.disconnect());\n\t});\n\n\tlet linearGradient!: SVGLinearGradientElement;\n\tonMount(() => {\n\t\tconst controls = animate(linearGradient, gradientCoordinates, {\n\t\t\tduration: localProps.duration,\n\t\t\tdelay: localProps.delay,\n\t\t\tease: [0.16, 1, 0.3, 1], // https://easings.net/#easeOutExpo\n\t\t\trepeat: Number.POSITIVE_INFINITY,\n\t\t});\n\n\t\tonCleanup(() => controls.stop());\n\t});\n\n\treturn (\n\t\t\x3Csvg\n\t\t\tfill=\"none\"\n\t\t\taria-hidden=\"true\"\n\t\t\twidth={svgDimensions().width}\n\t\t\theight={svgDimensions().height}\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tclass={cn(\n\t\t\t\t\"pointer-events-none absolute left-0 top-0 transform-gpu stroke-2\",\n\t\t\t\tlocalProps.class,\n\t\t\t)}\n\t\t\tviewBox={`0 0 ${svgDimensions().width} ${svgDimensions().height}`}\n\t\t>\n\t\t\t\x3Cpath\n\t\t\t\td={pathD()}\n\t\t\t\tstroke={localProps.pathColor}\n\t\t\t\tstroke-width={localProps.pathWidth}\n\t\t\t\tstroke-opacity={localProps.pathOpacity}\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t/>\n\t\t\t\x3Cpath\n\t\t\t\td={pathD()}\n\t\t\t\tstroke-width={localProps.pathWidth}\n\t\t\t\tstroke={`url(#${id})`}\n\t\t\t\tstroke-opacity=\"1\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t/>\n\t\t\t\x3Cdefs>\n\t\t\t\t\x3ClinearGradient\n\t\t\t\t\tclass=\"transform-gpu\"\n\t\t\t\t\tid={id}\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t\tref={linearGradient}\n\t\t\t\t>\n\t\t\t\t\t\x3Cstop stop-color={localProps.gradientStartColor} stop-opacity=\"0\" />\n\t\t\t\t\t\x3Cstop stop-color={localProps.gradientStartColor} />\n\t\t\t\t\t\x3Cstop offset=\"32.5%\" stop-color={localProps.gradientStopColor} />\n\t\t\t\t\t\x3Cstop\n\t\t\t\t\t\toffset=\"100%\"\n\t\t\t\t\t\tstop-color={localProps.gradientStopColor}\n\t\t\t\t\t\tstop-opacity=\"0\"\n\t\t\t\t\t/>\n\t\t\t\t\x3C/linearGradient>\n\t\t\t\x3C/defs>\n\t\t\x3C/svg>\n\t);\n};\n"});$R[6]($R[8],"\x3Cpre class=\"shiki vesper\" style=\"background-color:#101010;color:#FFF\" tabindex=\"0\">\x3Ccode>\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">npm\x3C/span>\x3Cspan style=\"color:#99FFE4\"> i\x3C/span>\x3Cspan style=\"color:#99FFE4\"> motion\x3C/span>\x3C/span>\x3C/code>\x3C/pre>");$R[6]($R[9],"\x3Cpre class=\"shiki vesper\" style=\"background-color:#101010;color:#FFF\" tabindex=\"0\">\x3Ccode>\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> { cn } \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"@/lib/utils\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> { animate } \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"motion\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">import\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\ttype\x3C/span>\x3Cspan style=\"color:#FFF\"> Component,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tcreateEffect,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tcreateSignal,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tcreateUniqueId,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tmergeProps,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tonCleanup,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tonMount,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">} \x3C/span>\x3Cspan style=\"color:#A0A0A0\">from\x3C/span>\x3Cspan style=\"color:#99FFE4\"> \"solid-js\"\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">export\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> interface\x3C/span>\x3Cspan style=\"color:#FFC799\"> AnimatedBeamProps\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tclass\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> string\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tcontainerRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tfromRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\ttoRef\x3C/span>\x3Cspan style=\"color:#A0A0A0\">:\x3C/span>\x3Cspan style=\"color:#FFC799\"> HTMLElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tcurvature\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\treverse\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> boolean\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tpathColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> string\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tpathWidth\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tpathOpacity\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tgradientStartColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> string\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tgradientStopColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> string\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tdelay\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tduration\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tstartXOffset\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tstartYOffset\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tendXOffset\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\tendYOffset\x3C/span>\x3Cspan style=\"color:#A0A0A0\">?:\x3C/span>\x3Cspan style=\"color:#FFC799\"> number\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">export\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> const\x3C/span>\x3Cspan style=\"color:#FFC799\"> AnimatedBeam\x3C/span>\x3Cspan style=\"color:#A0A0A0\">:\x3C/span>\x3Cspan style=\"color:#FFC799\"> Component\x3C/span>\x3Cspan style=\"color:#FFF\"><\x3C/span>\x3Cspan style=\"color:#FFC799\">AnimatedBeamProps\x3C/span>\x3Cspan style=\"color:#FFF\">> \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> (props) \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFC799\"> mergeProps\x3C/span>\x3Cspan style=\"color:#FFF\">(\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t{\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tcurvature: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\treverse: \x3C/span>\x3Cspan style=\"color:#FFC799\">false\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tduration: Math.\x3C/span>\x3Cspan style=\"color:#FFC799\">random\x3C/span>\x3Cspan style=\"color:#FFF\">() \x3C/span>\x3Cspan style=\"color:#A0A0A0\">*\x3C/span>\x3Cspan style=\"color:#FFC799\"> 3\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3Cspan style=\"color:#FFC799\"> 4\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tdelay: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tpathColor: \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"gray\"\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tpathWidth: \x3C/span>\x3Cspan style=\"color:#FFC799\">2\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tpathOpacity: \x3C/span>\x3Cspan style=\"color:#FFC799\">0.2\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tgradientStartColor: \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"#ffaa40\"\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tgradientStopColor: \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"#9c40ff\"\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tstartXOffset: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tstartYOffset: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tendXOffset: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tendYOffset: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t},\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\tprops,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> id \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFC799\"> createUniqueId\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> [pathD, setPathD] \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFC799\"> createSignal\x3C/span>\x3Cspan style=\"color:#FFF\">(\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"\"\x3C/span>\x3Cspan style=\"color:#FFF\">);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> [svgDimensions, setSvgDimensions] \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFC799\"> createSignal\x3C/span>\x3Cspan style=\"color:#FFF\">({\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\twidth: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\theight: \x3C/span>\x3Cspan style=\"color:#FFC799\">0\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t});\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t// Calculate the gradient coordinates based on the reverse prop\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> gradientCoordinates \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.reverse\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t?\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tx1: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"90%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"-10%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tx2: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"100%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\ty1: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\ty2: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t:\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tx1: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"10%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"110%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tx2: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"100%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\ty1: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\ty2: [\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0%\"\x3C/span>\x3Cspan style=\"color:#FFF\">],\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t};\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\tcreateEffect\x3C/span>\x3Cspan style=\"color:#FFF\">(() \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\tconst\x3C/span>\x3Cspan style=\"color:#FFC799\"> updatePath\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> =\x3C/span>\x3Cspan style=\"color:#FFF\"> () \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tif\x3C/span>\x3Cspan style=\"color:#FFF\"> (localProps.containerRef \x3C/span>\x3Cspan style=\"color:#A0A0A0\">&&\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.fromRef \x3C/span>\x3Cspan style=\"color:#A0A0A0\">&&\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.toRef) {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> containerRect \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.containerRef.\x3C/span>\x3Cspan style=\"color:#FFC799\">getBoundingClientRect\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> rectA \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.fromRef.\x3C/span>\x3Cspan style=\"color:#FFC799\">getBoundingClientRect\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> rectB \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.toRef.\x3C/span>\x3Cspan style=\"color:#FFC799\">getBoundingClientRect\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> svgWidth \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> containerRect.width;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> svgHeight \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> containerRect.height;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\t\t\tsetSvgDimensions\x3C/span>\x3Cspan style=\"color:#FFF\">({ width: svgWidth, height: svgHeight });\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> startX \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectA.left \x3C/span>\x3Cspan style=\"color:#A0A0A0\">-\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tcontainerRect.left \x3C/span>\x3Cspan style=\"color:#A0A0A0\">+\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectA.width \x3C/span>\x3Cspan style=\"color:#A0A0A0\">/\x3C/span>\x3Cspan style=\"color:#FFC799\"> 2\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tlocalProps.startXOffset;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> startY \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectA.top \x3C/span>\x3Cspan style=\"color:#A0A0A0\">-\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tcontainerRect.top \x3C/span>\x3Cspan style=\"color:#A0A0A0\">+\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectA.height \x3C/span>\x3Cspan style=\"color:#A0A0A0\">/\x3C/span>\x3Cspan style=\"color:#FFC799\"> 2\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tlocalProps.startYOffset;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> endX \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectB.left \x3C/span>\x3Cspan style=\"color:#A0A0A0\">-\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tcontainerRect.left \x3C/span>\x3Cspan style=\"color:#A0A0A0\">+\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectB.width \x3C/span>\x3Cspan style=\"color:#A0A0A0\">/\x3C/span>\x3Cspan style=\"color:#FFC799\"> 2\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tlocalProps.endXOffset;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> endY \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectB.top \x3C/span>\x3Cspan style=\"color:#A0A0A0\">-\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tcontainerRect.top \x3C/span>\x3Cspan style=\"color:#A0A0A0\">+\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\trectB.height \x3C/span>\x3Cspan style=\"color:#A0A0A0\">/\x3C/span>\x3Cspan style=\"color:#FFC799\"> 2\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\t\tlocalProps.endYOffset;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> controlY \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFF\"> startY \x3C/span>\x3Cspan style=\"color:#A0A0A0\">-\x3C/span>\x3Cspan style=\"color:#FFF\"> localProps.curvature;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> d \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#99FFE4\"> `M ${\x3C/span>\x3Cspan style=\"color:#FFF\">startX\x3C/span>\x3Cspan style=\"color:#99FFE4\">},${\x3C/span>\x3Cspan style=\"color:#FFF\">startY\x3C/span>\x3Cspan style=\"color:#99FFE4\">} Q ${\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#99FFE4\">\t\t\t\t\t(\x3C/span>\x3Cspan style=\"color:#FFF\">startX\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> +\x3C/span>\x3Cspan style=\"color:#FFF\"> endX\x3C/span>\x3Cspan style=\"color:#99FFE4\">) \x3C/span>\x3Cspan style=\"color:#A0A0A0\">/\x3C/span>\x3Cspan style=\"color:#FFC799\"> 2\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#99FFE4\">\t\t\t\t},${\x3C/span>\x3Cspan style=\"color:#FFF\">controlY\x3C/span>\x3Cspan style=\"color:#99FFE4\">} ${\x3C/span>\x3Cspan style=\"color:#FFF\">endX\x3C/span>\x3Cspan style=\"color:#99FFE4\">},${\x3C/span>\x3Cspan style=\"color:#FFF\">endY\x3C/span>\x3Cspan style=\"color:#99FFE4\">}`\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\t\t\tsetPathD\x3C/span>\x3Cspan style=\"color:#FFF\">(d);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t};\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t\t// Initialize ResizeObserver\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> resizeObserver \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> new\x3C/span>\x3Cspan style=\"color:#FFC799\"> ResizeObserver\x3C/span>\x3Cspan style=\"color:#FFF\">((entries) \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t\t\t// For all entries, recalculate the path\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tfor\x3C/span>\x3Cspan style=\"color:#FFF\"> (\x3C/span>\x3Cspan style=\"color:#A0A0A0\">const\x3C/span>\x3Cspan style=\"color:#FFF\"> entry \x3C/span>\x3Cspan style=\"color:#A0A0A0\">of\x3C/span>\x3Cspan style=\"color:#FFF\"> entries) {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\t\t\tupdatePath\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t});\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t\t// Observe the container element\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\tif\x3C/span>\x3Cspan style=\"color:#FFF\"> (localProps.containerRef) {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tresizeObserver.\x3C/span>\x3Cspan style=\"color:#FFC799\">observe\x3C/span>\x3Cspan style=\"color:#FFF\">(localProps.containerRef);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t\t// Call the updatePath initially to set the initial path\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\tupdatePath\x3C/span>\x3Cspan style=\"color:#FFF\">();\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#8B8B8B94\">\t\t// Clean up the observer on component unmount\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\tonCleanup\x3C/span>\x3Cspan style=\"color:#FFF\">(() \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> resizeObserver.\x3C/span>\x3Cspan style=\"color:#FFC799\">disconnect\x3C/span>\x3Cspan style=\"color:#FFF\">());\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t});\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\tlet\x3C/span>\x3Cspan style=\"color:#FFF\"> linearGradient\x3C/span>\x3Cspan style=\"color:#A0A0A0\">!:\x3C/span>\x3Cspan style=\"color:#FFC799\"> SVGLinearGradientElement\x3C/span>\x3Cspan style=\"color:#FFF\">;\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\tonMount\x3C/span>\x3Cspan style=\"color:#FFF\">(() \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\tconst\x3C/span>\x3Cspan style=\"color:#FFF\"> controls \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=\x3C/span>\x3Cspan style=\"color:#FFC799\"> animate\x3C/span>\x3Cspan style=\"color:#FFF\">(linearGradient, gradientCoordinates, {\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tduration: localProps.duration,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tdelay: localProps.delay,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\tease: [\x3C/span>\x3Cspan style=\"color:#FFC799\">0.16\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#FFC799\">1\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#FFC799\">0.3\x3C/span>\x3Cspan style=\"color:#FFF\">, \x3C/span>\x3Cspan style=\"color:#FFC799\">1\x3C/span>\x3Cspan style=\"color:#FFF\">], \x3C/span>\x3Cspan style=\"color:#8B8B8B94\">// https://easings.net/#easeOutExpo\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\trepeat: Number.POSITIVE_INFINITY,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t});\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFC799\">\t\tonCleanup\x3C/span>\x3Cspan style=\"color:#FFF\">(() \x3C/span>\x3Cspan style=\"color:#A0A0A0\">=>\x3C/span>\x3Cspan style=\"color:#FFF\"> controls.\x3C/span>\x3Cspan style=\"color:#FFC799\">stop\x3C/span>\x3Cspan style=\"color:#FFF\">());\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t});\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\treturn\x3C/span>\x3Cspan style=\"color:#FFF\"> (\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">svg\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tfill=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"none\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\taria-hidden=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"true\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\twidth={\x3C/span>\x3Cspan style=\"color:#FFC799\">svgDimensions\x3C/span>\x3Cspan style=\"color:#FFF\">().width\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\theight={\x3C/span>\x3Cspan style=\"color:#FFC799\">svgDimensions\x3C/span>\x3Cspan style=\"color:#FFF\">().height\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\txmlns=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"http://www.w3.org/2000/svg\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tclass={\x3C/span>\x3Cspan style=\"color:#FFC799\">cn\x3C/span>\x3Cspan style=\"color:#FFF\">(\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#99FFE4\">\t\t\t\t\"pointer-events-none absolute left-0 top-0 transform-gpu stroke-2\"\x3C/span>\x3Cspan style=\"color:#FFF\">,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t\tlocalProps.class,\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t\t\t)\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\tviewBox={\x3C/span>\x3Cspan style=\"color:#99FFE4\">`0 0 ${\x3C/span>\x3Cspan style=\"color:#FFC799\">svgDimensions\x3C/span>\x3Cspan style=\"color:#99FFE4\">().\x3C/span>\x3Cspan style=\"color:#FFF\">width\x3C/span>\x3Cspan style=\"color:#99FFE4\">} ${\x3C/span>\x3Cspan style=\"color:#FFC799\">svgDimensions\x3C/span>\x3Cspan style=\"color:#99FFE4\">().\x3C/span>\x3Cspan style=\"color:#FFF\">height\x3C/span>\x3Cspan style=\"color:#99FFE4\">}`\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">path\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\td={\x3C/span>\x3Cspan style=\"color:#FFC799\">pathD\x3C/span>\x3Cspan style=\"color:#FFF\">()\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.pathColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-width={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.pathWidth\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-opacity={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.pathOpacity\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-linecap=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"round\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">path\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\td={\x3C/span>\x3Cspan style=\"color:#FFC799\">pathD\x3C/span>\x3Cspan style=\"color:#FFF\">()\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-width={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.pathWidth\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke={\x3C/span>\x3Cspan style=\"color:#99FFE4\">`url(#${\x3C/span>\x3Cspan style=\"color:#FFF\">id\x3C/span>\x3Cspan style=\"color:#99FFE4\">})`\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-opacity=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"1\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\tstroke-linecap=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"round\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">defs\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">linearGradient\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\tclass=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"transform-gpu\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\tid={\x3C/span>\x3Cspan style=\"color:#FFF\">id\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\tgradientUnits=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"userSpaceOnUse\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\tref={\x3C/span>\x3Cspan style=\"color:#FFF\">linearGradient\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">stop\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> stop-color={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.gradientStartColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> stop-opacity=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">stop\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> stop-color={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.gradientStartColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">stop\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> offset=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"32.5%\"\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> stop-color={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.gradientStopColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3Cspan style=\"color:#A0A0A0\"> />\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t<\x3C/span>\x3Cspan style=\"color:#FFC799\">stop\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\toffset=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"100%\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\tstop-color={\x3C/span>\x3Cspan style=\"color:#FFF\">localProps.gradientStopColor\x3C/span>\x3Cspan style=\"color:#A0A0A0\">}\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t\tstop-opacity=\x3C/span>\x3Cspan style=\"color:#99FFE4\">\"0\"\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t\t/>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">linearGradient\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">defs\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#A0A0A0\">\t\t</\x3C/span>\x3Cspan style=\"color:#FFC799\">svg\x3C/span>\x3Cspan style=\"color:#A0A0A0\">>\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">\t);\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3Cspan style=\"color:#FFF\">};\x3C/span>\x3C/span>\n\x3Cspan class=\"line\">\x3C/span>\x3C/code>\x3C/pre>");$R[6]($R[0],!0);$R[6]($R[3],!0);
Animated Beam component | Mystic UIAnimated Beam
An animated beam of light which travels along a path. Useful for showcasing the "integration" features of a website
import { cn } from "@/lib/utils";
import { AnimatedBeam } from "@/ui/animated-beam";
import {
TbBrand4chan,
TbBrandAbstract,
TbBrandAdobe,
TbBrandAmongUs,
TbBrandApple,
TbBrandAppstore,
TbBrandGithubFilled,
} from "solid-icons/tb";
import type { ParentComponent } from "solid-js";
const Circle: ParentComponent<{ class?: string; ref?: HTMLDivElement }> = (
props,
) => {
return (
<div
ref={props.ref}
class={cn(
"z-10 flex size-12 items-center justify-center rounded-full border-2 bg-white p-3 shadow-[0_0_20px_-12px_rgba(0,0,0,0.8)]",
props.class,
)}
>
{props.children}
</div>
);
};
export default function AnimatedBeamDemo() {
let containerRef!: HTMLDivElement;
let div1Ref!: HTMLDivElement;
let div2Ref!: HTMLDivElement;
let div3Ref!: HTMLDivElement;
let div4Ref!: HTMLDivElement;
let div5Ref!: HTMLDivElement;
let div6Ref!: HTMLDivElement;
let div7Ref!: HTMLDivElement;
return (
<div class="relative w-full mx-auto max-w-sm my-6" ref={containerRef}>
<div class="flex size-full flex-col max-w-lg max-h-[200px] items-stretch justify-between gap-10">
<div class="flex flex-row items-center justify-between">
<Circle ref={div1Ref}>
<TbBrandAdobe />
</Circle>
<Circle ref={div5Ref}>
<TbBrandGithubFilled />
</Circle>
</div>
<div class="flex flex-row items-center justify-between">
<Circle ref={div2Ref}>
<TbBrandApple />
</Circle>
<Circle ref={div4Ref}>
<TbBrandAmongUs size="24" />
</Circle>
<Circle ref={div6Ref}>
<TbBrandAppstore />
</Circle>
</div>
<div class="flex flex-row items-center justify-between">
<Circle ref={div3Ref}>
<TbBrand4chan />
</Circle>
<Circle ref={div7Ref}>
<TbBrandAbstract />
</Circle>
</div>
</div>
<AnimatedBeam
containerRef={containerRef}
fromRef={div1Ref}
toRef={div4Ref}
curvature={-75}
endYOffset={-10}
/>
<AnimatedBeam
containerRef={containerRef}
fromRef={div2Ref}
toRef={div4Ref}
/>
<AnimatedBeam
containerRef={containerRef}
fromRef={div3Ref}
toRef={div4Ref}
curvature={75}
endYOffset={10}
/>
<AnimatedBeam
containerRef={containerRef}
fromRef={div5Ref}
toRef={div4Ref}
curvature={-75}
endYOffset={-10}
reverse
/>
<AnimatedBeam
containerRef={containerRef}
fromRef={div6Ref}
toRef={div4Ref}
reverse
/>
<AnimatedBeam
containerRef={containerRef}
fromRef={div7Ref}
toRef={div4Ref}
curvature={75}
endYOffset={10}
reverse
/>
</div>
);
}
Installation
npx @mystic-ui/cli add animated-beam
2
Copy and paste the component.
import { cn } from "@/lib/utils";
import { animate } from "motion";
import {
type Component,
createEffect,
createSignal,
createUniqueId,
mergeProps,
onCleanup,
onMount,
} from "solid-js";
export interface AnimatedBeamProps {
class?: string;
containerRef: HTMLElement;
fromRef: HTMLElement;
toRef: HTMLElement;
curvature?: number;
reverse?: boolean;
pathColor?: string;
pathWidth?: number;
pathOpacity?: number;
gradientStartColor?: string;
gradientStopColor?: string;
delay?: number;
duration?: number;
startXOffset?: number;
startYOffset?: number;
endXOffset?: number;
endYOffset?: number;
}
export const AnimatedBeam: Component<AnimatedBeamProps> = (props) => {
const localProps = mergeProps(
{
curvature: 0,
reverse: false,
duration: Math.random() * 3 + 4,
delay: 0,
pathColor: "gray",
pathWidth: 2,
pathOpacity: 0.2,
gradientStartColor: "#ffaa40",
gradientStopColor: "#9c40ff",
startXOffset: 0,
startYOffset: 0,
endXOffset: 0,
endYOffset: 0,
},
props,
);
const id = createUniqueId();
const [pathD, setPathD] = createSignal("");
const [svgDimensions, setSvgDimensions] = createSignal({
width: 0,
height: 0,
});
// Calculate the gradient coordinates based on the reverse prop
const gradientCoordinates = localProps.reverse
? {
x1: ["90%", "-10%"],
x2: ["100%", "0%"],
y1: ["0%", "0%"],
y2: ["0%", "0%"],
}
: {
x1: ["10%", "110%"],
x2: ["0%", "100%"],
y1: ["0%", "0%"],
y2: ["0%", "0%"],
};
createEffect(() => {
const updatePath = () => {
if (localProps.containerRef && localProps.fromRef && localProps.toRef) {
const containerRect = localProps.containerRef.getBoundingClientRect();
const rectA = localProps.fromRef.getBoundingClientRect();
const rectB = localProps.toRef.getBoundingClientRect();
const svgWidth = containerRect.width;
const svgHeight = containerRect.height;
setSvgDimensions({ width: svgWidth, height: svgHeight });
const startX =
rectA.left -
containerRect.left +
rectA.width / 2 +
localProps.startXOffset;
const startY =
rectA.top -
containerRect.top +
rectA.height / 2 +
localProps.startYOffset;
const endX =
rectB.left -
containerRect.left +
rectB.width / 2 +
localProps.endXOffset;
const endY =
rectB.top -
containerRect.top +
rectB.height / 2 +
localProps.endYOffset;
const controlY = startY - localProps.curvature;
const d = `M ${startX},${startY} Q ${
(startX + endX) / 2
},${controlY} ${endX},${endY}`;
setPathD(d);
}
};
// Initialize ResizeObserver
const resizeObserver = new ResizeObserver((entries) => {
// For all entries, recalculate the path
for (const entry of entries) {
updatePath();
}
});
// Observe the container element
if (localProps.containerRef) {
resizeObserver.observe(localProps.containerRef);
}
// Call the updatePath initially to set the initial path
updatePath();
// Clean up the observer on component unmount
onCleanup(() => resizeObserver.disconnect());
});
let linearGradient!: SVGLinearGradientElement;
onMount(() => {
const controls = animate(linearGradient, gradientCoordinates, {
duration: localProps.duration,
delay: localProps.delay,
ease: [0.16, 1, 0.3, 1], // https://easings.net/#easeOutExpo
repeat: Number.POSITIVE_INFINITY,
});
onCleanup(() => controls.stop());
});
return (
<svg
fill="none"
aria-hidden="true"
width={svgDimensions().width}
height={svgDimensions().height}
xmlns="http://www.w3.org/2000/svg"
class={cn(
"pointer-events-none absolute left-0 top-0 transform-gpu stroke-2",
localProps.class,
)}
viewBox={`0 0 ${svgDimensions().width} ${svgDimensions().height}`}
>
<path
d={pathD()}
stroke={localProps.pathColor}
stroke-width={localProps.pathWidth}
stroke-opacity={localProps.pathOpacity}
stroke-linecap="round"
/>
<path
d={pathD()}
stroke-width={localProps.pathWidth}
stroke={`url(#${id})`}
stroke-opacity="1"
stroke-linecap="round"
/>
<defs>
<linearGradient
class="transform-gpu"
id={id}
gradientUnits="userSpaceOnUse"
ref={linearGradient}
>
<stop stop-color={localProps.gradientStartColor} stop-opacity="0" />
<stop stop-color={localProps.gradientStartColor} />
<stop offset="32.5%" stop-color={localProps.gradientStopColor} />
<stop
offset="100%"
stop-color={localProps.gradientStopColor}
stop-opacity="0"
/>
</linearGradient>
</defs>
</svg>
);
};