@fynd-design-engineering/fynd-one-v2 3.4.55 → 3.4.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var w=window.gsap,E=class{constructor(r,t,a){this.timeline=null;this.isUserInteracting=!1;this.placeholderSlot=document.getElementById(r),this.inputElement=document.querySelector(t),this.config={placeholders:["Sports balls for professional athletes","Soft, durable shoes for active kids","Easy-to-wear sarees for working women","Organic skincare for sensitive skin","Budget gaming accessories for college students","Handmade candles for home decor lovers","Eco-friendly lunch boxes for school children","Minimalist watches for young professionals","Custom pet treats for health-conscious dog owners","Affordable gym wear for beginners","Premium tea blends for wellness enthusiasts","Stylish laptop bags for remote workers","Natural hair oils for curly hair types","Fun stationery kits for creative teens","Compact travel gear for solo backpackers"],fadeDuration:.35,holdDuration:3,...a},this.validateSetup(),this.attachEventListeners()}validateSetup(){if(!this.placeholderSlot){console.error('[fynd-chat] Placeholder rotator: Div with id "placeholderText" not found');return}if(!this.inputElement){console.error("[fynd-chat] Placeholder rotator: Input element not found");return}if(!w){console.error("[fynd-chat] Placeholder rotator: GSAP library not loaded");return}if(this.config.placeholders.length===0){console.error("[fynd-chat] Placeholder rotator: No placeholders provided");return}}attachEventListeners(){this.inputElement&&(this.inputElement.addEventListener("focus",()=>{this.isUserInteracting=!0,this.pauseAnimation()}),this.inputElement.addEventListener("input",()=>{this.isUserInteracting=!0,this.pauseAnimation()}),this.inputElement.addEventListener("blur",()=>{this.inputElement&&this.inputElement.value.trim()===""&&(this.isUserInteracting=!1,this.resumeAnimation())}))}pauseAnimation(){this.timeline&&this.timeline.pause()}resumeAnimation(){this.timeline&&this.timeline.play()}makePlaceholderElement(r){let t=document.createElement("div");return t.className="chroma-text",t.setAttribute("data-animate","false"),t.textContent=r,t.style.opacity="0",t}start(){if(!this.placeholderSlot||!w){console.warn("[fynd-chat] Placeholder rotator: Cannot start - missing dependencies");return}this.startAnimationLoop()}startAnimationLoop(){if(!this.placeholderSlot)return;let r=t=>{let a=this.makePlaceholderElement(t),o=w.timeline({defaults:{ease:"power1.out"}});return o.add(()=>{this.placeholderSlot&&(this.placeholderSlot.appendChild(a),a.setAttribute("data-animate","true"))}),o.to(a,{duration:this.config.fadeDuration,autoAlpha:1}),o.to(a,{duration:this.config.holdDuration,autoAlpha:1}),o.to(a,{duration:this.config.fadeDuration,autoAlpha:0}),o.add(()=>{a.remove()}),o};this.timeline=w.timeline({repeat:-1}),this.config.placeholders.forEach(t=>{this.timeline.add(r(t))})}destroy(){this.timeline&&(this.timeline.kill(),this.timeline=null),this.inputElement&&(this.inputElement.removeEventListener("input",()=>{}),this.inputElement.removeEventListener("blur",()=>{}),this.inputElement.removeEventListener("focus",()=>{}))}};function A(v="placeholderText",r='[fynd-storefront-chat="input"]',t){let a=new E(v,r,t);return a.start(),a}document.addEventListener("DOMContentLoaded",()=>{let r=document.querySelectorAll("[fynd-storefront-chat]");if(window.innerWidth<=767){console.log("[fynd-chat] Chat disabled on mobile devices (width <= 767px)");return}window.addEventListener("resize",()=>{window.innerWidth<=767?r.forEach(e=>{e.style.display="none"}):r.forEach(e=>{e.style.display=""})});let t=document.querySelector('[fynd-storefront-chat="input"]'),a=document.querySelector('[fynd-storefront-chat="input-ghost"]'),o=document.querySelector('[fynd-storefront-chat="input-container"]'),l=document.querySelector('[fynd-storefront-chat="button"]'),s=document.querySelector('[fynd-storefront-chat="window"]'),i=document.querySelector('[fynd-storefront-chat="window-overlay"]'),g=document.querySelector('[fynd-storefront-chat="blur-gradient"]'),L=document.querySelector('[fynd-storefront-chat="wrapper"]'),u="450px",f="550px";if(!t||!a||!o||!l||!s||!i||!g){console.warn("[fynd-chat] Missing required DOM elements:",{dynamicInput:!!t,measureSpan:!!a,chatContainer:!!o,chatButton:!!l,chatWindow:!!s,chatOverlay:!!i});return}s.style.opacity="0",s.style.transform="scale(0)",s.style.transformOrigin="bottom center",i.style.opacity="0",i.style.pointerEvents="none",i.style.display="none";let p=!1,h=!1;function d(){p||h?P():T()}function P(){if(!t||!l){console.warn("[fynd-chat] activateInput: missing element(s)");return}t.setAttribute("fynd-storefront-chat-active","true"),l.setAttribute("fynd-storefront-chat-active","true")}function T(){if(!t||!l){console.warn("[fynd-chat] deActivateInput: missing element(s)");return}t.setAttribute("fynd-storefront-chat-active","false"),l.setAttribute("fynd-storefront-chat-active","false")}function M(){let e=window.gsap;if(!e){console.warn("[fynd-chat] showKailyWindow: GSAP not loaded");return}if(!i||!s){console.warn("[fynd-chat] showKailyWindow: missing overlay/window element(s)");return}i.style.pointerEvents="auto",i.style.display="block",e.to(s,{duration:.3,scale:1,opacity:1,ease:"power2.out"}),e.to(i,{duration:.3,opacity:1,ease:"power2.out"})}function C(){let e=window.gsap;if(!e||!g){console.warn("[fynd-chat] loopBlurGradient: GSAP or chatBlurGradient missing");return}e.to(g,{opacity:1,x:2,y:2,scale:.95,duration:3,ease:"sine.inOut",repeat:-1,yoyo:!0})}function D(){let e=window.gsap;if(!e){console.warn("[fynd-chat] hideKailyWindow: GSAP not loaded");return}if(!i||!s){console.warn("[fynd-chat] hideKailyWindow: missing overlay/window element(s)");return}e.to(i,{duration:.2,opacity:0,ease:"power2.out",onComplete:()=>{i&&(i.style.pointerEvents="none",i.style.display="none")}}),e.to(s,{duration:.2,scale:0,opacity:0,ease:"power2.in"})}o.addEventListener("mouseenter",()=>{p=!0,d()}),o.addEventListener("mouseleave",()=>{p=!1,d()}),t.addEventListener("focus",()=>{h=!0,d();let e=window.gsap,n=document.getElementById("placeholderText");n&&(e?e.to(n,{duration:.2,opacity:0,ease:"power2.out"}):n.style.opacity="0"),e&&t?e.to(t,{duration:.1,width:f,ease:"power2.out"}):t&&(t.style.width=f)}),t.style.width=u,t.addEventListener("blur",()=>{h=!1,d();let e=window.gsap,n=document.getElementById("placeholderText");t.value.trim()===""&&(n&&(e?e.to(n,{duration:.2,opacity:1,ease:"power2.in"}):n.style.opacity="1"),e&&t?e.to(t,{duration:.1,width:u,ease:"power2.out"}):t&&(t.style.width=u))}),t.addEventListener("input",()=>{let e=window.gsap,n=document.getElementById("placeholderText"),c=t.value.trim()==="";if(n&&(c?e?e.to(n,{duration:.2,opacity:1,ease:"power2.in"}):n.style.opacity="1":e?e.to(n,{duration:.2,opacity:0,ease:"power2.out"}):n.style.opacity="0"),e&&t){let m=c?u:f;e.to(t,{duration:.3,width:m,ease:"power2.out"})}else t&&(t.style.width=c?u:f)}),document.addEventListener("keydown",e=>{let n=navigator.platform.toLowerCase().includes("mac");e.key.toLowerCase()==="e"&&(n&&e.metaKey||!n&&e.ctrlKey)&&(e.preventDefault(),t.focus(),h=!0,d())});function b(){if(!t){console.warn("[fynd-chat] sendMessage: input element missing");return}let e=t.value.trim();if(e){try{let n=window.storefront;typeof n=="function"?n("event","sendUserMessage",{message:e}):console.warn("[fynd-chat] storefront API not available")}catch(n){console.error("[fynd-chat] Failed to send message:",n)}M(),t.value="",t.blur(),h=!1,p=!1,d()}}l.addEventListener("click",()=>{b()}),t.addEventListener("keydown",e=>{e.key==="Enter"&&(e.preventDefault(),b())}),i.addEventListener("click",D);let y=!0;function I(){let e=window.gsap;if(!e||!o){console.warn("[fynd-chat] ChatInputIN: GSAP or chatContainer missing");return}e.to(o,{duration:.3,y:0,ease:"power2.out"}),e.to(L,{duration:.3,y:0,ease:"power2.out"})}function k(){let e=window.gsap;if(!e||!o){console.warn("[fynd-chat] chatinputOUT: GSAP or chatContainer missing");return}e.to(o,{duration:.5,y:100,ease:"power2.out"}),e.to(L,{duration:.1,y:100,ease:"power2.out"})}I();let S=document.querySelector("[fynd-chat-hide-trigger]");S?new IntersectionObserver(n=>{n.forEach(c=>{let m=c.isIntersecting;m&&y?(k(),y=!1):!m&&!y&&(I(),y=!0)})},{threshold:.1}).observe(S):console.warn("[fynd-chat] fynd-chat-hide-trigger element not found"),A("placeholderText",'[fynd-storefront-chat="input"]',{fadeDuration:.35,holdDuration:3}),C(),d()});})();
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../bin/live-reload.js", "../../../src/others/storefront-chat/placeholder-rotator.ts", "../../../src/others/storefront-chat/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Only enable live reload when running on localhost\nif (\n window.location.hostname === \"localhost\" ||\n window.location.hostname === \"127.0.0.1\"\n) {\n new EventSource(`${SERVE_ORIGIN}/esbuild`).addEventListener(\"change\", () =>\n location.reload()\n );\n} else {\n // console.log(\"Live reload disabled: not running on localhost\");\n}\n", "// assumes gsap is available globally\nconst gsap = (window as any).gsap as any;\n\ninterface PlaceholderRotatorConfig {\n placeholders: string[]\n fadeDuration?: number // seconds to fade in/out\n holdDuration?: number // seconds to hold the text\n}\n\nexport class PlaceholderRotator {\n private placeholderSlot: HTMLDivElement | null\n private inputElement: HTMLInputElement | null\n private config: PlaceholderRotatorConfig\n private timeline: any = null\n private isUserInteracting: boolean = false\n\n constructor(slotId: string, inputSelector: string, config?: Partial<PlaceholderRotatorConfig>) {\n this.placeholderSlot = document.getElementById(slotId) as HTMLDivElement | null\n this.inputElement = document.querySelector(inputSelector) as HTMLInputElement | null\n\n this.config = {\n placeholders: [\n 'Sports balls for professional athletes',\n 'Soft, durable shoes for active kids',\n 'Easy-to-wear sarees for working women',\n 'Organic skincare for sensitive skin',\n 'Budget gaming accessories for college students',\n 'Handmade candles for home decor lovers',\n 'Eco-friendly lunch boxes for school children',\n 'Minimalist watches for young professionals',\n 'Custom pet treats for health-conscious dog owners',\n 'Affordable gym wear for beginners',\n 'Premium tea blends for wellness enthusiasts',\n 'Stylish laptop bags for remote workers',\n 'Natural hair oils for curly hair types',\n 'Fun stationery kits for creative teens',\n 'Compact travel gear for solo backpackers'\n ],\n fadeDuration: 0.35,\n holdDuration: 3.0,\n ...config\n }\n\n this.validateSetup()\n this.attachEventListeners()\n }\n\n private validateSetup(): void {\n if (!this.placeholderSlot) {\n console.error('[fynd-chat] Placeholder rotator: Div with id \"placeholderText\" not found')\n return\n }\n\n if (!this.inputElement) {\n console.error('[fynd-chat] Placeholder rotator: Input element not found')\n return\n }\n\n if (!gsap) {\n console.error('[fynd-chat] Placeholder rotator: GSAP library not loaded')\n return\n }\n\n if (this.config.placeholders.length === 0) {\n console.error('[fynd-chat] Placeholder rotator: No placeholders provided')\n return\n }\n }\n\n private attachEventListeners(): void {\n if (!this.inputElement) return\n\n // Pause on input focus\n this.inputElement.addEventListener('focus', () => {\n this.isUserInteracting = true\n this.pauseAnimation()\n })\n\n // Pause on typing\n this.inputElement.addEventListener('input', () => {\n this.isUserInteracting = true\n this.pauseAnimation()\n })\n\n // Resume when input loses focus and is empty\n this.inputElement.addEventListener('blur', () => {\n if (this.inputElement && this.inputElement.value.trim() === '') {\n this.isUserInteracting = false\n this.resumeAnimation()\n }\n })\n }\n\n private pauseAnimation(): void {\n if (this.timeline) {\n this.timeline.pause()\n }\n }\n\n private resumeAnimation(): void {\n if (this.timeline) {\n this.timeline.play()\n }\n }\n\n // Create a placeholder element (like makeChromaHeading)\n private makePlaceholderElement(text: string): HTMLDivElement {\n const div = document.createElement('div')\n div.className = 'chroma-text'\n div.setAttribute('data-animate', 'false')\n div.textContent = text\n div.style.opacity = '0' // start hidden\n return div\n }\n\n public start(): void {\n if (!this.placeholderSlot || !gsap) {\n console.warn('[fynd-chat] Placeholder rotator: Cannot start - missing dependencies')\n return\n }\n\n this.startAnimationLoop()\n }\n\n private startAnimationLoop(): void {\n if (!this.placeholderSlot) return\n\n // Build one slide (child timeline) per placeholder\n const slide = (text: string) => {\n const el = this.makePlaceholderElement(text)\n const t = gsap.timeline({ defaults: { ease: 'power1.out' } })\n\n // Append element to DOM at the start of this slide\n t.add(() => {\n if (this.placeholderSlot) {\n this.placeholderSlot.appendChild(el)\n el.setAttribute('data-animate', 'true')\n }\n })\n\n // Fade in\n t.to(\n el,\n {\n duration: this.config.fadeDuration,\n autoAlpha: 1 // opacity + visibility\n }\n )\n\n // Hold\n t.to(el, {\n duration: this.config.holdDuration,\n autoAlpha: 1\n })\n\n // Fade out\n t.to(el, {\n duration: this.config.fadeDuration,\n autoAlpha: 0\n })\n\n // Remove element from DOM\n t.add(() => {\n el.remove()\n })\n\n return t\n }\n\n // Master timeline with infinite loop\n this.timeline = gsap.timeline({ repeat: -1 })\n this.config.placeholders.forEach((text) => {\n this.timeline.add(slide(text))\n })\n }\n\n public destroy(): void {\n if (this.timeline) {\n this.timeline.kill()\n this.timeline = null\n }\n if (this.inputElement) {\n this.inputElement.removeEventListener('input', () => { })\n this.inputElement.removeEventListener('blur', () => { })\n this.inputElement.removeEventListener('focus', () => { })\n }\n }\n}\n\n// Usage in your DOMContentLoaded\nexport function initPlaceholderRotator(\n slotId: string = 'placeholderText',\n inputSelector: string = '[fynd-storefront-chat=\"input\"]',\n config?: Partial<PlaceholderRotatorConfig>\n): PlaceholderRotator {\n const rotator = new PlaceholderRotator(slotId, inputSelector, config)\n rotator.start()\n return rotator\n}", "import { initPlaceholderRotator } from './placeholder-rotator'\n\ndocument.addEventListener('DOMContentLoaded', () => {\n\n const MOBILE_BREAKPOINT = 767\n\n const allChatElements = document.querySelectorAll('[fynd-storefront-chat]') as NodeListOf<HTMLElement>\n\n if (window.innerWidth <= MOBILE_BREAKPOINT) {\n console.log('[fynd-chat] Chat disabled on mobile devices (width <= 767px)')\n // Hide all chat elements on mobile\n return\n }\n\n window.addEventListener('resize', () => {\n if (window.innerWidth <= MOBILE_BREAKPOINT) {\n // Hide chat on mobile\n allChatElements.forEach((el) => {\n el.style.display = 'none'\n })\n } else {\n // Show chat on desktop\n allChatElements.forEach((el) => {\n el.style.display = ''\n })\n }\n })\n\n const dynamicInput = document.querySelector('[fynd-storefront-chat=\"input\"]') as HTMLInputElement | null\n const measureSpan = document.querySelector('[fynd-storefront-chat=\"input-ghost\"]') as HTMLSpanElement | null\n const chatContainer = document.querySelector('[fynd-storefront-chat=\"input-container\"]') as HTMLElement | null\n const chatButton = document.querySelector('[fynd-storefront-chat=\"button\"]') as HTMLElement | null\n const chatWindow = document.querySelector('[fynd-storefront-chat=\"window\"]') as HTMLElement | null\n const chatOverlay = document.querySelector('[fynd-storefront-chat=\"window-overlay\"]') as HTMLElement | null\n const chatBlurGradient = document.querySelector('[fynd-storefront-chat=\"blur-gradient\"]') as HTMLElement | null\n const chatWrapper = document.querySelector('[fynd-storefront-chat=\"wrapper\"]') as HTMLElement | null\n\n const dynamicInputInitialWidth = \"450px\"\n const dynamicInputExpandedWidth = \"550px\"\n\n if (\n !dynamicInput ||\n !measureSpan ||\n !chatContainer ||\n !chatButton ||\n !chatWindow ||\n !chatOverlay ||\n !chatBlurGradient\n ) {\n console.warn('[fynd-chat] Missing required DOM elements:', {\n dynamicInput: !!dynamicInput,\n measureSpan: !!measureSpan,\n chatContainer: !!chatContainer,\n chatButton: !!chatButton,\n chatWindow: !!chatWindow,\n chatOverlay: !!chatOverlay\n })\n return\n }\n\n // initial hidden state for window and overlay\n chatWindow.style.opacity = '0'\n chatWindow.style.transform = 'scale(0)'\n chatWindow.style.transformOrigin = 'bottom center'\n\n chatOverlay.style.opacity = '0'\n chatOverlay.style.pointerEvents = 'none'\n chatOverlay.style.display = 'none'\n\n let isHovering = false\n let isFocused = false\n\n function updateState(): void {\n if (isHovering || isFocused) {\n activateInput()\n } else {\n deActivateInput()\n }\n }\n\n function activateInput(): void {\n if (!dynamicInput || !chatButton) {\n console.warn('[fynd-chat] activateInput: missing element(s)')\n return\n }\n dynamicInput.setAttribute('fynd-storefront-chat-active', 'true')\n chatButton.setAttribute('fynd-storefront-chat-active', 'true')\n }\n\n function deActivateInput(): void {\n if (!dynamicInput || !chatButton) {\n console.warn('[fynd-chat] deActivateInput: missing element(s)')\n return\n }\n dynamicInput.setAttribute('fynd-storefront-chat-active', 'false')\n chatButton.setAttribute('fynd-storefront-chat-active', 'false')\n }\n\n function showKailyWindow(): void {\n const gsapLib = (window as any).gsap\n if (!gsapLib) {\n console.warn('[fynd-chat] showKailyWindow: GSAP not loaded')\n return\n }\n\n if (!chatOverlay || !chatWindow) {\n console.warn('[fynd-chat] showKailyWindow: missing overlay/window element(s)')\n return\n }\n\n // allow overlay clicks when visible\n chatOverlay.style.pointerEvents = 'auto'\n chatOverlay.style.display = 'block'\n\n gsapLib.to(chatWindow, {\n duration: 0.3,\n scale: 1,\n opacity: 1,\n ease: 'power2.out'\n })\n\n gsapLib.to(chatOverlay, {\n duration: 0.3,\n opacity: 1,\n ease: 'power2.out'\n })\n }\n\n function loopBlurGradient(): void {\n const gsapLib = (window as any).gsap\n if (!gsapLib || !chatBlurGradient) {\n console.warn('[fynd-chat] loopBlurGradient: GSAP or chatBlurGradient missing')\n return\n }\n\n gsapLib.to(chatBlurGradient, {\n opacity: 1,\n x: 2,\n y: 2,\n scale: 0.95,\n duration: 3,\n ease: 'sine.inOut',\n repeat: -1,\n yoyo: true\n })\n }\n\n function hideKailyWindow(): void {\n const gsapLib = (window as any).gsap\n if (!gsapLib) {\n console.warn('[fynd-chat] hideKailyWindow: GSAP not loaded')\n return\n }\n\n if (!chatOverlay || !chatWindow) {\n console.warn('[fynd-chat] hideKailyWindow: missing overlay/window element(s)')\n return\n }\n\n gsapLib.to(chatOverlay, {\n duration: 0.2,\n opacity: 0,\n ease: 'power2.out',\n onComplete: () => {\n if (!chatOverlay) return\n chatOverlay.style.pointerEvents = 'none'\n chatOverlay.style.display = 'none'\n }\n })\n\n gsapLib.to(chatWindow, {\n duration: 0.2,\n scale: 0,\n opacity: 0,\n ease: 'power2.in'\n })\n }\n\n chatContainer.addEventListener('mouseenter', () => {\n isHovering = true\n updateState()\n })\n\n chatContainer.addEventListener('mouseleave', () => {\n isHovering = false\n updateState()\n })\n\n dynamicInput.addEventListener('focus', () => {\n isFocused = true\n updateState()\n\n const gsapLib = (window as any).gsap\n const placeholderDiv = document.getElementById('placeholderText')\n\n // Hide placeholder on focus\n if (placeholderDiv) {\n if (gsapLib) {\n gsapLib.to(placeholderDiv, { duration: 0.2, opacity: 0, ease: 'power2.out' })\n } else {\n placeholderDiv.style.opacity = '0'\n }\n }\n\n // Expand input width to 600px\n if (gsapLib && dynamicInput) {\n gsapLib.to(dynamicInput, { duration: 0.1, width: dynamicInputExpandedWidth, ease: 'power2.out' })\n } else if (dynamicInput) {\n dynamicInput.style.width = dynamicInputExpandedWidth\n }\n })\n dynamicInput.style.width = dynamicInputInitialWidth\n dynamicInput.addEventListener('blur', () => {\n isFocused = false\n updateState()\n\n const gsapLib = (window as any).gsap\n const placeholderDiv = document.getElementById('placeholderText')\n\n // Show placeholder on blur if input is empty\n if (dynamicInput.value.trim() === '') {\n if (placeholderDiv) {\n if (gsapLib) {\n gsapLib.to(placeholderDiv, { duration: 0.2, opacity: 1, ease: 'power2.in' })\n } else {\n placeholderDiv.style.opacity = '1'\n }\n }\n\n // Shrink input width back to 400px\n if (gsapLib && dynamicInput) {\n gsapLib.to(dynamicInput, { duration: 0.1, width: dynamicInputInitialWidth, ease: 'power2.out' })\n } else if (dynamicInput) {\n dynamicInput.style.width = dynamicInputInitialWidth\n }\n }\n })\n\n dynamicInput.addEventListener('input', () => {\n const gsapLib = (window as any).gsap\n const placeholderDiv = document.getElementById('placeholderText')\n const isEmpty = dynamicInput.value.trim() === ''\n\n // Handle placeholder opacity\n if (placeholderDiv) {\n if (isEmpty) {\n if (gsapLib) {\n gsapLib.to(placeholderDiv, { duration: 0.2, opacity: 1, ease: 'power2.in' })\n } else {\n placeholderDiv.style.opacity = '1'\n }\n } else {\n if (gsapLib) {\n gsapLib.to(placeholderDiv, { duration: 0.2, opacity: 0, ease: 'power2.out' })\n } else {\n placeholderDiv.style.opacity = '0'\n }\n }\n }\n\n // Handle input width based on content\n if (gsapLib && dynamicInput) {\n const targetWidth = isEmpty ? dynamicInputInitialWidth : dynamicInputExpandedWidth\n gsapLib.to(dynamicInput, { duration: 0.3, width: targetWidth, ease: 'power2.out' })\n } else if (dynamicInput) {\n dynamicInput.style.width = isEmpty ? dynamicInputInitialWidth : dynamicInputExpandedWidth\n }\n })\n\n // cmd+E or ctrl+E to focus\n document.addEventListener('keydown', (event: KeyboardEvent) => {\n const isMac = navigator.platform.toLowerCase().includes('mac')\n const pressedE = event.key.toLowerCase() === 'e'\n\n if (pressedE && ((isMac && event.metaKey) || (!isMac && event.ctrlKey))) {\n event.preventDefault()\n dynamicInput.focus()\n isFocused = true\n updateState()\n }\n })\n\n // send message function\n function sendMessage(): void {\n if (!dynamicInput) {\n console.warn('[fynd-chat] sendMessage: input element missing')\n return\n }\n const msg = dynamicInput.value.trim()\n if (!msg) return\n\n try {\n const storefront = (window as any).storefront\n if (typeof storefront === 'function') {\n storefront('event', 'sendUserMessage', { message: msg })\n } else {\n console.warn('[fynd-chat] storefront API not available')\n }\n } catch (err) {\n console.error('[fynd-chat] Failed to send message:', err)\n }\n\n // show kaily window after sending\n showKailyWindow()\n\n dynamicInput.value = ''\n\n // remove focus and deactivate\n dynamicInput.blur()\n isFocused = false\n isHovering = false\n updateState()\n }\n\n // button click send\n chatButton.addEventListener('click', () => {\n sendMessage()\n })\n\n // enter key send\n dynamicInput.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault()\n sendMessage()\n }\n })\n\n // overlay click hides window\n chatOverlay.addEventListener('click', hideKailyWindow)\n\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // visibility-based input animation (Intersection Observer)\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n let isChatInputIn = true\n\n function ChatInputIN(): void {\n const gsapLib = (window as any).gsap\n if (!gsapLib || !chatContainer) {\n console.warn('[fynd-chat] ChatInputIN: GSAP or chatContainer missing')\n return\n }\n\n gsapLib.to(chatContainer, {\n duration: 0.3,\n y: 0,\n ease: 'power2.out'\n })\n gsapLib.to(chatWrapper, {\n duration: 0.3,\n y: 0,\n ease: 'power2.out'\n })\n }\n\n function chatinputOUT(): void {\n const gsapLib = (window as any).gsap\n if (!gsapLib || !chatContainer) {\n console.warn('[fynd-chat] chatinputOUT: GSAP or chatContainer missing')\n return\n }\n\n gsapLib.to(chatContainer, {\n duration: 0.5,\n y: 100,\n ease: 'power2.out'\n })\n gsapLib.to(chatWrapper, {\n duration: 0.1,\n y: 100,\n\n ease: 'power2.out'\n })\n }\n\n // Set initial position to IN\n ChatInputIN()\n\n // Find the trigger element\n const chatHideTrigger = document.querySelector('[fynd-chat-hide-trigger]')\n\n if (chatHideTrigger) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const triggerIsVisible = entry.isIntersecting\n\n if (triggerIsVisible && isChatInputIn) {\n // Trigger element came into view \u2192 hide chat input\n chatinputOUT()\n isChatInputIn = false\n } else if (!triggerIsVisible && !isChatInputIn) {\n // Trigger element left view \u2192 show chat input\n ChatInputIN()\n isChatInputIn = true\n }\n })\n },\n {\n threshold: 0.1\n }\n )\n\n observer.observe(chatHideTrigger)\n } else {\n console.warn('[fynd-chat] fynd-chat-hide-trigger element not found')\n }\n\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Initialize Placeholder Rotator (Chroma Pattern)\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n initPlaceholderRotator('placeholderText', '[fynd-storefront-chat=\"input\"]', {\n fadeDuration: 0.35,\n holdDuration: 3.0\n })\n // This creates & removes div elements for each animation cycle\n // matching the exact chroma.js pattern\n\n loopBlurGradient()\n updateState()\n})"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[fynd-storefront-chat=input]{border:none;outline:none;width:100%;white-space:nowrap;overflow:hidden;pointer-events:auto}[fynd-storefront-chat=input-container]{transform:translateY(100px)}[fynd-storefront-chat=window]{position:absolute!important;z-index:5;transform-origin:bottom center;pointer-events:auto;overflow:hidden;transform:scale(0);display:block}[fynd-storefront-chat=window-overlay]{pointer-events:auto;opacity:0;display:none}[fynd-storefront-chat=wrapper]{pointer-events:none;display:flex}[fynd-storefront-chat=input-ghost]{position:absolute;visibility:hidden;white-space:nowrap;font-size:16px;font-family:sans-serif}[fynd-storefront-chat=input]::placeholder{color:#fff}[fynd-storefront-chat=input]:focus{box-shadow:0 0 0 6px #00000020}[fynd-storefront-chat=input],[fynd-storefront-chat=input]::placeholder,[fynd-storefront-chat=icon],[fynd-storefront-chat=button]{transition:all .4s ease}[fynd-storefront-chat=button][fynd-storefront-chat-active=false]{background-color:transparent;color:#fff;border:1px solid #ffffffb3}@media screen and (max-width: 479px){[fynd-storefront-chat=input]{width:80vw}}#dynamicInput::placeholder{color:red}#placeholderText{color:#a0a1a2}.chroma-text{background-image:linear-gradient(90deg,#000000 0,#000000 33.33%,#4E52F2 40%,#DD9DFF 45%,#E3A4A8 50%,#50C0FE 55%,#1E31FC 60%,transparent 66.67%,transparent);background-size:300% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-fill-color:transparent;color:transparent}.chroma-text[data-animate=true]{animation:chroma-sweep 1.5s ease-in-out forwards;filter:blur(1px)}@keyframes chroma-sweep{0%{background-position:100% 0;filter:blur(1px)}to{background-position:0 0;filter:blur(0)}}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/others/storefront-chat/styles.css"],
|
|
4
|
+
"sourcesContent": ["/* kaily chat */\n[fynd-storefront-chat=\"input\"] {\n border: none;\n outline: none;\n width: 100%;\n white-space: nowrap;\n /* stops new lines */\n overflow: hidden;\n pointer-events: auto;\n}\n\n[fynd-storefront-chat=\"input-container\"] {\n transform: translate(0px, 100px);\n}\n\n[fynd-storefront-chat=\"window\"] {\n position: absolute !important;\n z-index: 4;\n transform-origin: bottom center;\n pointer-events: auto;\n overflow: hidden;\n transform: scale(0);\n display: block;\n}\n\n[fynd-storefront-chat=\"window-overlay\"] {\n pointer-events: auto;\n opacity: 0;\n display: none;\n}\n\n[fynd-storefront-chat=\"wrapper\"] {\n pointer-events: none;\n display: flex;\n}\n\n/* hidden \"ghost\" element for measuring text width */\n[fynd-storefront-chat=\"input-ghost\"] {\n position: absolute;\n visibility: hidden;\n white-space: nowrap;\n font-size: 16px;\n font-family: sans-serif;\n}\n\n[fynd-storefront-chat=\"input\"]::placeholder {\n color: white;\n}\n\n[fynd-storefront-chat=\"input\"]:focus {\n box-shadow: 0 0 0 6px #00000020;\n}\n\n/* transition timings */\n[fynd-storefront-chat=\"input\"],\n[fynd-storefront-chat=\"input\"]::placeholder,\n[fynd-storefront-chat=\"icon\"],\n[fynd-storefront-chat=\"button\"] {\n transition: all 0.4s ease;\n}\n\n\n[fynd-storefront-chat=\"button\"][fynd-storefront-chat-active=\"false\"] {\n background-color: transparent;\n color: #ffffff;\n border: 1px solid #ffffffb3;\n}\n\n\n@media screen and (max-width: 479px) {\n [fynd-storefront-chat=\"input\"] {\n width: 80vw;\n }\n}\n\n#dynamicInput::placeholder {\n color: red;\n}\n\n#placeholderText {\n color: #A0A1A2;\n}\n\n\n.chroma-text {\n background-image: linear-gradient(90deg,\n #000000 0,\n #000000 33.33%,\n #4E52F2 40%,\n #DD9DFF 45%,\n #E3A4A8 50%,\n #50C0FE 55%,\n #1E31FC 60%,\n transparent 66.67%,\n transparent);\n background-size: 300% 100%;\n background-position: 100% 0;\n -webkit-background-clip: text;\n background-clip: text;\n -webkit-text-fill-color: transparent;\n text-fill-color: transparent;\n color: transparent;\n}\n\n/* Only animate when explicitly true */\n.chroma-text[data-animate=\"true\"] {\n animation: chroma-sweep 1.5s ease-in-out forwards;\n filter: blur(1px);\n}\n\n@keyframes chroma-sweep {\n 0% {\n background-position: 100% 0;\n filter: blur(1px);\n }\n\n to {\n background-position: 0 0;\n filter: blur(0);\n }\n}"],
|
|
5
|
+
"mappings": ";AACA,CAAC;AACG,UAAQ;AACR,WAAS;AACT,SAAO;AACP,eAAa;AAEb,YAAU;AACV,kBAAgB;AACpB;AAEA,CAAC;AACG,aAAW,UAAU,GAAG,EAAE;AAC9B;AAEA,CAAC;AACG,YAAU;AACV,WAAS;AACT,oBAAkB,OAAO;AACzB,kBAAgB;AAChB,YAAU;AACV,aAAW,MAAM;AACjB,WAAS;AACb;AAEA,CAAC;AACG,kBAAgB;AAChB,WAAS;AACT,WAAS;AACb;AAEA,CAAC;AACG,kBAAgB;AAChB,WAAS;AACb;AAGA,CAAC;AACG,YAAU;AACV,cAAY;AACZ,eAAa;AACb,aAAW;AACX,eAAa;AACjB;AAEA,CAAC,2BAA6B;AAC1B,SAAO;AACX;AAEA,CAAC,2BAA6B;AAC1B,cAAY,EAAE,EAAE,EAAE,IAAI;AAC1B;AAGA,CAAC;AACD,CAAC,2BAA6B;AAC9B,CAAC;AACD,CAAC;AACG,cAAY,IAAI,KAAK;AACzB;AAGA,CAAC,4BAA8B,CAAC;AAC5B,oBAAkB;AAClB,SAAO;AACP,UAAQ,IAAI,MAAM;AACtB;AAGA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC1B,GAAC;AACG,WAAO;AACX;AACJ;AAEA,CAAC,YAAY;AACT,SAAO;AACX;AAEA,CAAC;AACG,SAAO;AACX;AAGA,CAAC;AACG;AAAA,IAAkB;AAAA,MAAgB,KAAK;AAAA,MAC/B,QAAQ,CAAC;AAAA,MACT,QAAQ,MAAM;AAAA,MACd,QAAQ,GAAG;AAAA,MACX,QAAQ,GAAG;AAAA,MACX,QAAQ,GAAG;AAAA,MACX,QAAQ,GAAG;AAAA,MACX,QAAQ,GAAG;AAAA,MACX,YAAY,MAAM;AAAA,MAClB;AACR,mBAAiB,KAAK;AACtB,uBAAqB,KAAK;AAC1B,2BAAyB;AACzB,mBAAiB;AACjB,2BAAyB;AACzB,mBAAiB;AACjB,SAAO;AACX;AAGA,CArBC,WAqBW,CAAC;AACT,aAAW,aAAa,KAAK,YAAY;AACzC,UAAQ,KAAK;AACjB;AAEA,WAJe;AAKX;AACI,yBAAqB,KAAK;AAC1B,YAAQ,KAAK;AACjB;AAEA;AACI,yBAAqB,EAAE;AACvB,YAAQ,KAAK;AACjB;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/playbook-2026/styles.css"],
|
|
4
|
-
"sourcesContent": ["[entity-state=\"error\"] {\n opacity: 0;\n}\n\n[entity-state=\"success\"] {\n opacity: 0;\n}\n\n[entity-error-connector] {\n opacity: 0;\n}\n\n[entity-success-connector] {\n opacity: 1;\n}\n\n[connector-wrapper] {\n opacity: 0;\n}\n\n#scroll {\n height:
|
|
4
|
+
"sourcesContent": ["[entity-state=\"error\"] {\n opacity: 0;\n}\n\n[entity-state=\"success\"] {\n opacity: 0;\n}\n\n[entity-error-connector] {\n opacity: 0;\n}\n\n[entity-success-connector] {\n opacity: 1;\n}\n\n[connector-wrapper] {\n opacity: 0;\n}\n\n#scroll {\n height: 100dvh;\n width: 100vw;\n overflow: hidden;\n}\n\n.pin-spacer {\n overflow: hidden;\n}\n\n/* #scroll {\n position: relative;\n}\n\n.playbook_sticky-block {\n position: sticky;\n top: 0;\n} */\n\n[entity-error-connector] {\n opacity: 0;\n}\n\n[entity-success-connector] {\n opacity: 0;\n}\n\n[entity-name] {\n opacity: 0;\n}\n\n[playbook='foundation-base'] {\n opacity: 0;\n}\n\n[playbook=\"counter\"] {\n opacity: 0;\n pointer-events: none;\n /* padding-top: 35vh; */\n /* top: -80px; */\n}\n\n[playbook=\"question\"] {\n opacity: 0;\n pointer-events: none;\n /* padding-top: 35vh; */\n /* top: 0px; */\n}\n\n/* [inner-shadow]::after {\n background-color: #818181;\n color: transparent;\n text-shadow: 2px 2px 3px rgba(255, 255, 255, 0.5);\n -webkit-background-clip: text;\n -moz-background-clip: text;\n background-clip: text;\n} */\n\n[inner-shadow] {\n background-color: #3c3b3b;\n color: transparent;\n -webkit-background-clip: text;\n background-clip: text;\n text-shadow: 0px 2px 3px rgba(255, 255, 255, 0.5);\n max-width: 500px;\n}\n\n[playbook-title] {\n font-size: 3rem;\n font-family: var(--Primary);\n line-height: 110%;\n letter-spacing: -0.03em;\n}\n\n@media (min-width: 992px) and (max-height: 713px) {\n [playbook-title] {\n font-size: 2.5rem;\n max-width: 415px;\n }\n}\n\n@media (max-width: 1199px) {\n [playbook-main-title] {\n height: 60px;\n font-size: 70px;\n }\n}\n\n[entity-error-connector] svg path {\n stroke-dasharray: 4 8;\n animation: dashMove 1s linear infinite;\n}\n\n@keyframes dashMove {\n to {\n stroke-dashoffset: -12;\n }\n}\n\n/* Glow effect - subtle blur behind */\n[entity-success-connector] svg .comet-glow {\n animation: cometMove 2.5s linear infinite;\n filter: blur(4px);\n opacity: 0.7;\n}\n\n/* Main comet */\n[entity-success-connector] svg .comet {\n animation: cometMove 2.5s linear infinite;\n filter: blur(1px);\n}\n\n@keyframes cometMove {\n from {\n stroke-dashoffset: 0;\n }\n\n to {\n stroke-dashoffset: -420;\n }\n}\n\n/* Tablet range: 481px to 768px */\n@media (min-width: 481px) and (max-width: 768px) {\n [inner-shadow] {\n max-width: 450px;\n }\n}\n\n/* Mobile: 480px and below */\n@media (max-width: 480px) {\n [inner-shadow] {\n max-width: 244px;\n }\n\n [playbook-title] {\n font-size: 2.3rem;\n }\n}"],
|
|
5
5
|
"mappings": ";AAAA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,UAAQ;AACR,SAAO;AACP,YAAU;AACd;AAEA,CAAC;AACG,YAAU;AACd;AAWA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,WAAS;AACT,kBAAgB;AAGpB;AAEA,CAAC;AACG,WAAS;AACT,kBAAgB;AAGpB;AAWA,CAAC;AACG,oBAAkB;AAClB,SAAO;AACP,2BAAyB;AACzB,mBAAiB;AACjB,eAAa,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7C,aAAW;AACf;AAEA,CAAC;AACG,aAAW;AACX,eAAa,IAAI;AACjB,eAAa;AACb,kBAAgB;AACpB;AAEA,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE;AACvC,GAAC;AACG,eAAW;AACX,eAAW;AACf;AACJ;AAEA,OAAO,CAAC,SAAS,EAAE;AACf,GAAC;AACG,YAAQ;AACR,eAAW;AACf;AACJ;AAEA,CAAC,wBAAwB,IAAI;AACzB,oBAAkB,EAAE;AACpB,aAAW,SAAS,GAAG,OAAO;AAClC;AAEA,WAHe;AAIX;AACI,uBAAmB;AACvB;AACJ;AAGA,CAAC,0BAA0B,IAAI,CAAC;AAC5B,aAAW,UAAU,KAAK,OAAO;AACjC,UAAQ,KAAK;AACb,WAAS;AACb;AAGA,CAAC,0BAA0B,IAAI,CAAC;AAC5B,aAAW,UAAU,KAAK,OAAO;AACjC,UAAQ,KAAK;AACjB;AAEA,WAXe;AAYX;AACI,uBAAmB;AACvB;AAEA;AACI,uBAAmB;AACvB;AACJ;AAGA,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE;AACtC,GAAC;AACG,eAAW;AACf;AACJ;AAGA,OAAO,CAAC,SAAS,EAAE;AACf,GAAC;AACG,eAAW;AACf;AAEA,GAAC;AACG,eAAW;AACf;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED