1(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([ [ 351 ], { 2 /***/ 1396: 3 /***/ function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 4 Promise.resolve().then(__webpack_require__.t.bind(__webpack_require__, 4095, 23)) 5 /***/; 6 }, 7 /***/ 6354: 8 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 9 "use strict"; 10 /* harmony export */ __webpack_require__.d(__webpack_exports__, { 11 /* harmony export */ J: function() { 12 /* binding */ return FlowAnimation; 13 } 14 /* harmony export */ }); 15 /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9221); 16 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7884); 17 /* __next_internal_client_entry_do_not_use__ FlowAnimation auto */ 18 /** 19 * Renders a canvas with animated, wavy lines that move across the screen. 20 * The lines are generated using a sine wave function, and are drawn with 21 * varying opacity to create a sense of depth. 22 * 23 * The component uses the `ResizeObserver` API to detect changes in the 24 * size of its container element, and updates the canvas size accordingly. 25 * 26 * @param fps - Target frames per second (default: 30) 27 * @returns {JSX.Element} The animated canvas element. 28 */ const FlowAnimation = param => { 29 let {colorScheme: colorScheme = "multi", fps: fps = 30} = param; 30 const containerRef = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); 31 const canvasRef = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); 32 (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(); 33 const resizeObserverRef = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); 34 const flowsRef = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)([]); 35 const lastLoggedProps = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)({ 36 colorScheme: colorScheme 37 }); 38 (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(0); 39 (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(1e3 / fps); 40 // Reset flows when colorScheme changes 41 (0, react__WEBPACK_IMPORTED_MODULE_1__.useEffect)((() => { 42 if (lastLoggedProps.current.colorScheme !== colorScheme) { 43 flowsRef.current = []; 44 // This will trigger re-initialization in the next animation frame 45 lastLoggedProps.current = { 46 colorScheme: colorScheme 47 }; 48 } 49 }), [ colorScheme ]); 50 // Check for reduced motion preference 51 const prefersReducedMotion = (0, react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false); 52 (0, react__WEBPACK_IMPORTED_MODULE_1__.useEffect)((() => { 53 const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)"); 54 prefersReducedMotion.current = mediaQuery.matches; 55 const handleChange = e => { 56 prefersReducedMotion.current = e.matches; 57 // Reset flows when motion preference changes 58 flowsRef.current = []; 59 }; 60 mediaQuery.addEventListener("change", handleChange); 61 return () => mediaQuery.removeEventListener("change", handleChange); 62 }), []); 63 // Animation configuration 64 const CONFIG = { 65 FLOW_COUNT: +(12 || 0), 66 POINT_COUNT: +(50 || 0) 67 }; 68 // Use appropriate config based on environment 69 const MAX_POINTS = CONFIG.POINT_COUNT; 70 const MAX_FLOWS = prefersReducedMotion.current ? 10 : CONFIG.FLOW_COUNT; 71 const BASE_WAVE_AMPLITUDE = prefersReducedMotion.current ? 10 : 20; 72 const BASE_WAVE_FREQUENCY = prefersReducedMotion.current ? .005 : .01; 73 const BASE_MOVE_SPEED = prefersReducedMotion.current ? 2.5 : 3.5; 74 const BASE_LINE_WIDTH = 5.5; 75 // Increased base thickness 76 const POINT_SPACING = 5; 77 // Flow colors and distribution 78 /* 79 * Color choices optimized for dark mode conversation UI: 80 * 81 * 1. Text Contrast Ratios: 82 * - Blue, Green, Red: Use white text (contrast ratio > 4.5:1) 83 * - Gold: Uses black text (contrast ratio > 4.5:1) 84 * 85 * 2. Conversation UI Context: 86 * - Blue: AI messages - trustworthy, technological (white text) 87 * - Gold: Internal team - warm, professional (black text) 88 * - Green: Human/AI collaboration - balanced, productive (white text) 89 * - Red: Customer messages - attention-grabbing but not harsh (white text) 90 */ const FLOW_COLORS = { 91 primary: "hsl(160, 84%, 39%)", 92 secondary: "hsl(0, 84%, 60%)", 93 tertiary: "hsl(45, 93%, 47%)", 94 customer: "hsl(217, 91%, 60%)" 95 }; 96 Math.floor(MAX_FLOWS / 4);
97 // Updated to accommodate 4 colors 98 // Color selection strategies 99 const drawFlow = (ctx, flow) => { 100 const orderedPoints = [ ...flow.points.slice(flow.headIndex), ...flow.points.slice(0, flow.headIndex) ]; 101 if (orderedPoints.length < 2) return; 102 ctx.lineWidth = flow.lineWidth; 103 ctx.lineCap = "round"; 104 ctx.lineJoin = "round"; 105 const totalLength = orderedPoints.length - 1; 106 // Draw segments 107 for (let i = 0; i < totalLength; i++) { 108 const progress = i / totalLength; 109 let segmentColor; 110 // Direct comparison without toLowerCase 111 if (colorScheme === "single") segmentColor = flow.color; else { 112 const segmentIndex = Math.floor(i / totalLength * 4); 113 switch (segmentIndex) { 114 case 0: 115 segmentColor = FLOW_COLORS.secondary; 116 break; 117 118 case 1: 119 segmentColor = FLOW_COLORS.customer; 120 break; 121 122 case 2: 123 segmentColor = FLOW_COLORS.tertiary; 124 break; 125 126 default: 127 segmentColor = FLOW_COLORS.primary; 128 } 129 } 130 const opacity = Math.sin(progress * Math.PI) * (.3 + Math.random() * .7); 131 const baseColor = segmentColor.replace("hsl", "hsla"); 132 const colorPrefix = baseColor.substring(0, baseColor.lastIndexOf(")")); 133 ctx.beginPath(); 134 ctx.strokeStyle = "".concat(colorPrefix, ", ").concat(opacity, ")"); 135 const p1 = orderedPoints[i]; 136 const p2 = orderedPoints[i + 1]; 137 if (i === 0) ctx.moveTo(p1.x, p1.y); else { 138 const xc = (p1.x + p2.x) / 2; 139 const yc = (p1.y + p2.y) / 2; 140 ctx.quadraticCurveTo(p1.x, p1.y, xc, yc); 141 } 142 ctx.lineTo(p2.x, p2.y); 143 ctx.stroke(); 144 } 145 };
146 const createFlow = function(canvasHeight) { 147 let startX = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, currentFlowCount = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0; 148 // Random variations for the flow 149 const amplitudeVariation = .5 + Math.random(); 150 const frequencyVariation = .8 + Math.random() * .4; 151 const speedVariation = .5 + Math.random(); 152 const lineWidthVariation = .4 + Math.random() * 1.2; 153 // Select color based on mode 154 const colorKeys = Object.keys(FLOW_COLORS); 155 const colorIndex = currentFlowCount % colorKeys.length; 156 const color = FLOW_COLORS[colorKeys[colorIndex]]; 157 return { 158 points: [], 159 headIndex: 0, 160 startY: Math.random() * canvasHeight, 161 speed: BASE_MOVE_SPEED * speedVariation, 162 amplitude: BASE_WAVE_AMPLITUDE * amplitudeVariation, 163 frequency: BASE_WAVE_FREQUENCY * frequencyVariation, 164 frameCount: Math.floor(startX / (BASE_MOVE_SPEED * speedVariation)), 165 color: color, 166 lineWidth: BASE_LINE_WIDTH * lineWidthVariation, 167 lastUpdateTime: performance.now() 168 }; 169 }; 170 const updateFlow = (flow, canvasWidth, canvasHeight, currentTime) => { 171 const deltaTime = currentTime - flow.lastUpdateTime; 172 flow.lastUpdateTime = currentTime; 173 // Update position based on time 174 const timeStep = deltaTime / 16.667; 175 // Normalize to 60fps 176 flow.frameCount += timeStep; 177 if (Math.floor(flow.frameCount) % POINT_SPACING === 0) { 178 let x = flow.frameCount * flow.speed; 179 // Check if all points have moved past the canvas width 180 if (x > canvasWidth) { 181 const allPointsPastCanvas = flow.points.length > 0 && flow.points.every((point => point.x > canvasWidth)); 182 if (allPointsPastCanvas) { 183 // Reset the flow to start from the left again 184 flow.frameCount = 0; 185 flow.points = []; 186 flow.headIndex = 0; 187 flow.startY = Math.random() * canvasHeight; 188 // Randomize properties for variety 189 const amplitudeVariation = .5 + Math.random(); 190 const frequencyVariation = .8 + Math.random() * .4; 191 const speedVariation = .4 + Math.random() * 1.2; 192 const lineWidthVariation = .4 + Math.random() * 1.2; 193 flow.amplitude = BASE_WAVE_AMPLITUDE * amplitudeVariation; 194 flow.frequency = BASE_WAVE_FREQUENCY * frequencyVariation; 195 flow.speed = BASE_MOVE_SPEED * speedVariation; 196 flow.lineWidth = BASE_LINE_WIDTH * lineWidthVariation; 197 // Recalculate x after reset 198 x = flow.frameCount * flow.speed; 199 } 200 } 201 const y = flow.startY + Math.sin(x * flow.frequency) * flow.amplitude; 202 if (flow.points.length < MAX_POINTS) flow.points.push({ 203 x: x, 204 y: y 205 }); else { 206 // Reuse point at head index 207 flow.points[flow.headIndex] = { 208 x: x, 209 y: y 210 }; 211 flow.headIndex = (flow.headIndex + 1) % MAX_POINTS; 212 } 213 } 214 }; 215 const animate = timestamp => { 216 const canvas = canvasRef.current; 217 const container = containerRef.current; 218 const ctx = canvas === null || canvas === void 0 ? void 0 : canvas.getContext("2d", { 219 alpha: true 220 }); 221 if (!canvas || !ctx || !container) return; 222 ctx.clearRect(0, 0, canvas.width, canvas.height);
223 // Initialize with multiple flows spread across the canvas 224 if (flowsRef.current.length === 0) { 225 const initialFlows = Math.floor(MAX_FLOWS * .9); 226 const spreadWidth = canvas.width * .8; 227 flowsRef.current = Array.from({ 228 length: initialFlows 229 }, ((_, i) => { 230 const startX = i * spreadWidth / initialFlows; 231 return createFlow(canvas.height, startX, i); 232 })); 233 } 234 // Add remaining flows gradually 235 if (flowsRef.current.length < MAX_FLOWS) { 236 const lastFlow = flowsRef.current[flowsRef.current.length - 1]; 237 if (!lastFlow || lastFlow.frameCount * lastFlow.speed > canvas.width / 3) flowsRef.current.push(createFlow(canvas.height, 0, flowsRef.current.length)); 238 } 239 // Update and draw each flow 240 flowsRef.current.forEach((flow => { 241 updateFlow(flow, canvas.width, canvas.height, timestamp); 242 drawFlow(ctx, flow); 243 })); 244 }; 245 const updateCanvasSize = () => { 246 const canvas = canvasRef.current; 247 const container = containerRef.current; 248 if (!canvas || !container) return; 249 const rect = container.getBoundingClientRect(); 250 const scale = window.devicePixelRatio || 1; 251 canvas.width = rect.width * scale; 252 canvas.height = rect.height * scale; 253 canvas.style.width = "".concat(rect.width, "px"); 254 canvas.style.height = "".concat(rect.height, "px"); 255 const ctx = canvas.getContext("2d"); 256 if (ctx) ctx.scale(scale, scale); 257 }; 258 (0, react__WEBPACK_IMPORTED_MODULE_1__.useEffect)((() => { 259 const resizeObserver = new ResizeObserver((() => { 260 if (containerRef.current && canvasRef.current) updateCanvasSize(); 261 })); 262 resizeObserverRef.current = resizeObserver; 263 if (containerRef.current) { 264 resizeObserver.observe(containerRef.current); 265 updateCanvasSize(); 266 } 267 let animationFrame; 268 const runAnimation = timestamp => { 269 animate(timestamp); 270 animationFrame = requestAnimationFrame(runAnimation); 271 }; 272 animationFrame = requestAnimationFrame(runAnimation); 273 return () => { 274 resizeObserver.disconnect(); 275 cancelAnimationFrame(animationFrame); 276 }; 277 }), [ fps ]); 278 279 return (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 280 ref: containerRef, 281 className: "absolute inset-0 w-full h-full", 282 children: (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("canvas", { 283 ref: canvasRef, 284 className: "absolute inset-0", 285 style: { 286 background: "transparent", 287 zIndex: 0 288 } 289 }) 290 }); 291 }; 292 /***/ }, 293 /***/ 6786: 294 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 295 "use strict"; 296 __webpack_require__.r(__webpack_exports__); 297 /* harmony export */ __webpack_require__.d(__webpack_exports__, { 298 /* harmony export */ FlowIndicator: function() { 299 /* binding */ return FlowIndicator; 300 }, 301 /* harmony export */ FlowList: function() { 302 /* binding */ return FlowList; 303 } 304 /* harmony export */ }); 305 /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9221); 306 /* harmony import */ __webpack_require__(7884); 307 /* harmony import */ var _contexts_AccessibilityContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4927); 308 /* __next_internal_client_entry_do_not_use__ FlowIndicator,FlowList auto */ const sizeClasses = { 309 sm: { 310 circle: "w-4 h-4", 311 text: "text-xs" 312 }, 313 md: { 314 circle: "w-6 h-6", 315 text: "text-sm" 316 }, 317 lg: { 318 circle: "w-8 h-8", 319 text: "text-base" 320 } 321 }; 322 const flowStyles = { 323 human: { 324 bg: "bg-[hsl(45,100%,65%)]", 325 bgHighContrast: "bg-[hsl(45,100%,75%)]", 326 pattern: "bg-dots-amber border border-amber-400/30", 327 label: "Human-driven", 328 description: "Process handled by human team members" 329 }, 330 ai: { 331 bg: "bg-[hsl(210,100%,50%)]", 332 bgHighContrast: "bg-[hsl(210,100%,60%)]", 333 pattern: "bg-grid-blue border border-blue-400/30", 334 label: "AI-powered", 335 description: "Process automated by AI" 336 }, 337 combined: { 338 bg: "bg-[hsl(160,100%,45%)]", 339 bgHighContrast: "bg-[hsl(160,100%,55%)]", 340 pattern: "bg-waves-emerald border border-emerald-400/30", 341 label: "AI-Human collaboration", 342 description: "Collaborative process between AI and humans" 343 } 344 }; 345 function FlowIndicator(param) { 346 let {type: type, size: size = "md", className: className = "", showLabel: showLabel = false} = param; 347 const {settings: settings} = (0, _contexts_AccessibilityContext__WEBPACK_IMPORTED_MODULE_2__.useAccessibility)(); 348 const sizeClass = sizeClasses[size]; 349 const style = flowStyles[type]; 350 // Use either pattern or color, not both 351 const visualStyle = settings.usePatterns ? style.pattern : settings.highContrast ? style.bgHighContrast : style.bg; 352 353 return (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", { 354 className: "flex items-center gap-2", 355 children: [ 356 357 (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 358 className: "\n ".concat(sizeClass.circle, " \n ").concat(visualStyle, "\n rounded-full \n ").concat(className, "\n "), 359 role: "img", 360 "aria-label": style.description 361 }), (showLabel || settings.alwaysShowLabels) && (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 362 className: "".concat(sizeClass.text, " text-gray-300"), 363 children: style.label 364 }) ] 365 }); 366 } 367 // Example usage in a list: 368 function FlowList(param) { 369 let {items: items} = param; 370 371 return (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("ul", { 372 className: "space-y-2", 373 children: items.map(((item, index) => (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("li", { 374 className: "flex items-center gap-2", 375 children: [ 376 377 (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FlowIndicator, { 378 type: item.type, 379 size: "sm" 380 }), 381 382 (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 383 children: item.text 384 }) ] 385 }, index))) 386 }); 387 } 388 /***/ }, 389 /***/ 2931: 390 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 391 "use strict"; 392 // ESM COMPAT FLAG 393 __webpack_require__.r(__webpack_exports__); 394 // EXPORTS 395 __webpack_require__.d(__webpack_exports__, { 396 OrbisLogo: function() { 397 /* binding */ return OrbisLogo; 398 } 399 }); 400 // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]_@[email protected][email protected][email protected][email protected]/node_modules/next/dist/compiled/react/jsx-runtime.js 401 var jsx_runtime = __webpack_require__(9221); 402 // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]_@[email protected][email protected][email protected][email protected]/node_modules/next/dist/compiled/react/index.js 403 var react = __webpack_require__(7884); 404 // CONCATENATED MODULE: ./components/ui/OrbisLogo.tsx 405 /* __next_internal_client_entry_do_not_use__ OrbisLogo auto */ 406 function OrbisLogo(param) { 407 let {className: className = "", tmColor: tmColor = "text-gray-400", tmSize: tmSize = "text-sm", animated: animated = true, testMobile: testMobile = false} = param; 408 const containerRef = (0, react.useRef)(null); 409 const [dimensions, setDimensions] = (0, react.useState)({ 410 width: 0 411 }); 412 (0, react.useEffect)((() => { 413 const updateDimensions = () => { 414 if (containerRef.current) { 415 const rect = containerRef.current.getBoundingClientRect(); 416 setDimensions({ 417 width: rect.width 418 }); 419 } 420 }; 421 updateDimensions(); 422 window.addEventListener("resize", updateDimensions); 423 return () => window.removeEventListener("resize", updateDimensions); 424 }), []); 425 426 return (0, jsx_runtime.jsxs)("span", { 427 className: "relative inline-block group transition-all duration-300", 428 children: [ 429 430 (0, jsx_runtime.jsxs)("span", { 431 ref: containerRef, 432 className: "font-bold logo-font ".concat(animated ? "logo-hover" : "", " ").concat(testMobile ? "force-mobile-animation" : "", " ").concat(className, " transform group-hover:scale-[1.02] transition-all duration-300 group-hover:drop-shadow-[0_0_8px_rgba(59,130,246,0.5)]"), 433 children: [ 434 435 (0, jsx_runtime.jsx)("span", { 436 className: "text-white inline-block mr-[1px] bg-gradient-to-br from-emerald-400 via-amber-300 to-blue-400 bg-clip-text group-hover:text-transparent transition-colors duration-300", 437 children: "Orb" 438 }), 439 440 (0, jsx_runtime.jsx)("span", { 441 className: "text-white inline-block mr-[1px]", 442 children: "is" 443 }), 444 445 (0, jsx_runtime.jsx)("span", { 446 className: "text-white inline-block mr-[1px] bg-gradient-to-br from-blue-400 via-amber-300 to-emerald-400 bg-clip-text group-hover:text-transparent transition-colors duration-300", 447 children: "Flow" 448 }), 449 450 (0, jsx_runtime.jsx)("span", { 451 className: "text-white inline-block", 452 children: ".ai" 453 }), 454 455 (0, jsx_runtime.jsx)("span", { 456 className: "".concat(tmColor, " ").concat(tmSize), 457 children: "â¢" 458 }) ] 459 }), dimensions.width > 0 && (0, jsx_runtime.jsx)("span", { 460 className: "absolute left-0 -bottom-2 w-full h-[6px] rounded-[3px]", 461 style: { 462 background: "linear-gradient(to right, rgba(239, 68, 68, 0.3), rgba(59, 130, 246, 0.3) 30%, rgba(245, 158, 11, 0.3) 60%, rgba(16, 185, 129, 0.3))", 463 backdropFilter: "blur(4px)" 464 } 465 }) ] 466 }); 467 } 468 /***/ }, 469 /***/ 4927: 470 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 471 "use strict"; 472 __webpack_require__.r(__webpack_exports__); 473 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
474 /* harmony export */ AccessibilityProvider: function() { 475 /* binding */ return AccessibilityProvider; 476 }, 477 /* harmony export */ useAccessibility: function() { 478 /* binding */ return useAccessibility; 479 } 480 /* harmony export */ }); 481 /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9221); 482 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7884); 483 /* __next_internal_client_entry_do_not_use__ AccessibilityProvider,useAccessibility auto */ const defaultSettings = { 484 usePatterns: false, 485 highContrast: false, 486 alwaysShowLabels: false, 487 reduceMotion: false 488 }; 489 const AccessibilityContext = (0, react__WEBPACK_IMPORTED_MODULE_1__.createContext)(void 0); 490 function AccessibilityProvider(param) { 491 let {children: children} = param; 492 const [settings, setSettings] = (0, react__WEBPACK_IMPORTED_MODULE_1__.useState)(defaultSettings); 493 // Load settings from localStorage on mount 494 (0, react__WEBPACK_IMPORTED_MODULE_1__.useEffect)((() => { 495 const savedSettings = localStorage.getItem("accessibilitySettings"); 496 if (savedSettings) setSettings(JSON.parse(savedSettings)); 497 }), []); 498 // Save settings to localStorage whenever they change 499 const updateSettings = newSettings => { 500 setSettings((prev => { 501 const updated = { 502 ...prev, 503 ...newSettings 504 }; 505 localStorage.setItem("accessibilitySettings", JSON.stringify(updated)); 506 return updated; 507 })); 508 }; 509 510 return (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AccessibilityContext.Provider, { 511 value: { 512 settings: settings, 513 updateSettings: updateSettings 514 }, 515 children: children 516 }); 517 } 518 function useAccessibility() { 519 const context = (0, react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AccessibilityContext); 520 if (context === void 0) throw new Error("useAccessibility must be used within an AccessibilityProvider"); 521 return context; 522 } 523 /***/ }, 524 /***/ 9898: 525 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 526 "use strict"; 527 /* harmony import */ var _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8424); 528 /* harmony import */ __webpack_require__.n(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__); 529 /* harmony reexport (checked) */ if (__webpack_require__.o(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__, "usePathname")) __webpack_require__.d(__webpack_exports__, { 530 usePathname: function() { 531 return _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__.usePathname; 532 } 533 }); 534 /* harmony reexport (checked) */ if (__webpack_require__.o(_client_components_navigation__WEBPACK_IMPORTED_MODULE_0__, "useSearchParams")) __webpack_require__.d(__webpack_exports__, { 535 useSearchParams: function() { 536 return _client_components_navigation__WEBPACK_IMPORTED_MODULE_0__.useSearchParams; 537 } 538 }); 539 //# sourceMappingURL=navigation.js.map 540 /***/ }, 541 /***/ 6169: 542 /***/ function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 543 "use strict"; 544 /* harmony export */ __webpack_require__.d(__webpack_exports__, { 545 /* harmony export */ d4: function() { 546 /* reexport safe */ return _Volumes_Untitled_mahboob_dev_ai_landing_1_node_modules_pnpm_next_14_1_0_babel_core_7_26_0_react_dom_18_3_1_react_18_3_1_react_18_3_1_node_modules_next_dist_compiled_react_index_js__WEBPACK_IMPORTED_MODULE_0__.useEffect; 547 }, 548 /* harmony export */ eJ: function() { 549 /* reexport safe */ return _Volumes_Untitled_mahboob_dev_ai_landing_1_node_modules_pnpm_next_14_1_0_babel_core_7_26_0_react_dom_18_3_1_react_18_3_1_react_18_3_1_node_modules_next_dist_compiled_react_index_js__WEBPACK_IMPORTED_MODULE_0__.useState; 550 } 551 /* harmony export */ }); 552 /* harmony import */ var _Volumes_Untitled_mahboob_dev_ai_landing_1_node_modules_pnpm_next_14_1_0_babel_core_7_26_0_react_dom_18_3_1_react_18_3_1_react_18_3_1_node_modules_next_dist_compiled_react_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7884); 553 /***/ } 554} ]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.