diff --git a/surfsense_web/components/tool-ui/google-drive/create-file.tsx b/surfsense_web/components/tool-ui/google-drive/create-file.tsx index e8b042fe4..342344a8f 100644 --- a/surfsense_web/components/tool-ui/google-drive/create-file.tsx +++ b/surfsense_web/components/tool-ui/google-drive/create-file.tsx @@ -321,29 +321,31 @@ function ApprovalCard({ -
-

- Parent Folder -

- - {selectedAccountId && availableParentFolders.length === 0 && ( -

- No folders found. File will be created at Drive root. + {selectedAccountId && ( +

+

+ Parent Folder

- )} -
+ + {availableParentFolders.length === 0 && ( +

+ No folders found. File will be created at Drive root. +

+ )} +
+ )} )} diff --git a/surfsense_web/components/tool-ui/linear/create-linear-issue.tsx b/surfsense_web/components/tool-ui/linear/create-linear-issue.tsx index b9ab4692b..f1b657b8c 100644 --- a/surfsense_web/components/tool-ui/linear/create-linear-issue.tsx +++ b/surfsense_web/components/tool-ui/linear/create-linear-issue.tsx @@ -3,6 +3,7 @@ import { makeAssistantToolUI } from "@assistant-ui/react"; import { CornerDownLeftIcon, Pen } from "lucide-react"; import { useCallback, useEffect, useMemo, useState } from "react"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Select, @@ -11,6 +12,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { PlateEditor } from "@/components/editor/plate-editor"; import { TextShimmerLoader } from "@/components/prompt-kit/loader"; import { useSetAtom } from "jotai"; @@ -398,39 +400,46 @@ function ApprovalCard({ {selectedTeam.labels.length > 0 && (

Labels

-
+ {selectedTeam.labels.map((label) => { const isSelected = selectedLabelIds.includes(label.id); return ( - + + + {label.name} + + ); })} -
+
)} diff --git a/surfsense_web/components/tool-ui/linear/update-linear-issue.tsx b/surfsense_web/components/tool-ui/linear/update-linear-issue.tsx index 2b6a453be..5f92d6e09 100644 --- a/surfsense_web/components/tool-ui/linear/update-linear-issue.tsx +++ b/surfsense_web/components/tool-ui/linear/update-linear-issue.tsx @@ -4,6 +4,7 @@ import { makeAssistantToolUI } from "@assistant-ui/react"; import { useSetAtom } from "jotai"; import { CornerDownLeftIcon, Pen } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Select, @@ -12,6 +13,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { PlateEditor } from "@/components/editor/plate-editor"; import { TextShimmerLoader } from "@/components/prompt-kit/loader"; import { openHitlEditPanelAtom } from "@/atoms/chat/hitl-edit-panel.atom"; @@ -363,15 +365,15 @@ function ApprovalCard({
{issue.current_state && ( - {issue.current_state.name} - + )} {issue.current_assignee && {issue.current_assignee.name}} {priorities.find((p) => p.priority === issue.priority) && ( @@ -381,16 +383,16 @@ function ApprovalCard({ {issue.current_labels && issue.current_labels.length > 0 && (
{issue.current_labels.map((label) => ( - {label.name} - + ))}
)} @@ -474,40 +476,48 @@ function ApprovalCard({ {team.labels.length > 0 && (

Labels

-
+ + setEditedArgs({ ...editedArgs, labelIds: value }) + } + className="flex flex-wrap gap-1.5" + > {team.labels.map((label) => { const isSelected = editedArgs.labelIds.includes(label.id); return ( - + + + {label.name} + + ); })} -
+
)} @@ -564,16 +574,16 @@ function ApprovalCard({ {proposedLabelObjects.length > 0 && (
{proposedLabelObjects.map((label) => ( - {label.name} - + ))}
)} diff --git a/surfsense_web/components/tool-ui/notion/create-notion-page.tsx b/surfsense_web/components/tool-ui/notion/create-notion-page.tsx index a6871c34d..f90faf471 100644 --- a/surfsense_web/components/tool-ui/notion/create-notion-page.tsx +++ b/surfsense_web/components/tool-ui/notion/create-notion-page.tsx @@ -298,7 +298,7 @@ function ApprovalCard({ None {availableParentPages.map((page) => ( - 📄 {page.title} + {page.title} ))} diff --git a/surfsense_web/components/ui/toggle-group.tsx b/surfsense_web/components/ui/toggle-group.tsx new file mode 100644 index 000000000..a40c01028 --- /dev/null +++ b/surfsense_web/components/ui/toggle-group.tsx @@ -0,0 +1,83 @@ +"use client" + +import * as React from "react" +import type { VariantProps } from "class-variance-authority" +import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui" + +import { cn } from "@/lib/utils" +import { toggleVariants } from "@/components/ui/toggle" + +const ToggleGroupContext = React.createContext< + VariantProps & { + spacing?: number + } +>({ + size: "default", + variant: "default", + spacing: 0, +}) + +function ToggleGroup({ + className, + variant, + size, + spacing = 0, + children, + ...props +}: React.ComponentProps & + VariantProps & { + spacing?: number + }) { + return ( + + + {children} + + + ) +} + +function ToggleGroupItem({ + className, + children, + variant, + size, + ...props +}: React.ComponentProps & + VariantProps) { + const context = React.useContext(ToggleGroupContext) + + return ( + + {children} + + ) +} + +export { ToggleGroup, ToggleGroupItem } diff --git a/surfsense_web/components/ui/toggle.tsx b/surfsense_web/components/ui/toggle.tsx new file mode 100644 index 000000000..d66fd9191 --- /dev/null +++ b/surfsense_web/components/ui/toggle.tsx @@ -0,0 +1,47 @@ +"use client" + +import type * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Toggle as TogglePrimitive } from "radix-ui" + +import { cn } from "@/lib/utils" + +const toggleVariants = cva( + "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-transparent", + outline: + "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground", + }, + size: { + default: "h-9 min-w-9 px-2", + sm: "h-8 min-w-8 px-1.5", + lg: "h-10 min-w-10 px-2.5", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Toggle({ + className, + variant, + size, + ...props +}: React.ComponentProps & + VariantProps) { + return ( + + ) +} + +export { Toggle, toggleVariants }