@salesmind-ai/design-system 0.2.0 → 0.3.0

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.
Files changed (123) hide show
  1. package/dist/AppearancePanel-UT57J69V.d.cts +51 -0
  2. package/dist/AppearancePanel-UT57J69V.d.ts +51 -0
  3. package/dist/AppearanceProvider-C36a8-eb.d.cts +45 -0
  4. package/dist/AppearanceProvider-C36a8-eb.d.ts +45 -0
  5. package/dist/Breadcrumb-RX-B_gDV.d.cts +44 -0
  6. package/dist/Breadcrumb-RX-B_gDV.d.ts +44 -0
  7. package/dist/ExportMenu-A2TLFiVv.d.cts +311 -0
  8. package/dist/ExportMenu-C8qck5AT.d.ts +311 -0
  9. package/dist/SectionShell-BfBw5q0Y.d.cts +18 -0
  10. package/dist/SectionShell-BfBw5q0Y.d.ts +18 -0
  11. package/dist/Select-BdZmK0Lt.d.cts +66 -0
  12. package/dist/Select-BdZmK0Lt.d.ts +66 -0
  13. package/dist/admin/index.cjs +2941 -0
  14. package/dist/admin/index.cjs.map +1 -0
  15. package/dist/admin/index.css +4145 -0
  16. package/dist/admin/index.css.map +1 -0
  17. package/dist/admin/index.d.cts +491 -0
  18. package/dist/admin/index.d.ts +491 -0
  19. package/dist/admin/index.js +2918 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/{audit-CiyPkxk1.d.cts → audit-BS2fn7M4.d.ts} +2 -51
  22. package/dist/{audit-CiyPkxk1.d.ts → audit-DwCmg32J.d.cts} +2 -51
  23. package/dist/blog/index.cjs +1074 -0
  24. package/dist/blog/index.cjs.map +1 -0
  25. package/dist/blog/index.css +1422 -0
  26. package/dist/blog/index.css.map +1 -0
  27. package/dist/blog/index.d.cts +233 -0
  28. package/dist/blog/index.d.ts +233 -0
  29. package/dist/blog/index.js +1056 -0
  30. package/dist/blog/index.js.map +1 -0
  31. package/dist/chart-types-BGVVO-zl.d.cts +208 -0
  32. package/dist/chart-types-BGVVO-zl.d.ts +208 -0
  33. package/dist/charts/index.cjs +2698 -0
  34. package/dist/charts/index.cjs.map +1 -0
  35. package/dist/charts/index.css +1167 -0
  36. package/dist/charts/index.css.map +1 -0
  37. package/dist/charts/index.d.cts +453 -0
  38. package/dist/charts/index.d.ts +453 -0
  39. package/dist/charts/index.js +2682 -0
  40. package/dist/charts/index.js.map +1 -0
  41. package/dist/core/index.cjs +526 -395
  42. package/dist/core/index.cjs.map +1 -1
  43. package/dist/core/index.css +297 -2
  44. package/dist/core/index.css.map +1 -1
  45. package/dist/core/index.d.cts +7 -982
  46. package/dist/core/index.d.ts +7 -982
  47. package/dist/core/index.js +476 -351
  48. package/dist/core/index.js.map +1 -1
  49. package/dist/i18n/index.cjs +585 -0
  50. package/dist/i18n/index.cjs.map +1 -0
  51. package/dist/i18n/index.d.cts +855 -0
  52. package/dist/i18n/index.d.ts +855 -0
  53. package/dist/i18n/index.js +547 -0
  54. package/dist/i18n/index.js.map +1 -0
  55. package/dist/index.css +16 -6
  56. package/dist/index.css.map +1 -1
  57. package/dist/index.d.cts +22 -1290
  58. package/dist/index.d.ts +22 -1290
  59. package/dist/marketing/index.cjs +2144 -3023
  60. package/dist/marketing/index.cjs.map +1 -1
  61. package/dist/marketing/index.css +3729 -4824
  62. package/dist/marketing/index.css.map +1 -1
  63. package/dist/marketing/index.d.cts +1351 -4
  64. package/dist/marketing/index.d.ts +1351 -4
  65. package/dist/marketing/index.js +2190 -3054
  66. package/dist/marketing/index.js.map +1 -1
  67. package/dist/motion/index.cjs +1230 -0
  68. package/dist/motion/index.cjs.map +1 -0
  69. package/dist/motion/index.css +699 -0
  70. package/dist/motion/index.css.map +1 -0
  71. package/dist/motion/index.d.cts +68 -0
  72. package/dist/motion/index.d.ts +68 -0
  73. package/dist/motion/index.js +1218 -0
  74. package/dist/motion/index.js.map +1 -0
  75. package/dist/nav/index.cjs +1533 -0
  76. package/dist/nav/index.cjs.map +1 -0
  77. package/dist/nav/index.css +1984 -0
  78. package/dist/nav/index.css.map +1 -0
  79. package/dist/nav/index.d.cts +279 -0
  80. package/dist/nav/index.d.ts +279 -0
  81. package/dist/nav/index.js +1501 -0
  82. package/dist/nav/index.js.map +1 -0
  83. package/dist/report/index.cjs +26 -1649
  84. package/dist/report/index.cjs.map +1 -1
  85. package/dist/report/index.css +6 -968
  86. package/dist/report/index.css.map +1 -1
  87. package/dist/report/index.d.cts +4 -2
  88. package/dist/report/index.d.ts +4 -2
  89. package/dist/report/index.js +27 -1640
  90. package/dist/report/index.js.map +1 -1
  91. package/dist/sections/index.cjs +385 -0
  92. package/dist/sections/index.cjs.map +1 -0
  93. package/dist/sections/index.css +818 -0
  94. package/dist/sections/index.css.map +1 -0
  95. package/dist/sections/index.d.cts +69 -0
  96. package/dist/sections/index.d.ts +69 -0
  97. package/dist/sections/index.js +374 -0
  98. package/dist/sections/index.js.map +1 -0
  99. package/dist/social-proof/index.cjs +1254 -0
  100. package/dist/social-proof/index.cjs.map +1 -0
  101. package/dist/social-proof/index.css +1416 -0
  102. package/dist/social-proof/index.css.map +1 -0
  103. package/dist/social-proof/index.d.cts +258 -0
  104. package/dist/social-proof/index.d.ts +258 -0
  105. package/dist/social-proof/index.js +1237 -0
  106. package/dist/social-proof/index.js.map +1 -0
  107. package/dist/theme/index.cjs +573 -0
  108. package/dist/theme/index.cjs.map +1 -0
  109. package/dist/theme/index.css +464 -0
  110. package/dist/theme/index.css.map +1 -0
  111. package/dist/theme/index.d.cts +48 -0
  112. package/dist/theme/index.d.ts +48 -0
  113. package/dist/theme/index.js +558 -0
  114. package/dist/theme/index.js.map +1 -0
  115. package/dist/types-DAlgDGzw.d.cts +52 -0
  116. package/dist/types-DAlgDGzw.d.ts +52 -0
  117. package/dist/web/index.d.cts +3 -2
  118. package/dist/web/index.d.ts +3 -2
  119. package/package.json +68 -9
  120. package/dist/ExportMenu-hEe5MhLq.d.cts +0 -1027
  121. package/dist/ExportMenu-hEe5MhLq.d.ts +0 -1027
  122. package/dist/index-B64suAAc.d.cts +0 -1498
  123. package/dist/index-B64suAAc.d.ts +0 -1498
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Sidebar/Sidebar.tsx","../../src/components/Shell/Shell.tsx","../../src/components/FloatingTabBar/FloatingTabBar.tsx","../../src/components/DataTable/DataTable.tsx","../../src/components/Login/Login.tsx","../../src/components/Button/Button.tsx","../../src/components/TextField/TextField.tsx","../../src/components/Checkbox/Checkbox.tsx","../../src/components/Signup/Signup.tsx","../../src/components/ForgotPassword/ForgotPassword.tsx","../../src/components/ChangeEmail/ChangeEmail.tsx","../../src/components/LeadProfileView/LeadProfileView.tsx","../../src/components/LeadProfileView/subcomponents/Icons.tsx","../../src/components/LeadProfileView/subcomponents/EmptyStateDisplay.tsx","../../src/components/LeadProfileView/subcomponents/LoadingStateDisplay.tsx","../../src/components/LeadProfileView/subcomponents/IdentityHeader.tsx","../../src/components/OutboundLink/OutboundLink.tsx","../../src/web/utm/useUtmDefaults.ts","../../src/web/utm/utm-context.ts","../../src/web/utm/builders.ts","../../src/web/utm/classifiers.ts","../../src/components/OutboundLink/outbound-link-utils.ts","../../src/components/LeadProfileView/subcomponents/IntelligenceSummary.tsx","../../src/components/LeadProfileView/subcomponents/MBTISpectrum.tsx","../../src/components/LeadProfileView/subcomponents/BehavioralHighlights.tsx","../../src/components/LeadProfileView/subcomponents/DeepDiveSection.tsx"],"names":["React","clsx","jsx","jsxs","useState","useEffect"],"mappings":"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","sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport './Sidebar.css';\n\nexport interface SidebarProps {\n /** Position of the sidebar */\n position?: 'left' | 'right';\n /** Width of the sidebar */\n width?: number | string;\n /** Whether the sidebar is collapsed */\n collapsed?: boolean;\n /** Custom class name */\n className?: string;\n /** Child content */\n children?: React.ReactNode;\n}\n\n/**\n * Sidebar — Level 1 Glass Panel\n *\n * A floating sidebar that maintains 24px minimum distance from viewport edges.\n * Uses Signature Glass treatment with full optical stack.\n */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n ({ position = 'left', width = 280, collapsed = false, className, children }, ref) => {\n const style: React.CSSProperties = {\n '--sidebar-width': typeof width === 'number' ? `${width}px` : width,\n } as React.CSSProperties;\n\n return (\n <aside\n ref={ref}\n className={clsx(\n 'ds-sidebar',\n `ds-sidebar--${position}`,\n collapsed && 'ds-sidebar--collapsed',\n className,\n )}\n style={style}\n >\n <div className=\"ds-sidebar__content\">{children}</div>\n </aside>\n );\n },\n);\n\nSidebar.displayName = 'Sidebar';\n\n/* Sidebar Section */\nexport interface SidebarSectionProps {\n title?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const SidebarSection = React.forwardRef<HTMLDivElement, SidebarSectionProps>(\n ({ title, className, children }, ref) => {\n return (\n <div ref={ref} className={clsx('ds-sidebar__section', className)}>\n {title && <h3 className=\"ds-sidebar__section-title\">{title}</h3>}\n {children}\n </div>\n );\n },\n);\n\nSidebarSection.displayName = 'SidebarSection';\n\n/* Sidebar Item */\nexport interface SidebarItemProps {\n /** Whether this item is active */\n active?: boolean;\n /** Icon element */\n icon?: React.ReactNode;\n /** Click handler */\n onClick?: () => void;\n /** Custom class name */\n className?: string;\n /** Child content */\n children?: React.ReactNode;\n}\n\nexport const SidebarItem = React.forwardRef<HTMLButtonElement, SidebarItemProps>(\n ({ active = false, icon, onClick, className, children }, ref) => {\n return (\n <button\n ref={ref}\n className={clsx('ds-sidebar__item', active && 'ds-sidebar__item--active', className)}\n onClick={onClick}\n type=\"button\"\n >\n {icon && <span className=\"ds-sidebar__item-icon\">{icon}</span>}\n <span className=\"ds-sidebar__item-label\">{children}</span>\n </button>\n );\n },\n);\n\nSidebarItem.displayName = 'SidebarItem';\n","import React, { useEffect, useState } from 'react';\nimport clsx from 'clsx';\nimport { Sidebar, SidebarSection, SidebarItem } from '../Sidebar/Sidebar';\nimport { FloatingTabBar, TabItem } from '../FloatingTabBar/FloatingTabBar';\nimport './Shell.css';\n\n// Icons\nconst HomeIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9,22 9,12 15,12 15,22\" />\n </svg>\n);\nconst ChartIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\" />\n <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\" />\n <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\" />\n </svg>\n);\nconst UsersIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" />\n <circle cx=\"9\" cy=\"7\" r=\"4\" />\n <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" />\n <path d=\"M16 3.13a4 4 0 0 1 0 7.75\" />\n </svg>\n);\nconst SettingsIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth={2}>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\" />\n </svg>\n);\n\nimport type { NavPlacement } from '../../theme/AppearanceProvider';\n\nexport interface ShellProps {\n /**\n * Navigation placement.\n * If undefined, reads from document.documentElement.dataset.nav\n */\n layout?: NavPlacement;\n /** Custom class name */\n className?: string;\n /** Content */\n children?: React.ReactNode;\n /** Navigation items (optional - uses defaults if not provided) */\n navItems?: NavItem[];\n /** Active nav item key */\n activeNav?: string;\n /** Nav item click handler */\n onNavChange?: (key: string) => void;\n /** Title for the \"System\" sidebar section when navItems.length > 3. @default \"System\" */\n systemSectionTitle?: string;\n}\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: React.ReactNode;\n}\n\nconst DEFAULT_NAV_ITEMS: NavItem[] = [\n { key: 'dashboard', label: 'Dashboard', icon: <HomeIcon /> },\n { key: 'analytics', label: 'Analytics', icon: <ChartIcon /> },\n { key: 'contacts', label: 'Contacts', icon: <UsersIcon /> },\n { key: 'settings', label: 'Settings', icon: <SettingsIcon /> },\n];\n\n/**\n * Read data-nav from HTML element\n */\nfunction getNavFromDocument(): NavPlacement {\n if (typeof document === 'undefined') return 'left';\n const nav = document.documentElement.getAttribute('data-nav');\n if (nav === 'left' || nav === 'right' || nav === 'bottom') {\n return nav;\n }\n return 'left';\n}\n\nexport const Shell = React.forwardRef<HTMLDivElement, ShellProps>(\n (\n {\n layout,\n className,\n children,\n navItems = DEFAULT_NAV_ITEMS,\n activeNav = 'dashboard',\n onNavChange,\n systemSectionTitle = 'System',\n },\n ref,\n ) => {\n // Support both prop-driven and attribute-driven layout\n const [computedLayout, setComputedLayout] = useState<NavPlacement>(\n layout || getNavFromDocument(),\n );\n\n useEffect(() => {\n if (layout) {\n setComputedLayout(layout);\n return;\n }\n\n // Watch for data-nav changes via MutationObserver\n if (typeof document === 'undefined') return;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-nav') {\n setComputedLayout(getNavFromDocument());\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-nav'],\n });\n\n // Initial read\n setComputedLayout(getNavFromDocument());\n\n return () => observer.disconnect();\n }, [layout]);\n\n const handleNavClick = (key: string) => {\n onNavChange?.(key);\n };\n\n return (\n <div\n ref={ref}\n className={clsx('ds-shell', `ds-shell--${computedLayout}`, className)}\n data-shell-layout={computedLayout}\n >\n {/* Sidebar Navigation */}\n {(computedLayout === 'left' || computedLayout === 'right') && (\n <Sidebar position={computedLayout}>\n <SidebarSection>\n {navItems.slice(0, 3).map((item) => (\n <SidebarItem\n key={item.key}\n icon={item.icon}\n active={activeNav === item.key}\n onClick={() => handleNavClick(item.key)}\n >\n {item.label}\n </SidebarItem>\n ))}\n </SidebarSection>\n {navItems.length > 3 && (\n <SidebarSection title={systemSectionTitle}>\n {navItems.slice(3).map((item) => (\n <SidebarItem\n key={item.key}\n icon={item.icon}\n active={activeNav === item.key}\n onClick={() => handleNavClick(item.key)}\n >\n {item.label}\n </SidebarItem>\n ))}\n </SidebarSection>\n )}\n </Sidebar>\n )}\n\n {/* Bottom Tab Bar Navigation */}\n {computedLayout === 'bottom' && (\n <FloatingTabBar position=\"bottom\">\n {navItems.map((item) => (\n <TabItem\n key={item.key}\n icon={item.icon}\n label={item.label}\n active={activeNav === item.key}\n onClick={() => handleNavClick(item.key)}\n />\n ))}\n </FloatingTabBar>\n )}\n\n {/* Main Content Area */}\n <main className=\"ds-shell__content\">{children}</main>\n </div>\n );\n },\n);\n\nShell.displayName = 'Shell';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './FloatingTabBar.css';\n\nexport interface FloatingTabBarProps {\n /** Position of the tab bar */\n position?: 'top' | 'bottom';\n /** Custom class name */\n className?: string;\n /** Child tabs */\n children?: React.ReactNode;\n}\n\n/**\n * FloatingTabBar — Level 2 Glass Ornament\n *\n * A floating navigation bar with stronger rim light and elevation.\n * Maintains 24px minimum distance from viewport edges.\n */\nexport const FloatingTabBar = React.forwardRef<HTMLDivElement, FloatingTabBarProps>(\n ({ position = 'bottom', className, children }, ref) => {\n return (\n <nav\n ref={ref}\n className={clsx('ds-floating-tab-bar', `ds-floating-tab-bar--${position}`, className)}\n role=\"tablist\"\n >\n {children}\n </nav>\n );\n },\n);\n\nFloatingTabBar.displayName = 'FloatingTabBar';\n\n/* Tab Item */\nexport interface TabItemProps {\n /** Whether this tab is active */\n active?: boolean;\n /** Icon element */\n icon?: React.ReactNode;\n /** Label text */\n label?: string;\n /** Click handler */\n onClick?: () => void;\n /** Custom class name */\n className?: string;\n}\n\nexport const TabItem = React.forwardRef<HTMLButtonElement, TabItemProps>(\n ({ active = false, icon, label, onClick, className }, ref) => {\n return (\n <button\n ref={ref}\n className={clsx('ds-tab-item', active && 'ds-tab-item--active', className)}\n onClick={onClick}\n role=\"tab\"\n aria-selected={active}\n type=\"button\"\n >\n {icon && <span className=\"ds-tab-item__icon\">{icon}</span>}\n {label && <span className=\"ds-tab-item__label\">{label}</span>}\n </button>\n );\n },\n);\n\nTabItem.displayName = 'TabItem';\n","import React from 'react';\nimport clsx from 'clsx';\nimport './DataTable.css';\n\n/* ============================================================================\n DATA TABLE ROOT\n ============================================================================ */\n\nexport interface DataTableProps extends React.TableHTMLAttributes<HTMLTableElement> {\n children?: React.ReactNode;\n}\n\nexport const DataTable = React.forwardRef<HTMLTableElement, DataTableProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div className=\"ds-data-table-container\">\n <table ref={ref} className={clsx('ds-data-table', className)} {...props}>\n {children}\n </table>\n </div>\n );\n },\n);\n\nDataTable.displayName = 'DataTable';\n\n/* ============================================================================\n DATA TABLE HEADER\n ============================================================================ */\n\nexport const DataTableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => {\n return <thead ref={ref} className={clsx('ds-data-table__header', className)} {...props} />;\n});\n\nDataTableHeader.displayName = 'DataTableHeader';\n\n/* ============================================================================\n DATA TABLE BODY\n ============================================================================ */\n\nexport const DataTableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => {\n return <tbody ref={ref} className={clsx('ds-data-table__body', className)} {...props} />;\n});\n\nDataTableBody.displayName = 'DataTableBody';\n\n/* ============================================================================\n DATA TABLE ROW\n ============================================================================ */\n\nexport const DataTableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => {\n return <tr ref={ref} className={clsx('ds-data-table__row', className)} {...props} />;\n});\n\nDataTableRow.displayName = 'DataTableRow';\n\n/* ============================================================================\n DATA TABLE HEAD CELL\n ============================================================================ */\n\nexport const DataTableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => {\n return <th ref={ref} className={clsx('ds-data-table__head', className)} {...props} />;\n});\n\nDataTableHead.displayName = 'DataTableHead';\n\n/* ============================================================================\n DATA TABLE CELL\n ============================================================================ */\n\nexport const DataTableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => {\n return <td ref={ref} className={clsx('ds-data-table__cell', className)} {...props} />;\n});\n\nDataTableCell.displayName = 'DataTableCell';\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport { Button } from '../Button/Button';\nimport { TextField } from '../TextField/TextField';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport './Login.css';\n\n/* ============================================================================\n LOGIN PAGE — Signature Glass Treatment with Animations\n ============================================================================ */\n\nexport interface LoginLabels {\n continueWithGoogleLabel?: string;\n orContinueWithEmailLabel?: string;\n emailPlaceholder?: string;\n passwordPlaceholder?: string;\n signInLabel?: string;\n doNotHaveAnAccountLabel?: string;\n emailLabel?: string;\n passwordLabel?: string;\n rememberMeLabel?: string;\n forgotPasswordLabel?: string;\n signUpLabel?: string;\n trustedByLabel?: string;\n}\n\nexport interface LoginProps {\n /** Company/Product name */\n brandName?: string;\n /** Tagline or description */\n tagline?: string;\n /** Translation strings */\n labels?: LoginLabels;\n /** Show social login options */\n showSocialLogin?: boolean;\n /** Show \"Remember me\" checkbox */\n showRememberMe?: boolean;\n /** Show \"Forgot password\" link */\n showForgotPassword?: boolean;\n /** Show sign up link */\n showSignUp?: boolean;\n /** Language selector component */\n localeSelector?: React.ReactNode;\n\n /** Custom logo element */\n logo?: React.ReactNode;\n /** Form submit handler */\n onSubmit?: (data: { email: string; password: string; rememberMe: boolean }) => void;\n /** Social login handlers */\n onGoogleLogin?: () => void;\n /** Link handlers */\n onForgotPassword?: () => void;\n onSignUp?: () => void;\n /** Loading state */\n isLoading?: boolean;\n /** Error message */\n error?: string;\n /** Custom class name */\n className?: string;\n /** Custom styles */\n style?: React.CSSProperties;\n}\n\nconst defaultLoginLabels: LoginLabels = {\n continueWithGoogleLabel: 'Continue with Google',\n orContinueWithEmailLabel: 'or continue with email',\n emailPlaceholder: 'you@company.com',\n passwordPlaceholder: 'Enter your password',\n signInLabel: 'Sign in',\n doNotHaveAnAccountLabel: \"Don't have an account?\",\n emailLabel: 'Email',\n passwordLabel: 'Password',\n rememberMeLabel: 'Remember me',\n forgotPasswordLabel: 'Forgot password?',\n signUpLabel: 'Sign up',\n trustedByLabel: 'Trusted by 500+ sales teams worldwide',\n};\n\nexport const Login: React.FC<LoginProps> = ({\n brandName,\n tagline = 'AI Sales Agents that automate your pipeline',\n labels: customLabels,\n showSocialLogin = true,\n showRememberMe = true,\n showForgotPassword = true,\n showSignUp = true,\n logo,\n onSubmit,\n onGoogleLogin,\n onForgotPassword,\n onSignUp,\n isLoading = false,\n error,\n className,\n style,\n}) => {\n const l = { ...defaultLoginLabels, ...customLabels };\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [rememberMe, setRememberMe] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.({ email, password, rememberMe });\n };\n\n return (\n <div className={clsx('ds-login', className)} style={style}>\n {/* Animated Background Accents Container */}\n <div className=\"ds-login__background\">\n <div className=\"ds-login__accent ds-login__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-login__accent ds-login__accent--2\" aria-hidden=\"true\" />\n </div>\n\n {/* Main Card */}\n <div className=\"ds-login__card\">\n {/* Header */}\n <div className=\"ds-login__header\">\n {logo ? (\n <div className=\"ds-login__logo\">{logo}</div>\n ) : (\n <div className=\"ds-login__logo ds-login__logo--default\">\n <div className=\"ds-login__logo-icon\">\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#logo-gradient)\" />\n <path\n d=\"M10 16L14 20L22 12\"\n stroke=\"white\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <defs>\n <linearGradient id=\"logo-gradient\" x1=\"0\" y1=\"0\" x2=\"32\" y2=\"32\">\n <stop stopColor=\"rgb(var(--accent-rgb))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--accent2-rgb))\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n )}\n\n <h1 className=\"ds-login__title\">{brandName}</h1>\n <p className=\"ds-login__tagline\">{tagline}</p>\n </div>\n\n {/* Error Message */}\n {error && (\n <div className=\"ds-login__error\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 4.5V8.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n <span>{error}</span>\n </div>\n )}\n\n {/* Social Login */}\n {showSocialLogin && (\n <div className=\"ds-login__social\">\n <button\n type=\"button\"\n className=\"ds-login__social-btn\"\n onClick={onGoogleLogin}\n disabled={isLoading}\n >\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\">\n <path\n fill=\"#4285F4\"\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n />\n </svg>\n <span>{l.continueWithGoogleLabel}</span>\n </button>\n\n <div className=\"ds-login__divider\">\n <span>{l.orContinueWithEmailLabel}</span>\n </div>\n </div>\n )}\n\n {/* Form */}\n <form className=\"ds-login__form\" onSubmit={handleSubmit}>\n <div className=\"ds-login__field\">\n <TextField\n label={l.emailLabel}\n type=\"email\"\n placeholder={l.emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n disabled={isLoading}\n autoComplete=\"email\"\n />\n </div>\n\n <div className=\"ds-login__field\">\n <TextField\n label={l.passwordLabel}\n type={showPassword ? 'text' : 'password'}\n placeholder={l.passwordPlaceholder}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n disabled={isLoading}\n autoComplete=\"current-password\"\n endAdornment={\n <button\n type=\"button\"\n className=\"ds-login__password-toggle\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n }\n />\n </div>\n\n <div className=\"ds-login__options\">\n {showRememberMe && (\n <Checkbox\n label={l.rememberMeLabel}\n checked={rememberMe}\n onCheckedChange={(checked) => setRememberMe(checked === true)}\n disabled={isLoading}\n />\n )}\n\n {showForgotPassword && (\n <button\n type=\"button\"\n className=\"ds-login__link\"\n onClick={onForgotPassword}\n disabled={isLoading}\n >\n {l.forgotPasswordLabel}\n </button>\n )}\n </div>\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n disabled={isLoading || !email || !password}\n className=\"ds-login__submit\"\n >\n {isLoading ? <span className=\"ds-login__spinner\" /> : l.signInLabel}\n </Button>\n </form>\n\n {/* Footer */}\n {showSignUp && (\n <div className=\"ds-login__footer\">\n <span>{l.doNotHaveAnAccountLabel}</span>\n <button\n type=\"button\"\n className=\"ds-login__link ds-login__link--accent\"\n onClick={onSignUp}\n disabled={isLoading}\n >\n {l.signUpLabel}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nLogin.displayName = 'Login';\n","import React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport './Button.css';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Visual style variant of the button */\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive';\n /** Size of the button */\n size?: 'sm' | 'md' | 'lg' | 'icon';\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /**\n * When true, the button renders its child as the root element via Radix Slot.\n * Use this to compose with routing Link components or anchors.\n *\n * @example\n * <Button asChild>\n * <a href=\"/about\">About</a>\n * </Button>\n */\n asChild?: boolean;\n}\n\n/**\n * Primary UI action component with multiple visual variants and polymorphic rendering.\n *\n * Supports `asChild` for rendering as any element (Link, anchor, etc.)\n * while preserving button styling.\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = 'primary', size = 'md', asChild = false, isLoading = false, children, disabled, ...props }, ref) => {\n const buttonClass = clsx(\n 'ds-button',\n `ds-button--${variant}`,\n size === 'icon' ? 'ds-button--icon ds-button--md' : `ds-button--${size}`,\n isLoading && 'ds-button--loading',\n className,\n );\n\n // When asChild, Slot must receive exactly one child element.\n // Loading state is handled via the ds-button--loading CSS class.\n if (asChild) {\n return (\n <Slot\n ref={ref}\n aria-disabled={isLoading || disabled || undefined}\n className={buttonClass}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n disabled={isLoading || disabled}\n className={buttonClass}\n {...props}\n >\n {isLoading && (\n <svg\n className=\"ds-button__spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n )}\n <span className={clsx(\"ds-button__content\", isLoading && \"ds-button__content--hidden\")}>\n {children}\n </span>\n </button>\n );\n },\n);\n\nButton.displayName = 'Button';\n","import React from 'react';\nimport { Input as BaseInput } from '@base-ui/react/input';\nimport clsx from 'clsx';\nimport './TextField.css';\n\nexport interface TextFieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: boolean;\n helperText?: string;\n endAdornment?: React.ReactNode;\n}\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n ({ className, label, error, helperText, endAdornment, id, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id || generatedId;\n\n return (\n <div className={clsx('ds-textfield', className)}>\n {label && (\n <label htmlFor={inputId} className=\"ds-textfield__label\">\n {label}\n </label>\n )}\n <div className=\"ds-textfield__input-wrapper\">\n <BaseInput\n id={inputId}\n ref={ref}\n className={clsx(\n 'ds-textfield__input',\n error && 'ds-textfield__input--error',\n endAdornment && 'ds-textfield__input--adorned',\n )}\n {...props}\n />\n {endAdornment && <div className=\"ds-textfield__adornment\">{endAdornment}</div>}\n </div>\n {helperText && (\n <span className={clsx('ds-textfield__helper', error && 'ds-textfield__helper--error')}>\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n\nTextField.displayName = 'TextField';\n","import React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport clsx from 'clsx';\nimport './Checkbox.css';\n\nexport interface CheckboxProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n name?: string;\n value?: string;\n id?: string;\n label?: string;\n className?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n ({ className, label, id, ...props }, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n return (\n <div className={clsx('ds-checkbox-wrapper', className)}>\n <BaseCheckbox.Root id={checkboxId} ref={ref} className=\"ds-checkbox\" {...props}>\n <BaseCheckbox.Indicator className=\"ds-checkbox__indicator\">\n <svg\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ds-checkbox__icon\"\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n {label && (\n <label htmlFor={checkboxId} className=\"ds-checkbox__label\">\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import React, { useState, useMemo } from 'react';\nimport clsx from 'clsx';\nimport { Button } from '../Button/Button';\nimport { TextField } from '../TextField/TextField';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport './Signup.css';\n\n/* ============================================================================\n SIGNUP PAGE — Full Registration Flow with Password Strength\n ============================================================================ */\n\nexport interface SignupLabels {\n formTitle?: string;\n googleButtonLabel?: string;\n dividerText?: string;\n nameLabel?: string;\n namePlaceholder?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n phoneLabel?: string;\n phonePlaceholder?: string;\n hidePasswordLabel?: string;\n showPasswordLabel?: string;\n passwordStrengthLabels?: [string, string, string, string, string];\n termsAgreementPrefix?: string;\n termsLabel?: string;\n termsConjunction?: string;\n privacyLabel?: string;\n submitLabel?: string;\n loginPrompt?: string;\n loginLabel?: string;\n successTitle?: string;\n continueToLoginLabel?: string;\n}\n\nexport interface SignupProps {\n /** Company/Product name */\n brandName?: string;\n /** Tagline or description */\n tagline?: string;\n /** Show social signup options */\n showSocialSignup?: boolean;\n /** Custom logo element */\n logo?: React.ReactNode;\n /** Form submit handler */\n onSubmit?: (data: {\n name: string;\n email: string;\n phone: string;\n password: string;\n acceptedTerms: boolean;\n }) => void;\n /** Social signup handlers */\n onGoogleSignup?: () => void;\n /** Link handlers */\n onLogin?: () => void;\n onTermsClick?: () => void;\n onPrivacyClick?: () => void;\n /** Loading state */\n isLoading?: boolean;\n /** Error message */\n error?: string;\n /** Success state */\n isSuccess?: boolean;\n /** Success message */\n successMessage?: string;\n /** Custom class name */\n className?: string;\n /** Custom styles */\n style?: React.CSSProperties;\n /** i18n labels — every key falls back to its English default */\n labels?: SignupLabels;\n /** Default country (ISO code, e.g. TH) */\n defaultCountry?: string;\n /** Array of countries to populate the dropdown */\n countries?: { code: string; dial: string; flag: string; name: string }[];\n /** Custom render for phone input */\n renderPhoneInput?: (props: {\n value: string;\n onChange: (val: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n id?: string;\n }) => React.ReactNode;\n}\n\nconst defaultSignupLabels: SignupLabels = {\n formTitle: 'Create your account',\n googleButtonLabel: 'Sign up with Google',\n dividerText: 'or sign up with email',\n nameLabel: 'Full name',\n namePlaceholder: 'John Doe',\n emailLabel: 'Work email',\n emailPlaceholder: 'you@company.com',\n passwordLabel: 'Password',\n passwordPlaceholder: 'Create a strong password',\n phoneLabel: 'Phone',\n phonePlaceholder: 'Phone number',\n hidePasswordLabel: 'Hide password',\n showPasswordLabel: 'Show password',\n passwordStrengthLabels: ['Very Weak', 'Weak', 'Fair', 'Strong', 'Very Strong'],\n termsAgreementPrefix: 'I agree to the ',\n termsLabel: 'Terms of Service ',\n termsConjunction: 'and ',\n privacyLabel: 'Privacy Policy',\n submitLabel: 'Create account',\n loginPrompt: 'Already have an account?',\n loginLabel: 'Sign in',\n successTitle: 'Welcome!',\n continueToLoginLabel: 'Continue to Login',\n};\n\n/**\n * Calculate password strength (0-4)\n */\nfunction calculatePasswordStrength(\n password: string,\n strengthLabels?: [string, string, string, string, string],\n): {\n score: number;\n label: string;\n color: string;\n} {\n let score = 0;\n\n if (password.length >= 8) score++;\n if (password.length >= 12) score++;\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) score++;\n if (/\\d/.test(password)) score++;\n if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) score++;\n\n // Normalize to 0-4\n score = Math.min(4, score);\n\n const labels = strengthLabels ?? defaultSignupLabels.passwordStrengthLabels!;\n const colors = [\n 'var(--status-error)',\n 'var(--status-warning)',\n '#ffd000',\n 'var(--status-success)',\n 'var(--status-success)',\n ];\n\n return {\n score,\n label: labels[score],\n color: colors[score],\n };\n}\n\nexport const Signup: React.FC<SignupProps> = ({\n brandName,\n showSocialSignup = true,\n logo,\n onSubmit,\n onGoogleSignup,\n onLogin,\n onTermsClick,\n onPrivacyClick,\n isLoading = false,\n error,\n isSuccess = false,\n successMessage = \"You're all set! Check your email to verify your account.\",\n className,\n style,\n labels: customLabels,\n defaultCountry = 'TH',\n countries = [],\n renderPhoneInput,\n}) => {\n const l = { ...defaultSignupLabels, ...customLabels };\n const [name, setName] = useState('');\n const [email, setEmail] = useState('');\n\n // Phone logic\n const defaultCountryData = countries.find(c => c.code === defaultCountry) || countries[0] || { code: 'TH', dial: '+66', flag: '🇹🇭', name: 'Thailand' };\n const [countryDial, setCountryDial] = useState(defaultCountryData.dial);\n const [phone, setPhone] = useState('');\n\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [acceptedTerms, setAcceptedTerms] = useState(false);\n\n const passwordStrength = useMemo(\n () => calculatePasswordStrength(password, l.passwordStrengthLabels),\n [password, l.passwordStrengthLabels],\n );\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n const fullPhone = phone\n ? (phone.trim().startsWith('+') ? phone.trim() : `${countryDial} ${phone}`.trim())\n : '';\n onSubmit?.({ name, email, phone: fullPhone, password, acceptedTerms });\n };\n\n const isFormValid = name && email && password.length >= 8 && acceptedTerms;\n\n // Success State\n if (isSuccess) {\n return (\n <div className={clsx('ds-signup', className)} style={style}>\n {/* Animated Background Accents Container */}\n <div className=\"ds-signup__background\">\n <div className=\"ds-signup__accent ds-signup__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-signup__accent ds-signup__accent--2\" aria-hidden=\"true\" />\n </div>\n\n <div className=\"ds-signup__card ds-signup__card--success\">\n <div className=\"ds-signup__success-icon\">\n <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"32\" cy=\"32\" r=\"30\" stroke=\"var(--status-success)\" strokeWidth=\"2\" />\n <path\n d=\"M20 32L28 40L44 24\"\n stroke=\"var(--status-success)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n <h1 className=\"ds-signup__success-title\">{l.successTitle === 'Welcome!' ? `Welcome to ${brandName}!` : l.successTitle}</h1>\n <p className=\"ds-signup__success-message\">{successMessage}</p>\n <Button variant=\"primary\" size=\"lg\" onClick={onLogin} className=\"ds-signup__success-btn\">\n {l.continueToLoginLabel}\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={clsx('ds-signup', className)} style={style}>\n {/* Animated Background Accents Container */}\n <div className=\"ds-signup__background\">\n <div className=\"ds-signup__accent ds-signup__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-signup__accent ds-signup__accent--2\" aria-hidden=\"true\" />\n </div>\n\n {/* Main Card */}\n <div className=\"ds-signup__card\">\n {/* Header */}\n <div className=\"ds-signup__header\">\n {logo ? (\n <div className=\"ds-signup__logo\">{logo}</div>\n ) : (\n <div className=\"ds-signup__logo ds-signup__logo--default\">\n <div className=\"ds-signup__logo-icon\">\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#signup-logo-gradient)\" />\n <path\n d=\"M16 8V24M8 16H24\"\n stroke=\"white\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient id=\"signup-logo-gradient\" x1=\"0\" y1=\"0\" x2=\"32\" y2=\"32\">\n <stop stopColor=\"rgb(var(--accent-rgb))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--accent2-rgb))\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n )}\n\n <h1 className=\"ds-signup__title\">{l.formTitle}</h1>\n </div>\n\n {/* Error Message */}\n {error && (\n <div className=\"ds-signup__error\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 4.5V8.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n <span>{error}</span>\n </div>\n )}\n\n {/* Social Signup */}\n {showSocialSignup && (\n <div className=\"ds-signup__social\">\n <button\n type=\"button\"\n className=\"ds-signup__social-btn\"\n onClick={onGoogleSignup}\n disabled={isLoading}\n >\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\">\n <path\n fill=\"#4285F4\"\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n />\n </svg>\n <span>{l.googleButtonLabel}</span>\n </button>\n\n <div className=\"ds-signup__divider\">\n <span>{l.dividerText}</span>\n </div>\n </div>\n )}\n\n {/* Form */}\n <form className=\"ds-signup__form\" onSubmit={handleSubmit}>\n <div className=\"ds-signup__field\">\n <TextField\n label={l.nameLabel}\n type=\"text\"\n placeholder={l.namePlaceholder}\n value={name}\n onChange={(e) => setName(e.target.value)}\n disabled={isLoading}\n autoComplete=\"name\"\n />\n </div>\n\n <div className=\"ds-signup__field\">\n <TextField\n label={l.emailLabel}\n type=\"email\"\n placeholder={l.emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n disabled={isLoading}\n autoComplete=\"email\"\n />\n </div>\n\n <div className=\"ds-signup__field ds-signup__phone-field\">\n <label className=\"ds-textfield__label\" htmlFor=\"phone-input\">\n {l.phoneLabel}\n </label>\n <div className=\"ds-textfield__input-wrapper\">\n {renderPhoneInput ? (\n renderPhoneInput({\n value: phone,\n onChange: setPhone,\n placeholder: l.phonePlaceholder,\n disabled: isLoading,\n className: \"ds-signup__phone-container ds-textfield__input\",\n id: \"phone-input\"\n })\n ) : (\n <div className={clsx(\"ds-signup__phone-container\", \"ds-textfield__input\")}>\n <div className=\"ds-signup__flag-select-wrapper\">\n <select\n className=\"ds-signup__flag-select-native\"\n value={countryDial}\n onChange={(e) => {\n const newDial = e.target.value;\n setCountryDial(newDial);\n setPhone(newDial + ' ');\n }}\n disabled={isLoading}\n aria-label=\"Select country code\"\n >\n {countries.map((c) => (\n <option key={c.code} value={c.dial}>\n {c.name}\n </option>\n ))}\n </select>\n <div className=\"ds-signup__flag-display\" aria-hidden=\"true\">\n <span className=\"ds-signup__flag-icon\">\n {countries.find((c) => c.dial === countryDial)?.flag || '🌐'}\n </span>\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n </div>\n <input\n id=\"phone-input\"\n type=\"tel\"\n placeholder={l.phonePlaceholder}\n value={phone}\n onChange={(e) => setPhone(e.target.value)}\n disabled={isLoading}\n className=\"ds-signup__phone-input ds-signup__phone-input-native\"\n autoComplete=\"tel\"\n />\n </div>\n )}\n </div>\n </div>\n\n <div className=\"ds-signup__field\">\n <div className=\"ds-signup__password-wrapper\">\n <TextField\n label={l.passwordLabel}\n type={showPassword ? 'text' : 'password'}\n placeholder={l.passwordPlaceholder}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n disabled={isLoading}\n autoComplete=\"new-password\"\n />\n <button\n type=\"button\"\n className=\"ds-signup__password-toggle\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? l.hidePasswordLabel : l.showPasswordLabel}\n >\n {showPassword ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </div>\n\n {/* Password Strength Meter */}\n {password && (\n <div className=\"ds-signup__strength\">\n <div className=\"ds-signup__strength-bar\">\n {[0, 1, 2, 3].map((i) => (\n <div\n key={i}\n className={clsx(\n 'ds-signup__strength-segment',\n i < passwordStrength.score && 'ds-signup__strength-segment--active',\n )}\n style={\n i < passwordStrength.score\n ? { backgroundColor: passwordStrength.color }\n : {}\n }\n />\n ))}\n </div>\n <span\n className=\"ds-signup__strength-label\"\n style={{ color: passwordStrength.color }}\n >\n {passwordStrength.label}\n </span>\n </div>\n )}\n </div>\n\n {/* Terms Checkbox */}\n <div className=\"ds-signup__terms\">\n <Checkbox\n label=\"\"\n checked={acceptedTerms}\n onCheckedChange={(checked) => setAcceptedTerms(checked === true)}\n disabled={isLoading}\n />\n <span className=\"ds-signup__terms-text\">\n {(l.termsAgreementPrefix || '').endsWith(' ') ? (l.termsAgreementPrefix || '') : `${l.termsAgreementPrefix || ''} `}\n <button\n type=\"button\"\n className=\"ds-signup__link\"\n onClick={onTermsClick}\n disabled={isLoading}\n >\n {l.termsLabel}\n </button>\n {(l.termsConjunction || ' ').startsWith(' ') && (l.termsConjunction || ' ').endsWith(' ')\n ? (l.termsConjunction || ' ')\n : ` ${(l.termsConjunction || '').trim()} `}\n <button\n type=\"button\"\n className=\"ds-signup__link\"\n onClick={onPrivacyClick}\n disabled={isLoading}\n >\n {l.privacyLabel}\n </button>\n </span>\n </div>\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n disabled={isLoading || !isFormValid}\n className=\"ds-signup__submit\"\n >\n {isLoading ? <span className=\"ds-signup__spinner\" /> : l.submitLabel}\n </Button>\n </form>\n\n {/* Footer */}\n <div className=\"ds-signup__footer\">\n <span>{l.loginPrompt}</span>\n <button\n type=\"button\"\n className=\"ds-signup__link ds-signup__link--accent\"\n onClick={onLogin}\n disabled={isLoading}\n >\n {l.loginLabel}\n </button>\n </div>\n </div>\n </div>\n );\n};\n\nSignup.displayName = 'Signup';\n","import React, { useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport { Button } from '../Button/Button';\nimport { TextField } from '../TextField/TextField';\nimport './ForgotPassword.css';\n\n/* ============================================================================\n FORGOT PASSWORD PAGE — Email Entry and Reset Flow\n ============================================================================ */\n\nexport interface ForgotPasswordLabels {\n forgotPasswordTitle?: string;\n resetInstructionsTagline?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n resetPasswordButton?: string;\n backToLoginButton?: string;\n checkYourEmailTitle?: string;\n passwordResetLinkTagline?: string;\n didNotReceiveEmailHint?: string;\n clickToResendButton?: string;\n setNewPasswordTitle?: string;\n mustBeCharactersTagline?: string;\n passwordLabel?: string;\n enterNewPasswordPlaceholder?: string;\n confirmPasswordLabel?: string;\n confirmNewPasswordPlaceholder?: string;\n passwordsDontMatchError?: string;\n passwordResetTitle?: string;\n passwordSuccessfullyResetTagline?: string;\n clickBelowLogInHint?: string;\n continueToLoginButton?: string;\n showPasswordLabel?: string;\n hidePasswordLabel?: string;\n}\n\nexport interface ForgotPasswordProps {\n /** Translation strings */\n labels?: ForgotPasswordLabels;\n /** Custom logo element */\n logo?: React.ReactNode;\n /** Form submit handler for email entry */\n onSubmit?: (email: string) => void;\n /** Form submit handler for password reset */\n onResetPassword?: (data: { password: string; confirmPassword: string }) => void;\n /** Back to login handler */\n onBackToLogin?: () => void;\n /** Loading state */\n isLoading?: boolean;\n /** Error message */\n error?: string;\n /** Current step: 'email' | 'sent' | 'reset' | 'success' */\n step?: 'email' | 'sent' | 'reset' | 'success';\n /** Email address (for display in sent state). */\n email?: string;\n /** Custom class name */\n className?: string;\n}\n\nconst defaultForgotPasswordLabels: Required<ForgotPasswordLabels> = {\n forgotPasswordTitle: 'Forgot password?',\n resetInstructionsTagline: \"No worries, we'll send you reset instructions.\",\n emailLabel: 'Email',\n emailPlaceholder: 'Enter your email',\n resetPasswordButton: 'Reset password',\n backToLoginButton: 'Back to login',\n checkYourEmailTitle: 'Check your email',\n passwordResetLinkTagline: 'We sent a password reset link to',\n didNotReceiveEmailHint: \"Didn't receive the email? \",\n clickToResendButton: 'Click to resend',\n setNewPasswordTitle: 'Set new password',\n mustBeCharactersTagline: 'Must be at least 8 characters.',\n passwordLabel: 'Password',\n enterNewPasswordPlaceholder: 'Enter new password',\n confirmPasswordLabel: 'Confirm password',\n confirmNewPasswordPlaceholder: 'Confirm new password',\n passwordsDontMatchError: \"Passwords don't match\",\n passwordResetTitle: 'Password reset',\n passwordSuccessfullyResetTagline: 'Your password has been successfully reset.',\n clickBelowLogInHint: 'Click below to log in.',\n continueToLoginButton: 'Continue to login',\n showPasswordLabel: 'Show password',\n hidePasswordLabel: 'Hide password',\n};\n\nexport const ForgotPassword: React.FC<ForgotPasswordProps> = ({\n logo,\n labels: customLabels,\n onSubmit,\n onResetPassword,\n onBackToLogin,\n isLoading = false,\n error,\n step = 'email',\n email: initialEmail = '',\n className,\n}) => {\n const l = { ...defaultForgotPasswordLabels, ...customLabels };\n const [email, setEmail] = useState(initialEmail);\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [resendTimer, setResendTimer] = useState(0);\n const hasStartedTimer = React.useRef(false);\n\n useEffect(() => {\n if (step === 'sent' && !hasStartedTimer.current) {\n hasStartedTimer.current = true;\n setResendTimer(60);\n } else if (step !== 'sent') {\n hasStartedTimer.current = false;\n }\n }, [step]);\n\n useEffect(() => {\n let timerId: NodeJS.Timeout;\n if (resendTimer > 0) {\n timerId = setInterval(() => {\n setResendTimer((prev) => prev - 1);\n }, 1000);\n }\n return () => {\n if (timerId) clearInterval(timerId);\n };\n }, [resendTimer]);\n\n const handleResendClick = () => {\n if (resendTimer === 0) {\n onSubmit?.(email || initialEmail);\n setResendTimer(60);\n }\n };\n\n const handleEmailSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.(email);\n };\n\n const handleResetSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onResetPassword?.({ password, confirmPassword });\n };\n\n const renderLogo = () =>\n logo ? (\n <div className=\"ds-forgot__logo\">{logo}</div>\n ) : (\n <div className=\"ds-forgot__logo ds-forgot__logo--default\">\n <div className=\"ds-forgot__logo-icon\">\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#forgot-logo-gradient)\" />\n <path\n d=\"M16 10V14M16 22V22.01M16 26C21.5228 26 26 21.5228 26 16C26 10.4772 21.5228 6 16 6C10.4772 6 6 10.4772 6 16C6 21.5228 10.4772 26 16 26Z\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n <defs>\n <linearGradient id=\"forgot-logo-gradient\" x1=\"0\" y1=\"0\" x2=\"32\" y2=\"32\">\n <stop stopColor=\"rgb(var(--accent-rgb))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--accent2-rgb))\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n );\n\n // Email Entry Step\n if (step === 'email') {\n return (\n <div className={clsx('ds-forgot', className)}>\n <div className=\"ds-forgot__accent ds-forgot__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-forgot__accent ds-forgot__accent--2\" aria-hidden=\"true\" />\n\n <div className=\"ds-forgot__card\">\n <div className=\"ds-forgot__header\">\n {renderLogo()}\n <h1 className=\"ds-forgot__title\">{l.forgotPasswordTitle}</h1>\n <p className=\"ds-forgot__tagline\">{l.resetInstructionsTagline}</p>\n </div>\n\n {error && (\n <div className=\"ds-forgot__error\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 4.5V8.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n <span>{error}</span>\n </div>\n )}\n\n <form className=\"ds-forgot__form\" onSubmit={handleEmailSubmit}>\n <div className=\"ds-forgot__field\">\n <TextField\n label={l.emailLabel}\n type=\"email\"\n placeholder={l.emailPlaceholder}\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n disabled={isLoading}\n autoComplete=\"email\"\n />\n </div>\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n disabled={isLoading || !email}\n className=\"ds-forgot__submit\"\n >\n {isLoading ? <span className=\"ds-forgot__spinner\" /> : l.resetPasswordButton}\n </Button>\n </form>\n\n <div className=\"ds-forgot__footer\">\n <button\n type=\"button\"\n className=\"ds-forgot__back\"\n onClick={onBackToLogin}\n disabled={isLoading}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10 12L6 8L10 4\" />\n </svg>\n {l.backToLoginButton}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n // Email Sent Step\n if (step === 'sent') {\n return (\n <div className={clsx('ds-forgot', className)}>\n <div className=\"ds-forgot__accent ds-forgot__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-forgot__accent ds-forgot__accent--2\" aria-hidden=\"true\" />\n\n <div className=\"ds-forgot__card ds-forgot__card--centered\">\n <div className=\"ds-forgot__success-icon\">\n <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"32\" cy=\"32\" r=\"30\" stroke=\"rgb(var(--accent-rgb))\" strokeWidth=\"2\" />\n <path\n d=\"M20 32L44 32M44 32L36 24M44 32L36 40\"\n stroke=\"rgb(var(--accent-rgb))\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n <h1 className=\"ds-forgot__title\">{l.checkYourEmailTitle}</h1>\n <p className=\"ds-forgot__tagline\">\n {l.passwordResetLinkTagline}\n <br />\n <strong>{email || initialEmail}</strong>\n </p>\n\n <div className=\"ds-forgot__hint\">\n <span>{l.didNotReceiveEmailHint}</span>\n <button\n type=\"button\"\n className=\"ds-forgot__link\"\n onClick={handleResendClick}\n disabled={isLoading || resendTimer > 0}\n >\n {resendTimer > 0 ? `${l.clickToResendButton} ${resendTimer}s` : l.clickToResendButton}\n </button>\n </div>\n\n <div className=\"ds-forgot__footer\">\n <button\n type=\"button\"\n className=\"ds-forgot__back\"\n onClick={onBackToLogin}\n disabled={isLoading}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10 12L6 8L10 4\" />\n </svg>\n {l.backToLoginButton}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n // Reset Password Step\n if (step === 'reset') {\n const passwordsMatch = password === confirmPassword;\n const isValid = password.length >= 8 && passwordsMatch;\n\n return (\n <div className={clsx('ds-forgot', className)}>\n <div className=\"ds-forgot__accent ds-forgot__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-forgot__accent ds-forgot__accent--2\" aria-hidden=\"true\" />\n\n <div className=\"ds-forgot__card\">\n <div className=\"ds-forgot__header\">\n {renderLogo()}\n <h1 className=\"ds-forgot__title\">{l.setNewPasswordTitle}</h1>\n <p className=\"ds-forgot__tagline\">{l.mustBeCharactersTagline}</p>\n </div>\n\n {error && (\n <div className=\"ds-forgot__error\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M8 4.5V8.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n <span>{error}</span>\n </div>\n )}\n\n <form className=\"ds-forgot__form\" onSubmit={handleResetSubmit}>\n <div className=\"ds-forgot__field\">\n <div className=\"ds-forgot__password-wrapper\">\n <TextField\n label={l.passwordLabel}\n type={showPassword ? 'text' : 'password'}\n placeholder={l.enterNewPasswordPlaceholder}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n disabled={isLoading}\n autoComplete=\"new-password\"\n />\n <button\n type=\"button\"\n className=\"ds-forgot__password-toggle\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? l.hidePasswordLabel : l.showPasswordLabel}\n >\n {showPassword ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n\n <div className=\"ds-forgot__field\">\n <TextField\n label={l.confirmPasswordLabel}\n type={showPassword ? 'text' : 'password'}\n placeholder={l.confirmNewPasswordPlaceholder}\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n disabled={isLoading}\n autoComplete=\"new-password\"\n error={confirmPassword.length > 0 && !passwordsMatch}\n helperText={\n confirmPassword.length > 0 && !passwordsMatch\n ? l.passwordsDontMatchError\n : undefined\n }\n />\n </div>\n\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n disabled={isLoading || !isValid}\n className=\"ds-forgot__submit\"\n >\n {isLoading ? <span className=\"ds-forgot__spinner\" /> : l.resetPasswordButton}\n </Button>\n </form>\n\n <div className=\"ds-forgot__footer\">\n <button\n type=\"button\"\n className=\"ds-forgot__back\"\n onClick={onBackToLogin}\n disabled={isLoading}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M10 12L6 8L10 4\" />\n </svg>\n {l.backToLoginButton}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n // Success Step\n return (\n <div className={clsx('ds-forgot', className)}>\n <div className=\"ds-forgot__accent ds-forgot__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-forgot__accent ds-forgot__accent--2\" aria-hidden=\"true\" />\n\n <div className=\"ds-forgot__card ds-forgot__card--centered\">\n <div className=\"ds-forgot__success-icon ds-forgot__success-icon--check\">\n <svg viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"32\" cy=\"32\" r=\"30\" stroke=\"var(--status-success)\" strokeWidth=\"2\" />\n <path\n d=\"M20 32L28 40L44 24\"\n stroke=\"var(--status-success)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n <h1 className=\"ds-forgot__title\">{l.passwordResetTitle}</h1>\n <p className=\"ds-forgot__tagline\">\n {l.passwordSuccessfullyResetTagline}\n <br />\n {l.clickBelowLogInHint}\n </p>\n\n <Button variant=\"primary\" size=\"lg\" onClick={onBackToLogin} className=\"ds-forgot__submit\">\n {l.continueToLoginButton}\n </Button>\n </div>\n </div>\n );\n};\n\nForgotPassword.displayName = 'ForgotPassword';\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport { Button } from '../Button/Button';\nimport { TextField } from '../TextField/TextField';\nimport './ChangeEmail.css';\n\nexport interface ChangeEmailLabels {\n changeEmailTitle?: string;\n enterNewEmailAndCurrentPasswordTagline?: string;\n newEmailLabel?: string;\n currentPasswordLabel?: string;\n forgotPasswordButton?: string;\n continueButton?: string;\n}\n\nexport interface ChangeEmailProps {\n /** Translation strings */\n labels?: ChangeEmailLabels;\n /** Custom logo element */\n logo?: React.ReactNode;\n /** Form submit handler */\n onSubmit?: (data: { newEmail: string; currentPassword: string }) => void;\n /** Loading state */\n isLoading?: boolean;\n /** Error message */\n error?: string;\n /** Custom class name */\n className?: string;\n /** Custom styles */\n style?: React.CSSProperties;\n}\n\nconst defaultChangeEmailLabels: Required<ChangeEmailLabels> = {\n changeEmailTitle: 'Change Email',\n enterNewEmailAndCurrentPasswordTagline: 'Enter you new email and the current password.',\n newEmailLabel: 'New Email *',\n currentPasswordLabel: 'Current Password *',\n forgotPasswordButton: 'Forgot password?',\n continueButton: 'Continue',\n};\n\nexport const ChangeEmail: React.FC<ChangeEmailProps> = ({\n labels: customLabels,\n logo,\n onSubmit,\n isLoading = false,\n error,\n className,\n style,\n}) => {\n const l = { ...defaultChangeEmailLabels, ...customLabels };\n const [newEmail, setNewEmail] = useState('');\n const [currentPassword, setCurrentPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.({ newEmail, currentPassword });\n };\n\n return (\n <div className={clsx('ds-change-email', className)} style={style}>\n <div className=\"ds-change-email__container\">\n {/* Animated Background Accents */}\n <div className=\"ds-change-email__accent ds-change-email__accent--1\" aria-hidden=\"true\" />\n <div className=\"ds-change-email__accent ds-change-email__accent--2\" aria-hidden=\"true\" />\n\n {/* Main Card */}\n <div className=\"ds-change-email__card\">\n {/* Header */}\n <div className=\"ds-change-email__header\">\n {logo ? (\n <div className=\"ds-change-email__logo\">{logo}</div>\n ) : (\n <div className=\"ds-change-email__logo ds-change-email__logo--default\">\n <div className=\"ds-change-email__logo-icon\">\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#logo-gradient)\" />\n <path\n d=\"M10 16L14 20L22 12\"\n stroke=\"white\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <defs>\n <linearGradient id=\"logo-gradient\" x1=\"0\" y1=\"0\" x2=\"32\" y2=\"32\">\n <stop stopColor=\"rgb(var(--accent-rgb))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--accent2-rgb))\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n </div>\n )}\n\n <h1 className=\"ds-change-email__title\">{l.changeEmailTitle}</h1>\n <p className=\"ds-change-email__tagline\">{l.enterNewEmailAndCurrentPasswordTagline}</p>\n </div>\n\n {/* Error Message */}\n {error && (\n <div className=\"ds-change-email__error\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 4.5V8.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n <span>{error}</span>\n </div>\n )}\n\n {/* Form */}\n <form className=\"ds-change-email__form\" onSubmit={handleSubmit}>\n <div className=\"ds-change-email__field\">\n <TextField\n label={l.newEmailLabel}\n type=\"email\"\n placeholder=\"\"\n value={newEmail}\n onChange={(e) => setNewEmail(e.target.value)}\n disabled={isLoading}\n autoComplete=\"email\"\n />\n </div>\n\n <div className=\"ds-change-email__field\">\n <TextField\n label={l.currentPasswordLabel}\n type={showPassword ? 'text' : 'password'}\n placeholder=\"\"\n value={currentPassword}\n onChange={(e) => setCurrentPassword(e.target.value)}\n disabled={isLoading}\n autoComplete=\"current-password\"\n endAdornment={\n <button\n type=\"button\"\n className=\"ds-change-email__password-toggle\"\n onClick={() => setShowPassword(!showPassword)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n }\n />\n </div>\n\n <div className=\"ds-change-email__options\" style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '-8px' }}>\n <button\n type=\"button\"\n className=\"ds-change-email__link\"\n onClick={() => console.log('Forgot password clicked')}\n disabled={isLoading}\n style={{\n background: 'none',\n border: 'none',\n color: 'var(--text-secondary)',\n cursor: 'pointer',\n fontSize: '0.875rem'\n }}\n >\n {l.forgotPasswordButton}\n </button>\n </div>\n\n {/* We just need submit wrapped with some margin if necessary, matching Login.css .ds-change-email__submit */}\n <div style={{ marginTop: '24px' }}>\n <Button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n disabled={isLoading || !newEmail || !currentPassword}\n className=\"ds-change-email__submit\"\n >\n {isLoading ? <span className=\"ds-change-email__spinner\" /> : l.continueButton}\n </Button>\n </div>\n </form>\n </div>\n </div>\n </div>\n );\n};\n\nChangeEmail.displayName = 'Change Email';\n","// =============================================================================\n// LEAD PROFILE VIEW\n// Premium Lead Intelligence Page - The flagship component\n// =============================================================================\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { LeadProfileViewProps } from './types';\nimport './LeadProfileView.css';\n\n// Subcomponents\nimport { EmptyStateDisplay } from './subcomponents/EmptyStateDisplay';\nimport { LoadingStateDisplay } from './subcomponents/LoadingStateDisplay';\nimport { IdentityHeader } from './subcomponents/IdentityHeader';\nimport { IntelligenceSummary } from './subcomponents/IntelligenceSummary';\nimport { MBTISpectrum } from './subcomponents/MBTISpectrum';\nimport { BehavioralHighlights } from './subcomponents/BehavioralHighlights';\nimport { DeepDiveSection } from './subcomponents/DeepDiveSection';\n\nexport const LeadProfileView = React.forwardRef<HTMLDivElement, LeadProfileViewProps>(\n ({ state, data, analysisProgress, onRefresh, className }, ref) => {\n // ─────────────────────────────────────────────────────────────────────────\n // STATE 1: EMPTY - No data available yet\n // ─────────────────────────────────────────────────────────────────────────\n if (state === 'empty') {\n return (\n <div ref={ref} className={clsx('ds-lead-profile', 'ds-lead-profile--empty', className)}>\n <EmptyStateDisplay onRefresh={onRefresh} />\n </div>\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // STATE 2: LOADING - Analysis in progress\n // ─────────────────────────────────────────────────────────────────────────\n if (state === 'loading') {\n return (\n <div ref={ref} className={clsx('ds-lead-profile', 'ds-lead-profile--loading', className)}>\n <LoadingStateDisplay progress={analysisProgress} />\n </div>\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // STATE 3 & 4: PARTIAL or FULL - Data available\n // ─────────────────────────────────────────────────────────────────────────\n if (!data) return null;\n\n const isPartial = state === 'partial';\n const hasMBTI = !isPartial && data.mbtiScores?.length;\n const hasBehavioral = !isPartial && data.behavioralSignals;\n\n return (\n <div ref={ref} className={clsx('ds-lead-profile', `ds-lead-profile--${state}`, className)}>\n {/* ═══════════════════════════════════════════════════════════════════\n ZONE A: Identity & Trust (Always Visible)\n ═══════════════════════════════════════════════════════════════════ */}\n <section className=\"ds-lead-profile__zone ds-lead-profile__zone--identity\">\n <IdentityHeader data={data} compact={isPartial} />\n </section>\n\n {/* ═══════════════════════════════════════════════════════════════════\n ZONE B: Intelligence Overview (Primary Value Zone)\n ═══════════════════════════════════════════════════════════════════ */}\n <section className=\"ds-lead-profile__zone ds-lead-profile__zone--intelligence\">\n {/* Intelligence Summary */}\n <IntelligenceSummary data={data} isLocked={isPartial} />\n\n {/* MBTI Spectrum */}\n {(hasMBTI || isPartial) && (\n <div className=\"ds-lead-profile__mbti-wrapper\">\n <MBTISpectrum\n scores={data.mbtiScores || []}\n mbtiType={data.mbtiType}\n isLocked={isPartial}\n />\n </div>\n )}\n\n {/* Behavioral Highlights */}\n {(hasBehavioral || isPartial) && data.behavioralSignals && (\n <BehavioralHighlights signals={data.behavioralSignals} isLocked={isPartial} />\n )}\n\n {/* Partial state messaging */}\n {isPartial && (\n <div className=\"ds-lead-profile__partial-notice\">\n <div className=\"ds-lead-profile__partial-notice-content\">\n <span className=\"ds-lead-profile__partial-notice-text\">\n Full intelligence analysis will be available shortly\n </span>\n <div className=\"ds-lead-profile__partial-notice-progress\">\n <div className=\"ds-lead-profile__partial-notice-bar\" />\n </div>\n </div>\n </div>\n )}\n </section>\n\n {/* ═══════════════════════════════════════════════════════════════════\n ZONE C: Deep Dive (Expandable)\n ═══════════════════════════════════════════════════════════════════ */}\n {!isPartial && (\n <section className=\"ds-lead-profile__zone ds-lead-profile__zone--deep-dive\">\n <DeepDiveSection data={data} />\n </section>\n )}\n </div>\n );\n },\n);\n\nLeadProfileView.displayName = 'LeadProfileView';\n\n// Re-export types for consumers\nexport type {\n LeadProfileViewProps,\n LeadProfile,\n LeadProfileState,\n MBTIScore,\n EngagementTip,\n BehavioralSignals,\n AnalysisProgress,\n} from './types';\n","// =============================================================================\n// LEAD PROFILE VIEW - ICON LIBRARY\n// =============================================================================\n\nimport React from 'react';\n\ninterface IconProps {\n className?: string;\n size?: number;\n}\n\n// =============================================================================\n// SOCIAL & CONTACT ICONS\n// =============================================================================\n\nexport const IconLinkedIn: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M20.447 20.452H16.892V14.881C16.892 13.553 16.865 11.848 15.043 11.848C13.194 11.848 12.911 13.291 12.911 14.786V20.452H9.356V9.006H12.768V10.57H12.816C13.291 9.67 14.453 8.721 16.184 8.721C19.788 8.721 20.447 11.093 20.447 14.179V20.452ZM5.337 7.433C4.197 7.433 3.274 6.509 3.274 5.37C3.274 4.23 4.197 3.307 5.337 3.307C6.477 3.307 7.4 4.23 7.4 5.37C7.4 6.509 6.477 7.433 5.337 7.433ZM3.563 20.452H7.123V9.006H3.563V20.452Z\" />\n </svg>\n);\n\nexport const IconMail: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\" />\n <polyline points=\"22,6 12,13 2,6\" />\n </svg>\n);\n\nexport const IconPhone: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n);\n\n// =============================================================================\n// LOCATION & COMPANY\n// =============================================================================\n\nexport const IconMapPin: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\" />\n <circle cx=\"12\" cy=\"10\" r=\"3\" />\n </svg>\n);\n\nexport const IconBuilding: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" ry=\"2\" />\n <line x1=\"9\" y1=\"22\" x2=\"9\" y2=\"22.01\" />\n <line x1=\"15\" y1=\"22\" x2=\"15\" y2=\"22.01\" />\n <line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"18.01\" />\n <line x1=\"8\" y1=\"18\" x2=\"8\" y2=\"18.01\" />\n <line x1=\"16\" y1=\"18\" x2=\"16\" y2=\"18.01\" />\n <line x1=\"8\" y1=\"14\" x2=\"8\" y2=\"14.01\" />\n <line x1=\"12\" y1=\"14\" x2=\"12\" y2=\"14.01\" />\n <line x1=\"16\" y1=\"14\" x2=\"16\" y2=\"14.01\" />\n <line x1=\"8\" y1=\"10\" x2=\"8\" y2=\"10.01\" />\n <line x1=\"12\" y1=\"10\" x2=\"12\" y2=\"10.01\" />\n <line x1=\"16\" y1=\"10\" x2=\"16\" y2=\"10.01\" />\n <line x1=\"8\" y1=\"6\" x2=\"8\" y2=\"6.01\" />\n <line x1=\"12\" y1=\"6\" x2=\"12\" y2=\"6.01\" />\n <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"6.01\" />\n </svg>\n);\n\n// =============================================================================\n// CAREER & EDUCATION\n// =============================================================================\n\nexport const IconBriefcase: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\" />\n <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\" />\n </svg>\n);\n\nexport const IconSchool: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M22 10v6M2 10l10-5 10 5-10 5z\" />\n <path d=\"M6 12v5c3 3 9 3 12 0v-5\" />\n </svg>\n);\n\n// =============================================================================\n// UI ICONS\n// =============================================================================\n\nexport const IconChevronDown: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n);\n\nexport const IconChevronUp: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n);\n\nexport const IconRefresh: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M23 4v6h-6\" />\n <path d=\"M1 20v-6h6\" />\n <path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\" />\n </svg>\n);\n\nexport const IconCheck: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\nexport const IconLock: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n);\n\nexport const IconInfo: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n);\n\nexport const IconShield: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n </svg>\n);\n\nexport const IconShieldCheck: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n);\n\n// =============================================================================\n// BEHAVIORAL & INTELLIGENCE ICONS\n// =============================================================================\n\nexport const IconBrain: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 4.24 3 3 0 0 0 .34 5.58 2.5 2.5 0 0 0 2.96 3.08A2.5 2.5 0 0 0 12 19.5a2.5 2.5 0 0 0 4.96.44 2.5 2.5 0 0 0 2.96-3.08 3 3 0 0 0 .34-5.58 2.5 2.5 0 0 0-1.32-4.24 2.5 2.5 0 0 0-1.98-3A2.5 2.5 0 0 0 12 4.5\" />\n <path d=\"M12 4.5v15\" />\n </svg>\n);\n\nexport const IconSparkles: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M12 3l1.912 5.813a2 2 0 0 0 1.275 1.275L21 12l-5.813 1.912a2 2 0 0 0-1.275 1.275L12 21l-1.912-5.813a2 2 0 0 0-1.275-1.275L3 12l5.813-1.912a2 2 0 0 0 1.275-1.275L12 3z\" />\n </svg>\n);\n\nexport const IconTarget: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n <circle cx=\"12\" cy=\"12\" r=\"2\" />\n </svg>\n);\n\nexport const IconMessageCircle: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\" />\n </svg>\n);\n\nexport const IconZap: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />\n </svg>\n);\n\nexport const IconTrendingUp: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" />\n <polyline points=\"17 6 23 6 23 12\" />\n </svg>\n);\n\nexport const IconAlertTriangle: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n);\n\nexport const IconUser: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nexport const IconClock: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n);\n\n// =============================================================================\n// ENGAGEMENT TIP ICONS\n// =============================================================================\n\nexport const IconThumbsUp: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\" />\n </svg>\n);\n\nexport const IconThumbsDown: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\" />\n </svg>\n);\n\nexport const IconLightbulb: React.FC<IconProps> = ({ className, size = 16 }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n <path d=\"M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14\" />\n </svg>\n);\n","// =============================================================================\n// EMPTY STATE DISPLAY\n// A calm, intentional empty experience with visual metaphor\n// =============================================================================\n\nimport React from 'react';\nimport { EmptyStateDisplayProps } from '../types';\nimport { Button } from '../../Button/Button';\nimport { IconSparkles, IconRefresh } from './Icons';\n\nexport const EmptyStateDisplay: React.FC<EmptyStateDisplayProps> = ({ onRefresh }) => {\n return (\n <div className=\"ds-lead-empty\">\n {/* Pulsing avatar placeholder with gradient */}\n <div className=\"ds-lead-empty__avatar-container\">\n <div className=\"ds-lead-empty__avatar\">\n <div className=\"ds-lead-empty__avatar-pulse\" />\n <div className=\"ds-lead-empty__avatar-icon\">\n <IconSparkles size={32} />\n </div>\n </div>\n </div>\n\n {/* Human-centered messaging */}\n <div className=\"ds-lead-empty__content\">\n <h2 className=\"ds-lead-empty__title\">Discover Who They Really Are</h2>\n <p className=\"ds-lead-empty__description\">\n Our AI analyzes behavioral patterns, communication style, and personality signals to help\n you connect more effectively.\n </p>\n </div>\n\n {/* Primary action */}\n {onRefresh && (\n <div className=\"ds-lead-empty__action\">\n <Button onClick={onRefresh} variant=\"primary\" size=\"lg\">\n <IconRefresh /> Begin Analysis\n </Button>\n </div>\n )}\n\n {/* Trust indicators */}\n <div className=\"ds-lead-empty__trust\">\n <span className=\"ds-lead-empty__trust-item\">\n <span className=\"ds-lead-empty__trust-dot\" />\n Privacy-first approach\n </span>\n <span className=\"ds-lead-empty__trust-item\">\n <span className=\"ds-lead-empty__trust-dot\" />\n Public data only\n </span>\n <span className=\"ds-lead-empty__trust-item\">\n <span className=\"ds-lead-empty__trust-dot\" />\n ~2 min analysis\n </span>\n </div>\n </div>\n );\n};\n","// =============================================================================\n// LOADING STATE DISPLAY\n// Step-by-step analysis feedback that builds trust\n// =============================================================================\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { LoadingStateProps } from '../types';\nimport { IconUser, IconBrain, IconMessageCircle, IconSparkles, IconCheck } from './Icons';\n\nconst ANALYSIS_STAGES = [\n { id: 'identity', label: 'Verifying Identity', icon: IconUser },\n { id: 'behavior', label: 'Analyzing Behavior', icon: IconBrain },\n { id: 'communication', label: 'Mapping Communication Style', icon: IconMessageCircle },\n { id: 'personality', label: 'Building Personality Profile', icon: IconSparkles },\n] as const;\n\nexport const LoadingStateDisplay: React.FC<LoadingStateProps> = ({ progress }) => {\n const currentStage = progress?.currentStage || 'identity';\n const completedStages = progress?.completedStages || [];\n const estimatedTime = progress?.estimatedTimeRemaining;\n\n const getStageStatus = (stageId: string) => {\n if (completedStages.includes(stageId as (typeof completedStages)[number])) {\n return 'completed';\n }\n if (stageId === currentStage) {\n return 'active';\n }\n return 'pending';\n };\n\n const completionPercentage = Math.round(\n ((completedStages.length + 0.5) / ANALYSIS_STAGES.length) * 100,\n );\n\n return (\n <div className=\"ds-lead-loading\">\n {/* Progress visualization */}\n <div className=\"ds-lead-loading__progress\">\n <div className=\"ds-lead-loading__progress-bar\">\n <div\n className=\"ds-lead-loading__progress-fill\"\n style={{ width: `${completionPercentage}%` }}\n />\n </div>\n <span className=\"ds-lead-loading__progress-text\">{completionPercentage}% complete</span>\n </div>\n\n {/* Stage breakdown */}\n <div className=\"ds-lead-loading__stages\">\n {ANALYSIS_STAGES.map((stage, index) => {\n const status = getStageStatus(stage.id);\n const Icon = stage.icon;\n\n return (\n <div\n key={stage.id}\n className={clsx('ds-lead-loading__stage', `ds-lead-loading__stage--${status}`)}\n style={{ '--stage-index': index } as React.CSSProperties}\n >\n <div className=\"ds-lead-loading__stage-icon\">\n {status === 'completed' ? <IconCheck size={16} /> : <Icon size={16} />}\n </div>\n <span className=\"ds-lead-loading__stage-label\">{stage.label}</span>\n {status === 'active' && <div className=\"ds-lead-loading__stage-pulse\" />}\n </div>\n );\n })}\n </div>\n\n {/* Time estimate */}\n <div className=\"ds-lead-loading__footer\">\n {estimatedTime && estimatedTime > 0 ? (\n <p className=\"ds-lead-loading__time\">\n About {Math.ceil(estimatedTime / 60)} minute{estimatedTime > 60 ? 's' : ''} remaining\n </p>\n ) : (\n <p className=\"ds-lead-loading__time\">This typically takes 1–2 minutes</p>\n )}\n <p className=\"ds-lead-loading__message\">\n {progress?.message || 'Analyzing publicly available information...'}\n </p>\n </div>\n </div>\n );\n};\n","// =============================================================================\n// IDENTITY HEADER\n// Premium identity section with verification badges and confidence indicators\n// =============================================================================\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { IdentityHeaderProps } from '../types';\nimport { IconLinkedIn, IconMail, IconMapPin, IconShieldCheck, IconClock } from './Icons';\nimport { OutboundLink } from '../../OutboundLink/OutboundLink';\n\nexport const IdentityHeader: React.FC<IdentityHeaderProps> = ({ data, compact }) => {\n const avatarUrl =\n data.avatarUrl ||\n `https://ui-avatars.com/api/?name=${encodeURIComponent(data.name)}&background=1a1a2e&color=fff&size=240`;\n\n const emailStatus = data.contact?.emailStatus;\n const linkedinVerified = data.contact?.linkedinVerified;\n const confidenceScore = data.dataConfidence?.score;\n\n return (\n <div className={clsx('ds-lead-identity', compact && 'ds-lead-identity--compact')}>\n {/* Avatar with verification ring */}\n <div className=\"ds-lead-identity__avatar-wrapper\">\n <img src={avatarUrl} alt={data.name} className=\"ds-lead-identity__avatar\" />\n {confidenceScore && confidenceScore >= 80 && (\n <div className=\"ds-lead-identity__verified-badge\" title=\"High confidence data\">\n <IconShieldCheck size={14} />\n </div>\n )}\n </div>\n\n {/* Identity content */}\n <div className=\"ds-lead-identity__content\">\n {/* Name row with social proof */}\n <div className=\"ds-lead-identity__name-row\">\n <h1 className=\"ds-lead-identity__name\">{data.name}</h1>\n\n {/* Verification badges */}\n <div className=\"ds-lead-identity__badges\">\n {linkedinVerified && data.contact?.linkedinUrl && (\n <OutboundLink\n href={data.contact.linkedinUrl}\n context=\"identity-linkedin-badge\"\n className=\"ds-lead-identity__badge ds-lead-identity__badge--linkedin\"\n title=\"Verified LinkedIn Profile\"\n >\n <IconLinkedIn size={14} />\n </OutboundLink>\n )}\n {emailStatus === 'verified' && (\n <span\n className=\"ds-lead-identity__badge ds-lead-identity__badge--verified\"\n title=\"Email Verified\"\n >\n <IconMail size={14} />\n </span>\n )}\n </div>\n </div>\n\n {/* Role and company */}\n <div className=\"ds-lead-identity__role\">\n <span className=\"ds-lead-identity__role-title\">{data.role}</span>\n <span className=\"ds-lead-identity__role-separator\">at</span>\n <span className=\"ds-lead-identity__company\">\n {data.companyLogo && (\n <img\n src={data.companyLogo}\n alt={data.company}\n className=\"ds-lead-identity__company-logo\"\n />\n )}\n {data.company}\n </span>\n </div>\n\n {/* Meta information */}\n <div className=\"ds-lead-identity__meta\">\n <span className=\"ds-lead-identity__meta-item\">\n <IconMapPin size={14} />\n {data.location}\n </span>\n </div>\n\n {/* Contact and freshness row */}\n <div className=\"ds-lead-identity__actions\">\n {data.contact?.email && (\n <OutboundLink\n href={`mailto:${data.contact.email}`}\n context=\"identity-email-contact\"\n openInNewTab={false}\n className={clsx(\n 'ds-lead-identity__contact',\n emailStatus && `ds-lead-identity__contact--${emailStatus}`,\n )}\n >\n <IconMail size={14} />\n <span className=\"ds-lead-identity__contact-email\">{data.contact.email}</span>\n {emailStatus && (\n <span className=\"ds-lead-identity__contact-status\">\n {emailStatus === 'verified' && 'Verified'}\n {emailStatus === 'valid' && 'Valid'}\n {emailStatus === 'risky' && 'Risky'}\n {emailStatus === 'invalid' && 'Invalid'}\n </span>\n )}\n </OutboundLink>\n )}\n\n {data.lastUpdated && (\n <span className=\"ds-lead-identity__freshness\">\n <IconClock size={12} />\n Updated {data.lastUpdated}\n </span>\n )}\n </div>\n\n {/* Confidence indicator */}\n {confidenceScore !== undefined && (\n <div className=\"ds-lead-identity__confidence\">\n <div className=\"ds-lead-identity__confidence-bar\">\n <div\n className=\"ds-lead-identity__confidence-fill\"\n style={{ width: `${confidenceScore}%` }}\n />\n </div>\n <span className=\"ds-lead-identity__confidence-label\">\n {confidenceScore}% data confidence\n </span>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { AnchorHTMLAttributes, forwardRef, MouseEvent, useState, useEffect } from 'react';\nimport type { UtmParams } from '../../web/utm/types';\nimport { useUtmDefaults } from '../../web/utm/useUtmDefaults';\nimport { isExemptUrl, appendUTMs, appendGovernedUTMs } from './outbound-link-utils';\n\nexport interface OutboundLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n context: string;\n campaignOverride?: string;\n mediumOverride?: string;\n preserveExistingUTM?: boolean;\n openInNewTab?: boolean;\n disableTracking?: boolean;\n /**\n * Governed UTM parameters. When provided, the link uses the UTM governance\n * system (buildUtmUrl) instead of the legacy appendUTMs approach.\n *\n * Preferred for all new code. Existing usages without utmParams continue\n * to work via the legacy path.\n */\n utmParams?: UtmParams;\n children: React.ReactNode;\n}\n\nexport interface OutboundClickEventDetail {\n destination_domain: string;\n destination_url: string;\n utm_medium_type: string;\n page_slug: string;\n component_location: string;\n timestamp: string;\n is_cross_subdomain: boolean;\n}\n\nexport const OutboundLink = forwardRef<HTMLAnchorElement, OutboundLinkProps>(\n (\n {\n href,\n context,\n campaignOverride,\n mediumOverride = 'outbound_link',\n preserveExistingUTM = true,\n openInNewTab = true,\n disableTracking = false,\n utmParams,\n onClick,\n children,\n ...props\n },\n ref\n ) => {\n // ── Resolve UTM params: explicit prop > context > legacy fallback ──\n const contextParams = useUtmDefaults();\n const resolvedUtmParams = utmParams ?? contextParams;\n\n // Parse hostname for analytics events (safe on both server/client)\n let hostname = '';\n try {\n const url = new URL(href);\n hostname = url.hostname;\n } catch {\n // Relative URL or invalid — hostname stays empty\n }\n\n // SSR and initial client render use the plain href to avoid hydration\n // mismatches. UTM params are decorated after hydration via useEffect.\n const [finalHref, setFinalHref] = useState(href);\n\n useEffect(() => {\n let isExternal = false;\n let currentMedium = mediumOverride;\n\n try {\n const url = new URL(href);\n const currentHost = window.location.hostname;\n isExternal = url.hostname !== currentHost;\n\n if (isExternal && currentHost.includes('sales-mind.ai') && url.hostname.includes('sales-mind.ai')) {\n if (currentMedium === 'outbound_link') {\n currentMedium = 'cross_subdomain';\n }\n }\n } catch {\n isExternal = false;\n }\n\n const isExempt = isExemptUrl(href) || disableTracking;\n\n if (isExternal && !isExempt) {\n if (resolvedUtmParams) {\n // Governed path: use buildUtmUrl via appendGovernedUTMs\n setFinalHref(appendGovernedUTMs(href, resolvedUtmParams, preserveExistingUTM));\n } else {\n // Legacy path: use appendUTMs with non-governed defaults\n const pageSlug = window.location.pathname.replace(/^\\/|\\/$/g, '') || 'home';\n setFinalHref(appendUTMs(href, context, pageSlug, {\n mediumOverride: currentMedium,\n campaignOverride,\n preserveExisting: preserveExistingUTM,\n }));\n }\n } else {\n setFinalHref(href);\n }\n }, [href, context, mediumOverride, campaignOverride, preserveExistingUTM, disableTracking, resolvedUtmParams]);\n\n const handleClick = (e: MouseEvent<HTMLAnchorElement>) => {\n if (typeof window === 'undefined' || disableTracking) {\n onClick?.(e);\n return;\n }\n\n let clickExternal = false;\n let clickCrossSubdomain = false;\n let clickMedium = mediumOverride;\n\n try {\n const url = new URL(href);\n const currentHost = window.location.hostname;\n clickExternal = url.hostname !== currentHost;\n\n if (clickExternal && currentHost.includes('sales-mind.ai') && url.hostname.includes('sales-mind.ai')) {\n clickCrossSubdomain = true;\n if (clickMedium === 'outbound_link') {\n clickMedium = 'cross_subdomain';\n }\n }\n } catch { /* relative URL */ }\n\n if (clickExternal) {\n const detail: OutboundClickEventDetail = {\n destination_domain: hostname,\n destination_url: finalHref,\n utm_medium_type: clickMedium,\n page_slug: window.location.pathname,\n component_location: context,\n timestamp: new Date().toISOString(),\n is_cross_subdomain: clickCrossSubdomain,\n };\n\n const event = new CustomEvent('outbound_click', { detail });\n window.dispatchEvent(event);\n }\n\n onClick?.(e);\n };\n\n // Determine SEO attributes\n const relParts = [];\n \n // Check if it's cross-subdomain for target logic (usually open internal links in same tab, external in new)\n let shouldOpenNewTab = openInNewTab;\n try {\n const url = new URL(href);\n if (typeof window !== 'undefined') {\n const currentHost = window.location.hostname;\n if (url.hostname !== currentHost && currentHost.includes('sales-mind.ai') && url.hostname.includes('sales-mind.ai')) {\n shouldOpenNewTab = false; // By default, prefer same tab for cross-subdomain ecosystem links\n }\n }\n } catch { /* empty */ }\n\n if (shouldOpenNewTab) relParts.push('noopener', 'noreferrer');\n if (mediumOverride === 'citation') relParts.push('nofollow');\n const rel = relParts.length > 0 ? relParts.join(' ') : undefined;\n\n return (\n // eslint-disable-next-line no-restricted-syntax\n <a\n ref={ref}\n href={finalHref}\n target={shouldOpenNewTab ? '_blank' : undefined}\n rel={rel}\n onClick={handleClick}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\n\nOutboundLink.displayName = 'OutboundLink';\n","import { useContext } from 'react';\nimport { UtmContext } from './utm-context';\nimport type { UtmParams } from './types';\n\n/**\n * Read the nearest UtmProvider's default params.\n * Returns `null` when no provider is present (callers should fall back gracefully).\n */\nexport function useUtmDefaults(): UtmParams | null {\n return useContext(UtmContext);\n}\n","import { createContext } from 'react';\nimport type { UtmParams } from './types';\n\n/** Internal React context instance. Import via UtmProvider / useUtmDefaults — do not use directly. */\nexport const UtmContext = createContext<UtmParams | null>(null);\n","/* ============================================================================\n UTM URL Builders\n ============================================================================ */\n\nimport type { UtmParams } from './types';\n\n/** Placeholder origin used internally to parse relative URLs. Never appears in output. */\nconst PLACEHOLDER_ORIGIN = 'https://__placeholder__.internal';\n\n/**\n * Build a URL with UTM parameters appended.\n *\n * - Supports both absolute and relative URLs.\n * - Preserves existing query parameters and hash fragments.\n * - Always emits params in canonical order: source → medium → campaign → term → content.\n * - Omits optional params (term, content) when undefined.\n *\n * @example\n * buildUtmUrl('https://app.sales-mind.ai/register', { source: 'linkedin', medium: 'dm', campaign: 'discoveryCall' })\n * // → 'https://app.sales-mind.ai/register?utm_source=linkedin&utm_medium=dm&utm_campaign=discoveryCall'\n *\n * buildUtmUrl('/pricing', { source: 'website', medium: 'webHome', campaign: 'trial' })\n * // → '/pricing?utm_source=website&utm_medium=webHome&utm_campaign=trial'\n */\nexport function buildUtmUrl(baseUrl: string, params: UtmParams): string {\n const isRelative = baseUrl.startsWith('/');\n\n let url: URL;\n try {\n url = isRelative ? new URL(baseUrl, PLACEHOLDER_ORIGIN) : new URL(baseUrl);\n } catch {\n // If URL parsing fails entirely, return the base URL unchanged.\n return baseUrl;\n }\n\n // Preserve existing params by collecting them first, then clearing and re-adding in order.\n const existingParams: [string, string][] = [];\n url.searchParams.forEach((value, key) => {\n existingParams.push([key, value]);\n });\n\n // Clear all params to rebuild in canonical order.\n for (const [key] of existingParams) {\n url.searchParams.delete(key);\n }\n\n // Re-add existing non-UTM params first.\n for (const [key, value] of existingParams) {\n if (!key.startsWith('utm_')) {\n url.searchParams.set(key, value);\n }\n }\n\n // Append UTM params in canonical order.\n url.searchParams.set('utm_source', params.source);\n url.searchParams.set('utm_medium', params.medium);\n url.searchParams.set('utm_campaign', params.campaign);\n if (params.term !== undefined) {\n url.searchParams.set('utm_term', params.term);\n }\n if (params.content !== undefined) {\n url.searchParams.set('utm_content', params.content);\n }\n\n if (isRelative) {\n // Strip placeholder origin to return a relative path.\n return url.href.replace(PLACEHOLDER_ORIGIN, '');\n }\n\n return url.href;\n}\n","/* ============================================================================\n URL Classification & UTM Enforcement Logic\n ============================================================================\n Determines whether a URL requires UTM parameters based on its type.\n No imports from validators — avoids circular dependency.\n ============================================================================ */\n\nimport type { UrlClassification } from './types';\n\n// ── Patterns ─────────────────────────────────────────────────────────────────\n\n/** Internal domains — UTMs not required for same-origin navigation. */\nconst INTERNAL_PATTERNS = [\n /^\\/(?!\\/)/, // Relative paths\n /^https?:\\/\\/(www\\.)?sales-mind\\.ai/i, // Marketing site\n /^https?:\\/\\/app\\.sales-mind\\.ai/i, // Web app\n /^https?:\\/\\/apps\\.sales-mind\\.ai/i, // Web app (legacy)\n /^https?:\\/\\/meet\\.sales-mind\\.ai/i, // Booking\n /^https?:\\/\\/docs\\.sales-mind\\.ai/i, // Docs\n];\n\n/** System endpoints — never receive UTMs. */\nconst SYSTEM_PATTERNS = [\n /^https?:\\/\\/.*\\/api\\//i, // API endpoints\n /^https?:\\/\\/.*\\/webhook/i, // Webhooks\n /^https?:\\/\\/.*\\/oauth/i, // OAuth callbacks\n /^https?:\\/\\/.*\\/callback/i, // Callbacks\n /^https?:\\/\\/.*\\.supabase\\.(co|com)/i, // Supabase\n /^https?:\\/\\/.*\\.firebaseapp\\.com/i, // Firebase\n /^https?:\\/\\/.*\\.cloudfunctions\\.net/i, // Cloud Functions\n];\n\n/** Static assets — never receive UTMs. */\nconst ASSET_PATTERNS = [\n /\\.(css|js|mjs|map|woff2?|ttf|eot|svg|png|jpe?g|gif|webp|avif|ico|pdf)(\\?.*)?$/i,\n];\n\n/** Conversion destinations — always require UTMs. */\nconst CONVERSION_PATTERNS = [\n /^https?:\\/\\/(www\\.)?calendly\\.com/i,\n /^https?:\\/\\/(checkout\\.)?stripe\\.com/i,\n /^https?:\\/\\/buy\\.stripe\\.com/i,\n /^https?:\\/\\/chromewebstore\\.google\\.com/i,\n /^https?:\\/\\/meet\\.sales-mind\\.ai/i,\n];\n\n/** Protocol-level links — never receive UTMs. */\nconst PROTOCOL_EXEMPT = [\n /^mailto:/i,\n /^tel:/i,\n /^#/,\n /^javascript:/i,\n];\n\n// ── Classification ───────────────────────────────────────────────────────────\n\n/**\n * Classify a URL to determine its type.\n *\n * Classification order (first match wins):\n * 1. Protocol links (mailto, tel, anchor)\n * 2. Static assets\n * 3. System endpoints (API, webhooks, OAuth)\n * 4. Conversion destinations (Calendly, Stripe, Chrome Store)\n * 5. Internal (*.sales-mind.ai)\n * 6. External (everything else)\n */\nexport function classifyUrl(url: string): UrlClassification {\n // Protocol links\n if (PROTOCOL_EXEMPT.some(p => p.test(url))) return 'protocol';\n\n // Static assets\n if (ASSET_PATTERNS.some(p => p.test(url))) return 'asset';\n\n // System endpoints\n if (SYSTEM_PATTERNS.some(p => p.test(url))) return 'system';\n\n // Conversion destinations\n if (CONVERSION_PATTERNS.some(p => p.test(url))) return 'conversion';\n\n // Internal\n if (INTERNAL_PATTERNS.some(p => p.test(url))) return 'internal';\n\n // Everything else is external\n return 'external';\n}\n\n/**\n * Determine whether a URL requires UTM parameters.\n *\n * UTMs are mandatory for:\n * - External third-party destinations\n * - Conversion destinations (Calendly, Stripe, Chrome Web Store)\n *\n * UTMs are NOT required for:\n * - Internal navigation\n * - System endpoints\n * - Static assets\n * - Protocol links\n */\nexport function requiresUtm(url: string): boolean {\n const classification = classifyUrl(url);\n return classification === 'external' || classification === 'conversion';\n}\n\n/**\n * Check if a URL is explicitly exempt from UTM requirements.\n */\nexport function isUtmExempt(url: string): boolean {\n const classification = classifyUrl(url);\n return classification === 'protocol'\n || classification === 'asset'\n || classification === 'system'\n || classification === 'internal';\n}\n","import type { UtmParams } from '../../web/utm/types';\nimport { buildUtmUrl } from '../../web/utm/builders';\nimport { classifyUrl } from '../../web/utm/classifiers';\n\n/**\n * @deprecated Use governed `utmParams` prop on OutboundLink instead.\n * Legacy default source — superseded by governed UTM_SOURCES enum.\n */\nconst LEGACY_UTM_SOURCE = 'salesmind';\n\nconst EXEMPT_PATTERNS = [\n /^https?:\\/\\/(www\\.)?(stripe\\.com|checkout\\.stripe\\.com|paypal\\.com)/i,\n /^https?:\\/\\/(www\\.)?github\\.com\\/login\\/oauth/i,\n];\n\n/**\n * Check if a URL is exempt from UTM tagging.\n * Uses both legacy patterns and governed URL classification.\n */\nexport const isExemptUrl = (urlStr: string): boolean => {\n if (urlStr.startsWith('mailto:') || urlStr.startsWith('tel:')) return true;\n\n // Governed classification: system/protocol/asset URLs are exempt\n const classification = classifyUrl(urlStr);\n if (classification === 'system' || classification === 'protocol' || classification === 'asset') {\n return true;\n }\n\n return EXEMPT_PATTERNS.some(pattern => pattern.test(urlStr));\n};\n\n/**\n * Append governed UTM parameters to a URL using `buildUtmUrl`.\n * Preferred over the legacy `appendUTMs` function.\n */\nexport const appendGovernedUTMs = (\n href: string,\n params: UtmParams,\n preserveExisting = true,\n): string => {\n try {\n const url = new URL(href);\n\n // If preserveExisting and all UTM params are already set, return unchanged\n if (preserveExisting) {\n const hasAll = url.searchParams.has('utm_source')\n && url.searchParams.has('utm_medium')\n && url.searchParams.has('utm_campaign');\n if (hasAll) return href;\n }\n\n return buildUtmUrl(href, params);\n } catch {\n return href;\n }\n};\n\n/**\n * @deprecated Prefer `appendGovernedUTMs` with governed `UtmParams`.\n *\n * Legacy UTM append function. Uses non-governed defaults:\n * - utm_source = 'salesmind' (not in governed enum)\n * - utm_medium = 'outbound_link' (snake_case, not in governed enum)\n *\n * Retained for backward compatibility. Consumers should migrate to\n * the `utmParams` prop on OutboundLink.\n */\nexport const appendUTMs = (\n href: string,\n context: string,\n pageSlug: string,\n options: {\n mediumOverride?: string;\n campaignOverride?: string;\n preserveExisting?: boolean;\n }\n): string => {\n try {\n const url = new URL(href);\n const { mediumOverride = 'outbound_link', campaignOverride, preserveExisting = true } = options;\n\n const utms = {\n utm_source: LEGACY_UTM_SOURCE,\n utm_medium: mediumOverride,\n utm_campaign: campaignOverride || pageSlug,\n utm_content: context,\n };\n\n Object.entries(utms).forEach(([key, value]) => {\n if (value) {\n if (preserveExisting && url.searchParams.has(key)) {\n // Do not override if preserve is true\n return;\n }\n url.searchParams.set(key, value);\n }\n });\n\n return url.toString();\n } catch {\n return href; // Return original if not valid URL (e.g. relative)\n }\n};\n","// =============================================================================\n// INTELLIGENCE SUMMARY\n// Narrative cards presenting personality and engagement advice\n// =============================================================================\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { IntelligenceSummaryProps } from '../types';\nimport {\n IconBrain,\n IconTarget,\n IconThumbsUp,\n IconThumbsDown,\n IconLightbulb,\n IconLock,\n} from './Icons';\n\nexport const IntelligenceSummary: React.FC<IntelligenceSummaryProps> = ({\n data,\n isLocked = false,\n}) => {\n if (isLocked) {\n return (\n <div className=\"ds-lead-intelligence\">\n <div className=\"ds-lead-intelligence__grid\">\n {/* Locked personality card */}\n <div className=\"ds-lead-intelligence__card ds-lead-intelligence__card--locked\">\n <div className=\"ds-lead-intelligence__card-header\">\n <IconBrain size={20} />\n <span className=\"ds-lead-intelligence__card-title\">Personality Analysis</span>\n </div>\n <div className=\"ds-lead-intelligence__locked-content\">\n <div className=\"ds-lead-intelligence__locked-icon\">\n <IconLock size={24} />\n </div>\n <p className=\"ds-lead-intelligence__locked-text\">\n Personality analysis in progress...\n </p>\n <div className=\"ds-lead-intelligence__locked-shimmer\" />\n </div>\n </div>\n\n {/* Locked engagement card */}\n <div className=\"ds-lead-intelligence__card ds-lead-intelligence__card--locked\">\n <div className=\"ds-lead-intelligence__card-header\">\n <IconTarget size={20} />\n <span className=\"ds-lead-intelligence__card-title\">Engagement Strategy</span>\n </div>\n <div className=\"ds-lead-intelligence__locked-content\">\n <div className=\"ds-lead-intelligence__locked-icon\">\n <IconLock size={24} />\n </div>\n <p className=\"ds-lead-intelligence__locked-text\">\n Building engagement recommendations...\n </p>\n <div className=\"ds-lead-intelligence__locked-shimmer\" />\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // If no intelligence data, return nothing\n if (!data.personalitySummary && !data.engagementTips?.length) {\n return null;\n }\n\n return (\n <div className=\"ds-lead-intelligence\">\n <div className=\"ds-lead-intelligence__grid\">\n {/* Personality Narrative Card */}\n {data.personalitySummary && (\n <div className=\"ds-lead-intelligence__card ds-lead-intelligence__card--personality\">\n <div className=\"ds-lead-intelligence__card-header\">\n <IconBrain size={20} />\n <span className=\"ds-lead-intelligence__card-title\">Personality Analysis</span>\n </div>\n <p className=\"ds-lead-intelligence__narrative\">{data.personalitySummary}</p>\n {data.mbtiType && (\n <div className=\"ds-lead-intelligence__mbti-badge\">\n <span className=\"ds-lead-intelligence__mbti-type\">{data.mbtiType}</span>\n <span className=\"ds-lead-intelligence__mbti-label\">Personality Type</span>\n </div>\n )}\n </div>\n )}\n\n {/* Engagement Tips Card */}\n {data.engagementTips && data.engagementTips.length > 0 && (\n <div className=\"ds-lead-intelligence__card ds-lead-intelligence__card--engagement\">\n <div className=\"ds-lead-intelligence__card-header\">\n <IconTarget size={20} />\n <span className=\"ds-lead-intelligence__card-title\">How to Engage</span>\n </div>\n <div className=\"ds-lead-intelligence__tips\">\n {data.engagementTips.map((tip, index) => (\n <div\n key={index}\n className={clsx(\n 'ds-lead-intelligence__tip',\n `ds-lead-intelligence__tip--${tip.type}`,\n )}\n >\n <div className=\"ds-lead-intelligence__tip-icon\">\n {tip.type === 'do' && <IconThumbsUp size={14} />}\n {tip.type === 'dont' && <IconThumbsDown size={14} />}\n {tip.type === 'insight' && <IconLightbulb size={14} />}\n </div>\n <div className=\"ds-lead-intelligence__tip-content\">\n <span className=\"ds-lead-intelligence__tip-text\">{tip.text}</span>\n {tip.detail && (\n <span className=\"ds-lead-intelligence__tip-detail\">{tip.detail}</span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n","// =============================================================================\n// MBTI SPECTRUM\n// Polished dimension sliders with semantic colors and tooltips\n// =============================================================================\n\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport { MBTISpectrumProps } from '../types';\nimport { IconLock, IconInfo } from './Icons';\n\n// Tooltip explanations for each dimension\nconst DIMENSION_TOOLTIPS: Record<string, { left: string; right: string; description: string }> = {\n energy: {\n left: 'Gains energy from social interaction and external activities',\n right: 'Recharges through solitude and internal reflection',\n description: 'Where you direct and receive energy',\n },\n mind: {\n left: 'Focuses on patterns, possibilities, and abstract thinking',\n right: 'Prefers concrete facts, details, and practical approaches',\n description: 'How you process information',\n },\n nature: {\n left: 'Prioritizes logic, consistency, and objective analysis',\n right: 'Values harmony, empathy, and personal considerations',\n description: 'How you make decisions',\n },\n tactics: {\n left: 'Prefers structure, planning, and decisive action',\n right: 'Favors flexibility, spontaneity, and keeping options open',\n description: 'How you organize your life',\n },\n};\n\nexport const MBTISpectrum: React.FC<MBTISpectrumProps> = ({\n scores,\n mbtiType,\n isLocked = false,\n}) => {\n const [hoveredDimension, setHoveredDimension] = useState<string | null>(null);\n\n if (isLocked) {\n return (\n <div className=\"ds-mbti ds-mbti--locked\">\n <div className=\"ds-mbti__header\">\n <h3 className=\"ds-mbti__title\">MBTI Personality Dimensions</h3>\n <div className=\"ds-mbti__locked-badge\">\n <IconLock size={14} />\n <span>Analysis in progress</span>\n </div>\n </div>\n <div className=\"ds-mbti__locked-content\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"ds-mbti__row ds-mbti__row--locked\">\n <span className=\"ds-mbti__label ds-mbti__label--skeleton\" />\n <div className=\"ds-mbti__track ds-mbti__track--skeleton\">\n <div className=\"ds-mbti__skeleton-shimmer\" />\n </div>\n <span className=\"ds-mbti__label ds-mbti__label--skeleton\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"ds-mbti\">\n <div className=\"ds-mbti__header\">\n <h3 className=\"ds-mbti__title\">Personality Dimensions</h3>\n {mbtiType && <span className=\"ds-mbti__type-badge\">{mbtiType}</span>}\n </div>\n\n <div className=\"ds-mbti__dimensions\">\n {scores.map((score) => {\n const tooltip = DIMENSION_TOOLTIPS[score.dimension];\n const isHovered = hoveredDimension === score.dimension;\n const dominantSide = score.value < 50 ? 'left' : 'right';\n const intensity = Math.abs(score.value - 50);\n\n return (\n <div\n key={score.dimension}\n className={clsx(\n 'ds-mbti__row',\n `ds-mbti__row--${score.color}`,\n isHovered && 'ds-mbti__row--hovered',\n )}\n onMouseEnter={() => setHoveredDimension(score.dimension)}\n onMouseLeave={() => setHoveredDimension(null)}\n >\n {/* Left label */}\n <div\n className={clsx(\n 'ds-mbti__label',\n 'ds-mbti__label--left',\n dominantSide === 'left' && 'ds-mbti__label--active',\n )}\n >\n <span className=\"ds-mbti__label-text\">{score.leftLabel}</span>\n {dominantSide === 'left' && (\n <span className=\"ds-mbti__label-strength\">\n {intensity > 30 ? 'Strong' : intensity > 15 ? 'Moderate' : 'Slight'}\n </span>\n )}\n </div>\n\n {/* Track */}\n <div className=\"ds-mbti__track-container\">\n <div className={clsx('ds-mbti__track', `ds-mbti__track--${score.color}`)}>\n {/* Center marker */}\n <div className=\"ds-mbti__track-center\" />\n\n {/* Fill gradient */}\n <div\n className=\"ds-mbti__track-fill\"\n style={{\n left: score.value < 50 ? `${score.value}%` : '50%',\n width: `${Math.abs(score.value - 50)}%`,\n }}\n />\n\n {/* Thumb */}\n <div className=\"ds-mbti__thumb\" style={{ left: `${score.value}%` }}>\n <div className=\"ds-mbti__thumb-glow\" />\n </div>\n </div>\n\n {/* Dimension label */}\n <span className=\"ds-mbti__dimension-label\">{score.label}</span>\n </div>\n\n {/* Right label */}\n <div\n className={clsx(\n 'ds-mbti__label',\n 'ds-mbti__label--right',\n dominantSide === 'right' && 'ds-mbti__label--active',\n )}\n >\n <span className=\"ds-mbti__label-text\">{score.rightLabel}</span>\n {dominantSide === 'right' && (\n <span className=\"ds-mbti__label-strength\">\n {intensity > 30 ? 'Strong' : intensity > 15 ? 'Moderate' : 'Slight'}\n </span>\n )}\n </div>\n\n {/* Info button */}\n <button\n className=\"ds-mbti__info-button\"\n aria-label={`Learn more about ${score.label}`}\n >\n <IconInfo size={14} />\n </button>\n\n {/* Tooltip */}\n {isHovered && tooltip && (\n <div className=\"ds-mbti__tooltip\">\n <p className=\"ds-mbti__tooltip-description\">{tooltip.description}</p>\n <div className=\"ds-mbti__tooltip-traits\">\n <div className=\"ds-mbti__tooltip-trait\">\n <strong>{score.leftLabel}:</strong> {tooltip.left}\n </div>\n <div className=\"ds-mbti__tooltip-trait\">\n <strong>{score.rightLabel}:</strong> {tooltip.right}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","// =============================================================================\n// BEHAVIORAL HIGHLIGHTS\n// Visual indicators for communication and decision-making patterns\n// =============================================================================\n\nimport React from 'react';\nimport clsx from 'clsx';\nimport { BehavioralHighlightsProps } from '../types';\nimport { IconMessageCircle, IconZap, IconTrendingUp, IconLock } from './Icons';\n\nconst COMMUNICATION_LABELS = {\n visual: { label: 'Visual', description: 'Prefers diagrams, charts, and visual presentations' },\n verbal: { label: 'Verbal', description: 'Responds best to conversations and discussions' },\n analytical: { label: 'Analytical', description: 'Values data, logic, and detailed analysis' },\n written: { label: 'Written', description: 'Prefers documented, well-structured communication' },\n};\n\nconst DECISION_LABELS = {\n fast: { label: 'Fast Decider', description: 'Makes quick decisions with available information' },\n deliberate: { label: 'Deliberate', description: 'Takes time to weigh all options carefully' },\n consensus: { label: 'Consensus Builder', description: 'Seeks input from others before deciding' },\n 'data-driven': {\n label: 'Data-Driven',\n description: 'Requires strong evidence to make decisions',\n },\n};\n\nexport const BehavioralHighlights: React.FC<BehavioralHighlightsProps> = ({\n signals,\n isLocked = false,\n}) => {\n if (isLocked) {\n return (\n <div className=\"ds-behavioral ds-behavioral--locked\">\n <div className=\"ds-behavioral__header\">\n <h3 className=\"ds-behavioral__title\">Behavioral Signals</h3>\n <div className=\"ds-behavioral__locked-badge\">\n <IconLock size={14} />\n <span>Analyzing patterns...</span>\n </div>\n </div>\n <div className=\"ds-behavioral__grid\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"ds-behavioral__item ds-behavioral__item--skeleton\">\n <div className=\"ds-behavioral__item-shimmer\" />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n const hasAnySignal =\n signals.communicationStyle || signals.decisionStyle || signals.riskTolerance !== undefined;\n\n if (!hasAnySignal) {\n return null;\n }\n\n return (\n <div className=\"ds-behavioral\">\n <div className=\"ds-behavioral__header\">\n <h3 className=\"ds-behavioral__title\">Behavioral Signals</h3>\n </div>\n\n <div className=\"ds-behavioral__grid\">\n {/* Communication Style */}\n {signals.communicationStyle && (\n <div className=\"ds-behavioral__item\">\n <div className=\"ds-behavioral__item-icon\">\n <IconMessageCircle size={18} />\n </div>\n <div className=\"ds-behavioral__item-content\">\n <span className=\"ds-behavioral__item-label\">Communication Style</span>\n <span className=\"ds-behavioral__item-value\">\n {COMMUNICATION_LABELS[signals.communicationStyle].label}\n </span>\n <span className=\"ds-behavioral__item-description\">\n {COMMUNICATION_LABELS[signals.communicationStyle].description}\n </span>\n </div>\n </div>\n )}\n\n {/* Decision Style */}\n {signals.decisionStyle && (\n <div className=\"ds-behavioral__item\">\n <div className=\"ds-behavioral__item-icon\">\n <IconZap size={18} />\n </div>\n <div className=\"ds-behavioral__item-content\">\n <span className=\"ds-behavioral__item-label\">Decision Making</span>\n <span className=\"ds-behavioral__item-value\">\n {DECISION_LABELS[signals.decisionStyle].label}\n </span>\n <span className=\"ds-behavioral__item-description\">\n {DECISION_LABELS[signals.decisionStyle].description}\n </span>\n </div>\n </div>\n )}\n\n {/* Risk Tolerance */}\n {signals.riskTolerance !== undefined && (\n <div className=\"ds-behavioral__item\">\n <div className=\"ds-behavioral__item-icon\">\n <IconTrendingUp size={18} />\n </div>\n <div className=\"ds-behavioral__item-content\">\n <span className=\"ds-behavioral__item-label\">Risk Tolerance</span>\n <div className=\"ds-behavioral__risk-meter\">\n <div className=\"ds-behavioral__risk-track\">\n <div\n className={clsx(\n 'ds-behavioral__risk-fill',\n signals.riskTolerance < 33 && 'ds-behavioral__risk-fill--low',\n signals.riskTolerance >= 33 &&\n signals.riskTolerance < 66 &&\n 'ds-behavioral__risk-fill--medium',\n signals.riskTolerance >= 66 && 'ds-behavioral__risk-fill--high',\n )}\n style={{ width: `${signals.riskTolerance}%` }}\n />\n </div>\n <span className=\"ds-behavioral__risk-label\">\n {signals.riskTolerance < 33 && 'Conservative'}\n {signals.riskTolerance >= 33 && signals.riskTolerance < 66 && 'Balanced'}\n {signals.riskTolerance >= 66 && 'Risk-Tolerant'}\n </span>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n","// =============================================================================\n// DEEP DIVE SECTION\n// Expandable sections for detailed background information\n// =============================================================================\n\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport { DeepDiveSectionProps } from '../types';\nimport {\n IconChevronDown,\n IconChevronUp,\n IconSchool,\n IconBriefcase,\n IconTrendingUp,\n IconAlertTriangle,\n} from './Icons';\n\nexport const DeepDiveSection: React.FC<DeepDiveSectionProps> = ({\n data,\n defaultExpanded = false,\n}) => {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n\n const hasContent =\n data.education?.length ||\n data.experience?.length ||\n data.strengths?.length ||\n data.risks?.length ||\n data.careerInsights;\n\n if (!hasContent) {\n return null;\n }\n\n return (\n <div className={clsx('ds-deep-dive', isExpanded && 'ds-deep-dive--expanded')}>\n {/* Trigger */}\n <button\n className=\"ds-deep-dive__trigger\"\n onClick={() => setIsExpanded(!isExpanded)}\n aria-expanded={isExpanded}\n aria-controls=\"deep-dive-content\"\n >\n <span className=\"ds-deep-dive__trigger-text\">Deep Dive & Background</span>\n <span className=\"ds-deep-dive__trigger-icon\">\n {isExpanded ? <IconChevronUp size={16} /> : <IconChevronDown size={16} />}\n </span>\n </button>\n\n {/* Content */}\n {isExpanded && (\n <div id=\"deep-dive-content\" className=\"ds-deep-dive__content\">\n <div className=\"ds-deep-dive__grid\">\n {/* Strengths & Risks */}\n {(data.strengths?.length || data.risks?.length) && (\n <div className=\"ds-deep-dive__card ds-deep-dive__card--insights\">\n {data.strengths && data.strengths.length > 0 && (\n <div className=\"ds-deep-dive__section\">\n <div className=\"ds-deep-dive__section-header ds-deep-dive__section-header--success\">\n <IconTrendingUp size={16} />\n <h4 className=\"ds-deep-dive__section-title\">Key Strengths</h4>\n </div>\n <ul className=\"ds-deep-dive__list\">\n {data.strengths.map((strength, idx) => (\n <li key={idx} className=\"ds-deep-dive__list-item\">\n {strength}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {data.risks && data.risks.length > 0 && (\n <div className=\"ds-deep-dive__section\">\n <div className=\"ds-deep-dive__section-header ds-deep-dive__section-header--warning\">\n <IconAlertTriangle size={16} />\n <h4 className=\"ds-deep-dive__section-title\">Watch Out For</h4>\n </div>\n <ul className=\"ds-deep-dive__list\">\n {data.risks.map((risk, idx) => (\n <li key={idx} className=\"ds-deep-dive__list-item\">\n {risk}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )}\n\n {/* Education */}\n {data.education && data.education.length > 0 && (\n <div className=\"ds-deep-dive__card\">\n <div className=\"ds-deep-dive__section-header\">\n <IconSchool size={16} />\n <h4 className=\"ds-deep-dive__section-title\">Education</h4>\n </div>\n <div className=\"ds-deep-dive__timeline\">\n {data.education.map((edu, idx) => (\n <div key={idx} className=\"ds-deep-dive__timeline-item\">\n {edu.logo ? (\n <img\n src={edu.logo}\n alt={edu.school}\n className=\"ds-deep-dive__timeline-logo\"\n />\n ) : (\n <div className=\"ds-deep-dive__timeline-icon\">\n <IconSchool size={16} />\n </div>\n )}\n <div className=\"ds-deep-dive__timeline-content\">\n <h5 className=\"ds-deep-dive__timeline-title\">{edu.school}</h5>\n <p className=\"ds-deep-dive__timeline-subtitle\">\n {edu.degree}\n {edu.field && ` in ${edu.field}`}\n </p>\n <span className=\"ds-deep-dive__timeline-date\">{edu.year}</span>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Experience */}\n {data.experience && data.experience.length > 0 && (\n <div className=\"ds-deep-dive__card\">\n <div className=\"ds-deep-dive__section-header\">\n <IconBriefcase size={16} />\n <h4 className=\"ds-deep-dive__section-title\">Experience</h4>\n </div>\n <div className=\"ds-deep-dive__timeline\">\n {data.experience.map((exp, idx) => (\n <div\n key={idx}\n className={clsx(\n 'ds-deep-dive__timeline-item',\n exp.current && 'ds-deep-dive__timeline-item--current',\n )}\n >\n {exp.logo ? (\n <img\n src={exp.logo}\n alt={exp.company}\n className=\"ds-deep-dive__timeline-logo\"\n />\n ) : (\n <div className=\"ds-deep-dive__timeline-icon\">\n <IconBriefcase size={16} />\n </div>\n )}\n <div className=\"ds-deep-dive__timeline-content\">\n <h5 className=\"ds-deep-dive__timeline-title\">{exp.role}</h5>\n <p className=\"ds-deep-dive__timeline-subtitle\">{exp.company}</p>\n <span className=\"ds-deep-dive__timeline-date\">\n {exp.duration}\n {exp.current && (\n <span className=\"ds-deep-dive__current-badge\">Current</span>\n )}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Career Insights */}\n {data.careerInsights && (\n <div className=\"ds-deep-dive__card ds-deep-dive__card--wide\">\n <div className=\"ds-deep-dive__section-header\">\n <IconTrendingUp size={16} />\n <h4 className=\"ds-deep-dive__section-title\">Career Trajectory</h4>\n </div>\n <p className=\"ds-deep-dive__narrative\">{data.careerInsights}</p>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}