From 931187136ca97460412c89f3f821d40c799d8c40 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 23 Jan 2026 10:11:13 -0500 Subject: [PATCH 1/4] add guides list w/ targeting and archived indicators --- packages/client/src/clients/guide/index.ts | 2 + packages/react/package.json | 2 + .../components/Toolbar/V2/GuideHoverCard.tsx | 47 ++++++ .../guide/components/Toolbar/V2/GuideRow.tsx | 96 +++++++++++ .../Toolbar/V2/GuidesListDisplaySelect.tsx | 38 +++++ .../guide/components/Toolbar/V2/V2.tsx | 62 ++++--- .../Toolbar/V2/useInspectGuideClientStore.ts | 155 ++++++++++++++++++ yarn.lock | 140 ++++++++++++++++ 8 files changed, 518 insertions(+), 24 deletions(-) create mode 100644 packages/react/src/modules/guide/components/Toolbar/V2/GuideHoverCard.tsx create mode 100644 packages/react/src/modules/guide/components/Toolbar/V2/GuideRow.tsx create mode 100644 packages/react/src/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.tsx create mode 100644 packages/react/src/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.ts diff --git a/packages/client/src/clients/guide/index.ts b/packages/client/src/clients/guide/index.ts index 0f959ae8b..ddcb5e288 100644 --- a/packages/client/src/clients/guide/index.ts +++ b/packages/client/src/clients/guide/index.ts @@ -2,8 +2,10 @@ export { KnockGuideClient, DEBUG_QUERY_PARAMS } from "./client"; export type { KnockGuide, KnockGuideStep, + GuideIneligibilityMarker as KnockGuideIneligibilityMarker, TargetParams as KnockGuideTargetParams, SelectFilterParams as KnockGuideFilterParams, SelectGuideOpts as KnockSelectGuideOpts, SelectGuidesOpts as KnockSelectGuidesOpts, + StoreState as KnockGuideClientStoreState, } from "./types"; diff --git a/packages/react/package.json b/packages/react/package.json index 74276b2db..4ca8efc64 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -76,10 +76,12 @@ "@knocklabs/react-core": "workspace:^", "@popperjs/core": "^2.11.8", "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-hover-card": "^1.1.15", "@telegraph/combobox": "^0.1.16", "@telegraph/icon": "^0.2.7", "@telegraph/layout": "^0.2.3", "@telegraph/tokens": "^0.1.2", + "@telegraph/tooltip": "0.0.61", "@telegraph/typography": "^0.1.25", "clsx": "^2.1.1", "lodash.debounce": "^4.0.8" diff --git a/packages/react/src/modules/guide/components/Toolbar/V2/GuideHoverCard.tsx b/packages/react/src/modules/guide/components/Toolbar/V2/GuideHoverCard.tsx new file mode 100644 index 000000000..f4919ca59 --- /dev/null +++ b/packages/react/src/modules/guide/components/Toolbar/V2/GuideHoverCard.tsx @@ -0,0 +1,47 @@ +import * as HoverCard from "@radix-ui/react-hover-card"; +import { Box, Stack } from "@telegraph/layout"; +import * as React from "react"; + +import { InspectedGuide, MissingGuide } from "./useInspectGuideClientStore"; + +type Props = { + guide: InspectedGuide | MissingGuide; +}; + +export const GuideHoverCard = ({ + children, + guide, +}: React.PropsWithChildren) => { + return ( + + + {children} + + + + +
+              {/* TODO: Prune some details */}
+              {JSON.stringify(guide, null, 2)}
+            
+
+ +
+
+
+ ); +}; diff --git a/packages/react/src/modules/guide/components/Toolbar/V2/GuideRow.tsx b/packages/react/src/modules/guide/components/Toolbar/V2/GuideRow.tsx new file mode 100644 index 000000000..20d2f8c0b --- /dev/null +++ b/packages/react/src/modules/guide/components/Toolbar/V2/GuideRow.tsx @@ -0,0 +1,96 @@ +import { Button } from "@telegraph/button"; +import { Stack } from "@telegraph/layout"; +import { Tag } from "@telegraph/tag"; +import { Tooltip } from "@telegraph/tooltip"; +import { Text } from "@telegraph/typography"; +import { CheckCircle2, CircleDashed, Eye, UserCircle2 } from "lucide-react"; +import * as React from "react"; + +import { GuideHoverCard } from "./GuideHoverCard"; +import { InspectedGuide, MissingGuide } from "./useInspectGuideClientStore"; + +const Row = ({ children }: React.PropsWithChildren) => ( + + {children} + +); + +type Props = { + guide: MissingGuide | InspectedGuide; + orderIndex: number; +}; + +export const GuideRow = ({ guide, orderIndex }: Props) => { + return ( + + + + {orderIndex + 1} + + + + {guide.key} + + + + + + {guide.__typename === "Guide" && ( + <> + +