import React, { useEffect, useState } from "react"; import DataTable from "@/components/ui/data-table"; import { Button } from "@/components/ui/button"; import { MoreHorizontal } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { invoke } from "@tauri-apps/api/core"; import Drawer from "@/components/Drawer"; function loadAliases( setAliases: React.Dispatch>, ) { invoke("aliases").then((aliases: any) => { setAliases(aliases); }); } type Alias = { name: string; value: string; }; function deleteAlias( name: string, setAliases: React.Dispatch>, ) { invoke("delete_alias", { name: name }) .then(() => { console.log("Deleted alias"); loadAliases(setAliases); }) .catch(() => { console.error("Failed to delete alias"); }); } function AddAlias({ onAdd: onAdd }: { onAdd?: () => void }) { let [name, setName] = useState(""); let [value, setValue] = useState(""); // simple form to add aliases return (

Add alias

Add a new alias to your shell

{ e.preventDefault(); invoke("set_alias", { name: name, value: value }) .then(() => { console.log("Added alias"); if (onAdd) onAdd(); }) .catch(() => { console.error("Failed to add alias"); }); }} > setName(e.target.value)} placeholder="Alias name" /> setValue(e.target.value)} placeholder="Alias value" />
); } export default function Aliases() { let [aliases, setAliases] = useState([]); let [aliasDrawerOpen, setAliasDrawerOpen] = useState(false); const columns: ColumnDef[] = [ { accessorKey: "name", header: "Name", }, { accessorKey: "value", header: "Value", }, { id: "actions", cell: ({ row }: any) => { const alias = row.original; return ( Actions deleteAlias(alias.name, setAliases)} > Delete ); }, }, ]; useEffect(() => { loadAliases(setAliases); }, []); return (

Aliases

Aliases allow you to condense long commands into short, easy-to-remember commands.

Add } > { loadAliases(setAliases); setAliasDrawerOpen(false); }} />
); }