diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsFilters.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsFilters.tsx index b85af13b7..b043c61e9 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsFilters.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsFilters.tsx @@ -8,6 +8,7 @@ import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Input } from "@/components/ui/input"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; +import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import type { DocumentTypeEnum } from "@/contracts/types/document.types"; import { getDocumentTypeIcon, getDocumentTypeLabel } from "./DocumentTypeIcon"; @@ -63,109 +64,129 @@ export function DocumentsFilters({ return (
- {/* Type Filter */} - - - - - -
- {/* Search input */} -
-
- - setTypeSearchQuery(e.target.value)} - className="h-6 pl-6 text-sm bg-transparent border-0 shadow-none" - /> -
-
+ {/* Filter + New Folder Toggle Group */} + + {onCreateFolder && ( + + + { + e.preventDefault(); + onCreateFolder(); + }} + > + + + + New folder + + )} -
- {filteredTypes.length === 0 ? ( -
- No types found + + + + + + + {activeTypes.length > 0 && ( + + {activeTypes.length} + + )} + + + + Filter by type + + +
+
+
+ + setTypeSearchQuery(e.target.value)} + className="h-6 pl-6 text-sm bg-transparent border-0 shadow-none" + />
- ) : ( - filteredTypes.map((value: DocumentTypeEnum, i) => ( -
onToggleType(value, !activeTypes.includes(value))} - onKeyDown={(e) => { - if (e.key === "Enter" || e.key === " ") { - e.preventDefault(); - onToggleType(value, !activeTypes.includes(value)); - } +
+ +
+ {filteredTypes.length === 0 ? ( +
+ No types found +
+ ) : ( + filteredTypes.map((value: DocumentTypeEnum, i) => ( +
onToggleType(value, !activeTypes.includes(value))} + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + e.preventDefault(); + onToggleType(value, !activeTypes.includes(value)); + } + }} + > +
+ {getDocumentTypeIcon(value, "h-4 w-4")} +
+
+ + {getDocumentTypeLabel(value)} + + + {typeCounts.get(value)} document + {(typeCounts.get(value) ?? 0) !== 1 ? "s" : ""} + +
+ onToggleType(value, !!checked)} + className="h-4 w-4 shrink-0 rounded border-muted-foreground/30 data-[state=checked]:bg-primary data-[state=checked]:border-primary" + /> +
+ )) + )} +
+ {activeTypes.length > 0 && ( +
+
- )) + Clear filters + +
)}
- {activeTypes.length > 0 && ( -
- -
- )} -
- - + + + {/* Search Input */}
@@ -197,23 +218,6 @@ export function DocumentsFilters({ )}
- {/* New Folder Button */} - {onCreateFolder && ( - - - - - New folder - - )} - {/* Upload Button */} diff --git a/surfsense_web/components/shared/model-config-dialog.tsx b/surfsense_web/components/shared/model-config-dialog.tsx index 84ba821fc..4d2373b49 100644 --- a/surfsense_web/components/shared/model-config-dialog.tsx +++ b/surfsense_web/components/shared/model-config-dialog.tsx @@ -312,7 +312,7 @@ export function ModelConfigDialog({ className="relative text-sm h-9 min-w-[120px]" > - {mode === "edit" ? "Save Changes" : "Create & Use"} + {mode === "edit" ? "Save Changes" : "Add Model"} {isSubmitting && }