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 && (
+
+
+ {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 }