Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 80 additions & 6 deletions apps/web/components/integrations-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import {
Zap,
} from "lucide-react"
import { formatRelativeTime } from "@/components/settings/sync-utils"
import { CHROME_EXTENSION_URL } from "@lib/constants"
import { CHROME_EXTENSION_URL, POKE_RECIPE_URL } from "@lib/constants"
import { analytics } from "@/lib/analytics"
import Image from "next/image"
import { useViewMode } from "@/lib/view-mode-context"
Expand Down Expand Up @@ -278,6 +278,7 @@ interface BaseItem {
kind: ItemKind
simpleTitle?: string
dev?: boolean
isNew?: boolean
}

interface PluginItem extends BaseItem {
Expand Down Expand Up @@ -415,6 +416,26 @@ const SECTIONS: Array<{
icon: <ChromeIcon className="size-6" />,
action: { type: "external", href: CHROME_EXTENSION_URL },
},
{
kind: "client",
id: "poke",
name: "Poke",
tagline: "Recall and save memories from Poke over text",
simpleTitle: "Text Poke to recall and save your memories",
isNew: true,
icon: (
<div className="relative size-10 shrink-0 overflow-hidden rounded-lg">
<Image
src="/images/poke.png"
alt="Poke"
width={40}
height={40}
className="object-cover"
/>
</div>
),
action: { type: "external", href: POKE_RECIPE_URL },
},
{
kind: "client",
id: "shortcuts",
Expand Down Expand Up @@ -484,6 +505,19 @@ function ProChip() {
)
}

function NewChip() {
return (
<span
className={cn(
dmSans125ClassName(),
"shrink-0 rounded-full bg-[#4BA0FA]/12 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-[0.08em] text-[#4BA0FA]",
)}
>
New
</span>
)
}

function IconBox({ children }: { children: ReactNode }) {
return (
<div
Expand Down Expand Up @@ -599,6 +633,7 @@ function ItemCard({
name,
tagline,
pro,
isNew,
docsUrl,
leftIndicator,
rightSlot,
Expand All @@ -607,6 +642,7 @@ function ItemCard({
name: string
tagline: string
pro?: boolean
isNew?: boolean
docsUrl?: string
leftIndicator?: ReactNode
rightSlot: ReactNode
Expand Down Expand Up @@ -643,6 +679,7 @@ function ItemCard({
>
{name}
</span>
{isNew && <NewChip />}
{pro && <ProChip />}
</div>
<p
Expand All @@ -663,6 +700,7 @@ function ItemCard({
interface FeaturedPick {
id: string
name: string
emoji?: string
headline: string
support: string
tagline: string
Expand Down Expand Up @@ -798,8 +836,11 @@ function FeaturedHero({ picks }: { picks: FeaturedPick[] }) {
"text-[13px] leading-snug text-[#A1A1AA]",
)}
>
<span className="font-medium text-[#CBD5E1]">{pick.name}</span> ·{" "}
{pick.support}
<span className="font-medium text-[#CBD5E1]">
{pick.emoji ? `${pick.emoji} ` : ""}
{pick.name}
</span>{" "}
· {pick.support}
</p>
</motion.div>
</AnimatePresence>
Expand Down Expand Up @@ -1318,6 +1359,36 @@ export function IntegrationsView() {
!isAutumnLoading && !hasProProduct && !isFreeTierPlugin("claude_code")

const featuredPicks: FeaturedPick[] = [
{
id: "feat-poke",
name: "Poke",
emoji: "🌴",
headline: "Your memory, one text away.",
support: "recall and save anything by texting Poke",
tagline: "Connect Poke to recall and save memories over text.",
icon: (
<Image
src="/images/poke.png"
alt="Poke"
width={32}
height={32}
className="rounded"
/>
),
backdrop: (
<Image
src="/images/poke.png"
alt=""
width={360}
height={360}
className="object-contain"
/>
),
ctaLabel: "Connect",
onCta: () => {
window.open(POKE_RECIPE_URL, "_blank", "noopener,noreferrer")
},
},
{
id: "feat-mcp",
name: "Supermemory MCP",
Expand Down Expand Up @@ -1563,9 +1634,11 @@ export function IntegrationsView() {
"_blank",
"noopener,noreferrer",
)
analytics.onboardingChromeExtensionClicked({
source: "integrations",
})
if (item.id === "chrome") {
analytics.onboardingChromeExtensionClicked({
source: "integrations",
})
}
}}
>
Connect
Expand Down Expand Up @@ -1618,6 +1691,7 @@ export function IntegrationsView() {
name={item.name}
tagline={item.tagline}
pro={item.pro}
isNew={item.isNew}
docsUrl={item.docsUrl}
leftIndicator={renderLeftIndicator(item)}
rightSlot={renderRight(item)}
Expand Down
Binary file added apps/web/public/images/poke.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions packages/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const ADD_MEMORY_SHORTCUT_URL =
const RAYCAST_EXTENSION_URL = "https://www.raycast.com/supermemory/supermemory"
const CHROME_EXTENSION_URL =
"https://chromewebstore.google.com/detail/supermemory/afpgkkipfdpeaflnpoaffkcankadgjfc"
const POKE_RECIPE_URL = "https://poke.com/r/5tHPbS8gZvA"

export {
BIG_DIMENSIONS_NEW,
Expand All @@ -15,4 +16,5 @@ export {
ADD_MEMORY_SHORTCUT_URL,
RAYCAST_EXTENSION_URL,
CHROME_EXTENSION_URL,
POKE_RECIPE_URL,
}
Loading