MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / OrgMenuSlot

Function OrgMenuSlot

apps/cloud/src/web/components/org-menu-slot.tsx:93–188  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

91}
92
93export function OrgMenuSlot() {
94 const auth = useAuth();
95 const [createOrganizationOpen, setCreateOrganizationOpen] = useState(false);
96
97 const suggestedOrganizationName =
98 auth.status === "authenticated" && auth.user.name?.trim() !== "" && auth.user.name != null
99 ? `${auth.user.name}'s Organization`
100 : "New Organization";
101
102 const form = useCreateOrganizationForm({
103 defaultName: suggestedOrganizationName,
104 // Land on the new org's URL root — a reload would keep the old slug and
105 // the slug gate would switch the session right back.
106 onSuccess: (org) => {
107 window.location.href = `/${org.slug}`;
108 },
109 });
110
111 if (auth.status !== "authenticated") return null;
112
113 const openCreateOrganization = () => {
114 form.reset(suggestedOrganizationName);
115 setCreateOrganizationOpen(true);
116 };
117
118 return (
119 <>
120 <DropdownMenuLabel className="text-xs font-normal text-muted-foreground">
121 Organization
122 </DropdownMenuLabel>
123 <DropdownMenuSub>
124 <DropdownMenuSubTrigger className="text-xs">
125 <span className="min-w-0 flex-1 truncate">
126 {auth.organization?.name ?? "No organization"}
127 </span>
128 </DropdownMenuSubTrigger>
129 <DropdownMenuSubContent className="w-56">
130 <OrganizationSwitcherItems activeOrganizationId={auth.organization?.id ?? null} />
131 <DropdownMenuSeparator />
132 <DropdownMenuItem
133 className="text-xs"
134 onSelect={(event) => {
135 event.preventDefault();
136 openCreateOrganization();
137 }}
138 >
139 Create organization
140 </DropdownMenuItem>
141 </DropdownMenuSubContent>
142 </DropdownMenuSub>
143 <DropdownMenuSeparator />
144
145 <Dialog
146 open={createOrganizationOpen}
147 onOpenChange={(open) => {
148 setCreateOrganizationOpen(open);
149 if (!open) form.reset(suggestedOrganizationName);
150 }}

Callers

nothing calls this directly

Calls 3

useAuthFunction · 0.90
openCreateOrganizationFunction · 0.85

Tested by

no test coverage detected