{"version":3,"file":"GradientTextShine.Cj0RNNH2.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/Qm9V4RWG5F5YnXn4YTGt/1Ff0RjNxAt761so3OJY7/GradientTextShine.js"],"sourcesContent":["// Framer Component: RichText\n// Multi-segment text with solid/gradient fills, inline or line-break layout, and optional shine animation.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef}from\"react\";// ─── Shine direction → CSS ────────────────────────────────────────────────────\nconst SHINE_AXIS={ltr:{gradient:\"90deg\",size:\"200% 100%\",from:\"-200% 0\",to:\"200% 0\",axis:\"x\"},rtl:{gradient:\"270deg\",size:\"200% 100%\",from:\"200% 0\",to:\"-200% 0\",axis:\"x\"},ttb:{gradient:\"180deg\",size:\"100% 200%\",from:\"0 -200%\",to:\"0 200%\",axis:\"y\"},btt:{gradient:\"0deg\",size:\"100% 200%\",from:\"0 200%\",to:\"0 -200%\",axis:\"y\"}};// ─── Component ───────────────────────────────────────────────────────────────\nexport default function RichText(props){const{segments=[],font={},tag=\"p\",baseColor=\"#ffffff\",gradientFrom=\"#a78bfa\",gradientTo=\"#38bdf8\",gradientAngle=135,shineEnabled=false,shineColor=\"#ffffff\",shineIntensity=.6,shineSpeed=2.5,shineDirection=\"ltr\"}=props;const uid=useRef(`rt-${Math.random().toString(36).slice(2,7)}`).current;const dir=SHINE_AXIS[shineDirection];// Shared typography from Font control\nconst typo={fontFamily:font.fontFamily??\"Inter, sans-serif\",fontWeight:font.fontWeight??400,fontSize:font.fontSize??48,fontStyle:font.fontStyle??\"normal\",letterSpacing:font.letterSpacing??0,lineHeight:font.lineHeight??1.2,textAlign:font.textAlign??\"left\",textTransform:font.textTransform??\"none\",fontVariantNumeric:font.fontVariantNumeric??\"normal\",fontVariantLigatures:font.fontVariantLigatures??\"normal\",whiteSpace:\"pre-wrap\"};// Bake intensity into shine color alpha so element opacity doesn't affect the fill\nconst toRgba=(color,alpha)=>{const hex=color.replace(\"#\",\"\");const full=hex.length===3?hex.split(\"\").map(c=>c+c).join(\"\"):hex;if(/^[0-9a-fA-F]{6}$/.test(full)){const r=parseInt(full.slice(0,2),16);const g=parseInt(full.slice(2,4),16);const b=parseInt(full.slice(4,6),16);return`rgba(${r},${g},${b},${alpha})`;}return color;};const shineRgba=toRgba(shineColor,shineIntensity);// Shine sweep uses direction-aware gradient angle + background-size\nconst shineGradient=`linear-gradient(${dir.gradient}, transparent 20%, ${shineRgba} 50%, transparent 80%)`;const segmentStyle=seg=>{const base={...typo,display:seg.display===\"break\"?\"block\":\"inline\",WebkitBackgroundClip:\"text\",WebkitTextFillColor:\"transparent\",backgroundClip:\"text\",color:\"transparent\"};const fillLayer=seg.fillType===\"solid\"?`linear-gradient(${baseColor}, ${baseColor})`:`linear-gradient(${gradientAngle}deg, ${gradientFrom}, ${gradientTo})`;return shineEnabled?{...base,backgroundImage:`${shineGradient}, ${fillLayer}`,backgroundSize:`${dir.size}, 100% 100%`}:{...base,backgroundImage:fillLayer,backgroundSize:\"100% 100%\"};};const Tag=tag;return /*#__PURE__*/_jsxs(Tag,{style:{display:\"inline\",position:\"relative\",userSelect:\"none\",margin:0,padding:0},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                @keyframes ${uid}-shine {\n                    0%   { background-position: ${dir.from}, 0 0; }\n                    100% { background-position: ${dir.to},   0 0; }\n                }\n                .${uid}-seg-shine {\n                    animation: ${uid}-shine ${shineSpeed}s linear infinite;\n                }\n            `}),segments.map((seg,i)=>/*#__PURE__*/_jsx(\"span\",{className:shineEnabled?`${uid}-seg-shine`:undefined,style:segmentStyle(seg),children:seg.text},i))]});}// ─── Property Controls ────────────────────────────────────────────────────────\naddPropertyControls(RichText,{// ── Content ───────────────────────────────────────────────────────────────\nsegments:{type:ControlType.Array,title:\"Content\",defaultValue:[{text:\"Hello\",fillType:\"solid\",display:\"inline\"},{text:\" World\",fillType:\"gradient\",display:\"inline\"}],control:{type:ControlType.Object,title:\"Segment\",controls:{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Text\",displayTextArea:false},fillType:{type:ControlType.Enum,title:\"Fill\",options:[\"solid\",\"gradient\"],optionTitles:[\"Solid\",\"Gradient\"],defaultValue:\"solid\"},display:{type:ControlType.Enum,title:\"Display\",options:[\"inline\",\"break\"],optionTitles:[\"Inline\",\"Line Break\"],defaultValue:\"inline\"}}}},// ── Semantic tag ──────────────────────────────────────────────────────────\ntag:{type:ControlType.Enum,title:\"HTML Tag\",options:[\"p\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"div\",\"label\",\"strong\",\"em\",\"blockquote\",\"figcaption\",\"li\"],optionTitles:[\"p\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"div\",\"label\",\"strong\",\"em\",\"blockquote\",\"figcaption\",\"li\"],defaultValue:\"p\"},// ── Font ──────────────────────────────────────────────────────────────────\nfont:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:{fontFamily:\"Inter\",fontWeight:400,fontSize:48,lineHeight:\"1.2em\",letterSpacing:\"0em\",textAlign:\"left\",textTransform:\"none\"}},// ── Colors ────────────────────────────────────────────────────────────────\nbaseColor:{type:ControlType.Color,title:\"Base Color\",defaultValue:\"#ffffff\"},gradientFrom:{type:ControlType.Color,title:\"Gradient Start\",defaultValue:\"#a78bfa\"},gradientTo:{type:ControlType.Color,title:\"Gradient End\",defaultValue:\"#38bdf8\"},gradientAngle:{type:ControlType.Number,title:\"Gradient Angle\",defaultValue:135,min:0,max:360,unit:\"\\xb0\"},// ── Shine ─────────────────────────────────────────────────────────────────\nshineEnabled:{type:ControlType.Boolean,title:\"Shine Effect\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},shineDirection:{type:ControlType.SegmentedEnum,title:\"Direction\",options:[\"ltr\",\"rtl\",\"ttb\",\"btt\"],optionTitles:[\"→\",\"←\",\"↓\",\"↑\"],defaultValue:\"ltr\",hidden:props=>!props.shineEnabled},shineColor:{type:ControlType.Color,title:\"Shine Color\",defaultValue:\"#ffffff\",hidden:props=>!props.shineEnabled},shineIntensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:.6,min:0,max:1,step:.05,hidden:props=>!props.shineEnabled},shineSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:2.5,min:.3,max:10,step:.1,unit:\"s\",hidden:props=>!props.shineEnabled}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RichText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GradientTextShine.map"],"mappings":"iLAIA,SAAwB,EAAS,EAAM,CAAC,GAAK,CAAC,WAAS,EAAE,CAAC,OAAK,EAAE,CAAC,MAAI,IAAI,YAAU,UAAU,eAAa,UAAU,aAAW,UAAU,gBAAc,IAAI,eAAa,GAAM,aAAW,UAAU,iBAAe,GAAG,aAAW,IAAI,iBAAe,OAAO,EAAY,EAAIA,EAAO,MAAM,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,QAAc,EAAI,EAAW,GACxV,EAAK,CAAC,WAAW,EAAK,YAAY,oBAAoB,WAAW,EAAK,YAAY,IAAI,SAAS,EAAK,UAAU,GAAG,UAAU,EAAK,WAAW,SAAS,cAAc,EAAK,eAAe,EAAE,WAAW,EAAK,YAAY,IAAI,UAAU,EAAK,WAAW,OAAO,cAAc,EAAK,eAAe,OAAO,mBAAmB,EAAK,oBAAoB,SAAS,qBAAqB,EAAK,sBAAsB,SAAS,WAAW,WAAW,CACjG,IAA7T,EAAM,IAAQ,CAAC,IAAM,EAAI,EAAM,QAAQ,IAAI,GAAG,CAAO,EAAK,EAAI,SAAS,EAAE,EAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAA4L,MAArL,mBAAmB,KAAK,EAAK,CAAuH,QAA7G,SAAS,EAAK,MAAM,EAAE,EAAE,CAAC,GAAG,CAA2F,GAAlF,SAAS,EAAK,MAAM,EAAE,EAAE,CAAC,GAAG,CAA2D,GAAlD,SAAS,EAAK,MAAM,EAAE,EAAE,CAAC,GAAG,CAA2B,GAAG,EAAM,GAAW,IAA+B,EAAW,EAAe,CAChX,EAAc,mBAAmB,EAAI,SAAS,qBAAqB,EAAU,wBAA8B,EAAa,GAAK,CAAC,IAAM,EAAK,CAAC,GAAG,EAAK,QAAQ,EAAI,UAAU,QAAQ,QAAQ,SAAS,qBAAqB,OAAO,oBAAoB,cAAc,eAAe,OAAO,MAAM,cAAc,CAAO,EAAU,EAAI,WAAW,QAAQ,mBAAmB,EAAU,IAAI,EAAU,GAAG,mBAAmB,EAAc,OAAO,EAAa,IAAI,EAAW,GAAG,OAAO,EAAa,CAAC,GAAG,EAAK,gBAAgB,GAAG,EAAc,IAAI,IAAY,eAAe,GAAG,EAAI,KAAK,aAAa,CAAC,CAAC,GAAG,EAAK,gBAAgB,EAAU,eAAe,YAAY,EAAiB,OAAoB,EAAxB,EAAkC,CAAC,MAAM,CAAC,QAAQ,SAAS,SAAS,WAAW,WAAW,OAAO,OAAO,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAc,EAAK,QAAQ,CAAC,SAAS;6BACpxB,EAAI;kDACiB,EAAI,KAAK;kDACT,EAAI,GAAG;;mBAEtC,EAAI;iCACU,EAAI,SAAS,EAAW;;cAE3C,CAAC,CAAC,EAAS,KAAK,EAAI,IAAiB,EAAK,OAAO,CAAC,UAAU,EAAa,GAAG,EAAI,YAAY,IAAA,GAAU,MAAM,EAAa,EAAI,CAAC,SAAS,EAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAb5G,IAAoD,IAA0B,CACjI,EAAW,CAAC,IAAI,CAAC,SAAS,QAAQ,KAAK,YAAY,KAAK,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,KAAK,YAAY,KAAK,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,KAAK,YAAY,KAAK,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,KAAK,YAAY,KAAK,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC,CAanU,EAAoB,EAAS,CAC7B,SAAS,CAAC,KAAK,EAAY,MAAM,MAAM,UAAU,aAAa,CAAC,CAAC,KAAK,QAAQ,SAAS,QAAQ,QAAQ,SAAS,CAAC,CAAC,KAAK,SAAS,SAAS,WAAW,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,SAAS,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,OAAO,gBAAgB,GAAM,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,QAAQ,WAAW,CAAC,aAAa,CAAC,QAAQ,WAAW,CAAC,aAAa,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,UAAU,QAAQ,CAAC,SAAS,QAAQ,CAAC,aAAa,CAAC,SAAS,aAAa,CAAC,aAAa,SAAS,CAAC,CAAC,CAAC,CACjkB,IAAI,CAAC,KAAK,EAAY,KAAK,MAAM,WAAW,QAAQ,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,QAAQ,SAAS,KAAK,aAAa,aAAa,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,QAAQ,SAAS,KAAK,aAAa,aAAa,KAAK,CAAC,aAAa,IAAI,CAC9R,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,aAAa,CAAC,WAAW,QAAQ,WAAW,IAAI,SAAS,GAAG,WAAW,QAAQ,cAAc,MAAM,UAAU,OAAO,cAAc,OAAO,CAAC,CACvM,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,CAAC,aAAa,CAAC,KAAK,EAAY,MAAM,MAAM,iBAAiB,aAAa,UAAU,CAAC,WAAW,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,UAAU,CAAC,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,iBAAiB,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,IAAO,CAC1V,aAAa,CAAC,KAAK,EAAY,QAAQ,MAAM,eAAe,aAAa,GAAM,aAAa,KAAK,cAAc,MAAM,CAAC,eAAe,CAAC,KAAK,EAAY,cAAc,MAAM,YAAY,QAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,MAAM,OAAO,GAAO,CAAC,EAAM,aAAa,CAAC,WAAW,CAAC,KAAK,EAAY,MAAM,MAAM,cAAc,aAAa,UAAU,OAAO,GAAO,CAAC,EAAM,aAAa,CAAC,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,OAAO,GAAO,CAAC,EAAM,aAAa,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,OAAO,GAAO,CAAC,EAAM,aAAa,CAAC,CAAC"}