{"version":3,"file":"Sparkles.jsx","names":["stylex","memo","useState","usePrefersReducedMotion","useRandomInterval","spin","keyframes","transform","comeInOut","noPreference","styles","create","wrapper","display","position","childWrapper","zIndex","fontWeight","sparkleSvg","animationName","animationTimingFunction","animationDuration","sparkleWrapper","animationFillMode","DEFAULT_COLOR","random","min","max","Math","generateSpark","color","id","String","createdAt","Date","now","size","style","top","left","Sparkles","props","$","_c","t0","sparkles","setSparkles","prefersReducedMotion","t1","sparkle","nextSparkles","filter","sp","push","t2","Symbol","for","t3","map","_temp","t4","t5","children","t6","Sparkle","path","sparkle_0"],"sources":["../src/Sparkles.tsx"],"sourcesContent":["import * as stylex from \"@stylexjs/stylex\";\nimport { type PropsWithChildren, memo, useState } from \"react\";\n\nimport usePrefersReducedMotion from \"./usePrefersReducedMotion\";\nimport useRandomInterval from \"./useRandomInterval\";\n\n// Taken and adapted from:\n// https://www.joshwcomeau.com/react/animated-sparkles-in-react/\n\nconst spin = stylex.keyframes({\n\t\"0%\": { transform: \"rotate(0deg)\" },\n\t\"100%\": { transform: \"rotate(180deg)\" },\n});\nconst comeInOut = stylex.keyframes({\n\t\"0%\": { transform: \"scale(0)\" },\n\t\"50%\": { transform: \"scale(1)\" },\n\t\"100%\": { transform: \"scale(0)\" },\n});\n\nconst noPreference = \"@media (prefers-reduced-motion: no-preference)\";\n\nconst styles = stylex.create({\n\twrapper: {\n\t\tdisplay: \"inline-block\",\n\t\tposition: \"relative\",\n\t},\n\tchildWrapper: {\n\t\tposition: \"relative\",\n\t\tzIndex: 1,\n\t\tfontWeight: 600,\n\t},\n\tsparkleSvg: {\n\t\tdisplay: \"block\",\n\t\tanimationName: {\n\t\t\t[noPreference]: spin,\n\t\t},\n\t\tanimationTimingFunction: {\n\t\t\t[noPreference]: \"linear\",\n\t\t},\n\t\tanimationDuration: {\n\t\t\t[noPreference]: \"1000ms\",\n\t\t},\n\t},\n\tsparkleWrapper: {\n\t\tdisplay: \"block\",\n\t\tposition: \"absolute\",\n\t\tanimationName: {\n\t\t\t[noPreference]: comeInOut,\n\t\t},\n\t\tanimationDuration: {\n\t\t\t[noPreference]: \"850ms\",\n\t\t},\n\t\tanimationFillMode: {\n\t\t\t[noPreference]: \"forwards\",\n\t\t},\n\t},\n});\n\nconst DEFAULT_COLOR = \"var(--t-subscription-color)\";\n\nconst random = (min: number, max: number) =>\n\t((Math.random() * (max - min)) | 0) + min;\n\nconst generateSpark = (color: string) => ({\n\tid: String(random(10000, 99999)),\n\tcreatedAt: Date.now(),\n\tcolor,\n\tsize: random(10, 20),\n\tstyle: {\n\t\ttop: `${random(-50, 100)}%`,\n\t\tleft: `${random(-10, 100)}%`,\n\t},\n});\n\nexport interface SparklesProps extends PropsWithChildren {\n\tcolor?: string;\n\t// Support for delegated props were removed. Maybe we'll add them later.\n\t// ...delegated\n}\n\nexport default memo(function Sparkles(props: SparklesProps) {\n\tconst color = props.color ?? DEFAULT_COLOR;\n\n\tconst [sparkles, setSparkles] = useState(() => {\n\t\treturn [\n\t\t\tgenerateSpark(color),\n\t\t\tgenerateSpark(color),\n\t\t\tgenerateSpark(color),\n\t\t];\n\t});\n\n\tconst prefersReducedMotion = usePrefersReducedMotion();\n\tuseRandomInterval(\n\t\t() => {\n\t\t\tconst sparkle = generateSpark(color);\n\t\t\tconst now = Date.now();\n\t\t\tconst nextSparkles = sparkles.filter(\n\t\t\t\t(sp) => now - sp.createdAt < 1000,\n\t\t\t);\n\t\t\tnextSparkles.push(sparkle);\n\t\t\tsetSparkles(nextSparkles);\n\t\t},\n\t\tprefersReducedMotion ? null : 450,\n\t\tprefersReducedMotion ? null : 800,\n\t);\n\n\treturn (\n\t\t<span {...stylex.props(styles.wrapper)}>\n\t\t\t{sparkles.map((sparkle) => (\n\t\t\t\t<Sparkle\n\t\t\t\t\tkey={sparkle.id}\n\t\t\t\t\tcolor={sparkle.color}\n\t\t\t\t\tsize={sparkle.size}\n\t\t\t\t\tstyle={sparkle.style as SparkleProps[\"style\"]}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t<strong {...stylex.props(styles.childWrapper)}>\n\t\t\t\t{props.children}\n\t\t\t</strong>\n\t\t</span>\n\t);\n});\n\ninterface SparkleProps {\n\tsize: number;\n\tcolor: string;\n\tstyle: stylex.StaticStyles<{ top: number | string; left: number | string }>;\n}\n\nconst Sparkle = memo(function Sparkle({ size, color, style }: SparkleProps) {\n\tconst path =\n\t\t\"M26.5 25.5C19.0043 33.3697 0 34 0 34C0 34 19.1013 35.3684 26.5 43.5C33.234 50.901 34 68 34 68C34 68 36.9884 50.7065 44.5 43.5C51.6431 36.647 68 34 68 34C68 34 51.6947 32.0939 44.5 25.5C36.5605 18.2235 34 0 34 0C34 0 33.6591 17.9837 26.5 25.5Z\";\n\treturn (\n\t\t<span {...stylex.props(styles.sparkleWrapper, style)}>\n\t\t\t{/* biome-ignore lint/a11y/noSvgWithoutTitle: It's a spark. */}\n\t\t\t<svg\n\t\t\t\t{...stylex.props(styles.sparkleSvg)}\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 68 68\"\n\t\t\t\tfill=\"none\"\n\t\t\t>\n\t\t\t\t<path d={path} fill={color} />\n\t\t\t</svg>\n\t\t</span>\n\t);\n});\n"],"mappings":"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","ignoreList":[]}