@octaviaflow/core 3.1.0-beta.65 → 3.1.0-beta.68

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 (145) hide show
  1. package/dist/chunk-5AKA6EJB.js +3003 -0
  2. package/dist/chunk-5AKA6EJB.js.map +1 -0
  3. package/dist/chunk-JMSZOWT2.js +2616 -0
  4. package/dist/chunk-JMSZOWT2.js.map +1 -0
  5. package/dist/chunk-KZP2MNBO.js +2516 -0
  6. package/dist/chunk-KZP2MNBO.js.map +1 -0
  7. package/dist/chunk-S4LE4BFQ.js +5934 -0
  8. package/dist/chunk-S4LE4BFQ.js.map +1 -0
  9. package/dist/chunk-X7YETDK7.js +107 -0
  10. package/dist/chunk-X7YETDK7.js.map +1 -0
  11. package/dist/components/AgentCard/AgentCard.d.ts +5 -0
  12. package/dist/components/AgentCard/AgentCard.d.ts.map +1 -1
  13. package/dist/components/Catalog/Catalog.d.ts +116 -0
  14. package/dist/components/Catalog/Catalog.d.ts.map +1 -0
  15. package/dist/components/Catalog/index.d.ts +2 -0
  16. package/dist/components/Catalog/index.d.ts.map +1 -0
  17. package/dist/components/ExecutionConsole/ExecutionConsole.d.ts.map +1 -1
  18. package/dist/components/FlowMinimap/FlowMinimap.d.ts.map +1 -1
  19. package/dist/components/FlowToolbar/FlowToolbar.d.ts +27 -0
  20. package/dist/components/FlowToolbar/FlowToolbar.d.ts.map +1 -1
  21. package/dist/components/FlowToolbar/index.d.ts +1 -1
  22. package/dist/components/FlowToolbar/index.d.ts.map +1 -1
  23. package/dist/components/ItemDetail/ItemDetail.d.ts +57 -0
  24. package/dist/components/ItemDetail/ItemDetail.d.ts.map +1 -0
  25. package/dist/components/ItemDetail/index.d.ts +2 -0
  26. package/dist/components/ItemDetail/index.d.ts.map +1 -0
  27. package/dist/components/MessageBlockBuilder/BlockFieldsEditor.d.ts +18 -0
  28. package/dist/components/MessageBlockBuilder/BlockFieldsEditor.d.ts.map +1 -0
  29. package/dist/components/MessageBlockBuilder/MessageBlockBuilder.d.ts +6 -0
  30. package/dist/components/MessageBlockBuilder/MessageBlockBuilder.d.ts.map +1 -0
  31. package/dist/components/MessageBlockBuilder/MessagePreview.d.ts +9 -0
  32. package/dist/components/MessageBlockBuilder/MessagePreview.d.ts.map +1 -0
  33. package/dist/components/MessageBlockBuilder/TokenPanel.d.ts +17 -0
  34. package/dist/components/MessageBlockBuilder/TokenPanel.d.ts.map +1 -0
  35. package/dist/components/MessageBlockBuilder/glyphs.d.ts +18 -0
  36. package/dist/components/MessageBlockBuilder/glyphs.d.ts.map +1 -0
  37. package/dist/components/MessageBlockBuilder/index.d.ts +4 -0
  38. package/dist/components/MessageBlockBuilder/index.d.ts.map +1 -0
  39. package/dist/components/MessageBlockBuilder/internal.d.ts +33 -0
  40. package/dist/components/MessageBlockBuilder/internal.d.ts.map +1 -0
  41. package/dist/components/MessageBlockBuilder/platforms/googleChat.d.ts +7 -0
  42. package/dist/components/MessageBlockBuilder/platforms/googleChat.d.ts.map +1 -0
  43. package/dist/components/MessageBlockBuilder/platforms/index.d.ts +7 -0
  44. package/dist/components/MessageBlockBuilder/platforms/index.d.ts.map +1 -0
  45. package/dist/components/MessageBlockBuilder/platforms/slack.d.ts +7 -0
  46. package/dist/components/MessageBlockBuilder/platforms/slack.d.ts.map +1 -0
  47. package/dist/components/MessageBlockBuilder/platforms/teams.d.ts +7 -0
  48. package/dist/components/MessageBlockBuilder/platforms/teams.d.ts.map +1 -0
  49. package/dist/components/MessageBlockBuilder/types.d.ts +183 -0
  50. package/dist/components/MessageBlockBuilder/types.d.ts.map +1 -0
  51. package/dist/components/PlanCard/PlanCard.d.ts +35 -0
  52. package/dist/components/PlanCard/PlanCard.d.ts.map +1 -0
  53. package/dist/components/PlanCard/index.d.ts +2 -0
  54. package/dist/components/PlanCard/index.d.ts.map +1 -0
  55. package/dist/components/PlanPicker/PlanPicker.d.ts +16 -0
  56. package/dist/components/PlanPicker/PlanPicker.d.ts.map +1 -0
  57. package/dist/components/PlanPicker/context.d.ts +8 -0
  58. package/dist/components/PlanPicker/context.d.ts.map +1 -0
  59. package/dist/components/PlanPicker/index.d.ts +2 -0
  60. package/dist/components/PlanPicker/index.d.ts.map +1 -0
  61. package/dist/components/PricingCard/index.d.ts +1 -1
  62. package/dist/components/PricingCard/index.d.ts.map +1 -1
  63. package/dist/components/TemplateCard/TemplateCard.d.ts +27 -0
  64. package/dist/components/TemplateCard/TemplateCard.d.ts.map +1 -1
  65. package/dist/components/UsageMeter/UsageMeter.d.ts +41 -0
  66. package/dist/components/UsageMeter/UsageMeter.d.ts.map +1 -0
  67. package/dist/components/UsageMeter/index.d.ts +2 -0
  68. package/dist/components/UsageMeter/index.d.ts.map +1 -0
  69. package/dist/components/WorkflowShowcase/ShowcaseScene.d.ts +20 -0
  70. package/dist/components/WorkflowShowcase/ShowcaseScene.d.ts.map +1 -0
  71. package/dist/components/WorkflowShowcase/ShowcaseSignup.d.ts +14 -0
  72. package/dist/components/WorkflowShowcase/ShowcaseSignup.d.ts.map +1 -0
  73. package/dist/components/WorkflowShowcase/WorkflowShowcase.d.ts +48 -0
  74. package/dist/components/WorkflowShowcase/WorkflowShowcase.d.ts.map +1 -0
  75. package/dist/components/WorkflowShowcase/index.d.ts +3 -0
  76. package/dist/components/WorkflowShowcase/index.d.ts.map +1 -0
  77. package/dist/components/WorkflowShowcase/showcaseEngine.d.ts +102 -0
  78. package/dist/components/WorkflowShowcase/showcaseEngine.d.ts.map +1 -0
  79. package/dist/index.cjs +16261 -11888
  80. package/dist/index.cjs.map +1 -1
  81. package/dist/index.d.ts +8 -2
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +19366 -20520
  84. package/dist/index.js.map +1 -1
  85. package/dist/marketing/components/AssistantTranscript/AssistantTranscript.d.ts +15 -0
  86. package/dist/marketing/components/AssistantTranscript/AssistantTranscript.d.ts.map +1 -0
  87. package/dist/marketing/components/CtaBanner/CtaBanner.d.ts +16 -0
  88. package/dist/marketing/components/CtaBanner/CtaBanner.d.ts.map +1 -0
  89. package/dist/marketing/components/FeatureGrid/FeatureGrid.d.ts +15 -0
  90. package/dist/marketing/components/FeatureGrid/FeatureGrid.d.ts.map +1 -0
  91. package/dist/marketing/components/IntegrationsWall/IntegrationsWall.d.ts +19 -0
  92. package/dist/marketing/components/IntegrationsWall/IntegrationsWall.d.ts.map +1 -0
  93. package/dist/marketing/components/LiveConsole/LiveConsole.d.ts +21 -0
  94. package/dist/marketing/components/LiveConsole/LiveConsole.d.ts.map +1 -0
  95. package/dist/marketing/components/MarketingFooter/MarketingFooter.d.ts +25 -0
  96. package/dist/marketing/components/MarketingFooter/MarketingFooter.d.ts.map +1 -0
  97. package/dist/marketing/components/MarketingHero/MarketingHero.d.ts +11 -0
  98. package/dist/marketing/components/MarketingHero/MarketingHero.d.ts.map +1 -0
  99. package/dist/marketing/components/MarketingNav/MarketingNav.d.ts +17 -0
  100. package/dist/marketing/components/MarketingNav/MarketingNav.d.ts.map +1 -0
  101. package/dist/marketing/components/MarketingSection/MarketingSection.d.ts +15 -0
  102. package/dist/marketing/components/MarketingSection/MarketingSection.d.ts.map +1 -0
  103. package/dist/marketing/components/StatBand/StatBand.d.ts +16 -0
  104. package/dist/marketing/components/StatBand/StatBand.d.ts.map +1 -0
  105. package/dist/marketing/components/WorkflowShowcase/ShowcaseScene.d.ts +20 -0
  106. package/dist/marketing/components/WorkflowShowcase/ShowcaseScene.d.ts.map +1 -0
  107. package/dist/marketing/components/WorkflowShowcase/ShowcaseSignup.d.ts +14 -0
  108. package/dist/marketing/components/WorkflowShowcase/ShowcaseSignup.d.ts.map +1 -0
  109. package/dist/marketing/components/WorkflowShowcase/WorkflowShowcase.d.ts +48 -0
  110. package/dist/marketing/components/WorkflowShowcase/WorkflowShowcase.d.ts.map +1 -0
  111. package/dist/marketing/components/WorkflowShowcase/index.d.ts +3 -0
  112. package/dist/marketing/components/WorkflowShowcase/index.d.ts.map +1 -0
  113. package/dist/marketing/components/WorkflowShowcase/showcaseEngine.d.ts +102 -0
  114. package/dist/marketing/components/WorkflowShowcase/showcaseEngine.d.ts.map +1 -0
  115. package/dist/marketing/glyphs.d.ts +20 -0
  116. package/dist/marketing/glyphs.d.ts.map +1 -0
  117. package/dist/marketing/index.d.ts +13 -0
  118. package/dist/marketing/index.d.ts.map +1 -0
  119. package/dist/marketing.cjs +3985 -0
  120. package/dist/marketing.cjs.map +1 -0
  121. package/dist/marketing.js +1669 -0
  122. package/dist/marketing.js.map +1 -0
  123. package/dist/styles.css +1 -1
  124. package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts +3 -3
  125. package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts.map +1 -1
  126. package/dist/workflow/components/FlowNode/FlowNode.d.ts.map +1 -1
  127. package/dist/workflow/components/Handle/Handle.d.ts.map +1 -1
  128. package/dist/workflow/components/HttpActionPanel/HttpActionPanel.d.ts +29 -0
  129. package/dist/workflow/components/HttpActionPanel/HttpActionPanel.d.ts.map +1 -0
  130. package/dist/workflow/components/HttpActionPanel/httpActionTypes.d.ts +135 -0
  131. package/dist/workflow/components/HttpActionPanel/httpActionTypes.d.ts.map +1 -0
  132. package/dist/workflow/components/NodeResizer/NodeResizer.d.ts.map +1 -1
  133. package/dist/workflow/index.d.ts +2 -0
  134. package/dist/workflow/index.d.ts.map +1 -1
  135. package/dist/workflow/layout/dagre.d.ts.map +1 -1
  136. package/dist/workflow/layout/elk.d.ts.map +1 -1
  137. package/dist/workflow/layout/types.d.ts +1 -1
  138. package/dist/workflow/layout/types.d.ts.map +1 -1
  139. package/dist/workflow/utils/parenting.d.ts +26 -6
  140. package/dist/workflow/utils/parenting.d.ts.map +1 -1
  141. package/dist/workflow.cjs +7118 -411
  142. package/dist/workflow.cjs.map +1 -1
  143. package/dist/workflow.js +1598 -68
  144. package/dist/workflow.js.map +1 -1
  145. package/package.json +6 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marketing/components/AssistantTranscript/AssistantTranscript.tsx","../src/marketing/components/CtaBanner/CtaBanner.tsx","../src/marketing/components/FeatureGrid/FeatureGrid.tsx","../src/marketing/glyphs.tsx","../src/marketing/components/IntegrationsWall/IntegrationsWall.tsx","../src/marketing/components/LiveConsole/LiveConsole.tsx","../src/marketing/components/MarketingFooter/MarketingFooter.tsx","../src/marketing/components/MarketingHero/MarketingHero.tsx","../src/marketing/components/MarketingNav/MarketingNav.tsx","../src/marketing/components/MarketingSection/MarketingSection.tsx","../src/marketing/components/StatBand/StatBand.tsx","../src/marketing/components/WorkflowShowcase/showcaseEngine.ts","../src/marketing/components/WorkflowShowcase/WorkflowShowcase.tsx","../src/marketing/components/WorkflowShowcase/ShowcaseScene.tsx","../src/marketing/components/WorkflowShowcase/ShowcaseSignup.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * AssistantTranscript — a compact \"you → / octavia →\" exchange card showing\n * the natural-language-to-workflow moment in one glance.\n * ------------------------------------------------------------------------- */\n\nexport interface AssistantTranscriptTurn {\n id: string;\n speaker: \"user\" | \"assistant\";\n content: ReactNode;\n}\n\nexport interface AssistantTranscriptProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> {\n /** Header label. Defaults to \"OctaviaFlow AI Assistant\". */\n title?: ReactNode;\n turns: AssistantTranscriptTurn[];\n userLabel?: string;\n assistantLabel?: string;\n}\n\nexport function AssistantTranscript({\n title = \"OctaviaFlow AI Assistant\",\n turns,\n userLabel = \"you\",\n assistantLabel = \"octavia\",\n className,\n ...rest\n}: AssistantTranscriptProps) {\n return (\n <div {...rest} className={cn(\"ods-mkt-transcript\", className)}>\n <div className=\"ods-mkt-transcript__head\">{title}</div>\n <div className=\"ods-mkt-transcript__body\">\n {turns.map((turn) => (\n <div key={turn.id} className=\"ods-mkt-transcript__turn\">\n <span\n className={cn(\n \"ods-mkt-transcript__speaker\",\n `ods-mkt-transcript__speaker--${turn.speaker}`,\n )}\n >\n {turn.speaker === \"user\" ? userLabel : assistantLabel} →\n </span>{\" \"}\n <span className=\"ods-mkt-transcript__content\">{turn.content}</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * CtaBanner — the closing conversion band: display headline, lede, primary +\n * secondary calls to action, mono footnote.\n * ------------------------------------------------------------------------- */\n\nexport interface CtaBannerAction {\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface CtaBannerProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"title\"> {\n title: ReactNode;\n lede?: ReactNode;\n primary: CtaBannerAction;\n secondary?: CtaBannerAction;\n /** Mono microcopy under the actions, e.g. beta-review cadence. */\n footnote?: ReactNode;\n}\n\nfunction Action({\n action,\n variant,\n}: {\n action: CtaBannerAction;\n variant: \"primary\" | \"secondary\";\n}) {\n if (action.href) {\n return (\n <a\n className={cn(\"ods-mkt-cta__link\", `ods-mkt-cta__link--${variant}`)}\n href={action.href}\n onClick={action.onClick}\n >\n {action.label}\n </a>\n );\n }\n return (\n <Button variant={variant} onClick={action.onClick}>\n {action.label}\n </Button>\n );\n}\n\nexport function CtaBanner({\n title,\n lede,\n primary,\n secondary,\n footnote,\n className,\n ...rest\n}: CtaBannerProps) {\n return (\n <section {...rest} className={cn(\"ods-mkt-cta\", className)}>\n <h2 className=\"ods-mkt-cta__title\">{title}</h2>\n {lede && <p className=\"ods-mkt-cta__lede\">{lede}</p>}\n <div className=\"ods-mkt-cta__actions\">\n <Action action={primary} variant=\"primary\" />\n {secondary && <Action action={secondary} variant=\"secondary\" />}\n </div>\n {footnote && <p className=\"ods-mkt-cta__footnote\">{footnote}</p>}\n </section>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * FeatureGrid — hairline-bordered capability grid (the \"Everything you need\"\n * and AI-capability sections). Cells share borders like a table of features.\n * ------------------------------------------------------------------------- */\n\nexport interface FeatureGridItem {\n id: string;\n title: ReactNode;\n body: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface FeatureGridProps extends ComponentPropsWithoutRef<\"div\"> {\n items: FeatureGridItem[];\n columns?: 2 | 3 | 4;\n /** Tighter cells for dense capability lists. */\n dense?: boolean;\n}\n\nexport function FeatureGrid({\n items,\n columns = 3,\n dense = false,\n className,\n ...rest\n}: FeatureGridProps) {\n return (\n <div\n {...rest}\n className={cn(\n \"ods-mkt-features\",\n `ods-mkt-features--${columns}`,\n dense && \"ods-mkt-features--dense\",\n className,\n )}\n >\n {items.map((item) => (\n <article key={item.id} className=\"ods-mkt-features__cell\">\n {item.icon && (\n <span className=\"ods-mkt-features__icon\" aria-hidden=\"true\">\n {item.icon}\n </span>\n )}\n <h3 className=\"ods-mkt-features__title\">{item.title}</h3>\n <p className=\"ods-mkt-features__body\">{item.body}</p>\n </article>\n ))}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\nimport type { WorkflowShowcaseRole } from \"./components/WorkflowShowcase/showcaseEngine\";\n\n/* ---------------------------------------------------------------------------\n * Marketing glyphs — small stroke icons used as default \"app icon\" tiles\n * across the marketing subsystem (showcase cubes/chips, integration walls).\n *\n * Kept lucide-compatible (24×24 viewBox, stroke-based, currentColor) for\n * visual harmony with the rest of the design system. Consumers pass real\n * brand icons via each component's `icon` slot; these are the neutral\n * fallbacks so nothing ever renders as a bare letter pair.\n * ------------------------------------------------------------------------- */\n\ninterface GlyphProps {\n size?: number;\n}\n\nconst base = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n};\n\n/** Database cylinder — data sources. */\nexport function SourceGlyph({ size = 12 }: GlyphProps) {\n return (\n <svg {...base} width={size} height={size} aria-hidden=\"true\">\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v14a9 3 0 0 0 18 0V5\" />\n <path d=\"M3 12a9 3 0 0 0 18 0\" />\n </svg>\n );\n}\n\n/** Archive box — warehouses / destinations. */\nexport function DestinationGlyph({ size = 12 }: GlyphProps) {\n return (\n <svg {...base} width={size} height={size} aria-hidden=\"true\">\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"5\" rx=\"1\" />\n <path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\" />\n <path d=\"M10 12h4\" />\n </svg>\n );\n}\n\n/** Bolt — downstream actions / triggers. */\nexport function ActionGlyph({ size = 12 }: GlyphProps) {\n return (\n <svg {...base} width={size} height={size} aria-hidden=\"true\">\n <path d=\"M13 2 3 14h9l-1 8 10-12h-9l1-8z\" />\n </svg>\n );\n}\n\n/** Chat bubble — notification targets. */\nexport function NotifyGlyph({ size = 12 }: GlyphProps) {\n return (\n <svg {...base} width={size} height={size} aria-hidden=\"true\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\n/** Plug — generic integration/connector mark (integration walls). */\nexport function ConnectorGlyph({ size = 12 }: GlyphProps) {\n return (\n <svg {...base} width={size} height={size} aria-hidden=\"true\">\n <path d=\"M12 22v-5\" />\n <path d=\"M9 8V2M15 8V2\" />\n <path d=\"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8h12z\" />\n </svg>\n );\n}\n\n/** OctaviaFlow brand mark — square with a forward arrow. */\nexport function BrandMark({ size = 18 }: GlyphProps) {\n return (\n <svg viewBox=\"0 0 18 18\" width={size} height={size} aria-hidden=\"true\">\n <rect width=\"18\" height=\"18\" fill=\"var(--ods-accent)\" />\n <path d=\"M4 9h8.5M9.5 5.5 13 9l-3.5 3.5\" stroke=\"#fff\" strokeWidth=\"1.6\" fill=\"none\" />\n </svg>\n );\n}\n\nexport function roleGlyph(role: WorkflowShowcaseRole, size = 12): ReactNode {\n switch (role) {\n case \"source\":\n return <SourceGlyph size={size} />;\n case \"destination\":\n return <DestinationGlyph size={size} />;\n case \"action\":\n return <ActionGlyph size={size} />;\n case \"notify\":\n return <NotifyGlyph size={size} />;\n }\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { ConnectorGlyph } from \"../../glyphs\";\n\n/* ---------------------------------------------------------------------------\n * IntegrationsWall — categorized connector chips (\"Databases · Warehouses ·\n * CRM …\"). The consuming site passes real names + brand icons; the default\n * chip mark is a neutral connector glyph.\n * ------------------------------------------------------------------------- */\n\nexport interface IntegrationsWallItem {\n name: string;\n icon?: ReactNode;\n}\n\nexport interface IntegrationsWallCategory {\n id: string;\n label: ReactNode;\n items: IntegrationsWallItem[];\n}\n\nexport interface IntegrationsWallProps extends ComponentPropsWithoutRef<\"div\"> {\n categories: IntegrationsWallCategory[];\n /** Mono footnote under the wall. */\n footnote?: ReactNode;\n /** Hide the default glyph on chips without a custom icon. */\n bareChips?: boolean;\n}\n\nexport function IntegrationsWall({\n categories,\n footnote,\n bareChips = false,\n className,\n ...rest\n}: IntegrationsWallProps) {\n return (\n <div {...rest} className={cn(\"ods-mkt-wall\", className)}>\n <div className=\"ods-mkt-wall__grid\">\n {categories.map((category) => (\n <div key={category.id} className=\"ods-mkt-wall__row\">\n <div className=\"ods-mkt-wall__category\">{category.label}</div>\n <div className=\"ods-mkt-wall__chips\">\n {category.items.map((item) => (\n <span key={item.name} className=\"ods-mkt-wall__chip\">\n {(item.icon || !bareChips) && (\n <span className=\"ods-mkt-wall__chip-icon\" aria-hidden=\"true\">\n {item.icon ?? <ConnectorGlyph size={13} />}\n </span>\n )}\n {item.name}\n </span>\n ))}\n </div>\n </div>\n ))}\n </div>\n {footnote && <p className=\"ods-mkt-wall__footnote\">{footnote}</p>}\n </div>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * LiveConsole — the \"orders_pipeline · production\" terminal card: a mono log\n * of pipeline steps with staggered reveal and per-line state glyphs.\n * ------------------------------------------------------------------------- */\n\nexport type LiveConsoleState = \"done\" | \"running\" | \"queued\" | \"error\";\n\nexport interface LiveConsoleLine {\n id: string;\n /** Step label, e.g. \"warehouse.load\". */\n label: ReactNode;\n /** Trailing detail, e.g. \"— 14,204 rows · 1.2s\". */\n detail?: ReactNode;\n state?: LiveConsoleState;\n}\n\nexport interface LiveConsoleProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> {\n /** Header label, e.g. \"orders_pipeline · production\". */\n title: ReactNode;\n /** Header badge. Defaults to \"LIVE\". Pass null to hide. */\n badge?: ReactNode;\n lines: LiveConsoleLine[];\n /** Staggered line reveal (disabled automatically for reduced motion). */\n animated?: boolean;\n}\n\nconst STATE_GLYPH: Record<LiveConsoleState, string> = {\n done: \"✓\",\n running: \"⟳\",\n queued: \"→\",\n error: \"✕\",\n};\n\nexport function LiveConsole({\n title,\n badge = \"LIVE\",\n lines,\n animated = true,\n className,\n ...rest\n}: LiveConsoleProps) {\n return (\n <div {...rest} className={cn(\"ods-mkt-console\", className)}>\n <div className=\"ods-mkt-console__head\">\n <span className=\"ods-mkt-console__title\">{title}</span>\n {badge != null && (\n <span className=\"ods-mkt-console__badge\">\n <span className=\"ods-mkt-console__dot\" />\n {badge}\n </span>\n )}\n </div>\n <div className=\"ods-mkt-console__body\">\n {lines.map((line, i) => {\n const state = line.state ?? \"done\";\n return (\n <div\n key={line.id}\n className={cn(\"ods-mkt-console__line\", animated && \"ods-mkt-console__line--animated\")}\n style={animated ? { animationDelay: `${0.3 + i * 0.6}s` } : undefined}\n >\n <span\n className={cn(\"ods-mkt-console__glyph\", `ods-mkt-console__glyph--${state}`)}\n aria-hidden=\"true\"\n >\n {STATE_GLYPH[state]}\n </span>{\" \"}\n <span className=\"ods-mkt-console__label\">{line.label}</span>\n {line.detail && (\n <span\n className={cn(\n \"ods-mkt-console__detail\",\n state === \"running\" && \"ods-mkt-console__detail--running\",\n )}\n >\n {\" \"}\n {line.detail}\n </span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { BrandMark } from \"../../glyphs\";\n\n/* ---------------------------------------------------------------------------\n * MarketingFooter — brand column + link columns + legal bar.\n * ------------------------------------------------------------------------- */\n\nexport interface MarketingFooterLink {\n label: ReactNode;\n href: string;\n}\n\nexport interface MarketingFooterColumn {\n id: string;\n label: ReactNode;\n links: MarketingFooterLink[];\n}\n\nexport interface MarketingFooterProps extends ComponentPropsWithoutRef<\"footer\"> {\n /** Brand slot. Defaults to the OctaviaFlow mark + wordmark. */\n brand?: ReactNode;\n /** Short positioning line under the brand. */\n tagline?: ReactNode;\n /** Extra brand-column content (contact email, status link…). */\n meta?: ReactNode;\n columns?: MarketingFooterColumn[];\n /** Left side of the bottom bar, e.g. \"© 2026 OctaviaFlow\". */\n legal?: ReactNode;\n /** Right side of the bottom bar, e.g. social handles. */\n social?: ReactNode;\n}\n\nexport function MarketingFooter({\n brand,\n tagline,\n meta,\n columns = [],\n legal,\n social,\n className,\n ...rest\n}: MarketingFooterProps) {\n return (\n <footer {...rest} className={cn(\"ods-mkt-footer\", className)}>\n <div className=\"ods-mkt-footer__grid\">\n <div className=\"ods-mkt-footer__brand-col\">\n <div className=\"ods-mkt-footer__brand\">\n {brand ?? (\n <>\n <BrandMark size={16} />\n <span>OctaviaFlow</span>\n </>\n )}\n </div>\n {tagline && <p className=\"ods-mkt-footer__tagline\">{tagline}</p>}\n {meta && <div className=\"ods-mkt-footer__meta\">{meta}</div>}\n </div>\n {columns.map((column) => (\n <nav key={column.id} className=\"ods-mkt-footer__col\" aria-label={String(column.id)}>\n <span className=\"ods-mkt-footer__col-label\">{column.label}</span>\n {column.links.map((link) => (\n <a key={link.href} className=\"ods-mkt-footer__link\" href={link.href}>\n {link.label}\n </a>\n ))}\n </nav>\n ))}\n </div>\n {(legal || social) && (\n <div className=\"ods-mkt-footer__bar\">\n <span>{legal}</span>\n <span>{social}</span>\n </div>\n )}\n </footer>\n );\n}\n","\"use client\";\n\nimport { motion, useReducedMotion } from \"framer-motion\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * MarketingHero — the opening band: kicker, word-by-word animated display\n * headline, lede, then a free slot (typically the WorkflowShowcase).\n * ------------------------------------------------------------------------- */\n\nexport interface MarketingHeroProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"title\"> {\n /** Mono eyebrow, e.g. \"AI-NATIVE PLATFORM — PRIVATE BETA\". */\n kicker?: ReactNode;\n /** Plain-string headline — split into words for the rise animation. */\n title: string;\n lede?: ReactNode;\n align?: \"start\" | \"center\";\n}\n\nexport function MarketingHero({\n kicker,\n title,\n lede,\n align = \"center\",\n className,\n children,\n ...rest\n}: MarketingHeroProps) {\n const reducedMotion = useReducedMotion();\n const words = title.split(/\\s+/).filter(Boolean);\n\n return (\n <section\n {...rest}\n className={cn(\"ods-mkt-hero\", align === \"center\" && \"ods-mkt-hero--center\", className)}\n >\n {kicker && <p className=\"ods-mkt-hero__kicker\">{kicker}</p>}\n <h1 className=\"ods-mkt-hero__title\">\n {words.map((word, i) => (\n <span\n className=\"ods-mkt-hero__word-clip\"\n // biome-ignore lint/suspicious/noArrayIndexKey: words are positional\n key={i}\n >\n <motion.span\n className=\"ods-mkt-hero__word\"\n initial={reducedMotion ? false : { opacity: 0, y: \"100%\" }}\n animate={{ opacity: 1, y: 0 }}\n transition={{\n duration: 0.7,\n delay: 0.05 + i * 0.08,\n ease: [0.2, 0.7, 0.2, 1],\n }}\n >\n {word}\n </motion.span>{\" \"}\n </span>\n ))}\n </h1>\n {lede && (\n <motion.p\n className=\"ods-mkt-hero__lede\"\n initial={reducedMotion ? false : { opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8, delay: 0.6, ease: [0.2, 0.7, 0.2, 1] }}\n >\n {lede}\n </motion.p>\n )}\n {children && (\n <motion.div\n className=\"ods-mkt-hero__body\"\n initial={reducedMotion ? false : { opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8, delay: 0.75, ease: [0.2, 0.7, 0.2, 1] }}\n >\n {children}\n </motion.div>\n )}\n </section>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { BrandMark } from \"../../glyphs\";\n\n/* ---------------------------------------------------------------------------\n * MarketingNav — sticky top navigation for the marketing site.\n * Brand · links · right-aligned actions (login link, CTA button, …).\n * ------------------------------------------------------------------------- */\n\nexport interface MarketingNavLink {\n label: ReactNode;\n href: string;\n active?: boolean;\n}\n\nexport interface MarketingNavProps extends ComponentPropsWithoutRef<\"header\"> {\n /** Brand slot. Defaults to the OctaviaFlow mark + wordmark. */\n brand?: ReactNode;\n brandHref?: string;\n links?: MarketingNavLink[];\n /** Right side: login links, CTA buttons — consumer-provided. */\n actions?: ReactNode;\n sticky?: boolean;\n}\n\nexport function MarketingNav({\n brand,\n brandHref = \"/\",\n links = [],\n actions,\n sticky = true,\n className,\n ...rest\n}: MarketingNavProps) {\n return (\n <header {...rest} className={cn(\"ods-mkt-nav\", sticky && \"ods-mkt-nav--sticky\", className)}>\n <a className=\"ods-mkt-nav__brand\" href={brandHref}>\n {brand ?? (\n <>\n <BrandMark />\n <span>OctaviaFlow</span>\n </>\n )}\n </a>\n {links.length > 0 && (\n <nav className=\"ods-mkt-nav__links\" aria-label=\"Main\">\n {links.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className={cn(\"ods-mkt-nav__link\", link.active && \"ods-mkt-nav__link--active\")}\n aria-current={link.active ? \"page\" : undefined}\n >\n {link.label}\n </a>\n ))}\n </nav>\n )}\n {actions && <div className=\"ods-mkt-nav__actions\">{actions}</div>}\n </header>\n );\n}\n","\"use client\";\n\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * MarketingSection — the page-band primitive every marketing section sits in.\n * Kicker (mono microcopy) → display title → lede, then arbitrary children.\n * ------------------------------------------------------------------------- */\n\nexport interface MarketingSectionProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"title\"> {\n /** Mono eyebrow above the title, e.g. \"PLATFORM\". */\n kicker?: ReactNode;\n title?: ReactNode;\n /** Lede paragraph under the title. */\n lede?: ReactNode;\n align?: \"start\" | \"center\";\n /** \"subtle\" gives the band a muted background. */\n tone?: \"default\" | \"subtle\";\n /** Remove the default top hairline (e.g. for the first section). */\n flushTop?: boolean;\n}\n\nexport function MarketingSection({\n kicker,\n title,\n lede,\n align = \"start\",\n tone = \"default\",\n flushTop = false,\n className,\n children,\n ...rest\n}: MarketingSectionProps) {\n return (\n <section\n {...rest}\n className={cn(\n \"ods-mkt-section\",\n align === \"center\" && \"ods-mkt-section--center\",\n tone === \"subtle\" && \"ods-mkt-section--subtle\",\n flushTop && \"ods-mkt-section--flush\",\n className,\n )}\n >\n {(kicker || title || lede) && (\n <header className=\"ods-mkt-section__head\">\n {kicker && <p className=\"ods-mkt-section__kicker\">{kicker}</p>}\n {title && <h2 className=\"ods-mkt-section__title\">{title}</h2>}\n {lede && <p className=\"ods-mkt-section__lede\">{lede}</p>}\n </header>\n )}\n {children}\n </section>\n );\n}\n","\"use client\";\n\nimport { useReducedMotion } from \"framer-motion\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { CountUp } from \"../../../components/CountUp/CountUp\";\nimport { cn } from \"../../../utils/cn\";\n\n/* ---------------------------------------------------------------------------\n * StatBand — big proof numbers (\"600+ CONNECTORS · 10× FASTER SETUP …\").\n * Numeric values count up on mount; strings render as-is.\n * ------------------------------------------------------------------------- */\n\nexport interface StatBandItem {\n id: string;\n /** Number → animated count-up; string → rendered verbatim (\"10×\"). */\n value: number | string;\n label: ReactNode;\n prefix?: string;\n suffix?: string;\n}\n\nexport interface StatBandProps extends ComponentPropsWithoutRef<\"div\"> {\n items: StatBandItem[];\n /** \"row\" = horizontal band; \"column\" = stacked rail (default). */\n orientation?: \"column\" | \"row\";\n}\n\nexport function StatBand({ items, orientation = \"column\", className, ...rest }: StatBandProps) {\n const reducedMotion = useReducedMotion();\n return (\n <div\n {...rest}\n className={cn(\"ods-mkt-statband\", `ods-mkt-statband--${orientation}`, className)}\n >\n {items.map((item) => (\n <div key={item.id} className=\"ods-mkt-statband__item\">\n <div className=\"ods-mkt-statband__value\">\n {typeof item.value === \"number\" ? (\n <CountUp\n value={item.value}\n duration={900}\n disableAnimation={Boolean(reducedMotion)}\n prefix={item.prefix}\n suffix={item.suffix}\n formatValue={(v) => Math.round(v).toLocaleString(\"en-US\")}\n />\n ) : (\n <>\n {item.prefix}\n {item.value}\n {item.suffix}\n </>\n )}\n </div>\n <div className=\"ods-mkt-statband__label\">{item.label}</div>\n </div>\n ))}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\n/* ---------------------------------------------------------------------------\n * WorkflowShowcase engine — pure data + logic, no React rendering.\n *\n * Everything the marketing funnel needs to \"think\" lives here so it can be\n * unit-tested without mounting the (heavily animated) component tree:\n * connector recognition, schedule inference, plan resolution, activity-rail\n * script and prompt segmentation for the live-highlight overlay.\n * ------------------------------------------------------------------------- */\n\nexport type WorkflowShowcaseRole = \"source\" | \"destination\" | \"action\" | \"notify\";\n\nexport interface WorkflowShowcaseConnector {\n /** Canonical display name — matched case-insensitively inside the prompt. */\n name: string;\n role: WorkflowShowcaseRole;\n /** Extra strings that also count as a mention of this connector. */\n aliases?: string[];\n /** Optional icon tile. Defaults to a two-letter monogram. */\n icon?: ReactNode;\n}\n\nexport interface WorkflowShowcaseExample {\n id: string;\n /** Chip label, e.g. \"Storefront orders → Warehouse, hourly\". */\n label: string;\n /** Prompt inserted (and auto-built) when the chip is clicked. */\n prompt: string;\n}\n\nexport interface WorkflowShowcaseMetric {\n id: string;\n /** Final value once the pipeline reads as live. */\n value: number;\n /** Interim value while the workflow is still assembling. Omit → \"—\". */\n buildingValue?: number;\n decimals?: number;\n /** Small unit text after the value, e.g. \"rows/min\". */\n unit?: string;\n /** Rendered before the number, e.g. \"−\". */\n prefix?: string;\n /** Rendered flush after the number, e.g. \"%\". */\n suffix?: string;\n /** Mono microcopy under the value, e.g. \"THROUGHPUT\". */\n label: string;\n /** \"success\" tints the final value green (savings, wins). */\n tone?: \"default\" | \"success\";\n}\n\nexport type WorkflowShowcasePhase =\n | \"idle\"\n | \"analyzing\"\n | \"building\"\n | \"done\"\n | \"signup\"\n | \"creating\"\n | \"welcome\";\n\n/** Phases in which the generated workflow reads as complete. */\nexport const SETTLED_PHASES: readonly WorkflowShowcasePhase[] = [\n \"done\",\n \"signup\",\n \"creating\",\n \"welcome\",\n];\n\nexport interface WorkflowShowcasePlan {\n /** Sources, in catalog order. */\n left: WorkflowShowcaseConnector[];\n /** Destination → action → notify, in that order. */\n right: WorkflowShowcaseConnector[];\n /** Every connector in the plan (left + right). */\n all: WorkflowShowcaseConnector[];\n /** Total assemble steps: each source + schema map + each right-side node. */\n totalSteps: number;\n}\n\nexport interface WorkflowShowcaseSignupValues {\n name: string;\n email: string;\n company: string;\n teamSize: string;\n}\n\nexport interface ShowcaseActivityLine {\n id: string;\n text: string;\n tone: \"muted\" | \"faint\" | \"active\" | \"done\" | \"plain\";\n}\n\nexport interface ShowcasePromptSegment {\n text: string;\n /** Set when this segment is a recognized connector mention. */\n connector?: WorkflowShowcaseConnector;\n}\n\n/* ---------------------------------------------------------------------------\n * Defaults — deliberately vendor-neutral. The consuming site passes its real\n * connector catalog; the design system itself stays name-free.\n * ------------------------------------------------------------------------- */\n\nexport const WORKFLOW_SHOWCASE_DEFAULT_CONNECTORS: WorkflowShowcaseConnector[] = [\n { name: \"Storefront\", role: \"source\", aliases: [\"store\", \"shop orders\"] },\n { name: \"Payments\", role: \"source\", aliases: [\"payouts\"] },\n { name: \"Orders DB\", role: \"source\", aliases: [\"orders database\"] },\n { name: \"CRM\", role: \"source\", aliases: [\"crm leads\"] },\n { name: \"Warehouse\", role: \"destination\" },\n { name: \"Lakehouse\", role: \"destination\" },\n { name: \"Campaigns\", role: \"action\", aliases: [\"campaign\"] },\n { name: \"Team Chat\", role: \"notify\", aliases: [\"chat\", \"alert the team\"] },\n];\n\nexport const WORKFLOW_SHOWCASE_DEFAULT_EXAMPLES: WorkflowShowcaseExample[] = [\n {\n id: \"hourly-sync\",\n label: \"Storefront orders → Warehouse, hourly\",\n prompt: \"Sync Storefront orders to Warehouse every hour, alert sales in Team Chat\",\n },\n {\n id: \"daily-load\",\n label: \"Payments payouts → Lakehouse, daily\",\n prompt: \"Load Payments payouts into Lakehouse daily\",\n },\n {\n id: \"realtime-stream\",\n label: \"Orders DB changes → Warehouse + Team Chat\",\n prompt: \"Stream Orders DB changes to Warehouse in real-time and notify Team Chat\",\n },\n];\n\nexport const WORKFLOW_SHOWCASE_DEFAULT_METRICS: WorkflowShowcaseMetric[] = [\n { id: \"throughput\", value: 2341, buildingValue: 842, unit: \"rows/min\", label: \"THROUGHPUT\" },\n {\n id: \"latency\",\n value: 0.8,\n buildingValue: 1.1,\n decimals: 1,\n unit: \"s latency\",\n label: \"SYNC SPEED\",\n },\n { id: \"cost\", value: 43, prefix: \"−\", suffix: \"%\", label: \"COST VS BASELINE\", tone: \"success\" },\n];\n\nexport const WORKFLOW_SHOWCASE_SCHEDULES = [\"AUTO\", \"HOURLY\", \"DAILY\", \"REAL-TIME\"] as const;\n\nexport const WORKFLOW_SHOWCASE_DEFAULT_TILES = [\n \"ELT\",\n \"CDC\",\n \"DAG\",\n \"CRON\",\n \"HEAL\",\n \"COST\",\n \"API\",\n \"LOG\",\n] as const;\n\n/* ---------------------------------------------------------------------------\n * Recognition\n * ------------------------------------------------------------------------- */\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\ninterface Mention {\n connector: WorkflowShowcaseConnector;\n pattern: string;\n}\n\n/** Every (connector, matchable-string) pair, longest pattern first so\n * overlapping names (\"Orders DB\" vs \"Orders\") resolve to the longest hit. */\nfunction mentionsOf(catalog: WorkflowShowcaseConnector[]): Mention[] {\n const out: Mention[] = [];\n for (const connector of catalog) {\n out.push({ connector, pattern: connector.name });\n for (const alias of connector.aliases ?? []) out.push({ connector, pattern: alias });\n }\n return out.sort((a, b) => b.pattern.length - a.pattern.length);\n}\n\n/** Connector names mentioned in the prompt, in catalog order, deduped. */\nexport function detectConnectors(prompt: string, catalog: WorkflowShowcaseConnector[]): string[] {\n const lower = prompt.toLowerCase();\n return catalog\n .filter((c) => [c.name, ...(c.aliases ?? [])].some((p) => lower.includes(p.toLowerCase())))\n .map((c) => c.name);\n}\n\n/** Split the prompt into plain / recognized-connector segments, preserving\n * the user's exact text. Powers the live-highlight overlay. */\nexport function segmentPrompt(\n prompt: string,\n catalog: WorkflowShowcaseConnector[],\n): ShowcasePromptSegment[] {\n if (!prompt) return [];\n const mentions = mentionsOf(catalog);\n if (!mentions.length) return [{ text: prompt }];\n const re = new RegExp(`(${mentions.map((m) => escapeRegExp(m.pattern)).join(\"|\")})`, \"gi\");\n const byPattern = new Map(mentions.map((m) => [m.pattern.toLowerCase(), m.connector]));\n return prompt\n .split(re)\n .filter((part) => part !== \"\")\n .map((part) => {\n const connector = byPattern.get(part.toLowerCase());\n return connector ? { text: part, connector } : { text: part };\n });\n}\n\n/** Infer a schedule from natural language; null when nothing matches. */\nexport function scheduleFromPrompt(prompt: string): string | null {\n const t = prompt.toLowerCase();\n if (/stream|real.?time|cdc/.test(t)) return \"REAL-TIME\";\n if (/hour/.test(t)) return \"HOURLY\";\n if (/dail|every day|nightly/.test(t)) return \"DAILY\";\n return null;\n}\n\n/** Two-letter monogram for the default icon tile: \"Team Chat\" → \"TC\". */\nexport function monogram(name: string): string {\n const words = name.trim().split(/\\s+/);\n const raw = words.length >= 2 ? `${words[0][0]}${words[1][0]}` : name.slice(0, 2);\n return raw.toUpperCase();\n}\n\n/* ---------------------------------------------------------------------------\n * Plan resolution\n * ------------------------------------------------------------------------- */\n\nconst RIGHT_ORDER: Record<WorkflowShowcaseRole, number> = {\n source: -1,\n destination: 0,\n action: 1,\n notify: 2,\n};\n\n/**\n * Resolve the workflow plan from explicit picks + prompt mentions. A viable\n * demo always has at least one source and one non-source, so missing sides\n * are backfilled from the catalog (first source / first notify-or-destination).\n */\nexport function resolvePlan(\n selected: string[],\n detected: string[],\n catalog: WorkflowShowcaseConnector[],\n): WorkflowShowcasePlan {\n const byName = new Map(catalog.map((c) => [c.name, c]));\n let names = [...new Set([...selected, ...detected])].filter((n) => byName.has(n));\n if (!names.length) {\n const fallback = [\n catalog.find((c) => c.role === \"source\"),\n catalog.find((c) => c.role === \"destination\"),\n catalog.find((c) => c.role === \"notify\"),\n ].filter((c): c is WorkflowShowcaseConnector => Boolean(c));\n names = fallback.map((c) => c.name);\n }\n const has = (predicate: (c: WorkflowShowcaseConnector) => boolean) =>\n names.some((n) => {\n const c = byName.get(n);\n return Boolean(c && predicate(c));\n });\n if (!has((c) => c.role === \"source\")) {\n const source = catalog.find((c) => c.role === \"source\");\n if (source) names = [source.name, ...names];\n }\n if (!has((c) => c.role !== \"source\")) {\n const sink =\n catalog.find((c) => c.role === \"notify\") ?? catalog.find((c) => c.role !== \"source\");\n if (sink) names = [...names, sink.name];\n }\n const picked = catalog.filter((c) => names.includes(c.name));\n const left = picked.filter((c) => c.role === \"source\");\n const right = picked\n .filter((c) => c.role !== \"source\")\n .sort((a, b) => RIGHT_ORDER[a.role] - RIGHT_ORDER[b.role]);\n const all = [...left, ...right];\n return { left, right, all, totalSteps: all.length + 1 };\n}\n\n/* ---------------------------------------------------------------------------\n * Activity rail script\n * ------------------------------------------------------------------------- */\n\nfunction stepVerb(role: WorkflowShowcaseRole): string {\n if (role === \"notify\") return \"alert\";\n if (role === \"action\") return \"trigger\";\n return \"load\";\n}\n\n/** Ordered assemble steps for the rail + canvas (\"storefront extract\", …). */\nexport function assembleSteps(plan: WorkflowShowcasePlan): string[] {\n return [\n ...plan.left.map((c) => `${c.name.toLowerCase()} extract`),\n \"schema map · 14 fields\",\n ...plan.right.map((c) => `${c.name.toLowerCase()} ${stepVerb(c.role)}`),\n ];\n}\n\n/**\n * Script the \"OCTAVIA IS DOING\" rail for the current moment.\n * `shown` = number of assemble steps already completed while building.\n */\nexport function buildActivity(args: {\n phase: WorkflowShowcasePhase;\n shown: number;\n plan: WorkflowShowcasePlan;\n selected: string[];\n status: string;\n}): ShowcaseActivityLine[] {\n const { phase, shown, plan, selected, status } = args;\n const settled = SETTLED_PHASES.includes(phase);\n const lines: ShowcaseActivityLine[] = [];\n if (phase === \"idle\") {\n if (!selected.length) {\n lines.push({ id: \"wait\", text: \"▸ waiting for instructions…\", tone: \"muted\" });\n lines.push({ id: \"hint\", text: \"· type a request or pick apps\", tone: \"faint\" });\n }\n for (const name of selected.slice(-6)) {\n lines.push({ id: `sel-${name}`, text: `+ ${name.toLowerCase()} connected`, tone: \"plain\" });\n }\n return lines;\n }\n if (phase === \"analyzing\") {\n for (const name of selected.slice(-4)) {\n lines.push({ id: `sel-${name}`, text: `+ ${name.toLowerCase()} connected`, tone: \"muted\" });\n }\n lines.push({ id: \"status\", text: `⟳ ${status}`, tone: \"active\" });\n return lines;\n }\n assembleSteps(plan).forEach((step, i) => {\n if (settled || shown > i) lines.push({ id: `step-${i}`, text: `✓ ${step}`, tone: \"done\" });\n else if (shown === i) lines.push({ id: `step-${i}`, text: `⟳ ${step}…`, tone: \"active\" });\n else lines.push({ id: `step-${i}`, text: `· ${step} queued`, tone: \"muted\" });\n });\n if (settled) lines.push({ id: \"errors\", text: \"✓ error handling attached\", tone: \"done\" });\n return lines.slice(-8);\n}\n\n/* ---------------------------------------------------------------------------\n * Misc\n * ------------------------------------------------------------------------- */\n\n/** \"Acme Inc.\" → \"acme-inc\" (workspace slug preview in the welcome card). */\nexport function slugify(value: string): string {\n return (\n value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\") || \"your-team\"\n );\n}\n\nexport function isValidEmail(value: string): boolean {\n return /^\\S+@\\S+\\.\\S+$/.test(value.trim());\n}\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { CountUp } from \"../../../components/CountUp/CountUp\";\nimport { cn } from \"../../../utils/cn\";\nimport { roleGlyph } from \"../../glyphs\";\nimport { ShowcaseScene } from \"./ShowcaseScene\";\nimport { ShowcaseSignup } from \"./ShowcaseSignup\";\nimport {\n buildActivity,\n detectConnectors,\n isValidEmail,\n resolvePlan,\n SETTLED_PHASES,\n scheduleFromPrompt,\n segmentPrompt,\n WORKFLOW_SHOWCASE_DEFAULT_CONNECTORS,\n WORKFLOW_SHOWCASE_DEFAULT_EXAMPLES,\n WORKFLOW_SHOWCASE_DEFAULT_METRICS,\n WORKFLOW_SHOWCASE_DEFAULT_TILES,\n WORKFLOW_SHOWCASE_SCHEDULES,\n type WorkflowShowcaseConnector,\n type WorkflowShowcaseExample,\n type WorkflowShowcaseMetric,\n type WorkflowShowcasePhase,\n type WorkflowShowcasePlan,\n type WorkflowShowcaseSignupValues,\n} from \"./showcaseEngine\";\n\n/* ---------------------------------------------------------------------------\n * WorkflowShowcase — the marketing-site \"prompt → live pipeline → signup\"\n * funnel, as one self-driving composition.\n *\n * A visitor types (or taps an example), watches Octavia recognize connectors\n * live, builds the workflow on an isometric canvas with real-feeling\n * telemetry, and converts through an in-canvas workspace form — without ever\n * leaving the hero. All product copy (connector catalog, examples, metrics)\n * is prop-driven; the defaults are deliberately vendor-neutral.\n * ------------------------------------------------------------------------- */\n\nexport interface WorkflowShowcaseBuildDetail {\n prompt: string;\n connectors: string[];\n schedule: string;\n}\n\nexport interface WorkflowShowcaseProps\n extends Omit<ComponentPropsWithoutRef<\"section\">, \"onSubmit\"> {\n /** Connector catalog to recognize/pick from. Vendor-neutral by default. */\n connectors?: WorkflowShowcaseConnector[];\n /** \"TRY:\" example chips. */\n examples?: WorkflowShowcaseExample[];\n /** Right-rail metric cards. */\n metrics?: WorkflowShowcaseMetric[];\n /** Pre-filled prompt text. */\n defaultPrompt?: string;\n /** Mono label at the right edge of the toolbar. */\n modelLabel?: string;\n /** Mono label in the canvas header. */\n canvasLabel?: string;\n /** Header of the live activity rail. */\n railLabel?: string;\n /** Labels for the 8 platform tiles in the scene. */\n platformTiles?: readonly string[];\n /** Icon on the core cube. */\n coreIcon?: ReactNode;\n /** Catalog-size figure used in coach copy, e.g. \"600+\". */\n catalogNote?: string;\n /** Team-size choices in the signup form. */\n teamSizes?: string[];\n /** Domain used for the workspace-slug preview in the welcome card. */\n workspaceDomain?: string;\n dashboardHref?: string;\n onboardingHref?: string;\n /** Accessible label for the prompt textarea. */\n promptAriaLabel?: string;\n /** Fires when a build kicks off (analytics hook). */\n onBuild?: (detail: WorkflowShowcaseBuildDetail) => void;\n /** Fires on every phase transition (analytics hook). */\n onPhaseChange?: (phase: WorkflowShowcasePhase) => void;\n /**\n * Real signup handler. Resolve → welcome card; throw → inline error and\n * back to the form. Omit to simulate provisioning (pure demo mode).\n */\n onSignup?: (values: WorkflowShowcaseSignupValues) => Promise<void> | void;\n}\n\ninterface SwapState {\n name: string;\n /** Exact text the visitor typed (may be an alias) — what gets replaced. */\n text: string;\n x: number;\n y: number;\n}\n\nconst EMPTY_PLAN: WorkflowShowcasePlan = { left: [], right: [], all: [], totalSteps: 1 };\n\nfunction ConnectorTile({ connector }: { connector: WorkflowShowcaseConnector }) {\n // Decorative app tile — hidden so button names stay clean for AT.\n // Consumers pass real brand icons via `icon`; the fallback is a role glyph.\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\"ods-showcase__apptile\", `ods-showcase__apptile--${connector.role}`)}\n >\n {connector.icon ?? roleGlyph(connector.role)}\n </span>\n );\n}\n\nexport function WorkflowShowcase({\n connectors = WORKFLOW_SHOWCASE_DEFAULT_CONNECTORS,\n examples = WORKFLOW_SHOWCASE_DEFAULT_EXAMPLES,\n metrics = WORKFLOW_SHOWCASE_DEFAULT_METRICS,\n defaultPrompt = \"\",\n modelLabel = \"octavia-core-1\",\n canvasLabel = \"workflow_canvas\",\n railLabel = \"OCTAVIA IS DOING\",\n platformTiles = WORKFLOW_SHOWCASE_DEFAULT_TILES,\n coreIcon,\n catalogNote = \"600+\",\n teamSizes = [\"1–10\", \"11–50\", \"51–200\", \"200+\"],\n workspaceDomain = \"octaviaflow.com\",\n dashboardHref,\n onboardingHref = \"#\",\n promptAriaLabel = \"Describe your pipeline\",\n onBuild,\n onPhaseChange,\n onSignup,\n className,\n ...rest\n}: WorkflowShowcaseProps) {\n const reducedMotion = useReducedMotion();\n const [prompt, setPrompt] = useState(defaultPrompt);\n const [selected, setSelected] = useState<string[]>([]);\n const [phase, setPhase] = useState<WorkflowShowcasePhase>(\"idle\");\n const [shown, setShown] = useState(0);\n const [status, setStatus] = useState(\"\");\n const [pickerOpen, setPickerOpen] = useState(false);\n const [schedIdx, setSchedIdx] = useState(0);\n const [swap, setSwap] = useState<SwapState | null>(null);\n const [signupError, setSignupError] = useState<string | null>(null);\n\n const cardRef = useRef<HTMLDivElement>(null);\n const timers = useRef<ReturnType<typeof setTimeout>[]>([]);\n const clearTimers = useCallback(() => {\n for (const t of timers.current) clearTimeout(t);\n timers.current = [];\n }, []);\n useEffect(() => clearTimers, [clearTimers]);\n // Compress the choreography (not the content) when the visitor prefers\n // reduced motion — they still see every step, just sooner.\n const tempo = reducedMotion ? 0.35 : 1;\n const at = useCallback(\n (ms: number, fn: () => void) => {\n timers.current.push(setTimeout(fn, ms * tempo));\n },\n [tempo],\n );\n\n const firstPhase = useRef(true);\n useEffect(() => {\n if (firstPhase.current) {\n firstPhase.current = false;\n return;\n }\n onPhaseChange?.(phase);\n }, [phase, onPhaseChange]);\n\n // Render-time mirror of `phase` so callbacks that reset + immediately\n // rebuild (example chips) never read a stale \"building\" and bail out.\n const phaseRef = useRef(phase);\n phaseRef.current = phase;\n\n const byName = useMemo(() => new Map(connectors.map((c) => [c.name, c])), [connectors]);\n const detected = useMemo(() => detectConnectors(prompt, connectors), [prompt, connectors]);\n const union = useMemo(() => [...new Set([...selected, ...detected])], [selected, detected]);\n const settled = SETTLED_PHASES.includes(phase);\n const engaged = phase !== \"idle\";\n const buildingNow = phase === \"analyzing\" || phase === \"building\";\n\n /** Partition currently-selected connectors into scene sides (no backfill). */\n const plan = useMemo<WorkflowShowcasePlan>(() => {\n if (!selected.length) return EMPTY_PLAN;\n return resolvePlan(selected, [], connectors);\n }, [selected, connectors]);\n\n /* ── schedule ──────────────────────────────────────────────────────── */\n const schedules = WORKFLOW_SHOWCASE_SCHEDULES;\n const inferredSchedule = scheduleFromPrompt(prompt);\n const manualSchedule = schedules[schedIdx];\n const scheduleShown = inferredSchedule ?? (manualSchedule === \"AUTO\" ? \"HOURLY\" : manualSchedule);\n\n /* ── build choreography ────────────────────────────────────────────── */\n const startBuild = useCallback(\n (text: string, baseSelected: string[]) => {\n if (phaseRef.current === \"analyzing\" || phaseRef.current === \"building\") return;\n phaseRef.current = \"analyzing\";\n clearTimers();\n const resolved = resolvePlan(baseSelected, detectConnectors(text, connectors), connectors);\n const target = resolved.all.map((c) => c.name);\n const additions = target.filter((n) => !baseSelected.includes(n));\n setPrompt(text);\n setSelected(baseSelected);\n setPhase(\"analyzing\");\n setShown(0);\n setStatus(\"analyzing request · matching connectors\");\n setPickerOpen(false);\n setSwap(null);\n onBuild?.({ prompt: text, connectors: target, schedule: scheduleShown });\n additions.forEach((name, i) => {\n at(250 + i * 200, () => setSelected((s) => (s.includes(name) ? s : [...s, name])));\n });\n const t0 = 250 + additions.length * 200;\n at(t0 + 750, () => setStatus(\"wiring transforms · adding error handling\"));\n at(t0 + 1500, () => {\n setPhase(\"building\");\n setStatus(\"assembling workflow · optimizing plan\");\n });\n for (let i = 0; i < resolved.totalSteps; i++) {\n at(t0 + 1600 + i * 380, () => setShown(i + 1));\n }\n at(t0 + 1600 + resolved.totalSteps * 380 + 350, () => setPhase(\"done\"));\n },\n [clearTimers, connectors, onBuild, scheduleShown, at],\n );\n\n const resetToIdle = useCallback(() => {\n clearTimers();\n phaseRef.current = \"idle\";\n setPhase(\"idle\");\n setShown(0);\n setStatus(\"\");\n setSwap(null);\n }, [clearTimers]);\n\n const toggleConnector = (name: string) => {\n resetToIdle();\n setSelected((s) => (s.includes(name) ? s.filter((n) => n !== name) : [...s, name]));\n };\n\n const runExample = (example: WorkflowShowcaseExample) => {\n resetToIdle();\n startBuild(example.prompt, []);\n };\n\n /* ── swap menu ─────────────────────────────────────────────────────── */\n const openSwap = (name: string, text: string, anchor: HTMLElement) => {\n const card = cardRef.current;\n if (!card) return;\n const r = anchor.getBoundingClientRect();\n const cr = card.getBoundingClientRect();\n const x = Math.max(8, Math.min(r.left - cr.left, cr.width - 264));\n setSwap({ name, text, x, y: r.bottom - cr.top + 6 });\n };\n const doSwap = (current: SwapState, next: string) => {\n resetToIdle();\n const re = new RegExp(current.text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"i\");\n setPrompt((p) => p.replace(re, next));\n setSelected((s) => s.map((n) => (n === current.name ? next : n)));\n };\n const swapRole = swap ? byName.get(swap.name)?.role : undefined;\n const swapItems = swapRole ? connectors.filter((c) => c.role === swapRole) : [];\n\n /* ── coach line ────────────────────────────────────────────────────── */\n const roles = union.map((n) => byName.get(n)?.role);\n const hasSource = roles.includes(\"source\");\n const hasSink = roles.some((r) => r && r !== \"source\");\n const hasNotify = roles.includes(\"notify\");\n let coachLine: string;\n let coachAdds: WorkflowShowcaseConnector[] = [];\n const notIn = (c: WorkflowShowcaseConnector) => !union.includes(c.name);\n if (!union.length) {\n coachLine = prompt\n ? \"LISTENING… CONNECTOR NAMES LIGHT UP AS OCTAVIA RECOGNIZES THEM\"\n : `OCTAVIA MATCHES CONNECTORS LIVE AS YOU TYPE — OR PICK FROM ${catalogNote}`;\n } else if (union.length >= connectors.length) {\n coachLine =\n \"FULL STACK — OCTAVIA SPLITS THIS INTO PARALLEL INGEST → AI TRANSFORM → SEQUENCED ACTIONS\";\n } else if (union.length >= 6) {\n coachLine = `BIG STACK — ${union.length} CONNECTORS FAN OUT ACROSS PARALLEL BRANCHES · COST OPTIMIZER ON`;\n } else if (hasSource && !hasSink) {\n coachLine = \"SOURCES WIRED — WHERE SHOULD THE DATA LAND?\";\n coachAdds = connectors.filter((c) => c.role === \"destination\" && notIn(c)).slice(0, 2);\n } else if (!hasSource && hasSink) {\n coachLine = \"DESTINATION SET — WHAT SHOULD OCTAVIA PULL FROM?\";\n coachAdds = connectors.filter((c) => c.role === \"source\" && notIn(c)).slice(0, 2);\n } else if (!hasNotify) {\n coachLine = `✓ ${union.length} CONNECTORS · ${scheduleShown} · TIP: ALERT YOUR TEAM WHEN RUNS FINISH`;\n coachAdds = connectors.filter((c) => c.role === \"notify\" && notIn(c)).slice(0, 1);\n } else {\n coachLine = `✓ ${union.length} CONNECTORS · ${scheduleShown} · CLICK A HIGHLIGHTED NAME TO SWAP IT`;\n }\n const coachTone = union.length ? (hasSource && hasSink ? \"success\" : \"accent\") : \"muted\";\n\n /* ── canvas derived state ──────────────────────────────────────────── */\n const badge = settled\n ? { label: \"LIVE\", tone: \"success\" as const, pulse: true }\n : buildingNow\n ? {\n label: phase === \"analyzing\" ? \"ANALYZING\" : \"BUILDING\",\n tone: \"accent\" as const,\n pulse: true,\n }\n : { label: \"IDLE\", tone: \"muted\" as const, pulse: false };\n const canvasSub = settled ? \"production\" : buildingNow ? \"generating\" : \"draft\";\n const sceneCaption = settled\n ? \"PIPELINE LIVE · SQUARES = ROWS IN FLIGHT\"\n : phase === \"building\"\n ? \"ASSEMBLING WORKFLOW…\"\n : phase === \"analyzing\"\n ? \"ANALYZING REQUEST…\"\n : \"CLICK THE CORE · CONNECTORS LAND AS CUBES\";\n\n const activity = buildActivity({ phase, shown, plan, selected, status });\n const costMetric = metrics.find((m) => m.tone === \"success\");\n const costLabel = costMetric\n ? `${costMetric.prefix ?? \"\"}${costMetric.value}${costMetric.suffix ?? \"\"}`\n : \"\";\n const railFoot =\n phase === \"idle\"\n ? `${catalogNote} CONNECTORS · FREE IN PRIVATE BETA`\n : settled\n ? `COST PLAN SELECTED · ${costLabel}`\n : \"COST OPTIMIZER RUNNING…\";\n\n const nLeft = plan.left.length;\n const sceneLeft = plan.left.map((c, i) => ({\n connector: c,\n active: engaged && (settled || shown > i),\n }));\n const sceneRight = plan.right.map((c, j) => ({\n connector: c,\n active: engaged && (settled || shown > nLeft + 1 + j),\n }));\n\n const stepCount = (selected.length || 3) + 1;\n const doneNote = costMetric\n ? `${stepCount}-step workflow generated · cost optimizer: ${costMetric.value}% below baseline`\n : `${stepCount}-step workflow generated`;\n\n /* ── signup ────────────────────────────────────────────────────────── */\n const submitSignup = (values: WorkflowShowcaseSignupValues) => {\n if (!values.name.trim() || !isValidEmail(values.email)) {\n setSignupError(\"Please enter your name and a valid work email.\");\n return;\n }\n setSignupError(null);\n setPhase(\"creating\");\n const finish = () => setPhase(\"welcome\");\n const fail = () => {\n setSignupError(\"Something went wrong — please try again.\");\n setPhase(\"signup\");\n };\n if (!onSignup) {\n at(1600, finish);\n return;\n }\n try {\n const result = onSignup(values);\n if (result && typeof (result as Promise<void>).then === \"function\") {\n (result as Promise<void>).then(finish, fail);\n } else {\n finish();\n }\n } catch {\n fail();\n }\n };\n\n /* ── prompt rendering ──────────────────────────────────────────────── */\n const segments = segmentPrompt(prompt, connectors);\n const onPromptKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n startBuild(prompt, selected);\n }\n };\n\n const rise = (delay = 0) =>\n reducedMotion\n ? {}\n : {\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.4, delay, ease: [0.2, 0.7, 0.2, 1] as const },\n };\n\n return (\n <section {...rest} className={cn(\"ods-showcase\", className)}>\n {/* ── prompt card ─────────────────────────────────────────────── */}\n <div ref={cardRef} className=\"ods-showcase__card\">\n <div className=\"ods-showcase__prompt\">\n <textarea\n className=\"ods-showcase__prompt-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.target.value)}\n onKeyDown={onPromptKeyDown}\n aria-label={promptAriaLabel}\n spellCheck={false}\n rows={2}\n />\n <div className=\"ods-showcase__prompt-render\" aria-hidden=\"true\">\n {prompt ? (\n segments.map((seg, i) =>\n seg.connector ? (\n <button\n // biome-ignore lint/suspicious/noArrayIndexKey: segments are positional by nature\n key={i}\n type=\"button\"\n tabIndex={-1}\n className={cn(\n \"ods-showcase__token\",\n `ods-showcase__token--${seg.connector.role}`,\n )}\n onClick={(e) => {\n const name = seg.connector?.name;\n if (name) openSwap(name, seg.text, e.currentTarget);\n }}\n >\n {seg.text}\n </button>\n ) : (\n // biome-ignore lint/suspicious/noArrayIndexKey: segments are positional by nature\n <span key={i}>{seg.text}</span>\n ),\n )\n ) : (\n <>\n <span className=\"ods-showcase__placeholder\">Describe your pipeline — e.g. </span>\n <span className=\"ods-showcase__placeholder ods-showcase__placeholder--faint\">\n \"Sync Storefront orders to Warehouse hourly, alert sales in Team Chat\"\n </span>\n </>\n )}\n </div>\n </div>\n\n <div className=\"ods-showcase__coach\">\n <span\n className={cn(\"ods-showcase__coach-line\", `ods-showcase__coach-line--${coachTone}`)}\n >\n {coachLine}\n </span>\n {coachAdds.map((c) => (\n <button\n key={c.name}\n type=\"button\"\n className=\"ods-showcase__coach-add\"\n onClick={() => toggleConnector(c.name)}\n >\n <ConnectorTile connector={c} />+ {c.name}\n </button>\n ))}\n </div>\n\n <AnimatePresence initial={false}>\n {pickerOpen && (\n <motion.div\n className=\"ods-showcase__picker\"\n initial={reducedMotion ? false : { opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={reducedMotion ? { opacity: 0 } : { opacity: 0, height: 0 }}\n transition={{ duration: 0.22, ease: [0.2, 0.7, 0.2, 1] }}\n >\n <div className=\"ods-showcase__picker-row\">\n <span className=\"ods-showcase__microcopy\">CONNECTORS</span>\n {connectors.map((c) => (\n <button\n key={c.name}\n type=\"button\"\n className={cn(\n \"ods-showcase__pick\",\n selected.includes(c.name) && \"ods-showcase__pick--on\",\n )}\n aria-pressed={selected.includes(c.name)}\n onClick={() => toggleConnector(c.name)}\n >\n <ConnectorTile connector={c} />\n {c.name}\n </button>\n ))}\n <span className=\"ods-showcase__microcopy ods-showcase__microcopy--faint\">\n + {catalogNote} IN THE APP\n </span>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <div className=\"ods-showcase__toolbar\">\n <button\n type=\"button\"\n className={cn(\n \"ods-showcase__tool\",\n (pickerOpen || selected.length > 0) && \"ods-showcase__tool--on\",\n )}\n aria-expanded={pickerOpen}\n onClick={() => setPickerOpen((o) => !o)}\n >\n + Connectors{selected.length ? ` · ${selected.length}` : \"\"}\n </button>\n <button\n type=\"button\"\n className=\"ods-showcase__tool\"\n onClick={() => setSchedIdx((i) => (i + 1) % schedules.length)}\n >\n ◷ {manualSchedule}\n </button>\n <span className=\"ods-showcase__model\">{modelLabel}</span>\n <Button\n variant=\"primary\"\n onClick={() => startBuild(prompt, selected)}\n disabled={buildingNow}\n >\n {buildingNow ? \"Building…\" : \"Build workflow →\"}\n </Button>\n </div>\n\n {swap && swapRole && (\n <>\n <button\n type=\"button\"\n className=\"ods-showcase__swap-backdrop\"\n aria-label=\"Close swap menu\"\n onClick={() => setSwap(null)}\n />\n <div\n className=\"ods-showcase__swap\"\n role=\"menu\"\n style={{ left: swap.x, top: swap.y }}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") setSwap(null);\n }}\n >\n <div className=\"ods-showcase__swap-head\">\n SWAP {swapRole.toUpperCase()} — {swap.name.toUpperCase()}\n </div>\n {swapItems.map((c) => (\n <button\n key={c.name}\n type=\"button\"\n role=\"menuitem\"\n className=\"ods-showcase__swap-item\"\n onClick={() => doSwap(swap, c.name)}\n >\n <ConnectorTile connector={c} />\n <span className=\"ods-showcase__swap-name\">{c.name}</span>\n {c.name === swap.name && (\n <span className=\"ods-showcase__swap-mark\">● CURRENT</span>\n )}\n </button>\n ))}\n <div className=\"ods-showcase__swap-foot\">{catalogNote} CONNECTORS IN THE APP</div>\n </div>\n </>\n )}\n </div>\n\n {/* ── example chips ───────────────────────────────────────────── */}\n <div className=\"ods-showcase__examples\">\n <span className=\"ods-showcase__microcopy\">TRY:</span>\n {examples.map((ex) => (\n <button\n key={ex.id}\n type=\"button\"\n className=\"ods-showcase__try\"\n onClick={() => runExample(ex)}\n >\n {ex.label}\n </button>\n ))}\n </div>\n\n {/* ── canvas ──────────────────────────────────────────────────── */}\n <div className=\"ods-showcase__canvas\">\n <div className=\"ods-showcase__canvas-head\">\n <span className=\"ods-showcase__microcopy\">\n {canvasLabel} · {canvasSub}\n </span>\n <span className={cn(\"ods-showcase__badge\", `ods-showcase__badge--${badge.tone}`)}>\n <span className={cn(\"ods-showcase__dot\", badge.pulse && \"ods-showcase__dot--pulse\")} />\n {badge.label}\n </span>\n </div>\n <div className=\"ods-showcase__stage\">\n <div className=\"ods-showcase__rail\">\n <div className=\"ods-showcase__rail-head\">\n <span className=\"ods-showcase__microcopy\">{railLabel}</span>\n <span\n className={cn(\"ods-showcase__dot\", badge.pulse && \"ods-showcase__dot--pulse\")}\n />\n </div>\n <div className=\"ods-showcase__rail-body\">\n <AnimatePresence initial={false}>\n {activity.map((line) => (\n <motion.div\n key={line.id}\n className={cn(\"ods-showcase__act\", `ods-showcase__act--${line.tone}`)}\n initial={reducedMotion ? false : { opacity: 0, y: 6 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.25 }}\n >\n {line.text}\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n <div\n className={cn(\n \"ods-showcase__rail-foot\",\n settled && \"ods-showcase__rail-foot--done\",\n buildingNow && \"ods-showcase__rail-foot--active\",\n )}\n >\n {railFoot}\n </div>\n </div>\n\n <ShowcaseScene\n left={sceneLeft}\n right={sceneRight}\n engaged={engaged}\n tiles={platformTiles}\n coreIcon={coreIcon}\n caption={sceneCaption}\n />\n\n <div className=\"ods-showcase__metrics\">\n {metrics.map((m, idx) => {\n const revealed = settled || (phase === \"building\" && shown > idx);\n const interim = m.buildingValue != null && !settled && revealed;\n return (\n <div key={m.id} className=\"ods-showcase__metric\">\n <div\n className={cn(\n \"ods-showcase__metric-value\",\n !revealed && \"ods-showcase__metric-value--empty\",\n m.tone === \"success\" && settled && \"ods-showcase__metric-value--success\",\n )}\n >\n {settled ? (\n <CountUp\n value={m.value}\n from={m.buildingValue ?? 0}\n decimals={m.decimals ?? 0}\n duration={reducedMotion ? 0 : 900}\n disableAnimation={Boolean(reducedMotion)}\n prefix={m.prefix}\n formatValue={\n m.decimals ? undefined : (v) => Math.round(v).toLocaleString(\"en-US\")\n }\n />\n ) : interim ? (\n `${m.prefix ?? \"\"}${m.buildingValue}`\n ) : (\n \"—\"\n )}\n {revealed && m.suffix ? m.suffix : null}\n {revealed && m.unit ? (\n <span className=\"ods-showcase__metric-unit\"> {m.unit}</span>\n ) : null}\n </div>\n <div className=\"ods-showcase__microcopy\">{m.label}</div>\n </div>\n );\n })}\n </div>\n\n <ShowcaseSignup\n phase={phase}\n stepCount={stepCount}\n workspaceDomain={workspaceDomain}\n teamSizes={teamSizes}\n error={signupError}\n onSubmit={submitSignup}\n onBack={() => {\n setSignupError(null);\n setPhase(\"done\");\n }}\n dashboardHref={dashboardHref}\n onboardingHref={onboardingHref}\n />\n </div>\n </div>\n\n {/* ── status / CTA band ───────────────────────────────────────── */}\n <div className=\"ods-showcase__outro\" aria-live=\"polite\">\n {buildingNow && (\n <div className=\"ods-showcase__building\">\n <span className=\"ods-showcase__spin\" aria-hidden=\"true\">\n ⟳\n </span>{\" \"}\n {status}\n </div>\n )}\n {phase === \"done\" && (\n <div className=\"ods-showcase__done\">\n <motion.div className=\"ods-showcase__done-note\" {...rise(0)}>\n ✓ {doneNote}\n </motion.div>\n <motion.div className=\"ods-showcase__cta\" {...rise(0.2)}>\n <span className=\"ods-showcase__cta-copy\">\n Deploy it on your own data — takes 2 minutes.\n </span>\n <Button\n variant=\"primary\"\n onClick={() => {\n setSignupError(null);\n setPhase(\"signup\");\n }}\n >\n Create free account →\n </Button>\n <a className=\"ods-showcase__text-link\" href={onboardingHref}>\n Book onboarding →\n </a>\n </motion.div>\n </div>\n )}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { type CSSProperties, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { roleGlyph } from \"../../glyphs\";\nimport type { WorkflowShowcaseConnector } from \"./showcaseEngine\";\n\n/* ---------------------------------------------------------------------------\n * ShowcaseScene — the isometric \"workflow assembling itself\" illustration.\n *\n * Pure presentation: an isometric platform of capability tiles with the\n * Octavia core at the center, connector cubes landing on each side, and\n * particles tracing the guide paths (\"squares = rows in flight\"). The whole\n * scene is decorative — it's aria-hidden and every fact it communicates is\n * also present in the activity rail + metrics, which are real DOM text.\n * ------------------------------------------------------------------------- */\n\nexport interface ShowcaseSceneNode {\n connector: WorkflowShowcaseConnector;\n /** Whether this node's step has completed (wires + particles light up). */\n active: boolean;\n}\n\nexport interface ShowcaseSceneProps {\n left: ShowcaseSceneNode[];\n right: ShowcaseSceneNode[];\n /** Any build/run motion is happening (analyzing → welcome). */\n engaged: boolean;\n /** Platform tile labels (8). */\n tiles: readonly string[];\n /** Center-of-platform icon. Defaults to a gradient core glyph. */\n coreIcon?: ReactNode;\n caption: string;\n}\n\n/** Vertical slot centers for n cubes on one side (matches guide geometry). */\nfunction slots(n: number): number[] {\n return Array.from({ length: n }, (_, i) => 208 + (i - (n - 1) / 2) * 80);\n}\n\nconst leftGuide = (cy: number) => `M74 ${cy} H150 V228 H193`;\nconst rightGuide = (cy: number) => `M263 228 H340 V${cy} H388`;\n\ninterface ParticleSpec {\n key: string;\n path: string;\n size: number;\n duration: string;\n delay: string;\n variant: \"lead\" | \"echo\" | \"spark\";\n}\n\nfunction particlesFor(\n side: \"l\" | \"r\",\n index: number,\n path: string,\n active: boolean,\n fast: boolean,\n): ParticleSpec[] {\n const base = index * 0.4 + (side === \"r\" ? 0.5 : 0);\n const duration = fast ? (active ? \"1.1s\" : \"2.6s\") : active ? \"2.2s\" : \"4.8s\";\n const size = active ? 8 : 6;\n const out: ParticleSpec[] = [\n { key: `${side}${index}-a`, path, size, duration, delay: `${base}s`, variant: \"lead\" },\n {\n key: `${side}${index}-b`,\n path,\n size,\n duration,\n delay: `${base + (active ? 1.1 : 2.4)}s`,\n variant: \"echo\",\n },\n ];\n if (active) {\n out.push({\n key: `${side}${index}-c`,\n path,\n size: 6,\n duration,\n delay: `${base + 0.55}s`,\n variant: \"spark\",\n });\n }\n return out;\n}\n\nfunction DefaultCoreGlyph() {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"30\" height=\"30\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"1\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n <path\n d=\"M7 12h7M11.5 8.5 15 12l-3.5 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction CubeFace({ connector }: { connector: WorkflowShowcaseConnector }) {\n return (\n <span\n className={cn(\n \"ods-showcase__apptile\",\n \"ods-showcase__apptile--lg\",\n `ods-showcase__apptile--${connector.role}`,\n )}\n >\n {connector.icon ?? roleGlyph(connector.role, 18)}\n </span>\n );\n}\n\nexport function ShowcaseScene({\n left,\n right,\n engaged,\n tiles,\n coreIcon,\n caption,\n}: ShowcaseSceneProps) {\n // Clicking the core briefly speeds particles up — a tiny reward that makes\n // the scene feel alive without changing any state that matters.\n const [pulse, setPulse] = useState(false);\n const pulseTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(\n () => () => {\n if (pulseTimer.current) clearTimeout(pulseTimer.current);\n },\n [],\n );\n const firePulse = () => {\n if (pulse) return;\n setPulse(true);\n pulseTimer.current = setTimeout(() => setPulse(false), 1500);\n };\n\n const leftYs = slots(left.length);\n const rightYs = slots(right.length);\n\n const guides: { d: string; on: boolean; delay: string }[] = [];\n const particles: ParticleSpec[] = [];\n left.forEach((node, i) => {\n const d = leftGuide(leftYs[i]);\n const on = engaged && node.active;\n guides.push({ d, on, delay: `${i * 0.2}s` });\n particles.push(...particlesFor(\"l\", i, d, on, pulse));\n });\n right.forEach((node, j) => {\n const d = rightGuide(rightYs[j]);\n const on = engaged && node.active;\n guides.push({ d, on, delay: `${j * 0.2 + 0.3}s` });\n particles.push(...particlesFor(\"r\", j, d, on, pulse));\n });\n if (!left.length) guides.push({ d: leftGuide(208), on: false, delay: \"0s\" });\n if (!right.length) guides.push({ d: rightGuide(208), on: false, delay: \"0s\" });\n\n const pins: { d: string; accent: boolean }[] = [];\n for (let x = 118; x <= 338; x += 20) {\n pins.push({ d: `M${x} 346 L${x} 368`, accent: (x / 20) % 4 === 0 });\n }\n for (let y = 118; y <= 338; y += 20) {\n pins.push({ d: `M346 ${y} L368 ${y}`, accent: (y / 20) % 4 === 1 });\n }\n\n const tilePositions = [\n { left: 8, top: 8 },\n { left: 83, top: 8 },\n { left: 158, top: 8 },\n { left: 8, top: 83 },\n { left: 158, top: 83 },\n { left: 8, top: 158 },\n { left: 83, top: 158 },\n { left: 158, top: 158 },\n ];\n\n return (\n <div className=\"ods-showcase__scene\" aria-hidden=\"true\">\n <div className=\"ods-showcase__scene-stage\">\n <svg className=\"ods-showcase__wires\" width=\"460\" height=\"460\" aria-hidden=\"true\">\n {pins.map((pin) => (\n <path\n key={pin.d}\n d={pin.d}\n className={cn(\"ods-showcase__pin\", pin.accent && \"ods-showcase__pin--accent\")}\n />\n ))}\n {guides.map((guide) => (\n <g key={guide.d}>\n <path d={guide.d} className=\"ods-showcase__guide\" />\n <path\n d={guide.d}\n className={cn(\n \"ods-showcase__guide-trace\",\n guide.on && \"ods-showcase__guide-trace--on\",\n )}\n style={{ animationDelay: guide.delay }}\n />\n </g>\n ))}\n </svg>\n\n {particles.map((p) => (\n <span\n key={p.key}\n className={cn(\"ods-showcase__particle\", `ods-showcase__particle--${p.variant}`)}\n style={\n {\n width: p.size,\n height: p.size,\n offsetPath: `path('${p.path}')`,\n animationDuration: p.duration,\n animationDelay: p.delay,\n } as CSSProperties\n }\n />\n ))}\n\n <div className=\"ods-showcase__platform\">\n <span className=\"ods-showcase__platform-south\" />\n <span className=\"ods-showcase__platform-east\" />\n <span className=\"ods-showcase__platform-top\" />\n {tiles.slice(0, 8).map((label, i) => (\n <span\n key={label}\n className=\"ods-showcase__tile\"\n style={{ left: tilePositions[i].left, top: tilePositions[i].top }}\n >\n {label}\n </span>\n ))}\n {pulse && <span className=\"ods-showcase__core-ring\" />}\n <button type=\"button\" tabIndex={-1} className=\"ods-showcase__core\" onClick={firePulse}>\n <span className=\"ods-showcase__core-south\" />\n <span className=\"ods-showcase__core-east\" />\n <span className=\"ods-showcase__core-top\">{coreIcon ?? <DefaultCoreGlyph />}</span>\n </button>\n </div>\n\n <span className=\"ods-showcase__floater ods-showcase__floater--a\" />\n <span className=\"ods-showcase__floater ods-showcase__floater--b\" />\n <span className=\"ods-showcase__floater ods-showcase__floater--c\" />\n\n {!left.length && (\n <span className=\"ods-showcase__ghost\" style={{ left: 8, top: 178 }}>\n +\n </span>\n )}\n {!right.length && (\n <span className=\"ods-showcase__ghost\" style={{ left: 392, top: 178 }}>\n +\n </span>\n )}\n\n {left.map((node, i) => (\n <span\n key={node.connector.name}\n className={cn(\n \"ods-showcase__cube\",\n node.active && \"ods-showcase__cube--active\",\n i % 2 ? \"ods-showcase__cube--float-b\" : \"ods-showcase__cube--float-a\",\n )}\n style={{ left: 8, top: leftYs[i] - 30, animationDelay: `${i * 0.15}s` }}\n >\n <span className=\"ods-showcase__cube-south\" />\n <span className=\"ods-showcase__cube-east\" />\n <span className=\"ods-showcase__cube-top\">\n <CubeFace connector={node.connector} />\n </span>\n </span>\n ))}\n {right.map((node, j) => (\n <span\n key={node.connector.name}\n className={cn(\n \"ods-showcase__cube\",\n node.active && \"ods-showcase__cube--active\",\n j % 2 ? \"ods-showcase__cube--float-a\" : \"ods-showcase__cube--float-b\",\n )}\n style={{ left: 392, top: rightYs[j] - 30, animationDelay: `${j * 0.15}s` }}\n >\n <span className=\"ods-showcase__cube-south\" />\n <span className=\"ods-showcase__cube-east\" />\n <span className=\"ods-showcase__cube-top\">\n <CubeFace connector={node.connector} />\n </span>\n </span>\n ))}\n </div>\n <span className=\"ods-showcase__scene-caption\">{caption}</span>\n </div>\n );\n}\n","\"use client\";\n\nimport { AnimatePresence, motion, useReducedMotion } from \"framer-motion\";\nimport { type FormEvent, useId, useState } from \"react\";\nimport { FocusScope } from \"react-aria\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { Input } from \"../../../components/Input/Input\";\nimport { Select } from \"../../../components/Select/Select\";\nimport {\n slugify,\n type WorkflowShowcasePhase,\n type WorkflowShowcaseSignupValues,\n} from \"./showcaseEngine\";\n\n/* ---------------------------------------------------------------------------\n * ShowcaseSignup — the conversion overlay that floats over the canvas.\n *\n * Three moments share one glass surface: the workspace form (\"signup\"),\n * the provisioning interstitial (\"creating\") and the welcome card\n * (\"welcome\"). It follows the Dialog accessibility reference: minted ids\n * wired to aria-labelledby/-describedby, focus contained + restored.\n * ------------------------------------------------------------------------- */\n\nexport interface ShowcaseSignupProps {\n phase: WorkflowShowcasePhase;\n stepCount: number;\n workspaceDomain: string;\n teamSizes: string[];\n error: string | null;\n onSubmit: (values: WorkflowShowcaseSignupValues) => void;\n onBack: () => void;\n dashboardHref?: string;\n onboardingHref?: string;\n}\n\nconst OVERLAY_MOTION = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n};\n\nexport function ShowcaseSignup({\n phase,\n stepCount,\n workspaceDomain,\n teamSizes,\n error,\n onSubmit,\n onBack,\n dashboardHref = \"#\",\n onboardingHref = \"#\",\n}: ShowcaseSignupProps) {\n const reducedMotion = useReducedMotion();\n const titleId = useId();\n const subtitleId = useId();\n const [values, setValues] = useState<WorkflowShowcaseSignupValues>({\n name: \"\",\n email: \"\",\n company: \"\",\n teamSize: teamSizes[0] ?? \"1–10\",\n });\n\n const open = phase === \"signup\" || phase === \"creating\" || phase === \"welcome\";\n const cardMotion = reducedMotion\n ? OVERLAY_MOTION\n : {\n initial: { opacity: 0, y: 14, scale: 0.985 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, y: 8, scale: 0.99 },\n };\n\n const handleSubmit = (event: FormEvent) => {\n event.preventDefault();\n onSubmit(values);\n };\n\n const firstName = values.name.trim().split(/\\s+/)[0] || \"\";\n const emailShown = values.email.trim() || \"your inbox\";\n const slug = `${slugify(values.company)}.${workspaceDomain}`;\n\n return (\n <AnimatePresence>\n {open && (\n <motion.div\n className=\"ods-showcase__veil\"\n {...OVERLAY_MOTION}\n transition={{ duration: reducedMotion ? 0 : 0.22 }}\n >\n <FocusScope contain restoreFocus autoFocus>\n {phase === \"signup\" && (\n <motion.form\n key=\"signup\"\n className=\"ods-showcase__glass-card\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={subtitleId}\n onSubmit={handleSubmit}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") onBack();\n }}\n {...cardMotion}\n transition={{ duration: reducedMotion ? 0 : 0.3, ease: [0.2, 0.7, 0.2, 1] }}\n >\n <div className=\"ods-showcase__glass-head\">\n <h3 id={titleId} className=\"ods-showcase__glass-title\">\n Create your workspace\n </h3>\n <p id={subtitleId} className=\"ods-showcase__microcopy\">\n FREE IN PRIVATE BETA · YOUR {stepCount}-STEP WORKFLOW COMES WITH YOU\n </p>\n </div>\n <div className=\"ods-showcase__form-grid\">\n <div className=\"ods-showcase__field\">\n <span className=\"ods-showcase__field-label\">FULL NAME</span>\n <Input\n aria-label=\"Full name\"\n autoComplete=\"name\"\n placeholder=\"Ada Lovelace\"\n value={values.name}\n onChange={(e) => setValues((v) => ({ ...v, name: e.target.value }))}\n />\n </div>\n <div className=\"ods-showcase__field\">\n <span className=\"ods-showcase__field-label\">WORK EMAIL</span>\n <Input\n aria-label=\"Work email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"ada@company.com\"\n value={values.email}\n onChange={(e) => setValues((v) => ({ ...v, email: e.target.value }))}\n />\n </div>\n <div className=\"ods-showcase__field\">\n <span className=\"ods-showcase__field-label\">COMPANY</span>\n <Input\n aria-label=\"Company\"\n autoComplete=\"organization\"\n placeholder=\"Acme Inc.\"\n value={values.company}\n onChange={(e) => setValues((v) => ({ ...v, company: e.target.value }))}\n />\n </div>\n <div className=\"ods-showcase__field\">\n <span className=\"ods-showcase__field-label\">TEAM SIZE</span>\n <Select\n aria-label=\"Team size\"\n options={teamSizes.map((size) => ({ value: size, label: size }))}\n value={values.teamSize}\n onChange={(teamSize) => setValues((v) => ({ ...v, teamSize }))}\n />\n </div>\n </div>\n {error && (\n <p className=\"ods-showcase__form-error\" role=\"alert\">\n {error}\n </p>\n )}\n <div className=\"ods-showcase__glass-foot\">\n <span className=\"ods-showcase__microcopy\">\n NO CREDIT CARD · SSO &amp; SELF-HOSTING LATER\n </span>\n <div className=\"ods-showcase__glass-actions\">\n <Button type=\"button\" variant=\"secondary\" onClick={onBack}>\n Back\n </Button>\n <Button type=\"submit\" variant=\"primary\">\n Create account &amp; deploy →\n </Button>\n </div>\n </div>\n </motion.form>\n )}\n\n {phase === \"creating\" && (\n <motion.div\n key=\"creating\"\n className=\"ods-showcase__glass-card ods-showcase__glass-card--slim\"\n role=\"status\"\n {...cardMotion}\n transition={{ duration: reducedMotion ? 0 : 0.25 }}\n >\n <span className=\"ods-showcase__spin\" aria-hidden=\"true\">\n ⟳\n </span>\n <span className=\"ods-showcase__creating-line\">\n provisioning workspace · saving draft · inviting {emailShown}\n </span>\n </motion.div>\n )}\n\n {phase === \"welcome\" && (\n <motion.div\n key=\"welcome\"\n className=\"ods-showcase__glass-card ods-showcase__glass-card--welcome\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n {...cardMotion}\n transition={{ duration: reducedMotion ? 0 : 0.3, ease: [0.2, 0.7, 0.2, 1] }}\n >\n <div className=\"ods-showcase__glass-head\">\n <p className=\"ods-showcase__microcopy ods-showcase__microcopy--success\">\n ✓ WORKSPACE READY\n </p>\n <h3 id={titleId} className=\"ods-showcase__glass-title\">\n Welcome to OctaviaFlow{firstName ? `, ${firstName}` : \"\"}.\n </h3>\n <p className=\"ods-showcase__welcome-body\">\n We emailed a sign-in link to <strong>{emailShown}</strong>. Your {stepCount}\n -step workflow is saved as a draft in{\" \"}\n <code className=\"ods-showcase__slug\">{slug}</code> — deploy it from the\n dashboard whenever you're ready.\n </p>\n </div>\n <div className=\"ods-showcase__glass-foot\">\n <div className=\"ods-showcase__glass-actions\">\n <a className=\"ods-showcase__solid-link\" href={dashboardHref}>\n Open dashboard →\n </a>\n <a className=\"ods-showcase__text-link\" href={onboardingHref}>\n Book onboarding →\n </a>\n </div>\n <span className=\"ods-showcase__microcopy ods-showcase__microcopy--right\">\n PRIVATE BETA\n <br />\n ONBOARDING INCLUDED\n </span>\n </div>\n </motion.div>\n )}\n </FocusScope>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","useReducedMotion","Fragment","jsx","jsxs","useReducedMotion","AnimatePresence","motion","useReducedMotion","useEffect","useRef","useState","jsx","jsxs","base","motion","useReducedMotion","useState","jsx","jsxs","useReducedMotion","useState","motion","Fragment","jsx","jsxs","useReducedMotion","useState","useRef","useEffect","AnimatePresence","motion"]}